tlv_hdr.h 28 KB

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