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