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