xref: /wlan-driver/fw-api/hw/qca5332/he_sig_a_mu_dl_info.h (revision 5113495b16420b49004c444715d2daae2066e7dc)
1 
2 /* Copyright (c) 2022, 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 
18 
19 
20 
21 
22 
23 
24 
25 
26 #ifndef _HE_SIG_A_MU_DL_INFO_H_
27 #define _HE_SIG_A_MU_DL_INFO_H_
28 #if !defined(__ASSEMBLER__)
29 #endif
30 
31 #define NUM_OF_DWORDS_HE_SIG_A_MU_DL_INFO 2
32 
33 
34 struct he_sig_a_mu_dl_info {
35 #ifndef WIFI_BIT_ORDER_BIG_ENDIAN
36              uint32_t dl_ul_flag                                              :  1, // [0:0]
37                       mcs_of_sig_b                                            :  3, // [3:1]
38                       dcm_of_sig_b                                            :  1, // [4:4]
39                       bss_color_id                                            :  6, // [10:5]
40                       spatial_reuse                                           :  4, // [14:11]
41                       transmit_bw                                             :  3, // [17:15]
42                       num_sig_b_symbols                                       :  4, // [21:18]
43                       comp_mode_sig_b                                         :  1, // [22:22]
44                       cp_ltf_size                                             :  2, // [24:23]
45                       doppler_indication                                      :  1, // [25:25]
46                       reserved_0a                                             :  6; // [31:26]
47              uint32_t txop_duration                                           :  7, // [6:0]
48                       reserved_1a                                             :  1, // [7:7]
49                       num_ltf_symbols                                         :  3, // [10:8]
50                       ldpc_extra_symbol                                       :  1, // [11:11]
51                       stbc                                                    :  1, // [12:12]
52                       packet_extension_a_factor                               :  2, // [14:13]
53                       packet_extension_pe_disambiguity                        :  1, // [15:15]
54                       crc                                                     :  4, // [19:16]
55                       tail                                                    :  6, // [25:20]
56                       reserved_1b                                             :  5, // [30:26]
57                       rx_integrity_check_passed                               :  1; // [31:31]
58 #else
59              uint32_t reserved_0a                                             :  6, // [31:26]
60                       doppler_indication                                      :  1, // [25:25]
61                       cp_ltf_size                                             :  2, // [24:23]
62                       comp_mode_sig_b                                         :  1, // [22:22]
63                       num_sig_b_symbols                                       :  4, // [21:18]
64                       transmit_bw                                             :  3, // [17:15]
65                       spatial_reuse                                           :  4, // [14:11]
66                       bss_color_id                                            :  6, // [10:5]
67                       dcm_of_sig_b                                            :  1, // [4:4]
68                       mcs_of_sig_b                                            :  3, // [3:1]
69                       dl_ul_flag                                              :  1; // [0:0]
70              uint32_t rx_integrity_check_passed                               :  1, // [31:31]
71                       reserved_1b                                             :  5, // [30:26]
72                       tail                                                    :  6, // [25:20]
73                       crc                                                     :  4, // [19:16]
74                       packet_extension_pe_disambiguity                        :  1, // [15:15]
75                       packet_extension_a_factor                               :  2, // [14:13]
76                       stbc                                                    :  1, // [12:12]
77                       ldpc_extra_symbol                                       :  1, // [11:11]
78                       num_ltf_symbols                                         :  3, // [10:8]
79                       reserved_1a                                             :  1, // [7:7]
80                       txop_duration                                           :  7; // [6:0]
81 #endif
82 };
83 
84 
85 /* Description		DL_UL_FLAG
86 
87 			Differentiates between DL and UL transmission
88 
89 			<enum 0 DL_UL_FLAG_IS_DL_OR_TDLS>
90 			<enum 1 DL_UL_FLAG_IS_UL>
91 			NOTE: This is unsupported for "HE MU" format (including "MU_SU")
92 			Tx in Napier and Hastings80.
93 			<legal all>
94 */
95 
96 #define HE_SIG_A_MU_DL_INFO_DL_UL_FLAG_OFFSET                                       0x00000000
97 #define HE_SIG_A_MU_DL_INFO_DL_UL_FLAG_LSB                                          0
98 #define HE_SIG_A_MU_DL_INFO_DL_UL_FLAG_MSB                                          0
99 #define HE_SIG_A_MU_DL_INFO_DL_UL_FLAG_MASK                                         0x00000001
100 
101 
102 /* Description		MCS_OF_SIG_B
103 
104 			Indicates the MCS of HE-SIG-B
105 			<legal 0-5>
106 */
107 
108 #define HE_SIG_A_MU_DL_INFO_MCS_OF_SIG_B_OFFSET                                     0x00000000
109 #define HE_SIG_A_MU_DL_INFO_MCS_OF_SIG_B_LSB                                        1
110 #define HE_SIG_A_MU_DL_INFO_MCS_OF_SIG_B_MSB                                        3
111 #define HE_SIG_A_MU_DL_INFO_MCS_OF_SIG_B_MASK                                       0x0000000e
112 
113 
114 /* Description		DCM_OF_SIG_B
115 
116 			Indicates whether dual sub-carrier modulation is applied
117 			 to HE-SIG-B
118 
119 			0: No DCM for HE_SIG_B
120 			1: DCM for HE_SIG_B
121 			<legal all>
122 */
123 
124 #define HE_SIG_A_MU_DL_INFO_DCM_OF_SIG_B_OFFSET                                     0x00000000
125 #define HE_SIG_A_MU_DL_INFO_DCM_OF_SIG_B_LSB                                        4
126 #define HE_SIG_A_MU_DL_INFO_DCM_OF_SIG_B_MSB                                        4
127 #define HE_SIG_A_MU_DL_INFO_DCM_OF_SIG_B_MASK                                       0x00000010
128 
129 
130 /* Description		BSS_COLOR_ID
131 
132 			BSS color ID
133 
134 			Field Used by MAC HW
135 			<legal all>
136 */
137 
138 #define HE_SIG_A_MU_DL_INFO_BSS_COLOR_ID_OFFSET                                     0x00000000
139 #define HE_SIG_A_MU_DL_INFO_BSS_COLOR_ID_LSB                                        5
140 #define HE_SIG_A_MU_DL_INFO_BSS_COLOR_ID_MSB                                        10
141 #define HE_SIG_A_MU_DL_INFO_BSS_COLOR_ID_MASK                                       0x000007e0
142 
143 
144 /* Description		SPATIAL_REUSE
145 
146 			Spatial reuse
147 
148 			For 20MHz one SR field corresponding to entire 20MHz (other
149 			 3 fields indicate identical values)
150 			For 40MHz two SR fields for each 20MHz (other 2 fields indicate
151 			 identical values)
152 			For 80MHz four SR fields for each 20MHz
153 			For 160MHz four SR fields for each 40MHz
154 			<legal all>
155 */
156 
157 #define HE_SIG_A_MU_DL_INFO_SPATIAL_REUSE_OFFSET                                    0x00000000
158 #define HE_SIG_A_MU_DL_INFO_SPATIAL_REUSE_LSB                                       11
159 #define HE_SIG_A_MU_DL_INFO_SPATIAL_REUSE_MSB                                       14
160 #define HE_SIG_A_MU_DL_INFO_SPATIAL_REUSE_MASK                                      0x00007800
161 
162 
163 /* Description		TRANSMIT_BW
164 
165 			Bandwidth of the PPDU.
166 
167 			<enum 0 HE_SIG_A_MU_DL_BW20> 20 Mhz
168 			<enum 1 HE_SIG_A_MU_DL_BW40> 40 Mhz
169 			<enum 2 HE_SIG_A_MU_DL_BW80> 80 MHz non-preamble puncturing
170 			 mode
171 			<enum 3 HE_SIG_A_MU_DL_BW160> 160 MHz and 80+80 MHz non-preamble
172 			 puncturing mode
173 			<enum 4 HE_SIG_A_MU_DL_BW80_SEC_20_PUNC> for preamble puncturing
174 			 in 80 MHz, where in the preamble only the secondary 20
175 			MHz is punctured
176 			<enum 5 HE_SIG_A_MU_DL_BW80_20_PUNC_IN_SEC_40> for preamble
177 			 puncturing in 80 MHz, where in the preamble only one of
178 			 the two 20 MHz sub-channels in secondary 40 MHz is punctured.
179 
180 			<enum 6 HE_SIG_A_MU_DL_BW160_SEC_20_PUNC> for preamble puncturing
181 			 in 160 MHz or 80+80 MHz, where in the primary 80 MHz of
182 			 the preamble only the secondary 20 MHz is punctured.
183 			<enum 7 HE_SIG_A_MU_DL_BW160_SEC_40_80_PUNC> for preamble
184 			 puncturing in 160 MHz or 80+80 MHz, where in the primary
185 			 80 MHz of the preamble the primary 40 MHz is present.
186 
187 			On RX side, Field Used by MAC HW
188 			<legal 0-7>
189 */
190 
191 #define HE_SIG_A_MU_DL_INFO_TRANSMIT_BW_OFFSET                                      0x00000000
192 #define HE_SIG_A_MU_DL_INFO_TRANSMIT_BW_LSB                                         15
193 #define HE_SIG_A_MU_DL_INFO_TRANSMIT_BW_MSB                                         17
194 #define HE_SIG_A_MU_DL_INFO_TRANSMIT_BW_MASK                                        0x00038000
195 
196 
197 /* Description		NUM_SIG_B_SYMBOLS
198 
199 			Number of symbols
200 
201 			For OFDMA, the actual number of symbols is 1 larger then
202 			 indicated in this field.
203 
204 			For MU-MIMO this is equal to the number of users - 1: the
205 			 following encoding is used:
206 			1 => 2 users
207 			2 => 3 users
208 			Etc.
209 
210 			<legal all>
211 */
212 
213 #define HE_SIG_A_MU_DL_INFO_NUM_SIG_B_SYMBOLS_OFFSET                                0x00000000
214 #define HE_SIG_A_MU_DL_INFO_NUM_SIG_B_SYMBOLS_LSB                                   18
215 #define HE_SIG_A_MU_DL_INFO_NUM_SIG_B_SYMBOLS_MSB                                   21
216 #define HE_SIG_A_MU_DL_INFO_NUM_SIG_B_SYMBOLS_MASK                                  0x003c0000
217 
218 
219 /* Description		COMP_MODE_SIG_B
220 
221 			Indicates the compression mode of HE-SIG-B
222 
223 			0: Regular [uncomp mode]
224 			1: compressed mode (full-BW MU-MIMO only)
225 			<legal all>
226 */
227 
228 #define HE_SIG_A_MU_DL_INFO_COMP_MODE_SIG_B_OFFSET                                  0x00000000
229 #define HE_SIG_A_MU_DL_INFO_COMP_MODE_SIG_B_LSB                                     22
230 #define HE_SIG_A_MU_DL_INFO_COMP_MODE_SIG_B_MSB                                     22
231 #define HE_SIG_A_MU_DL_INFO_COMP_MODE_SIG_B_MASK                                    0x00400000
232 
233 
234 /* Description		CP_LTF_SIZE
235 
236 			Indicates the CP and HE-LTF type
237 
238 			<enum 0 MU_FourX_LTF_0_8CP> 4xLTF + 0.8 us CP
239 			<enum 1 MU_TwoX_LTF_0_8CP> 2x LTF + 0.8 µs CP
240 			<enum 2 MU_TwoX_LTF_1_6CP> 2x LTF + 1.6 µs CP
241 			<enum 3 MU_FourX_LTF_3_2CP> 4x LTF + 3.2 µs CP
242 
243 			<legal all>
244 */
245 
246 #define HE_SIG_A_MU_DL_INFO_CP_LTF_SIZE_OFFSET                                      0x00000000
247 #define HE_SIG_A_MU_DL_INFO_CP_LTF_SIZE_LSB                                         23
248 #define HE_SIG_A_MU_DL_INFO_CP_LTF_SIZE_MSB                                         24
249 #define HE_SIG_A_MU_DL_INFO_CP_LTF_SIZE_MASK                                        0x01800000
250 
251 
252 /* Description		DOPPLER_INDICATION
253 
254 			0: No Doppler support
255 			1: Doppler support
256 			<legal all>
257 */
258 
259 #define HE_SIG_A_MU_DL_INFO_DOPPLER_INDICATION_OFFSET                               0x00000000
260 #define HE_SIG_A_MU_DL_INFO_DOPPLER_INDICATION_LSB                                  25
261 #define HE_SIG_A_MU_DL_INFO_DOPPLER_INDICATION_MSB                                  25
262 #define HE_SIG_A_MU_DL_INFO_DOPPLER_INDICATION_MASK                                 0x02000000
263 
264 
265 /* Description		RESERVED_0A
266 
267 			<legal 0>
268 */
269 
270 #define HE_SIG_A_MU_DL_INFO_RESERVED_0A_OFFSET                                      0x00000000
271 #define HE_SIG_A_MU_DL_INFO_RESERVED_0A_LSB                                         26
272 #define HE_SIG_A_MU_DL_INFO_RESERVED_0A_MSB                                         31
273 #define HE_SIG_A_MU_DL_INFO_RESERVED_0A_MASK                                        0xfc000000
274 
275 
276 /* Description		TXOP_DURATION
277 
278 			Indicates the remaining time in the current TXOP
279 
280 			Field Used by MAC HW
281 			 <legal all>
282 */
283 
284 #define HE_SIG_A_MU_DL_INFO_TXOP_DURATION_OFFSET                                    0x00000004
285 #define HE_SIG_A_MU_DL_INFO_TXOP_DURATION_LSB                                       0
286 #define HE_SIG_A_MU_DL_INFO_TXOP_DURATION_MSB                                       6
287 #define HE_SIG_A_MU_DL_INFO_TXOP_DURATION_MASK                                      0x0000007f
288 
289 
290 /* Description		RESERVED_1A
291 
292 			Note: spec indicates this shall be set to 1
293 			<legal 1>
294 */
295 
296 #define HE_SIG_A_MU_DL_INFO_RESERVED_1A_OFFSET                                      0x00000004
297 #define HE_SIG_A_MU_DL_INFO_RESERVED_1A_LSB                                         7
298 #define HE_SIG_A_MU_DL_INFO_RESERVED_1A_MSB                                         7
299 #define HE_SIG_A_MU_DL_INFO_RESERVED_1A_MASK                                        0x00000080
300 
301 
302 /* Description		NUM_LTF_SYMBOLS
303 
304 			Indicates the number of HE-LTF symbols
305 
306 			0: 1 LTF
307 			1: 2 LTFs
308 			2: 4 LTFs
309 			3: 6 LTFs
310 			4: 8 LTFs
311 
312 			<legal all>
313 */
314 
315 #define HE_SIG_A_MU_DL_INFO_NUM_LTF_SYMBOLS_OFFSET                                  0x00000004
316 #define HE_SIG_A_MU_DL_INFO_NUM_LTF_SYMBOLS_LSB                                     8
317 #define HE_SIG_A_MU_DL_INFO_NUM_LTF_SYMBOLS_MSB                                     10
318 #define HE_SIG_A_MU_DL_INFO_NUM_LTF_SYMBOLS_MASK                                    0x00000700
319 
320 
321 /* Description		LDPC_EXTRA_SYMBOL
322 
323 			If LDPC,
324 			  0: LDPC extra symbol not present
325 			  1: LDPC extra symbol present
326 			Else
327 			  Set to 1
328 			<legal all>
329 */
330 
331 #define HE_SIG_A_MU_DL_INFO_LDPC_EXTRA_SYMBOL_OFFSET                                0x00000004
332 #define HE_SIG_A_MU_DL_INFO_LDPC_EXTRA_SYMBOL_LSB                                   11
333 #define HE_SIG_A_MU_DL_INFO_LDPC_EXTRA_SYMBOL_MSB                                   11
334 #define HE_SIG_A_MU_DL_INFO_LDPC_EXTRA_SYMBOL_MASK                                  0x00000800
335 
336 
337 /* Description		STBC
338 
339 			Indicates whether STBC is applied
340 			0: No STBC
341 			1: STBC
342 			<legal all>
343 */
344 
345 #define HE_SIG_A_MU_DL_INFO_STBC_OFFSET                                             0x00000004
346 #define HE_SIG_A_MU_DL_INFO_STBC_LSB                                                12
347 #define HE_SIG_A_MU_DL_INFO_STBC_MSB                                                12
348 #define HE_SIG_A_MU_DL_INFO_STBC_MASK                                               0x00001000
349 
350 
351 /* Description		PACKET_EXTENSION_A_FACTOR
352 
353 			the packet extension duration of the trigger-based PPDU
354 			response with these two bits indicating the "a-factor"
355 
356 			<enum 0 a_factor_4>
357 			<enum 1 a_factor_1>
358 			<enum 2 a_factor_2>
359 			<enum 3 a_factor_3>
360 
361 			<legal all>
362 */
363 
364 #define HE_SIG_A_MU_DL_INFO_PACKET_EXTENSION_A_FACTOR_OFFSET                        0x00000004
365 #define HE_SIG_A_MU_DL_INFO_PACKET_EXTENSION_A_FACTOR_LSB                           13
366 #define HE_SIG_A_MU_DL_INFO_PACKET_EXTENSION_A_FACTOR_MSB                           14
367 #define HE_SIG_A_MU_DL_INFO_PACKET_EXTENSION_A_FACTOR_MASK                          0x00006000
368 
369 
370 /* Description		PACKET_EXTENSION_PE_DISAMBIGUITY
371 
372 			the packet extension duration of the trigger-based PPDU
373 			response with this bit indicating the PE-Disambiguity
374 			<legal all>
375 */
376 
377 #define HE_SIG_A_MU_DL_INFO_PACKET_EXTENSION_PE_DISAMBIGUITY_OFFSET                 0x00000004
378 #define HE_SIG_A_MU_DL_INFO_PACKET_EXTENSION_PE_DISAMBIGUITY_LSB                    15
379 #define HE_SIG_A_MU_DL_INFO_PACKET_EXTENSION_PE_DISAMBIGUITY_MSB                    15
380 #define HE_SIG_A_MU_DL_INFO_PACKET_EXTENSION_PE_DISAMBIGUITY_MASK                   0x00008000
381 
382 
383 /* Description		CRC
384 
385 			CRC for HE-SIG-A contents.
386 			<legal all>
387 */
388 
389 #define HE_SIG_A_MU_DL_INFO_CRC_OFFSET                                              0x00000004
390 #define HE_SIG_A_MU_DL_INFO_CRC_LSB                                                 16
391 #define HE_SIG_A_MU_DL_INFO_CRC_MSB                                                 19
392 #define HE_SIG_A_MU_DL_INFO_CRC_MASK                                                0x000f0000
393 
394 
395 /* Description		TAIL
396 
397 			<legal 0>
398 */
399 
400 #define HE_SIG_A_MU_DL_INFO_TAIL_OFFSET                                             0x00000004
401 #define HE_SIG_A_MU_DL_INFO_TAIL_LSB                                                20
402 #define HE_SIG_A_MU_DL_INFO_TAIL_MSB                                                25
403 #define HE_SIG_A_MU_DL_INFO_TAIL_MASK                                               0x03f00000
404 
405 
406 /* Description		RESERVED_1B
407 
408 			<legal 0>
409 */
410 
411 #define HE_SIG_A_MU_DL_INFO_RESERVED_1B_OFFSET                                      0x00000004
412 #define HE_SIG_A_MU_DL_INFO_RESERVED_1B_LSB                                         26
413 #define HE_SIG_A_MU_DL_INFO_RESERVED_1B_MSB                                         30
414 #define HE_SIG_A_MU_DL_INFO_RESERVED_1B_MASK                                        0x7c000000
415 
416 
417 /* Description		RX_INTEGRITY_CHECK_PASSED
418 
419 			TX side: Set to 0
420 			RX side: Set to 1 if PHY determines the HE-SIG-A CRC check
421 			 has passed, else set to 0
422 
423 			<legal all>
424 */
425 
426 #define HE_SIG_A_MU_DL_INFO_RX_INTEGRITY_CHECK_PASSED_OFFSET                        0x00000004
427 #define HE_SIG_A_MU_DL_INFO_RX_INTEGRITY_CHECK_PASSED_LSB                           31
428 #define HE_SIG_A_MU_DL_INFO_RX_INTEGRITY_CHECK_PASSED_MSB                           31
429 #define HE_SIG_A_MU_DL_INFO_RX_INTEGRITY_CHECK_PASSED_MASK                          0x80000000
430 
431 
432 
433 #endif   // HE_SIG_A_MU_DL_INFO
434