wbm_release_ring.h 41 KB

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