reo_entrance_ring.h 34 KB

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