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