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