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