xref: /wlan-dirver/fw-api/hw/qcn6432/mactx_vht_sig_a.h (revision c3fae0027cee33fc678d59c8f87f857a99c25436)
1 /*
2  * Copyright (c) 2023 Qualcomm Innovation Center, Inc. All rights reserved.
3  *
4  * Permission to use, copy, modify, and/or distribute this software for any
5  * purpose with or without fee is hereby granted, provided that the above
6  * copyright notice and this permission notice appear in all copies.
7  *
8  * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
9  * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
10  * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
11  * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
12  * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
13  * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
14  * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
15  */
16 
17 #ifndef _MACTX_VHT_SIG_A_H_
18 #define _MACTX_VHT_SIG_A_H_
19 #if !defined(__ASSEMBLER__)
20 #endif
21 
22 #include "vht_sig_a_info.h"
23 #define NUM_OF_DWORDS_MACTX_VHT_SIG_A 2
24 
25 #define NUM_OF_QWORDS_MACTX_VHT_SIG_A 1
26 
27 
28 struct mactx_vht_sig_a {
29 #ifndef WIFI_BIT_ORDER_BIG_ENDIAN
30              struct   vht_sig_a_info                                            mactx_vht_sig_a_info_details;
31 #else
32              struct   vht_sig_a_info                                            mactx_vht_sig_a_info_details;
33 #endif
34 };
35 
36 
37 /* Description		MACTX_VHT_SIG_A_INFO_DETAILS
38 
39 			See detailed description of the STRUCT
40 */
41 
42 
43 /* Description		BANDWIDTH
44 
45 			Packet bandwidth
46 
47 			<enum 0    20_MHZ_11AC>
48 			<enum 1    40_MHZ_11AC>
49 			<enum 2    80_MHZ_11AC>
50 			<enum 3    160_MHZ_11AC>
51 
52 			<legal 0-3>
53 */
54 
55 #define MACTX_VHT_SIG_A_MACTX_VHT_SIG_A_INFO_DETAILS_BANDWIDTH_OFFSET               0x0000000000000000
56 #define MACTX_VHT_SIG_A_MACTX_VHT_SIG_A_INFO_DETAILS_BANDWIDTH_LSB                  0
57 #define MACTX_VHT_SIG_A_MACTX_VHT_SIG_A_INFO_DETAILS_BANDWIDTH_MSB                  1
58 #define MACTX_VHT_SIG_A_MACTX_VHT_SIG_A_INFO_DETAILS_BANDWIDTH_MASK                 0x0000000000000003
59 
60 
61 /* Description		VHTA_RESERVED_0
62 
63 			Reserved.  Set to 1 by MAC, PHY should ignore
64 			<legal 1>
65 */
66 
67 #define MACTX_VHT_SIG_A_MACTX_VHT_SIG_A_INFO_DETAILS_VHTA_RESERVED_0_OFFSET         0x0000000000000000
68 #define MACTX_VHT_SIG_A_MACTX_VHT_SIG_A_INFO_DETAILS_VHTA_RESERVED_0_LSB            2
69 #define MACTX_VHT_SIG_A_MACTX_VHT_SIG_A_INFO_DETAILS_VHTA_RESERVED_0_MSB            2
70 #define MACTX_VHT_SIG_A_MACTX_VHT_SIG_A_INFO_DETAILS_VHTA_RESERVED_0_MASK           0x0000000000000004
71 
72 
73 /* Description		STBC
74 
75 			Space time block coding:
76 			<enum 0     stbc_disabled>  Indicates STBC is disabled
77 			<enum 1     stbc_enabled>  Indicates STBC is enabled on
78 			all streams
79 			<legal 0-1>
80 */
81 
82 #define MACTX_VHT_SIG_A_MACTX_VHT_SIG_A_INFO_DETAILS_STBC_OFFSET                    0x0000000000000000
83 #define MACTX_VHT_SIG_A_MACTX_VHT_SIG_A_INFO_DETAILS_STBC_LSB                       3
84 #define MACTX_VHT_SIG_A_MACTX_VHT_SIG_A_INFO_DETAILS_STBC_MSB                       3
85 #define MACTX_VHT_SIG_A_MACTX_VHT_SIG_A_INFO_DETAILS_STBC_MASK                      0x0000000000000008
86 
87 
88 /* Description		GROUP_ID
89 
90 			In a SU VHT PPDU, if the PPDU carries MPDU(s) addressed
91 			to an AP or to a mesh STA, the Group ID field is set to
92 			0, otherwise it is set to 63.  In an NDP PPDU the Group
93 			ID is set according to IEEE 802.11ac_D1.0 Section 9.30.6
94 			 (Transmission of a VHT NDP). For a MU-MIMO PPDU the Group
95 			 ID is set as in 802.11ac_D1.0 Section 22.3.11.3 (Group
96 			ID).  <legal all>
97 */
98 
99 #define MACTX_VHT_SIG_A_MACTX_VHT_SIG_A_INFO_DETAILS_GROUP_ID_OFFSET                0x0000000000000000
100 #define MACTX_VHT_SIG_A_MACTX_VHT_SIG_A_INFO_DETAILS_GROUP_ID_LSB                   4
101 #define MACTX_VHT_SIG_A_MACTX_VHT_SIG_A_INFO_DETAILS_GROUP_ID_MSB                   9
102 #define MACTX_VHT_SIG_A_MACTX_VHT_SIG_A_INFO_DETAILS_GROUP_ID_MASK                  0x00000000000003f0
103 
104 
105 /* Description		N_STS
106 
107 			For MU:
108 			3 bits/user with maximum of 4 users (user u uses
109 			vht_sig_a[0][10+3u] - vht_sig_a[0][12+3u]), u = 0, 1, 2,
110 			3)
111 			Set to 0 for 0 space time streams
112 			Set to 1 for 1 space time stream
113 			Set to 2 for 2 space time streams
114 			Set to 3 for 3 space time streams
115 			Set to 4 for 4 space time streams (not supported in Wifi
116 			 3.0)
117 			Values 5-7 are reserved
118 			In this field, references to user "u" should be interpreted
119 			 as MU user "u". As described in the previous chapter in
120 			 this document (see chapter on User number), the MU user
121 			 value for a given client is defined for each MU group that
122 			 the client participates in. The MU user number is not related
123 			 to the internal user number that is used within the BFer.
124 
125 
126 
127 			For SU:
128 			vht_sig_a[0][12:10]
129 			Set to 0 for 1 space time stream
130 			Set to 1 for 2 space time streams
131 			Set to 2 for 3 space time streams
132 			Set to 3 for 4 space time streams
133 			Set to 4 for 5 space time streams
134 			Set to 5 for 6 space time streams
135 			Set to 6 for 7 space time streams
136 			Set to 7 for 8 space time streams
137 
138 			vht_sig_a[0][21:13]
139 			Partial AID:
140 			Set to the value of the TXVECTOR parameter PARTIAL_AID.
141 			Partial AID provides an abbreviated indication of the intended
142 			 recipient(s) of the frame (see IEEE802.11ac_D1.0 Section
143 			 9.17a (Partial AID in VHT PPDUs)).
144 			<legal all>
145 */
146 
147 #define MACTX_VHT_SIG_A_MACTX_VHT_SIG_A_INFO_DETAILS_N_STS_OFFSET                   0x0000000000000000
148 #define MACTX_VHT_SIG_A_MACTX_VHT_SIG_A_INFO_DETAILS_N_STS_LSB                      10
149 #define MACTX_VHT_SIG_A_MACTX_VHT_SIG_A_INFO_DETAILS_N_STS_MSB                      21
150 #define MACTX_VHT_SIG_A_MACTX_VHT_SIG_A_INFO_DETAILS_N_STS_MASK                     0x00000000003ffc00
151 
152 
153 /* Description		TXOP_PS_NOT_ALLOWED
154 
155 			E_num 0     txop_ps_allowed  Not supported: If set to by
156 			 VHT AP if it allows non-AP VHT STAs in TXOP power save
157 			mode to enter Doze state during a TXOP
158 			<enum 1     no_txop_ps_allowed> Otherwise
159 			<legal 1>
160 */
161 
162 #define MACTX_VHT_SIG_A_MACTX_VHT_SIG_A_INFO_DETAILS_TXOP_PS_NOT_ALLOWED_OFFSET     0x0000000000000000
163 #define MACTX_VHT_SIG_A_MACTX_VHT_SIG_A_INFO_DETAILS_TXOP_PS_NOT_ALLOWED_LSB        22
164 #define MACTX_VHT_SIG_A_MACTX_VHT_SIG_A_INFO_DETAILS_TXOP_PS_NOT_ALLOWED_MSB        22
165 #define MACTX_VHT_SIG_A_MACTX_VHT_SIG_A_INFO_DETAILS_TXOP_PS_NOT_ALLOWED_MASK       0x0000000000400000
166 
167 
168 /* Description		VHTA_RESERVED_0B
169 
170 			Reserved: Should be set to 1 by the MAC and ignored by the
171 			 PHY  <legal 1>
172 */
173 
174 #define MACTX_VHT_SIG_A_MACTX_VHT_SIG_A_INFO_DETAILS_VHTA_RESERVED_0B_OFFSET        0x0000000000000000
175 #define MACTX_VHT_SIG_A_MACTX_VHT_SIG_A_INFO_DETAILS_VHTA_RESERVED_0B_LSB           23
176 #define MACTX_VHT_SIG_A_MACTX_VHT_SIG_A_INFO_DETAILS_VHTA_RESERVED_0B_MSB           23
177 #define MACTX_VHT_SIG_A_MACTX_VHT_SIG_A_INFO_DETAILS_VHTA_RESERVED_0B_MASK          0x0000000000800000
178 
179 
180 /* Description		RESERVED_0
181 
182 			This field is not part of HT-SIG:
183 			Reserved: Should be set to 0 by the MAC and ignored by the
184 			 PHY <legal 0>
185 */
186 
187 #define MACTX_VHT_SIG_A_MACTX_VHT_SIG_A_INFO_DETAILS_RESERVED_0_OFFSET              0x0000000000000000
188 #define MACTX_VHT_SIG_A_MACTX_VHT_SIG_A_INFO_DETAILS_RESERVED_0_LSB                 24
189 #define MACTX_VHT_SIG_A_MACTX_VHT_SIG_A_INFO_DETAILS_RESERVED_0_MSB                 31
190 #define MACTX_VHT_SIG_A_MACTX_VHT_SIG_A_INFO_DETAILS_RESERVED_0_MASK                0x00000000ff000000
191 
192 
193 /* Description		GI_SETTING
194 
195 			<enum 0     normal_gi>  Indicates short guard interval is
196 			 not used in the data field
197 			<enum 1     short_gi>  Indicates short guard interval is
198 			 used in the data field
199 			<enum 3     short_gi_ambiguity>  Indicates short guard interval
200 			 is used in the data field and NSYM mod 10 = 9
201 			NSYM is defined in IEEE802.11ac_D1.0 Section 22.4.3 (TXTIME
202 			 and PSDU_LENGTH calculation).
203 			<legal 0,1,3>
204 */
205 
206 #define MACTX_VHT_SIG_A_MACTX_VHT_SIG_A_INFO_DETAILS_GI_SETTING_OFFSET              0x0000000000000000
207 #define MACTX_VHT_SIG_A_MACTX_VHT_SIG_A_INFO_DETAILS_GI_SETTING_LSB                 32
208 #define MACTX_VHT_SIG_A_MACTX_VHT_SIG_A_INFO_DETAILS_GI_SETTING_MSB                 33
209 #define MACTX_VHT_SIG_A_MACTX_VHT_SIG_A_INFO_DETAILS_GI_SETTING_MASK                0x0000000300000000
210 
211 
212 /* Description		SU_MU_CODING
213 
214 			For an SU PPDU, B2 is set to 0 for BCC, 1 for LDPC For an
215 			 MU PPDU, if the MU[0] NSTS field is nonzero(#6773), then
216 			 B2 indicates the coding used for user 0; set to 0 for BCC
217 			 and 1 for LDPC. If the MU[0] NSTS field is 0, then this
218 			 field is reserved and set to 1
219 */
220 
221 #define MACTX_VHT_SIG_A_MACTX_VHT_SIG_A_INFO_DETAILS_SU_MU_CODING_OFFSET            0x0000000000000000
222 #define MACTX_VHT_SIG_A_MACTX_VHT_SIG_A_INFO_DETAILS_SU_MU_CODING_LSB               34
223 #define MACTX_VHT_SIG_A_MACTX_VHT_SIG_A_INFO_DETAILS_SU_MU_CODING_MSB               34
224 #define MACTX_VHT_SIG_A_MACTX_VHT_SIG_A_INFO_DETAILS_SU_MU_CODING_MASK              0x0000000400000000
225 
226 
227 /* Description		LDPC_EXTRA_SYMBOL
228 
229 			Set to 1 if the LDPC PPDU encoding process (if an SU PPDU),
230 			or at least one LDPC user's PPDU encoding process (if an
231 			 MU PPDU), results in an extra OFDM symbol (or symbols)
232 			as described in 22.3.10.5.4 (LDPC coding) and 22.3.10.5.5
233 			 (Encoding process for MU PPDUs). Set to 0 otherwise.
234 */
235 
236 #define MACTX_VHT_SIG_A_MACTX_VHT_SIG_A_INFO_DETAILS_LDPC_EXTRA_SYMBOL_OFFSET       0x0000000000000000
237 #define MACTX_VHT_SIG_A_MACTX_VHT_SIG_A_INFO_DETAILS_LDPC_EXTRA_SYMBOL_LSB          35
238 #define MACTX_VHT_SIG_A_MACTX_VHT_SIG_A_INFO_DETAILS_LDPC_EXTRA_SYMBOL_MSB          35
239 #define MACTX_VHT_SIG_A_MACTX_VHT_SIG_A_INFO_DETAILS_LDPC_EXTRA_SYMBOL_MASK         0x0000000800000000
240 
241 
242 /* Description		MCS
243 
244 			For SU:
245 			Set to 0 for BPSK 1/2
246 			Set to 1 for QPSK 1/2
247 			Set to 2 for QPSK 3/4
248 			Set to 3 for 16-QAM 1/2
249 			Set to 4 for 16-QAM 3/4
250 			Set to 5 for 64-QAM 2/3
251 			Set to 6 for 64-QAM 3/4
252 			Set to 7 for 64-QAM 5/6
253 			Set to 8 for 256-QAM 3/4
254 			Set to 9 for 256-QAM 5/6
255 			For MU:
256 			If NSTS for user 1 is non-zero, then vht_sig_a[1][4] indicates
257 			 coding for user 1: set to 0 for BCC, 1 for LDPC.
258 			If NSTS for user 1 is set to 0, then vht_sig_a[1][4] is
259 			reserved and set to 1.
260 			If NSTS for user 2 is non-zero, then vht_sig_a[1][5] indicates
261 			 coding for user 2: set to 0 for BCC, 1 for LDPC.
262 			If NSTS for user 2 is set to 0, then vht_sig_a[1][5] is
263 			reserved and set to 1.
264 			If NSTS for user 3 is non-zero, then vht_sig_a[1][6] indicates
265 			 coding for user 3: set to 0 for BCC, 1 for LDPC.
266 			If NSTS for user 3 is set to 0, then vht_sig_a[1][6] is
267 			reserved and set to 1.
268 			vht_sig_a[1][7] is reserved and set to 1
269 			<legal 0-15>
270 */
271 
272 #define MACTX_VHT_SIG_A_MACTX_VHT_SIG_A_INFO_DETAILS_MCS_OFFSET                     0x0000000000000000
273 #define MACTX_VHT_SIG_A_MACTX_VHT_SIG_A_INFO_DETAILS_MCS_LSB                        36
274 #define MACTX_VHT_SIG_A_MACTX_VHT_SIG_A_INFO_DETAILS_MCS_MSB                        39
275 #define MACTX_VHT_SIG_A_MACTX_VHT_SIG_A_INFO_DETAILS_MCS_MASK                       0x000000f000000000
276 
277 
278 /* Description		BEAMFORMED
279 
280 			For SU:
281 			Set to 1 if a Beamforming steering matrix is applied to
282 			the waveform in an SU transmission as described in IEEE802.11ac_D1.0
283 			 Section 19.3.11.11.2 (Spatial mapping), set to 0 otherwise.
284 
285 			For MU:
286 			Reserved and set to 1
287 			<legal 0-1>
288 */
289 
290 #define MACTX_VHT_SIG_A_MACTX_VHT_SIG_A_INFO_DETAILS_BEAMFORMED_OFFSET              0x0000000000000000
291 #define MACTX_VHT_SIG_A_MACTX_VHT_SIG_A_INFO_DETAILS_BEAMFORMED_LSB                 40
292 #define MACTX_VHT_SIG_A_MACTX_VHT_SIG_A_INFO_DETAILS_BEAMFORMED_MSB                 40
293 #define MACTX_VHT_SIG_A_MACTX_VHT_SIG_A_INFO_DETAILS_BEAMFORMED_MASK                0x0000010000000000
294 
295 
296 /* Description		VHTA_RESERVED_1
297 
298 			Reserved and set to 1.  <legal 1>
299 */
300 
301 #define MACTX_VHT_SIG_A_MACTX_VHT_SIG_A_INFO_DETAILS_VHTA_RESERVED_1_OFFSET         0x0000000000000000
302 #define MACTX_VHT_SIG_A_MACTX_VHT_SIG_A_INFO_DETAILS_VHTA_RESERVED_1_LSB            41
303 #define MACTX_VHT_SIG_A_MACTX_VHT_SIG_A_INFO_DETAILS_VHTA_RESERVED_1_MSB            41
304 #define MACTX_VHT_SIG_A_MACTX_VHT_SIG_A_INFO_DETAILS_VHTA_RESERVED_1_MASK           0x0000020000000000
305 
306 
307 /* Description		CRC
308 
309 			CRC calculated as in IEEE802.11ac_D1.0 Section 19.3.9.4.4
310 			 (CRC calculation for HTSIG) with C7 in vht_sig_a[1][10],
311 			etc.  <legal all>
312 */
313 
314 #define MACTX_VHT_SIG_A_MACTX_VHT_SIG_A_INFO_DETAILS_CRC_OFFSET                     0x0000000000000000
315 #define MACTX_VHT_SIG_A_MACTX_VHT_SIG_A_INFO_DETAILS_CRC_LSB                        42
316 #define MACTX_VHT_SIG_A_MACTX_VHT_SIG_A_INFO_DETAILS_CRC_MSB                        49
317 #define MACTX_VHT_SIG_A_MACTX_VHT_SIG_A_INFO_DETAILS_CRC_MASK                       0x0003fc0000000000
318 
319 
320 /* Description		TAIL
321 
322 			Used to terminate the trellis of the convolutional decoder.
323 			 Set to 0.  <legal 0>
324 */
325 
326 #define MACTX_VHT_SIG_A_MACTX_VHT_SIG_A_INFO_DETAILS_TAIL_OFFSET                    0x0000000000000000
327 #define MACTX_VHT_SIG_A_MACTX_VHT_SIG_A_INFO_DETAILS_TAIL_LSB                       50
328 #define MACTX_VHT_SIG_A_MACTX_VHT_SIG_A_INFO_DETAILS_TAIL_MSB                       55
329 #define MACTX_VHT_SIG_A_MACTX_VHT_SIG_A_INFO_DETAILS_TAIL_MASK                      0x00fc000000000000
330 
331 
332 /* Description		RESERVED_1
333 
334 			This field is not part of HT-SIG:
335 			Reserved: Should be set to 0 by the MAC and ignored by the
336 			 PHY <legal 0>
337 */
338 
339 #define MACTX_VHT_SIG_A_MACTX_VHT_SIG_A_INFO_DETAILS_RESERVED_1_OFFSET              0x0000000000000000
340 #define MACTX_VHT_SIG_A_MACTX_VHT_SIG_A_INFO_DETAILS_RESERVED_1_LSB                 56
341 #define MACTX_VHT_SIG_A_MACTX_VHT_SIG_A_INFO_DETAILS_RESERVED_1_MSB                 62
342 #define MACTX_VHT_SIG_A_MACTX_VHT_SIG_A_INFO_DETAILS_RESERVED_1_MASK                0x7f00000000000000
343 
344 
345 /* Description		RX_INTEGRITY_CHECK_PASSED
346 
347 			TX side: Set to 0
348 			RX side: Set to 1 if PHY determines the VHT-SIG-A CRC check
349 			 has passed, else set to 0
350 
351 			<legal all>
352 */
353 
354 #define MACTX_VHT_SIG_A_MACTX_VHT_SIG_A_INFO_DETAILS_RX_INTEGRITY_CHECK_PASSED_OFFSET 0x0000000000000000
355 #define MACTX_VHT_SIG_A_MACTX_VHT_SIG_A_INFO_DETAILS_RX_INTEGRITY_CHECK_PASSED_LSB  63
356 #define MACTX_VHT_SIG_A_MACTX_VHT_SIG_A_INFO_DETAILS_RX_INTEGRITY_CHECK_PASSED_MSB  63
357 #define MACTX_VHT_SIG_A_MACTX_VHT_SIG_A_INFO_DETAILS_RX_INTEGRITY_CHECK_PASSED_MASK 0x8000000000000000
358 
359 
360 
361 #endif   // MACTX_VHT_SIG_A
362