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