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 // $ATH_LICENSE_HW_HDR_C$ 20 // 21 // DO NOT EDIT! This file is automatically generated 22 // These definitions are tied to a particular hardware layout 23 24 25 #ifndef _HE_SIG_A_MU_DL_INFO_H_ 26 #define _HE_SIG_A_MU_DL_INFO_H_ 27 #if !defined(__ASSEMBLER__) 28 #endif 29 30 31 // ################ START SUMMARY ################# 32 // 33 // Dword Fields 34 // 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] 35 // 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] 36 // 37 // ################ END SUMMARY ################# 38 39 #define NUM_OF_DWORDS_HE_SIG_A_MU_DL_INFO 2 40 41 struct he_sig_a_mu_dl_info { 42 uint32_t dl_ul_flag : 1, //[0] 43 mcs_of_sig_b : 3, //[3:1] 44 dcm_of_sig_b : 1, //[4] 45 bss_color_id : 6, //[10:5] 46 spatial_reuse : 4, //[14:11] 47 transmit_bw : 3, //[17:15] 48 num_sig_b_symbols : 4, //[21:18] 49 comp_mode_sig_b : 1, //[22] 50 cp_ltf_size : 2, //[24:23] 51 doppler_indication : 1, //[25] 52 reserved_0a : 6; //[31:26] 53 uint32_t txop_duration : 7, //[6:0] 54 reserved_1a : 1, //[7] 55 num_ltf_symbols : 3, //[10:8] 56 ldpc_extra_symbol : 1, //[11] 57 stbc : 1, //[12] 58 packet_extension_a_factor : 2, //[14:13] 59 packet_extension_pe_disambiguity: 1, //[15] 60 crc : 4, //[19:16] 61 tail : 6, //[25:20] 62 reserved_1b : 6; //[31:26] 63 }; 64 65 /* 66 67 dl_ul_flag 68 69 Differentiates between DL and UL transmission 70 71 72 73 <enum 0 DL_UL_FLAG_IS_DL_OR_TDLS> 74 75 <enum 1 DL_UL_FLAG_IS_UL> 76 77 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 139 140 <enum 3 HE_SIG_A_MU_DL_BW160> 160 MHz or 80+80 MHz 141 142 143 144 NOTE: Other e-nums might be added for channel bonding 145 146 147 148 On RX side, Field Used by MAC HW 149 150 <legal 0-3> 151 152 num_sig_b_symbols 153 154 Number of symbols 155 156 157 158 For OFDMA, the actual number of symbols is 1 larger then 159 indicated in this field. 160 161 162 163 For MU-MIMO this is equal to the number of users - 1: 164 the following encoding is used: 165 166 1 => 2 users 167 168 2=> 3 users 169 170 Etc. 171 172 173 174 <legal all> 175 176 comp_mode_sig_b 177 178 Indicates the compression mode of HE-SIG-B 179 180 181 182 0: Regular [uncomp mode] 183 184 1: compressed mode (full-BW MU-MIMO only) 185 186 <legal all> 187 188 cp_ltf_size 189 190 Indicates the CP and HE-LTF type 191 192 193 194 <enum 0 OneX_LTF_0_8CP> 1xLTF + 0.8 us CP 195 196 <enum 1 TwoX_LTF_0_8CP> 2x LTF + 0.8 µs CP 197 198 <enum 2 TwoX_LTF_1_6CP> 2x LTF + 1.6 µs CP 199 200 <enum 3 FourX_LTF_3_2CP> 4x LTF + 3.2 µs CP 201 202 203 204 NOTE: for MU no proprietary modes (for now) 205 206 207 208 <legal all> 209 210 doppler_indication 211 212 0: No Doppler support 213 214 1: Doppler support 215 216 <legal all> 217 218 reserved_0a 219 220 <legal 0> 221 222 txop_duration 223 224 Indicates the remaining time in the current TXOP 225 226 227 228 Field Used by MAC HW 229 230 <legal all> 231 232 reserved_1a 233 234 Note: spec indicates this shall be set to 1 235 236 <legal 1> 237 238 num_ltf_symbols 239 240 Indicates the number of HE-LTF symbols 241 242 243 244 0: 1 symbol 245 246 1: 2 symbols 247 248 Etc. 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 OneX_LTF_0_8CP> 1xLTF + 0.8 us CP 478 479 <enum 1 TwoX_LTF_0_8CP> 2x LTF + 0.8 µs CP 480 481 <enum 2 TwoX_LTF_1_6CP> 2x LTF + 1.6 µs CP 482 483 <enum 3 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 symbol 548 549 1: 2 symbols 550 551 Etc. 552 553 <legal all> 554 */ 555 #define HE_SIG_A_MU_DL_INFO_1_NUM_LTF_SYMBOLS_OFFSET 0x00000004 556 #define HE_SIG_A_MU_DL_INFO_1_NUM_LTF_SYMBOLS_LSB 8 557 #define HE_SIG_A_MU_DL_INFO_1_NUM_LTF_SYMBOLS_MASK 0x00000700 558 559 /* Description HE_SIG_A_MU_DL_INFO_1_LDPC_EXTRA_SYMBOL 560 561 If LDPC, 562 563 0: LDPC extra symbol not present 564 565 1: LDPC extra symbol present 566 567 Else 568 569 Set to 1 570 571 <legal all> 572 */ 573 #define HE_SIG_A_MU_DL_INFO_1_LDPC_EXTRA_SYMBOL_OFFSET 0x00000004 574 #define HE_SIG_A_MU_DL_INFO_1_LDPC_EXTRA_SYMBOL_LSB 11 575 #define HE_SIG_A_MU_DL_INFO_1_LDPC_EXTRA_SYMBOL_MASK 0x00000800 576 577 /* Description HE_SIG_A_MU_DL_INFO_1_STBC 578 579 Indicates whether STBC is applied 580 581 0: No STBC 582 583 1: STBC 584 585 <legal all> 586 */ 587 #define HE_SIG_A_MU_DL_INFO_1_STBC_OFFSET 0x00000004 588 #define HE_SIG_A_MU_DL_INFO_1_STBC_LSB 12 589 #define HE_SIG_A_MU_DL_INFO_1_STBC_MASK 0x00001000 590 591 /* Description HE_SIG_A_MU_DL_INFO_1_PACKET_EXTENSION_A_FACTOR 592 593 the packet extension duration of the trigger-based PPDU 594 response with these two bits indicating the a-factor 595 596 597 598 <enum 0 a_factor_4> 599 600 <enum 1 a_factor_1> 601 602 <enum 2 a_factor_2> 603 604 <enum 3 a_factor_3> 605 606 607 608 <legal all> 609 */ 610 #define HE_SIG_A_MU_DL_INFO_1_PACKET_EXTENSION_A_FACTOR_OFFSET 0x00000004 611 #define HE_SIG_A_MU_DL_INFO_1_PACKET_EXTENSION_A_FACTOR_LSB 13 612 #define HE_SIG_A_MU_DL_INFO_1_PACKET_EXTENSION_A_FACTOR_MASK 0x00006000 613 614 /* Description HE_SIG_A_MU_DL_INFO_1_PACKET_EXTENSION_PE_DISAMBIGUITY 615 616 the packet extension duration of the trigger-based PPDU 617 response with this bit indicating the PE-Disambiguity 618 619 <legal all> 620 */ 621 #define HE_SIG_A_MU_DL_INFO_1_PACKET_EXTENSION_PE_DISAMBIGUITY_OFFSET 0x00000004 622 #define HE_SIG_A_MU_DL_INFO_1_PACKET_EXTENSION_PE_DISAMBIGUITY_LSB 15 623 #define HE_SIG_A_MU_DL_INFO_1_PACKET_EXTENSION_PE_DISAMBIGUITY_MASK 0x00008000 624 625 /* Description HE_SIG_A_MU_DL_INFO_1_CRC 626 627 CRC for HE-SIG-A contents. 628 629 <legal all> 630 */ 631 #define HE_SIG_A_MU_DL_INFO_1_CRC_OFFSET 0x00000004 632 #define HE_SIG_A_MU_DL_INFO_1_CRC_LSB 16 633 #define HE_SIG_A_MU_DL_INFO_1_CRC_MASK 0x000f0000 634 635 /* Description HE_SIG_A_MU_DL_INFO_1_TAIL 636 637 <legal 0> 638 */ 639 #define HE_SIG_A_MU_DL_INFO_1_TAIL_OFFSET 0x00000004 640 #define HE_SIG_A_MU_DL_INFO_1_TAIL_LSB 20 641 #define HE_SIG_A_MU_DL_INFO_1_TAIL_MASK 0x03f00000 642 643 /* Description HE_SIG_A_MU_DL_INFO_1_RESERVED_1B 644 645 <legal 0> 646 */ 647 #define HE_SIG_A_MU_DL_INFO_1_RESERVED_1B_OFFSET 0x00000004 648 #define HE_SIG_A_MU_DL_INFO_1_RESERVED_1B_LSB 26 649 #define HE_SIG_A_MU_DL_INFO_1_RESERVED_1B_MASK 0xfc000000 650 651 652 #endif // _HE_SIG_A_MU_DL_INFO_H_ 653