1*5113495bSYour Name 2*5113495bSYour Name /* 3*5113495bSYour Name * Copyright (c) 2024, Qualcomm Innovation Center, Inc. All rights reserved. 4*5113495bSYour Name * SPDX-License-Identifier: ISC 5*5113495bSYour Name */ 6*5113495bSYour Name 7*5113495bSYour Name 8*5113495bSYour Name 9*5113495bSYour Name 10*5113495bSYour Name 11*5113495bSYour Name 12*5113495bSYour Name 13*5113495bSYour Name 14*5113495bSYour Name 15*5113495bSYour Name 16*5113495bSYour Name #ifndef _TLV_HDR_H_ 17*5113495bSYour Name #define _TLV_HDR_H_ 18*5113495bSYour Name #if !defined(__ASSEMBLER__) 19*5113495bSYour Name #endif 20*5113495bSYour Name 21*5113495bSYour Name #define _TLV_USERID_WIDTH_ 6 22*5113495bSYour Name #define _TLV_DATA_WIDTH_ 32 23*5113495bSYour Name #define _TLV_TAG_WIDTH_ 9 24*5113495bSYour Name 25*5113495bSYour Name #define _TLV_MRV_EN_LEN_WIDTH_ 9 26*5113495bSYour Name #define _TLV_MRV_DIS_LEN_WIDTH_ 12 27*5113495bSYour Name 28*5113495bSYour Name #define _TLV_16_DATA_WIDTH_ 16 29*5113495bSYour Name #define _TLV_16_TAG_WIDTH_ 5 30*5113495bSYour Name #define _TLV_16_LEN_WIDTH_ 4 31*5113495bSYour Name #define _TLV_CTAG_WIDTH_ 5 32*5113495bSYour Name #define _TLV_44_DATA_WIDTH_ 44 33*5113495bSYour Name #define _TLV_64_DATA_WIDTH_ 64 34*5113495bSYour Name #define _TLV_76_DATA_WIDTH_ 64 35*5113495bSYour Name #define _TLV_CDATA_WIDTH_ 32 36*5113495bSYour Name #define _TLV_CDATA_76_WIDTH_ 64 37*5113495bSYour Name 38*5113495bSYour Name struct tlv_usr_16_tlword_t { 39*5113495bSYour Name #ifndef WIFI_BIT_ORDER_BIG_ENDIAN 40*5113495bSYour Name uint16_t tlv_cflg_reserved : 1, 41*5113495bSYour Name tlv_tag : _TLV_16_TAG_WIDTH_, 42*5113495bSYour Name tlv_len : _TLV_16_LEN_WIDTH_, 43*5113495bSYour Name tlv_usrid : _TLV_USERID_WIDTH_; 44*5113495bSYour Name #else 45*5113495bSYour Name uint16_t tlv_usrid : _TLV_USERID_WIDTH_, 46*5113495bSYour Name tlv_len : _TLV_16_LEN_WIDTH_, 47*5113495bSYour Name tlv_tag : _TLV_16_TAG_WIDTH_, 48*5113495bSYour Name tlv_cflg_reserved : 1; 49*5113495bSYour Name #endif 50*5113495bSYour Name }; 51*5113495bSYour Name 52*5113495bSYour Name struct tlv_16_tlword_t { 53*5113495bSYour Name #ifndef WIFI_BIT_ORDER_BIG_ENDIAN 54*5113495bSYour Name uint16_t tlv_cflg_reserved : 1, 55*5113495bSYour Name tlv_len : _TLV_16_LEN_WIDTH_, 56*5113495bSYour Name tlv_tag : _TLV_16_TAG_WIDTH_, 57*5113495bSYour Name tlv_reserved : 6; 58*5113495bSYour Name #else 59*5113495bSYour Name uint16_t tlv_reserved : 6, 60*5113495bSYour Name tlv_tag : _TLV_16_TAG_WIDTH_, 61*5113495bSYour Name tlv_len : _TLV_16_LEN_WIDTH_, 62*5113495bSYour Name tlv_cflg_reserved : 1; 63*5113495bSYour Name #endif 64*5113495bSYour Name }; 65*5113495bSYour Name 66*5113495bSYour Name 67*5113495bSYour Name 68*5113495bSYour Name 69*5113495bSYour Name 70*5113495bSYour Name 71*5113495bSYour Name 72*5113495bSYour Name struct tlv_mlo_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_EN_LEN_WIDTH_, 77*5113495bSYour Name tlv_dst_linkid : 3, 78*5113495bSYour Name tlv_src_linkid : 3, 79*5113495bSYour Name tlv_mrv : 1, 80*5113495bSYour Name tlv_usrid : _TLV_USERID_WIDTH_; 81*5113495bSYour Name #else 82*5113495bSYour Name uint32_t tlv_usrid : _TLV_USERID_WIDTH_, 83*5113495bSYour Name tlv_mrv : 1, 84*5113495bSYour Name tlv_src_linkid : 3, 85*5113495bSYour Name tlv_dst_linkid : 3, 86*5113495bSYour Name tlv_len : _TLV_MRV_EN_LEN_WIDTH_, 87*5113495bSYour Name tlv_tag : _TLV_TAG_WIDTH_, 88*5113495bSYour Name tlv_cflg_reserved : 1; 89*5113495bSYour Name #endif 90*5113495bSYour Name }; 91*5113495bSYour Name 92*5113495bSYour Name struct tlv_mlo_32_tlword_t { 93*5113495bSYour Name #ifndef WIFI_BIT_ORDER_BIG_ENDIAN 94*5113495bSYour Name uint32_t tlv_cflg_reserved : 1, 95*5113495bSYour Name tlv_tag : _TLV_TAG_WIDTH_, 96*5113495bSYour Name tlv_len : _TLV_MRV_EN_LEN_WIDTH_, 97*5113495bSYour Name tlv_dst_linkid : 3, 98*5113495bSYour Name tlv_src_linkid : 3, 99*5113495bSYour Name tlv_mrv : 1, 100*5113495bSYour Name tlv_reserved : 6; 101*5113495bSYour Name #else 102*5113495bSYour Name uint32_t tlv_reserved : 6, 103*5113495bSYour Name tlv_mrv : 1, 104*5113495bSYour Name tlv_src_linkid : 3, 105*5113495bSYour Name tlv_dst_linkid : 3, 106*5113495bSYour Name tlv_len : _TLV_MRV_EN_LEN_WIDTH_, 107*5113495bSYour Name tlv_tag : _TLV_TAG_WIDTH_, 108*5113495bSYour Name tlv_cflg_reserved : 1; 109*5113495bSYour Name #endif 110*5113495bSYour Name }; 111*5113495bSYour Name 112*5113495bSYour Name struct tlv_mlo_usr_64_tlword_t { 113*5113495bSYour Name #ifndef WIFI_BIT_ORDER_BIG_ENDIAN 114*5113495bSYour Name uint64_t tlv_cflg_reserved : 1, 115*5113495bSYour Name tlv_tag : _TLV_TAG_WIDTH_, 116*5113495bSYour Name tlv_len : _TLV_MRV_EN_LEN_WIDTH_, 117*5113495bSYour Name tlv_dst_linkid : 3, 118*5113495bSYour Name tlv_src_linkid : 3, 119*5113495bSYour Name tlv_mrv : 1, 120*5113495bSYour Name tlv_usrid : _TLV_USERID_WIDTH_, 121*5113495bSYour Name #else 122*5113495bSYour Name uint64_t tlv_usrid : _TLV_USERID_WIDTH_, 123*5113495bSYour Name tlv_mrv : 1, 124*5113495bSYour Name tlv_src_linkid : 3, 125*5113495bSYour Name tlv_dst_linkid : 3, 126*5113495bSYour Name tlv_len : _TLV_MRV_EN_LEN_WIDTH_, 127*5113495bSYour Name tlv_tag : _TLV_TAG_WIDTH_, 128*5113495bSYour Name tlv_cflg_reserved : 1, 129*5113495bSYour Name #endif 130*5113495bSYour Name tlv_reserved : 32; 131*5113495bSYour Name }; 132*5113495bSYour Name 133*5113495bSYour Name struct tlv_mlo_64_tlword_t { 134*5113495bSYour Name #ifndef WIFI_BIT_ORDER_BIG_ENDIAN 135*5113495bSYour Name uint64_t tlv_cflg_reserved : 1, 136*5113495bSYour Name tlv_tag : _TLV_TAG_WIDTH_, 137*5113495bSYour Name tlv_len : _TLV_MRV_EN_LEN_WIDTH_, 138*5113495bSYour Name tlv_dst_linkid : 3, 139*5113495bSYour Name tlv_src_linkid : 3, 140*5113495bSYour Name tlv_mrv : 1, 141*5113495bSYour Name tlv_reserved : 38; 142*5113495bSYour Name #else 143*5113495bSYour Name uint64_t tlv_usrid_reserved : _TLV_USERID_WIDTH_, 144*5113495bSYour Name tlv_mrv : 1, 145*5113495bSYour Name tlv_src_linkid : 3, 146*5113495bSYour Name tlv_dst_linkid : 3, 147*5113495bSYour Name tlv_len : _TLV_MRV_EN_LEN_WIDTH_, 148*5113495bSYour Name tlv_tag : _TLV_TAG_WIDTH_, 149*5113495bSYour Name tlv_cflg_reserved : 1, 150*5113495bSYour Name tlv_reserved : 32; 151*5113495bSYour Name #endif 152*5113495bSYour Name }; 153*5113495bSYour Name 154*5113495bSYour Name struct tlv_mlo_usr_44_tlword_t { 155*5113495bSYour Name #ifndef WIFI_BIT_ORDER_BIG_ENDIAN 156*5113495bSYour Name uint64_t tlv_compression : 1, 157*5113495bSYour Name tlv_tag : _TLV_TAG_WIDTH_, 158*5113495bSYour Name tlv_len : _TLV_MRV_EN_LEN_WIDTH_, 159*5113495bSYour Name tlv_dst_linkid : 3, 160*5113495bSYour Name tlv_src_linkid : 3, 161*5113495bSYour Name tlv_mrv : 1, 162*5113495bSYour Name tlv_usrid : _TLV_USERID_WIDTH_, 163*5113495bSYour Name tlv_reserved : 10, 164*5113495bSYour Name pad_44to64_bit : 22; 165*5113495bSYour Name #else 166*5113495bSYour Name uint64_t tlv_usrid : _TLV_USERID_WIDTH_, 167*5113495bSYour Name tlv_mrv : 1, 168*5113495bSYour Name tlv_src_linkid : 3, 169*5113495bSYour Name tlv_dst_linkid : 3, 170*5113495bSYour Name tlv_len : _TLV_MRV_EN_LEN_WIDTH_, 171*5113495bSYour Name tlv_tag : _TLV_TAG_WIDTH_, 172*5113495bSYour Name tlv_compression : 1, 173*5113495bSYour Name pad_44to64_bit : 22, 174*5113495bSYour Name tlv_reserved : 10; 175*5113495bSYour Name #endif 176*5113495bSYour Name }; 177*5113495bSYour Name 178*5113495bSYour Name struct tlv_mlo_44_tlword_t { 179*5113495bSYour Name #ifndef WIFI_BIT_ORDER_BIG_ENDIAN 180*5113495bSYour Name uint64_t tlv_compression : 1, 181*5113495bSYour Name tlv_tag : _TLV_TAG_WIDTH_, 182*5113495bSYour Name tlv_len : _TLV_MRV_EN_LEN_WIDTH_, 183*5113495bSYour Name tlv_dst_linkid : 3, 184*5113495bSYour Name tlv_src_linkid : 3, 185*5113495bSYour Name tlv_mrv : 1, 186*5113495bSYour Name tlv_reserved : 16, 187*5113495bSYour Name pad_44to64_bit : 22; 188*5113495bSYour Name #else 189*5113495bSYour Name uint64_t tlv_usrid_reserved : _TLV_USERID_WIDTH_, 190*5113495bSYour Name tlv_mrv : 1, 191*5113495bSYour Name tlv_src_linkid : 3, 192*5113495bSYour Name tlv_dst_linkid : 3, 193*5113495bSYour Name tlv_len : _TLV_MRV_EN_LEN_WIDTH_, 194*5113495bSYour Name tlv_tag : _TLV_TAG_WIDTH_, 195*5113495bSYour Name tlv_compression : 1, 196*5113495bSYour Name pad_44to64_bit : 22, 197*5113495bSYour Name tlv_reserved : 10; 198*5113495bSYour Name #endif 199*5113495bSYour Name }; 200*5113495bSYour Name 201*5113495bSYour Name struct tlv_mlo_usr_76_tlword_t { 202*5113495bSYour Name #ifndef WIFI_BIT_ORDER_BIG_ENDIAN 203*5113495bSYour Name uint64_t tlv_compression : 1, 204*5113495bSYour Name tlv_tag : _TLV_TAG_WIDTH_, 205*5113495bSYour Name tlv_len : _TLV_MRV_EN_LEN_WIDTH_, 206*5113495bSYour Name tlv_dst_linkid : 3, 207*5113495bSYour Name tlv_src_linkid : 3, 208*5113495bSYour Name tlv_mrv : 1, 209*5113495bSYour Name tlv_usrid : _TLV_USERID_WIDTH_, 210*5113495bSYour Name #else 211*5113495bSYour Name uint64_t tlv_usrid : _TLV_USERID_WIDTH_, 212*5113495bSYour Name tlv_mrv : 1, 213*5113495bSYour Name tlv_src_linkid : 3, 214*5113495bSYour Name tlv_dst_linkid : 3, 215*5113495bSYour Name tlv_len : _TLV_MRV_EN_LEN_WIDTH_, 216*5113495bSYour Name tlv_tag : _TLV_TAG_WIDTH_, 217*5113495bSYour Name tlv_compression : 1, 218*5113495bSYour Name #endif 219*5113495bSYour Name tlv_reserved : 32; 220*5113495bSYour Name uint64_t pad_64to128_bit : 64; 221*5113495bSYour Name }; 222*5113495bSYour Name 223*5113495bSYour Name struct tlv_mlo_76_tlword_t { 224*5113495bSYour Name #ifndef WIFI_BIT_ORDER_BIG_ENDIAN 225*5113495bSYour Name uint64_t tlv_compression : 1, 226*5113495bSYour Name tlv_tag : _TLV_TAG_WIDTH_, 227*5113495bSYour Name tlv_len : _TLV_MRV_EN_LEN_WIDTH_, 228*5113495bSYour Name tlv_dst_linkid : 3, 229*5113495bSYour Name tlv_src_linkid : 3, 230*5113495bSYour Name tlv_mrv : 1, 231*5113495bSYour Name tlv_reserved : 38; 232*5113495bSYour Name #else 233*5113495bSYour Name uint64_t tlv_usrid_reserved : _TLV_USERID_WIDTH_, 234*5113495bSYour Name tlv_mrv : 1, 235*5113495bSYour Name tlv_src_linkid : 3, 236*5113495bSYour Name tlv_dst_linkid : 3, 237*5113495bSYour Name tlv_len : _TLV_MRV_EN_LEN_WIDTH_, 238*5113495bSYour Name tlv_tag : _TLV_TAG_WIDTH_, 239*5113495bSYour Name tlv_compression : 1, 240*5113495bSYour Name tlv_reserved : 32; 241*5113495bSYour Name #endif 242*5113495bSYour Name uint64_t pad_64to128_bit : 64; 243*5113495bSYour Name }; 244*5113495bSYour Name 245*5113495bSYour Name 246*5113495bSYour Name 247*5113495bSYour Name 248*5113495bSYour Name 249*5113495bSYour Name 250*5113495bSYour Name struct tlv_mac_usr_32_tlword_t { 251*5113495bSYour Name #ifndef WIFI_BIT_ORDER_BIG_ENDIAN 252*5113495bSYour Name uint32_t tlv_cflg_reserved : 1, 253*5113495bSYour Name tlv_tag : _TLV_TAG_WIDTH_, 254*5113495bSYour Name tlv_len : _TLV_MRV_DIS_LEN_WIDTH_, 255*5113495bSYour Name tlv_src_linkid : 3, 256*5113495bSYour Name tlv_mrv : 1, 257*5113495bSYour Name tlv_usrid : _TLV_USERID_WIDTH_; 258*5113495bSYour Name #else 259*5113495bSYour Name uint32_t tlv_usrid : _TLV_USERID_WIDTH_, 260*5113495bSYour Name tlv_mrv : 1, 261*5113495bSYour Name tlv_src_linkid : 3, 262*5113495bSYour Name tlv_len : _TLV_MRV_DIS_LEN_WIDTH_, 263*5113495bSYour Name tlv_tag : _TLV_TAG_WIDTH_, 264*5113495bSYour Name tlv_cflg_reserved : 1; 265*5113495bSYour Name #endif 266*5113495bSYour Name }; 267*5113495bSYour Name 268*5113495bSYour Name struct tlv_mac_32_tlword_t { 269*5113495bSYour Name #ifndef WIFI_BIT_ORDER_BIG_ENDIAN 270*5113495bSYour Name uint32_t tlv_cflg_reserved : 1, 271*5113495bSYour Name tlv_tag : _TLV_TAG_WIDTH_, 272*5113495bSYour Name tlv_len : _TLV_MRV_DIS_LEN_WIDTH_, 273*5113495bSYour Name tlv_src_linkid : 3, 274*5113495bSYour Name tlv_mrv : 1, 275*5113495bSYour Name tlv_reserved : 6; 276*5113495bSYour Name #else 277*5113495bSYour Name uint32_t tlv_reserved : 6, 278*5113495bSYour Name tlv_mrv : 1, 279*5113495bSYour Name tlv_src_linkid : 3, 280*5113495bSYour Name tlv_len : _TLV_MRV_DIS_LEN_WIDTH_, 281*5113495bSYour Name tlv_tag : _TLV_TAG_WIDTH_, 282*5113495bSYour Name tlv_cflg_reserved : 1; 283*5113495bSYour Name #endif 284*5113495bSYour Name }; 285*5113495bSYour Name 286*5113495bSYour Name struct tlv_mac_usr_64_tlword_t { 287*5113495bSYour Name #ifndef WIFI_BIT_ORDER_BIG_ENDIAN 288*5113495bSYour Name uint64_t tlv_cflg_reserved : 1, 289*5113495bSYour Name tlv_tag : _TLV_TAG_WIDTH_, 290*5113495bSYour Name tlv_len : _TLV_MRV_DIS_LEN_WIDTH_, 291*5113495bSYour Name tlv_src_linkid : 3, 292*5113495bSYour Name tlv_mrv : 1, 293*5113495bSYour Name tlv_usrid : _TLV_USERID_WIDTH_, 294*5113495bSYour Name #else 295*5113495bSYour Name uint64_t tlv_usrid : _TLV_USERID_WIDTH_, 296*5113495bSYour Name tlv_mrv : 1, 297*5113495bSYour Name tlv_src_linkid : 3, 298*5113495bSYour Name tlv_len : _TLV_MRV_DIS_LEN_WIDTH_, 299*5113495bSYour Name tlv_tag : _TLV_TAG_WIDTH_, 300*5113495bSYour Name tlv_cflg_reserved : 1, 301*5113495bSYour Name #endif 302*5113495bSYour Name tlv_reserved : 32; 303*5113495bSYour Name }; 304*5113495bSYour Name 305*5113495bSYour Name struct tlv_mac_64_tlword_t { 306*5113495bSYour Name #ifndef WIFI_BIT_ORDER_BIG_ENDIAN 307*5113495bSYour Name uint64_t tlv_cflg_reserved : 1, 308*5113495bSYour Name tlv_tag : _TLV_TAG_WIDTH_, 309*5113495bSYour Name tlv_len : _TLV_MRV_DIS_LEN_WIDTH_, 310*5113495bSYour Name tlv_src_linkid : 3, 311*5113495bSYour Name tlv_mrv : 1, 312*5113495bSYour Name tlv_reserved : 38; 313*5113495bSYour Name #else 314*5113495bSYour Name uint64_t tlv_usrid_reserved : _TLV_USERID_WIDTH_, 315*5113495bSYour Name tlv_mrv : 1, 316*5113495bSYour Name tlv_src_linkid : 3, 317*5113495bSYour Name tlv_len : _TLV_MRV_DIS_LEN_WIDTH_, 318*5113495bSYour Name tlv_tag : _TLV_TAG_WIDTH_, 319*5113495bSYour Name tlv_cflg_reserved : 1, 320*5113495bSYour Name tlv_reserved : 32; 321*5113495bSYour Name #endif 322*5113495bSYour Name }; 323*5113495bSYour Name 324*5113495bSYour Name struct tlv_mac_usr_44_tlword_t { 325*5113495bSYour Name #ifndef WIFI_BIT_ORDER_BIG_ENDIAN 326*5113495bSYour Name uint64_t tlv_compression : 1, 327*5113495bSYour Name tlv_tag : _TLV_TAG_WIDTH_, 328*5113495bSYour Name tlv_len : _TLV_MRV_DIS_LEN_WIDTH_, 329*5113495bSYour Name tlv_src_linkid : 3, 330*5113495bSYour Name tlv_mrv : 1, 331*5113495bSYour Name tlv_usrid : _TLV_USERID_WIDTH_, 332*5113495bSYour Name tlv_reserved : 10, 333*5113495bSYour Name pad_44to64_bit : 22; 334*5113495bSYour Name #else 335*5113495bSYour Name uint64_t tlv_usrid : _TLV_USERID_WIDTH_, 336*5113495bSYour Name tlv_mrv : 1, 337*5113495bSYour Name tlv_src_linkid : 3, 338*5113495bSYour Name tlv_len : _TLV_MRV_DIS_LEN_WIDTH_, 339*5113495bSYour Name tlv_tag : _TLV_TAG_WIDTH_, 340*5113495bSYour Name tlv_compression : 1, 341*5113495bSYour Name pad_44to64_bit : 22, 342*5113495bSYour Name tlv_reserved : 10; 343*5113495bSYour Name #endif 344*5113495bSYour Name }; 345*5113495bSYour Name 346*5113495bSYour Name struct tlv_mac_44_tlword_t { 347*5113495bSYour Name #ifndef WIFI_BIT_ORDER_BIG_ENDIAN 348*5113495bSYour Name uint64_t tlv_compression : 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_reserved : 16, 354*5113495bSYour Name pad_44to64_bit : 22; 355*5113495bSYour Name #else 356*5113495bSYour Name uint64_t tlv_usrid_reserved : _TLV_USERID_WIDTH_, 357*5113495bSYour Name tlv_mrv : 1, 358*5113495bSYour Name tlv_src_linkid : 3, 359*5113495bSYour Name tlv_len : _TLV_MRV_DIS_LEN_WIDTH_, 360*5113495bSYour Name tlv_tag : _TLV_TAG_WIDTH_, 361*5113495bSYour Name tlv_compression : 1, 362*5113495bSYour Name pad_44to64_bit : 22, 363*5113495bSYour Name tlv_reserved : 10; 364*5113495bSYour Name #endif 365*5113495bSYour Name }; 366*5113495bSYour Name 367*5113495bSYour Name struct tlv_mac_usr_76_tlword_t { 368*5113495bSYour Name #ifndef WIFI_BIT_ORDER_BIG_ENDIAN 369*5113495bSYour Name uint64_t tlv_compression : 1, 370*5113495bSYour Name tlv_tag : _TLV_TAG_WIDTH_, 371*5113495bSYour Name tlv_len : _TLV_MRV_DIS_LEN_WIDTH_, 372*5113495bSYour Name tlv_src_linkid : 3, 373*5113495bSYour Name tlv_mrv : 1, 374*5113495bSYour Name tlv_usrid : _TLV_USERID_WIDTH_, 375*5113495bSYour Name #else 376*5113495bSYour Name uint64_t tlv_usrid : _TLV_USERID_WIDTH_, 377*5113495bSYour Name tlv_mrv : 1, 378*5113495bSYour Name tlv_src_linkid : 3, 379*5113495bSYour Name tlv_len : _TLV_MRV_DIS_LEN_WIDTH_, 380*5113495bSYour Name tlv_tag : _TLV_TAG_WIDTH_, 381*5113495bSYour Name tlv_compression : 1, 382*5113495bSYour Name #endif 383*5113495bSYour Name tlv_reserved : 32; 384*5113495bSYour Name uint64_t pad_64to128_bit : 64; 385*5113495bSYour Name }; 386*5113495bSYour Name 387*5113495bSYour Name struct tlv_mac_76_tlword_t { 388*5113495bSYour Name #ifndef WIFI_BIT_ORDER_BIG_ENDIAN 389*5113495bSYour Name uint64_t tlv_compression : 1, 390*5113495bSYour Name tlv_tag : _TLV_TAG_WIDTH_, 391*5113495bSYour Name tlv_len : _TLV_MRV_DIS_LEN_WIDTH_, 392*5113495bSYour Name tlv_src_linkid : 3, 393*5113495bSYour Name tlv_mrv : 1, 394*5113495bSYour Name tlv_reserved : 38; 395*5113495bSYour Name #else 396*5113495bSYour Name uint64_t tlv_usrid_reserved : _TLV_USERID_WIDTH_, 397*5113495bSYour Name tlv_mrv : 1, 398*5113495bSYour Name tlv_src_linkid : 3, 399*5113495bSYour Name tlv_len : _TLV_MRV_DIS_LEN_WIDTH_, 400*5113495bSYour Name tlv_tag : _TLV_TAG_WIDTH_, 401*5113495bSYour Name tlv_compression : 1, 402*5113495bSYour Name tlv_reserved : 32; 403*5113495bSYour Name #endif 404*5113495bSYour Name uint64_t pad_64to128_bit : 64; 405*5113495bSYour Name }; 406*5113495bSYour Name 407*5113495bSYour Name 408*5113495bSYour Name 409*5113495bSYour Name 410*5113495bSYour Name 411*5113495bSYour Name struct tlv_usr_c_44_tlword_t { 412*5113495bSYour Name #ifndef WIFI_BIT_ORDER_BIG_ENDIAN 413*5113495bSYour Name uint64_t tlv_compression : 1, 414*5113495bSYour Name tlv_ctag : _TLV_CTAG_WIDTH_, 415*5113495bSYour Name tlv_usrid : _TLV_USERID_WIDTH_, 416*5113495bSYour Name tlv_cdata : _TLV_CDATA_WIDTH_, 417*5113495bSYour Name pad_44to64_bit : 20; 418*5113495bSYour Name #else 419*5113495bSYour Name uint64_t tlv_cdata_lower_20 : 20, 420*5113495bSYour Name tlv_usrid : _TLV_USERID_WIDTH_, 421*5113495bSYour Name tlv_ctag : _TLV_CTAG_WIDTH_, 422*5113495bSYour Name tlv_compression : 1, 423*5113495bSYour Name pad_44to64_bit : 20, 424*5113495bSYour Name tlv_cdata_upper_12 : 12; 425*5113495bSYour Name #endif 426*5113495bSYour Name }; 427*5113495bSYour Name 428*5113495bSYour Name struct tlv_usr_c_76_tlword_t { 429*5113495bSYour Name #ifndef WIFI_BIT_ORDER_BIG_ENDIAN 430*5113495bSYour Name uint64_t tlv_compression : 1, 431*5113495bSYour Name tlv_ctag : _TLV_CTAG_WIDTH_, 432*5113495bSYour Name tlv_usrid : _TLV_USERID_WIDTH_, 433*5113495bSYour Name tlv_cdata_lower_52 : 52; 434*5113495bSYour Name uint64_t tlv_cdata_upper_12 : 12, 435*5113495bSYour Name pad_76to128_bit : 52; 436*5113495bSYour Name #else 437*5113495bSYour Name uint64_t tlv_cdata_lower_20 : 20, 438*5113495bSYour Name tlv_usrid : _TLV_USERID_WIDTH_, 439*5113495bSYour Name tlv_ctag : _TLV_CTAG_WIDTH_, 440*5113495bSYour Name tlv_compression : 1, 441*5113495bSYour Name tlv_cdata_middle_32 : 32; 442*5113495bSYour Name uint64_t pad_76to96_bit : 20, 443*5113495bSYour Name tlv_cdata_upper_12 : 12, 444*5113495bSYour Name pad_96to128_bit : 32; 445*5113495bSYour Name #endif 446*5113495bSYour Name }; 447*5113495bSYour Name 448*5113495bSYour Name 449*5113495bSYour Name 450*5113495bSYour Name 451*5113495bSYour Name 452*5113495bSYour Name 453*5113495bSYour Name 454*5113495bSYour Name struct tlv_usr_32_hdr { 455*5113495bSYour Name #ifndef WIFI_BIT_ORDER_BIG_ENDIAN 456*5113495bSYour Name uint64_t tlv_cflg_reserved : 1, 457*5113495bSYour Name tlv_tag : _TLV_TAG_WIDTH_, 458*5113495bSYour Name tlv_len : _TLV_MRV_DIS_LEN_WIDTH_, 459*5113495bSYour Name tlv_src_linkid : 3, 460*5113495bSYour Name tlv_mrv : 1, 461*5113495bSYour Name tlv_usrid : _TLV_USERID_WIDTH_, 462*5113495bSYour Name #else 463*5113495bSYour Name uint32_t tlv_usrid : _TLV_USERID_WIDTH_, 464*5113495bSYour Name tlv_mrv : 1, 465*5113495bSYour Name tlv_src_linkid : 3, 466*5113495bSYour Name tlv_len : _TLV_MRV_DIS_LEN_WIDTH_, 467*5113495bSYour Name tlv_tag : _TLV_TAG_WIDTH_, 468*5113495bSYour Name tlv_cflg_reserved : 1, 469*5113495bSYour Name #endif 470*5113495bSYour Name tlv_reserved : 32; 471*5113495bSYour Name }; 472*5113495bSYour Name 473*5113495bSYour Name struct tlv_32_hdr { 474*5113495bSYour Name #ifndef WIFI_BIT_ORDER_BIG_ENDIAN 475*5113495bSYour Name uint64_t tlv_cflg_reserved : 1, 476*5113495bSYour Name tlv_tag : _TLV_TAG_WIDTH_, 477*5113495bSYour Name tlv_len : _TLV_MRV_DIS_LEN_WIDTH_, 478*5113495bSYour Name tlv_src_linkid : 3, 479*5113495bSYour Name tlv_mrv : 1, 480*5113495bSYour Name tlv_reserved : 38; 481*5113495bSYour Name #else 482*5113495bSYour Name uint64_t tlv_usrid_reserved : _TLV_USERID_WIDTH_, 483*5113495bSYour Name tlv_mrv : 1, 484*5113495bSYour Name tlv_src_linkid : 3, 485*5113495bSYour Name tlv_len : _TLV_MRV_DIS_LEN_WIDTH_, 486*5113495bSYour Name tlv_tag : _TLV_TAG_WIDTH_, 487*5113495bSYour Name tlv_cflg_reserved : 1, 488*5113495bSYour Name tlv_reserved : 32; 489*5113495bSYour Name #endif 490*5113495bSYour Name }; 491*5113495bSYour Name 492*5113495bSYour Name 493*5113495bSYour Name 494*5113495bSYour Name 495*5113495bSYour Name 496*5113495bSYour Name 497*5113495bSYour Name 498*5113495bSYour Name 499*5113495bSYour Name struct tlv_mlo_usr_64_tlw32_t { 500*5113495bSYour Name #ifndef WIFI_BIT_ORDER_BIG_ENDIAN 501*5113495bSYour Name uint32_t tlv_cflg_reserved : 1, 502*5113495bSYour Name tlv_tag : _TLV_TAG_WIDTH_, 503*5113495bSYour Name tlv_len : _TLV_MRV_EN_LEN_WIDTH_, 504*5113495bSYour Name tlv_dst_linkid : 3, 505*5113495bSYour Name tlv_src_linkid : 3, 506*5113495bSYour Name tlv_mrv : 1, 507*5113495bSYour Name tlv_usrid : _TLV_USERID_WIDTH_; 508*5113495bSYour Name #else 509*5113495bSYour Name uint32_t tlv_usrid : _TLV_USERID_WIDTH_, 510*5113495bSYour Name tlv_mrv : 1, 511*5113495bSYour Name tlv_src_linkid : 3, 512*5113495bSYour Name tlv_dst_linkid : 3, 513*5113495bSYour Name tlv_len : _TLV_MRV_EN_LEN_WIDTH_, 514*5113495bSYour Name tlv_tag : _TLV_TAG_WIDTH_, 515*5113495bSYour Name tlv_cflg_reserved : 1; 516*5113495bSYour Name #endif 517*5113495bSYour Name uint32_t pad_32to64_bit : 32; 518*5113495bSYour Name }; 519*5113495bSYour Name 520*5113495bSYour Name struct tlv_mlo_64_tlw32_t { 521*5113495bSYour Name #ifndef WIFI_BIT_ORDER_BIG_ENDIAN 522*5113495bSYour Name uint32_t tlv_cflg_reserved : 1, 523*5113495bSYour Name tlv_tag : _TLV_TAG_WIDTH_, 524*5113495bSYour Name tlv_len : _TLV_MRV_EN_LEN_WIDTH_, 525*5113495bSYour Name tlv_dst_linkid : 3, 526*5113495bSYour Name tlv_src_linkid : 3, 527*5113495bSYour Name tlv_mrv : 1, 528*5113495bSYour Name tlv_reserved : _TLV_USERID_WIDTH_; 529*5113495bSYour Name #else 530*5113495bSYour Name uint32_t tlv_reserved : _TLV_USERID_WIDTH_, 531*5113495bSYour Name tlv_mrv : 1, 532*5113495bSYour Name tlv_src_linkid : 3, 533*5113495bSYour Name tlv_dst_linkid : 3, 534*5113495bSYour Name tlv_len : _TLV_MRV_EN_LEN_WIDTH_, 535*5113495bSYour Name tlv_tag : _TLV_TAG_WIDTH_, 536*5113495bSYour Name tlv_cflg_reserved : 1; 537*5113495bSYour Name #endif 538*5113495bSYour Name uint32_t pad_32to64_bit : 32; 539*5113495bSYour Name }; 540*5113495bSYour Name 541*5113495bSYour Name struct tlv_mac_usr_64_tlw32_t { 542*5113495bSYour Name #ifndef WIFI_BIT_ORDER_BIG_ENDIAN 543*5113495bSYour Name uint32_t tlv_cflg_reserved : 1, 544*5113495bSYour Name tlv_tag : _TLV_TAG_WIDTH_, 545*5113495bSYour Name tlv_len : _TLV_MRV_DIS_LEN_WIDTH_, 546*5113495bSYour Name tlv_src_linkid : 3, 547*5113495bSYour Name tlv_mrv : 1, 548*5113495bSYour Name tlv_usrid : _TLV_USERID_WIDTH_; 549*5113495bSYour Name #else 550*5113495bSYour Name uint32_t tlv_usrid : _TLV_USERID_WIDTH_, 551*5113495bSYour Name tlv_mrv : 1, 552*5113495bSYour Name tlv_src_linkid : 3, 553*5113495bSYour Name tlv_len : _TLV_MRV_DIS_LEN_WIDTH_, 554*5113495bSYour Name tlv_tag : _TLV_TAG_WIDTH_, 555*5113495bSYour Name tlv_cflg_reserved : 1; 556*5113495bSYour Name #endif 557*5113495bSYour Name uint32_t pad_32to64_bit : 32; 558*5113495bSYour Name }; 559*5113495bSYour Name 560*5113495bSYour Name struct tlv_mac_64_tlw32_t { 561*5113495bSYour Name #ifndef WIFI_BIT_ORDER_BIG_ENDIAN 562*5113495bSYour Name uint32_t tlv_cflg_reserved : 1, 563*5113495bSYour Name tlv_tag : _TLV_TAG_WIDTH_, 564*5113495bSYour Name tlv_len : _TLV_MRV_DIS_LEN_WIDTH_, 565*5113495bSYour Name tlv_src_linkid : 3, 566*5113495bSYour Name tlv_mrv : 1, 567*5113495bSYour Name tlv_reserved : _TLV_USERID_WIDTH_; 568*5113495bSYour Name #else 569*5113495bSYour Name uint32_t tlv_reserved : _TLV_USERID_WIDTH_, 570*5113495bSYour Name tlv_mrv : 1, 571*5113495bSYour Name tlv_src_linkid : 3, 572*5113495bSYour Name tlv_len : _TLV_MRV_DIS_LEN_WIDTH_, 573*5113495bSYour Name tlv_tag : _TLV_TAG_WIDTH_, 574*5113495bSYour Name tlv_cflg_reserved : 1; 575*5113495bSYour Name #endif 576*5113495bSYour Name uint32_t pad_32to64_bit : 32; 577*5113495bSYour Name }; 578*5113495bSYour Name 579*5113495bSYour Name 580*5113495bSYour Name 581*5113495bSYour Name 582*5113495bSYour Name 583*5113495bSYour Name struct tlv_usr_c_44_tlw32_t { 584*5113495bSYour Name #ifndef WIFI_BIT_ORDER_BIG_ENDIAN 585*5113495bSYour Name uint32_t tlv_compression : 1, 586*5113495bSYour Name tlv_ctag : _TLV_CTAG_WIDTH_, 587*5113495bSYour Name tlv_usrid : _TLV_USERID_WIDTH_, 588*5113495bSYour Name tlv_cdata_lower_20 : 20; 589*5113495bSYour Name uint32_t tlv_cdata_upper_12 : 12, 590*5113495bSYour Name pad_44to64_bit : 20; 591*5113495bSYour Name #else 592*5113495bSYour Name uint32_t tlv_cdata_lower_20 : 20, 593*5113495bSYour Name tlv_usrid : _TLV_USERID_WIDTH_, 594*5113495bSYour Name tlv_ctag : _TLV_CTAG_WIDTH_, 595*5113495bSYour Name tlv_compression : 1; 596*5113495bSYour Name uint32_t pad_44to64_bit : 20, 597*5113495bSYour Name tlv_cdata_upper_12 : 12; 598*5113495bSYour Name #endif 599*5113495bSYour Name }; 600*5113495bSYour Name 601*5113495bSYour Name struct tlv_usr_c_76_tlw32_t { 602*5113495bSYour Name #ifndef WIFI_BIT_ORDER_BIG_ENDIAN 603*5113495bSYour Name uint32_t tlv_compression : 1, 604*5113495bSYour Name tlv_ctag : _TLV_CTAG_WIDTH_, 605*5113495bSYour Name tlv_usrid : _TLV_USERID_WIDTH_, 606*5113495bSYour Name tlv_cdata_lower_20 : 20; 607*5113495bSYour Name uint32_t tlv_cdata_middle_32 : 32; 608*5113495bSYour Name uint32_t tlv_cdata_upper_12 : 12, 609*5113495bSYour Name pad_76to96_bit : 20; 610*5113495bSYour Name uint32_t pad_96to128_bit : 32; 611*5113495bSYour Name #else 612*5113495bSYour Name uint32_t tlv_cdata_lower_20 : 20, 613*5113495bSYour Name tlv_usrid : _TLV_USERID_WIDTH_, 614*5113495bSYour Name tlv_ctag : _TLV_CTAG_WIDTH_, 615*5113495bSYour Name tlv_compression : 1; 616*5113495bSYour Name uint32_t tlv_cdata_middle_32 : 32; 617*5113495bSYour Name uint32_t pad_76to96_bit : 20, 618*5113495bSYour Name tlv_cdata_upper_12 : 12; 619*5113495bSYour Name uint32_t pad_96to128_bit : 32; 620*5113495bSYour Name #endif 621*5113495bSYour Name }; 622*5113495bSYour Name 623*5113495bSYour Name 624*5113495bSYour Name 625*5113495bSYour Name #endif 626