reo_entrance_ring.h 20 KB

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