reo_entrance_ring.h 20 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734
  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_ENTRANCE_RING_H_
  19. #define _REO_ENTRANCE_RING_H_
  20. #if !defined(__ASSEMBLER__)
  21. #endif
  22. #include "rx_mpdu_details.h"
  23. // ################ START SUMMARY #################
  24. //
  25. // Dword Fields
  26. // 0-3 struct rx_mpdu_details reo_level_mpdu_frame_info;
  27. // 4 rx_reo_queue_desc_addr_31_0[31:0]
  28. // 5 rx_reo_queue_desc_addr_39_32[7:0], rounded_mpdu_byte_count[21:8], reo_destination_indication[26:22], frameless_bar[27], reserved_5a[31:28]
  29. // 6 rxdma_push_reason[1:0], rxdma_error_code[6:2], reserved_6a[31:7]
  30. // 7 reserved_7a[19:0], ring_id[27:20], looping_count[31:28]
  31. //
  32. // ################ END SUMMARY #################
  33. #define NUM_OF_DWORDS_REO_ENTRANCE_RING 8
  34. struct reo_entrance_ring {
  35. struct rx_mpdu_details reo_level_mpdu_frame_info;
  36. uint32_t rx_reo_queue_desc_addr_31_0 : 32; //[31:0]
  37. uint32_t rx_reo_queue_desc_addr_39_32 : 8, //[7:0]
  38. rounded_mpdu_byte_count : 14, //[21:8]
  39. reo_destination_indication : 5, //[26:22]
  40. frameless_bar : 1, //[27]
  41. reserved_5a : 4; //[31:28]
  42. uint32_t rxdma_push_reason : 2, //[1:0]
  43. rxdma_error_code : 5, //[6:2]
  44. reserved_6a : 25; //[31:7]
  45. uint32_t reserved_7a : 20, //[19:0]
  46. ring_id : 8, //[27:20]
  47. looping_count : 4; //[31:28]
  48. };
  49. /*
  50. struct rx_mpdu_details reo_level_mpdu_frame_info
  51. Consumer: REO
  52. Producer: RXDMA
  53. Details related to the MPDU being pushed into the REO
  54. rx_reo_queue_desc_addr_31_0
  55. Consumer: REO
  56. Producer: RXDMA
  57. Address (lower 32 bits) of the REO queue descriptor.
  58. <legal all>
  59. rx_reo_queue_desc_addr_39_32
  60. Consumer: REO
  61. Producer: RXDMA
  62. Address (upper 8 bits) of the REO queue descriptor.
  63. <legal all>
  64. rounded_mpdu_byte_count
  65. An approximation of the number of bytes received in this
  66. MPDU.
  67. Used to keeps stats on the amount of data flowing
  68. through a queue.
  69. <legal all>
  70. reo_destination_indication
  71. RXDMA copy the MPDU's first MSDU's destination
  72. indication field here. This is used for REO to be able to
  73. re-route the packet to a different SW destination ring if
  74. the packet is detected as error in REO.
  75. The ID of the REO exit ring where the MSDU frame shall
  76. push after (MPDU level) reordering has finished.
  77. <enum 0 reo_destination_tcl> Reo will push the frame
  78. into the REO2TCL ring
  79. <enum 1 reo_destination_sw1> Reo will push the frame
  80. into the REO2SW1 ring
  81. <enum 2 reo_destination_sw2> Reo will push the frame
  82. into the REO2SW1 ring
  83. <enum 3 reo_destination_sw3> Reo will push the frame
  84. into the REO2SW1 ring
  85. <enum 4 reo_destination_sw4> Reo will push the frame
  86. into the REO2SW1 ring
  87. <enum 5 reo_destination_release> Reo will push the frame
  88. into the REO_release ring
  89. <enum 6 reo_destination_fw> Reo will push the frame into
  90. the REO2FW ring
  91. <enum 7 reo_destination_7> REO remaps this
  92. <enum 8 reo_destination_8> REO remaps this <enum 9
  93. reo_destination_9> REO remaps this <enum 10
  94. reo_destination_10> REO remaps this
  95. <enum 11 reo_destination_11> REO remaps this
  96. <enum 12 reo_destination_12> REO remaps this <enum 13
  97. reo_destination_13> REO remaps this
  98. <enum 14 reo_destination_14> REO remaps this
  99. <enum 15 reo_destination_15> REO remaps this
  100. <enum 16 reo_destination_16> REO remaps this
  101. <enum 17 reo_destination_17> REO remaps this
  102. <enum 18 reo_destination_18> REO remaps this
  103. <enum 19 reo_destination_19> REO remaps this
  104. <enum 20 reo_destination_20> REO remaps this
  105. <enum 21 reo_destination_21> REO remaps this
  106. <enum 22 reo_destination_22> REO remaps this
  107. <enum 23 reo_destination_23> REO remaps this
  108. <enum 24 reo_destination_24> REO remaps this
  109. <enum 25 reo_destination_25> REO remaps this
  110. <enum 26 reo_destination_26> REO remaps this
  111. <enum 27 reo_destination_27> REO remaps this
  112. <enum 28 reo_destination_28> REO remaps this
  113. <enum 29 reo_destination_29> REO remaps this
  114. <enum 30 reo_destination_30> REO remaps this
  115. <enum 31 reo_destination_31> REO remaps this
  116. <legal all>
  117. frameless_bar
  118. When set, this REO entrance ring struct contains BAR
  119. info from a multi TID BAR frame. The original multi TID BAR
  120. frame itself contained all the REO info for the first TID,
  121. but all the subsequent TID info and their linkage to the REO
  122. descriptors is passed down as 'frameless' BAR info.
  123. The only fields valid in this descriptor when this bit
  124. is set are:
  125. Rx_reo_queue_desc_addr_31_0
  126. RX_reo_queue_desc_addr_39_32
  127. And within the
  128. Reo_level_mpdu_frame_info:
  129. Within Rx_mpdu_desc_info_details:
  130. Mpdu_Sequence_number
  131. BAR_frame
  132. Peer_meta_data
  133. All other fields shall be set to 0
  134. <legal all>
  135. reserved_5a
  136. <legal 0>
  137. rxdma_push_reason
  138. Indicates why rxdma pushed the frame to this ring
  139. This field is ignored by REO.
  140. <enum 0 rxdma_error_detected> RXDMA detected an error an
  141. pushed this frame to this queue
  142. <enum 1 rxdma_routing_instruction> RXDMA pushed the
  143. frame to this queue per received routing instructions. No
  144. error within RXDMA was detected
  145. <enum 2 rxdma_rx_flush> RXDMA received an RX_FLUSH. As a
  146. result the MSDU link descriptor might not have the
  147. last_msdu_in_mpdu_flag set, but instead WBM might just see a
  148. NULL pointer in the MSDU link descriptor. This is to be
  149. considered a normal condition for this scenario.
  150. <legal 0 - 2>
  151. rxdma_error_code
  152. Field only valid when 'rxdma_push_reason' set to
  153. 'rxdma_error_detected'.
  154. This field is ignored by REO.
  155. <enum 0 rxdma_overflow_err>MPDU frame is not complete
  156. due to a FIFO overflow error in RXPCU.
  157. <enum 1 rxdma_mpdu_length_err>MPDU frame is not complete
  158. due to receiving incomplete MPDU from the PHY
  159. <enum 3 rxdma_decrypt_err>CRYPTO reported a decryption
  160. error or CRYPTO received an encrypted frame, but did not get
  161. a valid corresponding key id in the peer entry.
  162. <enum 4 rxdma_tkip_mic_err>CRYPTO reported a TKIP MIC
  163. error
  164. <enum 5 rxdma_unecrypted_err>CRYPTO reported an
  165. unencrypted frame error when encrypted was expected
  166. <enum 6 rxdma_msdu_len_err>RX OLE reported an MSDU
  167. length error
  168. <enum 7 rxdma_msdu_limit_err>RX OLE reported that max
  169. number of MSDUs allowed in an MPDU got exceeded
  170. <enum 8 rxdma_wifi_parse_err>RX OLE reported a parsing
  171. error
  172. <enum 9 rxdma_amsdu_parse_err>RX OLE reported an A-MSDU
  173. parsing error
  174. <enum 10 rxdma_sa_timeout_err>RX OLE reported a timeout
  175. during SA search
  176. <enum 11 rxdma_da_timeout_err>RX OLE reported a timeout
  177. during DA search
  178. <enum 12 rxdma_flow_timeout_err>RX OLE reported a
  179. timeout during flow search
  180. <enum 13 Rxdma_flush_request>RXDMA received a flush
  181. request
  182. reserved_6a
  183. <legal 0>
  184. reserved_7a
  185. <legal 0>
  186. ring_id
  187. Consumer: SW/REO/DEBUG
  188. Producer: SRNG (of RXDMA)
  189. For debugging.
  190. This field is filled in by the SRNG module.
  191. It help to identify the ring that is being looked <legal
  192. all>
  193. looping_count
  194. Consumer: SW/REO/DEBUG
  195. Producer: SRNG (of RXDMA)
  196. For debugging.
  197. This field is filled in by the SRNG module.
  198. A count value that indicates the number of times the
  199. producer of entries into this Ring has looped around the
  200. ring.
  201. At initialization time, this value is set to 0. On the
  202. first loop, this value is set to 1. After the max value is
  203. reached allowed by the number of bits for this field, the
  204. count value continues with 0 again.
  205. In case SW is the consumer of the ring entries, it can
  206. use this field to figure out up to where the producer of
  207. entries has created new entries. This eliminates the need to
  208. check where the head pointer' of the ring is located once
  209. the SW starts processing an interrupt indicating that new
  210. entries have been put into this ring...
  211. Also note that SW if it wants only needs to look at the
  212. LSB bit of this count value.
  213. <legal all>
  214. */
  215. #define REO_ENTRANCE_RING_0_RX_MPDU_DETAILS_REO_LEVEL_MPDU_FRAME_INFO_OFFSET 0x00000000
  216. #define REO_ENTRANCE_RING_0_RX_MPDU_DETAILS_REO_LEVEL_MPDU_FRAME_INFO_LSB 28
  217. #define REO_ENTRANCE_RING_0_RX_MPDU_DETAILS_REO_LEVEL_MPDU_FRAME_INFO_MASK 0xffffffff
  218. #define REO_ENTRANCE_RING_1_RX_MPDU_DETAILS_REO_LEVEL_MPDU_FRAME_INFO_OFFSET 0x00000004
  219. #define REO_ENTRANCE_RING_1_RX_MPDU_DETAILS_REO_LEVEL_MPDU_FRAME_INFO_LSB 28
  220. #define REO_ENTRANCE_RING_1_RX_MPDU_DETAILS_REO_LEVEL_MPDU_FRAME_INFO_MASK 0xffffffff
  221. #define REO_ENTRANCE_RING_2_RX_MPDU_DETAILS_REO_LEVEL_MPDU_FRAME_INFO_OFFSET 0x00000008
  222. #define REO_ENTRANCE_RING_2_RX_MPDU_DETAILS_REO_LEVEL_MPDU_FRAME_INFO_LSB 28
  223. #define REO_ENTRANCE_RING_2_RX_MPDU_DETAILS_REO_LEVEL_MPDU_FRAME_INFO_MASK 0xffffffff
  224. #define REO_ENTRANCE_RING_3_RX_MPDU_DETAILS_REO_LEVEL_MPDU_FRAME_INFO_OFFSET 0x0000000c
  225. #define REO_ENTRANCE_RING_3_RX_MPDU_DETAILS_REO_LEVEL_MPDU_FRAME_INFO_LSB 28
  226. #define REO_ENTRANCE_RING_3_RX_MPDU_DETAILS_REO_LEVEL_MPDU_FRAME_INFO_MASK 0xffffffff
  227. /* Description REO_ENTRANCE_RING_4_RX_REO_QUEUE_DESC_ADDR_31_0
  228. Consumer: REO
  229. Producer: RXDMA
  230. Address (lower 32 bits) of the REO queue descriptor.
  231. <legal all>
  232. */
  233. #define REO_ENTRANCE_RING_4_RX_REO_QUEUE_DESC_ADDR_31_0_OFFSET 0x00000010
  234. #define REO_ENTRANCE_RING_4_RX_REO_QUEUE_DESC_ADDR_31_0_LSB 0
  235. #define REO_ENTRANCE_RING_4_RX_REO_QUEUE_DESC_ADDR_31_0_MASK 0xffffffff
  236. /* Description REO_ENTRANCE_RING_5_RX_REO_QUEUE_DESC_ADDR_39_32
  237. Consumer: REO
  238. Producer: RXDMA
  239. Address (upper 8 bits) of the REO queue descriptor.
  240. <legal all>
  241. */
  242. #define REO_ENTRANCE_RING_5_RX_REO_QUEUE_DESC_ADDR_39_32_OFFSET 0x00000014
  243. #define REO_ENTRANCE_RING_5_RX_REO_QUEUE_DESC_ADDR_39_32_LSB 0
  244. #define REO_ENTRANCE_RING_5_RX_REO_QUEUE_DESC_ADDR_39_32_MASK 0x000000ff
  245. /* Description REO_ENTRANCE_RING_5_ROUNDED_MPDU_BYTE_COUNT
  246. An approximation of the number of bytes received in this
  247. MPDU.
  248. Used to keeps stats on the amount of data flowing
  249. through a queue.
  250. <legal all>
  251. */
  252. #define REO_ENTRANCE_RING_5_ROUNDED_MPDU_BYTE_COUNT_OFFSET 0x00000014
  253. #define REO_ENTRANCE_RING_5_ROUNDED_MPDU_BYTE_COUNT_LSB 8
  254. #define REO_ENTRANCE_RING_5_ROUNDED_MPDU_BYTE_COUNT_MASK 0x003fff00
  255. /* Description REO_ENTRANCE_RING_5_REO_DESTINATION_INDICATION
  256. RXDMA copy the MPDU's first MSDU's destination
  257. indication field here. This is used for REO to be able to
  258. re-route the packet to a different SW destination ring if
  259. the packet is detected as error in REO.
  260. The ID of the REO exit ring where the MSDU frame shall
  261. push after (MPDU level) reordering has finished.
  262. <enum 0 reo_destination_tcl> Reo will push the frame
  263. into the REO2TCL ring
  264. <enum 1 reo_destination_sw1> Reo will push the frame
  265. into the REO2SW1 ring
  266. <enum 2 reo_destination_sw2> Reo will push the frame
  267. into the REO2SW1 ring
  268. <enum 3 reo_destination_sw3> Reo will push the frame
  269. into the REO2SW1 ring
  270. <enum 4 reo_destination_sw4> Reo will push the frame
  271. into the REO2SW1 ring
  272. <enum 5 reo_destination_release> Reo will push the frame
  273. into the REO_release ring
  274. <enum 6 reo_destination_fw> Reo will push the frame into
  275. the REO2FW ring
  276. <enum 7 reo_destination_7> REO remaps this
  277. <enum 8 reo_destination_8> REO remaps this <enum 9
  278. reo_destination_9> REO remaps this <enum 10
  279. reo_destination_10> REO remaps this
  280. <enum 11 reo_destination_11> REO remaps this
  281. <enum 12 reo_destination_12> REO remaps this <enum 13
  282. reo_destination_13> REO remaps this
  283. <enum 14 reo_destination_14> REO remaps this
  284. <enum 15 reo_destination_15> REO remaps this
  285. <enum 16 reo_destination_16> REO remaps this
  286. <enum 17 reo_destination_17> REO remaps this
  287. <enum 18 reo_destination_18> REO remaps this
  288. <enum 19 reo_destination_19> REO remaps this
  289. <enum 20 reo_destination_20> REO remaps this
  290. <enum 21 reo_destination_21> REO remaps this
  291. <enum 22 reo_destination_22> REO remaps this
  292. <enum 23 reo_destination_23> REO remaps this
  293. <enum 24 reo_destination_24> REO remaps this
  294. <enum 25 reo_destination_25> REO remaps this
  295. <enum 26 reo_destination_26> REO remaps this
  296. <enum 27 reo_destination_27> REO remaps this
  297. <enum 28 reo_destination_28> REO remaps this
  298. <enum 29 reo_destination_29> REO remaps this
  299. <enum 30 reo_destination_30> REO remaps this
  300. <enum 31 reo_destination_31> REO remaps this
  301. <legal all>
  302. */
  303. #define REO_ENTRANCE_RING_5_REO_DESTINATION_INDICATION_OFFSET 0x00000014
  304. #define REO_ENTRANCE_RING_5_REO_DESTINATION_INDICATION_LSB 22
  305. #define REO_ENTRANCE_RING_5_REO_DESTINATION_INDICATION_MASK 0x07c00000
  306. /* Description REO_ENTRANCE_RING_5_FRAMELESS_BAR
  307. When set, this REO entrance ring struct contains BAR
  308. info from a multi TID BAR frame. The original multi TID BAR
  309. frame itself contained all the REO info for the first TID,
  310. but all the subsequent TID info and their linkage to the REO
  311. descriptors is passed down as 'frameless' BAR info.
  312. The only fields valid in this descriptor when this bit
  313. is set are:
  314. Rx_reo_queue_desc_addr_31_0
  315. RX_reo_queue_desc_addr_39_32
  316. And within the
  317. Reo_level_mpdu_frame_info:
  318. Within Rx_mpdu_desc_info_details:
  319. Mpdu_Sequence_number
  320. BAR_frame
  321. Peer_meta_data
  322. All other fields shall be set to 0
  323. <legal all>
  324. */
  325. #define REO_ENTRANCE_RING_5_FRAMELESS_BAR_OFFSET 0x00000014
  326. #define REO_ENTRANCE_RING_5_FRAMELESS_BAR_LSB 27
  327. #define REO_ENTRANCE_RING_5_FRAMELESS_BAR_MASK 0x08000000
  328. /* Description REO_ENTRANCE_RING_5_RESERVED_5A
  329. <legal 0>
  330. */
  331. #define REO_ENTRANCE_RING_5_RESERVED_5A_OFFSET 0x00000014
  332. #define REO_ENTRANCE_RING_5_RESERVED_5A_LSB 28
  333. #define REO_ENTRANCE_RING_5_RESERVED_5A_MASK 0xf0000000
  334. /* Description REO_ENTRANCE_RING_6_RXDMA_PUSH_REASON
  335. Indicates why rxdma pushed the frame to this ring
  336. This field is ignored by REO.
  337. <enum 0 rxdma_error_detected> RXDMA detected an error an
  338. pushed this frame to this queue
  339. <enum 1 rxdma_routing_instruction> RXDMA pushed the
  340. frame to this queue per received routing instructions. No
  341. error within RXDMA was detected
  342. <enum 2 rxdma_rx_flush> RXDMA received an RX_FLUSH. As a
  343. result the MSDU link descriptor might not have the
  344. last_msdu_in_mpdu_flag set, but instead WBM might just see a
  345. NULL pointer in the MSDU link descriptor. This is to be
  346. considered a normal condition for this scenario.
  347. <legal 0 - 2>
  348. */
  349. #define REO_ENTRANCE_RING_6_RXDMA_PUSH_REASON_OFFSET 0x00000018
  350. #define REO_ENTRANCE_RING_6_RXDMA_PUSH_REASON_LSB 0
  351. #define REO_ENTRANCE_RING_6_RXDMA_PUSH_REASON_MASK 0x00000003
  352. /* Description REO_ENTRANCE_RING_6_RXDMA_ERROR_CODE
  353. Field only valid when 'rxdma_push_reason' set to
  354. 'rxdma_error_detected'.
  355. This field is ignored by REO.
  356. <enum 0 rxdma_overflow_err>MPDU frame is not complete
  357. due to a FIFO overflow error in RXPCU.
  358. <enum 1 rxdma_mpdu_length_err>MPDU frame is not complete
  359. due to receiving incomplete MPDU from the PHY
  360. <enum 3 rxdma_decrypt_err>CRYPTO reported a decryption
  361. error or CRYPTO received an encrypted frame, but did not get
  362. a valid corresponding key id in the peer entry.
  363. <enum 4 rxdma_tkip_mic_err>CRYPTO reported a TKIP MIC
  364. error
  365. <enum 5 rxdma_unecrypted_err>CRYPTO reported an
  366. unencrypted frame error when encrypted was expected
  367. <enum 6 rxdma_msdu_len_err>RX OLE reported an MSDU
  368. length error
  369. <enum 7 rxdma_msdu_limit_err>RX OLE reported that max
  370. number of MSDUs allowed in an MPDU got exceeded
  371. <enum 8 rxdma_wifi_parse_err>RX OLE reported a parsing
  372. error
  373. <enum 9 rxdma_amsdu_parse_err>RX OLE reported an A-MSDU
  374. parsing error
  375. <enum 10 rxdma_sa_timeout_err>RX OLE reported a timeout
  376. during SA search
  377. <enum 11 rxdma_da_timeout_err>RX OLE reported a timeout
  378. during DA search
  379. <enum 12 rxdma_flow_timeout_err>RX OLE reported a
  380. timeout during flow search
  381. <enum 13 Rxdma_flush_request>RXDMA received a flush
  382. request
  383. */
  384. #define REO_ENTRANCE_RING_6_RXDMA_ERROR_CODE_OFFSET 0x00000018
  385. #define REO_ENTRANCE_RING_6_RXDMA_ERROR_CODE_LSB 2
  386. #define REO_ENTRANCE_RING_6_RXDMA_ERROR_CODE_MASK 0x0000007c
  387. /* Description REO_ENTRANCE_RING_6_RESERVED_6A
  388. <legal 0>
  389. */
  390. #define REO_ENTRANCE_RING_6_RESERVED_6A_OFFSET 0x00000018
  391. #define REO_ENTRANCE_RING_6_RESERVED_6A_LSB 7
  392. #define REO_ENTRANCE_RING_6_RESERVED_6A_MASK 0xffffff80
  393. /* Description REO_ENTRANCE_RING_7_RESERVED_7A
  394. <legal 0>
  395. */
  396. #define REO_ENTRANCE_RING_7_RESERVED_7A_OFFSET 0x0000001c
  397. #define REO_ENTRANCE_RING_7_RESERVED_7A_LSB 0
  398. #define REO_ENTRANCE_RING_7_RESERVED_7A_MASK 0x000fffff
  399. /* Description REO_ENTRANCE_RING_7_RING_ID
  400. Consumer: SW/REO/DEBUG
  401. Producer: SRNG (of RXDMA)
  402. For debugging.
  403. This field is filled in by the SRNG module.
  404. It help to identify the ring that is being looked <legal
  405. all>
  406. */
  407. #define REO_ENTRANCE_RING_7_RING_ID_OFFSET 0x0000001c
  408. #define REO_ENTRANCE_RING_7_RING_ID_LSB 20
  409. #define REO_ENTRANCE_RING_7_RING_ID_MASK 0x0ff00000
  410. /* Description REO_ENTRANCE_RING_7_LOOPING_COUNT
  411. Consumer: SW/REO/DEBUG
  412. Producer: SRNG (of RXDMA)
  413. For debugging.
  414. This field is filled in by the SRNG module.
  415. A count value that indicates the number of times the
  416. producer of entries into this Ring has looped around the
  417. ring.
  418. At initialization time, this value is set to 0. On the
  419. first loop, this value is set to 1. After the max value is
  420. reached allowed by the number of bits for this field, the
  421. count value continues with 0 again.
  422. In case SW is the consumer of the ring entries, it can
  423. use this field to figure out up to where the producer of
  424. entries has created new entries. This eliminates the need to
  425. check where the head pointer' of the ring is located once
  426. the SW starts processing an interrupt indicating that new
  427. entries have been put into this ring...
  428. Also note that SW if it wants only needs to look at the
  429. LSB bit of this count value.
  430. <legal all>
  431. */
  432. #define REO_ENTRANCE_RING_7_LOOPING_COUNT_OFFSET 0x0000001c
  433. #define REO_ENTRANCE_RING_7_LOOPING_COUNT_LSB 28
  434. #define REO_ENTRANCE_RING_7_LOOPING_COUNT_MASK 0xf0000000
  435. #endif // _REO_ENTRANCE_RING_H_