xref: /wlan-driver/fw-api/hw/qca6390/v1/he_sig_a_mu_dl_info.h (revision 5113495b16420b49004c444715d2daae2066e7dc)
1 /*
2  * Copyright (c) 2018 The Linux Foundation. All rights reserved.
3  *
4  * Permission to use, copy, modify, and/or distribute this software for
5  * any purpose with or without fee is hereby granted, provided that the
6  * above copyright notice and this permission notice appear in all
7  * copies.
8  *
9  * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL
10  * WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED
11  * WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE
12  * AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL
13  * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
14  * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
15  * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
16  * PERFORMANCE OF THIS SOFTWARE.
17  */
18 
19 #ifndef _HE_SIG_A_MU_DL_INFO_H_
20 #define _HE_SIG_A_MU_DL_INFO_H_
21 #if !defined(__ASSEMBLER__)
22 #endif
23 
24 
25 // ################ START SUMMARY #################
26 //
27 //	Dword	Fields
28 //	0	dl_ul_flag[0], mcs_of_sig_b[3:1], dcm_of_sig_b[4], bss_color_id[10:5], spatial_reuse[14:11], transmit_bw[17:15], num_sig_b_symbols[21:18], comp_mode_sig_b[22], cp_ltf_size[24:23], doppler_indication[25], reserved_0a[31:26]
29 //	1	txop_duration[6:0], reserved_1a[7], num_ltf_symbols[10:8], ldpc_extra_symbol[11], stbc[12], packet_extension_a_factor[14:13], packet_extension_pe_disambiguity[15], crc[19:16], tail[25:20], reserved_1b[31:26]
30 //
31 // ################ END SUMMARY #################
32 
33 #define NUM_OF_DWORDS_HE_SIG_A_MU_DL_INFO 2
34 
35 struct he_sig_a_mu_dl_info {
36              uint32_t dl_ul_flag                      :  1, //[0]
37                       mcs_of_sig_b                    :  3, //[3:1]
38                       dcm_of_sig_b                    :  1, //[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]
44                       cp_ltf_size                     :  2, //[24:23]
45                       doppler_indication              :  1, //[25]
46                       reserved_0a                     :  6; //[31:26]
47              uint32_t txop_duration                   :  7, //[6:0]
48                       reserved_1a                     :  1, //[7]
49                       num_ltf_symbols                 :  3, //[10:8]
50                       ldpc_extra_symbol               :  1, //[11]
51                       stbc                            :  1, //[12]
52                       packet_extension_a_factor       :  2, //[14:13]
53                       packet_extension_pe_disambiguity:  1, //[15]
54                       crc                             :  4, //[19:16]
55                       tail                            :  6, //[25:20]
56                       reserved_1b                     :  6; //[31:26]
57 };
58 
59 /*
60 
61 dl_ul_flag
62 
63 			Differentiates between DL and UL transmission
64 
65 
66 
67 			<enum 0 DL_UL_FLAG_IS_DL_OR_TDLS>
68 
69 			<enum 1 DL_UL_FLAG_IS_UL>
70 
71 			NOTE: This is unsupported for HE MU format (including
72 			MU_SU) Tx in Napier and Hastings80.
73 
74 			<legal all>
75 
76 mcs_of_sig_b
77 
78 			Indicates the MCS of HE-SIG-B
79 
80 			<legal 0-5>
81 
82 dcm_of_sig_b
83 
84 			Indicates whether dual sub-carrier modulation is applied
85 			to HE-SIG-B
86 
87 
88 
89 			0: No DCM for HE_SIG_B
90 
91 			1: DCM for HE_SIG_B
92 
93 			<legal all>
94 
95 bss_color_id
96 
97 			BSS color ID
98 
99 
100 
101 			Field Used by MAC HW
102 
103 			<legal all>
104 
105 spatial_reuse
106 
107 			Spatial reuse
108 
109 
110 
111 			For 20MHz one SR field corresponding to entire 20MHz
112 			(other 3 fields indicate identical values)
113 
114 			For 40MHz two SR fields for each 20MHz (other 2 fields
115 			indicate identical values)
116 
117 			For 80MHz four SR fields for each 20MHz
118 
119 			For 160MHz four SR fields for each 40MHz
120 
121 			<legal all>
122 
123 transmit_bw
124 
125 			Bandwidth of the PPDU.
126 
127 
128 
129 			<enum 0 HE_SIG_A_MU_DL_BW20> 20 Mhz
130 
131 			<enum 1 HE_SIG_A_MU_DL_BW40> 40 Mhz
132 
133 			<enum 2 HE_SIG_A_MU_DL_BW80> 80 Mhz
134 
135 			<enum 3 HE_SIG_A_MU_DL_BW160> 160 MHz or 80+80 MHz
136 
137 
138 
139 			NOTE: Other values to be added for preamble puncturing
140 
141 
142 
143 			On RX side, Field Used by MAC HW
144 
145 			<legal 0-3>
146 
147 num_sig_b_symbols
148 
149 			Number of symbols
150 
151 
152 
153 			For OFDMA, the actual number of symbols is 1 larger then
154 			indicated in this field.
155 
156 
157 
158 			For MU-MIMO this is equal to the number of users - 1:
159 			the following encoding is used:
160 
161 			1 => 2 users
162 
163 			2 => 3 users
164 
165 			Etc.
166 
167 
168 
169 			<legal all>
170 
171 comp_mode_sig_b
172 
173 			Indicates the compression mode of HE-SIG-B
174 
175 
176 
177 			0: Regular [uncomp mode]
178 
179 			1: compressed mode (full-BW MU-MIMO only)
180 
181 			<legal all>
182 
183 cp_ltf_size
184 
185 			Indicates the CP and HE-LTF type
186 
187 
188 
189 			<enum 0 MU_FourX_LTF_0_8CP> 4xLTF + 0.8 us CP
190 
191 			<enum 1 MU_TwoX_LTF_0_8CP> 2x LTF + 0.8 µs CP
192 
193 			<enum 2 MU_TwoX_LTF_1_6CP> 2x LTF + 1.6 µs CP
194 
195 			<enum 3 MU_FourX_LTF_3_2CP> 4x LTF + 3.2 µs CP
196 
197 
198 
199 			NOTE: for MU no proprietary modes (for now)
200 
201 
202 
203 			<legal all>
204 
205 doppler_indication
206 
207 			0: No Doppler support
208 
209 			1: Doppler support
210 
211 			<legal all>
212 
213 reserved_0a
214 
215 			<legal 0>
216 
217 txop_duration
218 
219 			Indicates the remaining time in the current TXOP
220 
221 
222 
223 			Field Used by MAC HW
224 
225 			 <legal all>
226 
227 reserved_1a
228 
229 			Note: spec indicates this shall be set to 1
230 
231 			<legal 1>
232 
233 num_ltf_symbols
234 
235 			Indicates the number of HE-LTF symbols
236 
237 
238 
239 			0: 1 LTF
240 
241 			1: 2 LTFs
242 
243 			2: 4 LTFs
244 
245 			3: 6 LTFs
246 
247 			4: 8 LTFs
248 
249 
250 
251 			<legal all>
252 
253 ldpc_extra_symbol
254 
255 			If LDPC,
256 
257 			  0: LDPC extra symbol not present
258 
259 			  1: LDPC extra symbol present
260 
261 			Else
262 
263 			  Set to 1
264 
265 			<legal all>
266 
267 stbc
268 
269 			Indicates whether STBC is applied
270 
271 			0: No STBC
272 
273 			1: STBC
274 
275 			<legal all>
276 
277 packet_extension_a_factor
278 
279 			the packet extension duration of the trigger-based PPDU
280 			response with these two bits indicating the a-factor
281 
282 
283 
284 			<enum 0 a_factor_4>
285 
286 			<enum 1 a_factor_1>
287 
288 			<enum 2 a_factor_2>
289 
290 			<enum 3 a_factor_3>
291 
292 
293 
294 			<legal all>
295 
296 packet_extension_pe_disambiguity
297 
298 			the packet extension duration of the trigger-based PPDU
299 			response with this bit indicating the PE-Disambiguity
300 
301 			<legal all>
302 
303 crc
304 
305 			CRC for HE-SIG-A contents.
306 
307 			<legal all>
308 
309 tail
310 
311 			<legal 0>
312 
313 reserved_1b
314 
315 			<legal 0>
316 */
317 
318 
319 /* Description		HE_SIG_A_MU_DL_INFO_0_DL_UL_FLAG
320 
321 			Differentiates between DL and UL transmission
322 
323 
324 
325 			<enum 0 DL_UL_FLAG_IS_DL_OR_TDLS>
326 
327 			<enum 1 DL_UL_FLAG_IS_UL>
328 
329 			NOTE: This is unsupported for HE MU format (including
330 			MU_SU) Tx in Napier and Hastings80.
331 
332 			<legal all>
333 */
334 #define HE_SIG_A_MU_DL_INFO_0_DL_UL_FLAG_OFFSET                      0x00000000
335 #define HE_SIG_A_MU_DL_INFO_0_DL_UL_FLAG_LSB                         0
336 #define HE_SIG_A_MU_DL_INFO_0_DL_UL_FLAG_MASK                        0x00000001
337 
338 /* Description		HE_SIG_A_MU_DL_INFO_0_MCS_OF_SIG_B
339 
340 			Indicates the MCS of HE-SIG-B
341 
342 			<legal 0-5>
343 */
344 #define HE_SIG_A_MU_DL_INFO_0_MCS_OF_SIG_B_OFFSET                    0x00000000
345 #define HE_SIG_A_MU_DL_INFO_0_MCS_OF_SIG_B_LSB                       1
346 #define HE_SIG_A_MU_DL_INFO_0_MCS_OF_SIG_B_MASK                      0x0000000e
347 
348 /* Description		HE_SIG_A_MU_DL_INFO_0_DCM_OF_SIG_B
349 
350 			Indicates whether dual sub-carrier modulation is applied
351 			to HE-SIG-B
352 
353 
354 
355 			0: No DCM for HE_SIG_B
356 
357 			1: DCM for HE_SIG_B
358 
359 			<legal all>
360 */
361 #define HE_SIG_A_MU_DL_INFO_0_DCM_OF_SIG_B_OFFSET                    0x00000000
362 #define HE_SIG_A_MU_DL_INFO_0_DCM_OF_SIG_B_LSB                       4
363 #define HE_SIG_A_MU_DL_INFO_0_DCM_OF_SIG_B_MASK                      0x00000010
364 
365 /* Description		HE_SIG_A_MU_DL_INFO_0_BSS_COLOR_ID
366 
367 			BSS color ID
368 
369 
370 
371 			Field Used by MAC HW
372 
373 			<legal all>
374 */
375 #define HE_SIG_A_MU_DL_INFO_0_BSS_COLOR_ID_OFFSET                    0x00000000
376 #define HE_SIG_A_MU_DL_INFO_0_BSS_COLOR_ID_LSB                       5
377 #define HE_SIG_A_MU_DL_INFO_0_BSS_COLOR_ID_MASK                      0x000007e0
378 
379 /* Description		HE_SIG_A_MU_DL_INFO_0_SPATIAL_REUSE
380 
381 			Spatial reuse
382 
383 
384 
385 			For 20MHz one SR field corresponding to entire 20MHz
386 			(other 3 fields indicate identical values)
387 
388 			For 40MHz two SR fields for each 20MHz (other 2 fields
389 			indicate identical values)
390 
391 			For 80MHz four SR fields for each 20MHz
392 
393 			For 160MHz four SR fields for each 40MHz
394 
395 			<legal all>
396 */
397 #define HE_SIG_A_MU_DL_INFO_0_SPATIAL_REUSE_OFFSET                   0x00000000
398 #define HE_SIG_A_MU_DL_INFO_0_SPATIAL_REUSE_LSB                      11
399 #define HE_SIG_A_MU_DL_INFO_0_SPATIAL_REUSE_MASK                     0x00007800
400 
401 /* Description		HE_SIG_A_MU_DL_INFO_0_TRANSMIT_BW
402 
403 			Bandwidth of the PPDU.
404 
405 
406 
407 			<enum 0 HE_SIG_A_MU_DL_BW20> 20 Mhz
408 
409 			<enum 1 HE_SIG_A_MU_DL_BW40> 40 Mhz
410 
411 			<enum 2 HE_SIG_A_MU_DL_BW80> 80 Mhz
412 
413 			<enum 3 HE_SIG_A_MU_DL_BW160> 160 MHz or 80+80 MHz
414 
415 
416 
417 			NOTE: Other values to be added for preamble puncturing
418 
419 
420 
421 			On RX side, Field Used by MAC HW
422 
423 			<legal 0-3>
424 */
425 #define HE_SIG_A_MU_DL_INFO_0_TRANSMIT_BW_OFFSET                     0x00000000
426 #define HE_SIG_A_MU_DL_INFO_0_TRANSMIT_BW_LSB                        15
427 #define HE_SIG_A_MU_DL_INFO_0_TRANSMIT_BW_MASK                       0x00038000
428 
429 /* Description		HE_SIG_A_MU_DL_INFO_0_NUM_SIG_B_SYMBOLS
430 
431 			Number of symbols
432 
433 
434 
435 			For OFDMA, the actual number of symbols is 1 larger then
436 			indicated in this field.
437 
438 
439 
440 			For MU-MIMO this is equal to the number of users - 1:
441 			the following encoding is used:
442 
443 			1 => 2 users
444 
445 			2 => 3 users
446 
447 			Etc.
448 
449 
450 
451 			<legal all>
452 */
453 #define HE_SIG_A_MU_DL_INFO_0_NUM_SIG_B_SYMBOLS_OFFSET               0x00000000
454 #define HE_SIG_A_MU_DL_INFO_0_NUM_SIG_B_SYMBOLS_LSB                  18
455 #define HE_SIG_A_MU_DL_INFO_0_NUM_SIG_B_SYMBOLS_MASK                 0x003c0000
456 
457 /* Description		HE_SIG_A_MU_DL_INFO_0_COMP_MODE_SIG_B
458 
459 			Indicates the compression mode of HE-SIG-B
460 
461 
462 
463 			0: Regular [uncomp mode]
464 
465 			1: compressed mode (full-BW MU-MIMO only)
466 
467 			<legal all>
468 */
469 #define HE_SIG_A_MU_DL_INFO_0_COMP_MODE_SIG_B_OFFSET                 0x00000000
470 #define HE_SIG_A_MU_DL_INFO_0_COMP_MODE_SIG_B_LSB                    22
471 #define HE_SIG_A_MU_DL_INFO_0_COMP_MODE_SIG_B_MASK                   0x00400000
472 
473 /* Description		HE_SIG_A_MU_DL_INFO_0_CP_LTF_SIZE
474 
475 			Indicates the CP and HE-LTF type
476 
477 
478 
479 			<enum 0 MU_FourX_LTF_0_8CP> 4xLTF + 0.8 us CP
480 
481 			<enum 1 MU_TwoX_LTF_0_8CP> 2x LTF + 0.8 µs CP
482 
483 			<enum 2 MU_TwoX_LTF_1_6CP> 2x LTF + 1.6 µs CP
484 
485 			<enum 3 MU_FourX_LTF_3_2CP> 4x LTF + 3.2 µs CP
486 
487 
488 
489 			NOTE: for MU no proprietary modes (for now)
490 
491 
492 
493 			<legal all>
494 */
495 #define HE_SIG_A_MU_DL_INFO_0_CP_LTF_SIZE_OFFSET                     0x00000000
496 #define HE_SIG_A_MU_DL_INFO_0_CP_LTF_SIZE_LSB                        23
497 #define HE_SIG_A_MU_DL_INFO_0_CP_LTF_SIZE_MASK                       0x01800000
498 
499 /* Description		HE_SIG_A_MU_DL_INFO_0_DOPPLER_INDICATION
500 
501 			0: No Doppler support
502 
503 			1: Doppler support
504 
505 			<legal all>
506 */
507 #define HE_SIG_A_MU_DL_INFO_0_DOPPLER_INDICATION_OFFSET              0x00000000
508 #define HE_SIG_A_MU_DL_INFO_0_DOPPLER_INDICATION_LSB                 25
509 #define HE_SIG_A_MU_DL_INFO_0_DOPPLER_INDICATION_MASK                0x02000000
510 
511 /* Description		HE_SIG_A_MU_DL_INFO_0_RESERVED_0A
512 
513 			<legal 0>
514 */
515 #define HE_SIG_A_MU_DL_INFO_0_RESERVED_0A_OFFSET                     0x00000000
516 #define HE_SIG_A_MU_DL_INFO_0_RESERVED_0A_LSB                        26
517 #define HE_SIG_A_MU_DL_INFO_0_RESERVED_0A_MASK                       0xfc000000
518 
519 /* Description		HE_SIG_A_MU_DL_INFO_1_TXOP_DURATION
520 
521 			Indicates the remaining time in the current TXOP
522 
523 
524 
525 			Field Used by MAC HW
526 
527 			 <legal all>
528 */
529 #define HE_SIG_A_MU_DL_INFO_1_TXOP_DURATION_OFFSET                   0x00000004
530 #define HE_SIG_A_MU_DL_INFO_1_TXOP_DURATION_LSB                      0
531 #define HE_SIG_A_MU_DL_INFO_1_TXOP_DURATION_MASK                     0x0000007f
532 
533 /* Description		HE_SIG_A_MU_DL_INFO_1_RESERVED_1A
534 
535 			Note: spec indicates this shall be set to 1
536 
537 			<legal 1>
538 */
539 #define HE_SIG_A_MU_DL_INFO_1_RESERVED_1A_OFFSET                     0x00000004
540 #define HE_SIG_A_MU_DL_INFO_1_RESERVED_1A_LSB                        7
541 #define HE_SIG_A_MU_DL_INFO_1_RESERVED_1A_MASK                       0x00000080
542 
543 /* Description		HE_SIG_A_MU_DL_INFO_1_NUM_LTF_SYMBOLS
544 
545 			Indicates the number of HE-LTF symbols
546 
547 
548 
549 			0: 1 LTF
550 
551 			1: 2 LTFs
552 
553 			2: 4 LTFs
554 
555 			3: 6 LTFs
556 
557 			4: 8 LTFs
558 
559 
560 
561 			<legal all>
562 */
563 #define HE_SIG_A_MU_DL_INFO_1_NUM_LTF_SYMBOLS_OFFSET                 0x00000004
564 #define HE_SIG_A_MU_DL_INFO_1_NUM_LTF_SYMBOLS_LSB                    8
565 #define HE_SIG_A_MU_DL_INFO_1_NUM_LTF_SYMBOLS_MASK                   0x00000700
566 
567 /* Description		HE_SIG_A_MU_DL_INFO_1_LDPC_EXTRA_SYMBOL
568 
569 			If LDPC,
570 
571 			  0: LDPC extra symbol not present
572 
573 			  1: LDPC extra symbol present
574 
575 			Else
576 
577 			  Set to 1
578 
579 			<legal all>
580 */
581 #define HE_SIG_A_MU_DL_INFO_1_LDPC_EXTRA_SYMBOL_OFFSET               0x00000004
582 #define HE_SIG_A_MU_DL_INFO_1_LDPC_EXTRA_SYMBOL_LSB                  11
583 #define HE_SIG_A_MU_DL_INFO_1_LDPC_EXTRA_SYMBOL_MASK                 0x00000800
584 
585 /* Description		HE_SIG_A_MU_DL_INFO_1_STBC
586 
587 			Indicates whether STBC is applied
588 
589 			0: No STBC
590 
591 			1: STBC
592 
593 			<legal all>
594 */
595 #define HE_SIG_A_MU_DL_INFO_1_STBC_OFFSET                            0x00000004
596 #define HE_SIG_A_MU_DL_INFO_1_STBC_LSB                               12
597 #define HE_SIG_A_MU_DL_INFO_1_STBC_MASK                              0x00001000
598 
599 /* Description		HE_SIG_A_MU_DL_INFO_1_PACKET_EXTENSION_A_FACTOR
600 
601 			the packet extension duration of the trigger-based PPDU
602 			response with these two bits indicating the a-factor
603 
604 
605 
606 			<enum 0 a_factor_4>
607 
608 			<enum 1 a_factor_1>
609 
610 			<enum 2 a_factor_2>
611 
612 			<enum 3 a_factor_3>
613 
614 
615 
616 			<legal all>
617 */
618 #define HE_SIG_A_MU_DL_INFO_1_PACKET_EXTENSION_A_FACTOR_OFFSET       0x00000004
619 #define HE_SIG_A_MU_DL_INFO_1_PACKET_EXTENSION_A_FACTOR_LSB          13
620 #define HE_SIG_A_MU_DL_INFO_1_PACKET_EXTENSION_A_FACTOR_MASK         0x00006000
621 
622 /* Description		HE_SIG_A_MU_DL_INFO_1_PACKET_EXTENSION_PE_DISAMBIGUITY
623 
624 			the packet extension duration of the trigger-based PPDU
625 			response with this bit indicating the PE-Disambiguity
626 
627 			<legal all>
628 */
629 #define HE_SIG_A_MU_DL_INFO_1_PACKET_EXTENSION_PE_DISAMBIGUITY_OFFSET 0x00000004
630 #define HE_SIG_A_MU_DL_INFO_1_PACKET_EXTENSION_PE_DISAMBIGUITY_LSB   15
631 #define HE_SIG_A_MU_DL_INFO_1_PACKET_EXTENSION_PE_DISAMBIGUITY_MASK  0x00008000
632 
633 /* Description		HE_SIG_A_MU_DL_INFO_1_CRC
634 
635 			CRC for HE-SIG-A contents.
636 
637 			<legal all>
638 */
639 #define HE_SIG_A_MU_DL_INFO_1_CRC_OFFSET                             0x00000004
640 #define HE_SIG_A_MU_DL_INFO_1_CRC_LSB                                16
641 #define HE_SIG_A_MU_DL_INFO_1_CRC_MASK                               0x000f0000
642 
643 /* Description		HE_SIG_A_MU_DL_INFO_1_TAIL
644 
645 			<legal 0>
646 */
647 #define HE_SIG_A_MU_DL_INFO_1_TAIL_OFFSET                            0x00000004
648 #define HE_SIG_A_MU_DL_INFO_1_TAIL_LSB                               20
649 #define HE_SIG_A_MU_DL_INFO_1_TAIL_MASK                              0x03f00000
650 
651 /* Description		HE_SIG_A_MU_DL_INFO_1_RESERVED_1B
652 
653 			<legal 0>
654 */
655 #define HE_SIG_A_MU_DL_INFO_1_RESERVED_1B_OFFSET                     0x00000004
656 #define HE_SIG_A_MU_DL_INFO_1_RESERVED_1B_LSB                        26
657 #define HE_SIG_A_MU_DL_INFO_1_RESERVED_1B_MASK                       0xfc000000
658 
659 
660 #endif // _HE_SIG_A_MU_DL_INFO_H_
661