reo_entrance_ring.h 34 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182
  1. /*
  2. * Copyright (c) 2021 The Linux Foundation. All rights reserved.
  3. *
  4. * Permission to use, copy, modify, and/or distribute this software for any
  5. * purpose with or without fee is hereby granted, provided that the above
  6. * copyright notice and this permission notice appear in all copies.
  7. *
  8. * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
  9. * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
  10. * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
  11. * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
  12. * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
  13. * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
  14. * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
  15. */
  16. // $ATH_LICENSE_HW_HDR_C$
  17. //
  18. // DO NOT EDIT! This file is automatically generated
  19. // These definitions are tied to a particular hardware layout
  20. #ifndef _REO_ENTRANCE_RING_H_
  21. #define _REO_ENTRANCE_RING_H_
  22. #if !defined(__ASSEMBLER__)
  23. #endif
  24. #include "rx_mpdu_details.h"
  25. // ################ START SUMMARY #################
  26. //
  27. // Dword Fields
  28. // 0-3 struct rx_mpdu_details reo_level_mpdu_frame_info;
  29. // 4 rx_reo_queue_desc_addr_31_0[31:0]
  30. // 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]
  31. // 6 rxdma_push_reason[1:0], rxdma_error_code[6:2], mpdu_fragment_number[10:7], reserved_6a[31:11]
  32. // 7 reserved_7a[19:0], ring_id[27:20], looping_count[31:28]
  33. //
  34. // ################ END SUMMARY #################
  35. #define NUM_OF_DWORDS_REO_ENTRANCE_RING 8
  36. struct reo_entrance_ring {
  37. struct rx_mpdu_details reo_level_mpdu_frame_info;
  38. uint32_t rx_reo_queue_desc_addr_31_0 : 32; //[31:0]
  39. uint32_t rx_reo_queue_desc_addr_39_32 : 8, //[7:0]
  40. rounded_mpdu_byte_count : 14, //[21:8]
  41. reo_destination_indication : 5, //[26:22]
  42. frameless_bar : 1, //[27]
  43. reserved_5a : 4; //[31:28]
  44. uint32_t rxdma_push_reason : 2, //[1:0]
  45. rxdma_error_code : 5, //[6:2]
  46. mpdu_fragment_number : 4, //[10:7]
  47. reserved_6a : 21; //[31:11]
  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. This field is ignored by REO.
  143. <enum 0 rxdma_error_detected> RXDMA detected an error an
  144. pushed this frame to this queue
  145. <enum 1 rxdma_routing_instruction> RXDMA pushed the
  146. frame to this queue per received routing instructions. No
  147. error within RXDMA was detected
  148. <enum 2 rxdma_rx_flush> RXDMA received an RX_FLUSH. As a
  149. result the MSDU link descriptor might not have the
  150. last_msdu_in_mpdu_flag set, but instead WBM might just see a
  151. NULL pointer in the MSDU link descriptor. This is to be
  152. considered a normal condition for this scenario.
  153. <legal 0 - 2>
  154. rxdma_error_code
  155. Field only valid when 'rxdma_push_reason' set to
  156. 'rxdma_error_detected'.
  157. This field is ignored by REO.
  158. <enum 0 rxdma_overflow_err>MPDU frame is not complete
  159. due to a FIFO overflow error in RXPCU.
  160. <enum 1 rxdma_mpdu_length_err>MPDU frame is not complete
  161. due to receiving incomplete MPDU from the PHY
  162. <enum 3 rxdma_decrypt_err>CRYPTO reported a decryption
  163. error or CRYPTO received an encrypted frame, but did not get
  164. a valid corresponding key id in the peer entry.
  165. <enum 4 rxdma_tkip_mic_err>CRYPTO reported a TKIP MIC
  166. error
  167. <enum 5 rxdma_unecrypted_err>CRYPTO reported an
  168. unencrypted frame error when encrypted was expected
  169. <enum 6 rxdma_msdu_len_err>RX OLE reported an MSDU
  170. length error
  171. <enum 7 rxdma_msdu_limit_err>RX OLE reported that max
  172. number of MSDUs allowed in an MPDU got exceeded
  173. <enum 8 rxdma_wifi_parse_err>RX OLE reported a parsing
  174. error
  175. <enum 9 rxdma_amsdu_parse_err>RX OLE reported an A-MSDU
  176. parsing error
  177. <enum 10 rxdma_sa_timeout_err>RX OLE reported a timeout
  178. during SA search
  179. <enum 11 rxdma_da_timeout_err>RX OLE reported a timeout
  180. during DA search
  181. <enum 12 rxdma_flow_timeout_err>RX OLE reported a
  182. timeout during flow search
  183. <enum 13 Rxdma_flush_request>RXDMA received a flush
  184. request
  185. mpdu_fragment_number
  186. Field only valid when Reo_level_mpdu_frame_info.
  187. Rx_mpdu_desc_info_details.
  188. Fragment_flag is set.
  189. The fragment number from the 802.11 header.
  190. Note that the sequence number is embedded in field:
  191. Reo_level_mpdu_frame_info.
  192. Rx_mpdu_desc_info_details.
  193. Mpdu_Sequence_number
  194. <legal all>
  195. reserved_6a
  196. <legal 0>
  197. reserved_7a
  198. <legal 0>
  199. ring_id
  200. Consumer: SW/REO/DEBUG
  201. Producer: SRNG (of RXDMA)
  202. For debugging.
  203. This field is filled in by the SRNG module.
  204. It help to identify the ring that is being looked <legal
  205. all>
  206. looping_count
  207. Consumer: SW/REO/DEBUG
  208. Producer: SRNG (of RXDMA)
  209. For debugging.
  210. This field is filled in by the SRNG module.
  211. A count value that indicates the number of times the
  212. producer of entries into this Ring has looped around the
  213. ring.
  214. At initialization time, this value is set to 0. On the
  215. first loop, this value is set to 1. After the max value is
  216. reached allowed by the number of bits for this field, the
  217. count value continues with 0 again.
  218. In case SW is the consumer of the ring entries, it can
  219. use this field to figure out up to where the producer of
  220. entries has created new entries. This eliminates the need to
  221. check where the head pointer' of the ring is located once
  222. the SW starts processing an interrupt indicating that new
  223. entries have been put into this ring...
  224. Also note that SW if it wants only needs to look at the
  225. LSB bit of this count value.
  226. <legal all>
  227. */
  228. /* EXTERNAL REFERENCE : struct rx_mpdu_details reo_level_mpdu_frame_info */
  229. /* EXTERNAL REFERENCE : struct buffer_addr_info msdu_link_desc_addr_info */
  230. /* Description REO_ENTRANCE_RING_0_REO_LEVEL_MPDU_FRAME_INFO_MSDU_LINK_DESC_ADDR_INFO_BUFFER_ADDR_31_0
  231. Address (lower 32 bits) of the MSDU buffer OR
  232. MSDU_EXTENSION descriptor OR Link Descriptor
  233. In case of 'NULL' pointer, this field is set to 0
  234. <legal all>
  235. */
  236. #define REO_ENTRANCE_RING_0_REO_LEVEL_MPDU_FRAME_INFO_MSDU_LINK_DESC_ADDR_INFO_BUFFER_ADDR_31_0_OFFSET 0x00000000
  237. #define REO_ENTRANCE_RING_0_REO_LEVEL_MPDU_FRAME_INFO_MSDU_LINK_DESC_ADDR_INFO_BUFFER_ADDR_31_0_LSB 0
  238. #define REO_ENTRANCE_RING_0_REO_LEVEL_MPDU_FRAME_INFO_MSDU_LINK_DESC_ADDR_INFO_BUFFER_ADDR_31_0_MASK 0xffffffff
  239. /* Description REO_ENTRANCE_RING_1_REO_LEVEL_MPDU_FRAME_INFO_MSDU_LINK_DESC_ADDR_INFO_BUFFER_ADDR_39_32
  240. Address (upper 8 bits) of the MSDU buffer OR
  241. MSDU_EXTENSION descriptor OR Link Descriptor
  242. In case of 'NULL' pointer, this field is set to 0
  243. <legal all>
  244. */
  245. #define REO_ENTRANCE_RING_1_REO_LEVEL_MPDU_FRAME_INFO_MSDU_LINK_DESC_ADDR_INFO_BUFFER_ADDR_39_32_OFFSET 0x00000004
  246. #define REO_ENTRANCE_RING_1_REO_LEVEL_MPDU_FRAME_INFO_MSDU_LINK_DESC_ADDR_INFO_BUFFER_ADDR_39_32_LSB 0
  247. #define REO_ENTRANCE_RING_1_REO_LEVEL_MPDU_FRAME_INFO_MSDU_LINK_DESC_ADDR_INFO_BUFFER_ADDR_39_32_MASK 0x000000ff
  248. /* Description REO_ENTRANCE_RING_1_REO_LEVEL_MPDU_FRAME_INFO_MSDU_LINK_DESC_ADDR_INFO_RETURN_BUFFER_MANAGER
  249. Consumer: WBM
  250. Producer: SW/FW
  251. In case of 'NULL' pointer, this field is set to 0
  252. Indicates to which buffer manager the buffer OR
  253. MSDU_EXTENSION descriptor OR link descriptor that is being
  254. pointed to shall be returned after the frame has been
  255. processed. It is used by WBM for routing purposes.
  256. <enum 0 WBM_IDLE_BUF_LIST> This buffer shall be returned
  257. to the WMB buffer idle list
  258. <enum 1 WBM_IDLE_DESC_LIST> This buffer shall be
  259. returned to the WMB idle link descriptor idle list
  260. <enum 2 FW_BM> This buffer shall be returned to the FW
  261. <enum 3 SW0_BM> This buffer shall be returned to the SW,
  262. ring 0
  263. <enum 4 SW1_BM> This buffer shall be returned to the SW,
  264. ring 1
  265. <enum 5 SW2_BM> This buffer shall be returned to the SW,
  266. ring 2
  267. <enum 6 SW3_BM> This buffer shall be returned to the SW,
  268. ring 3
  269. <enum 7 SW4_BM> This buffer shall be returned to the SW,
  270. ring 3
  271. <legal all>
  272. */
  273. #define REO_ENTRANCE_RING_1_REO_LEVEL_MPDU_FRAME_INFO_MSDU_LINK_DESC_ADDR_INFO_RETURN_BUFFER_MANAGER_OFFSET 0x00000004
  274. #define REO_ENTRANCE_RING_1_REO_LEVEL_MPDU_FRAME_INFO_MSDU_LINK_DESC_ADDR_INFO_RETURN_BUFFER_MANAGER_LSB 8
  275. #define REO_ENTRANCE_RING_1_REO_LEVEL_MPDU_FRAME_INFO_MSDU_LINK_DESC_ADDR_INFO_RETURN_BUFFER_MANAGER_MASK 0x00000700
  276. /* Description REO_ENTRANCE_RING_1_REO_LEVEL_MPDU_FRAME_INFO_MSDU_LINK_DESC_ADDR_INFO_SW_BUFFER_COOKIE
  277. Cookie field exclusively used by SW.
  278. In case of 'NULL' pointer, this field is set to 0
  279. HW ignores the contents, accept that it passes the
  280. programmed value on to other descriptors together with the
  281. physical address
  282. Field can be used by SW to for example associate the
  283. buffers physical address with the virtual address
  284. The bit definitions as used by SW are within SW HLD
  285. specification
  286. NOTE:
  287. The three most significant bits can have a special
  288. meaning in case this struct is embedded in a TX_MPDU_DETAILS
  289. STRUCT, and field transmit_bw_restriction is set
  290. In case of NON punctured transmission:
  291. Sw_buffer_cookie[20:19] = 2'b00: 20 MHz TX only
  292. Sw_buffer_cookie[20:19] = 2'b01: 40 MHz TX only
  293. Sw_buffer_cookie[20:19] = 2'b10: 80 MHz TX only
  294. Sw_buffer_cookie[20:19] = 2'b11: 160 MHz TX only
  295. In case of punctured transmission:
  296. Sw_buffer_cookie[20:18] = 3'b000: pattern 0 only
  297. Sw_buffer_cookie[20:18] = 3'b001: pattern 1 only
  298. Sw_buffer_cookie[20:18] = 3'b010: pattern 2 only
  299. Sw_buffer_cookie[20:18] = 3'b011: pattern 3 only
  300. Sw_buffer_cookie[20:18] = 3'b100: pattern 4 only
  301. Sw_buffer_cookie[20:18] = 3'b101: pattern 5 only
  302. Sw_buffer_cookie[20:18] = 3'b110: pattern 6 only
  303. Sw_buffer_cookie[20:18] = 3'b111: pattern 7 only
  304. Note: a punctured transmission is indicated by the
  305. presence of TLV TX_PUNCTURE_SETUP embedded in the scheduler
  306. TLV
  307. <legal all>
  308. */
  309. #define REO_ENTRANCE_RING_1_REO_LEVEL_MPDU_FRAME_INFO_MSDU_LINK_DESC_ADDR_INFO_SW_BUFFER_COOKIE_OFFSET 0x00000004
  310. #define REO_ENTRANCE_RING_1_REO_LEVEL_MPDU_FRAME_INFO_MSDU_LINK_DESC_ADDR_INFO_SW_BUFFER_COOKIE_LSB 11
  311. #define REO_ENTRANCE_RING_1_REO_LEVEL_MPDU_FRAME_INFO_MSDU_LINK_DESC_ADDR_INFO_SW_BUFFER_COOKIE_MASK 0xfffff800
  312. /* EXTERNAL REFERENCE : struct rx_mpdu_desc_info rx_mpdu_desc_info_details */
  313. /* Description REO_ENTRANCE_RING_2_REO_LEVEL_MPDU_FRAME_INFO_RX_MPDU_DESC_INFO_DETAILS_MSDU_COUNT
  314. Consumer: REO/SW/FW
  315. Producer: RXDMA
  316. The number of MSDUs within the MPDU
  317. <legal all>
  318. */
  319. #define REO_ENTRANCE_RING_2_REO_LEVEL_MPDU_FRAME_INFO_RX_MPDU_DESC_INFO_DETAILS_MSDU_COUNT_OFFSET 0x00000008
  320. #define REO_ENTRANCE_RING_2_REO_LEVEL_MPDU_FRAME_INFO_RX_MPDU_DESC_INFO_DETAILS_MSDU_COUNT_LSB 0
  321. #define REO_ENTRANCE_RING_2_REO_LEVEL_MPDU_FRAME_INFO_RX_MPDU_DESC_INFO_DETAILS_MSDU_COUNT_MASK 0x000000ff
  322. /* Description REO_ENTRANCE_RING_2_REO_LEVEL_MPDU_FRAME_INFO_RX_MPDU_DESC_INFO_DETAILS_MPDU_SEQUENCE_NUMBER
  323. Consumer: REO/SW/FW
  324. Producer: RXDMA
  325. The field can have two different meanings based on the
  326. setting of field 'BAR_frame':
  327. 'BAR_frame' is NOT set:
  328. The MPDU sequence number of the received frame.
  329. 'BAR_frame' is set.
  330. The MPDU Start sequence number from the BAR frame
  331. <legal all>
  332. */
  333. #define REO_ENTRANCE_RING_2_REO_LEVEL_MPDU_FRAME_INFO_RX_MPDU_DESC_INFO_DETAILS_MPDU_SEQUENCE_NUMBER_OFFSET 0x00000008
  334. #define REO_ENTRANCE_RING_2_REO_LEVEL_MPDU_FRAME_INFO_RX_MPDU_DESC_INFO_DETAILS_MPDU_SEQUENCE_NUMBER_LSB 8
  335. #define REO_ENTRANCE_RING_2_REO_LEVEL_MPDU_FRAME_INFO_RX_MPDU_DESC_INFO_DETAILS_MPDU_SEQUENCE_NUMBER_MASK 0x000fff00
  336. /* Description REO_ENTRANCE_RING_2_REO_LEVEL_MPDU_FRAME_INFO_RX_MPDU_DESC_INFO_DETAILS_FRAGMENT_FLAG
  337. Consumer: REO/SW/FW
  338. Producer: RXDMA
  339. When set, this MPDU is a fragment and REO should forward
  340. this fragment MPDU to the REO destination ring without any
  341. reorder checks, pn checks or bitmap update. This implies
  342. that REO is forwarding the pointer to the MSDU link
  343. descriptor. The destination ring is coming from a
  344. programmable register setting in REO
  345. <legal all>
  346. */
  347. #define REO_ENTRANCE_RING_2_REO_LEVEL_MPDU_FRAME_INFO_RX_MPDU_DESC_INFO_DETAILS_FRAGMENT_FLAG_OFFSET 0x00000008
  348. #define REO_ENTRANCE_RING_2_REO_LEVEL_MPDU_FRAME_INFO_RX_MPDU_DESC_INFO_DETAILS_FRAGMENT_FLAG_LSB 20
  349. #define REO_ENTRANCE_RING_2_REO_LEVEL_MPDU_FRAME_INFO_RX_MPDU_DESC_INFO_DETAILS_FRAGMENT_FLAG_MASK 0x00100000
  350. /* Description REO_ENTRANCE_RING_2_REO_LEVEL_MPDU_FRAME_INFO_RX_MPDU_DESC_INFO_DETAILS_MPDU_RETRY_BIT
  351. Consumer: REO/SW/FW
  352. Producer: RXDMA
  353. The retry bit setting from the MPDU header of the
  354. received frame
  355. <legal all>
  356. */
  357. #define REO_ENTRANCE_RING_2_REO_LEVEL_MPDU_FRAME_INFO_RX_MPDU_DESC_INFO_DETAILS_MPDU_RETRY_BIT_OFFSET 0x00000008
  358. #define REO_ENTRANCE_RING_2_REO_LEVEL_MPDU_FRAME_INFO_RX_MPDU_DESC_INFO_DETAILS_MPDU_RETRY_BIT_LSB 21
  359. #define REO_ENTRANCE_RING_2_REO_LEVEL_MPDU_FRAME_INFO_RX_MPDU_DESC_INFO_DETAILS_MPDU_RETRY_BIT_MASK 0x00200000
  360. /* Description REO_ENTRANCE_RING_2_REO_LEVEL_MPDU_FRAME_INFO_RX_MPDU_DESC_INFO_DETAILS_AMPDU_FLAG
  361. Consumer: REO/SW/FW
  362. Producer: RXDMA
  363. When set, the MPDU was received as part of an A-MPDU.
  364. <legal all>
  365. */
  366. #define REO_ENTRANCE_RING_2_REO_LEVEL_MPDU_FRAME_INFO_RX_MPDU_DESC_INFO_DETAILS_AMPDU_FLAG_OFFSET 0x00000008
  367. #define REO_ENTRANCE_RING_2_REO_LEVEL_MPDU_FRAME_INFO_RX_MPDU_DESC_INFO_DETAILS_AMPDU_FLAG_LSB 22
  368. #define REO_ENTRANCE_RING_2_REO_LEVEL_MPDU_FRAME_INFO_RX_MPDU_DESC_INFO_DETAILS_AMPDU_FLAG_MASK 0x00400000
  369. /* Description REO_ENTRANCE_RING_2_REO_LEVEL_MPDU_FRAME_INFO_RX_MPDU_DESC_INFO_DETAILS_BAR_FRAME
  370. Consumer: REO/SW/FW
  371. Producer: RXDMA
  372. When set, the received frame is a BAR frame. After
  373. processing, this frame shall be pushed to SW or deleted.
  374. <legal all>
  375. */
  376. #define REO_ENTRANCE_RING_2_REO_LEVEL_MPDU_FRAME_INFO_RX_MPDU_DESC_INFO_DETAILS_BAR_FRAME_OFFSET 0x00000008
  377. #define REO_ENTRANCE_RING_2_REO_LEVEL_MPDU_FRAME_INFO_RX_MPDU_DESC_INFO_DETAILS_BAR_FRAME_LSB 23
  378. #define REO_ENTRANCE_RING_2_REO_LEVEL_MPDU_FRAME_INFO_RX_MPDU_DESC_INFO_DETAILS_BAR_FRAME_MASK 0x00800000
  379. /* Description REO_ENTRANCE_RING_2_REO_LEVEL_MPDU_FRAME_INFO_RX_MPDU_DESC_INFO_DETAILS_PN_FIELDS_CONTAIN_VALID_INFO
  380. Consumer: REO/SW/FW
  381. Producer: RXDMA
  382. Copied here by RXDMA from RX_MPDU_END
  383. When not set, REO will Not perform a PN sequence number
  384. check
  385. */
  386. #define REO_ENTRANCE_RING_2_REO_LEVEL_MPDU_FRAME_INFO_RX_MPDU_DESC_INFO_DETAILS_PN_FIELDS_CONTAIN_VALID_INFO_OFFSET 0x00000008
  387. #define REO_ENTRANCE_RING_2_REO_LEVEL_MPDU_FRAME_INFO_RX_MPDU_DESC_INFO_DETAILS_PN_FIELDS_CONTAIN_VALID_INFO_LSB 24
  388. #define REO_ENTRANCE_RING_2_REO_LEVEL_MPDU_FRAME_INFO_RX_MPDU_DESC_INFO_DETAILS_PN_FIELDS_CONTAIN_VALID_INFO_MASK 0x01000000
  389. /* Description REO_ENTRANCE_RING_2_REO_LEVEL_MPDU_FRAME_INFO_RX_MPDU_DESC_INFO_DETAILS_SA_IS_VALID
  390. When set, OLE found a valid SA entry for all MSDUs in
  391. this MPDU
  392. <legal all>
  393. */
  394. #define REO_ENTRANCE_RING_2_REO_LEVEL_MPDU_FRAME_INFO_RX_MPDU_DESC_INFO_DETAILS_SA_IS_VALID_OFFSET 0x00000008
  395. #define REO_ENTRANCE_RING_2_REO_LEVEL_MPDU_FRAME_INFO_RX_MPDU_DESC_INFO_DETAILS_SA_IS_VALID_LSB 25
  396. #define REO_ENTRANCE_RING_2_REO_LEVEL_MPDU_FRAME_INFO_RX_MPDU_DESC_INFO_DETAILS_SA_IS_VALID_MASK 0x02000000
  397. /* Description REO_ENTRANCE_RING_2_REO_LEVEL_MPDU_FRAME_INFO_RX_MPDU_DESC_INFO_DETAILS_SA_IDX_TIMEOUT
  398. When set, at least 1 MSDU within the MPDU has an
  399. unsuccessful MAC source address search due to the expiration
  400. of the search timer.
  401. <legal all>
  402. */
  403. #define REO_ENTRANCE_RING_2_REO_LEVEL_MPDU_FRAME_INFO_RX_MPDU_DESC_INFO_DETAILS_SA_IDX_TIMEOUT_OFFSET 0x00000008
  404. #define REO_ENTRANCE_RING_2_REO_LEVEL_MPDU_FRAME_INFO_RX_MPDU_DESC_INFO_DETAILS_SA_IDX_TIMEOUT_LSB 26
  405. #define REO_ENTRANCE_RING_2_REO_LEVEL_MPDU_FRAME_INFO_RX_MPDU_DESC_INFO_DETAILS_SA_IDX_TIMEOUT_MASK 0x04000000
  406. /* Description REO_ENTRANCE_RING_2_REO_LEVEL_MPDU_FRAME_INFO_RX_MPDU_DESC_INFO_DETAILS_DA_IS_VALID
  407. When set, OLE found a valid DA entry for all MSDUs in
  408. this MPDU
  409. <legal all>
  410. */
  411. #define REO_ENTRANCE_RING_2_REO_LEVEL_MPDU_FRAME_INFO_RX_MPDU_DESC_INFO_DETAILS_DA_IS_VALID_OFFSET 0x00000008
  412. #define REO_ENTRANCE_RING_2_REO_LEVEL_MPDU_FRAME_INFO_RX_MPDU_DESC_INFO_DETAILS_DA_IS_VALID_LSB 27
  413. #define REO_ENTRANCE_RING_2_REO_LEVEL_MPDU_FRAME_INFO_RX_MPDU_DESC_INFO_DETAILS_DA_IS_VALID_MASK 0x08000000
  414. /* Description REO_ENTRANCE_RING_2_REO_LEVEL_MPDU_FRAME_INFO_RX_MPDU_DESC_INFO_DETAILS_DA_IS_MCBC
  415. Field Only valid if da_is_valid is set
  416. When set, at least one of the DA addresses is a
  417. Multicast or Broadcast address.
  418. <legal all>
  419. */
  420. #define REO_ENTRANCE_RING_2_REO_LEVEL_MPDU_FRAME_INFO_RX_MPDU_DESC_INFO_DETAILS_DA_IS_MCBC_OFFSET 0x00000008
  421. #define REO_ENTRANCE_RING_2_REO_LEVEL_MPDU_FRAME_INFO_RX_MPDU_DESC_INFO_DETAILS_DA_IS_MCBC_LSB 28
  422. #define REO_ENTRANCE_RING_2_REO_LEVEL_MPDU_FRAME_INFO_RX_MPDU_DESC_INFO_DETAILS_DA_IS_MCBC_MASK 0x10000000
  423. /* Description REO_ENTRANCE_RING_2_REO_LEVEL_MPDU_FRAME_INFO_RX_MPDU_DESC_INFO_DETAILS_DA_IDX_TIMEOUT
  424. When set, at least 1 MSDU within the MPDU has an
  425. unsuccessful MAC destination address search due to the
  426. expiration of the search timer.
  427. <legal all>
  428. */
  429. #define REO_ENTRANCE_RING_2_REO_LEVEL_MPDU_FRAME_INFO_RX_MPDU_DESC_INFO_DETAILS_DA_IDX_TIMEOUT_OFFSET 0x00000008
  430. #define REO_ENTRANCE_RING_2_REO_LEVEL_MPDU_FRAME_INFO_RX_MPDU_DESC_INFO_DETAILS_DA_IDX_TIMEOUT_LSB 29
  431. #define REO_ENTRANCE_RING_2_REO_LEVEL_MPDU_FRAME_INFO_RX_MPDU_DESC_INFO_DETAILS_DA_IDX_TIMEOUT_MASK 0x20000000
  432. /* Description REO_ENTRANCE_RING_2_REO_LEVEL_MPDU_FRAME_INFO_RX_MPDU_DESC_INFO_DETAILS_RAW_MPDU
  433. Field only valid when first_msdu_in_mpdu_flag is set.
  434. When set, the contents in the MSDU buffer contains a
  435. 'RAW' MPDU. This 'RAW' MPDU might be spread out over
  436. multiple MSDU buffers.
  437. <legal all>
  438. */
  439. #define REO_ENTRANCE_RING_2_REO_LEVEL_MPDU_FRAME_INFO_RX_MPDU_DESC_INFO_DETAILS_RAW_MPDU_OFFSET 0x00000008
  440. #define REO_ENTRANCE_RING_2_REO_LEVEL_MPDU_FRAME_INFO_RX_MPDU_DESC_INFO_DETAILS_RAW_MPDU_LSB 30
  441. #define REO_ENTRANCE_RING_2_REO_LEVEL_MPDU_FRAME_INFO_RX_MPDU_DESC_INFO_DETAILS_RAW_MPDU_MASK 0x40000000
  442. /* Description REO_ENTRANCE_RING_2_REO_LEVEL_MPDU_FRAME_INFO_RX_MPDU_DESC_INFO_DETAILS_MORE_FRAGMENT_FLAG
  443. The More Fragment bit setting from the MPDU header of
  444. the received frame
  445. <legal all>
  446. */
  447. #define REO_ENTRANCE_RING_2_REO_LEVEL_MPDU_FRAME_INFO_RX_MPDU_DESC_INFO_DETAILS_MORE_FRAGMENT_FLAG_OFFSET 0x00000008
  448. #define REO_ENTRANCE_RING_2_REO_LEVEL_MPDU_FRAME_INFO_RX_MPDU_DESC_INFO_DETAILS_MORE_FRAGMENT_FLAG_LSB 31
  449. #define REO_ENTRANCE_RING_2_REO_LEVEL_MPDU_FRAME_INFO_RX_MPDU_DESC_INFO_DETAILS_MORE_FRAGMENT_FLAG_MASK 0x80000000
  450. /* Description REO_ENTRANCE_RING_3_REO_LEVEL_MPDU_FRAME_INFO_RX_MPDU_DESC_INFO_DETAILS_PEER_META_DATA
  451. Meta data that SW has programmed in the Peer table entry
  452. of the transmitting STA.
  453. <legal all>
  454. */
  455. #define REO_ENTRANCE_RING_3_REO_LEVEL_MPDU_FRAME_INFO_RX_MPDU_DESC_INFO_DETAILS_PEER_META_DATA_OFFSET 0x0000000c
  456. #define REO_ENTRANCE_RING_3_REO_LEVEL_MPDU_FRAME_INFO_RX_MPDU_DESC_INFO_DETAILS_PEER_META_DATA_LSB 0
  457. #define REO_ENTRANCE_RING_3_REO_LEVEL_MPDU_FRAME_INFO_RX_MPDU_DESC_INFO_DETAILS_PEER_META_DATA_MASK 0xffffffff
  458. /* Description REO_ENTRANCE_RING_4_RX_REO_QUEUE_DESC_ADDR_31_0
  459. Consumer: REO
  460. Producer: RXDMA
  461. Address (lower 32 bits) of the REO queue descriptor.
  462. <legal all>
  463. */
  464. #define REO_ENTRANCE_RING_4_RX_REO_QUEUE_DESC_ADDR_31_0_OFFSET 0x00000010
  465. #define REO_ENTRANCE_RING_4_RX_REO_QUEUE_DESC_ADDR_31_0_LSB 0
  466. #define REO_ENTRANCE_RING_4_RX_REO_QUEUE_DESC_ADDR_31_0_MASK 0xffffffff
  467. /* Description REO_ENTRANCE_RING_5_RX_REO_QUEUE_DESC_ADDR_39_32
  468. Consumer: REO
  469. Producer: RXDMA
  470. Address (upper 8 bits) of the REO queue descriptor.
  471. <legal all>
  472. */
  473. #define REO_ENTRANCE_RING_5_RX_REO_QUEUE_DESC_ADDR_39_32_OFFSET 0x00000014
  474. #define REO_ENTRANCE_RING_5_RX_REO_QUEUE_DESC_ADDR_39_32_LSB 0
  475. #define REO_ENTRANCE_RING_5_RX_REO_QUEUE_DESC_ADDR_39_32_MASK 0x000000ff
  476. /* Description REO_ENTRANCE_RING_5_ROUNDED_MPDU_BYTE_COUNT
  477. An approximation of the number of bytes received in this
  478. MPDU.
  479. Used to keeps stats on the amount of data flowing
  480. through a queue.
  481. <legal all>
  482. */
  483. #define REO_ENTRANCE_RING_5_ROUNDED_MPDU_BYTE_COUNT_OFFSET 0x00000014
  484. #define REO_ENTRANCE_RING_5_ROUNDED_MPDU_BYTE_COUNT_LSB 8
  485. #define REO_ENTRANCE_RING_5_ROUNDED_MPDU_BYTE_COUNT_MASK 0x003fff00
  486. /* Description REO_ENTRANCE_RING_5_REO_DESTINATION_INDICATION
  487. RXDMA copy the MPDU's first MSDU's destination
  488. indication field here. This is used for REO to be able to
  489. re-route the packet to a different SW destination ring if
  490. the packet is detected as error in REO.
  491. The ID of the REO exit ring where the MSDU frame shall
  492. push after (MPDU level) reordering has finished.
  493. <enum 0 reo_destination_tcl> Reo will push the frame
  494. into the REO2TCL ring
  495. <enum 1 reo_destination_sw1> Reo will push the frame
  496. into the REO2SW1 ring
  497. <enum 2 reo_destination_sw2> Reo will push the frame
  498. into the REO2SW1 ring
  499. <enum 3 reo_destination_sw3> Reo will push the frame
  500. into the REO2SW1 ring
  501. <enum 4 reo_destination_sw4> Reo will push the frame
  502. into the REO2SW1 ring
  503. <enum 5 reo_destination_release> Reo will push the frame
  504. into the REO_release ring
  505. <enum 6 reo_destination_fw> Reo will push the frame into
  506. the REO2FW ring
  507. <enum 7 reo_destination_7> REO remaps this
  508. <enum 8 reo_destination_8> REO remaps this <enum 9
  509. reo_destination_9> REO remaps this <enum 10
  510. reo_destination_10> REO remaps this
  511. <enum 11 reo_destination_11> REO remaps this
  512. <enum 12 reo_destination_12> REO remaps this <enum 13
  513. reo_destination_13> REO remaps this
  514. <enum 14 reo_destination_14> REO remaps this
  515. <enum 15 reo_destination_15> REO remaps this
  516. <enum 16 reo_destination_16> REO remaps this
  517. <enum 17 reo_destination_17> REO remaps this
  518. <enum 18 reo_destination_18> REO remaps this
  519. <enum 19 reo_destination_19> REO remaps this
  520. <enum 20 reo_destination_20> REO remaps this
  521. <enum 21 reo_destination_21> REO remaps this
  522. <enum 22 reo_destination_22> REO remaps this
  523. <enum 23 reo_destination_23> REO remaps this
  524. <enum 24 reo_destination_24> REO remaps this
  525. <enum 25 reo_destination_25> REO remaps this
  526. <enum 26 reo_destination_26> REO remaps this
  527. <enum 27 reo_destination_27> REO remaps this
  528. <enum 28 reo_destination_28> REO remaps this
  529. <enum 29 reo_destination_29> REO remaps this
  530. <enum 30 reo_destination_30> REO remaps this
  531. <enum 31 reo_destination_31> REO remaps this
  532. <legal all>
  533. */
  534. #define REO_ENTRANCE_RING_5_REO_DESTINATION_INDICATION_OFFSET 0x00000014
  535. #define REO_ENTRANCE_RING_5_REO_DESTINATION_INDICATION_LSB 22
  536. #define REO_ENTRANCE_RING_5_REO_DESTINATION_INDICATION_MASK 0x07c00000
  537. /* Description REO_ENTRANCE_RING_5_FRAMELESS_BAR
  538. When set, this REO entrance ring struct contains BAR
  539. info from a multi TID BAR frame. The original multi TID BAR
  540. frame itself contained all the REO info for the first TID,
  541. but all the subsequent TID info and their linkage to the REO
  542. descriptors is passed down as 'frameless' BAR info.
  543. The only fields valid in this descriptor when this bit
  544. is set are:
  545. Rx_reo_queue_desc_addr_31_0
  546. RX_reo_queue_desc_addr_39_32
  547. And within the
  548. Reo_level_mpdu_frame_info:
  549. Within Rx_mpdu_desc_info_details:
  550. Mpdu_Sequence_number
  551. BAR_frame
  552. Peer_meta_data
  553. All other fields shall be set to 0
  554. <legal all>
  555. */
  556. #define REO_ENTRANCE_RING_5_FRAMELESS_BAR_OFFSET 0x00000014
  557. #define REO_ENTRANCE_RING_5_FRAMELESS_BAR_LSB 27
  558. #define REO_ENTRANCE_RING_5_FRAMELESS_BAR_MASK 0x08000000
  559. /* Description REO_ENTRANCE_RING_5_RESERVED_5A
  560. <legal 0>
  561. */
  562. #define REO_ENTRANCE_RING_5_RESERVED_5A_OFFSET 0x00000014
  563. #define REO_ENTRANCE_RING_5_RESERVED_5A_LSB 28
  564. #define REO_ENTRANCE_RING_5_RESERVED_5A_MASK 0xf0000000
  565. /* Description REO_ENTRANCE_RING_6_RXDMA_PUSH_REASON
  566. Indicates why rxdma pushed the frame to this ring
  567. This field is ignored by REO.
  568. <enum 0 rxdma_error_detected> RXDMA detected an error an
  569. pushed this frame to this queue
  570. <enum 1 rxdma_routing_instruction> RXDMA pushed the
  571. frame to this queue per received routing instructions. No
  572. error within RXDMA was detected
  573. <enum 2 rxdma_rx_flush> RXDMA received an RX_FLUSH. As a
  574. result the MSDU link descriptor might not have the
  575. last_msdu_in_mpdu_flag set, but instead WBM might just see a
  576. NULL pointer in the MSDU link descriptor. This is to be
  577. considered a normal condition for this scenario.
  578. <legal 0 - 2>
  579. */
  580. #define REO_ENTRANCE_RING_6_RXDMA_PUSH_REASON_OFFSET 0x00000018
  581. #define REO_ENTRANCE_RING_6_RXDMA_PUSH_REASON_LSB 0
  582. #define REO_ENTRANCE_RING_6_RXDMA_PUSH_REASON_MASK 0x00000003
  583. /* Description REO_ENTRANCE_RING_6_RXDMA_ERROR_CODE
  584. Field only valid when 'rxdma_push_reason' set to
  585. 'rxdma_error_detected'.
  586. This field is ignored by REO.
  587. <enum 0 rxdma_overflow_err>MPDU frame is not complete
  588. due to a FIFO overflow error in RXPCU.
  589. <enum 1 rxdma_mpdu_length_err>MPDU frame is not complete
  590. due to receiving incomplete MPDU from the PHY
  591. <enum 3 rxdma_decrypt_err>CRYPTO reported a decryption
  592. error or CRYPTO received an encrypted frame, but did not get
  593. a valid corresponding key id in the peer entry.
  594. <enum 4 rxdma_tkip_mic_err>CRYPTO reported a TKIP MIC
  595. error
  596. <enum 5 rxdma_unecrypted_err>CRYPTO reported an
  597. unencrypted frame error when encrypted was expected
  598. <enum 6 rxdma_msdu_len_err>RX OLE reported an MSDU
  599. length error
  600. <enum 7 rxdma_msdu_limit_err>RX OLE reported that max
  601. number of MSDUs allowed in an MPDU got exceeded
  602. <enum 8 rxdma_wifi_parse_err>RX OLE reported a parsing
  603. error
  604. <enum 9 rxdma_amsdu_parse_err>RX OLE reported an A-MSDU
  605. parsing error
  606. <enum 10 rxdma_sa_timeout_err>RX OLE reported a timeout
  607. during SA search
  608. <enum 11 rxdma_da_timeout_err>RX OLE reported a timeout
  609. during DA search
  610. <enum 12 rxdma_flow_timeout_err>RX OLE reported a
  611. timeout during flow search
  612. <enum 13 Rxdma_flush_request>RXDMA received a flush
  613. request
  614. */
  615. #define REO_ENTRANCE_RING_6_RXDMA_ERROR_CODE_OFFSET 0x00000018
  616. #define REO_ENTRANCE_RING_6_RXDMA_ERROR_CODE_LSB 2
  617. #define REO_ENTRANCE_RING_6_RXDMA_ERROR_CODE_MASK 0x0000007c
  618. /* Description REO_ENTRANCE_RING_6_MPDU_FRAGMENT_NUMBER
  619. Field only valid when Reo_level_mpdu_frame_info.
  620. Rx_mpdu_desc_info_details.
  621. Fragment_flag is set.
  622. The fragment number from the 802.11 header.
  623. Note that the sequence number is embedded in field:
  624. Reo_level_mpdu_frame_info.
  625. Rx_mpdu_desc_info_details.
  626. Mpdu_Sequence_number
  627. <legal all>
  628. */
  629. #define REO_ENTRANCE_RING_6_MPDU_FRAGMENT_NUMBER_OFFSET 0x00000018
  630. #define REO_ENTRANCE_RING_6_MPDU_FRAGMENT_NUMBER_LSB 7
  631. #define REO_ENTRANCE_RING_6_MPDU_FRAGMENT_NUMBER_MASK 0x00000780
  632. /* Description REO_ENTRANCE_RING_6_RESERVED_6A
  633. <legal 0>
  634. */
  635. #define REO_ENTRANCE_RING_6_RESERVED_6A_OFFSET 0x00000018
  636. #define REO_ENTRANCE_RING_6_RESERVED_6A_LSB 11
  637. #define REO_ENTRANCE_RING_6_RESERVED_6A_MASK 0xfffff800
  638. /* Description REO_ENTRANCE_RING_7_RESERVED_7A
  639. <legal 0>
  640. */
  641. #define REO_ENTRANCE_RING_7_RESERVED_7A_OFFSET 0x0000001c
  642. #define REO_ENTRANCE_RING_7_RESERVED_7A_LSB 0
  643. #define REO_ENTRANCE_RING_7_RESERVED_7A_MASK 0x000fffff
  644. /* Description REO_ENTRANCE_RING_7_RING_ID
  645. Consumer: SW/REO/DEBUG
  646. Producer: SRNG (of RXDMA)
  647. For debugging.
  648. This field is filled in by the SRNG module.
  649. It help to identify the ring that is being looked <legal
  650. all>
  651. */
  652. #define REO_ENTRANCE_RING_7_RING_ID_OFFSET 0x0000001c
  653. #define REO_ENTRANCE_RING_7_RING_ID_LSB 20
  654. #define REO_ENTRANCE_RING_7_RING_ID_MASK 0x0ff00000
  655. /* Description REO_ENTRANCE_RING_7_LOOPING_COUNT
  656. Consumer: SW/REO/DEBUG
  657. Producer: SRNG (of RXDMA)
  658. For debugging.
  659. This field is filled in by the SRNG module.
  660. A count value that indicates the number of times the
  661. producer of entries into this Ring has looped around the
  662. ring.
  663. At initialization time, this value is set to 0. On the
  664. first loop, this value is set to 1. After the max value is
  665. reached allowed by the number of bits for this field, the
  666. count value continues with 0 again.
  667. In case SW is the consumer of the ring entries, it can
  668. use this field to figure out up to where the producer of
  669. entries has created new entries. This eliminates the need to
  670. check where the head pointer' of the ring is located once
  671. the SW starts processing an interrupt indicating that new
  672. entries have been put into this ring...
  673. Also note that SW if it wants only needs to look at the
  674. LSB bit of this count value.
  675. <legal all>
  676. */
  677. #define REO_ENTRANCE_RING_7_LOOPING_COUNT_OFFSET 0x0000001c
  678. #define REO_ENTRANCE_RING_7_LOOPING_COUNT_LSB 28
  679. #define REO_ENTRANCE_RING_7_LOOPING_COUNT_MASK 0xf0000000
  680. #endif // _REO_ENTRANCE_RING_H_