wbm_release_ring.h 41 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517151815191520152115221523152415251526152715281529153015311532153315341535153615371538153915401541154215431544154515461547154815491550155115521553155415551556155715581559156015611562
  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. // $ATH_LICENSE_HW_HDR_C$
  19. //
  20. // DO NOT EDIT! This file is automatically generated
  21. // These definitions are tied to a particular hardware layout
  22. #ifndef _WBM_RELEASE_RING_H_
  23. #define _WBM_RELEASE_RING_H_
  24. #if !defined(__ASSEMBLER__)
  25. #endif
  26. #include "buffer_addr_info.h"
  27. #include "tx_rate_stats_info.h"
  28. // ################ START SUMMARY #################
  29. //
  30. // Dword Fields
  31. // 0-1 struct buffer_addr_info released_buff_or_desc_addr_info;
  32. // 2 release_source_module[2:0], bm_action[5:3], buffer_or_desc_type[8:6], first_msdu_index[12:9], tqm_release_reason[15:13], rxdma_push_reason[17:16], rxdma_error_code[22:18], reo_push_reason[24:23], reo_error_code[29:25], wbm_internal_error[30], reserved_2[31]
  33. // 3 tqm_status_number[23:0], transmit_count[30:24], reserved_3a[31]
  34. // 4 ack_frame_rssi[7:0], sw_release_details_valid[8], first_msdu[9], last_msdu[10], msdu_part_of_amsdu[11], fw_tx_notify_frame[12], buffer_timestamp[31:13]
  35. // 5-6 struct tx_rate_stats_info tx_rate_stats;
  36. // 7 sw_peer_id[15:0], tid[19:16], ring_id[27:20], looping_count[31:28]
  37. //
  38. // ################ END SUMMARY #################
  39. #define NUM_OF_DWORDS_WBM_RELEASE_RING 8
  40. struct wbm_release_ring {
  41. struct buffer_addr_info released_buff_or_desc_addr_info;
  42. uint32_t release_source_module : 3, //[2:0]
  43. bm_action : 3, //[5:3]
  44. buffer_or_desc_type : 3, //[8:6]
  45. first_msdu_index : 4, //[12:9]
  46. tqm_release_reason : 3, //[15:13]
  47. rxdma_push_reason : 2, //[17:16]
  48. rxdma_error_code : 5, //[22:18]
  49. reo_push_reason : 2, //[24:23]
  50. reo_error_code : 5, //[29:25]
  51. wbm_internal_error : 1, //[30]
  52. reserved_2 : 1; //[31]
  53. uint32_t tqm_status_number : 24, //[23:0]
  54. transmit_count : 7, //[30:24]
  55. reserved_3a : 1; //[31]
  56. uint32_t ack_frame_rssi : 8, //[7:0]
  57. sw_release_details_valid : 1, //[8]
  58. first_msdu : 1, //[9]
  59. last_msdu : 1, //[10]
  60. msdu_part_of_amsdu : 1, //[11]
  61. fw_tx_notify_frame : 1, //[12]
  62. buffer_timestamp : 19; //[31:13]
  63. struct tx_rate_stats_info tx_rate_stats;
  64. uint32_t sw_peer_id : 16, //[15:0]
  65. tid : 4, //[19:16]
  66. ring_id : 8, //[27:20]
  67. looping_count : 4; //[31:28]
  68. };
  69. /*
  70. struct buffer_addr_info released_buff_or_desc_addr_info
  71. Consumer: WBM/SW/FW
  72. Producer: SW/TQM/RXDMA/REO/SWITCH
  73. Details of the physical address of the buffer or link
  74. descriptor that is being released. Note that within this
  75. descriptor, WBM will look at the 'owner' of the released
  76. buffer/descriptor and forward it to SW/FW is WBM is not the
  77. owner.
  78. release_source_module
  79. Indicates which module initiated the release of this
  80. buffer or descriptor
  81. <enum 0 release_source_TQM> TQM released this buffer or
  82. descriptor
  83. <enum 1 release_source_RXDMA> RXDMA released this buffer
  84. or descriptor
  85. <enum 2 release_source_REO> REO released this buffer or
  86. descriptor
  87. <enum 3 release_source_FW> FW released this buffer or
  88. descriptor
  89. <enum 4 release_source_SW> SW released this buffer or
  90. descriptor
  91. <legal 0-4>
  92. bm_action
  93. Consumer: WBM/SW/FW
  94. Producer: SW/TQM/RXDMA/REO/SWITCH
  95. Field only valid when the field return_buffer_manager in
  96. the Released_buff_or_desc_addr_info indicates:
  97. WBM_IDLE_BUF_LIST or
  98. WBM_IDLE_DESC_LIST
  99. An MSDU extension descriptor shall never be marked as
  100. <enum 0 Put_in_idle_list> Put the buffer or descriptor
  101. back in the idle list. In case of MSDU or MDPU link
  102. descriptor, BM does not need to check to release any
  103. individual MSDU buffers
  104. <enum 1 release_msdu_list > This BM action can only be
  105. used in combination with buffer_or_desc_type being
  106. msdu_link_descriptor. Field first_msdu_index points out
  107. which MSDU pointer in the MSDU link descriptor is the first
  108. of an MPDU that is released.
  109. BM shall release all the MSDU buffers linked to this
  110. first MSDU buffer pointer. All related MSDU buffer pointer
  111. entries shall be set to value 0, which represents the 'NULL
  112. pointer. When all MSDU buffer pointers in the MSDU link
  113. descriptor are 'NULL', the MSDU link descriptor itself shall
  114. also be released.
  115. <enum 2 Put_in_idle_list_expanded> CURRENTLY NOT
  116. IMPLEMENTED....
  117. Put the buffer or descriptor back in the idle list. Only
  118. valid in combination with buffer_or_desc_type indicating
  119. MDPU_link_descriptor.
  120. BM shall release the MPDU link descriptor as well as all
  121. MSDUs that are linked to the MPDUs in this descriptor.
  122. <legal 0-2>
  123. buffer_or_desc_type
  124. Consumer: WBM/SW/FW
  125. Producer: SW/TQM/RXDMA/REO/SWITCH
  126. Field only valid when WBM is marked as the
  127. return_buffer_manager in the Released_Buffer_address_info
  128. Indicates that type of buffer or descriptor is being
  129. released
  130. <enum 0 MSDU_rel_buffer> The address points to an MSDU
  131. buffer
  132. <enum 1 msdu_link_descriptor> The address points to an
  133. TX MSDU link descriptor
  134. <enum 2 mpdu_link_descriptor> The address points to an
  135. MPDU link descriptor
  136. <enum 3 msdu_ext_descriptor > The address points to an
  137. MSDU extension descriptor.
  138. In case BM finds this one in a release ring, it passes
  139. it on to FW...
  140. <enum 4 queue_ext_descriptor> The address points to an
  141. TQM queue extension descriptor. WBM should treat this is the
  142. same way as a link descriptor. That is, put the 128 byte
  143. buffer back in the link buffer idle list.
  144. <legal 0-4>
  145. first_msdu_index
  146. Consumer: WBM/SW/FW
  147. Producer: SW/TQM/RXDMA/REO/SWITCH
  148. Field only valid for the bm_action release_msdu_list.
  149. The index of the first MSDU in an MSDU link descriptor
  150. all belonging to the same MPDU.
  151. <legal 0-6>
  152. tqm_release_reason
  153. Consumer: WBM/SW/FW
  154. Producer: TQM
  155. Field only valid when Release_source_module is set to
  156. release_source_TQM
  157. (rr = Release Reason)
  158. <enum 0 tqm_rr_frame_acked> frame is removed because an
  159. ACK of BA for it was received
  160. <enum 1 tqm_rr_rem_cmd_rem> frame is removed because a
  161. remove command of type Remove_mpdus initiated by SW
  162. <enum 2 tqm_rr_rem_cmd_tx> frame is removed because a
  163. remove command of type Remove_transmitted_mpdus initiated by
  164. SW
  165. <enum 3 tqm_rr_rem_cmd_notx> frame is removed because a
  166. remove command of type Remove_untransmitted_mpdus initiated
  167. by SW
  168. <enum 4 tqm_rr_rem_cmd_aged> frame is removed because a
  169. remove command of type Remove_aged_mpdus or
  170. Remove_aged_msdus initiated by SW
  171. <enum 5 tqm_fw_reason1> frame is removed because a
  172. remove command where fw indicated that remove reason is
  173. fw_reason1
  174. <enum 6 tqm_fw_reason2> frame is removed because a
  175. remove command where fw indicated that remove reason is
  176. fw_reason1
  177. <enum 7 tqm_fw_reason3> frame is removed because a
  178. remove command where fw indicated that remove reason is
  179. fw_reason1
  180. <legal 0-7>
  181. rxdma_push_reason
  182. Field only valid when Release_source_module is set to
  183. release_source_RXDMA
  184. Indicates why rxdma pushed the frame to this ring
  185. <enum 0 rxdma_error_detected> RXDMA detected an error an
  186. pushed this frame to this queue
  187. <enum 1 rxdma_routing_instruction> RXDMA pushed the
  188. frame to this queue per received routing instructions. No
  189. error within RXDMA was detected
  190. <legal 0 - 1>
  191. rxdma_error_code
  192. Field only valid when 'rxdma_push_reason' set to
  193. 'rxdma_error_detected'.
  194. <enum 0 rxdma_overflow_err>MPDU frame is not complete
  195. due to a FIFO overflow error in RXPCU.
  196. <enum 1 rxdma_mpdu_length_err>MPDU frame is not complete
  197. due to receiving incomplete MPDU from the PHY
  198. <enum 3 rxdma_decrypt_err>CRYPTO reported a decryption
  199. error or CRYPTO received an encrypted frame, but did not get
  200. a valid corresponding key id in the peer entry.
  201. <enum 4 rxdma_tkip_mic_err>CRYPTO reported a TKIP MIC
  202. error
  203. <enum 5 rxdma_unecrypted_err>CRYPTO reported an
  204. unencrypted frame error when encrypted was expected
  205. <enum 6 rxdma_msdu_len_err>RX OLE reported an MSDU
  206. length error
  207. <enum 7 rxdma_msdu_limit_err>RX OLE reported that max
  208. number of MSDUs allowed in an MPDU got exceeded
  209. <enum 8 rxdma_wifi_parse_err>RX OLE reported a parsing
  210. error
  211. <enum 9 rxdma_amsdu_parse_err>RX OLE reported an A-MSDU
  212. parsing error
  213. <enum 10 rxdma_sa_timeout_err>RX OLE reported a timeout
  214. during SA search
  215. <enum 11 rxdma_da_timeout_err>RX OLE reported a timeout
  216. during DA search
  217. <enum 12 rxdma_flow_timeout_err>RX OLE reported a
  218. timeout during flow search
  219. <enum 13 Rxdma_flush_request>RXDMA received a flush
  220. request
  221. reo_push_reason
  222. Field only valid when Release_source_module is set to
  223. release_source_REO
  224. Indicates why REO pushed the frame to this release ring
  225. <enum 0 reo_error_detected> Reo detected an error an
  226. pushed this frame to this queue
  227. <enum 1 reo_routing_instruction> Reo pushed the frame to
  228. this queue per received routing instructions. No error
  229. within REO was detected
  230. <legal 0 - 1>
  231. reo_error_code
  232. Field only valid when 'Reo_push_reason' set to
  233. 'reo_error_detected'.
  234. <enum 0 reo_queue_desc_addr_zero> Reo queue descriptor
  235. provided in the REO_ENTRANCE ring is set to 0
  236. <enum 1 reo_queue_desc_not_valid> Reo queue descriptor
  237. valid bit is NOT set
  238. <enum 2 ampdu_in_non_ba> AMPDU frame received without BA
  239. session having been setup.
  240. <enum 3 non_ba_duplicate> Non-BA session, SN equal to
  241. SSN, Retry bit set: duplicate frame
  242. <enum 4 ba_duplicate> BA session, duplicate frame
  243. <enum 5 regular_frame_2k_jump> A normal (management/data
  244. frame) received with 2K jump in SN
  245. <enum 6 bar_frame_2k_jump> A bar received with 2K jump
  246. in SSN
  247. <enum 7 regular_frame_OOR> A normal (management/data
  248. frame) received with SN falling within the OOR window
  249. <enum 8 bar_frame_OOR> A bar received with SSN falling
  250. within the OOR window
  251. <enum 9 bar_frame_no_ba_session> A bar received without
  252. a BA session
  253. <enum 10 bar_frame_sn_equals_ssn> A bar received with
  254. SSN equal to SN
  255. <enum 11 pn_check_failed> PN Check Failed packet.
  256. <enum 12 2k_error_handling_flag_set> Frame is forwarded
  257. as a result of the 'Seq_2k_error_detected_flag' been set in
  258. the REO Queue descriptor
  259. <enum 13 pn_error_handling_flag_set> Frame is forwarded
  260. as a result of the 'pn_error_detected_flag' been set in the
  261. REO Queue descriptor
  262. <enum 14 queue_descriptor_blocked_set> Frame is
  263. forwarded as a result of the queue descriptor(address) being
  264. blocked as SW/FW seems to be currently in the process of
  265. making updates to this descriptor...
  266. <legal 0-14>
  267. wbm_internal_error
  268. Can only be set by WBM.
  269. Is set when WBM got a buffer pointer but the action was
  270. to push it to the idle link descriptor ring or do link
  271. related activity
  272. OR
  273. Is set when WBM got a link buffer pointer but the action
  274. was to push it to the buffer descriptor ring
  275. <legal all>
  276. reserved_2
  277. <legal 0>
  278. tqm_status_number
  279. Field only valid when Release_source_module is set to
  280. release_source_TQM
  281. The value in this field is equal to value of the
  282. 'TQM_CMD_Number' field the TQM command or the
  283. 'TQM_add_cmd_Number' field from the TQM entrance ring
  284. descriptor
  285. This field helps to correlate the statuses with the TQM
  286. commands.
  287. NOTE that SW could program this number to be equal to
  288. the PPDU_ID number in case direct correlation with the PPDU
  289. ID is desired
  290. <legal all>
  291. transmit_count
  292. Field only valid when Release_source_module is set to
  293. release_source_TQM
  294. The number of times this frame has been transmitted
  295. reserved_3a
  296. <legal 0>
  297. ack_frame_rssi
  298. This field is only valid when the source is TQM.
  299. If this frame is removed as the result of the reception
  300. of an ACK or BA, this field indicates the RSSI of the
  301. received ACK or BA frame.
  302. When the frame is removed as result of a direct remove
  303. command from the SW, this field is set to 0x0 (which is
  304. never a valid value when real RSSI is available)
  305. <legal all>
  306. sw_release_details_valid
  307. Consumer: SW
  308. Producer: WBM
  309. When set, some WBM specific release info for SW is
  310. valid.
  311. This is set when WMB got a 'release_msdu_list' command
  312. from TQM and the return buffer manager is not WMB. WBM will
  313. then de-aggregate all the MSDUs and pass them one at a time
  314. on to the 'buffer owner'
  315. <legal all>
  316. first_msdu
  317. Field only valid when SW_release_details_valid is set.
  318. Consumer: SW
  319. Producer: WBM
  320. When set, this MSDU is the first MSDU pointed to in the
  321. 'release_msdu_list' command.
  322. <legal all>
  323. last_msdu
  324. Field only valid when SW_release_details_valid is set.
  325. Consumer: SW
  326. Producer: WBM
  327. When set, this MSDU is the last MSDU pointed to in the
  328. 'release_msdu_list' command.
  329. <legal all>
  330. msdu_part_of_amsdu
  331. Field only valid when SW_release_details_valid is set.
  332. Consumer: SW
  333. Producer: WBM
  334. When set, this MSDU was part of an A-MSDU in MPDU
  335. <legal all>
  336. fw_tx_notify_frame
  337. Field only valid when SW_release_details_valid is set.
  338. Consumer: SW
  339. Producer: WBM
  340. This is the FW_tx_notify_frame field from the
  341. <legal all>
  342. buffer_timestamp
  343. Field only valid when SW_release_details_valid is set.
  344. Consumer: SW
  345. Producer: WBM
  346. This is the Buffer_timestamp field from the
  347. <legal all>
  348. struct tx_rate_stats_info tx_rate_stats
  349. Consumer: TQM
  350. Producer: SW/SCH(from TXPCU, PDG)
  351. Details for command execution tracking purposes.
  352. sw_peer_id
  353. Field only valid when Release_source_module is set to
  354. release_source_TQM
  355. 1) Release of msdu buffer due to drop_frame = 1. Flow is
  356. not fetched and hence sw_peer_id and tid = 0
  357. buffer_or_desc_type = e_num 0
  358. MSDU_rel_buffertqm_release_reason = e_num 1
  359. tqm_rr_rem_cmd_rem
  360. 2) Release of msdu buffer due to Flow is not fetched and
  361. hence sw_peer_id and tid = 0
  362. buffer_or_desc_type = e_num 0
  363. MSDU_rel_buffertqm_release_reason = e_num 1
  364. tqm_rr_rem_cmd_rem
  365. 3) Release of msdu link due to remove_mpdu or acked_mpdu
  366. command.
  367. buffer_or_desc_type = e_num1
  368. msdu_link_descriptortqm_release_reason can be:e_num 1
  369. tqm_rr_rem_cmd_reme_num 2 tqm_rr_rem_cmd_tx
  370. e_num 3 tqm_rr_rem_cmd_notxe_num 4 tqm_rr_rem_cmd_aged
  371. Sw_peer_id from the TX_MSDU_FLOW descriptor or
  372. TX_MPDU_QUEUE descriptor
  373. <legal all>
  374. tid
  375. Field only valid when Release_source_module is set to
  376. release_source_TQM
  377. 1) Release of msdu buffer due to drop_frame = 1. Flow is
  378. not fetched and hence sw_peer_id and tid = 0
  379. buffer_or_desc_type = e_num 0
  380. MSDU_rel_buffertqm_release_reason = e_num 1
  381. tqm_rr_rem_cmd_rem
  382. 2) Release of msdu buffer due to Flow is not fetched and
  383. hence sw_peer_id and tid = 0
  384. buffer_or_desc_type = e_num 0
  385. MSDU_rel_buffertqm_release_reason = e_num 1
  386. tqm_rr_rem_cmd_rem
  387. 3) Release of msdu link due to remove_mpdu or acked_mpdu
  388. command.
  389. buffer_or_desc_type = e_num1
  390. msdu_link_descriptortqm_release_reason can be:e_num 1
  391. tqm_rr_rem_cmd_reme_num 2 tqm_rr_rem_cmd_tx
  392. e_num 3 tqm_rr_rem_cmd_notxe_num 4 tqm_rr_rem_cmd_aged
  393. This field represents the TID from the TX_MSDU_FLOW
  394. descriptor or TX_MPDU_QUEUE descriptor
  395. <legal all>
  396. ring_id
  397. Consumer: TQM/REO/RXDMA/SW
  398. Producer: SRNG (of RXDMA)
  399. For debugging.
  400. This field is filled in by the SRNG module.
  401. It help to identify the ring that is being looked <legal
  402. all>
  403. looping_count
  404. Consumer: WBM/SW/FW
  405. Producer: SW/TQM/RXDMA/REO/SWITCH
  406. A count value that indicates the number of times the
  407. producer of entries into the Buffer Manager Ring has looped
  408. around the ring.
  409. At initialization time, this value is set to 0. On the
  410. first loop, this value is set to 1. After the max value is
  411. reached allowed by the number of bits for this field, the
  412. count value continues with 0 again.
  413. In case SW is the consumer of the ring entries, it can
  414. use this field to figure out up to where the producer of
  415. entries has created new entries. This eliminates the need to
  416. check where the head pointer' of the ring is located once
  417. the SW starts processing an interrupt indicating that new
  418. entries have been put into this ring...
  419. Also note that SW if it wants only needs to look at the
  420. LSB bit of this count value.
  421. <legal all>
  422. */
  423. #define WBM_RELEASE_RING_0_BUFFER_ADDR_INFO_RELEASED_BUFF_OR_DESC_ADDR_INFO_OFFSET 0x00000000
  424. #define WBM_RELEASE_RING_0_BUFFER_ADDR_INFO_RELEASED_BUFF_OR_DESC_ADDR_INFO_LSB 28
  425. #define WBM_RELEASE_RING_0_BUFFER_ADDR_INFO_RELEASED_BUFF_OR_DESC_ADDR_INFO_MASK 0xffffffff
  426. #define WBM_RELEASE_RING_1_BUFFER_ADDR_INFO_RELEASED_BUFF_OR_DESC_ADDR_INFO_OFFSET 0x00000004
  427. #define WBM_RELEASE_RING_1_BUFFER_ADDR_INFO_RELEASED_BUFF_OR_DESC_ADDR_INFO_LSB 28
  428. #define WBM_RELEASE_RING_1_BUFFER_ADDR_INFO_RELEASED_BUFF_OR_DESC_ADDR_INFO_MASK 0xffffffff
  429. /* Description WBM_RELEASE_RING_2_RELEASE_SOURCE_MODULE
  430. Indicates which module initiated the release of this
  431. buffer or descriptor
  432. <enum 0 release_source_TQM> TQM released this buffer or
  433. descriptor
  434. <enum 1 release_source_RXDMA> RXDMA released this buffer
  435. or descriptor
  436. <enum 2 release_source_REO> REO released this buffer or
  437. descriptor
  438. <enum 3 release_source_FW> FW released this buffer or
  439. descriptor
  440. <enum 4 release_source_SW> SW released this buffer or
  441. descriptor
  442. <legal 0-4>
  443. */
  444. #define WBM_RELEASE_RING_2_RELEASE_SOURCE_MODULE_OFFSET 0x00000008
  445. #define WBM_RELEASE_RING_2_RELEASE_SOURCE_MODULE_LSB 0
  446. #define WBM_RELEASE_RING_2_RELEASE_SOURCE_MODULE_MASK 0x00000007
  447. /* Description WBM_RELEASE_RING_2_BM_ACTION
  448. Consumer: WBM/SW/FW
  449. Producer: SW/TQM/RXDMA/REO/SWITCH
  450. Field only valid when the field return_buffer_manager in
  451. the Released_buff_or_desc_addr_info indicates:
  452. WBM_IDLE_BUF_LIST or
  453. WBM_IDLE_DESC_LIST
  454. An MSDU extension descriptor shall never be marked as
  455. <enum 0 Put_in_idle_list> Put the buffer or descriptor
  456. back in the idle list. In case of MSDU or MDPU link
  457. descriptor, BM does not need to check to release any
  458. individual MSDU buffers
  459. <enum 1 release_msdu_list > This BM action can only be
  460. used in combination with buffer_or_desc_type being
  461. msdu_link_descriptor. Field first_msdu_index points out
  462. which MSDU pointer in the MSDU link descriptor is the first
  463. of an MPDU that is released.
  464. BM shall release all the MSDU buffers linked to this
  465. first MSDU buffer pointer. All related MSDU buffer pointer
  466. entries shall be set to value 0, which represents the 'NULL
  467. pointer. When all MSDU buffer pointers in the MSDU link
  468. descriptor are 'NULL', the MSDU link descriptor itself shall
  469. also be released.
  470. <enum 2 Put_in_idle_list_expanded> CURRENTLY NOT
  471. IMPLEMENTED....
  472. Put the buffer or descriptor back in the idle list. Only
  473. valid in combination with buffer_or_desc_type indicating
  474. MDPU_link_descriptor.
  475. BM shall release the MPDU link descriptor as well as all
  476. MSDUs that are linked to the MPDUs in this descriptor.
  477. <legal 0-2>
  478. */
  479. #define WBM_RELEASE_RING_2_BM_ACTION_OFFSET 0x00000008
  480. #define WBM_RELEASE_RING_2_BM_ACTION_LSB 3
  481. #define WBM_RELEASE_RING_2_BM_ACTION_MASK 0x00000038
  482. /* Description WBM_RELEASE_RING_2_BUFFER_OR_DESC_TYPE
  483. Consumer: WBM/SW/FW
  484. Producer: SW/TQM/RXDMA/REO/SWITCH
  485. Field only valid when WBM is marked as the
  486. return_buffer_manager in the Released_Buffer_address_info
  487. Indicates that type of buffer or descriptor is being
  488. released
  489. <enum 0 MSDU_rel_buffer> The address points to an MSDU
  490. buffer
  491. <enum 1 msdu_link_descriptor> The address points to an
  492. TX MSDU link descriptor
  493. <enum 2 mpdu_link_descriptor> The address points to an
  494. MPDU link descriptor
  495. <enum 3 msdu_ext_descriptor > The address points to an
  496. MSDU extension descriptor.
  497. In case BM finds this one in a release ring, it passes
  498. it on to FW...
  499. <enum 4 queue_ext_descriptor> The address points to an
  500. TQM queue extension descriptor. WBM should treat this is the
  501. same way as a link descriptor. That is, put the 128 byte
  502. buffer back in the link buffer idle list.
  503. <legal 0-4>
  504. */
  505. #define WBM_RELEASE_RING_2_BUFFER_OR_DESC_TYPE_OFFSET 0x00000008
  506. #define WBM_RELEASE_RING_2_BUFFER_OR_DESC_TYPE_LSB 6
  507. #define WBM_RELEASE_RING_2_BUFFER_OR_DESC_TYPE_MASK 0x000001c0
  508. /* Description WBM_RELEASE_RING_2_FIRST_MSDU_INDEX
  509. Consumer: WBM/SW/FW
  510. Producer: SW/TQM/RXDMA/REO/SWITCH
  511. Field only valid for the bm_action release_msdu_list.
  512. The index of the first MSDU in an MSDU link descriptor
  513. all belonging to the same MPDU.
  514. <legal 0-6>
  515. */
  516. #define WBM_RELEASE_RING_2_FIRST_MSDU_INDEX_OFFSET 0x00000008
  517. #define WBM_RELEASE_RING_2_FIRST_MSDU_INDEX_LSB 9
  518. #define WBM_RELEASE_RING_2_FIRST_MSDU_INDEX_MASK 0x00001e00
  519. /* Description WBM_RELEASE_RING_2_TQM_RELEASE_REASON
  520. Consumer: WBM/SW/FW
  521. Producer: TQM
  522. Field only valid when Release_source_module is set to
  523. release_source_TQM
  524. (rr = Release Reason)
  525. <enum 0 tqm_rr_frame_acked> frame is removed because an
  526. ACK of BA for it was received
  527. <enum 1 tqm_rr_rem_cmd_rem> frame is removed because a
  528. remove command of type Remove_mpdus initiated by SW
  529. <enum 2 tqm_rr_rem_cmd_tx> frame is removed because a
  530. remove command of type Remove_transmitted_mpdus initiated by
  531. SW
  532. <enum 3 tqm_rr_rem_cmd_notx> frame is removed because a
  533. remove command of type Remove_untransmitted_mpdus initiated
  534. by SW
  535. <enum 4 tqm_rr_rem_cmd_aged> frame is removed because a
  536. remove command of type Remove_aged_mpdus or
  537. Remove_aged_msdus initiated by SW
  538. <enum 5 tqm_fw_reason1> frame is removed because a
  539. remove command where fw indicated that remove reason is
  540. fw_reason1
  541. <enum 6 tqm_fw_reason2> frame is removed because a
  542. remove command where fw indicated that remove reason is
  543. fw_reason1
  544. <enum 7 tqm_fw_reason3> frame is removed because a
  545. remove command where fw indicated that remove reason is
  546. fw_reason1
  547. <legal 0-7>
  548. */
  549. #define WBM_RELEASE_RING_2_TQM_RELEASE_REASON_OFFSET 0x00000008
  550. #define WBM_RELEASE_RING_2_TQM_RELEASE_REASON_LSB 13
  551. #define WBM_RELEASE_RING_2_TQM_RELEASE_REASON_MASK 0x0000e000
  552. /* Description WBM_RELEASE_RING_2_RXDMA_PUSH_REASON
  553. Field only valid when Release_source_module is set to
  554. release_source_RXDMA
  555. Indicates why rxdma pushed the frame to this ring
  556. <enum 0 rxdma_error_detected> RXDMA detected an error an
  557. pushed this frame to this queue
  558. <enum 1 rxdma_routing_instruction> RXDMA pushed the
  559. frame to this queue per received routing instructions. No
  560. error within RXDMA was detected
  561. <legal 0 - 1>
  562. */
  563. #define WBM_RELEASE_RING_2_RXDMA_PUSH_REASON_OFFSET 0x00000008
  564. #define WBM_RELEASE_RING_2_RXDMA_PUSH_REASON_LSB 16
  565. #define WBM_RELEASE_RING_2_RXDMA_PUSH_REASON_MASK 0x00030000
  566. /* Description WBM_RELEASE_RING_2_RXDMA_ERROR_CODE
  567. Field only valid when 'rxdma_push_reason' set to
  568. 'rxdma_error_detected'.
  569. <enum 0 rxdma_overflow_err>MPDU frame is not complete
  570. due to a FIFO overflow error in RXPCU.
  571. <enum 1 rxdma_mpdu_length_err>MPDU frame is not complete
  572. due to receiving incomplete MPDU from the PHY
  573. <enum 3 rxdma_decrypt_err>CRYPTO reported a decryption
  574. error or CRYPTO received an encrypted frame, but did not get
  575. a valid corresponding key id in the peer entry.
  576. <enum 4 rxdma_tkip_mic_err>CRYPTO reported a TKIP MIC
  577. error
  578. <enum 5 rxdma_unecrypted_err>CRYPTO reported an
  579. unencrypted frame error when encrypted was expected
  580. <enum 6 rxdma_msdu_len_err>RX OLE reported an MSDU
  581. length error
  582. <enum 7 rxdma_msdu_limit_err>RX OLE reported that max
  583. number of MSDUs allowed in an MPDU got exceeded
  584. <enum 8 rxdma_wifi_parse_err>RX OLE reported a parsing
  585. error
  586. <enum 9 rxdma_amsdu_parse_err>RX OLE reported an A-MSDU
  587. parsing error
  588. <enum 10 rxdma_sa_timeout_err>RX OLE reported a timeout
  589. during SA search
  590. <enum 11 rxdma_da_timeout_err>RX OLE reported a timeout
  591. during DA search
  592. <enum 12 rxdma_flow_timeout_err>RX OLE reported a
  593. timeout during flow search
  594. <enum 13 Rxdma_flush_request>RXDMA received a flush
  595. request
  596. */
  597. #define WBM_RELEASE_RING_2_RXDMA_ERROR_CODE_OFFSET 0x00000008
  598. #define WBM_RELEASE_RING_2_RXDMA_ERROR_CODE_LSB 18
  599. #define WBM_RELEASE_RING_2_RXDMA_ERROR_CODE_MASK 0x007c0000
  600. /* Description WBM_RELEASE_RING_2_REO_PUSH_REASON
  601. Field only valid when Release_source_module is set to
  602. release_source_REO
  603. Indicates why REO pushed the frame to this release ring
  604. <enum 0 reo_error_detected> Reo detected an error an
  605. pushed this frame to this queue
  606. <enum 1 reo_routing_instruction> Reo pushed the frame to
  607. this queue per received routing instructions. No error
  608. within REO was detected
  609. <legal 0 - 1>
  610. */
  611. #define WBM_RELEASE_RING_2_REO_PUSH_REASON_OFFSET 0x00000008
  612. #define WBM_RELEASE_RING_2_REO_PUSH_REASON_LSB 23
  613. #define WBM_RELEASE_RING_2_REO_PUSH_REASON_MASK 0x01800000
  614. /* Description WBM_RELEASE_RING_2_REO_ERROR_CODE
  615. Field only valid when 'Reo_push_reason' set to
  616. 'reo_error_detected'.
  617. <enum 0 reo_queue_desc_addr_zero> Reo queue descriptor
  618. provided in the REO_ENTRANCE ring is set to 0
  619. <enum 1 reo_queue_desc_not_valid> Reo queue descriptor
  620. valid bit is NOT set
  621. <enum 2 ampdu_in_non_ba> AMPDU frame received without BA
  622. session having been setup.
  623. <enum 3 non_ba_duplicate> Non-BA session, SN equal to
  624. SSN, Retry bit set: duplicate frame
  625. <enum 4 ba_duplicate> BA session, duplicate frame
  626. <enum 5 regular_frame_2k_jump> A normal (management/data
  627. frame) received with 2K jump in SN
  628. <enum 6 bar_frame_2k_jump> A bar received with 2K jump
  629. in SSN
  630. <enum 7 regular_frame_OOR> A normal (management/data
  631. frame) received with SN falling within the OOR window
  632. <enum 8 bar_frame_OOR> A bar received with SSN falling
  633. within the OOR window
  634. <enum 9 bar_frame_no_ba_session> A bar received without
  635. a BA session
  636. <enum 10 bar_frame_sn_equals_ssn> A bar received with
  637. SSN equal to SN
  638. <enum 11 pn_check_failed> PN Check Failed packet.
  639. <enum 12 2k_error_handling_flag_set> Frame is forwarded
  640. as a result of the 'Seq_2k_error_detected_flag' been set in
  641. the REO Queue descriptor
  642. <enum 13 pn_error_handling_flag_set> Frame is forwarded
  643. as a result of the 'pn_error_detected_flag' been set in the
  644. REO Queue descriptor
  645. <enum 14 queue_descriptor_blocked_set> Frame is
  646. forwarded as a result of the queue descriptor(address) being
  647. blocked as SW/FW seems to be currently in the process of
  648. making updates to this descriptor...
  649. <legal 0-14>
  650. */
  651. #define WBM_RELEASE_RING_2_REO_ERROR_CODE_OFFSET 0x00000008
  652. #define WBM_RELEASE_RING_2_REO_ERROR_CODE_LSB 25
  653. #define WBM_RELEASE_RING_2_REO_ERROR_CODE_MASK 0x3e000000
  654. /* Description WBM_RELEASE_RING_2_WBM_INTERNAL_ERROR
  655. Can only be set by WBM.
  656. Is set when WBM got a buffer pointer but the action was
  657. to push it to the idle link descriptor ring or do link
  658. related activity
  659. OR
  660. Is set when WBM got a link buffer pointer but the action
  661. was to push it to the buffer descriptor ring
  662. <legal all>
  663. */
  664. #define WBM_RELEASE_RING_2_WBM_INTERNAL_ERROR_OFFSET 0x00000008
  665. #define WBM_RELEASE_RING_2_WBM_INTERNAL_ERROR_LSB 30
  666. #define WBM_RELEASE_RING_2_WBM_INTERNAL_ERROR_MASK 0x40000000
  667. /* Description WBM_RELEASE_RING_2_RESERVED_2
  668. <legal 0>
  669. */
  670. #define WBM_RELEASE_RING_2_RESERVED_2_OFFSET 0x00000008
  671. #define WBM_RELEASE_RING_2_RESERVED_2_LSB 31
  672. #define WBM_RELEASE_RING_2_RESERVED_2_MASK 0x80000000
  673. /* Description WBM_RELEASE_RING_3_TQM_STATUS_NUMBER
  674. Field only valid when Release_source_module is set to
  675. release_source_TQM
  676. The value in this field is equal to value of the
  677. 'TQM_CMD_Number' field the TQM command or the
  678. 'TQM_add_cmd_Number' field from the TQM entrance ring
  679. descriptor
  680. This field helps to correlate the statuses with the TQM
  681. commands.
  682. NOTE that SW could program this number to be equal to
  683. the PPDU_ID number in case direct correlation with the PPDU
  684. ID is desired
  685. <legal all>
  686. */
  687. #define WBM_RELEASE_RING_3_TQM_STATUS_NUMBER_OFFSET 0x0000000c
  688. #define WBM_RELEASE_RING_3_TQM_STATUS_NUMBER_LSB 0
  689. #define WBM_RELEASE_RING_3_TQM_STATUS_NUMBER_MASK 0x00ffffff
  690. /* Description WBM_RELEASE_RING_3_TRANSMIT_COUNT
  691. Field only valid when Release_source_module is set to
  692. release_source_TQM
  693. The number of times this frame has been transmitted
  694. */
  695. #define WBM_RELEASE_RING_3_TRANSMIT_COUNT_OFFSET 0x0000000c
  696. #define WBM_RELEASE_RING_3_TRANSMIT_COUNT_LSB 24
  697. #define WBM_RELEASE_RING_3_TRANSMIT_COUNT_MASK 0x7f000000
  698. /* Description WBM_RELEASE_RING_3_RESERVED_3A
  699. <legal 0>
  700. */
  701. #define WBM_RELEASE_RING_3_RESERVED_3A_OFFSET 0x0000000c
  702. #define WBM_RELEASE_RING_3_RESERVED_3A_LSB 31
  703. #define WBM_RELEASE_RING_3_RESERVED_3A_MASK 0x80000000
  704. /* Description WBM_RELEASE_RING_4_ACK_FRAME_RSSI
  705. This field is only valid when the source is TQM.
  706. If this frame is removed as the result of the reception
  707. of an ACK or BA, this field indicates the RSSI of the
  708. received ACK or BA frame.
  709. When the frame is removed as result of a direct remove
  710. command from the SW, this field is set to 0x0 (which is
  711. never a valid value when real RSSI is available)
  712. <legal all>
  713. */
  714. #define WBM_RELEASE_RING_4_ACK_FRAME_RSSI_OFFSET 0x00000010
  715. #define WBM_RELEASE_RING_4_ACK_FRAME_RSSI_LSB 0
  716. #define WBM_RELEASE_RING_4_ACK_FRAME_RSSI_MASK 0x000000ff
  717. /* Description WBM_RELEASE_RING_4_SW_RELEASE_DETAILS_VALID
  718. Consumer: SW
  719. Producer: WBM
  720. When set, some WBM specific release info for SW is
  721. valid.
  722. This is set when WMB got a 'release_msdu_list' command
  723. from TQM and the return buffer manager is not WMB. WBM will
  724. then de-aggregate all the MSDUs and pass them one at a time
  725. on to the 'buffer owner'
  726. <legal all>
  727. */
  728. #define WBM_RELEASE_RING_4_SW_RELEASE_DETAILS_VALID_OFFSET 0x00000010
  729. #define WBM_RELEASE_RING_4_SW_RELEASE_DETAILS_VALID_LSB 8
  730. #define WBM_RELEASE_RING_4_SW_RELEASE_DETAILS_VALID_MASK 0x00000100
  731. /* Description WBM_RELEASE_RING_4_FIRST_MSDU
  732. Field only valid when SW_release_details_valid is set.
  733. Consumer: SW
  734. Producer: WBM
  735. When set, this MSDU is the first MSDU pointed to in the
  736. 'release_msdu_list' command.
  737. <legal all>
  738. */
  739. #define WBM_RELEASE_RING_4_FIRST_MSDU_OFFSET 0x00000010
  740. #define WBM_RELEASE_RING_4_FIRST_MSDU_LSB 9
  741. #define WBM_RELEASE_RING_4_FIRST_MSDU_MASK 0x00000200
  742. /* Description WBM_RELEASE_RING_4_LAST_MSDU
  743. Field only valid when SW_release_details_valid is set.
  744. Consumer: SW
  745. Producer: WBM
  746. When set, this MSDU is the last MSDU pointed to in the
  747. 'release_msdu_list' command.
  748. <legal all>
  749. */
  750. #define WBM_RELEASE_RING_4_LAST_MSDU_OFFSET 0x00000010
  751. #define WBM_RELEASE_RING_4_LAST_MSDU_LSB 10
  752. #define WBM_RELEASE_RING_4_LAST_MSDU_MASK 0x00000400
  753. /* Description WBM_RELEASE_RING_4_MSDU_PART_OF_AMSDU
  754. Field only valid when SW_release_details_valid is set.
  755. Consumer: SW
  756. Producer: WBM
  757. When set, this MSDU was part of an A-MSDU in MPDU
  758. <legal all>
  759. */
  760. #define WBM_RELEASE_RING_4_MSDU_PART_OF_AMSDU_OFFSET 0x00000010
  761. #define WBM_RELEASE_RING_4_MSDU_PART_OF_AMSDU_LSB 11
  762. #define WBM_RELEASE_RING_4_MSDU_PART_OF_AMSDU_MASK 0x00000800
  763. /* Description WBM_RELEASE_RING_4_FW_TX_NOTIFY_FRAME
  764. Field only valid when SW_release_details_valid is set.
  765. Consumer: SW
  766. Producer: WBM
  767. This is the FW_tx_notify_frame field from the
  768. <legal all>
  769. */
  770. #define WBM_RELEASE_RING_4_FW_TX_NOTIFY_FRAME_OFFSET 0x00000010
  771. #define WBM_RELEASE_RING_4_FW_TX_NOTIFY_FRAME_LSB 12
  772. #define WBM_RELEASE_RING_4_FW_TX_NOTIFY_FRAME_MASK 0x00001000
  773. /* Description WBM_RELEASE_RING_4_BUFFER_TIMESTAMP
  774. Field only valid when SW_release_details_valid is set.
  775. Consumer: SW
  776. Producer: WBM
  777. This is the Buffer_timestamp field from the
  778. <legal all>
  779. */
  780. #define WBM_RELEASE_RING_4_BUFFER_TIMESTAMP_OFFSET 0x00000010
  781. #define WBM_RELEASE_RING_4_BUFFER_TIMESTAMP_LSB 13
  782. #define WBM_RELEASE_RING_4_BUFFER_TIMESTAMP_MASK 0xffffe000
  783. #define WBM_RELEASE_RING_5_TX_RATE_STATS_INFO_TX_RATE_STATS_OFFSET 0x00000014
  784. #define WBM_RELEASE_RING_5_TX_RATE_STATS_INFO_TX_RATE_STATS_LSB 13
  785. #define WBM_RELEASE_RING_5_TX_RATE_STATS_INFO_TX_RATE_STATS_MASK 0xffffffff
  786. #define WBM_RELEASE_RING_6_TX_RATE_STATS_INFO_TX_RATE_STATS_OFFSET 0x00000018
  787. #define WBM_RELEASE_RING_6_TX_RATE_STATS_INFO_TX_RATE_STATS_LSB 13
  788. #define WBM_RELEASE_RING_6_TX_RATE_STATS_INFO_TX_RATE_STATS_MASK 0xffffffff
  789. /* Description WBM_RELEASE_RING_7_SW_PEER_ID
  790. Field only valid when Release_source_module is set to
  791. release_source_TQM
  792. 1) Release of msdu buffer due to drop_frame = 1. Flow is
  793. not fetched and hence sw_peer_id and tid = 0
  794. buffer_or_desc_type = e_num 0
  795. MSDU_rel_buffertqm_release_reason = e_num 1
  796. tqm_rr_rem_cmd_rem
  797. 2) Release of msdu buffer due to Flow is not fetched and
  798. hence sw_peer_id and tid = 0
  799. buffer_or_desc_type = e_num 0
  800. MSDU_rel_buffertqm_release_reason = e_num 1
  801. tqm_rr_rem_cmd_rem
  802. 3) Release of msdu link due to remove_mpdu or acked_mpdu
  803. command.
  804. buffer_or_desc_type = e_num1
  805. msdu_link_descriptortqm_release_reason can be:e_num 1
  806. tqm_rr_rem_cmd_reme_num 2 tqm_rr_rem_cmd_tx
  807. e_num 3 tqm_rr_rem_cmd_notxe_num 4 tqm_rr_rem_cmd_aged
  808. Sw_peer_id from the TX_MSDU_FLOW descriptor or
  809. TX_MPDU_QUEUE descriptor
  810. <legal all>
  811. */
  812. #define WBM_RELEASE_RING_7_SW_PEER_ID_OFFSET 0x0000001c
  813. #define WBM_RELEASE_RING_7_SW_PEER_ID_LSB 0
  814. #define WBM_RELEASE_RING_7_SW_PEER_ID_MASK 0x0000ffff
  815. /* Description WBM_RELEASE_RING_7_TID
  816. Field only valid when Release_source_module is set to
  817. release_source_TQM
  818. 1) Release of msdu buffer due to drop_frame = 1. Flow is
  819. not fetched and hence sw_peer_id and tid = 0
  820. buffer_or_desc_type = e_num 0
  821. MSDU_rel_buffertqm_release_reason = e_num 1
  822. tqm_rr_rem_cmd_rem
  823. 2) Release of msdu buffer due to Flow is not fetched and
  824. hence sw_peer_id and tid = 0
  825. buffer_or_desc_type = e_num 0
  826. MSDU_rel_buffertqm_release_reason = e_num 1
  827. tqm_rr_rem_cmd_rem
  828. 3) Release of msdu link due to remove_mpdu or acked_mpdu
  829. command.
  830. buffer_or_desc_type = e_num1
  831. msdu_link_descriptortqm_release_reason can be:e_num 1
  832. tqm_rr_rem_cmd_reme_num 2 tqm_rr_rem_cmd_tx
  833. e_num 3 tqm_rr_rem_cmd_notxe_num 4 tqm_rr_rem_cmd_aged
  834. This field represents the TID from the TX_MSDU_FLOW
  835. descriptor or TX_MPDU_QUEUE descriptor
  836. <legal all>
  837. */
  838. #define WBM_RELEASE_RING_7_TID_OFFSET 0x0000001c
  839. #define WBM_RELEASE_RING_7_TID_LSB 16
  840. #define WBM_RELEASE_RING_7_TID_MASK 0x000f0000
  841. /* Description WBM_RELEASE_RING_7_RING_ID
  842. Consumer: TQM/REO/RXDMA/SW
  843. Producer: SRNG (of RXDMA)
  844. For debugging.
  845. This field is filled in by the SRNG module.
  846. It help to identify the ring that is being looked <legal
  847. all>
  848. */
  849. #define WBM_RELEASE_RING_7_RING_ID_OFFSET 0x0000001c
  850. #define WBM_RELEASE_RING_7_RING_ID_LSB 20
  851. #define WBM_RELEASE_RING_7_RING_ID_MASK 0x0ff00000
  852. /* Description WBM_RELEASE_RING_7_LOOPING_COUNT
  853. Consumer: WBM/SW/FW
  854. Producer: SW/TQM/RXDMA/REO/SWITCH
  855. A count value that indicates the number of times the
  856. producer of entries into the Buffer Manager Ring has looped
  857. around the ring.
  858. At initialization time, this value is set to 0. On the
  859. first loop, this value is set to 1. After the max value is
  860. reached allowed by the number of bits for this field, the
  861. count value continues with 0 again.
  862. In case SW is the consumer of the ring entries, it can
  863. use this field to figure out up to where the producer of
  864. entries has created new entries. This eliminates the need to
  865. check where the head pointer' of the ring is located once
  866. the SW starts processing an interrupt indicating that new
  867. entries have been put into this ring...
  868. Also note that SW if it wants only needs to look at the
  869. LSB bit of this count value.
  870. <legal all>
  871. */
  872. #define WBM_RELEASE_RING_7_LOOPING_COUNT_OFFSET 0x0000001c
  873. #define WBM_RELEASE_RING_7_LOOPING_COUNT_LSB 28
  874. #define WBM_RELEASE_RING_7_LOOPING_COUNT_MASK 0xf0000000
  875. #endif // _WBM_RELEASE_RING_H_