xref: /wlan-driver/fw-api/hw/qca5332/he_sig_a_su_info.h (revision 5113495b16420b49004c444715d2daae2066e7dc)
1*5113495bSYour Name 
2*5113495bSYour Name /* Copyright (c) 2022, Qualcomm Innovation Center, Inc. All rights reserved.
3*5113495bSYour Name  *
4*5113495bSYour Name  * Permission to use, copy, modify, and/or distribute this software for any
5*5113495bSYour Name  * purpose with or without fee is hereby granted, provided that the above
6*5113495bSYour Name  * copyright notice and this permission notice appear in all copies.
7*5113495bSYour Name  *
8*5113495bSYour Name  * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
9*5113495bSYour Name  * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
10*5113495bSYour Name  * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
11*5113495bSYour Name  * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
12*5113495bSYour Name  * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
13*5113495bSYour Name  * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
14*5113495bSYour Name  * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
15*5113495bSYour Name  */
16*5113495bSYour Name 
17*5113495bSYour Name 
18*5113495bSYour Name 
19*5113495bSYour Name 
20*5113495bSYour Name 
21*5113495bSYour Name 
22*5113495bSYour Name 
23*5113495bSYour Name 
24*5113495bSYour Name 
25*5113495bSYour Name 
26*5113495bSYour Name #ifndef _HE_SIG_A_SU_INFO_H_
27*5113495bSYour Name #define _HE_SIG_A_SU_INFO_H_
28*5113495bSYour Name #if !defined(__ASSEMBLER__)
29*5113495bSYour Name #endif
30*5113495bSYour Name 
31*5113495bSYour Name #define NUM_OF_DWORDS_HE_SIG_A_SU_INFO 2
32*5113495bSYour Name 
33*5113495bSYour Name 
34*5113495bSYour Name struct he_sig_a_su_info {
35*5113495bSYour Name #ifndef WIFI_BIT_ORDER_BIG_ENDIAN
36*5113495bSYour Name              uint32_t format_indication                                       :  1, // [0:0]
37*5113495bSYour Name                       beam_change                                             :  1, // [1:1]
38*5113495bSYour Name                       dl_ul_flag                                              :  1, // [2:2]
39*5113495bSYour Name                       transmit_mcs                                            :  4, // [6:3]
40*5113495bSYour Name                       dcm                                                     :  1, // [7:7]
41*5113495bSYour Name                       bss_color_id                                            :  6, // [13:8]
42*5113495bSYour Name                       reserved_0a                                             :  1, // [14:14]
43*5113495bSYour Name                       spatial_reuse                                           :  4, // [18:15]
44*5113495bSYour Name                       transmit_bw                                             :  2, // [20:19]
45*5113495bSYour Name                       cp_ltf_size                                             :  2, // [22:21]
46*5113495bSYour Name                       nsts                                                    :  3, // [25:23]
47*5113495bSYour Name                       reserved_0b                                             :  6; // [31:26]
48*5113495bSYour Name              uint32_t txop_duration                                           :  7, // [6:0]
49*5113495bSYour Name                       coding                                                  :  1, // [7:7]
50*5113495bSYour Name                       ldpc_extra_symbol                                       :  1, // [8:8]
51*5113495bSYour Name                       stbc                                                    :  1, // [9:9]
52*5113495bSYour Name                       txbf                                                    :  1, // [10:10]
53*5113495bSYour Name                       packet_extension_a_factor                               :  2, // [12:11]
54*5113495bSYour Name                       packet_extension_pe_disambiguity                        :  1, // [13:13]
55*5113495bSYour Name                       reserved_1a                                             :  1, // [14:14]
56*5113495bSYour Name                       doppler_indication                                      :  1, // [15:15]
57*5113495bSYour Name                       crc                                                     :  4, // [19:16]
58*5113495bSYour Name                       tail                                                    :  6, // [25:20]
59*5113495bSYour Name                       dot11ax_su_extended                                     :  1, // [26:26]
60*5113495bSYour Name                       dot11ax_ext_ru_size                                     :  3, // [29:27]
61*5113495bSYour Name                       rx_ndp                                                  :  1, // [30:30]
62*5113495bSYour Name                       rx_integrity_check_passed                               :  1; // [31:31]
63*5113495bSYour Name #else
64*5113495bSYour Name              uint32_t reserved_0b                                             :  6, // [31:26]
65*5113495bSYour Name                       nsts                                                    :  3, // [25:23]
66*5113495bSYour Name                       cp_ltf_size                                             :  2, // [22:21]
67*5113495bSYour Name                       transmit_bw                                             :  2, // [20:19]
68*5113495bSYour Name                       spatial_reuse                                           :  4, // [18:15]
69*5113495bSYour Name                       reserved_0a                                             :  1, // [14:14]
70*5113495bSYour Name                       bss_color_id                                            :  6, // [13:8]
71*5113495bSYour Name                       dcm                                                     :  1, // [7:7]
72*5113495bSYour Name                       transmit_mcs                                            :  4, // [6:3]
73*5113495bSYour Name                       dl_ul_flag                                              :  1, // [2:2]
74*5113495bSYour Name                       beam_change                                             :  1, // [1:1]
75*5113495bSYour Name                       format_indication                                       :  1; // [0:0]
76*5113495bSYour Name              uint32_t rx_integrity_check_passed                               :  1, // [31:31]
77*5113495bSYour Name                       rx_ndp                                                  :  1, // [30:30]
78*5113495bSYour Name                       dot11ax_ext_ru_size                                     :  3, // [29:27]
79*5113495bSYour Name                       dot11ax_su_extended                                     :  1, // [26:26]
80*5113495bSYour Name                       tail                                                    :  6, // [25:20]
81*5113495bSYour Name                       crc                                                     :  4, // [19:16]
82*5113495bSYour Name                       doppler_indication                                      :  1, // [15:15]
83*5113495bSYour Name                       reserved_1a                                             :  1, // [14:14]
84*5113495bSYour Name                       packet_extension_pe_disambiguity                        :  1, // [13:13]
85*5113495bSYour Name                       packet_extension_a_factor                               :  2, // [12:11]
86*5113495bSYour Name                       txbf                                                    :  1, // [10:10]
87*5113495bSYour Name                       stbc                                                    :  1, // [9:9]
88*5113495bSYour Name                       ldpc_extra_symbol                                       :  1, // [8:8]
89*5113495bSYour Name                       coding                                                  :  1, // [7:7]
90*5113495bSYour Name                       txop_duration                                           :  7; // [6:0]
91*5113495bSYour Name #endif
92*5113495bSYour Name };
93*5113495bSYour Name 
94*5113495bSYour Name 
95*5113495bSYour Name /* Description		FORMAT_INDICATION
96*5113495bSYour Name 
97*5113495bSYour Name 			<enum 0 HE_SIGA_FORMAT_HE_TRIG>
98*5113495bSYour Name 			<enum 1 HE_SIGA_FORMAT_SU_OR_EXT_SU>
99*5113495bSYour Name 			<legal all>
100*5113495bSYour Name */
101*5113495bSYour Name 
102*5113495bSYour Name #define HE_SIG_A_SU_INFO_FORMAT_INDICATION_OFFSET                                   0x00000000
103*5113495bSYour Name #define HE_SIG_A_SU_INFO_FORMAT_INDICATION_LSB                                      0
104*5113495bSYour Name #define HE_SIG_A_SU_INFO_FORMAT_INDICATION_MSB                                      0
105*5113495bSYour Name #define HE_SIG_A_SU_INFO_FORMAT_INDICATION_MASK                                     0x00000001
106*5113495bSYour Name 
107*5113495bSYour Name 
108*5113495bSYour Name /* Description		BEAM_CHANGE
109*5113495bSYour Name 
110*5113495bSYour Name 			Indicates whether spatial mapping is changed between legacy
111*5113495bSYour Name 			 and HE portion of preamble. If not, channel estimation
112*5113495bSYour Name 			can include legacy preamble to improve accuracy
113*5113495bSYour Name 			<legal all>
114*5113495bSYour Name */
115*5113495bSYour Name 
116*5113495bSYour Name #define HE_SIG_A_SU_INFO_BEAM_CHANGE_OFFSET                                         0x00000000
117*5113495bSYour Name #define HE_SIG_A_SU_INFO_BEAM_CHANGE_LSB                                            1
118*5113495bSYour Name #define HE_SIG_A_SU_INFO_BEAM_CHANGE_MSB                                            1
119*5113495bSYour Name #define HE_SIG_A_SU_INFO_BEAM_CHANGE_MASK                                           0x00000002
120*5113495bSYour Name 
121*5113495bSYour Name 
122*5113495bSYour Name /* Description		DL_UL_FLAG
123*5113495bSYour Name 
124*5113495bSYour Name 			Differentiates between DL and UL transmission
125*5113495bSYour Name 
126*5113495bSYour Name 			<enum 0 DL_UL_FLAG_IS_DL_OR_TDLS>
127*5113495bSYour Name 			<enum 1 DL_UL_FLAG_IS_UL>
128*5113495bSYour Name 			<legal all>
129*5113495bSYour Name */
130*5113495bSYour Name 
131*5113495bSYour Name #define HE_SIG_A_SU_INFO_DL_UL_FLAG_OFFSET                                          0x00000000
132*5113495bSYour Name #define HE_SIG_A_SU_INFO_DL_UL_FLAG_LSB                                             2
133*5113495bSYour Name #define HE_SIG_A_SU_INFO_DL_UL_FLAG_MSB                                             2
134*5113495bSYour Name #define HE_SIG_A_SU_INFO_DL_UL_FLAG_MASK                                            0x00000004
135*5113495bSYour Name 
136*5113495bSYour Name 
137*5113495bSYour Name /* Description		TRANSMIT_MCS
138*5113495bSYour Name 
139*5113495bSYour Name 			Indicates the data MCS
140*5113495bSYour Name 
141*5113495bSYour Name 			Field Used by MAC HW
142*5113495bSYour Name 			<legal all>
143*5113495bSYour Name */
144*5113495bSYour Name 
145*5113495bSYour Name #define HE_SIG_A_SU_INFO_TRANSMIT_MCS_OFFSET                                        0x00000000
146*5113495bSYour Name #define HE_SIG_A_SU_INFO_TRANSMIT_MCS_LSB                                           3
147*5113495bSYour Name #define HE_SIG_A_SU_INFO_TRANSMIT_MCS_MSB                                           6
148*5113495bSYour Name #define HE_SIG_A_SU_INFO_TRANSMIT_MCS_MASK                                          0x00000078
149*5113495bSYour Name 
150*5113495bSYour Name 
151*5113495bSYour Name /* Description		DCM
152*5113495bSYour Name 
153*5113495bSYour Name 			Indicates whether dual sub-carrier modulation is applied
154*5113495bSYour Name 
155*5113495bSYour Name 			0: No DCM
156*5113495bSYour Name 			1:DCM
157*5113495bSYour Name 			<legal all>
158*5113495bSYour Name */
159*5113495bSYour Name 
160*5113495bSYour Name #define HE_SIG_A_SU_INFO_DCM_OFFSET                                                 0x00000000
161*5113495bSYour Name #define HE_SIG_A_SU_INFO_DCM_LSB                                                    7
162*5113495bSYour Name #define HE_SIG_A_SU_INFO_DCM_MSB                                                    7
163*5113495bSYour Name #define HE_SIG_A_SU_INFO_DCM_MASK                                                   0x00000080
164*5113495bSYour Name 
165*5113495bSYour Name 
166*5113495bSYour Name /* Description		BSS_COLOR_ID
167*5113495bSYour Name 
168*5113495bSYour Name 			BSS color ID
169*5113495bSYour Name 
170*5113495bSYour Name 			Field Used by MAC HW
171*5113495bSYour Name 			<legal all>
172*5113495bSYour Name */
173*5113495bSYour Name 
174*5113495bSYour Name #define HE_SIG_A_SU_INFO_BSS_COLOR_ID_OFFSET                                        0x00000000
175*5113495bSYour Name #define HE_SIG_A_SU_INFO_BSS_COLOR_ID_LSB                                           8
176*5113495bSYour Name #define HE_SIG_A_SU_INFO_BSS_COLOR_ID_MSB                                           13
177*5113495bSYour Name #define HE_SIG_A_SU_INFO_BSS_COLOR_ID_MASK                                          0x00003f00
178*5113495bSYour Name 
179*5113495bSYour Name 
180*5113495bSYour Name /* Description		RESERVED_0A
181*5113495bSYour Name 
182*5113495bSYour Name 			Note: spec indicates this shall be set to 1
183*5113495bSYour Name 			<legal 1>
184*5113495bSYour Name */
185*5113495bSYour Name 
186*5113495bSYour Name #define HE_SIG_A_SU_INFO_RESERVED_0A_OFFSET                                         0x00000000
187*5113495bSYour Name #define HE_SIG_A_SU_INFO_RESERVED_0A_LSB                                            14
188*5113495bSYour Name #define HE_SIG_A_SU_INFO_RESERVED_0A_MSB                                            14
189*5113495bSYour Name #define HE_SIG_A_SU_INFO_RESERVED_0A_MASK                                           0x00004000
190*5113495bSYour Name 
191*5113495bSYour Name 
192*5113495bSYour Name /* Description		SPATIAL_REUSE
193*5113495bSYour Name 
194*5113495bSYour Name 			Spatial reuse
195*5113495bSYour Name 
196*5113495bSYour Name 			For 20MHz one SR field corresponding to entire 20MHz (other
197*5113495bSYour Name 			 3 fields indicate identical values)
198*5113495bSYour Name 			For 40MHz two SR fields for each 20MHz (other 2 fields indicate
199*5113495bSYour Name 			 identical values)
200*5113495bSYour Name 			For 80MHz four SR fields for each 20MHz
201*5113495bSYour Name 			For 160MHz four SR fields for each 40MHz
202*5113495bSYour Name 			<legal all>
203*5113495bSYour Name */
204*5113495bSYour Name 
205*5113495bSYour Name #define HE_SIG_A_SU_INFO_SPATIAL_REUSE_OFFSET                                       0x00000000
206*5113495bSYour Name #define HE_SIG_A_SU_INFO_SPATIAL_REUSE_LSB                                          15
207*5113495bSYour Name #define HE_SIG_A_SU_INFO_SPATIAL_REUSE_MSB                                          18
208*5113495bSYour Name #define HE_SIG_A_SU_INFO_SPATIAL_REUSE_MASK                                         0x00078000
209*5113495bSYour Name 
210*5113495bSYour Name 
211*5113495bSYour Name /* Description		TRANSMIT_BW
212*5113495bSYour Name 
213*5113495bSYour Name 			Bandwidth of the PPDU.
214*5113495bSYour Name 
215*5113495bSYour Name 			For HE SU PPDU
216*5113495bSYour Name 
217*5113495bSYour Name 
218*5113495bSYour Name 
219*5113495bSYour Name 			<enum 0 HE_SIG_A_BW20> 20 Mhz
220*5113495bSYour Name 			<enum 1 HE_SIG_A_BW40> 40 Mhz
221*5113495bSYour Name 			<enum 2 HE_SIG_A_BW80> 80 Mhz
222*5113495bSYour Name 			<enum 3 HE_SIG_A_BW160> 160 MHz or 80+80 MHz
223*5113495bSYour Name 
224*5113495bSYour Name 			For HE Extended Range SU PPDU
225*5113495bSYour Name 			Set to 0 for 242-tone RU
226*5113495bSYour Name 
227*5113495bSYour Name 			                  Set to 1 for right 106-tone RU within
228*5113495bSYour Name 			the primary 20 MHz
229*5113495bSYour Name 
230*5113495bSYour Name 			On RX side, Field Used by MAC HW
231*5113495bSYour Name 			<legal all>
232*5113495bSYour Name */
233*5113495bSYour Name 
234*5113495bSYour Name #define HE_SIG_A_SU_INFO_TRANSMIT_BW_OFFSET                                         0x00000000
235*5113495bSYour Name #define HE_SIG_A_SU_INFO_TRANSMIT_BW_LSB                                            19
236*5113495bSYour Name #define HE_SIG_A_SU_INFO_TRANSMIT_BW_MSB                                            20
237*5113495bSYour Name #define HE_SIG_A_SU_INFO_TRANSMIT_BW_MASK                                           0x00180000
238*5113495bSYour Name 
239*5113495bSYour Name 
240*5113495bSYour Name /* Description		CP_LTF_SIZE
241*5113495bSYour Name 
242*5113495bSYour Name 			Indicates the CP and HE-LTF type
243*5113495bSYour Name 
244*5113495bSYour Name 			<enum 0 OneX_LTF_0_8CP> 1xLTF + 0.8 us CP
245*5113495bSYour Name 			<enum 1 TwoX_LTF_0_8CP> 2x LTF + 0.8 µs CP
246*5113495bSYour Name 			<enum 2 TwoX_LTF_1_6CP> 2x LTF + 1.6 µs CP
247*5113495bSYour Name 
248*5113495bSYour Name 			<enum 3 FourX_LTF_0_8CP_3_2CP>
249*5113495bSYour Name 			When DCM == 0 OR STBC == 0: 4x LTF + 3.2 µs CP
250*5113495bSYour Name 			When DCM == 1 AND STBC == 1: 4x LTF + 0.8 µs CP. Note:
251*5113495bSYour Name 			In this scenario, Neither DCM nor STBC is applied to HE
252*5113495bSYour Name 			data field.
253*5113495bSYour Name 
254*5113495bSYour Name 			NOTE:
255*5113495bSYour Name 			If ( DCM == 1 ) and ( MCS > 0 ) and (STBC == 0)
256*5113495bSYour Name 			0      = 1xLTF + 0.4 usec
257*5113495bSYour Name 			1      = 2xLTF + 0.4 usec
258*5113495bSYour Name 			2~3 = Reserved
259*5113495bSYour Name 
260*5113495bSYour Name 			<legal all>
261*5113495bSYour Name */
262*5113495bSYour Name 
263*5113495bSYour Name #define HE_SIG_A_SU_INFO_CP_LTF_SIZE_OFFSET                                         0x00000000
264*5113495bSYour Name #define HE_SIG_A_SU_INFO_CP_LTF_SIZE_LSB                                            21
265*5113495bSYour Name #define HE_SIG_A_SU_INFO_CP_LTF_SIZE_MSB                                            22
266*5113495bSYour Name #define HE_SIG_A_SU_INFO_CP_LTF_SIZE_MASK                                           0x00600000
267*5113495bSYour Name 
268*5113495bSYour Name 
269*5113495bSYour Name /* Description		NSTS
270*5113495bSYour Name 
271*5113495bSYour Name 			Indicates number of streams used for the SU transmission
272*5113495bSYour Name 
273*5113495bSYour Name 
274*5113495bSYour Name 			For HE SU PPDU
275*5113495bSYour Name 
276*5113495bSYour Name 
277*5113495bSYour Name 			                      Set to n for n+1 space time stream,
278*5113495bSYour Name 			where n = 0, 1, 2,.....,7.
279*5113495bSYour Name 
280*5113495bSYour Name 
281*5113495bSYour Name 
282*5113495bSYour Name 
283*5113495bSYour Name 			For HE Extended Range PPDU
284*5113495bSYour Name 
285*5113495bSYour Name 
286*5113495bSYour Name 			                            Set to 0 for 1 space time stream.
287*5113495bSYour Name 			 Value 1 is TBD
288*5113495bSYour Name 
289*5113495bSYour Name 
290*5113495bSYour Name 
291*5113495bSYour Name 			   Values 2 - 7 are reserved
292*5113495bSYour Name 			<legal all>
293*5113495bSYour Name */
294*5113495bSYour Name 
295*5113495bSYour Name #define HE_SIG_A_SU_INFO_NSTS_OFFSET                                                0x00000000
296*5113495bSYour Name #define HE_SIG_A_SU_INFO_NSTS_LSB                                                   23
297*5113495bSYour Name #define HE_SIG_A_SU_INFO_NSTS_MSB                                                   25
298*5113495bSYour Name #define HE_SIG_A_SU_INFO_NSTS_MASK                                                  0x03800000
299*5113495bSYour Name 
300*5113495bSYour Name 
301*5113495bSYour Name /* Description		RESERVED_0B
302*5113495bSYour Name 
303*5113495bSYour Name 			<legal 0>
304*5113495bSYour Name */
305*5113495bSYour Name 
306*5113495bSYour Name #define HE_SIG_A_SU_INFO_RESERVED_0B_OFFSET                                         0x00000000
307*5113495bSYour Name #define HE_SIG_A_SU_INFO_RESERVED_0B_LSB                                            26
308*5113495bSYour Name #define HE_SIG_A_SU_INFO_RESERVED_0B_MSB                                            31
309*5113495bSYour Name #define HE_SIG_A_SU_INFO_RESERVED_0B_MASK                                           0xfc000000
310*5113495bSYour Name 
311*5113495bSYour Name 
312*5113495bSYour Name /* Description		TXOP_DURATION
313*5113495bSYour Name 
314*5113495bSYour Name 			Indicates the remaining time in the current TXOP
315*5113495bSYour Name 
316*5113495bSYour Name 			Field Used by MAC HW
317*5113495bSYour Name 			 <legal all>
318*5113495bSYour Name */
319*5113495bSYour Name 
320*5113495bSYour Name #define HE_SIG_A_SU_INFO_TXOP_DURATION_OFFSET                                       0x00000004
321*5113495bSYour Name #define HE_SIG_A_SU_INFO_TXOP_DURATION_LSB                                          0
322*5113495bSYour Name #define HE_SIG_A_SU_INFO_TXOP_DURATION_MSB                                          6
323*5113495bSYour Name #define HE_SIG_A_SU_INFO_TXOP_DURATION_MASK                                         0x0000007f
324*5113495bSYour Name 
325*5113495bSYour Name 
326*5113495bSYour Name /* Description		CODING
327*5113495bSYour Name 
328*5113495bSYour Name 			Distinguishes between BCC and LDPC coding.
329*5113495bSYour Name 
330*5113495bSYour Name 			0: BCC
331*5113495bSYour Name 			1: LDPC
332*5113495bSYour Name 			<legal all>
333*5113495bSYour Name */
334*5113495bSYour Name 
335*5113495bSYour Name #define HE_SIG_A_SU_INFO_CODING_OFFSET                                              0x00000004
336*5113495bSYour Name #define HE_SIG_A_SU_INFO_CODING_LSB                                                 7
337*5113495bSYour Name #define HE_SIG_A_SU_INFO_CODING_MSB                                                 7
338*5113495bSYour Name #define HE_SIG_A_SU_INFO_CODING_MASK                                                0x00000080
339*5113495bSYour Name 
340*5113495bSYour Name 
341*5113495bSYour Name /* Description		LDPC_EXTRA_SYMBOL
342*5113495bSYour Name 
343*5113495bSYour Name 			If LDPC,
344*5113495bSYour Name 			  0: LDPC extra symbol not present
345*5113495bSYour Name 			  1: LDPC extra symbol present
346*5113495bSYour Name 			Else
347*5113495bSYour Name 			  Set to 1
348*5113495bSYour Name 			<legal all>
349*5113495bSYour Name */
350*5113495bSYour Name 
351*5113495bSYour Name #define HE_SIG_A_SU_INFO_LDPC_EXTRA_SYMBOL_OFFSET                                   0x00000004
352*5113495bSYour Name #define HE_SIG_A_SU_INFO_LDPC_EXTRA_SYMBOL_LSB                                      8
353*5113495bSYour Name #define HE_SIG_A_SU_INFO_LDPC_EXTRA_SYMBOL_MSB                                      8
354*5113495bSYour Name #define HE_SIG_A_SU_INFO_LDPC_EXTRA_SYMBOL_MASK                                     0x00000100
355*5113495bSYour Name 
356*5113495bSYour Name 
357*5113495bSYour Name /* Description		STBC
358*5113495bSYour Name 
359*5113495bSYour Name 			Indicates whether STBC is applied
360*5113495bSYour Name 			0: No STBC
361*5113495bSYour Name 			1: STBC
362*5113495bSYour Name 			<legal all>
363*5113495bSYour Name */
364*5113495bSYour Name 
365*5113495bSYour Name #define HE_SIG_A_SU_INFO_STBC_OFFSET                                                0x00000004
366*5113495bSYour Name #define HE_SIG_A_SU_INFO_STBC_LSB                                                   9
367*5113495bSYour Name #define HE_SIG_A_SU_INFO_STBC_MSB                                                   9
368*5113495bSYour Name #define HE_SIG_A_SU_INFO_STBC_MASK                                                  0x00000200
369*5113495bSYour Name 
370*5113495bSYour Name 
371*5113495bSYour Name /* Description		TXBF
372*5113495bSYour Name 
373*5113495bSYour Name 			Indicates whether beamforming is applied
374*5113495bSYour Name 			0: No beamforming
375*5113495bSYour Name 			1: beamforming
376*5113495bSYour Name 			<legal all>
377*5113495bSYour Name */
378*5113495bSYour Name 
379*5113495bSYour Name #define HE_SIG_A_SU_INFO_TXBF_OFFSET                                                0x00000004
380*5113495bSYour Name #define HE_SIG_A_SU_INFO_TXBF_LSB                                                   10
381*5113495bSYour Name #define HE_SIG_A_SU_INFO_TXBF_MSB                                                   10
382*5113495bSYour Name #define HE_SIG_A_SU_INFO_TXBF_MASK                                                  0x00000400
383*5113495bSYour Name 
384*5113495bSYour Name 
385*5113495bSYour Name /* Description		PACKET_EXTENSION_A_FACTOR
386*5113495bSYour Name 
387*5113495bSYour Name 			Common trigger info
388*5113495bSYour Name 
389*5113495bSYour Name 			the packet extension duration of the trigger-based PPDU
390*5113495bSYour Name 			response with these two bits indicating the "a-factor"
391*5113495bSYour Name 
392*5113495bSYour Name 			<enum 0 a_factor_4>
393*5113495bSYour Name 			<enum 1 a_factor_1>
394*5113495bSYour Name 			<enum 2 a_factor_2>
395*5113495bSYour Name 			<enum 3 a_factor_3>
396*5113495bSYour Name 
397*5113495bSYour Name 			<legal all>
398*5113495bSYour Name */
399*5113495bSYour Name 
400*5113495bSYour Name #define HE_SIG_A_SU_INFO_PACKET_EXTENSION_A_FACTOR_OFFSET                           0x00000004
401*5113495bSYour Name #define HE_SIG_A_SU_INFO_PACKET_EXTENSION_A_FACTOR_LSB                              11
402*5113495bSYour Name #define HE_SIG_A_SU_INFO_PACKET_EXTENSION_A_FACTOR_MSB                              12
403*5113495bSYour Name #define HE_SIG_A_SU_INFO_PACKET_EXTENSION_A_FACTOR_MASK                             0x00001800
404*5113495bSYour Name 
405*5113495bSYour Name 
406*5113495bSYour Name /* Description		PACKET_EXTENSION_PE_DISAMBIGUITY
407*5113495bSYour Name 
408*5113495bSYour Name 			Common trigger info
409*5113495bSYour Name 
410*5113495bSYour Name 			the packet extension duration of the trigger-based PPDU
411*5113495bSYour Name 			response with this bit indicating the PE-Disambiguity
412*5113495bSYour Name 			<legal all>
413*5113495bSYour Name */
414*5113495bSYour Name 
415*5113495bSYour Name #define HE_SIG_A_SU_INFO_PACKET_EXTENSION_PE_DISAMBIGUITY_OFFSET                    0x00000004
416*5113495bSYour Name #define HE_SIG_A_SU_INFO_PACKET_EXTENSION_PE_DISAMBIGUITY_LSB                       13
417*5113495bSYour Name #define HE_SIG_A_SU_INFO_PACKET_EXTENSION_PE_DISAMBIGUITY_MSB                       13
418*5113495bSYour Name #define HE_SIG_A_SU_INFO_PACKET_EXTENSION_PE_DISAMBIGUITY_MASK                      0x00002000
419*5113495bSYour Name 
420*5113495bSYour Name 
421*5113495bSYour Name /* Description		RESERVED_1A
422*5113495bSYour Name 
423*5113495bSYour Name 			Note: per standard, set to 1
424*5113495bSYour Name 			<legal 1>
425*5113495bSYour Name */
426*5113495bSYour Name 
427*5113495bSYour Name #define HE_SIG_A_SU_INFO_RESERVED_1A_OFFSET                                         0x00000004
428*5113495bSYour Name #define HE_SIG_A_SU_INFO_RESERVED_1A_LSB                                            14
429*5113495bSYour Name #define HE_SIG_A_SU_INFO_RESERVED_1A_MSB                                            14
430*5113495bSYour Name #define HE_SIG_A_SU_INFO_RESERVED_1A_MASK                                           0x00004000
431*5113495bSYour Name 
432*5113495bSYour Name 
433*5113495bSYour Name /* Description		DOPPLER_INDICATION
434*5113495bSYour Name 
435*5113495bSYour Name 			0: No Doppler support
436*5113495bSYour Name 			1: Doppler support
437*5113495bSYour Name 			<legal all>
438*5113495bSYour Name */
439*5113495bSYour Name 
440*5113495bSYour Name #define HE_SIG_A_SU_INFO_DOPPLER_INDICATION_OFFSET                                  0x00000004
441*5113495bSYour Name #define HE_SIG_A_SU_INFO_DOPPLER_INDICATION_LSB                                     15
442*5113495bSYour Name #define HE_SIG_A_SU_INFO_DOPPLER_INDICATION_MSB                                     15
443*5113495bSYour Name #define HE_SIG_A_SU_INFO_DOPPLER_INDICATION_MASK                                    0x00008000
444*5113495bSYour Name 
445*5113495bSYour Name 
446*5113495bSYour Name /* Description		CRC
447*5113495bSYour Name 
448*5113495bSYour Name 			CRC for HE-SIG-A contents.
449*5113495bSYour Name 			<legal all>
450*5113495bSYour Name */
451*5113495bSYour Name 
452*5113495bSYour Name #define HE_SIG_A_SU_INFO_CRC_OFFSET                                                 0x00000004
453*5113495bSYour Name #define HE_SIG_A_SU_INFO_CRC_LSB                                                    16
454*5113495bSYour Name #define HE_SIG_A_SU_INFO_CRC_MSB                                                    19
455*5113495bSYour Name #define HE_SIG_A_SU_INFO_CRC_MASK                                                   0x000f0000
456*5113495bSYour Name 
457*5113495bSYour Name 
458*5113495bSYour Name /* Description		TAIL
459*5113495bSYour Name 
460*5113495bSYour Name 			<legal 0>
461*5113495bSYour Name */
462*5113495bSYour Name 
463*5113495bSYour Name #define HE_SIG_A_SU_INFO_TAIL_OFFSET                                                0x00000004
464*5113495bSYour Name #define HE_SIG_A_SU_INFO_TAIL_LSB                                                   20
465*5113495bSYour Name #define HE_SIG_A_SU_INFO_TAIL_MSB                                                   25
466*5113495bSYour Name #define HE_SIG_A_SU_INFO_TAIL_MASK                                                  0x03f00000
467*5113495bSYour Name 
468*5113495bSYour Name 
469*5113495bSYour Name /* Description		DOT11AX_SU_EXTENDED
470*5113495bSYour Name 
471*5113495bSYour Name 			TX side:
472*5113495bSYour Name 			Set to 0
473*5113495bSYour Name 
474*5113495bSYour Name 			RX side:
475*5113495bSYour Name 			On RX side, evaluated by MAC HW. This is the only way for
476*5113495bSYour Name 			 MAC RX to know that this was an HE_SIG_A_SU received in
477*5113495bSYour Name 			 'extended' format
478*5113495bSYour Name 
479*5113495bSYour Name 			When set, the 11ax frame is of the extended range format
480*5113495bSYour Name 
481*5113495bSYour Name 			<legal all>
482*5113495bSYour Name */
483*5113495bSYour Name 
484*5113495bSYour Name #define HE_SIG_A_SU_INFO_DOT11AX_SU_EXTENDED_OFFSET                                 0x00000004
485*5113495bSYour Name #define HE_SIG_A_SU_INFO_DOT11AX_SU_EXTENDED_LSB                                    26
486*5113495bSYour Name #define HE_SIG_A_SU_INFO_DOT11AX_SU_EXTENDED_MSB                                    26
487*5113495bSYour Name #define HE_SIG_A_SU_INFO_DOT11AX_SU_EXTENDED_MASK                                   0x04000000
488*5113495bSYour Name 
489*5113495bSYour Name 
490*5113495bSYour Name /* Description		DOT11AX_EXT_RU_SIZE
491*5113495bSYour Name 
492*5113495bSYour Name 			TX side:
493*5113495bSYour Name 			Set to 0
494*5113495bSYour Name 
495*5113495bSYour Name 			RX side:
496*5113495bSYour Name 			Field only contains valid info when dot11ax_su_extended
497*5113495bSYour Name 			is set.
498*5113495bSYour Name 
499*5113495bSYour Name 			On RX side, evaluated by MAC HW. This is the only way for
500*5113495bSYour Name 			 MAC RX to know what the number of based RUs was in this
501*5113495bSYour Name 			 extended range reception. It is used by the MAC to determine
502*5113495bSYour Name 			 the RU size for the response...
503*5113495bSYour Name 
504*5113495bSYour Name 			<enum 0 EXT_RU_26>
505*5113495bSYour Name 			<enum 1 EXT_RU_52>
506*5113495bSYour Name 			<enum 2 EXT_RU_106>
507*5113495bSYour Name 			<enum 3 EXT_RU_242><legal 0-3>
508*5113495bSYour Name */
509*5113495bSYour Name 
510*5113495bSYour Name #define HE_SIG_A_SU_INFO_DOT11AX_EXT_RU_SIZE_OFFSET                                 0x00000004
511*5113495bSYour Name #define HE_SIG_A_SU_INFO_DOT11AX_EXT_RU_SIZE_LSB                                    27
512*5113495bSYour Name #define HE_SIG_A_SU_INFO_DOT11AX_EXT_RU_SIZE_MSB                                    29
513*5113495bSYour Name #define HE_SIG_A_SU_INFO_DOT11AX_EXT_RU_SIZE_MASK                                   0x38000000
514*5113495bSYour Name 
515*5113495bSYour Name 
516*5113495bSYour Name /* Description		RX_NDP
517*5113495bSYour Name 
518*5113495bSYour Name 			TX side:
519*5113495bSYour Name 			Set to 0
520*5113495bSYour Name 
521*5113495bSYour Name 			RX side:Valid on RX side only, and looked at by MAC HW
522*5113495bSYour Name 
523*5113495bSYour Name 			When set, PHY has received (expected) NDP frame
524*5113495bSYour Name 			<legal all>
525*5113495bSYour Name */
526*5113495bSYour Name 
527*5113495bSYour Name #define HE_SIG_A_SU_INFO_RX_NDP_OFFSET                                              0x00000004
528*5113495bSYour Name #define HE_SIG_A_SU_INFO_RX_NDP_LSB                                                 30
529*5113495bSYour Name #define HE_SIG_A_SU_INFO_RX_NDP_MSB                                                 30
530*5113495bSYour Name #define HE_SIG_A_SU_INFO_RX_NDP_MASK                                                0x40000000
531*5113495bSYour Name 
532*5113495bSYour Name 
533*5113495bSYour Name /* Description		RX_INTEGRITY_CHECK_PASSED
534*5113495bSYour Name 
535*5113495bSYour Name 			TX side: Set to 0
536*5113495bSYour Name 			RX side: Set to 1 if PHY determines the HE-SIG-A CRC check
537*5113495bSYour Name 			 has passed, else set to 0
538*5113495bSYour Name 
539*5113495bSYour Name 			<legal all>
540*5113495bSYour Name */
541*5113495bSYour Name 
542*5113495bSYour Name #define HE_SIG_A_SU_INFO_RX_INTEGRITY_CHECK_PASSED_OFFSET                           0x00000004
543*5113495bSYour Name #define HE_SIG_A_SU_INFO_RX_INTEGRITY_CHECK_PASSED_LSB                              31
544*5113495bSYour Name #define HE_SIG_A_SU_INFO_RX_INTEGRITY_CHECK_PASSED_MSB                              31
545*5113495bSYour Name #define HE_SIG_A_SU_INFO_RX_INTEGRITY_CHECK_PASSED_MASK                             0x80000000
546*5113495bSYour Name 
547*5113495bSYour Name 
548*5113495bSYour Name 
549*5113495bSYour Name #endif   // HE_SIG_A_SU_INFO
550