1*5113495bSYour Name 2*5113495bSYour Name /* 3*5113495bSYour Name * Copyright (c) 2022 Qualcomm Innovation Center, Inc. All rights reserved. 4*5113495bSYour Name * 5*5113495bSYour Name * Permission to use, copy, modify, and/or distribute this software for 6*5113495bSYour Name * any purpose with or without fee is hereby granted, provided that the 7*5113495bSYour Name * above copyright notice and this permission notice appear in all 8*5113495bSYour Name * copies. 9*5113495bSYour Name * 10*5113495bSYour Name * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL 11*5113495bSYour Name * WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED 12*5113495bSYour Name * WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE 13*5113495bSYour Name * AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL 14*5113495bSYour Name * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR 15*5113495bSYour Name * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER 16*5113495bSYour Name * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR 17*5113495bSYour Name * PERFORMANCE OF THIS SOFTWARE. 18*5113495bSYour Name */ 19*5113495bSYour Name 20*5113495bSYour Name 21*5113495bSYour Name 22*5113495bSYour Name #ifndef _TLV_HDR_H_ 23*5113495bSYour Name #define _TLV_HDR_H_ 24*5113495bSYour Name #if !defined(__ASSEMBLER__) 25*5113495bSYour Name #endif 26*5113495bSYour Name 27*5113495bSYour Name #define _TLV_USERID_WIDTH_ 6 28*5113495bSYour Name #define _TLV_DATA_WIDTH_ 32 29*5113495bSYour Name #define _TLV_TAG_WIDTH_ 9 30*5113495bSYour Name 31*5113495bSYour Name #define _TLV_MRV_EN_LEN_WIDTH_ 9 32*5113495bSYour Name #define _TLV_MRV_DIS_LEN_WIDTH_ 12 33*5113495bSYour Name 34*5113495bSYour Name #define _TLV_16_DATA_WIDTH_ 16 35*5113495bSYour Name #define _TLV_16_TAG_WIDTH_ 5 36*5113495bSYour Name #define _TLV_16_LEN_WIDTH_ 4 37*5113495bSYour Name #define _TLV_CTAG_WIDTH_ 5 38*5113495bSYour Name #define _TLV_44_DATA_WIDTH_ 44 39*5113495bSYour Name #define _TLV_64_DATA_WIDTH_ 64 40*5113495bSYour Name #define _TLV_76_DATA_WIDTH_ 64 41*5113495bSYour Name #define _TLV_CDATA_WIDTH_ 32 42*5113495bSYour Name #define _TLV_CDATA_76_WIDTH_ 64 43*5113495bSYour Name 44*5113495bSYour Name struct tlv_usr_16_tlword_t { 45*5113495bSYour Name #ifndef WIFI_BIT_ORDER_BIG_ENDIAN 46*5113495bSYour Name uint16_t tlv_cflg_reserved : 1, 47*5113495bSYour Name tlv_tag : _TLV_16_TAG_WIDTH_, 48*5113495bSYour Name tlv_len : _TLV_16_LEN_WIDTH_, 49*5113495bSYour Name tlv_usrid : _TLV_USERID_WIDTH_; 50*5113495bSYour Name #else 51*5113495bSYour Name uint16_t tlv_usrid : _TLV_USERID_WIDTH_, 52*5113495bSYour Name tlv_len : _TLV_16_LEN_WIDTH_, 53*5113495bSYour Name tlv_tag : _TLV_16_TAG_WIDTH_, 54*5113495bSYour Name tlv_cflg_reserved : 1; 55*5113495bSYour Name #endif 56*5113495bSYour Name }; 57*5113495bSYour Name 58*5113495bSYour Name struct tlv_16_tlword_t { 59*5113495bSYour Name #ifndef WIFI_BIT_ORDER_BIG_ENDIAN 60*5113495bSYour Name uint16_t tlv_cflg_reserved : 1, 61*5113495bSYour Name tlv_len : _TLV_16_LEN_WIDTH_, 62*5113495bSYour Name tlv_tag : _TLV_16_TAG_WIDTH_, 63*5113495bSYour Name tlv_reserved : 6; 64*5113495bSYour Name #else 65*5113495bSYour Name uint16_t tlv_reserved : 6, 66*5113495bSYour Name tlv_tag : _TLV_16_TAG_WIDTH_, 67*5113495bSYour Name tlv_len : _TLV_16_LEN_WIDTH_, 68*5113495bSYour Name tlv_cflg_reserved : 1; 69*5113495bSYour Name #endif 70*5113495bSYour Name }; 71*5113495bSYour Name 72*5113495bSYour Name struct tlv_mac_usr_32_tlword_t { 73*5113495bSYour Name #ifndef WIFI_BIT_ORDER_BIG_ENDIAN 74*5113495bSYour Name uint32_t tlv_cflg_reserved : 1, 75*5113495bSYour Name tlv_tag : _TLV_TAG_WIDTH_, 76*5113495bSYour Name tlv_len : _TLV_MRV_DIS_LEN_WIDTH_, 77*5113495bSYour Name tlv_src_linkid : 3, 78*5113495bSYour Name tlv_mrv : 1, 79*5113495bSYour Name tlv_usrid : _TLV_USERID_WIDTH_; 80*5113495bSYour Name #else 81*5113495bSYour Name uint32_t tlv_usrid : _TLV_USERID_WIDTH_, 82*5113495bSYour Name tlv_mrv : 1, 83*5113495bSYour Name tlv_src_linkid : 3, 84*5113495bSYour Name tlv_len : _TLV_MRV_DIS_LEN_WIDTH_, 85*5113495bSYour Name tlv_tag : _TLV_TAG_WIDTH_, 86*5113495bSYour Name tlv_cflg_reserved : 1; 87*5113495bSYour Name #endif 88*5113495bSYour Name }; 89*5113495bSYour Name 90*5113495bSYour Name struct tlv_mac_32_tlword_t { 91*5113495bSYour Name #ifndef WIFI_BIT_ORDER_BIG_ENDIAN 92*5113495bSYour Name uint32_t tlv_cflg_reserved : 1, 93*5113495bSYour Name tlv_tag : _TLV_TAG_WIDTH_, 94*5113495bSYour Name tlv_len : _TLV_MRV_DIS_LEN_WIDTH_, 95*5113495bSYour Name tlv_src_linkid : 3, 96*5113495bSYour Name tlv_mrv : 1, 97*5113495bSYour Name tlv_reserved : 6; 98*5113495bSYour Name #else 99*5113495bSYour Name uint32_t tlv_reserved : 6, 100*5113495bSYour Name tlv_mrv : 1, 101*5113495bSYour Name tlv_src_linkid : 3, 102*5113495bSYour Name tlv_len : _TLV_MRV_DIS_LEN_WIDTH_, 103*5113495bSYour Name tlv_tag : _TLV_TAG_WIDTH_, 104*5113495bSYour Name tlv_cflg_reserved : 1; 105*5113495bSYour Name #endif 106*5113495bSYour Name }; 107*5113495bSYour Name 108*5113495bSYour Name struct tlv_mac_usr_64_tlword_t { 109*5113495bSYour Name #ifndef WIFI_BIT_ORDER_BIG_ENDIAN 110*5113495bSYour Name uint64_t tlv_cflg_reserved : 1, 111*5113495bSYour Name tlv_tag : _TLV_TAG_WIDTH_, 112*5113495bSYour Name tlv_len : _TLV_MRV_DIS_LEN_WIDTH_, 113*5113495bSYour Name tlv_src_linkid : 3, 114*5113495bSYour Name tlv_mrv : 1, 115*5113495bSYour Name tlv_usrid : _TLV_USERID_WIDTH_, 116*5113495bSYour Name #else 117*5113495bSYour Name uint64_t tlv_usrid : _TLV_USERID_WIDTH_, 118*5113495bSYour Name tlv_mrv : 1, 119*5113495bSYour Name tlv_src_linkid : 3, 120*5113495bSYour Name tlv_len : _TLV_MRV_DIS_LEN_WIDTH_, 121*5113495bSYour Name tlv_tag : _TLV_TAG_WIDTH_, 122*5113495bSYour Name tlv_cflg_reserved : 1, 123*5113495bSYour Name #endif 124*5113495bSYour Name tlv_reserved : 32; 125*5113495bSYour Name }; 126*5113495bSYour Name 127*5113495bSYour Name struct tlv_mac_64_tlword_t { 128*5113495bSYour Name #ifndef WIFI_BIT_ORDER_BIG_ENDIAN 129*5113495bSYour Name uint64_t tlv_cflg_reserved : 1, 130*5113495bSYour Name tlv_tag : _TLV_TAG_WIDTH_, 131*5113495bSYour Name tlv_len : _TLV_MRV_DIS_LEN_WIDTH_, 132*5113495bSYour Name tlv_src_linkid : 3, 133*5113495bSYour Name tlv_mrv : 1, 134*5113495bSYour Name tlv_reserved : 38; 135*5113495bSYour Name #else 136*5113495bSYour Name uint64_t tlv_usrid_reserved : _TLV_USERID_WIDTH_, 137*5113495bSYour Name tlv_mrv : 1, 138*5113495bSYour Name tlv_src_linkid : 3, 139*5113495bSYour Name tlv_len : _TLV_MRV_DIS_LEN_WIDTH_, 140*5113495bSYour Name tlv_tag : _TLV_TAG_WIDTH_, 141*5113495bSYour Name tlv_cflg_reserved : 1, 142*5113495bSYour Name tlv_reserved : 32; 143*5113495bSYour Name #endif 144*5113495bSYour Name }; 145*5113495bSYour Name 146*5113495bSYour Name struct tlv_mac_usr_44_tlword_t { 147*5113495bSYour Name #ifndef WIFI_BIT_ORDER_BIG_ENDIAN 148*5113495bSYour Name uint64_t tlv_compression : 1, 149*5113495bSYour Name tlv_tag : _TLV_TAG_WIDTH_, 150*5113495bSYour Name tlv_len : _TLV_MRV_DIS_LEN_WIDTH_, 151*5113495bSYour Name tlv_src_linkid : 3, 152*5113495bSYour Name tlv_mrv : 1, 153*5113495bSYour Name tlv_usrid : _TLV_USERID_WIDTH_, 154*5113495bSYour Name tlv_reserved : 10, 155*5113495bSYour Name pad_44to64_bit : 22; 156*5113495bSYour Name #else 157*5113495bSYour Name uint64_t tlv_usrid : _TLV_USERID_WIDTH_, 158*5113495bSYour Name tlv_mrv : 1, 159*5113495bSYour Name tlv_src_linkid : 3, 160*5113495bSYour Name tlv_len : _TLV_MRV_DIS_LEN_WIDTH_, 161*5113495bSYour Name tlv_tag : _TLV_TAG_WIDTH_, 162*5113495bSYour Name tlv_compression : 1, 163*5113495bSYour Name pad_44to64_bit : 22, 164*5113495bSYour Name tlv_reserved : 10; 165*5113495bSYour Name #endif 166*5113495bSYour Name }; 167*5113495bSYour Name 168*5113495bSYour Name struct tlv_mac_44_tlword_t { 169*5113495bSYour Name #ifndef WIFI_BIT_ORDER_BIG_ENDIAN 170*5113495bSYour Name uint64_t tlv_compression : 1, 171*5113495bSYour Name tlv_tag : _TLV_TAG_WIDTH_, 172*5113495bSYour Name tlv_len : _TLV_MRV_DIS_LEN_WIDTH_, 173*5113495bSYour Name tlv_src_linkid : 3, 174*5113495bSYour Name tlv_mrv : 1, 175*5113495bSYour Name tlv_reserved : 16, 176*5113495bSYour Name pad_44to64_bit : 22; 177*5113495bSYour Name #else 178*5113495bSYour Name uint64_t tlv_usrid_reserved : _TLV_USERID_WIDTH_, 179*5113495bSYour Name tlv_mrv : 1, 180*5113495bSYour Name tlv_src_linkid : 3, 181*5113495bSYour Name tlv_len : _TLV_MRV_DIS_LEN_WIDTH_, 182*5113495bSYour Name tlv_tag : _TLV_TAG_WIDTH_, 183*5113495bSYour Name tlv_compression : 1, 184*5113495bSYour Name pad_44to64_bit : 22, 185*5113495bSYour Name tlv_reserved : 10; 186*5113495bSYour Name #endif 187*5113495bSYour Name }; 188*5113495bSYour Name 189*5113495bSYour Name struct tlv_mac_usr_76_tlword_t { 190*5113495bSYour Name #ifndef WIFI_BIT_ORDER_BIG_ENDIAN 191*5113495bSYour Name uint64_t tlv_compression : 1, 192*5113495bSYour Name tlv_tag : _TLV_TAG_WIDTH_, 193*5113495bSYour Name tlv_len : _TLV_MRV_DIS_LEN_WIDTH_, 194*5113495bSYour Name tlv_src_linkid : 3, 195*5113495bSYour Name tlv_mrv : 1, 196*5113495bSYour Name tlv_usrid : _TLV_USERID_WIDTH_, 197*5113495bSYour Name #else 198*5113495bSYour Name uint64_t tlv_usrid : _TLV_USERID_WIDTH_, 199*5113495bSYour Name tlv_mrv : 1, 200*5113495bSYour Name tlv_src_linkid : 3, 201*5113495bSYour Name tlv_len : _TLV_MRV_DIS_LEN_WIDTH_, 202*5113495bSYour Name tlv_tag : _TLV_TAG_WIDTH_, 203*5113495bSYour Name tlv_compression : 1, 204*5113495bSYour Name #endif 205*5113495bSYour Name tlv_reserved : 32; 206*5113495bSYour Name uint64_t pad_64to128_bit : 64; 207*5113495bSYour Name }; 208*5113495bSYour Name 209*5113495bSYour Name struct tlv_mac_76_tlword_t { 210*5113495bSYour Name #ifndef WIFI_BIT_ORDER_BIG_ENDIAN 211*5113495bSYour Name uint64_t tlv_compression : 1, 212*5113495bSYour Name tlv_tag : _TLV_TAG_WIDTH_, 213*5113495bSYour Name tlv_len : _TLV_MRV_DIS_LEN_WIDTH_, 214*5113495bSYour Name tlv_src_linkid : 3, 215*5113495bSYour Name tlv_mrv : 1, 216*5113495bSYour Name tlv_reserved : 38; 217*5113495bSYour Name #else 218*5113495bSYour Name uint64_t tlv_usrid_reserved : _TLV_USERID_WIDTH_, 219*5113495bSYour Name tlv_mrv : 1, 220*5113495bSYour Name tlv_src_linkid : 3, 221*5113495bSYour Name tlv_len : _TLV_MRV_DIS_LEN_WIDTH_, 222*5113495bSYour Name tlv_tag : _TLV_TAG_WIDTH_, 223*5113495bSYour Name tlv_compression : 1, 224*5113495bSYour Name tlv_reserved : 32; 225*5113495bSYour Name #endif 226*5113495bSYour Name uint64_t pad_64to128_bit : 64; 227*5113495bSYour Name }; 228*5113495bSYour Name 229*5113495bSYour Name struct tlv_usr_c_44_tlword_t { 230*5113495bSYour Name #ifndef WIFI_BIT_ORDER_BIG_ENDIAN 231*5113495bSYour Name uint64_t tlv_compression : 1, 232*5113495bSYour Name tlv_ctag : _TLV_CTAG_WIDTH_, 233*5113495bSYour Name tlv_usrid : _TLV_USERID_WIDTH_, 234*5113495bSYour Name tlv_cdata : _TLV_CDATA_WIDTH_, 235*5113495bSYour Name pad_44to64_bit : 20; 236*5113495bSYour Name #else 237*5113495bSYour Name uint64_t tlv_cdata_lower_20 : 20, 238*5113495bSYour Name tlv_usrid : _TLV_USERID_WIDTH_, 239*5113495bSYour Name tlv_ctag : _TLV_CTAG_WIDTH_, 240*5113495bSYour Name tlv_compression : 1, 241*5113495bSYour Name pad_44to64_bit : 20, 242*5113495bSYour Name tlv_cdata_upper_12 : 12; 243*5113495bSYour Name #endif 244*5113495bSYour Name }; 245*5113495bSYour Name 246*5113495bSYour Name struct tlv_usr_c_76_tlword_t { 247*5113495bSYour Name #ifndef WIFI_BIT_ORDER_BIG_ENDIAN 248*5113495bSYour Name uint64_t tlv_compression : 1, 249*5113495bSYour Name tlv_ctag : _TLV_CTAG_WIDTH_, 250*5113495bSYour Name tlv_usrid : _TLV_USERID_WIDTH_, 251*5113495bSYour Name tlv_cdata_lower_52 : 52; 252*5113495bSYour Name uint64_t tlv_cdata_upper_12 : 12, 253*5113495bSYour Name pad_76to128_bit : 52; 254*5113495bSYour Name #else 255*5113495bSYour Name uint64_t tlv_cdata_lower_20 : 20, 256*5113495bSYour Name tlv_usrid : _TLV_USERID_WIDTH_, 257*5113495bSYour Name tlv_ctag : _TLV_CTAG_WIDTH_, 258*5113495bSYour Name tlv_compression : 1, 259*5113495bSYour Name tlv_cdata_middle_32 : 32; 260*5113495bSYour Name uint64_t pad_76to96_bit : 20, 261*5113495bSYour Name tlv_cdata_upper_12 : 12, 262*5113495bSYour Name pad_96to128_bit : 32; 263*5113495bSYour Name #endif 264*5113495bSYour Name }; 265*5113495bSYour Name 266*5113495bSYour Name struct tlv_usr_32_hdr { 267*5113495bSYour Name #ifndef WIFI_BIT_ORDER_BIG_ENDIAN 268*5113495bSYour Name uint64_t tlv_cflg_reserved : 1, 269*5113495bSYour Name tlv_tag : _TLV_TAG_WIDTH_, 270*5113495bSYour Name tlv_len : _TLV_MRV_DIS_LEN_WIDTH_, 271*5113495bSYour Name tlv_src_linkid : 3, 272*5113495bSYour Name tlv_mrv : 1, 273*5113495bSYour Name tlv_usrid : _TLV_USERID_WIDTH_, 274*5113495bSYour Name #else 275*5113495bSYour Name uint32_t tlv_usrid : _TLV_USERID_WIDTH_, 276*5113495bSYour Name tlv_mrv : 1, 277*5113495bSYour Name tlv_src_linkid : 3, 278*5113495bSYour Name tlv_len : _TLV_MRV_DIS_LEN_WIDTH_, 279*5113495bSYour Name tlv_tag : _TLV_TAG_WIDTH_, 280*5113495bSYour Name tlv_cflg_reserved : 1, 281*5113495bSYour Name #endif 282*5113495bSYour Name tlv_reserved : 32; 283*5113495bSYour Name }; 284*5113495bSYour Name 285*5113495bSYour Name struct tlv_32_hdr { 286*5113495bSYour Name #ifndef WIFI_BIT_ORDER_BIG_ENDIAN 287*5113495bSYour Name uint64_t tlv_cflg_reserved : 1, 288*5113495bSYour Name tlv_tag : _TLV_TAG_WIDTH_, 289*5113495bSYour Name tlv_len : _TLV_MRV_DIS_LEN_WIDTH_, 290*5113495bSYour Name tlv_src_linkid : 3, 291*5113495bSYour Name tlv_mrv : 1, 292*5113495bSYour Name tlv_reserved : 38; 293*5113495bSYour Name #else 294*5113495bSYour Name uint64_t tlv_usrid_reserved : _TLV_USERID_WIDTH_, 295*5113495bSYour Name tlv_mrv : 1, 296*5113495bSYour Name tlv_src_linkid : 3, 297*5113495bSYour Name tlv_len : _TLV_MRV_DIS_LEN_WIDTH_, 298*5113495bSYour Name tlv_tag : _TLV_TAG_WIDTH_, 299*5113495bSYour Name tlv_cflg_reserved : 1, 300*5113495bSYour Name tlv_reserved : 32; 301*5113495bSYour Name #endif 302*5113495bSYour Name }; 303*5113495bSYour Name 304*5113495bSYour Name struct tlv_mlo_usr_64_tlw32_t { 305*5113495bSYour Name #ifndef WIFI_BIT_ORDER_BIG_ENDIAN 306*5113495bSYour Name uint32_t tlv_cflg_reserved : 1, 307*5113495bSYour Name tlv_tag : _TLV_TAG_WIDTH_, 308*5113495bSYour Name tlv_len : _TLV_MRV_EN_LEN_WIDTH_, 309*5113495bSYour Name tlv_dst_linkid : 3, 310*5113495bSYour Name tlv_src_linkid : 3, 311*5113495bSYour Name tlv_mrv : 1, 312*5113495bSYour Name tlv_usrid : _TLV_USERID_WIDTH_; 313*5113495bSYour Name #else 314*5113495bSYour Name uint32_t tlv_usrid : _TLV_USERID_WIDTH_, 315*5113495bSYour Name tlv_mrv : 1, 316*5113495bSYour Name tlv_src_linkid : 3, 317*5113495bSYour Name tlv_dst_linkid : 3, 318*5113495bSYour Name tlv_len : _TLV_MRV_EN_LEN_WIDTH_, 319*5113495bSYour Name tlv_tag : _TLV_TAG_WIDTH_, 320*5113495bSYour Name tlv_cflg_reserved : 1; 321*5113495bSYour Name #endif 322*5113495bSYour Name uint32_t pad_32to64_bit : 32; 323*5113495bSYour Name }; 324*5113495bSYour Name 325*5113495bSYour Name struct tlv_mlo_64_tlw32_t { 326*5113495bSYour Name #ifndef WIFI_BIT_ORDER_BIG_ENDIAN 327*5113495bSYour Name uint32_t tlv_cflg_reserved : 1, 328*5113495bSYour Name tlv_tag : _TLV_TAG_WIDTH_, 329*5113495bSYour Name tlv_len : _TLV_MRV_EN_LEN_WIDTH_, 330*5113495bSYour Name tlv_dst_linkid : 3, 331*5113495bSYour Name tlv_src_linkid : 3, 332*5113495bSYour Name tlv_mrv : 1, 333*5113495bSYour Name tlv_reserved : _TLV_USERID_WIDTH_; 334*5113495bSYour Name #else 335*5113495bSYour Name uint32_t tlv_reserved : _TLV_USERID_WIDTH_, 336*5113495bSYour Name tlv_mrv : 1, 337*5113495bSYour Name tlv_src_linkid : 3, 338*5113495bSYour Name tlv_dst_linkid : 3, 339*5113495bSYour Name tlv_len : _TLV_MRV_EN_LEN_WIDTH_, 340*5113495bSYour Name tlv_tag : _TLV_TAG_WIDTH_, 341*5113495bSYour Name tlv_cflg_reserved : 1; 342*5113495bSYour Name #endif 343*5113495bSYour Name uint32_t pad_32to64_bit : 32; 344*5113495bSYour Name }; 345*5113495bSYour Name 346*5113495bSYour Name struct tlv_mac_usr_64_tlw32_t { 347*5113495bSYour Name #ifndef WIFI_BIT_ORDER_BIG_ENDIAN 348*5113495bSYour Name uint32_t tlv_cflg_reserved : 1, 349*5113495bSYour Name tlv_tag : _TLV_TAG_WIDTH_, 350*5113495bSYour Name tlv_len : _TLV_MRV_DIS_LEN_WIDTH_, 351*5113495bSYour Name tlv_src_linkid : 3, 352*5113495bSYour Name tlv_mrv : 1, 353*5113495bSYour Name tlv_usrid : _TLV_USERID_WIDTH_; 354*5113495bSYour Name #else 355*5113495bSYour Name uint32_t tlv_usrid : _TLV_USERID_WIDTH_, 356*5113495bSYour Name tlv_mrv : 1, 357*5113495bSYour Name tlv_src_linkid : 3, 358*5113495bSYour Name tlv_len : _TLV_MRV_DIS_LEN_WIDTH_, 359*5113495bSYour Name tlv_tag : _TLV_TAG_WIDTH_, 360*5113495bSYour Name tlv_cflg_reserved : 1; 361*5113495bSYour Name #endif 362*5113495bSYour Name uint32_t pad_32to64_bit : 32; 363*5113495bSYour Name }; 364*5113495bSYour Name 365*5113495bSYour Name struct tlv_mac_64_tlw32_t { 366*5113495bSYour Name #ifndef WIFI_BIT_ORDER_BIG_ENDIAN 367*5113495bSYour Name uint32_t tlv_cflg_reserved : 1, 368*5113495bSYour Name tlv_tag : _TLV_TAG_WIDTH_, 369*5113495bSYour Name tlv_len : _TLV_MRV_DIS_LEN_WIDTH_, 370*5113495bSYour Name tlv_src_linkid : 3, 371*5113495bSYour Name tlv_mrv : 1, 372*5113495bSYour Name tlv_reserved : _TLV_USERID_WIDTH_; 373*5113495bSYour Name #else 374*5113495bSYour Name uint32_t tlv_reserved : _TLV_USERID_WIDTH_, 375*5113495bSYour Name tlv_mrv : 1, 376*5113495bSYour Name tlv_src_linkid : 3, 377*5113495bSYour Name tlv_len : _TLV_MRV_DIS_LEN_WIDTH_, 378*5113495bSYour Name tlv_tag : _TLV_TAG_WIDTH_, 379*5113495bSYour Name tlv_cflg_reserved : 1; 380*5113495bSYour Name #endif 381*5113495bSYour Name uint32_t pad_32to64_bit : 32; 382*5113495bSYour Name }; 383*5113495bSYour Name 384*5113495bSYour Name struct tlv_usr_c_44_tlw32_t { 385*5113495bSYour Name #ifndef WIFI_BIT_ORDER_BIG_ENDIAN 386*5113495bSYour Name uint32_t tlv_compression : 1, 387*5113495bSYour Name tlv_ctag : _TLV_CTAG_WIDTH_, 388*5113495bSYour Name tlv_usrid : _TLV_USERID_WIDTH_, 389*5113495bSYour Name tlv_cdata_lower_20 : 20; 390*5113495bSYour Name uint32_t tlv_cdata_upper_12 : 12, 391*5113495bSYour Name pad_44to64_bit : 20; 392*5113495bSYour Name #else 393*5113495bSYour Name uint32_t tlv_cdata_lower_20 : 20, 394*5113495bSYour Name tlv_usrid : _TLV_USERID_WIDTH_, 395*5113495bSYour Name tlv_ctag : _TLV_CTAG_WIDTH_, 396*5113495bSYour Name tlv_compression : 1; 397*5113495bSYour Name uint32_t pad_44to64_bit : 20, 398*5113495bSYour Name tlv_cdata_upper_12 : 12; 399*5113495bSYour Name #endif 400*5113495bSYour Name }; 401*5113495bSYour Name 402*5113495bSYour Name struct tlv_usr_c_76_tlw32_t { 403*5113495bSYour Name #ifndef WIFI_BIT_ORDER_BIG_ENDIAN 404*5113495bSYour Name uint32_t tlv_compression : 1, 405*5113495bSYour Name tlv_ctag : _TLV_CTAG_WIDTH_, 406*5113495bSYour Name tlv_usrid : _TLV_USERID_WIDTH_, 407*5113495bSYour Name tlv_cdata_lower_20 : 20; 408*5113495bSYour Name uint32_t tlv_cdata_middle_32 : 32; 409*5113495bSYour Name uint32_t tlv_cdata_upper_12 : 12, 410*5113495bSYour Name pad_76to96_bit : 20; 411*5113495bSYour Name uint32_t pad_96to128_bit : 32; 412*5113495bSYour Name #else 413*5113495bSYour Name uint32_t tlv_cdata_lower_20 : 20, 414*5113495bSYour Name tlv_usrid : _TLV_USERID_WIDTH_, 415*5113495bSYour Name tlv_ctag : _TLV_CTAG_WIDTH_, 416*5113495bSYour Name tlv_compression : 1; 417*5113495bSYour Name uint32_t tlv_cdata_middle_32 : 32; 418*5113495bSYour Name uint32_t pad_76to96_bit : 20, 419*5113495bSYour Name tlv_cdata_upper_12 : 12; 420*5113495bSYour Name uint32_t pad_96to128_bit : 32; 421*5113495bSYour Name #endif 422*5113495bSYour Name }; 423*5113495bSYour Name 424*5113495bSYour Name #endif 425