reo_destination_ring.h 22 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765
  1. /*
  2. * Copyright (c) 2018 The Linux Foundation. All rights reserved.
  3. *
  4. * Permission to use, copy, modify, and/or distribute this software for
  5. * any purpose with or without fee is hereby granted, provided that the
  6. * above copyright notice and this permission notice appear in all
  7. * copies.
  8. *
  9. * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL
  10. * WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED
  11. * WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE
  12. * AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL
  13. * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
  14. * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
  15. * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
  16. * PERFORMANCE OF THIS SOFTWARE.
  17. */
  18. #ifndef _REO_DESTINATION_RING_H_
  19. #define _REO_DESTINATION_RING_H_
  20. #if !defined(__ASSEMBLER__)
  21. #endif
  22. #include "buffer_addr_info.h"
  23. #include "rx_mpdu_desc_info.h"
  24. #include "rx_msdu_desc_info.h"
  25. // ################ START SUMMARY #################
  26. //
  27. // Dword Fields
  28. // 0-1 struct buffer_addr_info buf_or_link_desc_addr_info;
  29. // 2-3 struct rx_mpdu_desc_info rx_mpdu_desc_info_details;
  30. // 4-5 struct rx_msdu_desc_info rx_msdu_desc_info_details;
  31. // 6 rx_reo_queue_desc_addr_31_0[31:0]
  32. // 7 rx_reo_queue_desc_addr_39_32[7:0], reo_dest_buffer_type[8], reo_push_reason[10:9], reo_error_code[15:11], receive_queue_number[31:16]
  33. // 8 soft_reorder_info_valid[0], reorder_opcode[4:1], reorder_slot_index[12:5], mpdu_fragment_number[16:13], reserved_8a[31:17]
  34. // 9 reserved_9a[31:0]
  35. // 10 reserved_10a[31:0]
  36. // 11 reserved_11a[31:0]
  37. // 12 reserved_12a[31:0]
  38. // 13 reserved_13a[31:0]
  39. // 14 reserved_14a[31:0]
  40. // 15 reserved_15[19:0], ring_id[27:20], looping_count[31:28]
  41. //
  42. // ################ END SUMMARY #################
  43. #define NUM_OF_DWORDS_REO_DESTINATION_RING 16
  44. struct reo_destination_ring {
  45. struct buffer_addr_info buf_or_link_desc_addr_info;
  46. struct rx_mpdu_desc_info rx_mpdu_desc_info_details;
  47. struct rx_msdu_desc_info rx_msdu_desc_info_details;
  48. uint32_t rx_reo_queue_desc_addr_31_0 : 32; //[31:0]
  49. uint32_t rx_reo_queue_desc_addr_39_32 : 8, //[7:0]
  50. reo_dest_buffer_type : 1, //[8]
  51. reo_push_reason : 2, //[10:9]
  52. reo_error_code : 5, //[15:11]
  53. receive_queue_number : 16; //[31:16]
  54. uint32_t soft_reorder_info_valid : 1, //[0]
  55. reorder_opcode : 4, //[4:1]
  56. reorder_slot_index : 8, //[12:5]
  57. mpdu_fragment_number : 4, //[16:13]
  58. reserved_8a : 15; //[31:17]
  59. uint32_t reserved_9a : 32; //[31:0]
  60. uint32_t reserved_10a : 32; //[31:0]
  61. uint32_t reserved_11a : 32; //[31:0]
  62. uint32_t reserved_12a : 32; //[31:0]
  63. uint32_t reserved_13a : 32; //[31:0]
  64. uint32_t reserved_14a : 32; //[31:0]
  65. uint32_t reserved_15 : 20, //[19:0]
  66. ring_id : 8, //[27:20]
  67. looping_count : 4; //[31:28]
  68. };
  69. /*
  70. struct buffer_addr_info buf_or_link_desc_addr_info
  71. Consumer: REO/SW/FW
  72. Producer: RXDMA
  73. Details of the physical address of the a buffer or MSDU
  74. link descriptor
  75. struct rx_mpdu_desc_info rx_mpdu_desc_info_details
  76. Consumer: REO/SW/FW
  77. Producer: RXDMA
  78. General information related to the MPDU that is passed
  79. on from REO entrance ring to the REO destination ring
  80. struct rx_msdu_desc_info rx_msdu_desc_info_details
  81. General information related to the MSDU that is passed
  82. on from RXDMA all the way to to the REO destination ring.
  83. rx_reo_queue_desc_addr_31_0
  84. Consumer: REO
  85. Producer: RXDMA
  86. Address (lower 32 bits) of the REO queue descriptor.
  87. <legal all>
  88. rx_reo_queue_desc_addr_39_32
  89. Consumer: REO
  90. Producer: RXDMA
  91. Address (upper 8 bits) of the REO queue descriptor.
  92. <legal all>
  93. reo_dest_buffer_type
  94. Indicates the type of address provided in the
  95. 'Buf_or_link_desc_addr_info'
  96. <enum 0 MSDU_buf_address> The address of an MSDU buffer
  97. <enum 1 MSDU_link_desc_address> The address of the MSDU
  98. link descriptor.
  99. <legal all>
  100. reo_push_reason
  101. Indicates why REO pushed the frame to this exit ring
  102. <enum 0 reo_error_detected> Reo detected an error an
  103. pushed this frame to this queue
  104. <enum 1 reo_routing_instruction> Reo pushed the frame to
  105. this queue per received routing instructions. No error
  106. within REO was detected
  107. <legal 0 - 1>
  108. reo_error_code
  109. Field only valid when 'Reo_push_reason' set to
  110. 'reo_error_detected'.
  111. <enum 0 reo_queue_desc_addr_zero> Reo queue descriptor
  112. provided in the REO_ENTRANCE ring is set to 0
  113. <enum 1 reo_queue_desc_not_valid> Reo queue descriptor
  114. valid bit is NOT set
  115. <enum 2 ampdu_in_non_ba> AMPDU frame received without BA
  116. session having been setup.
  117. <enum 3 non_ba_duplicate> Non-BA session, SN equal to
  118. SSN, Retry bit set: duplicate frame
  119. <enum 4 ba_duplicate> BA session, duplicate frame
  120. <enum 5 regular_frame_2k_jump> A normal (management/data
  121. frame) received with 2K jump in SN
  122. <enum 6 bar_frame_2k_jump> A bar received with 2K jump
  123. in SSN
  124. <enum 7 regular_frame_OOR> A normal (management/data
  125. frame) received with SN falling within the OOR window
  126. <enum 8 bar_frame_OOR> A bar received with SSN falling
  127. within the OOR window
  128. <enum 9 bar_frame_no_ba_session> A bar received without
  129. a BA session
  130. <enum 10 bar_frame_sn_equals_ssn> A bar received with
  131. SSN equal to SN
  132. <enum 11 pn_check_failed> PN Check Failed packet.
  133. <enum 12 2k_error_handling_flag_set> Frame is forwarded
  134. as a result of the 'Seq_2k_error_detected_flag' been set in
  135. the REO Queue descriptor
  136. <enum 13 pn_error_handling_flag_set> Frame is forwarded
  137. as a result of the 'pn_error_detected_flag' been set in the
  138. REO Queue descriptor
  139. <enum 14 queue_descriptor_blocked_set> Frame is
  140. forwarded as a result of the queue descriptor(address) being
  141. blocked as SW/FW seems to be currently in the process of
  142. making updates to this descriptor...
  143. <legal 0-14>
  144. receive_queue_number
  145. This field indicates the REO MPDU reorder queue ID from
  146. which this frame originated. This field is populated from a
  147. field with the same name in the RX_REO_QUEUE descriptor.
  148. <legal all>
  149. soft_reorder_info_valid
  150. When set, REO has been instructed to not perform the
  151. actual re-ordering of frames for this queue, but just to
  152. insert the reorder opcodes
  153. <legal all>
  154. reorder_opcode
  155. Field is valid when 'Soft_reorder_info_valid' is set.
  156. This field is always valid for debug purpose as well.
  157. Details are in the MLD.
  158. <enum 0 invalid>
  159. <enum 1 fwdcur_fwdbuf>
  160. <enum 2 fwdbuf_fwdcur>
  161. <enum 3 qcur>
  162. <enum 4 fwdbuf_qcur>
  163. <enum 5 fwdbuf_drop>
  164. <enum 6 fwdall_drop>
  165. <enum 7 fwdall_qcur>
  166. <enum 8 reserved_reo_opcode_1>
  167. <enum 9 dropcur> the error reason code is in
  168. reo_error_code field.
  169. <enum 10 reserved_reo_opcode_2>
  170. <enum 11 reserved_reo_opcode_3>
  171. <enum 12 reserved_reo_opcode_4>
  172. <enum 13 reserved_reo_opcode_5>
  173. <enum 14 reserved_reo_opcode_6>
  174. <enum 15 reserved_reo_opcode_7>
  175. <legal all>
  176. reorder_slot_index
  177. Field only valid when 'Soft_reorder_info_valid' is set.
  178. TODO: add description
  179. <legal all>
  180. mpdu_fragment_number
  181. Field only valid when Rx_mpdu_desc_info_details.
  182. Fragment_flag is set.
  183. The fragment number from the 802.11 header.
  184. Note that the sequence number is embedded in the field:
  185. Rx_mpdu_desc_info_details. Mpdu_sequence_number
  186. <legal all>
  187. reserved_8a
  188. <legal 0>
  189. reserved_9a
  190. <legal 0>
  191. reserved_10a
  192. <legal 0>
  193. reserved_11a
  194. <legal 0>
  195. reserved_12a
  196. <legal 0>
  197. reserved_13a
  198. <legal 0>
  199. reserved_14a
  200. <legal 0>
  201. reserved_15
  202. <legal 0>
  203. ring_id
  204. The buffer pointer ring ID.
  205. 0 refers to the IDLE ring
  206. 1 - N refers to other rings
  207. Helps with debugging when dumping ring contents.
  208. <legal all>
  209. looping_count
  210. A count value that indicates the number of times the
  211. producer of entries into this Ring has looped around the
  212. ring.
  213. At initialization time, this value is set to 0. On the
  214. first loop, this value is set to 1. After the max value is
  215. reached allowed by the number of bits for this field, the
  216. count value continues with 0 again.
  217. In case SW is the consumer of the ring entries, it can
  218. use this field to figure out up to where the producer of
  219. entries has created new entries. This eliminates the need to
  220. check where the head pointer' of the ring is located once
  221. the SW starts processing an interrupt indicating that new
  222. entries have been put into this ring...
  223. Also note that SW if it wants only needs to look at the
  224. LSB bit of this count value.
  225. <legal all>
  226. */
  227. #define REO_DESTINATION_RING_0_BUFFER_ADDR_INFO_BUF_OR_LINK_DESC_ADDR_INFO_OFFSET 0x00000000
  228. #define REO_DESTINATION_RING_0_BUFFER_ADDR_INFO_BUF_OR_LINK_DESC_ADDR_INFO_LSB 28
  229. #define REO_DESTINATION_RING_0_BUFFER_ADDR_INFO_BUF_OR_LINK_DESC_ADDR_INFO_MASK 0xffffffff
  230. #define REO_DESTINATION_RING_1_BUFFER_ADDR_INFO_BUF_OR_LINK_DESC_ADDR_INFO_OFFSET 0x00000004
  231. #define REO_DESTINATION_RING_1_BUFFER_ADDR_INFO_BUF_OR_LINK_DESC_ADDR_INFO_LSB 28
  232. #define REO_DESTINATION_RING_1_BUFFER_ADDR_INFO_BUF_OR_LINK_DESC_ADDR_INFO_MASK 0xffffffff
  233. #define REO_DESTINATION_RING_2_RX_MPDU_DESC_INFO_RX_MPDU_DESC_INFO_DETAILS_OFFSET 0x00000008
  234. #define REO_DESTINATION_RING_2_RX_MPDU_DESC_INFO_RX_MPDU_DESC_INFO_DETAILS_LSB 28
  235. #define REO_DESTINATION_RING_2_RX_MPDU_DESC_INFO_RX_MPDU_DESC_INFO_DETAILS_MASK 0xffffffff
  236. #define REO_DESTINATION_RING_3_RX_MPDU_DESC_INFO_RX_MPDU_DESC_INFO_DETAILS_OFFSET 0x0000000c
  237. #define REO_DESTINATION_RING_3_RX_MPDU_DESC_INFO_RX_MPDU_DESC_INFO_DETAILS_LSB 28
  238. #define REO_DESTINATION_RING_3_RX_MPDU_DESC_INFO_RX_MPDU_DESC_INFO_DETAILS_MASK 0xffffffff
  239. #define REO_DESTINATION_RING_4_RX_MSDU_DESC_INFO_RX_MSDU_DESC_INFO_DETAILS_OFFSET 0x00000010
  240. #define REO_DESTINATION_RING_4_RX_MSDU_DESC_INFO_RX_MSDU_DESC_INFO_DETAILS_LSB 28
  241. #define REO_DESTINATION_RING_4_RX_MSDU_DESC_INFO_RX_MSDU_DESC_INFO_DETAILS_MASK 0xffffffff
  242. #define REO_DESTINATION_RING_5_RX_MSDU_DESC_INFO_RX_MSDU_DESC_INFO_DETAILS_OFFSET 0x00000014
  243. #define REO_DESTINATION_RING_5_RX_MSDU_DESC_INFO_RX_MSDU_DESC_INFO_DETAILS_LSB 28
  244. #define REO_DESTINATION_RING_5_RX_MSDU_DESC_INFO_RX_MSDU_DESC_INFO_DETAILS_MASK 0xffffffff
  245. /* Description REO_DESTINATION_RING_6_RX_REO_QUEUE_DESC_ADDR_31_0
  246. Consumer: REO
  247. Producer: RXDMA
  248. Address (lower 32 bits) of the REO queue descriptor.
  249. <legal all>
  250. */
  251. #define REO_DESTINATION_RING_6_RX_REO_QUEUE_DESC_ADDR_31_0_OFFSET 0x00000018
  252. #define REO_DESTINATION_RING_6_RX_REO_QUEUE_DESC_ADDR_31_0_LSB 0
  253. #define REO_DESTINATION_RING_6_RX_REO_QUEUE_DESC_ADDR_31_0_MASK 0xffffffff
  254. /* Description REO_DESTINATION_RING_7_RX_REO_QUEUE_DESC_ADDR_39_32
  255. Consumer: REO
  256. Producer: RXDMA
  257. Address (upper 8 bits) of the REO queue descriptor.
  258. <legal all>
  259. */
  260. #define REO_DESTINATION_RING_7_RX_REO_QUEUE_DESC_ADDR_39_32_OFFSET 0x0000001c
  261. #define REO_DESTINATION_RING_7_RX_REO_QUEUE_DESC_ADDR_39_32_LSB 0
  262. #define REO_DESTINATION_RING_7_RX_REO_QUEUE_DESC_ADDR_39_32_MASK 0x000000ff
  263. /* Description REO_DESTINATION_RING_7_REO_DEST_BUFFER_TYPE
  264. Indicates the type of address provided in the
  265. 'Buf_or_link_desc_addr_info'
  266. <enum 0 MSDU_buf_address> The address of an MSDU buffer
  267. <enum 1 MSDU_link_desc_address> The address of the MSDU
  268. link descriptor.
  269. <legal all>
  270. */
  271. #define REO_DESTINATION_RING_7_REO_DEST_BUFFER_TYPE_OFFSET 0x0000001c
  272. #define REO_DESTINATION_RING_7_REO_DEST_BUFFER_TYPE_LSB 8
  273. #define REO_DESTINATION_RING_7_REO_DEST_BUFFER_TYPE_MASK 0x00000100
  274. /* Description REO_DESTINATION_RING_7_REO_PUSH_REASON
  275. Indicates why REO pushed the frame to this exit ring
  276. <enum 0 reo_error_detected> Reo detected an error an
  277. pushed this frame to this queue
  278. <enum 1 reo_routing_instruction> Reo pushed the frame to
  279. this queue per received routing instructions. No error
  280. within REO was detected
  281. <legal 0 - 1>
  282. */
  283. #define REO_DESTINATION_RING_7_REO_PUSH_REASON_OFFSET 0x0000001c
  284. #define REO_DESTINATION_RING_7_REO_PUSH_REASON_LSB 9
  285. #define REO_DESTINATION_RING_7_REO_PUSH_REASON_MASK 0x00000600
  286. /* Description REO_DESTINATION_RING_7_REO_ERROR_CODE
  287. Field only valid when 'Reo_push_reason' set to
  288. 'reo_error_detected'.
  289. <enum 0 reo_queue_desc_addr_zero> Reo queue descriptor
  290. provided in the REO_ENTRANCE ring is set to 0
  291. <enum 1 reo_queue_desc_not_valid> Reo queue descriptor
  292. valid bit is NOT set
  293. <enum 2 ampdu_in_non_ba> AMPDU frame received without BA
  294. session having been setup.
  295. <enum 3 non_ba_duplicate> Non-BA session, SN equal to
  296. SSN, Retry bit set: duplicate frame
  297. <enum 4 ba_duplicate> BA session, duplicate frame
  298. <enum 5 regular_frame_2k_jump> A normal (management/data
  299. frame) received with 2K jump in SN
  300. <enum 6 bar_frame_2k_jump> A bar received with 2K jump
  301. in SSN
  302. <enum 7 regular_frame_OOR> A normal (management/data
  303. frame) received with SN falling within the OOR window
  304. <enum 8 bar_frame_OOR> A bar received with SSN falling
  305. within the OOR window
  306. <enum 9 bar_frame_no_ba_session> A bar received without
  307. a BA session
  308. <enum 10 bar_frame_sn_equals_ssn> A bar received with
  309. SSN equal to SN
  310. <enum 11 pn_check_failed> PN Check Failed packet.
  311. <enum 12 2k_error_handling_flag_set> Frame is forwarded
  312. as a result of the 'Seq_2k_error_detected_flag' been set in
  313. the REO Queue descriptor
  314. <enum 13 pn_error_handling_flag_set> Frame is forwarded
  315. as a result of the 'pn_error_detected_flag' been set in the
  316. REO Queue descriptor
  317. <enum 14 queue_descriptor_blocked_set> Frame is
  318. forwarded as a result of the queue descriptor(address) being
  319. blocked as SW/FW seems to be currently in the process of
  320. making updates to this descriptor...
  321. <legal 0-14>
  322. */
  323. #define REO_DESTINATION_RING_7_REO_ERROR_CODE_OFFSET 0x0000001c
  324. #define REO_DESTINATION_RING_7_REO_ERROR_CODE_LSB 11
  325. #define REO_DESTINATION_RING_7_REO_ERROR_CODE_MASK 0x0000f800
  326. /* Description REO_DESTINATION_RING_7_RECEIVE_QUEUE_NUMBER
  327. This field indicates the REO MPDU reorder queue ID from
  328. which this frame originated. This field is populated from a
  329. field with the same name in the RX_REO_QUEUE descriptor.
  330. <legal all>
  331. */
  332. #define REO_DESTINATION_RING_7_RECEIVE_QUEUE_NUMBER_OFFSET 0x0000001c
  333. #define REO_DESTINATION_RING_7_RECEIVE_QUEUE_NUMBER_LSB 16
  334. #define REO_DESTINATION_RING_7_RECEIVE_QUEUE_NUMBER_MASK 0xffff0000
  335. /* Description REO_DESTINATION_RING_8_SOFT_REORDER_INFO_VALID
  336. When set, REO has been instructed to not perform the
  337. actual re-ordering of frames for this queue, but just to
  338. insert the reorder opcodes
  339. <legal all>
  340. */
  341. #define REO_DESTINATION_RING_8_SOFT_REORDER_INFO_VALID_OFFSET 0x00000020
  342. #define REO_DESTINATION_RING_8_SOFT_REORDER_INFO_VALID_LSB 0
  343. #define REO_DESTINATION_RING_8_SOFT_REORDER_INFO_VALID_MASK 0x00000001
  344. /* Description REO_DESTINATION_RING_8_REORDER_OPCODE
  345. Field is valid when 'Soft_reorder_info_valid' is set.
  346. This field is always valid for debug purpose as well.
  347. Details are in the MLD.
  348. <enum 0 invalid>
  349. <enum 1 fwdcur_fwdbuf>
  350. <enum 2 fwdbuf_fwdcur>
  351. <enum 3 qcur>
  352. <enum 4 fwdbuf_qcur>
  353. <enum 5 fwdbuf_drop>
  354. <enum 6 fwdall_drop>
  355. <enum 7 fwdall_qcur>
  356. <enum 8 reserved_reo_opcode_1>
  357. <enum 9 dropcur> the error reason code is in
  358. reo_error_code field.
  359. <enum 10 reserved_reo_opcode_2>
  360. <enum 11 reserved_reo_opcode_3>
  361. <enum 12 reserved_reo_opcode_4>
  362. <enum 13 reserved_reo_opcode_5>
  363. <enum 14 reserved_reo_opcode_6>
  364. <enum 15 reserved_reo_opcode_7>
  365. <legal all>
  366. */
  367. #define REO_DESTINATION_RING_8_REORDER_OPCODE_OFFSET 0x00000020
  368. #define REO_DESTINATION_RING_8_REORDER_OPCODE_LSB 1
  369. #define REO_DESTINATION_RING_8_REORDER_OPCODE_MASK 0x0000001e
  370. /* Description REO_DESTINATION_RING_8_REORDER_SLOT_INDEX
  371. Field only valid when 'Soft_reorder_info_valid' is set.
  372. TODO: add description
  373. <legal all>
  374. */
  375. #define REO_DESTINATION_RING_8_REORDER_SLOT_INDEX_OFFSET 0x00000020
  376. #define REO_DESTINATION_RING_8_REORDER_SLOT_INDEX_LSB 5
  377. #define REO_DESTINATION_RING_8_REORDER_SLOT_INDEX_MASK 0x00001fe0
  378. /* Description REO_DESTINATION_RING_8_MPDU_FRAGMENT_NUMBER
  379. Field only valid when Rx_mpdu_desc_info_details.
  380. Fragment_flag is set.
  381. The fragment number from the 802.11 header.
  382. Note that the sequence number is embedded in the field:
  383. Rx_mpdu_desc_info_details. Mpdu_sequence_number
  384. <legal all>
  385. */
  386. #define REO_DESTINATION_RING_8_MPDU_FRAGMENT_NUMBER_OFFSET 0x00000020
  387. #define REO_DESTINATION_RING_8_MPDU_FRAGMENT_NUMBER_LSB 13
  388. #define REO_DESTINATION_RING_8_MPDU_FRAGMENT_NUMBER_MASK 0x0001e000
  389. /* Description REO_DESTINATION_RING_8_RESERVED_8A
  390. <legal 0>
  391. */
  392. #define REO_DESTINATION_RING_8_RESERVED_8A_OFFSET 0x00000020
  393. #define REO_DESTINATION_RING_8_RESERVED_8A_LSB 17
  394. #define REO_DESTINATION_RING_8_RESERVED_8A_MASK 0xfffe0000
  395. /* Description REO_DESTINATION_RING_9_RESERVED_9A
  396. <legal 0>
  397. */
  398. #define REO_DESTINATION_RING_9_RESERVED_9A_OFFSET 0x00000024
  399. #define REO_DESTINATION_RING_9_RESERVED_9A_LSB 0
  400. #define REO_DESTINATION_RING_9_RESERVED_9A_MASK 0xffffffff
  401. /* Description REO_DESTINATION_RING_10_RESERVED_10A
  402. <legal 0>
  403. */
  404. #define REO_DESTINATION_RING_10_RESERVED_10A_OFFSET 0x00000028
  405. #define REO_DESTINATION_RING_10_RESERVED_10A_LSB 0
  406. #define REO_DESTINATION_RING_10_RESERVED_10A_MASK 0xffffffff
  407. /* Description REO_DESTINATION_RING_11_RESERVED_11A
  408. <legal 0>
  409. */
  410. #define REO_DESTINATION_RING_11_RESERVED_11A_OFFSET 0x0000002c
  411. #define REO_DESTINATION_RING_11_RESERVED_11A_LSB 0
  412. #define REO_DESTINATION_RING_11_RESERVED_11A_MASK 0xffffffff
  413. /* Description REO_DESTINATION_RING_12_RESERVED_12A
  414. <legal 0>
  415. */
  416. #define REO_DESTINATION_RING_12_RESERVED_12A_OFFSET 0x00000030
  417. #define REO_DESTINATION_RING_12_RESERVED_12A_LSB 0
  418. #define REO_DESTINATION_RING_12_RESERVED_12A_MASK 0xffffffff
  419. /* Description REO_DESTINATION_RING_13_RESERVED_13A
  420. <legal 0>
  421. */
  422. #define REO_DESTINATION_RING_13_RESERVED_13A_OFFSET 0x00000034
  423. #define REO_DESTINATION_RING_13_RESERVED_13A_LSB 0
  424. #define REO_DESTINATION_RING_13_RESERVED_13A_MASK 0xffffffff
  425. /* Description REO_DESTINATION_RING_14_RESERVED_14A
  426. <legal 0>
  427. */
  428. #define REO_DESTINATION_RING_14_RESERVED_14A_OFFSET 0x00000038
  429. #define REO_DESTINATION_RING_14_RESERVED_14A_LSB 0
  430. #define REO_DESTINATION_RING_14_RESERVED_14A_MASK 0xffffffff
  431. /* Description REO_DESTINATION_RING_15_RESERVED_15
  432. <legal 0>
  433. */
  434. #define REO_DESTINATION_RING_15_RESERVED_15_OFFSET 0x0000003c
  435. #define REO_DESTINATION_RING_15_RESERVED_15_LSB 0
  436. #define REO_DESTINATION_RING_15_RESERVED_15_MASK 0x000fffff
  437. /* Description REO_DESTINATION_RING_15_RING_ID
  438. The buffer pointer ring ID.
  439. 0 refers to the IDLE ring
  440. 1 - N refers to other rings
  441. Helps with debugging when dumping ring contents.
  442. <legal all>
  443. */
  444. #define REO_DESTINATION_RING_15_RING_ID_OFFSET 0x0000003c
  445. #define REO_DESTINATION_RING_15_RING_ID_LSB 20
  446. #define REO_DESTINATION_RING_15_RING_ID_MASK 0x0ff00000
  447. /* Description REO_DESTINATION_RING_15_LOOPING_COUNT
  448. A count value that indicates the number of times the
  449. producer of entries into this Ring has looped around the
  450. ring.
  451. At initialization time, this value is set to 0. On the
  452. first loop, this value is set to 1. After the max value is
  453. reached allowed by the number of bits for this field, the
  454. count value continues with 0 again.
  455. In case SW is the consumer of the ring entries, it can
  456. use this field to figure out up to where the producer of
  457. entries has created new entries. This eliminates the need to
  458. check where the head pointer' of the ring is located once
  459. the SW starts processing an interrupt indicating that new
  460. entries have been put into this ring...
  461. Also note that SW if it wants only needs to look at the
  462. LSB bit of this count value.
  463. <legal all>
  464. */
  465. #define REO_DESTINATION_RING_15_LOOPING_COUNT_OFFSET 0x0000003c
  466. #define REO_DESTINATION_RING_15_LOOPING_COUNT_LSB 28
  467. #define REO_DESTINATION_RING_15_LOOPING_COUNT_MASK 0xf0000000
  468. #endif // _REO_DESTINATION_RING_H_