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