reo_destination_ring.h 21 KB

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