vht_sig_b_mu160_info.h 22 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490
  1. /*
  2. * Copyright (c) 2023 Qualcomm Innovation Center, Inc. All rights reserved.
  3. *
  4. * Permission to use, copy, modify, and/or distribute this software for any
  5. * purpose with or without fee is hereby granted, provided that the above
  6. * copyright notice and this permission notice appear in all copies.
  7. *
  8. * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
  9. * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
  10. * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
  11. * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
  12. * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
  13. * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
  14. * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
  15. */
  16. #ifndef _VHT_SIG_B_MU160_INFO_H_
  17. #define _VHT_SIG_B_MU160_INFO_H_
  18. #if !defined(__ASSEMBLER__)
  19. #endif
  20. #define NUM_OF_DWORDS_VHT_SIG_B_MU160_INFO 8
  21. struct vht_sig_b_mu160_info {
  22. #ifndef WIFI_BIT_ORDER_BIG_ENDIAN
  23. uint32_t length : 19, // [18:0]
  24. mcs : 4, // [22:19]
  25. tail : 6, // [28:23]
  26. reserved_0 : 3; // [31:29]
  27. uint32_t length_copy_a : 19, // [18:0]
  28. mcs_copy_a : 4, // [22:19]
  29. tail_copy_a : 6, // [28:23]
  30. reserved_1 : 3; // [31:29]
  31. uint32_t length_copy_b : 19, // [18:0]
  32. mcs_copy_b : 4, // [22:19]
  33. tail_copy_b : 6, // [28:23]
  34. reserved_2 : 3; // [31:29]
  35. uint32_t length_copy_c : 19, // [18:0]
  36. mcs_copy_c : 4, // [22:19]
  37. tail_copy_c : 6, // [28:23]
  38. reserved_3 : 3; // [31:29]
  39. uint32_t length_copy_d : 19, // [18:0]
  40. mcs_copy_d : 4, // [22:19]
  41. tail_copy_d : 6, // [28:23]
  42. reserved_4 : 3; // [31:29]
  43. uint32_t length_copy_e : 19, // [18:0]
  44. mcs_copy_e : 4, // [22:19]
  45. tail_copy_e : 6, // [28:23]
  46. reserved_5 : 3; // [31:29]
  47. uint32_t length_copy_f : 19, // [18:0]
  48. mcs_copy_f : 4, // [22:19]
  49. tail_copy_f : 6, // [28:23]
  50. mu_user_number : 3; // [31:29]
  51. uint32_t length_copy_g : 19, // [18:0]
  52. mcs_copy_g : 4, // [22:19]
  53. tail_copy_g : 6, // [28:23]
  54. reserved_7 : 3; // [31:29]
  55. #else
  56. uint32_t reserved_0 : 3, // [31:29]
  57. tail : 6, // [28:23]
  58. mcs : 4, // [22:19]
  59. length : 19; // [18:0]
  60. uint32_t reserved_1 : 3, // [31:29]
  61. tail_copy_a : 6, // [28:23]
  62. mcs_copy_a : 4, // [22:19]
  63. length_copy_a : 19; // [18:0]
  64. uint32_t reserved_2 : 3, // [31:29]
  65. tail_copy_b : 6, // [28:23]
  66. mcs_copy_b : 4, // [22:19]
  67. length_copy_b : 19; // [18:0]
  68. uint32_t reserved_3 : 3, // [31:29]
  69. tail_copy_c : 6, // [28:23]
  70. mcs_copy_c : 4, // [22:19]
  71. length_copy_c : 19; // [18:0]
  72. uint32_t reserved_4 : 3, // [31:29]
  73. tail_copy_d : 6, // [28:23]
  74. mcs_copy_d : 4, // [22:19]
  75. length_copy_d : 19; // [18:0]
  76. uint32_t reserved_5 : 3, // [31:29]
  77. tail_copy_e : 6, // [28:23]
  78. mcs_copy_e : 4, // [22:19]
  79. length_copy_e : 19; // [18:0]
  80. uint32_t mu_user_number : 3, // [31:29]
  81. tail_copy_f : 6, // [28:23]
  82. mcs_copy_f : 4, // [22:19]
  83. length_copy_f : 19; // [18:0]
  84. uint32_t reserved_7 : 3, // [31:29]
  85. tail_copy_g : 6, // [28:23]
  86. mcs_copy_g : 4, // [22:19]
  87. length_copy_g : 19; // [18:0]
  88. #endif
  89. };
  90. /* Description LENGTH
  91. VHT-SIG-B Length (in units of 4 octets) = ceiling (LENGTH/4)
  92. <legal all>
  93. */
  94. #define VHT_SIG_B_MU160_INFO_LENGTH_OFFSET 0x00000000
  95. #define VHT_SIG_B_MU160_INFO_LENGTH_LSB 0
  96. #define VHT_SIG_B_MU160_INFO_LENGTH_MSB 18
  97. #define VHT_SIG_B_MU160_INFO_LENGTH_MASK 0x0007ffff
  98. /* Description MCS
  99. Modulation as described in vht_sig_a mcs field <legal 0-11>
  100. */
  101. #define VHT_SIG_B_MU160_INFO_MCS_OFFSET 0x00000000
  102. #define VHT_SIG_B_MU160_INFO_MCS_LSB 19
  103. #define VHT_SIG_B_MU160_INFO_MCS_MSB 22
  104. #define VHT_SIG_B_MU160_INFO_MCS_MASK 0x00780000
  105. /* Description TAIL
  106. Used to terminate the trellis of the convolutional decoder.
  107. Set to 0. <legal 0>
  108. */
  109. #define VHT_SIG_B_MU160_INFO_TAIL_OFFSET 0x00000000
  110. #define VHT_SIG_B_MU160_INFO_TAIL_LSB 23
  111. #define VHT_SIG_B_MU160_INFO_TAIL_MSB 28
  112. #define VHT_SIG_B_MU160_INFO_TAIL_MASK 0x1f800000
  113. /* Description RESERVED_0
  114. Not part of VHT-SIG-B.
  115. Reserved: Set to 0 and ignored on receive <legal 0>
  116. */
  117. #define VHT_SIG_B_MU160_INFO_RESERVED_0_OFFSET 0x00000000
  118. #define VHT_SIG_B_MU160_INFO_RESERVED_0_LSB 29
  119. #define VHT_SIG_B_MU160_INFO_RESERVED_0_MSB 31
  120. #define VHT_SIG_B_MU160_INFO_RESERVED_0_MASK 0xe0000000
  121. /* Description LENGTH_COPY_A
  122. Same as "length". This field is not valid for RX packets
  123. <legal all>
  124. */
  125. #define VHT_SIG_B_MU160_INFO_LENGTH_COPY_A_OFFSET 0x00000004
  126. #define VHT_SIG_B_MU160_INFO_LENGTH_COPY_A_LSB 0
  127. #define VHT_SIG_B_MU160_INFO_LENGTH_COPY_A_MSB 18
  128. #define VHT_SIG_B_MU160_INFO_LENGTH_COPY_A_MASK 0x0007ffff
  129. /* Description MCS_COPY_A
  130. Same as "mcs". This field is not valid for RX packets <legal
  131. 0-11>
  132. */
  133. #define VHT_SIG_B_MU160_INFO_MCS_COPY_A_OFFSET 0x00000004
  134. #define VHT_SIG_B_MU160_INFO_MCS_COPY_A_LSB 19
  135. #define VHT_SIG_B_MU160_INFO_MCS_COPY_A_MSB 22
  136. #define VHT_SIG_B_MU160_INFO_MCS_COPY_A_MASK 0x00780000
  137. /* Description TAIL_COPY_A
  138. Same as "tail". This field is not valid for RX packets <legal
  139. 0>
  140. */
  141. #define VHT_SIG_B_MU160_INFO_TAIL_COPY_A_OFFSET 0x00000004
  142. #define VHT_SIG_B_MU160_INFO_TAIL_COPY_A_LSB 23
  143. #define VHT_SIG_B_MU160_INFO_TAIL_COPY_A_MSB 28
  144. #define VHT_SIG_B_MU160_INFO_TAIL_COPY_A_MASK 0x1f800000
  145. /* Description RESERVED_1
  146. Not part of VHT-SIG-B.
  147. Reserved: Set to 0 and ignored on receive <legal 0>
  148. */
  149. #define VHT_SIG_B_MU160_INFO_RESERVED_1_OFFSET 0x00000004
  150. #define VHT_SIG_B_MU160_INFO_RESERVED_1_LSB 29
  151. #define VHT_SIG_B_MU160_INFO_RESERVED_1_MSB 31
  152. #define VHT_SIG_B_MU160_INFO_RESERVED_1_MASK 0xe0000000
  153. /* Description LENGTH_COPY_B
  154. Same as "length". This field is not valid for RX packets. <legal
  155. all>
  156. */
  157. #define VHT_SIG_B_MU160_INFO_LENGTH_COPY_B_OFFSET 0x00000008
  158. #define VHT_SIG_B_MU160_INFO_LENGTH_COPY_B_LSB 0
  159. #define VHT_SIG_B_MU160_INFO_LENGTH_COPY_B_MSB 18
  160. #define VHT_SIG_B_MU160_INFO_LENGTH_COPY_B_MASK 0x0007ffff
  161. /* Description MCS_COPY_B
  162. Same as "mcs". This field is not valid for RX packets.
  163. <legal 0-11>
  164. */
  165. #define VHT_SIG_B_MU160_INFO_MCS_COPY_B_OFFSET 0x00000008
  166. #define VHT_SIG_B_MU160_INFO_MCS_COPY_B_LSB 19
  167. #define VHT_SIG_B_MU160_INFO_MCS_COPY_B_MSB 22
  168. #define VHT_SIG_B_MU160_INFO_MCS_COPY_B_MASK 0x00780000
  169. /* Description TAIL_COPY_B
  170. Same as "tail". This field is not valid for RX packets.
  171. <legal 0>
  172. */
  173. #define VHT_SIG_B_MU160_INFO_TAIL_COPY_B_OFFSET 0x00000008
  174. #define VHT_SIG_B_MU160_INFO_TAIL_COPY_B_LSB 23
  175. #define VHT_SIG_B_MU160_INFO_TAIL_COPY_B_MSB 28
  176. #define VHT_SIG_B_MU160_INFO_TAIL_COPY_B_MASK 0x1f800000
  177. /* Description RESERVED_2
  178. Not part of VHT-SIG-B.
  179. Reserved: Set to 0 and ignored on receive <legal 0>
  180. */
  181. #define VHT_SIG_B_MU160_INFO_RESERVED_2_OFFSET 0x00000008
  182. #define VHT_SIG_B_MU160_INFO_RESERVED_2_LSB 29
  183. #define VHT_SIG_B_MU160_INFO_RESERVED_2_MSB 31
  184. #define VHT_SIG_B_MU160_INFO_RESERVED_2_MASK 0xe0000000
  185. /* Description LENGTH_COPY_C
  186. Same as "length". This field is not valid for RX packets. <legal
  187. all>
  188. */
  189. #define VHT_SIG_B_MU160_INFO_LENGTH_COPY_C_OFFSET 0x0000000c
  190. #define VHT_SIG_B_MU160_INFO_LENGTH_COPY_C_LSB 0
  191. #define VHT_SIG_B_MU160_INFO_LENGTH_COPY_C_MSB 18
  192. #define VHT_SIG_B_MU160_INFO_LENGTH_COPY_C_MASK 0x0007ffff
  193. /* Description MCS_COPY_C
  194. Same as "mcs". This field is not valid for RX packets.
  195. <legal 0-11>
  196. */
  197. #define VHT_SIG_B_MU160_INFO_MCS_COPY_C_OFFSET 0x0000000c
  198. #define VHT_SIG_B_MU160_INFO_MCS_COPY_C_LSB 19
  199. #define VHT_SIG_B_MU160_INFO_MCS_COPY_C_MSB 22
  200. #define VHT_SIG_B_MU160_INFO_MCS_COPY_C_MASK 0x00780000
  201. /* Description TAIL_COPY_C
  202. Same as "tail". This field is not valid for RX packets.
  203. <legal 0>
  204. */
  205. #define VHT_SIG_B_MU160_INFO_TAIL_COPY_C_OFFSET 0x0000000c
  206. #define VHT_SIG_B_MU160_INFO_TAIL_COPY_C_LSB 23
  207. #define VHT_SIG_B_MU160_INFO_TAIL_COPY_C_MSB 28
  208. #define VHT_SIG_B_MU160_INFO_TAIL_COPY_C_MASK 0x1f800000
  209. /* Description RESERVED_3
  210. Not part of VHT-SIG-B.
  211. Reserved: Set to 0 and ignored on receive <legal 0>
  212. */
  213. #define VHT_SIG_B_MU160_INFO_RESERVED_3_OFFSET 0x0000000c
  214. #define VHT_SIG_B_MU160_INFO_RESERVED_3_LSB 29
  215. #define VHT_SIG_B_MU160_INFO_RESERVED_3_MSB 31
  216. #define VHT_SIG_B_MU160_INFO_RESERVED_3_MASK 0xe0000000
  217. /* Description LENGTH_COPY_D
  218. Same as "length". This field is not valid for RX packets. <legal
  219. all>
  220. */
  221. #define VHT_SIG_B_MU160_INFO_LENGTH_COPY_D_OFFSET 0x00000010
  222. #define VHT_SIG_B_MU160_INFO_LENGTH_COPY_D_LSB 0
  223. #define VHT_SIG_B_MU160_INFO_LENGTH_COPY_D_MSB 18
  224. #define VHT_SIG_B_MU160_INFO_LENGTH_COPY_D_MASK 0x0007ffff
  225. /* Description MCS_COPY_D
  226. Same as "mcs". This field is not valid for RX packets.
  227. <legal 0-11>
  228. */
  229. #define VHT_SIG_B_MU160_INFO_MCS_COPY_D_OFFSET 0x00000010
  230. #define VHT_SIG_B_MU160_INFO_MCS_COPY_D_LSB 19
  231. #define VHT_SIG_B_MU160_INFO_MCS_COPY_D_MSB 22
  232. #define VHT_SIG_B_MU160_INFO_MCS_COPY_D_MASK 0x00780000
  233. /* Description TAIL_COPY_D
  234. Same as "tail". This field is not valid for RX packets.
  235. <legal 0>
  236. */
  237. #define VHT_SIG_B_MU160_INFO_TAIL_COPY_D_OFFSET 0x00000010
  238. #define VHT_SIG_B_MU160_INFO_TAIL_COPY_D_LSB 23
  239. #define VHT_SIG_B_MU160_INFO_TAIL_COPY_D_MSB 28
  240. #define VHT_SIG_B_MU160_INFO_TAIL_COPY_D_MASK 0x1f800000
  241. /* Description RESERVED_4
  242. Not part of VHT-SIG-B.
  243. Reserved: Set to 0 and ignored on receive <legal 0>
  244. */
  245. #define VHT_SIG_B_MU160_INFO_RESERVED_4_OFFSET 0x00000010
  246. #define VHT_SIG_B_MU160_INFO_RESERVED_4_LSB 29
  247. #define VHT_SIG_B_MU160_INFO_RESERVED_4_MSB 31
  248. #define VHT_SIG_B_MU160_INFO_RESERVED_4_MASK 0xe0000000
  249. /* Description LENGTH_COPY_E
  250. Same as "length". This field is not valid for RX packets. <legal
  251. all>
  252. */
  253. #define VHT_SIG_B_MU160_INFO_LENGTH_COPY_E_OFFSET 0x00000014
  254. #define VHT_SIG_B_MU160_INFO_LENGTH_COPY_E_LSB 0
  255. #define VHT_SIG_B_MU160_INFO_LENGTH_COPY_E_MSB 18
  256. #define VHT_SIG_B_MU160_INFO_LENGTH_COPY_E_MASK 0x0007ffff
  257. /* Description MCS_COPY_E
  258. Same as "mcs". This field is not valid for RX packets.
  259. <legal 0-11>
  260. */
  261. #define VHT_SIG_B_MU160_INFO_MCS_COPY_E_OFFSET 0x00000014
  262. #define VHT_SIG_B_MU160_INFO_MCS_COPY_E_LSB 19
  263. #define VHT_SIG_B_MU160_INFO_MCS_COPY_E_MSB 22
  264. #define VHT_SIG_B_MU160_INFO_MCS_COPY_E_MASK 0x00780000
  265. /* Description TAIL_COPY_E
  266. Same as "tail". This field is not valid for RX packets.
  267. <legal 0>
  268. */
  269. #define VHT_SIG_B_MU160_INFO_TAIL_COPY_E_OFFSET 0x00000014
  270. #define VHT_SIG_B_MU160_INFO_TAIL_COPY_E_LSB 23
  271. #define VHT_SIG_B_MU160_INFO_TAIL_COPY_E_MSB 28
  272. #define VHT_SIG_B_MU160_INFO_TAIL_COPY_E_MASK 0x1f800000
  273. /* Description RESERVED_5
  274. Not part of VHT-SIG-B.
  275. Reserved: Set to 0 and ignored on receive <legal 0>
  276. */
  277. #define VHT_SIG_B_MU160_INFO_RESERVED_5_OFFSET 0x00000014
  278. #define VHT_SIG_B_MU160_INFO_RESERVED_5_LSB 29
  279. #define VHT_SIG_B_MU160_INFO_RESERVED_5_MSB 31
  280. #define VHT_SIG_B_MU160_INFO_RESERVED_5_MASK 0xe0000000
  281. /* Description LENGTH_COPY_F
  282. Same as "length". This field is not valid for RX packets. <legal
  283. all>
  284. */
  285. #define VHT_SIG_B_MU160_INFO_LENGTH_COPY_F_OFFSET 0x00000018
  286. #define VHT_SIG_B_MU160_INFO_LENGTH_COPY_F_LSB 0
  287. #define VHT_SIG_B_MU160_INFO_LENGTH_COPY_F_MSB 18
  288. #define VHT_SIG_B_MU160_INFO_LENGTH_COPY_F_MASK 0x0007ffff
  289. /* Description MCS_COPY_F
  290. Same as "mcs". This field is not valid for RX packets.
  291. <legal 0-11>
  292. */
  293. #define VHT_SIG_B_MU160_INFO_MCS_COPY_F_OFFSET 0x00000018
  294. #define VHT_SIG_B_MU160_INFO_MCS_COPY_F_LSB 19
  295. #define VHT_SIG_B_MU160_INFO_MCS_COPY_F_MSB 22
  296. #define VHT_SIG_B_MU160_INFO_MCS_COPY_F_MASK 0x00780000
  297. /* Description TAIL_COPY_F
  298. Same as "tail". This field is not valid for RX packets.
  299. <legal 0>
  300. */
  301. #define VHT_SIG_B_MU160_INFO_TAIL_COPY_F_OFFSET 0x00000018
  302. #define VHT_SIG_B_MU160_INFO_TAIL_COPY_F_LSB 23
  303. #define VHT_SIG_B_MU160_INFO_TAIL_COPY_F_MSB 28
  304. #define VHT_SIG_B_MU160_INFO_TAIL_COPY_F_MASK 0x1f800000
  305. /* Description MU_USER_NUMBER
  306. Not part of VHT-SIG-B.
  307. Mapping from user number (BFer hardware specific) to mu_user_number.
  308. The reader is directed to the previous chapter (User Number)
  309. for a definition of the terms user and mu_user. <legal
  310. 0-3>
  311. */
  312. #define VHT_SIG_B_MU160_INFO_MU_USER_NUMBER_OFFSET 0x00000018
  313. #define VHT_SIG_B_MU160_INFO_MU_USER_NUMBER_LSB 29
  314. #define VHT_SIG_B_MU160_INFO_MU_USER_NUMBER_MSB 31
  315. #define VHT_SIG_B_MU160_INFO_MU_USER_NUMBER_MASK 0xe0000000
  316. /* Description LENGTH_COPY_G
  317. Same as "length". This field is not valid for RX packets. <legal
  318. all>
  319. */
  320. #define VHT_SIG_B_MU160_INFO_LENGTH_COPY_G_OFFSET 0x0000001c
  321. #define VHT_SIG_B_MU160_INFO_LENGTH_COPY_G_LSB 0
  322. #define VHT_SIG_B_MU160_INFO_LENGTH_COPY_G_MSB 18
  323. #define VHT_SIG_B_MU160_INFO_LENGTH_COPY_G_MASK 0x0007ffff
  324. /* Description MCS_COPY_G
  325. Same as "mcs". This field is not valid for RX packets.
  326. <legal 0-11>
  327. */
  328. #define VHT_SIG_B_MU160_INFO_MCS_COPY_G_OFFSET 0x0000001c
  329. #define VHT_SIG_B_MU160_INFO_MCS_COPY_G_LSB 19
  330. #define VHT_SIG_B_MU160_INFO_MCS_COPY_G_MSB 22
  331. #define VHT_SIG_B_MU160_INFO_MCS_COPY_G_MASK 0x00780000
  332. /* Description TAIL_COPY_G
  333. Same as "tail". This field is not valid for RX packets.
  334. <legal 0>
  335. */
  336. #define VHT_SIG_B_MU160_INFO_TAIL_COPY_G_OFFSET 0x0000001c
  337. #define VHT_SIG_B_MU160_INFO_TAIL_COPY_G_LSB 23
  338. #define VHT_SIG_B_MU160_INFO_TAIL_COPY_G_MSB 28
  339. #define VHT_SIG_B_MU160_INFO_TAIL_COPY_G_MASK 0x1f800000
  340. /* Description RESERVED_7
  341. <legal 0>
  342. */
  343. #define VHT_SIG_B_MU160_INFO_RESERVED_7_OFFSET 0x0000001c
  344. #define VHT_SIG_B_MU160_INFO_RESERVED_7_LSB 29
  345. #define VHT_SIG_B_MU160_INFO_RESERVED_7_MSB 31
  346. #define VHT_SIG_B_MU160_INFO_RESERVED_7_MASK 0xe0000000
  347. #endif // VHT_SIG_B_MU160_INFO