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