1*5113495bSYour Name 2*5113495bSYour Name /* Copyright (c) 2022, Qualcomm Innovation Center, Inc. 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 18*5113495bSYour Name 19*5113495bSYour Name 20*5113495bSYour Name 21*5113495bSYour Name 22*5113495bSYour Name 23*5113495bSYour Name 24*5113495bSYour Name 25*5113495bSYour Name 26*5113495bSYour Name #ifndef _MACTX_USER_DESC_PER_USER_H_ 27*5113495bSYour Name #define _MACTX_USER_DESC_PER_USER_H_ 28*5113495bSYour Name #if !defined(__ASSEMBLER__) 29*5113495bSYour Name #endif 30*5113495bSYour Name 31*5113495bSYour Name #define NUM_OF_DWORDS_MACTX_USER_DESC_PER_USER 4 32*5113495bSYour Name 33*5113495bSYour Name #define NUM_OF_QWORDS_MACTX_USER_DESC_PER_USER 2 34*5113495bSYour Name 35*5113495bSYour Name 36*5113495bSYour Name struct mactx_user_desc_per_user { 37*5113495bSYour Name #ifndef WIFI_BIT_ORDER_BIG_ENDIAN 38*5113495bSYour Name uint32_t psdu_length : 24, // [23:0] 39*5113495bSYour Name reserved_0a : 8; // [31:24] 40*5113495bSYour Name uint32_t ru_start_index : 8, // [7:0] 41*5113495bSYour Name ru_size : 4, // [11:8] 42*5113495bSYour Name reserved_1b : 4, // [15:12] 43*5113495bSYour Name ofdma_mu_mimo_enabled : 1, // [16:16] 44*5113495bSYour Name nss : 3, // [19:17] 45*5113495bSYour Name stream_offset : 3, // [22:20] 46*5113495bSYour Name reserved_1c : 1, // [23:23] 47*5113495bSYour Name mcs : 4, // [27:24] 48*5113495bSYour Name dcm : 1, // [28:28] 49*5113495bSYour Name reserved_1d : 3; // [31:29] 50*5113495bSYour Name uint32_t fec_type : 1, // [0:0] 51*5113495bSYour Name reserved_2a : 7, // [7:1] 52*5113495bSYour Name user_bf_type : 2, // [9:8] 53*5113495bSYour Name reserved_2b : 6, // [15:10] 54*5113495bSYour Name drop_user_cbf : 1, // [16:16] 55*5113495bSYour Name reserved_2c : 7, // [23:17] 56*5113495bSYour Name ldpc_extra_symbol : 1, // [24:24] 57*5113495bSYour Name force_extra_symbol : 1, // [25:25] 58*5113495bSYour Name reserved_2d : 6; // [31:26] 59*5113495bSYour Name uint32_t sw_peer_id : 16, // [15:0] 60*5113495bSYour Name per_user_subband_mask : 16; // [31:16] 61*5113495bSYour Name #else 62*5113495bSYour Name uint32_t reserved_0a : 8, // [31:24] 63*5113495bSYour Name psdu_length : 24; // [23:0] 64*5113495bSYour Name uint32_t reserved_1d : 3, // [31:29] 65*5113495bSYour Name dcm : 1, // [28:28] 66*5113495bSYour Name mcs : 4, // [27:24] 67*5113495bSYour Name reserved_1c : 1, // [23:23] 68*5113495bSYour Name stream_offset : 3, // [22:20] 69*5113495bSYour Name nss : 3, // [19:17] 70*5113495bSYour Name ofdma_mu_mimo_enabled : 1, // [16:16] 71*5113495bSYour Name reserved_1b : 4, // [15:12] 72*5113495bSYour Name ru_size : 4, // [11:8] 73*5113495bSYour Name ru_start_index : 8; // [7:0] 74*5113495bSYour Name uint32_t reserved_2d : 6, // [31:26] 75*5113495bSYour Name force_extra_symbol : 1, // [25:25] 76*5113495bSYour Name ldpc_extra_symbol : 1, // [24:24] 77*5113495bSYour Name reserved_2c : 7, // [23:17] 78*5113495bSYour Name drop_user_cbf : 1, // [16:16] 79*5113495bSYour Name reserved_2b : 6, // [15:10] 80*5113495bSYour Name user_bf_type : 2, // [9:8] 81*5113495bSYour Name reserved_2a : 7, // [7:1] 82*5113495bSYour Name fec_type : 1; // [0:0] 83*5113495bSYour Name uint32_t per_user_subband_mask : 16, // [31:16] 84*5113495bSYour Name sw_peer_id : 16; // [15:0] 85*5113495bSYour Name #endif 86*5113495bSYour Name }; 87*5113495bSYour Name 88*5113495bSYour Name 89*5113495bSYour Name /* Description PSDU_LENGTH 90*5113495bSYour Name 91*5113495bSYour Name PSDU Length for the User in octets 92*5113495bSYour Name NOTE: This also holds good for .11ba packets 93*5113495bSYour Name <legal all> 94*5113495bSYour Name */ 95*5113495bSYour Name 96*5113495bSYour Name #define MACTX_USER_DESC_PER_USER_PSDU_LENGTH_OFFSET 0x0000000000000000 97*5113495bSYour Name #define MACTX_USER_DESC_PER_USER_PSDU_LENGTH_LSB 0 98*5113495bSYour Name #define MACTX_USER_DESC_PER_USER_PSDU_LENGTH_MSB 23 99*5113495bSYour Name #define MACTX_USER_DESC_PER_USER_PSDU_LENGTH_MASK 0x0000000000ffffff 100*5113495bSYour Name 101*5113495bSYour Name 102*5113495bSYour Name /* Description RESERVED_0A 103*5113495bSYour Name 104*5113495bSYour Name <legal 0> 105*5113495bSYour Name */ 106*5113495bSYour Name 107*5113495bSYour Name #define MACTX_USER_DESC_PER_USER_RESERVED_0A_OFFSET 0x0000000000000000 108*5113495bSYour Name #define MACTX_USER_DESC_PER_USER_RESERVED_0A_LSB 24 109*5113495bSYour Name #define MACTX_USER_DESC_PER_USER_RESERVED_0A_MSB 31 110*5113495bSYour Name #define MACTX_USER_DESC_PER_USER_RESERVED_0A_MASK 0x00000000ff000000 111*5113495bSYour Name 112*5113495bSYour Name 113*5113495bSYour Name /* Description RU_START_INDEX 114*5113495bSYour Name 115*5113495bSYour Name Field only valid in case of .11ax or .11be OFDMA transmission 116*5113495bSYour Name (=> from MACTX_PHY_DESC, field MU_type == OFDMA) 117*5113495bSYour Name OR 118*5113495bSYour Name 11ax SU "Narrow band" transmission. 119*5113495bSYour Name 120*5113495bSYour Name RU Number to which User is assigned 121*5113495bSYour Name RU numbering is over the entire BW, starting from 0 and 122*5113495bSYour Name for the different users in increasing frequency order and 123*5113495bSYour Name not primary-secondary order. 124*5113495bSYour Name 125*5113495bSYour Name For DL OFDMA transmissions, PDG shall fill this as instructed 126*5113495bSYour Name by SW. 127*5113495bSYour Name 128*5113495bSYour Name For UL OFDMA transmissions, the RU number within 80 MHz 129*5113495bSYour Name is available from the RU allocation information in the trigger. 130*5113495bSYour Name For 160 MHz UL OFDMA transmissions, the trigger RU allocation 131*5113495bSYour Name only mentions primary/secondary 80 MHz. PDG needs to convert 132*5113495bSYour Name this to lower/higher 80 MHz. 133*5113495bSYour Name 134*5113495bSYour Name If in 'PCU_PPDU_SETUP_START'/'MACTX_PRE_PHY_DESC,' CCA_Subband_channel_bonding_mask 135*5113495bSYour Name bit 0 is mapped to any of bits 4 - 7 of Freq_Subband_channel_bonding_mask, 136*5113495bSYour Name then the primary 80 MHz is the higher 80 MHz and the secondary 137*5113495bSYour Name 80 MHz is the lower one. 138*5113495bSYour Name Otherwise (if CCA_Subband_channel_bonding_mask bit 0 is 139*5113495bSYour Name mapped to any of bits 0 - 3 of Freq_Subband_channel_bonding_mask, 140*5113495bSYour Name then the primary 80 MHz is the lower 80 MHz and the secondary 141*5113495bSYour Name 80 MHz is the higher one. 142*5113495bSYour Name 143*5113495bSYour Name <legal 0-147> 144*5113495bSYour Name */ 145*5113495bSYour Name 146*5113495bSYour Name #define MACTX_USER_DESC_PER_USER_RU_START_INDEX_OFFSET 0x0000000000000000 147*5113495bSYour Name #define MACTX_USER_DESC_PER_USER_RU_START_INDEX_LSB 32 148*5113495bSYour Name #define MACTX_USER_DESC_PER_USER_RU_START_INDEX_MSB 39 149*5113495bSYour Name #define MACTX_USER_DESC_PER_USER_RU_START_INDEX_MASK 0x000000ff00000000 150*5113495bSYour Name 151*5113495bSYour Name 152*5113495bSYour Name /* Description RU_SIZE 153*5113495bSYour Name 154*5113495bSYour Name The size of the RU for this user 155*5113495bSYour Name 156*5113495bSYour Name In case of HE extended range transmission, e-num 2 (10MHz) 157*5113495bSYour Name or e-num 7 (20MHz) are used. 158*5113495bSYour Name 159*5113495bSYour Name In case of trig transmission or OFDMA single user or MU-MIMO 160*5113495bSYour Name single user transmission, if the RU allocated to the user 161*5113495bSYour Name is the full BW (with respect to AP_bw) then the e-num 7 162*5113495bSYour Name is used. 163*5113495bSYour Name For all other cases, e-nums corresponding to the RU size 164*5113495bSYour Name allocated to the user is used. 165*5113495bSYour Name 166*5113495bSYour Name In case of EHT duplicate transmissions, this field indicates 167*5113495bSYour Name the width of the actual content before duplication, e.g. 168*5113495bSYour Name a 40 MHz PPDU duplicated to 160 MHz will have the bandwidth 169*5113495bSYour Name fields indicating 160 MHz and this field set to e-num 4 170*5113495bSYour Name (RU_484). 171*5113495bSYour Name 172*5113495bSYour Name <enum 0 RU_26> 173*5113495bSYour Name <enum 1 RU_52> 174*5113495bSYour Name <enum 2 RU_106> 175*5113495bSYour Name <enum 3 RU_242> 176*5113495bSYour Name <enum 4 RU_484> 177*5113495bSYour Name <enum 5 RU_996> 178*5113495bSYour Name <enum 6 RU_1992> 179*5113495bSYour Name <enum 7 RU_FULLBW> Set when the RU occupies the full packet 180*5113495bSYour Name bandwidth 181*5113495bSYour Name <enum 8 RU_FULLBW_240> Set when the RU occupies the full 182*5113495bSYour Name packet bandwidth 183*5113495bSYour Name <enum 9 RU_FULLBW_320> Set when the RU occupies the full 184*5113495bSYour Name packet bandwidth 185*5113495bSYour Name <enum 10 RU_MULTI_LARGE> HW will use per-user sub-band-mask 186*5113495bSYour Name to infer the actual RU-size for Multi-large-RU/SU-Puncturing 187*5113495bSYour Name 188*5113495bSYour Name <enum 11 RU_78> multi small RU 189*5113495bSYour Name <enum 12 RU_132> multi small RU<legal 0-12> 190*5113495bSYour Name */ 191*5113495bSYour Name 192*5113495bSYour Name #define MACTX_USER_DESC_PER_USER_RU_SIZE_OFFSET 0x0000000000000000 193*5113495bSYour Name #define MACTX_USER_DESC_PER_USER_RU_SIZE_LSB 40 194*5113495bSYour Name #define MACTX_USER_DESC_PER_USER_RU_SIZE_MSB 43 195*5113495bSYour Name #define MACTX_USER_DESC_PER_USER_RU_SIZE_MASK 0x00000f0000000000 196*5113495bSYour Name 197*5113495bSYour Name 198*5113495bSYour Name /* Description RESERVED_1B 199*5113495bSYour Name 200*5113495bSYour Name <legal 0> 201*5113495bSYour Name */ 202*5113495bSYour Name 203*5113495bSYour Name #define MACTX_USER_DESC_PER_USER_RESERVED_1B_OFFSET 0x0000000000000000 204*5113495bSYour Name #define MACTX_USER_DESC_PER_USER_RESERVED_1B_LSB 44 205*5113495bSYour Name #define MACTX_USER_DESC_PER_USER_RESERVED_1B_MSB 47 206*5113495bSYour Name #define MACTX_USER_DESC_PER_USER_RESERVED_1B_MASK 0x0000f00000000000 207*5113495bSYour Name 208*5113495bSYour Name 209*5113495bSYour Name /* Description OFDMA_MU_MIMO_ENABLED 210*5113495bSYour Name 211*5113495bSYour Name Field only valid in case of .11ax or .11be OFDMA transmission 212*5113495bSYour Name (=> from MACTX_PHY_DESC, field MU_type == OFDMA) 213*5113495bSYour Name 214*5113495bSYour Name When set, for this user there is MIMO transmission within 215*5113495bSYour Name the RU 216*5113495bSYour Name <legal all> 217*5113495bSYour Name */ 218*5113495bSYour Name 219*5113495bSYour Name #define MACTX_USER_DESC_PER_USER_OFDMA_MU_MIMO_ENABLED_OFFSET 0x0000000000000000 220*5113495bSYour Name #define MACTX_USER_DESC_PER_USER_OFDMA_MU_MIMO_ENABLED_LSB 48 221*5113495bSYour Name #define MACTX_USER_DESC_PER_USER_OFDMA_MU_MIMO_ENABLED_MSB 48 222*5113495bSYour Name #define MACTX_USER_DESC_PER_USER_OFDMA_MU_MIMO_ENABLED_MASK 0x0001000000000000 223*5113495bSYour Name 224*5113495bSYour Name 225*5113495bSYour Name /* Description NSS 226*5113495bSYour Name 227*5113495bSYour Name Number of Spatial Streams occupied by the User 228*5113495bSYour Name 229*5113495bSYour Name <enum 0 1_spatial_stream>Single spatial stream 230*5113495bSYour Name <enum 1 2_spatial_streams>2 spatial streams 231*5113495bSYour Name <enum 2 3_spatial_streams>3 spatial streams 232*5113495bSYour Name <enum 3 4_spatial_streams>4 spatial streams 233*5113495bSYour Name <enum 4 5_spatial_streams>5 spatial streams 234*5113495bSYour Name <enum 5 6_spatial_streams>6 spatial streams 235*5113495bSYour Name <enum 6 7_spatial_streams>7 spatial streams 236*5113495bSYour Name <enum 7 8_spatial_streams>8 spatial streams 237*5113495bSYour Name */ 238*5113495bSYour Name 239*5113495bSYour Name #define MACTX_USER_DESC_PER_USER_NSS_OFFSET 0x0000000000000000 240*5113495bSYour Name #define MACTX_USER_DESC_PER_USER_NSS_LSB 49 241*5113495bSYour Name #define MACTX_USER_DESC_PER_USER_NSS_MSB 51 242*5113495bSYour Name #define MACTX_USER_DESC_PER_USER_NSS_MASK 0x000e000000000000 243*5113495bSYour Name 244*5113495bSYour Name 245*5113495bSYour Name /* Description STREAM_OFFSET 246*5113495bSYour Name 247*5113495bSYour Name Field only valid in case of MU-MIMO transmission (=> from 248*5113495bSYour Name MACTX_PHY_DESC, field MU_type == MU-MIMO) 249*5113495bSYour Name OR 250*5113495bSYour Name when field Ofdma_mu_mimo_enabled is set 251*5113495bSYour Name 252*5113495bSYour Name Stream Offset from which the User occupies the Streams 253*5113495bSYour Name 254*5113495bSYour Name Note MAC: 255*5113495bSYour Name directly from pdg_fes_setup, based on BW 256*5113495bSYour Name <legal all> 257*5113495bSYour Name */ 258*5113495bSYour Name 259*5113495bSYour Name #define MACTX_USER_DESC_PER_USER_STREAM_OFFSET_OFFSET 0x0000000000000000 260*5113495bSYour Name #define MACTX_USER_DESC_PER_USER_STREAM_OFFSET_LSB 52 261*5113495bSYour Name #define MACTX_USER_DESC_PER_USER_STREAM_OFFSET_MSB 54 262*5113495bSYour Name #define MACTX_USER_DESC_PER_USER_STREAM_OFFSET_MASK 0x0070000000000000 263*5113495bSYour Name 264*5113495bSYour Name 265*5113495bSYour Name /* Description RESERVED_1C 266*5113495bSYour Name 267*5113495bSYour Name <legal 0> 268*5113495bSYour Name */ 269*5113495bSYour Name 270*5113495bSYour Name #define MACTX_USER_DESC_PER_USER_RESERVED_1C_OFFSET 0x0000000000000000 271*5113495bSYour Name #define MACTX_USER_DESC_PER_USER_RESERVED_1C_LSB 55 272*5113495bSYour Name #define MACTX_USER_DESC_PER_USER_RESERVED_1C_MSB 55 273*5113495bSYour Name #define MACTX_USER_DESC_PER_USER_RESERVED_1C_MASK 0x0080000000000000 274*5113495bSYour Name 275*5113495bSYour Name 276*5113495bSYour Name /* Description MCS 277*5113495bSYour Name 278*5113495bSYour Name Modulation Coding Scheme for the User 279*5113495bSYour Name 280*5113495bSYour Name The MCS to be used for the upcoming transmission. It must 281*5113495bSYour Name match the 4-bit MCS value that is sent in the appropriate 282*5113495bSYour Name signal field for the given packet type, except that EHT 283*5113495bSYour Name BPSK with DCM and/or duplicate is encoded as '0.' 284*5113495bSYour Name 285*5113495bSYour Name 286*5113495bSYour Name For details, refer to the SIG field, related to this pkt_type. 287*5113495bSYour Name 288*5113495bSYour Name (Note that this is slightly different then what is on the 289*5113495bSYour Name MAC side defined as "MCS_TYPE". For this reason, the 'legal 290*5113495bSYour Name values' here are NOT defined as MCS_TYPE) 291*5113495bSYour Name <legal all> 292*5113495bSYour Name */ 293*5113495bSYour Name 294*5113495bSYour Name #define MACTX_USER_DESC_PER_USER_MCS_OFFSET 0x0000000000000000 295*5113495bSYour Name #define MACTX_USER_DESC_PER_USER_MCS_LSB 56 296*5113495bSYour Name #define MACTX_USER_DESC_PER_USER_MCS_MSB 59 297*5113495bSYour Name #define MACTX_USER_DESC_PER_USER_MCS_MASK 0x0f00000000000000 298*5113495bSYour Name 299*5113495bSYour Name 300*5113495bSYour Name /* Description DCM 301*5113495bSYour Name 302*5113495bSYour Name Field only valid in case of 11ax transmission 303*5113495bSYour Name 304*5113495bSYour Name Indicates whether dual sub-carrier modulation is applied 305*5113495bSYour Name 306*5113495bSYour Name 0: No DCM 307*5113495bSYour Name 1:DCM 308*5113495bSYour Name <legal all> 309*5113495bSYour Name */ 310*5113495bSYour Name 311*5113495bSYour Name #define MACTX_USER_DESC_PER_USER_DCM_OFFSET 0x0000000000000000 312*5113495bSYour Name #define MACTX_USER_DESC_PER_USER_DCM_LSB 60 313*5113495bSYour Name #define MACTX_USER_DESC_PER_USER_DCM_MSB 60 314*5113495bSYour Name #define MACTX_USER_DESC_PER_USER_DCM_MASK 0x1000000000000000 315*5113495bSYour Name 316*5113495bSYour Name 317*5113495bSYour Name /* Description RESERVED_1D 318*5113495bSYour Name 319*5113495bSYour Name <legal 0> 320*5113495bSYour Name */ 321*5113495bSYour Name 322*5113495bSYour Name #define MACTX_USER_DESC_PER_USER_RESERVED_1D_OFFSET 0x0000000000000000 323*5113495bSYour Name #define MACTX_USER_DESC_PER_USER_RESERVED_1D_LSB 61 324*5113495bSYour Name #define MACTX_USER_DESC_PER_USER_RESERVED_1D_MSB 63 325*5113495bSYour Name #define MACTX_USER_DESC_PER_USER_RESERVED_1D_MASK 0xe000000000000000 326*5113495bSYour Name 327*5113495bSYour Name 328*5113495bSYour Name /* Description FEC_TYPE 329*5113495bSYour Name 330*5113495bSYour Name 0: BCC 331*5113495bSYour Name 1: LDPC 332*5113495bSYour Name <legal all> 333*5113495bSYour Name */ 334*5113495bSYour Name 335*5113495bSYour Name #define MACTX_USER_DESC_PER_USER_FEC_TYPE_OFFSET 0x0000000000000008 336*5113495bSYour Name #define MACTX_USER_DESC_PER_USER_FEC_TYPE_LSB 0 337*5113495bSYour Name #define MACTX_USER_DESC_PER_USER_FEC_TYPE_MSB 0 338*5113495bSYour Name #define MACTX_USER_DESC_PER_USER_FEC_TYPE_MASK 0x0000000000000001 339*5113495bSYour Name 340*5113495bSYour Name 341*5113495bSYour Name /* Description RESERVED_2A 342*5113495bSYour Name 343*5113495bSYour Name <legal 0> 344*5113495bSYour Name */ 345*5113495bSYour Name 346*5113495bSYour Name #define MACTX_USER_DESC_PER_USER_RESERVED_2A_OFFSET 0x0000000000000008 347*5113495bSYour Name #define MACTX_USER_DESC_PER_USER_RESERVED_2A_LSB 1 348*5113495bSYour Name #define MACTX_USER_DESC_PER_USER_RESERVED_2A_MSB 7 349*5113495bSYour Name #define MACTX_USER_DESC_PER_USER_RESERVED_2A_MASK 0x00000000000000fe 350*5113495bSYour Name 351*5113495bSYour Name 352*5113495bSYour Name /* Description USER_BF_TYPE 353*5113495bSYour Name 354*5113495bSYour Name This field is valid for all packets using multiple antennas 355*5113495bSYour Name because it defines whether the user's tones will be beamformed, 356*5113495bSYour Name spatially spread, both or none of the above. 357*5113495bSYour Name 358*5113495bSYour Name <enum 0 USER_NO_BF> Direct mapping from Stream to Chain 359*5113495bSYour Name 360*5113495bSYour Name <enum 1 USER_WALSH_ONLY> Enable Walsh mapping only 361*5113495bSYour Name <enum 2 USER_BF_ONLY> Enable Beamforming only 362*5113495bSYour Name <enum 3 USER_WALSH_AND_BF> Enable Walsh and Beamforming 363*5113495bSYour Name 364*5113495bSYour Name 365*5113495bSYour Name NOTE: USER_NO_BF and USER_BF_ONLY are not allowed if the 366*5113495bSYour Name number of spatial streams (NSS) < the number of Tx chains 367*5113495bSYour Name (NTx). 368*5113495bSYour Name <legal all> 369*5113495bSYour Name */ 370*5113495bSYour Name 371*5113495bSYour Name #define MACTX_USER_DESC_PER_USER_USER_BF_TYPE_OFFSET 0x0000000000000008 372*5113495bSYour Name #define MACTX_USER_DESC_PER_USER_USER_BF_TYPE_LSB 8 373*5113495bSYour Name #define MACTX_USER_DESC_PER_USER_USER_BF_TYPE_MSB 9 374*5113495bSYour Name #define MACTX_USER_DESC_PER_USER_USER_BF_TYPE_MASK 0x0000000000000300 375*5113495bSYour Name 376*5113495bSYour Name 377*5113495bSYour Name /* Description RESERVED_2B 378*5113495bSYour Name 379*5113495bSYour Name <legal 0> 380*5113495bSYour Name */ 381*5113495bSYour Name 382*5113495bSYour Name #define MACTX_USER_DESC_PER_USER_RESERVED_2B_OFFSET 0x0000000000000008 383*5113495bSYour Name #define MACTX_USER_DESC_PER_USER_RESERVED_2B_LSB 10 384*5113495bSYour Name #define MACTX_USER_DESC_PER_USER_RESERVED_2B_MSB 15 385*5113495bSYour Name #define MACTX_USER_DESC_PER_USER_RESERVED_2B_MASK 0x000000000000fc00 386*5113495bSYour Name 387*5113495bSYour Name 388*5113495bSYour Name /* Description DROP_USER_CBF 389*5113495bSYour Name 390*5113495bSYour Name This user shall be dropped because of CBF FCS failure or 391*5113495bSYour Name no CBF reception. 392*5113495bSYour Name <legal all> 393*5113495bSYour Name */ 394*5113495bSYour Name 395*5113495bSYour Name #define MACTX_USER_DESC_PER_USER_DROP_USER_CBF_OFFSET 0x0000000000000008 396*5113495bSYour Name #define MACTX_USER_DESC_PER_USER_DROP_USER_CBF_LSB 16 397*5113495bSYour Name #define MACTX_USER_DESC_PER_USER_DROP_USER_CBF_MSB 16 398*5113495bSYour Name #define MACTX_USER_DESC_PER_USER_DROP_USER_CBF_MASK 0x0000000000010000 399*5113495bSYour Name 400*5113495bSYour Name 401*5113495bSYour Name /* Description RESERVED_2C 402*5113495bSYour Name 403*5113495bSYour Name <legal 0> 404*5113495bSYour Name */ 405*5113495bSYour Name 406*5113495bSYour Name #define MACTX_USER_DESC_PER_USER_RESERVED_2C_OFFSET 0x0000000000000008 407*5113495bSYour Name #define MACTX_USER_DESC_PER_USER_RESERVED_2C_LSB 17 408*5113495bSYour Name #define MACTX_USER_DESC_PER_USER_RESERVED_2C_MSB 23 409*5113495bSYour Name #define MACTX_USER_DESC_PER_USER_RESERVED_2C_MASK 0x0000000000fe0000 410*5113495bSYour Name 411*5113495bSYour Name 412*5113495bSYour Name /* Description LDPC_EXTRA_SYMBOL 413*5113495bSYour Name 414*5113495bSYour Name Set to 1 if the LDPC PPDU encoding process (if an SU PPDU), 415*5113495bSYour Name or at least one LDPC user's PPDU encoding process (if an 416*5113495bSYour Name MU PPDU), results in an extra OFDM symbol (or symbols) 417*5113495bSYour Name as described in 22.3.10.5.4 (LDPC coding) and 22.3.10.5.5 418*5113495bSYour Name (Encoding process for MU PPDUs). Set to 0 otherwise. 419*5113495bSYour Name <legal all> 420*5113495bSYour Name */ 421*5113495bSYour Name 422*5113495bSYour Name #define MACTX_USER_DESC_PER_USER_LDPC_EXTRA_SYMBOL_OFFSET 0x0000000000000008 423*5113495bSYour Name #define MACTX_USER_DESC_PER_USER_LDPC_EXTRA_SYMBOL_LSB 24 424*5113495bSYour Name #define MACTX_USER_DESC_PER_USER_LDPC_EXTRA_SYMBOL_MSB 24 425*5113495bSYour Name #define MACTX_USER_DESC_PER_USER_LDPC_EXTRA_SYMBOL_MASK 0x0000000001000000 426*5113495bSYour Name 427*5113495bSYour Name 428*5113495bSYour Name /* Description FORCE_EXTRA_SYMBOL 429*5113495bSYour Name 430*5113495bSYour Name Set to 1 to force an extra OFDM symbol (or symbols) even 431*5113495bSYour Name if none of the users' PPDU encoding process resuls in an 432*5113495bSYour Name extra OFDM symbol (or symbols). 433*5113495bSYour Name <legal all> 434*5113495bSYour Name */ 435*5113495bSYour Name 436*5113495bSYour Name #define MACTX_USER_DESC_PER_USER_FORCE_EXTRA_SYMBOL_OFFSET 0x0000000000000008 437*5113495bSYour Name #define MACTX_USER_DESC_PER_USER_FORCE_EXTRA_SYMBOL_LSB 25 438*5113495bSYour Name #define MACTX_USER_DESC_PER_USER_FORCE_EXTRA_SYMBOL_MSB 25 439*5113495bSYour Name #define MACTX_USER_DESC_PER_USER_FORCE_EXTRA_SYMBOL_MASK 0x0000000002000000 440*5113495bSYour Name 441*5113495bSYour Name 442*5113495bSYour Name /* Description RESERVED_2D 443*5113495bSYour Name 444*5113495bSYour Name <legal 0> 445*5113495bSYour Name */ 446*5113495bSYour Name 447*5113495bSYour Name #define MACTX_USER_DESC_PER_USER_RESERVED_2D_OFFSET 0x0000000000000008 448*5113495bSYour Name #define MACTX_USER_DESC_PER_USER_RESERVED_2D_LSB 26 449*5113495bSYour Name #define MACTX_USER_DESC_PER_USER_RESERVED_2D_MSB 31 450*5113495bSYour Name #define MACTX_USER_DESC_PER_USER_RESERVED_2D_MASK 0x00000000fc000000 451*5113495bSYour Name 452*5113495bSYour Name 453*5113495bSYour Name /* Description SW_PEER_ID 454*5113495bSYour Name 455*5113495bSYour Name When set to 0, SW did not populate this field. 456*5113495bSYour Name 457*5113495bSYour Name The SW peer ID for this user 458*5113495bSYour Name <legal all> 459*5113495bSYour Name */ 460*5113495bSYour Name 461*5113495bSYour Name #define MACTX_USER_DESC_PER_USER_SW_PEER_ID_OFFSET 0x0000000000000008 462*5113495bSYour Name #define MACTX_USER_DESC_PER_USER_SW_PEER_ID_LSB 32 463*5113495bSYour Name #define MACTX_USER_DESC_PER_USER_SW_PEER_ID_MSB 47 464*5113495bSYour Name #define MACTX_USER_DESC_PER_USER_SW_PEER_ID_MASK 0x0000ffff00000000 465*5113495bSYour Name 466*5113495bSYour Name 467*5113495bSYour Name /* Description PER_USER_SUBBAND_MASK 468*5113495bSYour Name 469*5113495bSYour Name This specifies a per-20 MHz subband mask per-user to be 470*5113495bSYour Name used in case of either multi-large-RU or preamble puncturing. 471*5113495bSYour Name 472*5113495bSYour Name <legal all> 473*5113495bSYour Name */ 474*5113495bSYour Name 475*5113495bSYour Name #define MACTX_USER_DESC_PER_USER_PER_USER_SUBBAND_MASK_OFFSET 0x0000000000000008 476*5113495bSYour Name #define MACTX_USER_DESC_PER_USER_PER_USER_SUBBAND_MASK_LSB 48 477*5113495bSYour Name #define MACTX_USER_DESC_PER_USER_PER_USER_SUBBAND_MASK_MSB 63 478*5113495bSYour Name #define MACTX_USER_DESC_PER_USER_PER_USER_SUBBAND_MASK_MASK 0xffff000000000000 479*5113495bSYour Name 480*5113495bSYour Name 481*5113495bSYour Name 482*5113495bSYour Name #endif // MACTX_USER_DESC_PER_USER 483