receive_user_info.h 29 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715
  1. /* Copyright (c) 2022, 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 _RECEIVE_USER_INFO_H_
  16. #define _RECEIVE_USER_INFO_H_
  17. #if !defined(__ASSEMBLER__)
  18. #endif
  19. #define NUM_OF_DWORDS_RECEIVE_USER_INFO 8
  20. struct receive_user_info {
  21. #ifndef WIFI_BIT_ORDER_BIG_ENDIAN
  22. uint32_t phy_ppdu_id : 16, // [15:0]
  23. user_rssi : 8, // [23:16]
  24. pkt_type : 4, // [27:24]
  25. stbc : 1, // [28:28]
  26. reception_type : 3; // [31:29]
  27. uint32_t rate_mcs : 4, // [3:0]
  28. sgi : 2, // [5:4]
  29. he_ranging_ndp : 1, // [6:6]
  30. reserved_1a : 1, // [7:7]
  31. mimo_ss_bitmap : 8, // [15:8]
  32. receive_bandwidth : 3, // [18:16]
  33. reserved_1b : 5, // [23:19]
  34. dl_ofdma_user_index : 8; // [31:24]
  35. uint32_t dl_ofdma_content_channel : 1, // [0:0]
  36. reserved_2a : 7, // [7:1]
  37. nss : 3, // [10:8]
  38. stream_offset : 3, // [13:11]
  39. sta_dcm : 1, // [14:14]
  40. ldpc : 1, // [15:15]
  41. ru_type_80_0 : 4, // [19:16]
  42. ru_type_80_1 : 4, // [23:20]
  43. ru_type_80_2 : 4, // [27:24]
  44. ru_type_80_3 : 4; // [31:28]
  45. uint32_t ru_start_index_80_0 : 6, // [5:0]
  46. reserved_3a : 2, // [7:6]
  47. ru_start_index_80_1 : 6, // [13:8]
  48. reserved_3b : 2, // [15:14]
  49. ru_start_index_80_2 : 6, // [21:16]
  50. reserved_3c : 2, // [23:22]
  51. ru_start_index_80_3 : 6, // [29:24]
  52. reserved_3d : 2; // [31:30]
  53. uint32_t user_fd_rssi_seg0 : 32; // [31:0]
  54. uint32_t user_fd_rssi_seg1 : 32; // [31:0]
  55. uint32_t user_fd_rssi_seg2 : 32; // [31:0]
  56. uint32_t user_fd_rssi_seg3 : 32; // [31:0]
  57. #else
  58. uint32_t reception_type : 3, // [31:29]
  59. stbc : 1, // [28:28]
  60. pkt_type : 4, // [27:24]
  61. user_rssi : 8, // [23:16]
  62. phy_ppdu_id : 16; // [15:0]
  63. uint32_t dl_ofdma_user_index : 8, // [31:24]
  64. reserved_1b : 5, // [23:19]
  65. receive_bandwidth : 3, // [18:16]
  66. mimo_ss_bitmap : 8, // [15:8]
  67. reserved_1a : 1, // [7:7]
  68. he_ranging_ndp : 1, // [6:6]
  69. sgi : 2, // [5:4]
  70. rate_mcs : 4; // [3:0]
  71. uint32_t ru_type_80_3 : 4, // [31:28]
  72. ru_type_80_2 : 4, // [27:24]
  73. ru_type_80_1 : 4, // [23:20]
  74. ru_type_80_0 : 4, // [19:16]
  75. ldpc : 1, // [15:15]
  76. sta_dcm : 1, // [14:14]
  77. stream_offset : 3, // [13:11]
  78. nss : 3, // [10:8]
  79. reserved_2a : 7, // [7:1]
  80. dl_ofdma_content_channel : 1; // [0:0]
  81. uint32_t reserved_3d : 2, // [31:30]
  82. ru_start_index_80_3 : 6, // [29:24]
  83. reserved_3c : 2, // [23:22]
  84. ru_start_index_80_2 : 6, // [21:16]
  85. reserved_3b : 2, // [15:14]
  86. ru_start_index_80_1 : 6, // [13:8]
  87. reserved_3a : 2, // [7:6]
  88. ru_start_index_80_0 : 6; // [5:0]
  89. uint32_t user_fd_rssi_seg0 : 32; // [31:0]
  90. uint32_t user_fd_rssi_seg1 : 32; // [31:0]
  91. uint32_t user_fd_rssi_seg2 : 32; // [31:0]
  92. uint32_t user_fd_rssi_seg3 : 32; // [31:0]
  93. #endif
  94. };
  95. /* Description PHY_PPDU_ID
  96. A ppdu counter value that PHY increments for every PPDU
  97. received. The counter value wraps around
  98. <legal all>
  99. */
  100. #define RECEIVE_USER_INFO_PHY_PPDU_ID_OFFSET 0x00000000
  101. #define RECEIVE_USER_INFO_PHY_PPDU_ID_LSB 0
  102. #define RECEIVE_USER_INFO_PHY_PPDU_ID_MSB 15
  103. #define RECEIVE_USER_INFO_PHY_PPDU_ID_MASK 0x0000ffff
  104. /* Description USER_RSSI
  105. RSSI for this user
  106. Frequency domain RSSI measurement for this user. Based on
  107. the channel estimate.
  108. <legal all>
  109. */
  110. #define RECEIVE_USER_INFO_USER_RSSI_OFFSET 0x00000000
  111. #define RECEIVE_USER_INFO_USER_RSSI_LSB 16
  112. #define RECEIVE_USER_INFO_USER_RSSI_MSB 23
  113. #define RECEIVE_USER_INFO_USER_RSSI_MASK 0x00ff0000
  114. /* Description PKT_TYPE
  115. Packet type:
  116. <enum 0 dot11a>802.11a PPDU type
  117. <enum 1 dot11b>802.11b PPDU type
  118. <enum 2 dot11n_mm>802.11n Mixed Mode PPDU type
  119. <enum 3 dot11ac>802.11ac PPDU type
  120. <enum 4 dot11ax>802.11ax PPDU type
  121. <enum 5 dot11ba>802.11ba (WUR) PPDU type
  122. <enum 6 dot11be>802.11be PPDU type
  123. <enum 7 dot11az>802.11az (ranging) PPDU type
  124. <enum 8 dot11n_gf>802.11n Green Field PPDU type (unsupported
  125. & aborted)
  126. */
  127. #define RECEIVE_USER_INFO_PKT_TYPE_OFFSET 0x00000000
  128. #define RECEIVE_USER_INFO_PKT_TYPE_LSB 24
  129. #define RECEIVE_USER_INFO_PKT_TYPE_MSB 27
  130. #define RECEIVE_USER_INFO_PKT_TYPE_MASK 0x0f000000
  131. /* Description STBC
  132. When set, use STBC transmission rates
  133. */
  134. #define RECEIVE_USER_INFO_STBC_OFFSET 0x00000000
  135. #define RECEIVE_USER_INFO_STBC_LSB 28
  136. #define RECEIVE_USER_INFO_STBC_MSB 28
  137. #define RECEIVE_USER_INFO_STBC_MASK 0x10000000
  138. /* Description RECEPTION_TYPE
  139. Indicates what type of reception this is.
  140. <enum 0 reception_type_SU > Basic SU reception (not
  141. part of OFDMA or MU-MIMO)
  142. <enum 1 reception_type_MU_MIMO > This is related to
  143. DL type of reception
  144. <enum 2 reception_type_MU_OFDMA > This is related to
  145. DL type of reception
  146. <enum 3 reception_type_MU_OFDMA_MIMO > This is related
  147. to DL type of reception
  148. <enum 4 reception_type_UL_MU_MIMO > This is related
  149. to UL type of reception
  150. <enum 5 reception_type_UL_MU_OFDMA > This is related
  151. to UL type of reception
  152. <enum 6 reception_type_UL_MU_OFDMA_MIMO > This is related
  153. to UL type of reception
  154. <legal 0-6>
  155. */
  156. #define RECEIVE_USER_INFO_RECEPTION_TYPE_OFFSET 0x00000000
  157. #define RECEIVE_USER_INFO_RECEPTION_TYPE_LSB 29
  158. #define RECEIVE_USER_INFO_RECEPTION_TYPE_MSB 31
  159. #define RECEIVE_USER_INFO_RECEPTION_TYPE_MASK 0xe0000000
  160. /* Description RATE_MCS
  161. For details, refer to MCS_TYPE description
  162. <legal all>
  163. */
  164. #define RECEIVE_USER_INFO_RATE_MCS_OFFSET 0x00000004
  165. #define RECEIVE_USER_INFO_RATE_MCS_LSB 0
  166. #define RECEIVE_USER_INFO_RATE_MCS_MSB 3
  167. #define RECEIVE_USER_INFO_RATE_MCS_MASK 0x0000000f
  168. /* Description SGI
  169. Field only valid when pkt type is HT, VHT or HE.
  170. <enum 0 gi_0_8_us > Legacy normal GI. Can also be used
  171. for HE
  172. <enum 1 gi_0_4_us > Legacy short GI. Can also be used
  173. for HE
  174. <enum 2 gi_1_6_us > HE related GI
  175. <enum 3 gi_3_2_us > HE related GI
  176. <legal 0 - 3>
  177. */
  178. #define RECEIVE_USER_INFO_SGI_OFFSET 0x00000004
  179. #define RECEIVE_USER_INFO_SGI_LSB 4
  180. #define RECEIVE_USER_INFO_SGI_MSB 5
  181. #define RECEIVE_USER_INFO_SGI_MASK 0x00000030
  182. /* Description HE_RANGING_NDP
  183. Set to 1 for expected HE TB ranging NDP Rx in response to
  184. sounding/secure sounding ranging Trigger Tx
  185. <legal all>
  186. */
  187. #define RECEIVE_USER_INFO_HE_RANGING_NDP_OFFSET 0x00000004
  188. #define RECEIVE_USER_INFO_HE_RANGING_NDP_LSB 6
  189. #define RECEIVE_USER_INFO_HE_RANGING_NDP_MSB 6
  190. #define RECEIVE_USER_INFO_HE_RANGING_NDP_MASK 0x00000040
  191. /* Description RESERVED_1A
  192. <legal 0>
  193. */
  194. #define RECEIVE_USER_INFO_RESERVED_1A_OFFSET 0x00000004
  195. #define RECEIVE_USER_INFO_RESERVED_1A_LSB 7
  196. #define RECEIVE_USER_INFO_RESERVED_1A_MSB 7
  197. #define RECEIVE_USER_INFO_RESERVED_1A_MASK 0x00000080
  198. /* Description MIMO_SS_BITMAP
  199. Bitmap, with each bit indicating if the related spatial
  200. stream is used for this STA
  201. LSB related to SS 0
  202. 0: spatial stream not used for this reception
  203. 1: spatial stream used for this reception
  204. <legal all>
  205. */
  206. #define RECEIVE_USER_INFO_MIMO_SS_BITMAP_OFFSET 0x00000004
  207. #define RECEIVE_USER_INFO_MIMO_SS_BITMAP_LSB 8
  208. #define RECEIVE_USER_INFO_MIMO_SS_BITMAP_MSB 15
  209. #define RECEIVE_USER_INFO_MIMO_SS_BITMAP_MASK 0x0000ff00
  210. /* Description RECEIVE_BANDWIDTH
  211. Full receive Bandwidth
  212. <enum 0 20_mhz>20 Mhz BW
  213. <enum 1 40_mhz>40 Mhz BW
  214. <enum 2 80_mhz>80 Mhz BW
  215. <enum 3 160_mhz>160 Mhz BW
  216. <enum 4 320_mhz>320 Mhz BW
  217. <enum 5 240_mhz>240 Mhz BW
  218. */
  219. #define RECEIVE_USER_INFO_RECEIVE_BANDWIDTH_OFFSET 0x00000004
  220. #define RECEIVE_USER_INFO_RECEIVE_BANDWIDTH_LSB 16
  221. #define RECEIVE_USER_INFO_RECEIVE_BANDWIDTH_MSB 18
  222. #define RECEIVE_USER_INFO_RECEIVE_BANDWIDTH_MASK 0x00070000
  223. /* Description RESERVED_1B
  224. <legal 0>
  225. */
  226. #define RECEIVE_USER_INFO_RESERVED_1B_OFFSET 0x00000004
  227. #define RECEIVE_USER_INFO_RESERVED_1B_LSB 19
  228. #define RECEIVE_USER_INFO_RESERVED_1B_MSB 23
  229. #define RECEIVE_USER_INFO_RESERVED_1B_MASK 0x00f80000
  230. /* Description DL_OFDMA_USER_INDEX
  231. Field only valid in the of DL MU OFDMA reception
  232. The user number within the RU_allocation.
  233. This is needed for SW to determine the exact RU position
  234. within the reception.
  235. <legal all>
  236. */
  237. #define RECEIVE_USER_INFO_DL_OFDMA_USER_INDEX_OFFSET 0x00000004
  238. #define RECEIVE_USER_INFO_DL_OFDMA_USER_INDEX_LSB 24
  239. #define RECEIVE_USER_INFO_DL_OFDMA_USER_INDEX_MSB 31
  240. #define RECEIVE_USER_INFO_DL_OFDMA_USER_INDEX_MASK 0xff000000
  241. /* Description DL_OFDMA_CONTENT_CHANNEL
  242. Field only valid in the of DL MU OFDMA/MIMO reception
  243. In case of DL MU reception, this field indicates the content
  244. channel number where PHY found the RU information for this
  245. user
  246. This is needed for SW to determine the exact RU position
  247. within the reception.
  248. <enum 0 content_channel_1>
  249. <enum 1 content_channel_2>
  250. <legal all>
  251. */
  252. #define RECEIVE_USER_INFO_DL_OFDMA_CONTENT_CHANNEL_OFFSET 0x00000008
  253. #define RECEIVE_USER_INFO_DL_OFDMA_CONTENT_CHANNEL_LSB 0
  254. #define RECEIVE_USER_INFO_DL_OFDMA_CONTENT_CHANNEL_MSB 0
  255. #define RECEIVE_USER_INFO_DL_OFDMA_CONTENT_CHANNEL_MASK 0x00000001
  256. /* Description RESERVED_2A
  257. <legal 0>
  258. */
  259. #define RECEIVE_USER_INFO_RESERVED_2A_OFFSET 0x00000008
  260. #define RECEIVE_USER_INFO_RESERVED_2A_LSB 1
  261. #define RECEIVE_USER_INFO_RESERVED_2A_MSB 7
  262. #define RECEIVE_USER_INFO_RESERVED_2A_MASK 0x000000fe
  263. /* Description NSS
  264. Field only valid in case of Uplink_receive_type == mimo_only
  265. OR ofdma_mimo
  266. Number of Spatial Streams occupied by the User
  267. <enum 0 1_spatial_stream>Single spatial stream
  268. <enum 1 2_spatial_streams>2 spatial streams
  269. <enum 2 3_spatial_streams>3 spatial streams
  270. <enum 3 4_spatial_streams>4 spatial streams
  271. <enum 4 5_spatial_streams>5 spatial streams
  272. <enum 5 6_spatial_streams>6 spatial streams
  273. <enum 6 7_spatial_streams>7 spatial streams
  274. <enum 7 8_spatial_streams>8 spatial streams
  275. */
  276. #define RECEIVE_USER_INFO_NSS_OFFSET 0x00000008
  277. #define RECEIVE_USER_INFO_NSS_LSB 8
  278. #define RECEIVE_USER_INFO_NSS_MSB 10
  279. #define RECEIVE_USER_INFO_NSS_MASK 0x00000700
  280. /* Description STREAM_OFFSET
  281. Field only valid in case of Uplink_receive_type == mimo_only
  282. OR ofdma_mimo
  283. Stream Offset from which the User occupies the Streams
  284. Note MAC:
  285. directly from pdg_fes_setup, based on BW
  286. */
  287. #define RECEIVE_USER_INFO_STREAM_OFFSET_OFFSET 0x00000008
  288. #define RECEIVE_USER_INFO_STREAM_OFFSET_LSB 11
  289. #define RECEIVE_USER_INFO_STREAM_OFFSET_MSB 13
  290. #define RECEIVE_USER_INFO_STREAM_OFFSET_MASK 0x00003800
  291. /* Description STA_DCM
  292. Indicates whether dual sub-carrier modulation is applied
  293. 0: No DCM
  294. 1:DCM
  295. <legal all>
  296. */
  297. #define RECEIVE_USER_INFO_STA_DCM_OFFSET 0x00000008
  298. #define RECEIVE_USER_INFO_STA_DCM_LSB 14
  299. #define RECEIVE_USER_INFO_STA_DCM_MSB 14
  300. #define RECEIVE_USER_INFO_STA_DCM_MASK 0x00004000
  301. /* Description LDPC
  302. When set, use LDPC transmission rates were used.
  303. <legal all>
  304. */
  305. #define RECEIVE_USER_INFO_LDPC_OFFSET 0x00000008
  306. #define RECEIVE_USER_INFO_LDPC_LSB 15
  307. #define RECEIVE_USER_INFO_LDPC_MSB 15
  308. #define RECEIVE_USER_INFO_LDPC_MASK 0x00008000
  309. /* Description RU_TYPE_80_0
  310. Indicates the size of the RU in the first 80 MHz sub-band
  311. <enum 0 RU_26_per80>
  312. <enum 1 RU_52_per80>
  313. <enum 2 RU_78_per80>
  314. <enum 3 RU_106_per80>
  315. <enum 4 RU_132_per80>
  316. <enum 5 RU_242_per80>
  317. <enum 6 RU_484_per80>
  318. <enum 7 RU_726_per80>
  319. <enum 8 RU_996_per80>
  320. <enum 9 RU_996x2>
  321. <enum 10 RU_996x3>
  322. <enum 11 RU_996x4>
  323. <enum 12 RU_rsvd0> DO NOT USE
  324. <enum 13 RU_rsvd1> DO NOT USE
  325. <enum 14 RU_rsvd2> DO NOT USE
  326. <enum 15 RU_NONE> No RUs in this 80 MHz
  327. <legal 0-15>
  328. */
  329. #define RECEIVE_USER_INFO_RU_TYPE_80_0_OFFSET 0x00000008
  330. #define RECEIVE_USER_INFO_RU_TYPE_80_0_LSB 16
  331. #define RECEIVE_USER_INFO_RU_TYPE_80_0_MSB 19
  332. #define RECEIVE_USER_INFO_RU_TYPE_80_0_MASK 0x000f0000
  333. /* Description RU_TYPE_80_1
  334. Indicates the size of the RU in the second 80 MHz sub-band
  335. <enum 0 RU_26_per80>
  336. <enum 1 RU_52_per80>
  337. <enum 2 RU_78_per80>
  338. <enum 3 RU_106_per80>
  339. <enum 4 RU_132_per80>
  340. <enum 5 RU_242_per80>
  341. <enum 6 RU_484_per80>
  342. <enum 7 RU_726_per80>
  343. <enum 8 RU_996_per80>
  344. <enum 9 RU_996x2>
  345. <enum 10 RU_996x3>
  346. <enum 11 RU_996x4>
  347. <enum 12 RU_rsvd0> DO NOT USE
  348. <enum 13 RU_rsvd1> DO NOT USE
  349. <enum 14 RU_rsvd2> DO NOT USE
  350. <enum 15 RU_NONE> No RUs in this 80 MHz
  351. <legal 0-15>
  352. */
  353. #define RECEIVE_USER_INFO_RU_TYPE_80_1_OFFSET 0x00000008
  354. #define RECEIVE_USER_INFO_RU_TYPE_80_1_LSB 20
  355. #define RECEIVE_USER_INFO_RU_TYPE_80_1_MSB 23
  356. #define RECEIVE_USER_INFO_RU_TYPE_80_1_MASK 0x00f00000
  357. /* Description RU_TYPE_80_2
  358. Indicates the size of the RU in the third 80 MHz sub-band
  359. <enum 0 RU_26_per80>
  360. <enum 1 RU_52_per80>
  361. <enum 2 RU_78_per80>
  362. <enum 3 RU_106_per80>
  363. <enum 4 RU_132_per80>
  364. <enum 5 RU_242_per80>
  365. <enum 6 RU_484_per80>
  366. <enum 7 RU_726_per80>
  367. <enum 8 RU_996_per80>
  368. <enum 9 RU_996x2>
  369. <enum 10 RU_996x3>
  370. <enum 11 RU_996x4>
  371. <enum 12 RU_rsvd0> DO NOT USE
  372. <enum 13 RU_rsvd1> DO NOT USE
  373. <enum 14 RU_rsvd2> DO NOT USE
  374. <enum 15 RU_NONE> No RUs in this 80 MHz
  375. <legal 0-15>
  376. */
  377. #define RECEIVE_USER_INFO_RU_TYPE_80_2_OFFSET 0x00000008
  378. #define RECEIVE_USER_INFO_RU_TYPE_80_2_LSB 24
  379. #define RECEIVE_USER_INFO_RU_TYPE_80_2_MSB 27
  380. #define RECEIVE_USER_INFO_RU_TYPE_80_2_MASK 0x0f000000
  381. /* Description RU_TYPE_80_3
  382. Indicates the size of the RU in the fourth 80 MHz sub-band
  383. <enum 0 RU_26_per80>
  384. <enum 1 RU_52_per80>
  385. <enum 2 RU_78_per80>
  386. <enum 3 RU_106_per80>
  387. <enum 4 RU_132_per80>
  388. <enum 5 RU_242_per80>
  389. <enum 6 RU_484_per80>
  390. <enum 7 RU_726_per80>
  391. <enum 8 RU_996_per80>
  392. <enum 9 RU_996x2>
  393. <enum 10 RU_996x3>
  394. <enum 11 RU_996x4>
  395. <enum 12 RU_rsvd0> DO NOT USE
  396. <enum 13 RU_rsvd1> DO NOT USE
  397. <enum 14 RU_rsvd2> DO NOT USE
  398. <enum 15 RU_NONE> No RUs in this 80 MHz
  399. <legal 0-15>
  400. */
  401. #define RECEIVE_USER_INFO_RU_TYPE_80_3_OFFSET 0x00000008
  402. #define RECEIVE_USER_INFO_RU_TYPE_80_3_LSB 28
  403. #define RECEIVE_USER_INFO_RU_TYPE_80_3_MSB 31
  404. #define RECEIVE_USER_INFO_RU_TYPE_80_3_MASK 0xf0000000
  405. /* Description RU_START_INDEX_80_0
  406. RU index number to which User is assigned in the first 80
  407. MHz
  408. RU numbering is over the entire BW, starting from 0 and
  409. in increasing frequency order and not primary-secondary
  410. order
  411. <legal 0-36>
  412. */
  413. #define RECEIVE_USER_INFO_RU_START_INDEX_80_0_OFFSET 0x0000000c
  414. #define RECEIVE_USER_INFO_RU_START_INDEX_80_0_LSB 0
  415. #define RECEIVE_USER_INFO_RU_START_INDEX_80_0_MSB 5
  416. #define RECEIVE_USER_INFO_RU_START_INDEX_80_0_MASK 0x0000003f
  417. /* Description RESERVED_3A
  418. <legal 0>
  419. */
  420. #define RECEIVE_USER_INFO_RESERVED_3A_OFFSET 0x0000000c
  421. #define RECEIVE_USER_INFO_RESERVED_3A_LSB 6
  422. #define RECEIVE_USER_INFO_RESERVED_3A_MSB 7
  423. #define RECEIVE_USER_INFO_RESERVED_3A_MASK 0x000000c0
  424. /* Description RU_START_INDEX_80_1
  425. RU index number to which User is assigned in the second
  426. 80 MHz
  427. RU numbering is over the entire BW, starting from 0 and
  428. in increasing frequency order and not primary-secondary
  429. order
  430. <legal 0-36>
  431. */
  432. #define RECEIVE_USER_INFO_RU_START_INDEX_80_1_OFFSET 0x0000000c
  433. #define RECEIVE_USER_INFO_RU_START_INDEX_80_1_LSB 8
  434. #define RECEIVE_USER_INFO_RU_START_INDEX_80_1_MSB 13
  435. #define RECEIVE_USER_INFO_RU_START_INDEX_80_1_MASK 0x00003f00
  436. /* Description RESERVED_3B
  437. <legal 0>
  438. */
  439. #define RECEIVE_USER_INFO_RESERVED_3B_OFFSET 0x0000000c
  440. #define RECEIVE_USER_INFO_RESERVED_3B_LSB 14
  441. #define RECEIVE_USER_INFO_RESERVED_3B_MSB 15
  442. #define RECEIVE_USER_INFO_RESERVED_3B_MASK 0x0000c000
  443. /* Description RU_START_INDEX_80_2
  444. RU index number to which User is assigned in the third 80
  445. MHz
  446. RU numbering is over the entire BW, starting from 0 and
  447. in increasing frequency order and not primary-secondary
  448. order
  449. <legal 0-36>
  450. */
  451. #define RECEIVE_USER_INFO_RU_START_INDEX_80_2_OFFSET 0x0000000c
  452. #define RECEIVE_USER_INFO_RU_START_INDEX_80_2_LSB 16
  453. #define RECEIVE_USER_INFO_RU_START_INDEX_80_2_MSB 21
  454. #define RECEIVE_USER_INFO_RU_START_INDEX_80_2_MASK 0x003f0000
  455. /* Description RESERVED_3C
  456. <legal 0>
  457. */
  458. #define RECEIVE_USER_INFO_RESERVED_3C_OFFSET 0x0000000c
  459. #define RECEIVE_USER_INFO_RESERVED_3C_LSB 22
  460. #define RECEIVE_USER_INFO_RESERVED_3C_MSB 23
  461. #define RECEIVE_USER_INFO_RESERVED_3C_MASK 0x00c00000
  462. /* Description RU_START_INDEX_80_3
  463. RU index number to which User is assigned in the fourth
  464. 80 MHz
  465. RU numbering is over the entire BW, starting from 0 and
  466. in increasing frequency order and not primary-secondary
  467. order
  468. <legal 0-36>
  469. */
  470. #define RECEIVE_USER_INFO_RU_START_INDEX_80_3_OFFSET 0x0000000c
  471. #define RECEIVE_USER_INFO_RU_START_INDEX_80_3_LSB 24
  472. #define RECEIVE_USER_INFO_RU_START_INDEX_80_3_MSB 29
  473. #define RECEIVE_USER_INFO_RU_START_INDEX_80_3_MASK 0x3f000000
  474. /* Description RESERVED_3D
  475. <legal 0>
  476. */
  477. #define RECEIVE_USER_INFO_RESERVED_3D_OFFSET 0x0000000c
  478. #define RECEIVE_USER_INFO_RESERVED_3D_LSB 30
  479. #define RECEIVE_USER_INFO_RESERVED_3D_MSB 31
  480. #define RECEIVE_USER_INFO_RESERVED_3D_MASK 0xc0000000
  481. /* Description USER_FD_RSSI_SEG0
  482. Frequency domain RSSI measurement for the lowest 80 MHz
  483. subband of this user, per spatial stream
  484. [7:0]: first spatial stream
  485. ...
  486. [31:24]: fourth spatial stream
  487. <legal all>
  488. */
  489. #define RECEIVE_USER_INFO_USER_FD_RSSI_SEG0_OFFSET 0x00000010
  490. #define RECEIVE_USER_INFO_USER_FD_RSSI_SEG0_LSB 0
  491. #define RECEIVE_USER_INFO_USER_FD_RSSI_SEG0_MSB 31
  492. #define RECEIVE_USER_INFO_USER_FD_RSSI_SEG0_MASK 0xffffffff
  493. /* Description USER_FD_RSSI_SEG1
  494. Frequency domain RSSI measurement for the second lowest
  495. 80 MHz subband of this user, per spatial stream
  496. [7:0]: first spatial stream
  497. ...
  498. [31:24]: fourth spatial stream
  499. <legal all>
  500. */
  501. #define RECEIVE_USER_INFO_USER_FD_RSSI_SEG1_OFFSET 0x00000014
  502. #define RECEIVE_USER_INFO_USER_FD_RSSI_SEG1_LSB 0
  503. #define RECEIVE_USER_INFO_USER_FD_RSSI_SEG1_MSB 31
  504. #define RECEIVE_USER_INFO_USER_FD_RSSI_SEG1_MASK 0xffffffff
  505. /* Description USER_FD_RSSI_SEG2
  506. Frequency domain RSSI measurement for the third lowest 80
  507. MHz subband of this user, per spatial stream
  508. [7:0]: first spatial stream
  509. ...
  510. [31:24]: fourth spatial stream
  511. <legal all>
  512. */
  513. #define RECEIVE_USER_INFO_USER_FD_RSSI_SEG2_OFFSET 0x00000018
  514. #define RECEIVE_USER_INFO_USER_FD_RSSI_SEG2_LSB 0
  515. #define RECEIVE_USER_INFO_USER_FD_RSSI_SEG2_MSB 31
  516. #define RECEIVE_USER_INFO_USER_FD_RSSI_SEG2_MASK 0xffffffff
  517. /* Description USER_FD_RSSI_SEG3
  518. Frequency domain RSSI measurement for the highest 80 MHz
  519. subband of this user, per spatial stream
  520. [7:0]: first spatial stream
  521. ...
  522. [31:24]: fourth spatial stream
  523. In Hamilton v1 this structure had 4 more (32-bit) words
  524. after this field.
  525. <legal all>
  526. */
  527. #define RECEIVE_USER_INFO_USER_FD_RSSI_SEG3_OFFSET 0x0000001c
  528. #define RECEIVE_USER_INFO_USER_FD_RSSI_SEG3_LSB 0
  529. #define RECEIVE_USER_INFO_USER_FD_RSSI_SEG3_MSB 31
  530. #define RECEIVE_USER_INFO_USER_FD_RSSI_SEG3_MASK 0xffffffff
  531. #endif // RECEIVE_USER_INFO