1*5113495bSYour Name /* 2*5113495bSYour Name * Copyright (c) 2016-2018 The Linux Foundation. All rights reserved. 3*5113495bSYour Name * 4*5113495bSYour Name * Permission to use, copy, modify, and/or distribute this software for 5*5113495bSYour Name * any purpose with or without fee is hereby granted, provided that the 6*5113495bSYour Name * above copyright notice and this permission notice appear in all 7*5113495bSYour Name * copies. 8*5113495bSYour Name * 9*5113495bSYour Name * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL 10*5113495bSYour Name * WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED 11*5113495bSYour Name * WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE 12*5113495bSYour Name * AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL 13*5113495bSYour Name * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR 14*5113495bSYour Name * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER 15*5113495bSYour Name * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR 16*5113495bSYour Name * PERFORMANCE OF THIS SOFTWARE. 17*5113495bSYour Name */ 18*5113495bSYour Name 19*5113495bSYour Name #ifndef _VHT_SIG_A_INFO_H_ 20*5113495bSYour Name #define _VHT_SIG_A_INFO_H_ 21*5113495bSYour Name #if !defined(__ASSEMBLER__) 22*5113495bSYour Name #endif 23*5113495bSYour Name 24*5113495bSYour Name 25*5113495bSYour Name // ################ START SUMMARY ################# 26*5113495bSYour Name // 27*5113495bSYour Name // Dword Fields 28*5113495bSYour Name // 0 bandwidth[1:0], vhta_reserved_0[2], stbc[3], group_id[9:4], n_sts[21:10], txop_ps_not_allowed[22], vhta_reserved_0b[23], reserved_0[31:24] 29*5113495bSYour Name // 1 gi_setting[1:0], su_mu_coding[2], ldpc_extra_symbol[3], mcs[7:4], beamformed[8], vhta_reserved_1[9], crc[17:10], tail[23:18], reserved_1[31:24] 30*5113495bSYour Name // 31*5113495bSYour Name // ################ END SUMMARY ################# 32*5113495bSYour Name 33*5113495bSYour Name #define NUM_OF_DWORDS_VHT_SIG_A_INFO 2 34*5113495bSYour Name 35*5113495bSYour Name struct vht_sig_a_info { 36*5113495bSYour Name uint32_t bandwidth : 2, //[1:0] 37*5113495bSYour Name vhta_reserved_0 : 1, //[2] 38*5113495bSYour Name stbc : 1, //[3] 39*5113495bSYour Name group_id : 6, //[9:4] 40*5113495bSYour Name n_sts : 12, //[21:10] 41*5113495bSYour Name txop_ps_not_allowed : 1, //[22] 42*5113495bSYour Name vhta_reserved_0b : 1, //[23] 43*5113495bSYour Name reserved_0 : 8; //[31:24] 44*5113495bSYour Name uint32_t gi_setting : 2, //[1:0] 45*5113495bSYour Name su_mu_coding : 1, //[2] 46*5113495bSYour Name ldpc_extra_symbol : 1, //[3] 47*5113495bSYour Name mcs : 4, //[7:4] 48*5113495bSYour Name beamformed : 1, //[8] 49*5113495bSYour Name vhta_reserved_1 : 1, //[9] 50*5113495bSYour Name crc : 8, //[17:10] 51*5113495bSYour Name tail : 6, //[23:18] 52*5113495bSYour Name reserved_1 : 8; //[31:24] 53*5113495bSYour Name }; 54*5113495bSYour Name 55*5113495bSYour Name /* 56*5113495bSYour Name 57*5113495bSYour Name bandwidth 58*5113495bSYour Name 59*5113495bSYour Name Packet bandwidth 60*5113495bSYour Name 61*5113495bSYour Name 62*5113495bSYour Name 63*5113495bSYour Name <enum 0 20_MHZ_11AC> 64*5113495bSYour Name 65*5113495bSYour Name <enum 1 40_MHZ_11AC> 66*5113495bSYour Name 67*5113495bSYour Name <enum 2 80_MHZ_11AC> 68*5113495bSYour Name 69*5113495bSYour Name <enum 3 160_MHZ_11AC> 70*5113495bSYour Name 71*5113495bSYour Name 72*5113495bSYour Name 73*5113495bSYour Name <legal 0-3> 74*5113495bSYour Name 75*5113495bSYour Name vhta_reserved_0 76*5113495bSYour Name 77*5113495bSYour Name Reserved. Set to 1 by MAC, PHY should ignore 78*5113495bSYour Name 79*5113495bSYour Name <legal 1> 80*5113495bSYour Name 81*5113495bSYour Name stbc 82*5113495bSYour Name 83*5113495bSYour Name Space time block coding: 84*5113495bSYour Name 85*5113495bSYour Name <enum 0 stbc_disabled> Indicates STBC is disabled 86*5113495bSYour Name 87*5113495bSYour Name <enum 1 stbc_enabled> Indicates STBC is enabled on 88*5113495bSYour Name all streams 89*5113495bSYour Name 90*5113495bSYour Name <legal 0-1> 91*5113495bSYour Name 92*5113495bSYour Name group_id 93*5113495bSYour Name 94*5113495bSYour Name In a SU VHT PPDU, if the PPDU carries MPDU(s) addressed 95*5113495bSYour Name to an AP or to a mesh STA, the Group ID field is set to 0, 96*5113495bSYour Name otherwise it is set to 63. In an NDP PPDU the Group ID is 97*5113495bSYour Name set according to IEEE 802.11ac_D1.0 Section 9.30.6 98*5113495bSYour Name (Transmission of a VHT NDP). For a MU-MIMO PPDU the Group ID 99*5113495bSYour Name is set as in 802.11ac_D1.0 Section 22.3.11.3 (Group ID). 100*5113495bSYour Name <legal all> 101*5113495bSYour Name 102*5113495bSYour Name n_sts 103*5113495bSYour Name 104*5113495bSYour Name For MU: 105*5113495bSYour Name 106*5113495bSYour Name 3 bits/user with maximum of 4 users (user u uses 107*5113495bSYour Name 108*5113495bSYour Name vht_sig_a[0][10+3u] - vht_sig_a[0][12+3u]), u = 0, 1, 2, 109*5113495bSYour Name 3) 110*5113495bSYour Name 111*5113495bSYour Name Set to 0 for 0 space time streams 112*5113495bSYour Name 113*5113495bSYour Name Set to 1 for 1 space time stream 114*5113495bSYour Name 115*5113495bSYour Name Set to 2 for 2 space time streams 116*5113495bSYour Name 117*5113495bSYour Name Set to 3 for 3 space time streams 118*5113495bSYour Name 119*5113495bSYour Name Set to 4 for 4 space time streams (not supported in Wifi 120*5113495bSYour Name 3.0) 121*5113495bSYour Name 122*5113495bSYour Name Values 5-7 are reserved 123*5113495bSYour Name 124*5113495bSYour Name In this field, references to user u should be 125*5113495bSYour Name interpreted as MU user u. As described in the previous 126*5113495bSYour Name chapter in this document (see chapter on User number), the 127*5113495bSYour Name MU user value for a given client is defined for each MU 128*5113495bSYour Name group that the client participates in. The MU user number is 129*5113495bSYour Name not related to the internal user number that is used within 130*5113495bSYour Name the BFer. 131*5113495bSYour Name 132*5113495bSYour Name 133*5113495bSYour Name 134*5113495bSYour Name 135*5113495bSYour Name 136*5113495bSYour Name For SU: 137*5113495bSYour Name 138*5113495bSYour Name vht_sig_a[0][12:10] 139*5113495bSYour Name 140*5113495bSYour Name Set to 0 for 1 space time stream 141*5113495bSYour Name 142*5113495bSYour Name Set to 1 for 2 space time streams 143*5113495bSYour Name 144*5113495bSYour Name Set to 2 for 3 space time streams 145*5113495bSYour Name 146*5113495bSYour Name Set to 3 for 4 space time streams 147*5113495bSYour Name 148*5113495bSYour Name Set to 4 for 5 space time streams 149*5113495bSYour Name 150*5113495bSYour Name Set to 5 for 6 space time streams 151*5113495bSYour Name 152*5113495bSYour Name Set to 6 for 7 space time streams 153*5113495bSYour Name 154*5113495bSYour Name Set to 7 for 8 space time streams 155*5113495bSYour Name 156*5113495bSYour Name 157*5113495bSYour Name 158*5113495bSYour Name vht_sig_a[0][21:13] 159*5113495bSYour Name 160*5113495bSYour Name Partial AID: 161*5113495bSYour Name 162*5113495bSYour Name Set to the value of the TXVECTOR parameter PARTIAL_AID. 163*5113495bSYour Name Partial AID provides an abbreviated indication of the 164*5113495bSYour Name intended recipient(s) of the frame (see IEEE802.11ac_D1.0 165*5113495bSYour Name Section 9.17a (Partial AID in VHT PPDUs)). 166*5113495bSYour Name 167*5113495bSYour Name <legal all> 168*5113495bSYour Name 169*5113495bSYour Name txop_ps_not_allowed 170*5113495bSYour Name 171*5113495bSYour Name E_num 0 txop_ps_allowed Not supported: If set to by 172*5113495bSYour Name VHT AP if it allows non-AP VHT STAs in TXOP power save mode 173*5113495bSYour Name to enter Doze state during a TXOP 174*5113495bSYour Name 175*5113495bSYour Name <enum 1 no_txop_ps_allowed> Otherwise 176*5113495bSYour Name 177*5113495bSYour Name <legal 1> 178*5113495bSYour Name 179*5113495bSYour Name vhta_reserved_0b 180*5113495bSYour Name 181*5113495bSYour Name Reserved: Should be set to 1 by the MAC and ignored by 182*5113495bSYour Name the PHY <legal 1> 183*5113495bSYour Name 184*5113495bSYour Name reserved_0 185*5113495bSYour Name 186*5113495bSYour Name This field is not part of HT-SIG: 187*5113495bSYour Name 188*5113495bSYour Name Reserved: Should be set to 0 by the MAC and ignored by 189*5113495bSYour Name the PHY <legal 0> 190*5113495bSYour Name 191*5113495bSYour Name gi_setting 192*5113495bSYour Name 193*5113495bSYour Name <enum 0 normal_gi> Indicates short guard interval 194*5113495bSYour Name is not used in the data field 195*5113495bSYour Name 196*5113495bSYour Name <enum 1 short_gi> Indicates short guard interval is 197*5113495bSYour Name used in the data field 198*5113495bSYour Name 199*5113495bSYour Name <enum 3 short_gi_ambiguity> Indicates short guard 200*5113495bSYour Name interval is used in the data field and NSYM mod 10 = 9 201*5113495bSYour Name 202*5113495bSYour Name NSYM is defined in IEEE802.11ac_D1.0 Section 22.4.3 203*5113495bSYour Name (TXTIME and PSDU_LENGTH calculation). 204*5113495bSYour Name 205*5113495bSYour Name <legal 0,1,3> 206*5113495bSYour Name 207*5113495bSYour Name su_mu_coding 208*5113495bSYour Name 209*5113495bSYour Name For an SU PPDU, B2 is set to 0 for BCC, 1 for LDPC For 210*5113495bSYour Name an MU PPDU, if the MU[0] NSTS field is nonzero(#6773), then 211*5113495bSYour Name B2 indicates the coding used for user 0; set to 0 for BCC 212*5113495bSYour Name and 1 for LDPC. If the MU[0] NSTS field is 0, then this 213*5113495bSYour Name field is reserved and set to 1 214*5113495bSYour Name 215*5113495bSYour Name ldpc_extra_symbol 216*5113495bSYour Name 217*5113495bSYour Name Set to 1 if the LDPC PPDU encoding process (if an SU 218*5113495bSYour Name PPDU), or at least one LDPC user's PPDU encoding process (if 219*5113495bSYour Name an MU PPDU), results in an extra OFDM symbol (or symbols) as 220*5113495bSYour Name described in 22.3.10.5.4 (LDPC coding) and 22.3.10.5.5 221*5113495bSYour Name (Encoding process for MU PPDUs). Set to 0 otherwise. 222*5113495bSYour Name 223*5113495bSYour Name mcs 224*5113495bSYour Name 225*5113495bSYour Name For SU: 226*5113495bSYour Name 227*5113495bSYour Name Set to 0 for BPSK 1/2 228*5113495bSYour Name 229*5113495bSYour Name Set to 1 for QPSK 1/2 230*5113495bSYour Name 231*5113495bSYour Name Set to 2 for QPSK 3/4 232*5113495bSYour Name 233*5113495bSYour Name Set to 3 for 16-QAM 1/2 234*5113495bSYour Name 235*5113495bSYour Name Set to 4 for 16-QAM 3/4 236*5113495bSYour Name 237*5113495bSYour Name Set to 5 for 64-QAM 2/3 238*5113495bSYour Name 239*5113495bSYour Name Set to 6 for 64-QAM 3/4 240*5113495bSYour Name 241*5113495bSYour Name Set to 7 for 64-QAM 5/6 242*5113495bSYour Name 243*5113495bSYour Name Set to 8 for 256-QAM 3/4 244*5113495bSYour Name 245*5113495bSYour Name Set to 9 for 256-QAM 5/6 246*5113495bSYour Name 247*5113495bSYour Name For MU: 248*5113495bSYour Name 249*5113495bSYour Name If NSTS for user 1 is non-zero, then vht_sig_a[1][4] 250*5113495bSYour Name indicates coding for user 1: set to 0 for BCC, 1 for LDPC. 251*5113495bSYour Name 252*5113495bSYour Name If NSTS for user 1 is set to 0, then vht_sig_a[1][4] is 253*5113495bSYour Name reserved and set to 1. 254*5113495bSYour Name 255*5113495bSYour Name If NSTS for user 2 is non-zero, then vht_sig_a[1][5] 256*5113495bSYour Name indicates coding for user 2: set to 0 for BCC, 1 for LDPC. 257*5113495bSYour Name 258*5113495bSYour Name If NSTS for user 2 is set to 0, then vht_sig_a[1][5] is 259*5113495bSYour Name reserved and set to 1. 260*5113495bSYour Name 261*5113495bSYour Name If NSTS for user 3 is non-zero, then vht_sig_a[1][6] 262*5113495bSYour Name indicates coding for user 3: set to 0 for BCC, 1 for LDPC. 263*5113495bSYour Name 264*5113495bSYour Name If NSTS for user 3 is set to 0, then vht_sig_a[1][6] is 265*5113495bSYour Name reserved and set to 1. 266*5113495bSYour Name 267*5113495bSYour Name vht_sig_a[1][7] is reserved and set to 1 268*5113495bSYour Name 269*5113495bSYour Name <legal 0-15> 270*5113495bSYour Name 271*5113495bSYour Name beamformed 272*5113495bSYour Name 273*5113495bSYour Name For SU: 274*5113495bSYour Name 275*5113495bSYour Name Set to 1 if a Beamforming steering matrix is applied to 276*5113495bSYour Name the waveform in an SU transmission as described in 277*5113495bSYour Name IEEE802.11ac_D1.0 Section 19.3.11.11.2 (Spatial mapping), 278*5113495bSYour Name set to 0 otherwise. 279*5113495bSYour Name 280*5113495bSYour Name For MU: 281*5113495bSYour Name 282*5113495bSYour Name Reserved and set to 1 283*5113495bSYour Name 284*5113495bSYour Name <legal 0-1> 285*5113495bSYour Name 286*5113495bSYour Name vhta_reserved_1 287*5113495bSYour Name 288*5113495bSYour Name Reserved and set to 1. <legal 1> 289*5113495bSYour Name 290*5113495bSYour Name crc 291*5113495bSYour Name 292*5113495bSYour Name CRC calculated as in IEEE802.11ac_D1.0 Section 293*5113495bSYour Name 19.3.9.4.4 (CRC calculation for HTSIG) with C7 in 294*5113495bSYour Name vht_sig_a[1][10], etc. <legal all> 295*5113495bSYour Name 296*5113495bSYour Name tail 297*5113495bSYour Name 298*5113495bSYour Name Used to terminate the trellis of the convolutional 299*5113495bSYour Name decoder. Set to 0. <legal 0> 300*5113495bSYour Name 301*5113495bSYour Name reserved_1 302*5113495bSYour Name 303*5113495bSYour Name This field is not part of HT-SIG: 304*5113495bSYour Name 305*5113495bSYour Name Reserved: Should be set to 0 by the MAC and ignored by 306*5113495bSYour Name the PHY <legal 0> 307*5113495bSYour Name */ 308*5113495bSYour Name 309*5113495bSYour Name 310*5113495bSYour Name /* Description VHT_SIG_A_INFO_0_BANDWIDTH 311*5113495bSYour Name 312*5113495bSYour Name Packet bandwidth 313*5113495bSYour Name 314*5113495bSYour Name 315*5113495bSYour Name 316*5113495bSYour Name <enum 0 20_MHZ_11AC> 317*5113495bSYour Name 318*5113495bSYour Name <enum 1 40_MHZ_11AC> 319*5113495bSYour Name 320*5113495bSYour Name <enum 2 80_MHZ_11AC> 321*5113495bSYour Name 322*5113495bSYour Name <enum 3 160_MHZ_11AC> 323*5113495bSYour Name 324*5113495bSYour Name 325*5113495bSYour Name 326*5113495bSYour Name <legal 0-3> 327*5113495bSYour Name */ 328*5113495bSYour Name #define VHT_SIG_A_INFO_0_BANDWIDTH_OFFSET 0x00000000 329*5113495bSYour Name #define VHT_SIG_A_INFO_0_BANDWIDTH_LSB 0 330*5113495bSYour Name #define VHT_SIG_A_INFO_0_BANDWIDTH_MASK 0x00000003 331*5113495bSYour Name 332*5113495bSYour Name /* Description VHT_SIG_A_INFO_0_VHTA_RESERVED_0 333*5113495bSYour Name 334*5113495bSYour Name Reserved. Set to 1 by MAC, PHY should ignore 335*5113495bSYour Name 336*5113495bSYour Name <legal 1> 337*5113495bSYour Name */ 338*5113495bSYour Name #define VHT_SIG_A_INFO_0_VHTA_RESERVED_0_OFFSET 0x00000000 339*5113495bSYour Name #define VHT_SIG_A_INFO_0_VHTA_RESERVED_0_LSB 2 340*5113495bSYour Name #define VHT_SIG_A_INFO_0_VHTA_RESERVED_0_MASK 0x00000004 341*5113495bSYour Name 342*5113495bSYour Name /* Description VHT_SIG_A_INFO_0_STBC 343*5113495bSYour Name 344*5113495bSYour Name Space time block coding: 345*5113495bSYour Name 346*5113495bSYour Name <enum 0 stbc_disabled> Indicates STBC is disabled 347*5113495bSYour Name 348*5113495bSYour Name <enum 1 stbc_enabled> Indicates STBC is enabled on 349*5113495bSYour Name all streams 350*5113495bSYour Name 351*5113495bSYour Name <legal 0-1> 352*5113495bSYour Name */ 353*5113495bSYour Name #define VHT_SIG_A_INFO_0_STBC_OFFSET 0x00000000 354*5113495bSYour Name #define VHT_SIG_A_INFO_0_STBC_LSB 3 355*5113495bSYour Name #define VHT_SIG_A_INFO_0_STBC_MASK 0x00000008 356*5113495bSYour Name 357*5113495bSYour Name /* Description VHT_SIG_A_INFO_0_GROUP_ID 358*5113495bSYour Name 359*5113495bSYour Name In a SU VHT PPDU, if the PPDU carries MPDU(s) addressed 360*5113495bSYour Name to an AP or to a mesh STA, the Group ID field is set to 0, 361*5113495bSYour Name otherwise it is set to 63. In an NDP PPDU the Group ID is 362*5113495bSYour Name set according to IEEE 802.11ac_D1.0 Section 9.30.6 363*5113495bSYour Name (Transmission of a VHT NDP). For a MU-MIMO PPDU the Group ID 364*5113495bSYour Name is set as in 802.11ac_D1.0 Section 22.3.11.3 (Group ID). 365*5113495bSYour Name <legal all> 366*5113495bSYour Name */ 367*5113495bSYour Name #define VHT_SIG_A_INFO_0_GROUP_ID_OFFSET 0x00000000 368*5113495bSYour Name #define VHT_SIG_A_INFO_0_GROUP_ID_LSB 4 369*5113495bSYour Name #define VHT_SIG_A_INFO_0_GROUP_ID_MASK 0x000003f0 370*5113495bSYour Name 371*5113495bSYour Name /* Description VHT_SIG_A_INFO_0_N_STS 372*5113495bSYour Name 373*5113495bSYour Name For MU: 374*5113495bSYour Name 375*5113495bSYour Name 3 bits/user with maximum of 4 users (user u uses 376*5113495bSYour Name 377*5113495bSYour Name vht_sig_a[0][10+3u] - vht_sig_a[0][12+3u]), u = 0, 1, 2, 378*5113495bSYour Name 3) 379*5113495bSYour Name 380*5113495bSYour Name Set to 0 for 0 space time streams 381*5113495bSYour Name 382*5113495bSYour Name Set to 1 for 1 space time stream 383*5113495bSYour Name 384*5113495bSYour Name Set to 2 for 2 space time streams 385*5113495bSYour Name 386*5113495bSYour Name Set to 3 for 3 space time streams 387*5113495bSYour Name 388*5113495bSYour Name Set to 4 for 4 space time streams (not supported in Wifi 389*5113495bSYour Name 3.0) 390*5113495bSYour Name 391*5113495bSYour Name Values 5-7 are reserved 392*5113495bSYour Name 393*5113495bSYour Name In this field, references to user u should be 394*5113495bSYour Name interpreted as MU user u. As described in the previous 395*5113495bSYour Name chapter in this document (see chapter on User number), the 396*5113495bSYour Name MU user value for a given client is defined for each MU 397*5113495bSYour Name group that the client participates in. The MU user number is 398*5113495bSYour Name not related to the internal user number that is used within 399*5113495bSYour Name the BFer. 400*5113495bSYour Name 401*5113495bSYour Name 402*5113495bSYour Name 403*5113495bSYour Name 404*5113495bSYour Name 405*5113495bSYour Name For SU: 406*5113495bSYour Name 407*5113495bSYour Name vht_sig_a[0][12:10] 408*5113495bSYour Name 409*5113495bSYour Name Set to 0 for 1 space time stream 410*5113495bSYour Name 411*5113495bSYour Name Set to 1 for 2 space time streams 412*5113495bSYour Name 413*5113495bSYour Name Set to 2 for 3 space time streams 414*5113495bSYour Name 415*5113495bSYour Name Set to 3 for 4 space time streams 416*5113495bSYour Name 417*5113495bSYour Name Set to 4 for 5 space time streams 418*5113495bSYour Name 419*5113495bSYour Name Set to 5 for 6 space time streams 420*5113495bSYour Name 421*5113495bSYour Name Set to 6 for 7 space time streams 422*5113495bSYour Name 423*5113495bSYour Name Set to 7 for 8 space time streams 424*5113495bSYour Name 425*5113495bSYour Name 426*5113495bSYour Name 427*5113495bSYour Name vht_sig_a[0][21:13] 428*5113495bSYour Name 429*5113495bSYour Name Partial AID: 430*5113495bSYour Name 431*5113495bSYour Name Set to the value of the TXVECTOR parameter PARTIAL_AID. 432*5113495bSYour Name Partial AID provides an abbreviated indication of the 433*5113495bSYour Name intended recipient(s) of the frame (see IEEE802.11ac_D1.0 434*5113495bSYour Name Section 9.17a (Partial AID in VHT PPDUs)). 435*5113495bSYour Name 436*5113495bSYour Name <legal all> 437*5113495bSYour Name */ 438*5113495bSYour Name #define VHT_SIG_A_INFO_0_N_STS_OFFSET 0x00000000 439*5113495bSYour Name #define VHT_SIG_A_INFO_0_N_STS_LSB 10 440*5113495bSYour Name #define VHT_SIG_A_INFO_0_N_STS_MASK 0x003ffc00 441*5113495bSYour Name 442*5113495bSYour Name /* Description VHT_SIG_A_INFO_0_TXOP_PS_NOT_ALLOWED 443*5113495bSYour Name 444*5113495bSYour Name E_num 0 txop_ps_allowed Not supported: If set to by 445*5113495bSYour Name VHT AP if it allows non-AP VHT STAs in TXOP power save mode 446*5113495bSYour Name to enter Doze state during a TXOP 447*5113495bSYour Name 448*5113495bSYour Name <enum 1 no_txop_ps_allowed> Otherwise 449*5113495bSYour Name 450*5113495bSYour Name <legal 1> 451*5113495bSYour Name */ 452*5113495bSYour Name #define VHT_SIG_A_INFO_0_TXOP_PS_NOT_ALLOWED_OFFSET 0x00000000 453*5113495bSYour Name #define VHT_SIG_A_INFO_0_TXOP_PS_NOT_ALLOWED_LSB 22 454*5113495bSYour Name #define VHT_SIG_A_INFO_0_TXOP_PS_NOT_ALLOWED_MASK 0x00400000 455*5113495bSYour Name 456*5113495bSYour Name /* Description VHT_SIG_A_INFO_0_VHTA_RESERVED_0B 457*5113495bSYour Name 458*5113495bSYour Name Reserved: Should be set to 1 by the MAC and ignored by 459*5113495bSYour Name the PHY <legal 1> 460*5113495bSYour Name */ 461*5113495bSYour Name #define VHT_SIG_A_INFO_0_VHTA_RESERVED_0B_OFFSET 0x00000000 462*5113495bSYour Name #define VHT_SIG_A_INFO_0_VHTA_RESERVED_0B_LSB 23 463*5113495bSYour Name #define VHT_SIG_A_INFO_0_VHTA_RESERVED_0B_MASK 0x00800000 464*5113495bSYour Name 465*5113495bSYour Name /* Description VHT_SIG_A_INFO_0_RESERVED_0 466*5113495bSYour Name 467*5113495bSYour Name This field is not part of HT-SIG: 468*5113495bSYour Name 469*5113495bSYour Name Reserved: Should be set to 0 by the MAC and ignored by 470*5113495bSYour Name the PHY <legal 0> 471*5113495bSYour Name */ 472*5113495bSYour Name #define VHT_SIG_A_INFO_0_RESERVED_0_OFFSET 0x00000000 473*5113495bSYour Name #define VHT_SIG_A_INFO_0_RESERVED_0_LSB 24 474*5113495bSYour Name #define VHT_SIG_A_INFO_0_RESERVED_0_MASK 0xff000000 475*5113495bSYour Name 476*5113495bSYour Name /* Description VHT_SIG_A_INFO_1_GI_SETTING 477*5113495bSYour Name 478*5113495bSYour Name <enum 0 normal_gi> Indicates short guard interval 479*5113495bSYour Name is not used in the data field 480*5113495bSYour Name 481*5113495bSYour Name <enum 1 short_gi> Indicates short guard interval is 482*5113495bSYour Name used in the data field 483*5113495bSYour Name 484*5113495bSYour Name <enum 3 short_gi_ambiguity> Indicates short guard 485*5113495bSYour Name interval is used in the data field and NSYM mod 10 = 9 486*5113495bSYour Name 487*5113495bSYour Name NSYM is defined in IEEE802.11ac_D1.0 Section 22.4.3 488*5113495bSYour Name (TXTIME and PSDU_LENGTH calculation). 489*5113495bSYour Name 490*5113495bSYour Name <legal 0,1,3> 491*5113495bSYour Name */ 492*5113495bSYour Name #define VHT_SIG_A_INFO_1_GI_SETTING_OFFSET 0x00000004 493*5113495bSYour Name #define VHT_SIG_A_INFO_1_GI_SETTING_LSB 0 494*5113495bSYour Name #define VHT_SIG_A_INFO_1_GI_SETTING_MASK 0x00000003 495*5113495bSYour Name 496*5113495bSYour Name /* Description VHT_SIG_A_INFO_1_SU_MU_CODING 497*5113495bSYour Name 498*5113495bSYour Name For an SU PPDU, B2 is set to 0 for BCC, 1 for LDPC For 499*5113495bSYour Name an MU PPDU, if the MU[0] NSTS field is nonzero(#6773), then 500*5113495bSYour Name B2 indicates the coding used for user 0; set to 0 for BCC 501*5113495bSYour Name and 1 for LDPC. If the MU[0] NSTS field is 0, then this 502*5113495bSYour Name field is reserved and set to 1 503*5113495bSYour Name */ 504*5113495bSYour Name #define VHT_SIG_A_INFO_1_SU_MU_CODING_OFFSET 0x00000004 505*5113495bSYour Name #define VHT_SIG_A_INFO_1_SU_MU_CODING_LSB 2 506*5113495bSYour Name #define VHT_SIG_A_INFO_1_SU_MU_CODING_MASK 0x00000004 507*5113495bSYour Name 508*5113495bSYour Name /* Description VHT_SIG_A_INFO_1_LDPC_EXTRA_SYMBOL 509*5113495bSYour Name 510*5113495bSYour Name Set to 1 if the LDPC PPDU encoding process (if an SU 511*5113495bSYour Name PPDU), or at least one LDPC user's PPDU encoding process (if 512*5113495bSYour Name an MU PPDU), results in an extra OFDM symbol (or symbols) as 513*5113495bSYour Name described in 22.3.10.5.4 (LDPC coding) and 22.3.10.5.5 514*5113495bSYour Name (Encoding process for MU PPDUs). Set to 0 otherwise. 515*5113495bSYour Name */ 516*5113495bSYour Name #define VHT_SIG_A_INFO_1_LDPC_EXTRA_SYMBOL_OFFSET 0x00000004 517*5113495bSYour Name #define VHT_SIG_A_INFO_1_LDPC_EXTRA_SYMBOL_LSB 3 518*5113495bSYour Name #define VHT_SIG_A_INFO_1_LDPC_EXTRA_SYMBOL_MASK 0x00000008 519*5113495bSYour Name 520*5113495bSYour Name /* Description VHT_SIG_A_INFO_1_MCS 521*5113495bSYour Name 522*5113495bSYour Name For SU: 523*5113495bSYour Name 524*5113495bSYour Name Set to 0 for BPSK 1/2 525*5113495bSYour Name 526*5113495bSYour Name Set to 1 for QPSK 1/2 527*5113495bSYour Name 528*5113495bSYour Name Set to 2 for QPSK 3/4 529*5113495bSYour Name 530*5113495bSYour Name Set to 3 for 16-QAM 1/2 531*5113495bSYour Name 532*5113495bSYour Name Set to 4 for 16-QAM 3/4 533*5113495bSYour Name 534*5113495bSYour Name Set to 5 for 64-QAM 2/3 535*5113495bSYour Name 536*5113495bSYour Name Set to 6 for 64-QAM 3/4 537*5113495bSYour Name 538*5113495bSYour Name Set to 7 for 64-QAM 5/6 539*5113495bSYour Name 540*5113495bSYour Name Set to 8 for 256-QAM 3/4 541*5113495bSYour Name 542*5113495bSYour Name Set to 9 for 256-QAM 5/6 543*5113495bSYour Name 544*5113495bSYour Name For MU: 545*5113495bSYour Name 546*5113495bSYour Name If NSTS for user 1 is non-zero, then vht_sig_a[1][4] 547*5113495bSYour Name indicates coding for user 1: set to 0 for BCC, 1 for LDPC. 548*5113495bSYour Name 549*5113495bSYour Name If NSTS for user 1 is set to 0, then vht_sig_a[1][4] is 550*5113495bSYour Name reserved and set to 1. 551*5113495bSYour Name 552*5113495bSYour Name If NSTS for user 2 is non-zero, then vht_sig_a[1][5] 553*5113495bSYour Name indicates coding for user 2: set to 0 for BCC, 1 for LDPC. 554*5113495bSYour Name 555*5113495bSYour Name If NSTS for user 2 is set to 0, then vht_sig_a[1][5] is 556*5113495bSYour Name reserved and set to 1. 557*5113495bSYour Name 558*5113495bSYour Name If NSTS for user 3 is non-zero, then vht_sig_a[1][6] 559*5113495bSYour Name indicates coding for user 3: set to 0 for BCC, 1 for LDPC. 560*5113495bSYour Name 561*5113495bSYour Name If NSTS for user 3 is set to 0, then vht_sig_a[1][6] is 562*5113495bSYour Name reserved and set to 1. 563*5113495bSYour Name 564*5113495bSYour Name vht_sig_a[1][7] is reserved and set to 1 565*5113495bSYour Name 566*5113495bSYour Name <legal 0-15> 567*5113495bSYour Name */ 568*5113495bSYour Name #define VHT_SIG_A_INFO_1_MCS_OFFSET 0x00000004 569*5113495bSYour Name #define VHT_SIG_A_INFO_1_MCS_LSB 4 570*5113495bSYour Name #define VHT_SIG_A_INFO_1_MCS_MASK 0x000000f0 571*5113495bSYour Name 572*5113495bSYour Name /* Description VHT_SIG_A_INFO_1_BEAMFORMED 573*5113495bSYour Name 574*5113495bSYour Name For SU: 575*5113495bSYour Name 576*5113495bSYour Name Set to 1 if a Beamforming steering matrix is applied to 577*5113495bSYour Name the waveform in an SU transmission as described in 578*5113495bSYour Name IEEE802.11ac_D1.0 Section 19.3.11.11.2 (Spatial mapping), 579*5113495bSYour Name set to 0 otherwise. 580*5113495bSYour Name 581*5113495bSYour Name For MU: 582*5113495bSYour Name 583*5113495bSYour Name Reserved and set to 1 584*5113495bSYour Name 585*5113495bSYour Name <legal 0-1> 586*5113495bSYour Name */ 587*5113495bSYour Name #define VHT_SIG_A_INFO_1_BEAMFORMED_OFFSET 0x00000004 588*5113495bSYour Name #define VHT_SIG_A_INFO_1_BEAMFORMED_LSB 8 589*5113495bSYour Name #define VHT_SIG_A_INFO_1_BEAMFORMED_MASK 0x00000100 590*5113495bSYour Name 591*5113495bSYour Name /* Description VHT_SIG_A_INFO_1_VHTA_RESERVED_1 592*5113495bSYour Name 593*5113495bSYour Name Reserved and set to 1. <legal 1> 594*5113495bSYour Name */ 595*5113495bSYour Name #define VHT_SIG_A_INFO_1_VHTA_RESERVED_1_OFFSET 0x00000004 596*5113495bSYour Name #define VHT_SIG_A_INFO_1_VHTA_RESERVED_1_LSB 9 597*5113495bSYour Name #define VHT_SIG_A_INFO_1_VHTA_RESERVED_1_MASK 0x00000200 598*5113495bSYour Name 599*5113495bSYour Name /* Description VHT_SIG_A_INFO_1_CRC 600*5113495bSYour Name 601*5113495bSYour Name CRC calculated as in IEEE802.11ac_D1.0 Section 602*5113495bSYour Name 19.3.9.4.4 (CRC calculation for HTSIG) with C7 in 603*5113495bSYour Name vht_sig_a[1][10], etc. <legal all> 604*5113495bSYour Name */ 605*5113495bSYour Name #define VHT_SIG_A_INFO_1_CRC_OFFSET 0x00000004 606*5113495bSYour Name #define VHT_SIG_A_INFO_1_CRC_LSB 10 607*5113495bSYour Name #define VHT_SIG_A_INFO_1_CRC_MASK 0x0003fc00 608*5113495bSYour Name 609*5113495bSYour Name /* Description VHT_SIG_A_INFO_1_TAIL 610*5113495bSYour Name 611*5113495bSYour Name Used to terminate the trellis of the convolutional 612*5113495bSYour Name decoder. Set to 0. <legal 0> 613*5113495bSYour Name */ 614*5113495bSYour Name #define VHT_SIG_A_INFO_1_TAIL_OFFSET 0x00000004 615*5113495bSYour Name #define VHT_SIG_A_INFO_1_TAIL_LSB 18 616*5113495bSYour Name #define VHT_SIG_A_INFO_1_TAIL_MASK 0x00fc0000 617*5113495bSYour Name 618*5113495bSYour Name /* Description VHT_SIG_A_INFO_1_RESERVED_1 619*5113495bSYour Name 620*5113495bSYour Name This field is not part of HT-SIG: 621*5113495bSYour Name 622*5113495bSYour Name Reserved: Should be set to 0 by the MAC and ignored by 623*5113495bSYour Name the PHY <legal 0> 624*5113495bSYour Name */ 625*5113495bSYour Name #define VHT_SIG_A_INFO_1_RESERVED_1_OFFSET 0x00000004 626*5113495bSYour Name #define VHT_SIG_A_INFO_1_RESERVED_1_LSB 24 627*5113495bSYour Name #define VHT_SIG_A_INFO_1_RESERVED_1_MASK 0xff000000 628*5113495bSYour Name 629*5113495bSYour Name 630*5113495bSYour Name #endif // _VHT_SIG_A_INFO_H_ 631