1 /* 2 * Copyright (c) 2016-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