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