reo_get_queue_stats_status.h 31 KB

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