reo_get_queue_stats_status.h 27 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965
  1. /*
  2. * Copyright (c) 2019, The Linux Foundation. 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. // ################ START SUMMARY #################
  22. //
  23. // Dword Fields
  24. // 0-1 struct uniform_reo_status_header status_header;
  25. // 2 ssn[11:0], current_index[19:12], reserved_2[31:20]
  26. // 3 pn_31_0[31:0]
  27. // 4 pn_63_32[31:0]
  28. // 5 pn_95_64[31:0]
  29. // 6 pn_127_96[31:0]
  30. // 7 last_rx_enqueue_timestamp[31:0]
  31. // 8 last_rx_dequeue_timestamp[31:0]
  32. // 9 rx_bitmap_31_0[31:0]
  33. // 10 rx_bitmap_63_32[31:0]
  34. // 11 rx_bitmap_95_64[31:0]
  35. // 12 rx_bitmap_127_96[31:0]
  36. // 13 rx_bitmap_159_128[31:0]
  37. // 14 rx_bitmap_191_160[31:0]
  38. // 15 rx_bitmap_223_192[31:0]
  39. // 16 rx_bitmap_255_224[31:0]
  40. // 17 current_mpdu_count[6:0], current_msdu_count[31:7]
  41. // 18 reserved_18[3:0], timeout_count[9:4], forward_due_to_bar_count[15:10], duplicate_count[31:16]
  42. // 19 frames_in_order_count[23:0], bar_received_count[31:24]
  43. // 20 mpdu_frames_processed_count[31:0]
  44. // 21 msdu_frames_processed_count[31:0]
  45. // 22 total_processed_byte_count[31:0]
  46. // 23 late_receive_mpdu_count[11:0], window_jump_2k[15:12], hole_count[31:16]
  47. // 24 reserved_24a[27:0], looping_count[31:28]
  48. //
  49. // ################ END SUMMARY #################
  50. #define NUM_OF_DWORDS_REO_GET_QUEUE_STATS_STATUS 25
  51. struct reo_get_queue_stats_status {
  52. struct uniform_reo_status_header status_header;
  53. uint32_t ssn : 12, //[11:0]
  54. current_index : 8, //[19:12]
  55. reserved_2 : 12; //[31:20]
  56. uint32_t pn_31_0 : 32; //[31:0]
  57. uint32_t pn_63_32 : 32; //[31:0]
  58. uint32_t pn_95_64 : 32; //[31:0]
  59. uint32_t pn_127_96 : 32; //[31:0]
  60. uint32_t last_rx_enqueue_timestamp : 32; //[31:0]
  61. uint32_t last_rx_dequeue_timestamp : 32; //[31:0]
  62. uint32_t rx_bitmap_31_0 : 32; //[31:0]
  63. uint32_t rx_bitmap_63_32 : 32; //[31:0]
  64. uint32_t rx_bitmap_95_64 : 32; //[31:0]
  65. uint32_t rx_bitmap_127_96 : 32; //[31:0]
  66. uint32_t rx_bitmap_159_128 : 32; //[31:0]
  67. uint32_t rx_bitmap_191_160 : 32; //[31:0]
  68. uint32_t rx_bitmap_223_192 : 32; //[31:0]
  69. uint32_t rx_bitmap_255_224 : 32; //[31:0]
  70. uint32_t current_mpdu_count : 7, //[6:0]
  71. current_msdu_count : 25; //[31:7]
  72. uint32_t reserved_18 : 4, //[3:0]
  73. timeout_count : 6, //[9:4]
  74. forward_due_to_bar_count : 6, //[15:10]
  75. duplicate_count : 16; //[31:16]
  76. uint32_t frames_in_order_count : 24, //[23:0]
  77. bar_received_count : 8; //[31:24]
  78. uint32_t mpdu_frames_processed_count : 32; //[31:0]
  79. uint32_t msdu_frames_processed_count : 32; //[31:0]
  80. uint32_t total_processed_byte_count : 32; //[31:0]
  81. uint32_t late_receive_mpdu_count : 12, //[11:0]
  82. window_jump_2k : 4, //[15:12]
  83. hole_count : 16; //[31:16]
  84. uint32_t reserved_24a : 28, //[27:0]
  85. looping_count : 4; //[31:28]
  86. };
  87. /*
  88. struct uniform_reo_status_header status_header
  89. Consumer: SW
  90. Producer: REO
  91. Details that can link this status with the original
  92. command. It also contains info on how long REO took to
  93. execute this command.
  94. ssn
  95. Starting Sequence number of the session, this changes
  96. whenever window moves. (can be filled by SW then maintained
  97. by REO)
  98. <legal all>
  99. current_index
  100. Points to last forwarded packet
  101. <legal all>
  102. reserved_2
  103. <legal 0>
  104. pn_31_0
  105. <legal all>
  106. pn_63_32
  107. Bits [63:32] of the PN number.
  108. <legal all>
  109. pn_95_64
  110. Bits [95:64] of the PN number.
  111. <legal all>
  112. pn_127_96
  113. Bits [127:96] of the PN number.
  114. <legal all>
  115. last_rx_enqueue_timestamp
  116. Timestamp of arrival of the last MPDU for this queue
  117. <legal all>
  118. last_rx_dequeue_timestamp
  119. Timestamp of forwarding an MPDU
  120. If the queue is empty when a frame gets received, this
  121. time shall be initialized to the 'enqueue' timestamp
  122. Used for aging
  123. <legal all>
  124. rx_bitmap_31_0
  125. When a bit is set, the corresponding frame is currently
  126. held in the re-order queue.
  127. The bitmap is Fully managed by HW.
  128. SW shall init this to 0, and then never ever change it
  129. <legal all>
  130. rx_bitmap_63_32
  131. See Rx_bitmap_31_0 description
  132. <legal all>
  133. rx_bitmap_95_64
  134. See Rx_bitmap_31_0 description
  135. <legal all>
  136. rx_bitmap_127_96
  137. See Rx_bitmap_31_0 description
  138. <legal all>
  139. rx_bitmap_159_128
  140. See Rx_bitmap_31_0 description
  141. <legal all>
  142. rx_bitmap_191_160
  143. See Rx_bitmap_31_0 description
  144. <legal all>
  145. rx_bitmap_223_192
  146. See Rx_bitmap_31_0 description
  147. <legal all>
  148. rx_bitmap_255_224
  149. See Rx_bitmap_31_0 description
  150. <legal all>
  151. current_mpdu_count
  152. The number of MPDUs in the queue.
  153. <legal all>
  154. current_msdu_count
  155. The number of MSDUs in the queue.
  156. <legal all>
  157. reserved_18
  158. <legal 0>
  159. timeout_count
  160. The number of times that REO started forwarding frames
  161. even though there is a hole in the bitmap. Forwarding reason
  162. is Timeout
  163. The counter saturates and freezes at 0x3F
  164. <legal all>
  165. forward_due_to_bar_count
  166. The number of times that REO started forwarding frames
  167. even though there is a hole in the bitmap. Forwarding reason
  168. is reception of BAR frame.
  169. The counter saturates and freezes at 0x3F
  170. <legal all>
  171. duplicate_count
  172. The number of duplicate frames that have been detected
  173. <legal all>
  174. frames_in_order_count
  175. The number of frames that have been received in order
  176. (without a hole that prevented them from being forwarded
  177. immediately)
  178. This corresponds to the Reorder opcodes:
  179. 'FWDCUR' and 'FWD BUF'
  180. <legal all>
  181. bar_received_count
  182. The number of times a BAR frame is received.
  183. This corresponds to the Reorder opcodes with 'DROP'
  184. The counter saturates and freezes at 0xFF
  185. <legal all>
  186. mpdu_frames_processed_count
  187. The total number of MPDU frames that have been processed
  188. by REO. This includes the duplicates.
  189. <legal all>
  190. msdu_frames_processed_count
  191. The total number of MSDU frames that have been processed
  192. by REO. This includes the duplicates.
  193. <legal all>
  194. total_processed_byte_count
  195. An approximation of the number of bytes received for
  196. this queue.
  197. In 64 byte units
  198. <legal all>
  199. late_receive_mpdu_count
  200. The number of MPDUs received after the window had
  201. already moved on. The 'late' sequence window is defined as
  202. (Window SSN - 256) - (Window SSN - 1)
  203. This corresponds with Out of order detection in
  204. duplicate detect FSM
  205. The counter saturates and freezes at 0xFFF
  206. <legal all>
  207. window_jump_2k
  208. The number of times the window moved more then 2K
  209. The counter saturates and freezes at 0xF
  210. (Note: field name can not start with number: previous
  211. 2k_window_jump)
  212. <legal all>
  213. hole_count
  214. The number of times a hole was created in the receive
  215. bitmap.
  216. This corresponds to the Reorder opcodes with 'QCUR'
  217. <legal all>
  218. reserved_24a
  219. <legal 0>
  220. looping_count
  221. A count value that indicates the number of times the
  222. producer of entries into this Ring has looped around the
  223. ring.
  224. At initialization time, this value is set to 0. On the
  225. first loop, this value is set to 1. After the max value is
  226. reached allowed by the number of bits for this field, the
  227. count value continues with 0 again.
  228. In case SW is the consumer of the ring entries, it can
  229. use this field to figure out up to where the producer of
  230. entries has created new entries. This eliminates the need to
  231. check where the head pointer' of the ring is located once
  232. the SW starts processing an interrupt indicating that new
  233. entries have been put into this ring...
  234. Also note that SW if it wants only needs to look at the
  235. LSB bit of this count value.
  236. <legal all>
  237. */
  238. /* EXTERNAL REFERENCE : struct uniform_reo_status_header status_header */
  239. /* Description REO_GET_QUEUE_STATS_STATUS_0_STATUS_HEADER_REO_STATUS_NUMBER
  240. Consumer: SW , DEBUG
  241. Producer: REO
  242. The value in this field is equal to value of the
  243. 'REO_CMD_Number' field the REO command
  244. This field helps to correlate the statuses with the REO
  245. commands.
  246. <legal all>
  247. */
  248. #define REO_GET_QUEUE_STATS_STATUS_0_STATUS_HEADER_REO_STATUS_NUMBER_OFFSET 0x00000000
  249. #define REO_GET_QUEUE_STATS_STATUS_0_STATUS_HEADER_REO_STATUS_NUMBER_LSB 0
  250. #define REO_GET_QUEUE_STATS_STATUS_0_STATUS_HEADER_REO_STATUS_NUMBER_MASK 0x0000ffff
  251. /* Description REO_GET_QUEUE_STATS_STATUS_0_STATUS_HEADER_CMD_EXECUTION_TIME
  252. Consumer: DEBUG
  253. Producer: REO
  254. The amount of time REO took to excecute the command.
  255. Note that this time does not include the duration of the
  256. command waiting in the command ring, before the execution
  257. started.
  258. In us.
  259. <legal all>
  260. */
  261. #define REO_GET_QUEUE_STATS_STATUS_0_STATUS_HEADER_CMD_EXECUTION_TIME_OFFSET 0x00000000
  262. #define REO_GET_QUEUE_STATS_STATUS_0_STATUS_HEADER_CMD_EXECUTION_TIME_LSB 16
  263. #define REO_GET_QUEUE_STATS_STATUS_0_STATUS_HEADER_CMD_EXECUTION_TIME_MASK 0x03ff0000
  264. /* Description REO_GET_QUEUE_STATS_STATUS_0_STATUS_HEADER_REO_CMD_EXECUTION_STATUS
  265. Consumer: DEBUG
  266. Producer: REO
  267. Execution status of the command.
  268. <enum 0 reo_successful_execution> Command has
  269. successfully be executed
  270. <enum 1 reo_blocked_execution> Command could not be
  271. executed as the queue or cache was blocked
  272. <enum 2 reo_failed_execution> Command has encountered
  273. problems when executing, like the queue descriptor not being
  274. valid. None of the status fields in the entire STATUS TLV
  275. are valid.
  276. <enum 3 reo_resource_blocked> Command is NOT executed
  277. because one or more descriptors were blocked. This is SW
  278. programming mistake.
  279. None of the status fields in the entire STATUS TLV are
  280. valid.
  281. <legal 0-3>
  282. */
  283. #define REO_GET_QUEUE_STATS_STATUS_0_STATUS_HEADER_REO_CMD_EXECUTION_STATUS_OFFSET 0x00000000
  284. #define REO_GET_QUEUE_STATS_STATUS_0_STATUS_HEADER_REO_CMD_EXECUTION_STATUS_LSB 26
  285. #define REO_GET_QUEUE_STATS_STATUS_0_STATUS_HEADER_REO_CMD_EXECUTION_STATUS_MASK 0x0c000000
  286. /* Description REO_GET_QUEUE_STATS_STATUS_0_STATUS_HEADER_RESERVED_0A
  287. <legal 0>
  288. */
  289. #define REO_GET_QUEUE_STATS_STATUS_0_STATUS_HEADER_RESERVED_0A_OFFSET 0x00000000
  290. #define REO_GET_QUEUE_STATS_STATUS_0_STATUS_HEADER_RESERVED_0A_LSB 28
  291. #define REO_GET_QUEUE_STATS_STATUS_0_STATUS_HEADER_RESERVED_0A_MASK 0xf0000000
  292. /* Description REO_GET_QUEUE_STATS_STATUS_1_STATUS_HEADER_TIMESTAMP
  293. Timestamp at the moment that this status report is
  294. written.
  295. <legal all>
  296. */
  297. #define REO_GET_QUEUE_STATS_STATUS_1_STATUS_HEADER_TIMESTAMP_OFFSET 0x00000004
  298. #define REO_GET_QUEUE_STATS_STATUS_1_STATUS_HEADER_TIMESTAMP_LSB 0
  299. #define REO_GET_QUEUE_STATS_STATUS_1_STATUS_HEADER_TIMESTAMP_MASK 0xffffffff
  300. /* Description REO_GET_QUEUE_STATS_STATUS_2_SSN
  301. Starting Sequence number of the session, this changes
  302. whenever window moves. (can be filled by SW then maintained
  303. by REO)
  304. <legal all>
  305. */
  306. #define REO_GET_QUEUE_STATS_STATUS_2_SSN_OFFSET 0x00000008
  307. #define REO_GET_QUEUE_STATS_STATUS_2_SSN_LSB 0
  308. #define REO_GET_QUEUE_STATS_STATUS_2_SSN_MASK 0x00000fff
  309. /* Description REO_GET_QUEUE_STATS_STATUS_2_CURRENT_INDEX
  310. Points to last forwarded packet
  311. <legal all>
  312. */
  313. #define REO_GET_QUEUE_STATS_STATUS_2_CURRENT_INDEX_OFFSET 0x00000008
  314. #define REO_GET_QUEUE_STATS_STATUS_2_CURRENT_INDEX_LSB 12
  315. #define REO_GET_QUEUE_STATS_STATUS_2_CURRENT_INDEX_MASK 0x000ff000
  316. /* Description REO_GET_QUEUE_STATS_STATUS_2_RESERVED_2
  317. <legal 0>
  318. */
  319. #define REO_GET_QUEUE_STATS_STATUS_2_RESERVED_2_OFFSET 0x00000008
  320. #define REO_GET_QUEUE_STATS_STATUS_2_RESERVED_2_LSB 20
  321. #define REO_GET_QUEUE_STATS_STATUS_2_RESERVED_2_MASK 0xfff00000
  322. /* Description REO_GET_QUEUE_STATS_STATUS_3_PN_31_0
  323. <legal all>
  324. */
  325. #define REO_GET_QUEUE_STATS_STATUS_3_PN_31_0_OFFSET 0x0000000c
  326. #define REO_GET_QUEUE_STATS_STATUS_3_PN_31_0_LSB 0
  327. #define REO_GET_QUEUE_STATS_STATUS_3_PN_31_0_MASK 0xffffffff
  328. /* Description REO_GET_QUEUE_STATS_STATUS_4_PN_63_32
  329. Bits [63:32] of the PN number.
  330. <legal all>
  331. */
  332. #define REO_GET_QUEUE_STATS_STATUS_4_PN_63_32_OFFSET 0x00000010
  333. #define REO_GET_QUEUE_STATS_STATUS_4_PN_63_32_LSB 0
  334. #define REO_GET_QUEUE_STATS_STATUS_4_PN_63_32_MASK 0xffffffff
  335. /* Description REO_GET_QUEUE_STATS_STATUS_5_PN_95_64
  336. Bits [95:64] of the PN number.
  337. <legal all>
  338. */
  339. #define REO_GET_QUEUE_STATS_STATUS_5_PN_95_64_OFFSET 0x00000014
  340. #define REO_GET_QUEUE_STATS_STATUS_5_PN_95_64_LSB 0
  341. #define REO_GET_QUEUE_STATS_STATUS_5_PN_95_64_MASK 0xffffffff
  342. /* Description REO_GET_QUEUE_STATS_STATUS_6_PN_127_96
  343. Bits [127:96] of the PN number.
  344. <legal all>
  345. */
  346. #define REO_GET_QUEUE_STATS_STATUS_6_PN_127_96_OFFSET 0x00000018
  347. #define REO_GET_QUEUE_STATS_STATUS_6_PN_127_96_LSB 0
  348. #define REO_GET_QUEUE_STATS_STATUS_6_PN_127_96_MASK 0xffffffff
  349. /* Description REO_GET_QUEUE_STATS_STATUS_7_LAST_RX_ENQUEUE_TIMESTAMP
  350. Timestamp of arrival of the last MPDU for this queue
  351. <legal all>
  352. */
  353. #define REO_GET_QUEUE_STATS_STATUS_7_LAST_RX_ENQUEUE_TIMESTAMP_OFFSET 0x0000001c
  354. #define REO_GET_QUEUE_STATS_STATUS_7_LAST_RX_ENQUEUE_TIMESTAMP_LSB 0
  355. #define REO_GET_QUEUE_STATS_STATUS_7_LAST_RX_ENQUEUE_TIMESTAMP_MASK 0xffffffff
  356. /* Description REO_GET_QUEUE_STATS_STATUS_8_LAST_RX_DEQUEUE_TIMESTAMP
  357. Timestamp of forwarding an MPDU
  358. If the queue is empty when a frame gets received, this
  359. time shall be initialized to the 'enqueue' timestamp
  360. Used for aging
  361. <legal all>
  362. */
  363. #define REO_GET_QUEUE_STATS_STATUS_8_LAST_RX_DEQUEUE_TIMESTAMP_OFFSET 0x00000020
  364. #define REO_GET_QUEUE_STATS_STATUS_8_LAST_RX_DEQUEUE_TIMESTAMP_LSB 0
  365. #define REO_GET_QUEUE_STATS_STATUS_8_LAST_RX_DEQUEUE_TIMESTAMP_MASK 0xffffffff
  366. /* Description REO_GET_QUEUE_STATS_STATUS_9_RX_BITMAP_31_0
  367. When a bit is set, the corresponding frame is currently
  368. held in the re-order queue.
  369. The bitmap is Fully managed by HW.
  370. SW shall init this to 0, and then never ever change it
  371. <legal all>
  372. */
  373. #define REO_GET_QUEUE_STATS_STATUS_9_RX_BITMAP_31_0_OFFSET 0x00000024
  374. #define REO_GET_QUEUE_STATS_STATUS_9_RX_BITMAP_31_0_LSB 0
  375. #define REO_GET_QUEUE_STATS_STATUS_9_RX_BITMAP_31_0_MASK 0xffffffff
  376. /* Description REO_GET_QUEUE_STATS_STATUS_10_RX_BITMAP_63_32
  377. See Rx_bitmap_31_0 description
  378. <legal all>
  379. */
  380. #define REO_GET_QUEUE_STATS_STATUS_10_RX_BITMAP_63_32_OFFSET 0x00000028
  381. #define REO_GET_QUEUE_STATS_STATUS_10_RX_BITMAP_63_32_LSB 0
  382. #define REO_GET_QUEUE_STATS_STATUS_10_RX_BITMAP_63_32_MASK 0xffffffff
  383. /* Description REO_GET_QUEUE_STATS_STATUS_11_RX_BITMAP_95_64
  384. See Rx_bitmap_31_0 description
  385. <legal all>
  386. */
  387. #define REO_GET_QUEUE_STATS_STATUS_11_RX_BITMAP_95_64_OFFSET 0x0000002c
  388. #define REO_GET_QUEUE_STATS_STATUS_11_RX_BITMAP_95_64_LSB 0
  389. #define REO_GET_QUEUE_STATS_STATUS_11_RX_BITMAP_95_64_MASK 0xffffffff
  390. /* Description REO_GET_QUEUE_STATS_STATUS_12_RX_BITMAP_127_96
  391. See Rx_bitmap_31_0 description
  392. <legal all>
  393. */
  394. #define REO_GET_QUEUE_STATS_STATUS_12_RX_BITMAP_127_96_OFFSET 0x00000030
  395. #define REO_GET_QUEUE_STATS_STATUS_12_RX_BITMAP_127_96_LSB 0
  396. #define REO_GET_QUEUE_STATS_STATUS_12_RX_BITMAP_127_96_MASK 0xffffffff
  397. /* Description REO_GET_QUEUE_STATS_STATUS_13_RX_BITMAP_159_128
  398. See Rx_bitmap_31_0 description
  399. <legal all>
  400. */
  401. #define REO_GET_QUEUE_STATS_STATUS_13_RX_BITMAP_159_128_OFFSET 0x00000034
  402. #define REO_GET_QUEUE_STATS_STATUS_13_RX_BITMAP_159_128_LSB 0
  403. #define REO_GET_QUEUE_STATS_STATUS_13_RX_BITMAP_159_128_MASK 0xffffffff
  404. /* Description REO_GET_QUEUE_STATS_STATUS_14_RX_BITMAP_191_160
  405. See Rx_bitmap_31_0 description
  406. <legal all>
  407. */
  408. #define REO_GET_QUEUE_STATS_STATUS_14_RX_BITMAP_191_160_OFFSET 0x00000038
  409. #define REO_GET_QUEUE_STATS_STATUS_14_RX_BITMAP_191_160_LSB 0
  410. #define REO_GET_QUEUE_STATS_STATUS_14_RX_BITMAP_191_160_MASK 0xffffffff
  411. /* Description REO_GET_QUEUE_STATS_STATUS_15_RX_BITMAP_223_192
  412. See Rx_bitmap_31_0 description
  413. <legal all>
  414. */
  415. #define REO_GET_QUEUE_STATS_STATUS_15_RX_BITMAP_223_192_OFFSET 0x0000003c
  416. #define REO_GET_QUEUE_STATS_STATUS_15_RX_BITMAP_223_192_LSB 0
  417. #define REO_GET_QUEUE_STATS_STATUS_15_RX_BITMAP_223_192_MASK 0xffffffff
  418. /* Description REO_GET_QUEUE_STATS_STATUS_16_RX_BITMAP_255_224
  419. See Rx_bitmap_31_0 description
  420. <legal all>
  421. */
  422. #define REO_GET_QUEUE_STATS_STATUS_16_RX_BITMAP_255_224_OFFSET 0x00000040
  423. #define REO_GET_QUEUE_STATS_STATUS_16_RX_BITMAP_255_224_LSB 0
  424. #define REO_GET_QUEUE_STATS_STATUS_16_RX_BITMAP_255_224_MASK 0xffffffff
  425. /* Description REO_GET_QUEUE_STATS_STATUS_17_CURRENT_MPDU_COUNT
  426. The number of MPDUs in the queue.
  427. <legal all>
  428. */
  429. #define REO_GET_QUEUE_STATS_STATUS_17_CURRENT_MPDU_COUNT_OFFSET 0x00000044
  430. #define REO_GET_QUEUE_STATS_STATUS_17_CURRENT_MPDU_COUNT_LSB 0
  431. #define REO_GET_QUEUE_STATS_STATUS_17_CURRENT_MPDU_COUNT_MASK 0x0000007f
  432. /* Description REO_GET_QUEUE_STATS_STATUS_17_CURRENT_MSDU_COUNT
  433. The number of MSDUs in the queue.
  434. <legal all>
  435. */
  436. #define REO_GET_QUEUE_STATS_STATUS_17_CURRENT_MSDU_COUNT_OFFSET 0x00000044
  437. #define REO_GET_QUEUE_STATS_STATUS_17_CURRENT_MSDU_COUNT_LSB 7
  438. #define REO_GET_QUEUE_STATS_STATUS_17_CURRENT_MSDU_COUNT_MASK 0xffffff80
  439. /* Description REO_GET_QUEUE_STATS_STATUS_18_RESERVED_18
  440. <legal 0>
  441. */
  442. #define REO_GET_QUEUE_STATS_STATUS_18_RESERVED_18_OFFSET 0x00000048
  443. #define REO_GET_QUEUE_STATS_STATUS_18_RESERVED_18_LSB 0
  444. #define REO_GET_QUEUE_STATS_STATUS_18_RESERVED_18_MASK 0x0000000f
  445. /* Description REO_GET_QUEUE_STATS_STATUS_18_TIMEOUT_COUNT
  446. The number of times that REO started forwarding frames
  447. even though there is a hole in the bitmap. Forwarding reason
  448. is Timeout
  449. The counter saturates and freezes at 0x3F
  450. <legal all>
  451. */
  452. #define REO_GET_QUEUE_STATS_STATUS_18_TIMEOUT_COUNT_OFFSET 0x00000048
  453. #define REO_GET_QUEUE_STATS_STATUS_18_TIMEOUT_COUNT_LSB 4
  454. #define REO_GET_QUEUE_STATS_STATUS_18_TIMEOUT_COUNT_MASK 0x000003f0
  455. /* Description REO_GET_QUEUE_STATS_STATUS_18_FORWARD_DUE_TO_BAR_COUNT
  456. The number of times that REO started forwarding frames
  457. even though there is a hole in the bitmap. Forwarding reason
  458. is reception of BAR frame.
  459. The counter saturates and freezes at 0x3F
  460. <legal all>
  461. */
  462. #define REO_GET_QUEUE_STATS_STATUS_18_FORWARD_DUE_TO_BAR_COUNT_OFFSET 0x00000048
  463. #define REO_GET_QUEUE_STATS_STATUS_18_FORWARD_DUE_TO_BAR_COUNT_LSB 10
  464. #define REO_GET_QUEUE_STATS_STATUS_18_FORWARD_DUE_TO_BAR_COUNT_MASK 0x0000fc00
  465. /* Description REO_GET_QUEUE_STATS_STATUS_18_DUPLICATE_COUNT
  466. The number of duplicate frames that have been detected
  467. <legal all>
  468. */
  469. #define REO_GET_QUEUE_STATS_STATUS_18_DUPLICATE_COUNT_OFFSET 0x00000048
  470. #define REO_GET_QUEUE_STATS_STATUS_18_DUPLICATE_COUNT_LSB 16
  471. #define REO_GET_QUEUE_STATS_STATUS_18_DUPLICATE_COUNT_MASK 0xffff0000
  472. /* Description REO_GET_QUEUE_STATS_STATUS_19_FRAMES_IN_ORDER_COUNT
  473. The number of frames that have been received in order
  474. (without a hole that prevented them from being forwarded
  475. immediately)
  476. This corresponds to the Reorder opcodes:
  477. 'FWDCUR' and 'FWD BUF'
  478. <legal all>
  479. */
  480. #define REO_GET_QUEUE_STATS_STATUS_19_FRAMES_IN_ORDER_COUNT_OFFSET 0x0000004c
  481. #define REO_GET_QUEUE_STATS_STATUS_19_FRAMES_IN_ORDER_COUNT_LSB 0
  482. #define REO_GET_QUEUE_STATS_STATUS_19_FRAMES_IN_ORDER_COUNT_MASK 0x00ffffff
  483. /* Description REO_GET_QUEUE_STATS_STATUS_19_BAR_RECEIVED_COUNT
  484. The number of times a BAR frame is received.
  485. This corresponds to the Reorder opcodes with 'DROP'
  486. The counter saturates and freezes at 0xFF
  487. <legal all>
  488. */
  489. #define REO_GET_QUEUE_STATS_STATUS_19_BAR_RECEIVED_COUNT_OFFSET 0x0000004c
  490. #define REO_GET_QUEUE_STATS_STATUS_19_BAR_RECEIVED_COUNT_LSB 24
  491. #define REO_GET_QUEUE_STATS_STATUS_19_BAR_RECEIVED_COUNT_MASK 0xff000000
  492. /* Description REO_GET_QUEUE_STATS_STATUS_20_MPDU_FRAMES_PROCESSED_COUNT
  493. The total number of MPDU frames that have been processed
  494. by REO. This includes the duplicates.
  495. <legal all>
  496. */
  497. #define REO_GET_QUEUE_STATS_STATUS_20_MPDU_FRAMES_PROCESSED_COUNT_OFFSET 0x00000050
  498. #define REO_GET_QUEUE_STATS_STATUS_20_MPDU_FRAMES_PROCESSED_COUNT_LSB 0
  499. #define REO_GET_QUEUE_STATS_STATUS_20_MPDU_FRAMES_PROCESSED_COUNT_MASK 0xffffffff
  500. /* Description REO_GET_QUEUE_STATS_STATUS_21_MSDU_FRAMES_PROCESSED_COUNT
  501. The total number of MSDU frames that have been processed
  502. by REO. This includes the duplicates.
  503. <legal all>
  504. */
  505. #define REO_GET_QUEUE_STATS_STATUS_21_MSDU_FRAMES_PROCESSED_COUNT_OFFSET 0x00000054
  506. #define REO_GET_QUEUE_STATS_STATUS_21_MSDU_FRAMES_PROCESSED_COUNT_LSB 0
  507. #define REO_GET_QUEUE_STATS_STATUS_21_MSDU_FRAMES_PROCESSED_COUNT_MASK 0xffffffff
  508. /* Description REO_GET_QUEUE_STATS_STATUS_22_TOTAL_PROCESSED_BYTE_COUNT
  509. An approximation of the number of bytes received for
  510. this queue.
  511. In 64 byte units
  512. <legal all>
  513. */
  514. #define REO_GET_QUEUE_STATS_STATUS_22_TOTAL_PROCESSED_BYTE_COUNT_OFFSET 0x00000058
  515. #define REO_GET_QUEUE_STATS_STATUS_22_TOTAL_PROCESSED_BYTE_COUNT_LSB 0
  516. #define REO_GET_QUEUE_STATS_STATUS_22_TOTAL_PROCESSED_BYTE_COUNT_MASK 0xffffffff
  517. /* Description REO_GET_QUEUE_STATS_STATUS_23_LATE_RECEIVE_MPDU_COUNT
  518. The number of MPDUs received after the window had
  519. already moved on. The 'late' sequence window is defined as
  520. (Window SSN - 256) - (Window SSN - 1)
  521. This corresponds with Out of order detection in
  522. duplicate detect FSM
  523. The counter saturates and freezes at 0xFFF
  524. <legal all>
  525. */
  526. #define REO_GET_QUEUE_STATS_STATUS_23_LATE_RECEIVE_MPDU_COUNT_OFFSET 0x0000005c
  527. #define REO_GET_QUEUE_STATS_STATUS_23_LATE_RECEIVE_MPDU_COUNT_LSB 0
  528. #define REO_GET_QUEUE_STATS_STATUS_23_LATE_RECEIVE_MPDU_COUNT_MASK 0x00000fff
  529. /* Description REO_GET_QUEUE_STATS_STATUS_23_WINDOW_JUMP_2K
  530. The number of times the window moved more then 2K
  531. The counter saturates and freezes at 0xF
  532. (Note: field name can not start with number: previous
  533. 2k_window_jump)
  534. <legal all>
  535. */
  536. #define REO_GET_QUEUE_STATS_STATUS_23_WINDOW_JUMP_2K_OFFSET 0x0000005c
  537. #define REO_GET_QUEUE_STATS_STATUS_23_WINDOW_JUMP_2K_LSB 12
  538. #define REO_GET_QUEUE_STATS_STATUS_23_WINDOW_JUMP_2K_MASK 0x0000f000
  539. /* Description REO_GET_QUEUE_STATS_STATUS_23_HOLE_COUNT
  540. The number of times a hole was created in the receive
  541. bitmap.
  542. This corresponds to the Reorder opcodes with 'QCUR'
  543. <legal all>
  544. */
  545. #define REO_GET_QUEUE_STATS_STATUS_23_HOLE_COUNT_OFFSET 0x0000005c
  546. #define REO_GET_QUEUE_STATS_STATUS_23_HOLE_COUNT_LSB 16
  547. #define REO_GET_QUEUE_STATS_STATUS_23_HOLE_COUNT_MASK 0xffff0000
  548. /* Description REO_GET_QUEUE_STATS_STATUS_24_RESERVED_24A
  549. <legal 0>
  550. */
  551. #define REO_GET_QUEUE_STATS_STATUS_24_RESERVED_24A_OFFSET 0x00000060
  552. #define REO_GET_QUEUE_STATS_STATUS_24_RESERVED_24A_LSB 0
  553. #define REO_GET_QUEUE_STATS_STATUS_24_RESERVED_24A_MASK 0x0fffffff
  554. /* Description REO_GET_QUEUE_STATS_STATUS_24_LOOPING_COUNT
  555. A count value that indicates the number of times the
  556. producer of entries into this Ring has looped around the
  557. ring.
  558. At initialization time, this value is set to 0. On the
  559. first loop, this value is set to 1. After the max value is
  560. reached allowed by the number of bits for this field, the
  561. count value continues with 0 again.
  562. In case SW is the consumer of the ring entries, it can
  563. use this field to figure out up to where the producer of
  564. entries has created new entries. This eliminates the need to
  565. check where the head pointer' of the ring is located once
  566. the SW starts processing an interrupt indicating that new
  567. entries have been put into this ring...
  568. Also note that SW if it wants only needs to look at the
  569. LSB bit of this count value.
  570. <legal all>
  571. */
  572. #define REO_GET_QUEUE_STATS_STATUS_24_LOOPING_COUNT_OFFSET 0x00000060
  573. #define REO_GET_QUEUE_STATS_STATUS_24_LOOPING_COUNT_LSB 28
  574. #define REO_GET_QUEUE_STATS_STATUS_24_LOOPING_COUNT_MASK 0xf0000000
  575. #endif // _REO_GET_QUEUE_STATS_STATUS_H_