tlv_hdr.h 28 KB

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