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