1 /* 2 * Copyright (c) 2016-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 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 <legal all> 187 188 doppler_indication 189 190 0: No Doppler support 191 192 1: Doppler support 193 194 <legal all> 195 196 reserved_0a 197 198 <legal 0> 199 200 txop_duration 201 202 Indicates the remaining time in the current TXOP 203 204 205 206 Field Used by MAC HW 207 208 <legal all> 209 210 reserved_1a 211 212 Note: spec indicates this shall be set to 1 213 214 <legal 1> 215 216 num_ltf_symbols 217 218 Indicates the number of HE-LTF symbols 219 220 221 222 0: 1 LTF 223 224 1: 2 LTFs 225 226 2: 4 LTFs 227 228 3: 6 LTFs 229 230 4: 8 LTFs 231 232 233 234 <legal all> 235 236 ldpc_extra_symbol 237 238 If LDPC, 239 240 0: LDPC extra symbol not present 241 242 1: LDPC extra symbol present 243 244 Else 245 246 Set to 1 247 248 <legal all> 249 250 stbc 251 252 Indicates whether STBC is applied 253 254 0: No STBC 255 256 1: STBC 257 258 <legal all> 259 260 packet_extension_a_factor 261 262 the packet extension duration of the trigger-based PPDU 263 response with these two bits indicating the a-factor 264 265 266 267 <enum 0 a_factor_4> 268 269 <enum 1 a_factor_1> 270 271 <enum 2 a_factor_2> 272 273 <enum 3 a_factor_3> 274 275 276 277 <legal all> 278 279 packet_extension_pe_disambiguity 280 281 the packet extension duration of the trigger-based PPDU 282 response with this bit indicating the PE-Disambiguity 283 284 <legal all> 285 286 crc 287 288 CRC for HE-SIG-A contents. 289 290 <legal all> 291 292 tail 293 294 <legal 0> 295 296 reserved_1b 297 298 <legal 0> 299 */ 300 301 302 /* Description HE_SIG_A_MU_DL_INFO_0_DL_UL_FLAG 303 304 Differentiates between DL and UL transmission 305 306 307 308 <enum 0 DL_UL_FLAG_IS_DL_OR_TDLS> 309 310 <enum 1 DL_UL_FLAG_IS_UL> 311 312 313 314 <legal all> 315 */ 316 #define HE_SIG_A_MU_DL_INFO_0_DL_UL_FLAG_OFFSET 0x00000000 317 #define HE_SIG_A_MU_DL_INFO_0_DL_UL_FLAG_LSB 0 318 #define HE_SIG_A_MU_DL_INFO_0_DL_UL_FLAG_MASK 0x00000001 319 320 /* Description HE_SIG_A_MU_DL_INFO_0_MCS_OF_SIG_B 321 322 Indicates the MCS of HE-SIG-B 323 324 <legal 0-5> 325 */ 326 #define HE_SIG_A_MU_DL_INFO_0_MCS_OF_SIG_B_OFFSET 0x00000000 327 #define HE_SIG_A_MU_DL_INFO_0_MCS_OF_SIG_B_LSB 1 328 #define HE_SIG_A_MU_DL_INFO_0_MCS_OF_SIG_B_MASK 0x0000000e 329 330 /* Description HE_SIG_A_MU_DL_INFO_0_DCM_OF_SIG_B 331 332 Indicates whether dual sub-carrier modulation is applied 333 to HE-SIG-B 334 335 336 337 0: No DCM for HE_SIG_B 338 339 1: DCM for HE_SIG_B 340 341 <legal all> 342 */ 343 #define HE_SIG_A_MU_DL_INFO_0_DCM_OF_SIG_B_OFFSET 0x00000000 344 #define HE_SIG_A_MU_DL_INFO_0_DCM_OF_SIG_B_LSB 4 345 #define HE_SIG_A_MU_DL_INFO_0_DCM_OF_SIG_B_MASK 0x00000010 346 347 /* Description HE_SIG_A_MU_DL_INFO_0_BSS_COLOR_ID 348 349 BSS color ID 350 351 352 353 Field Used by MAC HW 354 355 <legal all> 356 */ 357 #define HE_SIG_A_MU_DL_INFO_0_BSS_COLOR_ID_OFFSET 0x00000000 358 #define HE_SIG_A_MU_DL_INFO_0_BSS_COLOR_ID_LSB 5 359 #define HE_SIG_A_MU_DL_INFO_0_BSS_COLOR_ID_MASK 0x000007e0 360 361 /* Description HE_SIG_A_MU_DL_INFO_0_SPATIAL_REUSE 362 363 Spatial reuse 364 365 366 367 For 20MHz one SR field corresponding to entire 20MHz 368 (other 3 fields indicate identical values) 369 370 For 40MHz two SR fields for each 20MHz (other 2 fields 371 indicate identical values) 372 373 For 80MHz four SR fields for each 20MHz 374 375 For 160MHz four SR fields for each 40MHz 376 377 <legal all> 378 */ 379 #define HE_SIG_A_MU_DL_INFO_0_SPATIAL_REUSE_OFFSET 0x00000000 380 #define HE_SIG_A_MU_DL_INFO_0_SPATIAL_REUSE_LSB 11 381 #define HE_SIG_A_MU_DL_INFO_0_SPATIAL_REUSE_MASK 0x00007800 382 383 /* Description HE_SIG_A_MU_DL_INFO_0_TRANSMIT_BW 384 385 Bandwidth of the PPDU. 386 387 388 389 <enum 0 HE_SIG_A_MU_DL_BW20> 20 Mhz 390 391 <enum 1 HE_SIG_A_MU_DL_BW40> 40 Mhz 392 393 <enum 2 HE_SIG_A_MU_DL_BW80> 80 Mhz 394 395 <enum 3 HE_SIG_A_MU_DL_BW160> 160 MHz or 80+80 MHz 396 397 398 399 NOTE: Other e-nums might be added for channel bonding 400 401 402 403 On RX side, Field Used by MAC HW 404 405 <legal 0-3> 406 */ 407 #define HE_SIG_A_MU_DL_INFO_0_TRANSMIT_BW_OFFSET 0x00000000 408 #define HE_SIG_A_MU_DL_INFO_0_TRANSMIT_BW_LSB 15 409 #define HE_SIG_A_MU_DL_INFO_0_TRANSMIT_BW_MASK 0x00038000 410 411 /* Description HE_SIG_A_MU_DL_INFO_0_NUM_SIG_B_SYMBOLS 412 413 Number of symbols 414 415 416 417 For OFDMA, the actual number of symbols is 1 larger then 418 indicated in this field. 419 420 421 422 For MU-MIMO this is equal to the number of users - 1: 423 the following encoding is used: 424 425 1 => 2 users 426 427 2 => 3 users 428 429 Etc. 430 431 432 433 <legal all> 434 */ 435 #define HE_SIG_A_MU_DL_INFO_0_NUM_SIG_B_SYMBOLS_OFFSET 0x00000000 436 #define HE_SIG_A_MU_DL_INFO_0_NUM_SIG_B_SYMBOLS_LSB 18 437 #define HE_SIG_A_MU_DL_INFO_0_NUM_SIG_B_SYMBOLS_MASK 0x003c0000 438 439 /* Description HE_SIG_A_MU_DL_INFO_0_COMP_MODE_SIG_B 440 441 Indicates the compression mode of HE-SIG-B 442 443 444 445 0: Regular [uncomp mode] 446 447 1: compressed mode (full-BW MU-MIMO only) 448 449 <legal all> 450 */ 451 #define HE_SIG_A_MU_DL_INFO_0_COMP_MODE_SIG_B_OFFSET 0x00000000 452 #define HE_SIG_A_MU_DL_INFO_0_COMP_MODE_SIG_B_LSB 22 453 #define HE_SIG_A_MU_DL_INFO_0_COMP_MODE_SIG_B_MASK 0x00400000 454 455 /* Description HE_SIG_A_MU_DL_INFO_0_CP_LTF_SIZE 456 457 Indicates the CP and HE-LTF type 458 459 <legal all> 460 */ 461 #define HE_SIG_A_MU_DL_INFO_0_CP_LTF_SIZE_OFFSET 0x00000000 462 #define HE_SIG_A_MU_DL_INFO_0_CP_LTF_SIZE_LSB 23 463 #define HE_SIG_A_MU_DL_INFO_0_CP_LTF_SIZE_MASK 0x01800000 464 465 /* Description HE_SIG_A_MU_DL_INFO_0_DOPPLER_INDICATION 466 467 0: No Doppler support 468 469 1: Doppler support 470 471 <legal all> 472 */ 473 #define HE_SIG_A_MU_DL_INFO_0_DOPPLER_INDICATION_OFFSET 0x00000000 474 #define HE_SIG_A_MU_DL_INFO_0_DOPPLER_INDICATION_LSB 25 475 #define HE_SIG_A_MU_DL_INFO_0_DOPPLER_INDICATION_MASK 0x02000000 476 477 /* Description HE_SIG_A_MU_DL_INFO_0_RESERVED_0A 478 479 <legal 0> 480 */ 481 #define HE_SIG_A_MU_DL_INFO_0_RESERVED_0A_OFFSET 0x00000000 482 #define HE_SIG_A_MU_DL_INFO_0_RESERVED_0A_LSB 26 483 #define HE_SIG_A_MU_DL_INFO_0_RESERVED_0A_MASK 0xfc000000 484 485 /* Description HE_SIG_A_MU_DL_INFO_1_TXOP_DURATION 486 487 Indicates the remaining time in the current TXOP 488 489 490 491 Field Used by MAC HW 492 493 <legal all> 494 */ 495 #define HE_SIG_A_MU_DL_INFO_1_TXOP_DURATION_OFFSET 0x00000004 496 #define HE_SIG_A_MU_DL_INFO_1_TXOP_DURATION_LSB 0 497 #define HE_SIG_A_MU_DL_INFO_1_TXOP_DURATION_MASK 0x0000007f 498 499 /* Description HE_SIG_A_MU_DL_INFO_1_RESERVED_1A 500 501 Note: spec indicates this shall be set to 1 502 503 <legal 1> 504 */ 505 #define HE_SIG_A_MU_DL_INFO_1_RESERVED_1A_OFFSET 0x00000004 506 #define HE_SIG_A_MU_DL_INFO_1_RESERVED_1A_LSB 7 507 #define HE_SIG_A_MU_DL_INFO_1_RESERVED_1A_MASK 0x00000080 508 509 /* Description HE_SIG_A_MU_DL_INFO_1_NUM_LTF_SYMBOLS 510 511 Indicates the number of HE-LTF symbols 512 513 514 515 0: 1 LTF 516 517 1: 2 LTFs 518 519 2: 4 LTFs 520 521 3: 6 LTFs 522 523 4: 8 LTFs 524 525 526 527 <legal all> 528 */ 529 #define HE_SIG_A_MU_DL_INFO_1_NUM_LTF_SYMBOLS_OFFSET 0x00000004 530 #define HE_SIG_A_MU_DL_INFO_1_NUM_LTF_SYMBOLS_LSB 8 531 #define HE_SIG_A_MU_DL_INFO_1_NUM_LTF_SYMBOLS_MASK 0x00000700 532 533 /* Description HE_SIG_A_MU_DL_INFO_1_LDPC_EXTRA_SYMBOL 534 535 If LDPC, 536 537 0: LDPC extra symbol not present 538 539 1: LDPC extra symbol present 540 541 Else 542 543 Set to 1 544 545 <legal all> 546 */ 547 #define HE_SIG_A_MU_DL_INFO_1_LDPC_EXTRA_SYMBOL_OFFSET 0x00000004 548 #define HE_SIG_A_MU_DL_INFO_1_LDPC_EXTRA_SYMBOL_LSB 11 549 #define HE_SIG_A_MU_DL_INFO_1_LDPC_EXTRA_SYMBOL_MASK 0x00000800 550 551 /* Description HE_SIG_A_MU_DL_INFO_1_STBC 552 553 Indicates whether STBC is applied 554 555 0: No STBC 556 557 1: STBC 558 559 <legal all> 560 */ 561 #define HE_SIG_A_MU_DL_INFO_1_STBC_OFFSET 0x00000004 562 #define HE_SIG_A_MU_DL_INFO_1_STBC_LSB 12 563 #define HE_SIG_A_MU_DL_INFO_1_STBC_MASK 0x00001000 564 565 /* Description HE_SIG_A_MU_DL_INFO_1_PACKET_EXTENSION_A_FACTOR 566 567 the packet extension duration of the trigger-based PPDU 568 response with these two bits indicating the a-factor 569 570 571 572 <enum 0 a_factor_4> 573 574 <enum 1 a_factor_1> 575 576 <enum 2 a_factor_2> 577 578 <enum 3 a_factor_3> 579 580 581 582 <legal all> 583 */ 584 #define HE_SIG_A_MU_DL_INFO_1_PACKET_EXTENSION_A_FACTOR_OFFSET 0x00000004 585 #define HE_SIG_A_MU_DL_INFO_1_PACKET_EXTENSION_A_FACTOR_LSB 13 586 #define HE_SIG_A_MU_DL_INFO_1_PACKET_EXTENSION_A_FACTOR_MASK 0x00006000 587 588 /* Description HE_SIG_A_MU_DL_INFO_1_PACKET_EXTENSION_PE_DISAMBIGUITY 589 590 the packet extension duration of the trigger-based PPDU 591 response with this bit indicating the PE-Disambiguity 592 593 <legal all> 594 */ 595 #define HE_SIG_A_MU_DL_INFO_1_PACKET_EXTENSION_PE_DISAMBIGUITY_OFFSET 0x00000004 596 #define HE_SIG_A_MU_DL_INFO_1_PACKET_EXTENSION_PE_DISAMBIGUITY_LSB 15 597 #define HE_SIG_A_MU_DL_INFO_1_PACKET_EXTENSION_PE_DISAMBIGUITY_MASK 0x00008000 598 599 /* Description HE_SIG_A_MU_DL_INFO_1_CRC 600 601 CRC for HE-SIG-A contents. 602 603 <legal all> 604 */ 605 #define HE_SIG_A_MU_DL_INFO_1_CRC_OFFSET 0x00000004 606 #define HE_SIG_A_MU_DL_INFO_1_CRC_LSB 16 607 #define HE_SIG_A_MU_DL_INFO_1_CRC_MASK 0x000f0000 608 609 /* Description HE_SIG_A_MU_DL_INFO_1_TAIL 610 611 <legal 0> 612 */ 613 #define HE_SIG_A_MU_DL_INFO_1_TAIL_OFFSET 0x00000004 614 #define HE_SIG_A_MU_DL_INFO_1_TAIL_LSB 20 615 #define HE_SIG_A_MU_DL_INFO_1_TAIL_MASK 0x03f00000 616 617 /* Description HE_SIG_A_MU_DL_INFO_1_RESERVED_1B 618 619 <legal 0> 620 */ 621 #define HE_SIG_A_MU_DL_INFO_1_RESERVED_1B_OFFSET 0x00000004 622 #define HE_SIG_A_MU_DL_INFO_1_RESERVED_1B_LSB 26 623 #define HE_SIG_A_MU_DL_INFO_1_RESERVED_1B_MASK 0xfc000000 624 625 626 #endif // _HE_SIG_A_MU_DL_INFO_H_ 627