reo_get_queue_stats_status.h 31 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746
  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 _REO_GET_QUEUE_STATS_STATUS_H_
  16. #define _REO_GET_QUEUE_STATS_STATUS_H_
  17. #if !defined(__ASSEMBLER__)
  18. #endif
  19. #include "uniform_reo_status_header.h"
  20. #define NUM_OF_DWORDS_REO_GET_QUEUE_STATS_STATUS 26
  21. #define NUM_OF_QWORDS_REO_GET_QUEUE_STATS_STATUS 13
  22. struct reo_get_queue_stats_status {
  23. #ifndef WIFI_BIT_ORDER_BIG_ENDIAN
  24. struct uniform_reo_status_header status_header;
  25. uint32_t ssn : 12, // [11:0]
  26. current_index : 10, // [21:12]
  27. reserved_2 : 10; // [31:22]
  28. uint32_t pn_31_0 : 32; // [31:0]
  29. uint32_t pn_63_32 : 32; // [31:0]
  30. uint32_t pn_95_64 : 32; // [31:0]
  31. uint32_t pn_127_96 : 32; // [31:0]
  32. uint32_t last_rx_enqueue_timestamp : 32; // [31:0]
  33. uint32_t last_rx_dequeue_timestamp : 32; // [31:0]
  34. uint32_t rx_bitmap_31_0 : 32; // [31:0]
  35. uint32_t rx_bitmap_63_32 : 32; // [31:0]
  36. uint32_t rx_bitmap_95_64 : 32; // [31:0]
  37. uint32_t rx_bitmap_127_96 : 32; // [31:0]
  38. uint32_t rx_bitmap_159_128 : 32; // [31:0]
  39. uint32_t rx_bitmap_191_160 : 32; // [31:0]
  40. uint32_t rx_bitmap_223_192 : 32; // [31:0]
  41. uint32_t rx_bitmap_255_224 : 32; // [31:0]
  42. uint32_t rx_bitmap_287_256 : 32; // [31:0]
  43. uint32_t current_mpdu_count : 7, // [6:0]
  44. current_msdu_count : 25; // [31:7]
  45. uint32_t window_jump_2k : 4, // [3:0]
  46. timeout_count : 6, // [9:4]
  47. forward_due_to_bar_count : 6, // [15:10]
  48. duplicate_count : 16; // [31:16]
  49. uint32_t frames_in_order_count : 24, // [23:0]
  50. bar_received_count : 8; // [31:24]
  51. uint32_t mpdu_frames_processed_count : 32; // [31:0]
  52. uint32_t msdu_frames_processed_count : 32; // [31:0]
  53. uint32_t total_processed_byte_count : 32; // [31:0]
  54. uint32_t late_receive_mpdu_count : 12, // [11:0]
  55. hole_count : 16, // [27:12]
  56. get_queue_1k_stats_status_to_follow : 1, // [28:28]
  57. reserved_24a : 3; // [31:29]
  58. uint32_t aging_drop_mpdu_count : 16, // [15:0]
  59. aging_drop_interval : 8, // [23:16]
  60. reserved_25a : 4, // [27:24]
  61. looping_count : 4; // [31:28]
  62. #else
  63. struct uniform_reo_status_header status_header;
  64. uint32_t reserved_2 : 10, // [31:22]
  65. current_index : 10, // [21:12]
  66. ssn : 12; // [11:0]
  67. uint32_t pn_31_0 : 32; // [31:0]
  68. uint32_t pn_63_32 : 32; // [31:0]
  69. uint32_t pn_95_64 : 32; // [31:0]
  70. uint32_t pn_127_96 : 32; // [31:0]
  71. uint32_t last_rx_enqueue_timestamp : 32; // [31:0]
  72. uint32_t last_rx_dequeue_timestamp : 32; // [31:0]
  73. uint32_t rx_bitmap_31_0 : 32; // [31:0]
  74. uint32_t rx_bitmap_63_32 : 32; // [31:0]
  75. uint32_t rx_bitmap_95_64 : 32; // [31:0]
  76. uint32_t rx_bitmap_127_96 : 32; // [31:0]
  77. uint32_t rx_bitmap_159_128 : 32; // [31:0]
  78. uint32_t rx_bitmap_191_160 : 32; // [31:0]
  79. uint32_t rx_bitmap_223_192 : 32; // [31:0]
  80. uint32_t rx_bitmap_255_224 : 32; // [31:0]
  81. uint32_t rx_bitmap_287_256 : 32; // [31:0]
  82. uint32_t current_msdu_count : 25, // [31:7]
  83. current_mpdu_count : 7; // [6:0]
  84. uint32_t duplicate_count : 16, // [31:16]
  85. forward_due_to_bar_count : 6, // [15:10]
  86. timeout_count : 6, // [9:4]
  87. window_jump_2k : 4; // [3:0]
  88. uint32_t bar_received_count : 8, // [31:24]
  89. frames_in_order_count : 24; // [23:0]
  90. uint32_t mpdu_frames_processed_count : 32; // [31:0]
  91. uint32_t msdu_frames_processed_count : 32; // [31:0]
  92. uint32_t total_processed_byte_count : 32; // [31:0]
  93. uint32_t reserved_24a : 3, // [31:29]
  94. get_queue_1k_stats_status_to_follow : 1, // [28:28]
  95. hole_count : 16, // [27:12]
  96. late_receive_mpdu_count : 12; // [11:0]
  97. uint32_t looping_count : 4, // [31:28]
  98. reserved_25a : 4, // [27:24]
  99. aging_drop_interval : 8, // [23:16]
  100. aging_drop_mpdu_count : 16; // [15:0]
  101. #endif
  102. };
  103. /* Description STATUS_HEADER
  104. Consumer: SW
  105. Producer: REO
  106. Details that can link this status with the original command.
  107. It also contains info on how long REO took to execute this
  108. command.
  109. */
  110. /* Description REO_STATUS_NUMBER
  111. Consumer: SW , DEBUG
  112. Producer: REO
  113. The value in this field is equal to value of the 'REO_CMD_Number'
  114. field the REO command
  115. This field helps to correlate the statuses with the REO
  116. commands.
  117. <legal all>
  118. */
  119. #define REO_GET_QUEUE_STATS_STATUS_STATUS_HEADER_REO_STATUS_NUMBER_OFFSET 0x0000000000000000
  120. #define REO_GET_QUEUE_STATS_STATUS_STATUS_HEADER_REO_STATUS_NUMBER_LSB 0
  121. #define REO_GET_QUEUE_STATS_STATUS_STATUS_HEADER_REO_STATUS_NUMBER_MSB 15
  122. #define REO_GET_QUEUE_STATS_STATUS_STATUS_HEADER_REO_STATUS_NUMBER_MASK 0x000000000000ffff
  123. /* Description CMD_EXECUTION_TIME
  124. Consumer: DEBUG
  125. Producer: REO
  126. The amount of time REO took to excecute the command. Note
  127. that this time does not include the duration of the command
  128. waiting in the command ring, before the execution started.
  129. In us.
  130. <legal all>
  131. */
  132. #define REO_GET_QUEUE_STATS_STATUS_STATUS_HEADER_CMD_EXECUTION_TIME_OFFSET 0x0000000000000000
  133. #define REO_GET_QUEUE_STATS_STATUS_STATUS_HEADER_CMD_EXECUTION_TIME_LSB 16
  134. #define REO_GET_QUEUE_STATS_STATUS_STATUS_HEADER_CMD_EXECUTION_TIME_MSB 25
  135. #define REO_GET_QUEUE_STATS_STATUS_STATUS_HEADER_CMD_EXECUTION_TIME_MASK 0x0000000003ff0000
  136. /* Description REO_CMD_EXECUTION_STATUS
  137. Consumer: DEBUG
  138. Producer: REO
  139. Execution status of the command.
  140. <enum 0 reo_successful_execution> Command has successfully
  141. be executed
  142. <enum 1 reo_blocked_execution> Command could not be executed
  143. as the queue or cache was blocked
  144. <enum 2 reo_failed_execution> Command has encountered problems
  145. when executing, like the queue descriptor not being valid.
  146. None of the status fields in the entire STATUS TLV are valid.
  147. <enum 3 reo_resource_blocked> Command is NOT executed because
  148. one or more descriptors were blocked. This is SW programming
  149. mistake.
  150. None of the status fields in the entire STATUS TLV are valid.
  151. <legal 0-3>
  152. */
  153. #define REO_GET_QUEUE_STATS_STATUS_STATUS_HEADER_REO_CMD_EXECUTION_STATUS_OFFSET 0x0000000000000000
  154. #define REO_GET_QUEUE_STATS_STATUS_STATUS_HEADER_REO_CMD_EXECUTION_STATUS_LSB 26
  155. #define REO_GET_QUEUE_STATS_STATUS_STATUS_HEADER_REO_CMD_EXECUTION_STATUS_MSB 27
  156. #define REO_GET_QUEUE_STATS_STATUS_STATUS_HEADER_REO_CMD_EXECUTION_STATUS_MASK 0x000000000c000000
  157. /* Description RESERVED_0A
  158. <legal 0>
  159. */
  160. #define REO_GET_QUEUE_STATS_STATUS_STATUS_HEADER_RESERVED_0A_OFFSET 0x0000000000000000
  161. #define REO_GET_QUEUE_STATS_STATUS_STATUS_HEADER_RESERVED_0A_LSB 28
  162. #define REO_GET_QUEUE_STATS_STATUS_STATUS_HEADER_RESERVED_0A_MSB 31
  163. #define REO_GET_QUEUE_STATS_STATUS_STATUS_HEADER_RESERVED_0A_MASK 0x00000000f0000000
  164. /* Description TIMESTAMP
  165. Timestamp at the moment that this status report is written.
  166. <legal all>
  167. */
  168. #define REO_GET_QUEUE_STATS_STATUS_STATUS_HEADER_TIMESTAMP_OFFSET 0x0000000000000000
  169. #define REO_GET_QUEUE_STATS_STATUS_STATUS_HEADER_TIMESTAMP_LSB 32
  170. #define REO_GET_QUEUE_STATS_STATUS_STATUS_HEADER_TIMESTAMP_MSB 63
  171. #define REO_GET_QUEUE_STATS_STATUS_STATUS_HEADER_TIMESTAMP_MASK 0xffffffff00000000
  172. /* Description SSN
  173. Starting Sequence number of the session, this changes whenever
  174. window moves. (can be filled by SW then maintained by REO)
  175. <legal all>
  176. */
  177. #define REO_GET_QUEUE_STATS_STATUS_SSN_OFFSET 0x0000000000000008
  178. #define REO_GET_QUEUE_STATS_STATUS_SSN_LSB 0
  179. #define REO_GET_QUEUE_STATS_STATUS_SSN_MSB 11
  180. #define REO_GET_QUEUE_STATS_STATUS_SSN_MASK 0x0000000000000fff
  181. /* Description CURRENT_INDEX
  182. Points to last forwarded packet
  183. <legal all>
  184. */
  185. #define REO_GET_QUEUE_STATS_STATUS_CURRENT_INDEX_OFFSET 0x0000000000000008
  186. #define REO_GET_QUEUE_STATS_STATUS_CURRENT_INDEX_LSB 12
  187. #define REO_GET_QUEUE_STATS_STATUS_CURRENT_INDEX_MSB 21
  188. #define REO_GET_QUEUE_STATS_STATUS_CURRENT_INDEX_MASK 0x00000000003ff000
  189. /* Description RESERVED_2
  190. <legal 0>
  191. */
  192. #define REO_GET_QUEUE_STATS_STATUS_RESERVED_2_OFFSET 0x0000000000000008
  193. #define REO_GET_QUEUE_STATS_STATUS_RESERVED_2_LSB 22
  194. #define REO_GET_QUEUE_STATS_STATUS_RESERVED_2_MSB 31
  195. #define REO_GET_QUEUE_STATS_STATUS_RESERVED_2_MASK 0x00000000ffc00000
  196. /* Description PN_31_0
  197. Bits [31:0] of the PN number extracted from the IV field
  198. <legal all>
  199. */
  200. #define REO_GET_QUEUE_STATS_STATUS_PN_31_0_OFFSET 0x0000000000000008
  201. #define REO_GET_QUEUE_STATS_STATUS_PN_31_0_LSB 32
  202. #define REO_GET_QUEUE_STATS_STATUS_PN_31_0_MSB 63
  203. #define REO_GET_QUEUE_STATS_STATUS_PN_31_0_MASK 0xffffffff00000000
  204. /* Description PN_63_32
  205. Bits [63:32] of the PN number.
  206. <legal all>
  207. */
  208. #define REO_GET_QUEUE_STATS_STATUS_PN_63_32_OFFSET 0x0000000000000010
  209. #define REO_GET_QUEUE_STATS_STATUS_PN_63_32_LSB 0
  210. #define REO_GET_QUEUE_STATS_STATUS_PN_63_32_MSB 31
  211. #define REO_GET_QUEUE_STATS_STATUS_PN_63_32_MASK 0x00000000ffffffff
  212. /* Description PN_95_64
  213. Bits [95:64] of the PN number.
  214. <legal all>
  215. */
  216. #define REO_GET_QUEUE_STATS_STATUS_PN_95_64_OFFSET 0x0000000000000010
  217. #define REO_GET_QUEUE_STATS_STATUS_PN_95_64_LSB 32
  218. #define REO_GET_QUEUE_STATS_STATUS_PN_95_64_MSB 63
  219. #define REO_GET_QUEUE_STATS_STATUS_PN_95_64_MASK 0xffffffff00000000
  220. /* Description PN_127_96
  221. Bits [127:96] of the PN number.
  222. <legal all>
  223. */
  224. #define REO_GET_QUEUE_STATS_STATUS_PN_127_96_OFFSET 0x0000000000000018
  225. #define REO_GET_QUEUE_STATS_STATUS_PN_127_96_LSB 0
  226. #define REO_GET_QUEUE_STATS_STATUS_PN_127_96_MSB 31
  227. #define REO_GET_QUEUE_STATS_STATUS_PN_127_96_MASK 0x00000000ffffffff
  228. /* Description LAST_RX_ENQUEUE_TIMESTAMP
  229. Timestamp of arrival of the last MPDU for this queue
  230. <legal all>
  231. */
  232. #define REO_GET_QUEUE_STATS_STATUS_LAST_RX_ENQUEUE_TIMESTAMP_OFFSET 0x0000000000000018
  233. #define REO_GET_QUEUE_STATS_STATUS_LAST_RX_ENQUEUE_TIMESTAMP_LSB 32
  234. #define REO_GET_QUEUE_STATS_STATUS_LAST_RX_ENQUEUE_TIMESTAMP_MSB 63
  235. #define REO_GET_QUEUE_STATS_STATUS_LAST_RX_ENQUEUE_TIMESTAMP_MASK 0xffffffff00000000
  236. /* Description LAST_RX_DEQUEUE_TIMESTAMP
  237. Timestamp of forwarding an MPDU
  238. If the queue is empty when a frame gets received, this time
  239. shall be initialized to the 'enqueue' timestamp
  240. Used for aging
  241. <legal all>
  242. */
  243. #define REO_GET_QUEUE_STATS_STATUS_LAST_RX_DEQUEUE_TIMESTAMP_OFFSET 0x0000000000000020
  244. #define REO_GET_QUEUE_STATS_STATUS_LAST_RX_DEQUEUE_TIMESTAMP_LSB 0
  245. #define REO_GET_QUEUE_STATS_STATUS_LAST_RX_DEQUEUE_TIMESTAMP_MSB 31
  246. #define REO_GET_QUEUE_STATS_STATUS_LAST_RX_DEQUEUE_TIMESTAMP_MASK 0x00000000ffffffff
  247. /* Description RX_BITMAP_31_0
  248. When a bit is set, the corresponding frame is currently
  249. held in the re-order queue.
  250. The bitmap is Fully managed by HW.
  251. SW shall init this to 0, and then never ever change it
  252. <legal all>
  253. */
  254. #define REO_GET_QUEUE_STATS_STATUS_RX_BITMAP_31_0_OFFSET 0x0000000000000020
  255. #define REO_GET_QUEUE_STATS_STATUS_RX_BITMAP_31_0_LSB 32
  256. #define REO_GET_QUEUE_STATS_STATUS_RX_BITMAP_31_0_MSB 63
  257. #define REO_GET_QUEUE_STATS_STATUS_RX_BITMAP_31_0_MASK 0xffffffff00000000
  258. /* Description RX_BITMAP_63_32
  259. See Rx_bitmap_31_0 description
  260. <legal all>
  261. */
  262. #define REO_GET_QUEUE_STATS_STATUS_RX_BITMAP_63_32_OFFSET 0x0000000000000028
  263. #define REO_GET_QUEUE_STATS_STATUS_RX_BITMAP_63_32_LSB 0
  264. #define REO_GET_QUEUE_STATS_STATUS_RX_BITMAP_63_32_MSB 31
  265. #define REO_GET_QUEUE_STATS_STATUS_RX_BITMAP_63_32_MASK 0x00000000ffffffff
  266. /* Description RX_BITMAP_95_64
  267. See Rx_bitmap_31_0 description
  268. <legal all>
  269. */
  270. #define REO_GET_QUEUE_STATS_STATUS_RX_BITMAP_95_64_OFFSET 0x0000000000000028
  271. #define REO_GET_QUEUE_STATS_STATUS_RX_BITMAP_95_64_LSB 32
  272. #define REO_GET_QUEUE_STATS_STATUS_RX_BITMAP_95_64_MSB 63
  273. #define REO_GET_QUEUE_STATS_STATUS_RX_BITMAP_95_64_MASK 0xffffffff00000000
  274. /* Description RX_BITMAP_127_96
  275. See Rx_bitmap_31_0 description
  276. <legal all>
  277. */
  278. #define REO_GET_QUEUE_STATS_STATUS_RX_BITMAP_127_96_OFFSET 0x0000000000000030
  279. #define REO_GET_QUEUE_STATS_STATUS_RX_BITMAP_127_96_LSB 0
  280. #define REO_GET_QUEUE_STATS_STATUS_RX_BITMAP_127_96_MSB 31
  281. #define REO_GET_QUEUE_STATS_STATUS_RX_BITMAP_127_96_MASK 0x00000000ffffffff
  282. /* Description RX_BITMAP_159_128
  283. See Rx_bitmap_31_0 description
  284. <legal all>
  285. */
  286. #define REO_GET_QUEUE_STATS_STATUS_RX_BITMAP_159_128_OFFSET 0x0000000000000030
  287. #define REO_GET_QUEUE_STATS_STATUS_RX_BITMAP_159_128_LSB 32
  288. #define REO_GET_QUEUE_STATS_STATUS_RX_BITMAP_159_128_MSB 63
  289. #define REO_GET_QUEUE_STATS_STATUS_RX_BITMAP_159_128_MASK 0xffffffff00000000
  290. /* Description RX_BITMAP_191_160
  291. See Rx_bitmap_31_0 description
  292. <legal all>
  293. */
  294. #define REO_GET_QUEUE_STATS_STATUS_RX_BITMAP_191_160_OFFSET 0x0000000000000038
  295. #define REO_GET_QUEUE_STATS_STATUS_RX_BITMAP_191_160_LSB 0
  296. #define REO_GET_QUEUE_STATS_STATUS_RX_BITMAP_191_160_MSB 31
  297. #define REO_GET_QUEUE_STATS_STATUS_RX_BITMAP_191_160_MASK 0x00000000ffffffff
  298. /* Description RX_BITMAP_223_192
  299. See Rx_bitmap_31_0 description
  300. <legal all>
  301. */
  302. #define REO_GET_QUEUE_STATS_STATUS_RX_BITMAP_223_192_OFFSET 0x0000000000000038
  303. #define REO_GET_QUEUE_STATS_STATUS_RX_BITMAP_223_192_LSB 32
  304. #define REO_GET_QUEUE_STATS_STATUS_RX_BITMAP_223_192_MSB 63
  305. #define REO_GET_QUEUE_STATS_STATUS_RX_BITMAP_223_192_MASK 0xffffffff00000000
  306. /* Description RX_BITMAP_255_224
  307. See Rx_bitmap_31_0 description
  308. <legal all>
  309. */
  310. #define REO_GET_QUEUE_STATS_STATUS_RX_BITMAP_255_224_OFFSET 0x0000000000000040
  311. #define REO_GET_QUEUE_STATS_STATUS_RX_BITMAP_255_224_LSB 0
  312. #define REO_GET_QUEUE_STATS_STATUS_RX_BITMAP_255_224_MSB 31
  313. #define REO_GET_QUEUE_STATS_STATUS_RX_BITMAP_255_224_MASK 0x00000000ffffffff
  314. /* Description RX_BITMAP_287_256
  315. See Rx_bitmap_31_0 description
  316. <legal all>
  317. */
  318. #define REO_GET_QUEUE_STATS_STATUS_RX_BITMAP_287_256_OFFSET 0x0000000000000040
  319. #define REO_GET_QUEUE_STATS_STATUS_RX_BITMAP_287_256_LSB 32
  320. #define REO_GET_QUEUE_STATS_STATUS_RX_BITMAP_287_256_MSB 63
  321. #define REO_GET_QUEUE_STATS_STATUS_RX_BITMAP_287_256_MASK 0xffffffff00000000
  322. /* Description CURRENT_MPDU_COUNT
  323. The number of MPDUs in the queue.
  324. <legal all>
  325. */
  326. #define REO_GET_QUEUE_STATS_STATUS_CURRENT_MPDU_COUNT_OFFSET 0x0000000000000048
  327. #define REO_GET_QUEUE_STATS_STATUS_CURRENT_MPDU_COUNT_LSB 0
  328. #define REO_GET_QUEUE_STATS_STATUS_CURRENT_MPDU_COUNT_MSB 6
  329. #define REO_GET_QUEUE_STATS_STATUS_CURRENT_MPDU_COUNT_MASK 0x000000000000007f
  330. /* Description CURRENT_MSDU_COUNT
  331. The number of MSDUs in the queue.
  332. <legal all>
  333. */
  334. #define REO_GET_QUEUE_STATS_STATUS_CURRENT_MSDU_COUNT_OFFSET 0x0000000000000048
  335. #define REO_GET_QUEUE_STATS_STATUS_CURRENT_MSDU_COUNT_LSB 7
  336. #define REO_GET_QUEUE_STATS_STATUS_CURRENT_MSDU_COUNT_MSB 31
  337. #define REO_GET_QUEUE_STATS_STATUS_CURRENT_MSDU_COUNT_MASK 0x00000000ffffff80
  338. /* Description WINDOW_JUMP_2K
  339. The number of times the window moved more then 2K
  340. The counter saturates and freezes at 0xF
  341. (Note: field name can not start with number: previous 2k_window_jump)
  342. <legal all>
  343. */
  344. #define REO_GET_QUEUE_STATS_STATUS_WINDOW_JUMP_2K_OFFSET 0x0000000000000048
  345. #define REO_GET_QUEUE_STATS_STATUS_WINDOW_JUMP_2K_LSB 32
  346. #define REO_GET_QUEUE_STATS_STATUS_WINDOW_JUMP_2K_MSB 35
  347. #define REO_GET_QUEUE_STATS_STATUS_WINDOW_JUMP_2K_MASK 0x0000000f00000000
  348. /* Description TIMEOUT_COUNT
  349. The number of times that REO started forwarding frames even
  350. though there is a hole in the bitmap. Forwarding reason
  351. is Timeout
  352. The counter saturates and freezes at 0x3F
  353. <legal all>
  354. */
  355. #define REO_GET_QUEUE_STATS_STATUS_TIMEOUT_COUNT_OFFSET 0x0000000000000048
  356. #define REO_GET_QUEUE_STATS_STATUS_TIMEOUT_COUNT_LSB 36
  357. #define REO_GET_QUEUE_STATS_STATUS_TIMEOUT_COUNT_MSB 41
  358. #define REO_GET_QUEUE_STATS_STATUS_TIMEOUT_COUNT_MASK 0x000003f000000000
  359. /* Description FORWARD_DUE_TO_BAR_COUNT
  360. The number of times that REO started forwarding frames even
  361. though there is a hole in the bitmap. Forwarding reason
  362. is reception of BAR frame.
  363. The counter saturates and freezes at 0x3F
  364. <legal all>
  365. */
  366. #define REO_GET_QUEUE_STATS_STATUS_FORWARD_DUE_TO_BAR_COUNT_OFFSET 0x0000000000000048
  367. #define REO_GET_QUEUE_STATS_STATUS_FORWARD_DUE_TO_BAR_COUNT_LSB 42
  368. #define REO_GET_QUEUE_STATS_STATUS_FORWARD_DUE_TO_BAR_COUNT_MSB 47
  369. #define REO_GET_QUEUE_STATS_STATUS_FORWARD_DUE_TO_BAR_COUNT_MASK 0x0000fc0000000000
  370. /* Description DUPLICATE_COUNT
  371. The number of duplicate frames that have been detected
  372. <legal all>
  373. */
  374. #define REO_GET_QUEUE_STATS_STATUS_DUPLICATE_COUNT_OFFSET 0x0000000000000048
  375. #define REO_GET_QUEUE_STATS_STATUS_DUPLICATE_COUNT_LSB 48
  376. #define REO_GET_QUEUE_STATS_STATUS_DUPLICATE_COUNT_MSB 63
  377. #define REO_GET_QUEUE_STATS_STATUS_DUPLICATE_COUNT_MASK 0xffff000000000000
  378. /* Description FRAMES_IN_ORDER_COUNT
  379. The number of frames that have been received in order (without
  380. a hole that prevented them from being forwarded immediately)
  381. This corresponds to the Reorder opcodes:
  382. 'FWDCUR' and 'FWD BUF'
  383. <legal all>
  384. */
  385. #define REO_GET_QUEUE_STATS_STATUS_FRAMES_IN_ORDER_COUNT_OFFSET 0x0000000000000050
  386. #define REO_GET_QUEUE_STATS_STATUS_FRAMES_IN_ORDER_COUNT_LSB 0
  387. #define REO_GET_QUEUE_STATS_STATUS_FRAMES_IN_ORDER_COUNT_MSB 23
  388. #define REO_GET_QUEUE_STATS_STATUS_FRAMES_IN_ORDER_COUNT_MASK 0x0000000000ffffff
  389. /* Description BAR_RECEIVED_COUNT
  390. The number of times a BAR frame is received.
  391. This corresponds to the Reorder opcodes with 'DROP'
  392. The counter saturates and freezes at 0xFF
  393. <legal all>
  394. */
  395. #define REO_GET_QUEUE_STATS_STATUS_BAR_RECEIVED_COUNT_OFFSET 0x0000000000000050
  396. #define REO_GET_QUEUE_STATS_STATUS_BAR_RECEIVED_COUNT_LSB 24
  397. #define REO_GET_QUEUE_STATS_STATUS_BAR_RECEIVED_COUNT_MSB 31
  398. #define REO_GET_QUEUE_STATS_STATUS_BAR_RECEIVED_COUNT_MASK 0x00000000ff000000
  399. /* Description MPDU_FRAMES_PROCESSED_COUNT
  400. The total number of MPDU frames that have been processed
  401. by REO. This includes the duplicates.
  402. <legal all>
  403. */
  404. #define REO_GET_QUEUE_STATS_STATUS_MPDU_FRAMES_PROCESSED_COUNT_OFFSET 0x0000000000000050
  405. #define REO_GET_QUEUE_STATS_STATUS_MPDU_FRAMES_PROCESSED_COUNT_LSB 32
  406. #define REO_GET_QUEUE_STATS_STATUS_MPDU_FRAMES_PROCESSED_COUNT_MSB 63
  407. #define REO_GET_QUEUE_STATS_STATUS_MPDU_FRAMES_PROCESSED_COUNT_MASK 0xffffffff00000000
  408. /* Description MSDU_FRAMES_PROCESSED_COUNT
  409. The total number of MSDU frames that have been processed
  410. by REO. This includes the duplicates.
  411. <legal all>
  412. */
  413. #define REO_GET_QUEUE_STATS_STATUS_MSDU_FRAMES_PROCESSED_COUNT_OFFSET 0x0000000000000058
  414. #define REO_GET_QUEUE_STATS_STATUS_MSDU_FRAMES_PROCESSED_COUNT_LSB 0
  415. #define REO_GET_QUEUE_STATS_STATUS_MSDU_FRAMES_PROCESSED_COUNT_MSB 31
  416. #define REO_GET_QUEUE_STATS_STATUS_MSDU_FRAMES_PROCESSED_COUNT_MASK 0x00000000ffffffff
  417. /* Description TOTAL_PROCESSED_BYTE_COUNT
  418. An approximation of the number of bytes received for this
  419. queue.
  420. In 64 byte units
  421. <legal all>
  422. */
  423. #define REO_GET_QUEUE_STATS_STATUS_TOTAL_PROCESSED_BYTE_COUNT_OFFSET 0x0000000000000058
  424. #define REO_GET_QUEUE_STATS_STATUS_TOTAL_PROCESSED_BYTE_COUNT_LSB 32
  425. #define REO_GET_QUEUE_STATS_STATUS_TOTAL_PROCESSED_BYTE_COUNT_MSB 63
  426. #define REO_GET_QUEUE_STATS_STATUS_TOTAL_PROCESSED_BYTE_COUNT_MASK 0xffffffff00000000
  427. /* Description LATE_RECEIVE_MPDU_COUNT
  428. The number of MPDUs received after the window had already
  429. moved on. The 'late' sequence window is defined as (Window
  430. SSN - 256) - (Window SSN - 1)
  431. This corresponds with Out of order detection in duplicate
  432. detect FSM
  433. The counter saturates and freezes at 0xFFF
  434. <legal all>
  435. */
  436. #define REO_GET_QUEUE_STATS_STATUS_LATE_RECEIVE_MPDU_COUNT_OFFSET 0x0000000000000060
  437. #define REO_GET_QUEUE_STATS_STATUS_LATE_RECEIVE_MPDU_COUNT_LSB 0
  438. #define REO_GET_QUEUE_STATS_STATUS_LATE_RECEIVE_MPDU_COUNT_MSB 11
  439. #define REO_GET_QUEUE_STATS_STATUS_LATE_RECEIVE_MPDU_COUNT_MASK 0x0000000000000fff
  440. /* Description HOLE_COUNT
  441. The number of times a hole was created in the receive bitmap.
  442. This corresponds to the Reorder opcodes with 'QCUR'
  443. <legal all>
  444. */
  445. #define REO_GET_QUEUE_STATS_STATUS_HOLE_COUNT_OFFSET 0x0000000000000060
  446. #define REO_GET_QUEUE_STATS_STATUS_HOLE_COUNT_LSB 12
  447. #define REO_GET_QUEUE_STATS_STATUS_HOLE_COUNT_MSB 27
  448. #define REO_GET_QUEUE_STATS_STATUS_HOLE_COUNT_MASK 0x000000000ffff000
  449. /* Description GET_QUEUE_1K_STATS_STATUS_TO_FOLLOW
  450. Indicates that the queue supports a BA window size above
  451. 256, so a 'REO_GET_QUEUE_STATS_1K_STATUS' status TLV will
  452. immediately follow.
  453. <legal all>
  454. */
  455. #define REO_GET_QUEUE_STATS_STATUS_GET_QUEUE_1K_STATS_STATUS_TO_FOLLOW_OFFSET 0x0000000000000060
  456. #define REO_GET_QUEUE_STATS_STATUS_GET_QUEUE_1K_STATS_STATUS_TO_FOLLOW_LSB 28
  457. #define REO_GET_QUEUE_STATS_STATUS_GET_QUEUE_1K_STATS_STATUS_TO_FOLLOW_MSB 28
  458. #define REO_GET_QUEUE_STATS_STATUS_GET_QUEUE_1K_STATS_STATUS_TO_FOLLOW_MASK 0x0000000010000000
  459. /* Description RESERVED_24A
  460. <legal 0>
  461. */
  462. #define REO_GET_QUEUE_STATS_STATUS_RESERVED_24A_OFFSET 0x0000000000000060
  463. #define REO_GET_QUEUE_STATS_STATUS_RESERVED_24A_LSB 29
  464. #define REO_GET_QUEUE_STATS_STATUS_RESERVED_24A_MSB 31
  465. #define REO_GET_QUEUE_STATS_STATUS_RESERVED_24A_MASK 0x00000000e0000000
  466. /* Description AGING_DROP_MPDU_COUNT
  467. The number of holes in the bitmap that moved due to aging
  468. counter expiry
  469. <legal all>
  470. */
  471. #define REO_GET_QUEUE_STATS_STATUS_AGING_DROP_MPDU_COUNT_OFFSET 0x0000000000000060
  472. #define REO_GET_QUEUE_STATS_STATUS_AGING_DROP_MPDU_COUNT_LSB 32
  473. #define REO_GET_QUEUE_STATS_STATUS_AGING_DROP_MPDU_COUNT_MSB 47
  474. #define REO_GET_QUEUE_STATS_STATUS_AGING_DROP_MPDU_COUNT_MASK 0x0000ffff00000000
  475. /* Description AGING_DROP_INTERVAL
  476. The number of times holes got removed from the bitmap due
  477. to aging counter expiry
  478. <legal all>
  479. */
  480. #define REO_GET_QUEUE_STATS_STATUS_AGING_DROP_INTERVAL_OFFSET 0x0000000000000060
  481. #define REO_GET_QUEUE_STATS_STATUS_AGING_DROP_INTERVAL_LSB 48
  482. #define REO_GET_QUEUE_STATS_STATUS_AGING_DROP_INTERVAL_MSB 55
  483. #define REO_GET_QUEUE_STATS_STATUS_AGING_DROP_INTERVAL_MASK 0x00ff000000000000
  484. /* Description RESERVED_25A
  485. <legal 0>
  486. */
  487. #define REO_GET_QUEUE_STATS_STATUS_RESERVED_25A_OFFSET 0x0000000000000060
  488. #define REO_GET_QUEUE_STATS_STATUS_RESERVED_25A_LSB 56
  489. #define REO_GET_QUEUE_STATS_STATUS_RESERVED_25A_MSB 59
  490. #define REO_GET_QUEUE_STATS_STATUS_RESERVED_25A_MASK 0x0f00000000000000
  491. /* Description LOOPING_COUNT
  492. A count value that indicates the number of times the producer
  493. of entries into this Ring has looped around the ring.
  494. At initialization time, this value is set to 0. On the first
  495. loop, this value is set to 1. After the max value is reached
  496. allowed by the number of bits for this field, the count
  497. value continues with 0 again.
  498. In case SW is the consumer of the ring entries, it can use
  499. this field to figure out up to where the producer of entries
  500. has created new entries. This eliminates the need to check
  501. where the "head pointer' of the ring is located once the
  502. SW starts processing an interrupt indicating that new entries
  503. have been put into this ring...
  504. Also note that SW if it wants only needs to look at the
  505. LSB bit of this count value.
  506. <legal all>
  507. */
  508. #define REO_GET_QUEUE_STATS_STATUS_LOOPING_COUNT_OFFSET 0x0000000000000060
  509. #define REO_GET_QUEUE_STATS_STATUS_LOOPING_COUNT_LSB 60
  510. #define REO_GET_QUEUE_STATS_STATUS_LOOPING_COUNT_MSB 63
  511. #define REO_GET_QUEUE_STATS_STATUS_LOOPING_COUNT_MASK 0xf000000000000000
  512. #endif // REO_GET_QUEUE_STATS_STATUS