xref: /wlan-driver/fw-api/hw/qca5424/tlv_hdr.h (revision 5113495b16420b49004c444715d2daae2066e7dc)
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