rx_reo_queue_ext.h 93 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517151815191520152115221523152415251526152715281529153015311532153315341535153615371538153915401541154215431544154515461547154815491550155115521553155415551556155715581559156015611562156315641565156615671568156915701571157215731574157515761577157815791580158115821583158415851586158715881589159015911592159315941595159615971598159916001601160216031604160516061607160816091610161116121613161416151616161716181619162016211622162316241625162616271628162916301631163216331634163516361637163816391640164116421643164416451646164716481649165016511652165316541655165616571658165916601661166216631664166516661667166816691670167116721673167416751676167716781679168016811682168316841685168616871688168916901691169216931694169516961697169816991700170117021703170417051706170717081709171017111712171317141715171617171718171917201721172217231724172517261727172817291730173117321733173417351736173717381739174017411742174317441745174617471748174917501751175217531754175517561757175817591760176117621763176417651766176717681769177017711772177317741775177617771778177917801781178217831784178517861787178817891790179117921793179417951796179717981799180018011802180318041805180618071808180918101811181218131814181518161817181818191820182118221823182418251826182718281829183018311832183318341835183618371838183918401841184218431844184518461847184818491850185118521853185418551856185718581859186018611862186318641865186618671868186918701871187218731874187518761877187818791880188118821883188418851886188718881889189018911892189318941895189618971898189919001901190219031904190519061907190819091910191119121913191419151916191719181919192019211922192319241925192619271928192919301931193219331934193519361937193819391940194119421943194419451946194719481949195019511952195319541955195619571958195919601961196219631964196519661967196819691970197119721973197419751976197719781979198019811982198319841985198619871988198919901991199219931994199519961997199819992000200120022003200420052006200720082009201020112012201320142015201620172018201920202021202220232024202520262027202820292030203120322033203420352036203720382039204020412042204320442045204620472048204920502051205220532054205520562057205820592060206120622063206420652066206720682069207020712072207320742075207620772078207920802081208220832084208520862087208820892090209120922093209420952096209720982099210021012102210321042105210621072108210921102111211221132114211521162117211821192120212121222123212421252126212721282129213021312132213321342135213621372138213921402141214221432144214521462147214821492150215121522153215421552156215721582159216021612162216321642165216621672168216921702171217221732174217521762177217821792180218121822183218421852186218721882189219021912192219321942195219621972198219922002201220222032204220522062207220822092210221122122213221422152216221722182219222022212222222322242225222622272228222922302231223222332234223522362237223822392240224122422243224422452246224722482249225022512252225322542255225622572258225922602261226222632264226522662267226822692270227122722273227422752276227722782279228022812282228322842285228622872288228922902291229222932294229522962297229822992300230123022303230423052306230723082309231023112312231323142315231623172318231923202321232223232324232523262327232823292330233123322333233423352336233723382339234023412342234323442345234623472348234923502351235223532354235523562357235823592360236123622363236423652366236723682369237023712372237323742375237623772378237923802381238223832384238523862387238823892390239123922393239423952396239723982399240024012402240324042405240624072408240924102411241224132414241524162417241824192420242124222423242424252426242724282429243024312432243324342435243624372438243924402441244224432444244524462447
  1. /*
  2. * Copyright (c) 2023 Qualcomm Innovation Center, Inc. All rights reserved.
  3. *
  4. * Permission to use, copy, modify, and/or distribute this software for any
  5. * purpose with or without fee is hereby granted, provided that the above
  6. * copyright notice and this permission notice appear in all copies.
  7. *
  8. * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
  9. * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
  10. * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
  11. * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
  12. * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
  13. * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
  14. * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
  15. */
  16. #ifndef _RX_REO_QUEUE_EXT_H_
  17. #define _RX_REO_QUEUE_EXT_H_
  18. #if !defined(__ASSEMBLER__)
  19. #endif
  20. #include "rx_mpdu_link_ptr.h"
  21. #include "uniform_descriptor_header.h"
  22. #define NUM_OF_DWORDS_RX_REO_QUEUE_EXT 32
  23. struct rx_reo_queue_ext {
  24. #ifndef WIFI_BIT_ORDER_BIG_ENDIAN
  25. struct uniform_descriptor_header descriptor_header;
  26. uint32_t reserved_1a : 32; // [31:0]
  27. struct rx_mpdu_link_ptr mpdu_link_pointer_0;
  28. struct rx_mpdu_link_ptr mpdu_link_pointer_1;
  29. struct rx_mpdu_link_ptr mpdu_link_pointer_2;
  30. struct rx_mpdu_link_ptr mpdu_link_pointer_3;
  31. struct rx_mpdu_link_ptr mpdu_link_pointer_4;
  32. struct rx_mpdu_link_ptr mpdu_link_pointer_5;
  33. struct rx_mpdu_link_ptr mpdu_link_pointer_6;
  34. struct rx_mpdu_link_ptr mpdu_link_pointer_7;
  35. struct rx_mpdu_link_ptr mpdu_link_pointer_8;
  36. struct rx_mpdu_link_ptr mpdu_link_pointer_9;
  37. struct rx_mpdu_link_ptr mpdu_link_pointer_10;
  38. struct rx_mpdu_link_ptr mpdu_link_pointer_11;
  39. struct rx_mpdu_link_ptr mpdu_link_pointer_12;
  40. struct rx_mpdu_link_ptr mpdu_link_pointer_13;
  41. struct rx_mpdu_link_ptr mpdu_link_pointer_14;
  42. #else
  43. struct uniform_descriptor_header descriptor_header;
  44. uint32_t reserved_1a : 32; // [31:0]
  45. struct rx_mpdu_link_ptr mpdu_link_pointer_0;
  46. struct rx_mpdu_link_ptr mpdu_link_pointer_1;
  47. struct rx_mpdu_link_ptr mpdu_link_pointer_2;
  48. struct rx_mpdu_link_ptr mpdu_link_pointer_3;
  49. struct rx_mpdu_link_ptr mpdu_link_pointer_4;
  50. struct rx_mpdu_link_ptr mpdu_link_pointer_5;
  51. struct rx_mpdu_link_ptr mpdu_link_pointer_6;
  52. struct rx_mpdu_link_ptr mpdu_link_pointer_7;
  53. struct rx_mpdu_link_ptr mpdu_link_pointer_8;
  54. struct rx_mpdu_link_ptr mpdu_link_pointer_9;
  55. struct rx_mpdu_link_ptr mpdu_link_pointer_10;
  56. struct rx_mpdu_link_ptr mpdu_link_pointer_11;
  57. struct rx_mpdu_link_ptr mpdu_link_pointer_12;
  58. struct rx_mpdu_link_ptr mpdu_link_pointer_13;
  59. struct rx_mpdu_link_ptr mpdu_link_pointer_14;
  60. #endif
  61. };
  62. /* Description DESCRIPTOR_HEADER
  63. Details about which module owns this struct.
  64. Note that sub field "Buffer_type" shall be set to "Receive_REO_queue_ext_descriptor"
  65. */
  66. /* Description OWNER
  67. Consumer: In DEBUG mode: WBM, TQM, TXDMA, RXDMA, REO
  68. Producer: In DEBUG mode: WBM, TQM, TXDMA, RXDMA, REO
  69. The owner of this data structure:
  70. <enum 0 WBM_owned> Buffer Manager currently owns this data
  71. structure.
  72. <enum 1 SW_OR_FW_owned> Software of FW currently owns this
  73. data structure.
  74. <enum 2 TQM_owned> Transmit Queue Manager currently owns
  75. this data structure.
  76. <enum 3 RXDMA_owned> Receive DMA currently owns this data
  77. structure.
  78. <enum 4 REO_owned> Reorder currently owns this data structure.
  79. <enum 5 SWITCH_owned> SWITCH currently owns this data structure.
  80. <legal 0-5>
  81. */
  82. #define RX_REO_QUEUE_EXT_DESCRIPTOR_HEADER_OWNER_OFFSET 0x00000000
  83. #define RX_REO_QUEUE_EXT_DESCRIPTOR_HEADER_OWNER_LSB 0
  84. #define RX_REO_QUEUE_EXT_DESCRIPTOR_HEADER_OWNER_MSB 3
  85. #define RX_REO_QUEUE_EXT_DESCRIPTOR_HEADER_OWNER_MASK 0x0000000f
  86. /* Description BUFFER_TYPE
  87. Consumer: In DEBUG mode: WBM, TQM, TXDMA, RXDMA, REO
  88. Producer: In DEBUG mode: WBM, TQM, TXDMA, RXDMA, REO
  89. Field describing what contents format is of this descriptor
  90. <enum 0 Transmit_MSDU_Link_descriptor>
  91. <enum 1 Transmit_MPDU_Link_descriptor>
  92. <enum 2 Transmit_MPDU_Queue_head_descriptor>
  93. <enum 3 Transmit_MPDU_Queue_ext_descriptor>
  94. <enum 4 Transmit_flow_descriptor>
  95. <enum 5 Transmit_buffer> NOT TO BE USED:
  96. <enum 6 Receive_MSDU_Link_descriptor>
  97. <enum 7 Receive_MPDU_Link_descriptor>
  98. <enum 8 Receive_REO_queue_descriptor>
  99. <enum 9 Receive_REO_queue_1k_descriptor>
  100. <enum 10 Receive_REO_queue_ext_descriptor>
  101. <enum 11 Receive_buffer>
  102. <enum 12 Idle_link_list_entry>
  103. <legal 0-12>
  104. */
  105. #define RX_REO_QUEUE_EXT_DESCRIPTOR_HEADER_BUFFER_TYPE_OFFSET 0x00000000
  106. #define RX_REO_QUEUE_EXT_DESCRIPTOR_HEADER_BUFFER_TYPE_LSB 4
  107. #define RX_REO_QUEUE_EXT_DESCRIPTOR_HEADER_BUFFER_TYPE_MSB 7
  108. #define RX_REO_QUEUE_EXT_DESCRIPTOR_HEADER_BUFFER_TYPE_MASK 0x000000f0
  109. /* Description TX_MPDU_QUEUE_NUMBER
  110. Consumer: TQM/Debug
  111. Producer: SW (in 'TX_MPDU_QUEUE_HEAD')/TQM (elsewhere)
  112. Field only valid if Buffer_type is any of Transmit_MPDU_*_descriptor
  113. Indicates the MPDU queue ID to which this MPDU descriptor
  114. belongs
  115. Used for tracking and debugging
  116. <legal all>
  117. */
  118. #define RX_REO_QUEUE_EXT_DESCRIPTOR_HEADER_TX_MPDU_QUEUE_NUMBER_OFFSET 0x00000000
  119. #define RX_REO_QUEUE_EXT_DESCRIPTOR_HEADER_TX_MPDU_QUEUE_NUMBER_LSB 8
  120. #define RX_REO_QUEUE_EXT_DESCRIPTOR_HEADER_TX_MPDU_QUEUE_NUMBER_MSB 27
  121. #define RX_REO_QUEUE_EXT_DESCRIPTOR_HEADER_TX_MPDU_QUEUE_NUMBER_MASK 0x0fffff00
  122. /* Description RESERVED_0A
  123. <legal 0>
  124. */
  125. #define RX_REO_QUEUE_EXT_DESCRIPTOR_HEADER_RESERVED_0A_OFFSET 0x00000000
  126. #define RX_REO_QUEUE_EXT_DESCRIPTOR_HEADER_RESERVED_0A_LSB 28
  127. #define RX_REO_QUEUE_EXT_DESCRIPTOR_HEADER_RESERVED_0A_MSB 31
  128. #define RX_REO_QUEUE_EXT_DESCRIPTOR_HEADER_RESERVED_0A_MASK 0xf0000000
  129. /* Description RESERVED_1A
  130. <legal 0>
  131. */
  132. #define RX_REO_QUEUE_EXT_RESERVED_1A_OFFSET 0x00000004
  133. #define RX_REO_QUEUE_EXT_RESERVED_1A_LSB 0
  134. #define RX_REO_QUEUE_EXT_RESERVED_1A_MSB 31
  135. #define RX_REO_QUEUE_EXT_RESERVED_1A_MASK 0xffffffff
  136. /* Description MPDU_LINK_POINTER_0
  137. Consumer: REO
  138. Producer: REO
  139. Pointer to the next MPDU_link descriptor in the MPDU queue
  140. */
  141. /* Description MPDU_LINK_DESC_ADDR_INFO
  142. Details of the physical address of an MPDU link descriptor
  143. */
  144. /* Description BUFFER_ADDR_31_0
  145. Address (lower 32 bits) of the MSDU buffer OR MSDU_EXTENSION
  146. descriptor OR Link Descriptor
  147. In case of 'NULL' pointer, this field is set to 0
  148. <legal all>
  149. */
  150. #define RX_REO_QUEUE_EXT_MPDU_LINK_POINTER_0_MPDU_LINK_DESC_ADDR_INFO_BUFFER_ADDR_31_0_OFFSET 0x00000008
  151. #define RX_REO_QUEUE_EXT_MPDU_LINK_POINTER_0_MPDU_LINK_DESC_ADDR_INFO_BUFFER_ADDR_31_0_LSB 0
  152. #define RX_REO_QUEUE_EXT_MPDU_LINK_POINTER_0_MPDU_LINK_DESC_ADDR_INFO_BUFFER_ADDR_31_0_MSB 31
  153. #define RX_REO_QUEUE_EXT_MPDU_LINK_POINTER_0_MPDU_LINK_DESC_ADDR_INFO_BUFFER_ADDR_31_0_MASK 0xffffffff
  154. /* Description BUFFER_ADDR_39_32
  155. Address (upper 8 bits) of the MSDU buffer OR MSDU_EXTENSION
  156. descriptor OR Link Descriptor
  157. In case of 'NULL' pointer, this field is set to 0
  158. <legal all>
  159. */
  160. #define RX_REO_QUEUE_EXT_MPDU_LINK_POINTER_0_MPDU_LINK_DESC_ADDR_INFO_BUFFER_ADDR_39_32_OFFSET 0x0000000c
  161. #define RX_REO_QUEUE_EXT_MPDU_LINK_POINTER_0_MPDU_LINK_DESC_ADDR_INFO_BUFFER_ADDR_39_32_LSB 0
  162. #define RX_REO_QUEUE_EXT_MPDU_LINK_POINTER_0_MPDU_LINK_DESC_ADDR_INFO_BUFFER_ADDR_39_32_MSB 7
  163. #define RX_REO_QUEUE_EXT_MPDU_LINK_POINTER_0_MPDU_LINK_DESC_ADDR_INFO_BUFFER_ADDR_39_32_MASK 0x000000ff
  164. /* Description RETURN_BUFFER_MANAGER
  165. Consumer: WBM
  166. Producer: SW/FW
  167. In case of 'NULL' pointer, this field is set to 0
  168. Indicates to which buffer manager the buffer OR MSDU_EXTENSION
  169. descriptor OR link descriptor that is being pointed to
  170. shall be returned after the frame has been processed. It
  171. is used by WBM for routing purposes.
  172. <enum 0 WBM_IDLE_BUF_LIST> This buffer shall be returned
  173. to the WMB buffer idle list
  174. <enum 1 WBM_CHIP0_IDLE_DESC_LIST> This buffer shall be returned
  175. to the WBM idle link descriptor idle list, where the chip
  176. 0 WBM is chosen in case of a multi-chip config
  177. <enum 2 WBM_CHIP1_IDLE_DESC_LIST> This buffer shall be returned
  178. to the chip 1 WBM idle link descriptor idle list
  179. <enum 3 WBM_CHIP2_IDLE_DESC_LIST> This buffer shall be returned
  180. to the chip 2 WBM idle link descriptor idle list
  181. <enum 12 WBM_CHIP3_IDLE_DESC_LIST> This buffer shall be
  182. returned to chip 3 WBM idle link descriptor idle list
  183. <enum 4 FW_BM> This buffer shall be returned to the FW
  184. <enum 5 SW0_BM> This buffer shall be returned to the SW,
  185. ring 0
  186. <enum 6 SW1_BM> This buffer shall be returned to the SW,
  187. ring 1
  188. <enum 7 SW2_BM> This buffer shall be returned to the SW,
  189. ring 2
  190. <enum 8 SW3_BM> This buffer shall be returned to the SW,
  191. ring 3
  192. <enum 9 SW4_BM> This buffer shall be returned to the SW,
  193. ring 4
  194. <enum 10 SW5_BM> This buffer shall be returned to the SW,
  195. ring 5
  196. <enum 11 SW6_BM> This buffer shall be returned to the SW,
  197. ring 6
  198. <legal 0-12>
  199. */
  200. #define RX_REO_QUEUE_EXT_MPDU_LINK_POINTER_0_MPDU_LINK_DESC_ADDR_INFO_RETURN_BUFFER_MANAGER_OFFSET 0x0000000c
  201. #define RX_REO_QUEUE_EXT_MPDU_LINK_POINTER_0_MPDU_LINK_DESC_ADDR_INFO_RETURN_BUFFER_MANAGER_LSB 8
  202. #define RX_REO_QUEUE_EXT_MPDU_LINK_POINTER_0_MPDU_LINK_DESC_ADDR_INFO_RETURN_BUFFER_MANAGER_MSB 11
  203. #define RX_REO_QUEUE_EXT_MPDU_LINK_POINTER_0_MPDU_LINK_DESC_ADDR_INFO_RETURN_BUFFER_MANAGER_MASK 0x00000f00
  204. /* Description SW_BUFFER_COOKIE
  205. Cookie field exclusively used by SW.
  206. In case of 'NULL' pointer, this field is set to 0
  207. HW ignores the contents, accept that it passes the programmed
  208. value on to other descriptors together with the physical
  209. address
  210. Field can be used by SW to for example associate the buffers
  211. physical address with the virtual address
  212. The bit definitions as used by SW are within SW HLD specification
  213. NOTE1:
  214. The three most significant bits can have a special meaning
  215. in case this struct is embedded in a TX_MPDU_DETAILS STRUCT,
  216. and field transmit_bw_restriction is set
  217. In case of NON punctured transmission:
  218. Sw_buffer_cookie[19:17] = 3'b000: 20 MHz TX only
  219. Sw_buffer_cookie[19:17] = 3'b001: 40 MHz TX only
  220. Sw_buffer_cookie[19:17] = 3'b010: 80 MHz TX only
  221. Sw_buffer_cookie[19:17] = 3'b011: 160 MHz TX only
  222. Sw_buffer_cookie[19:17] = 3'b101: 240 MHz TX only
  223. Sw_buffer_cookie[19:17] = 3'b100: 320 MHz TX only
  224. Sw_buffer_cookie[19:18] = 2'b11: reserved
  225. In case of punctured transmission:
  226. Sw_buffer_cookie[19:16] = 4'b0000: pattern 0 only
  227. Sw_buffer_cookie[19:16] = 4'b0001: pattern 1 only
  228. Sw_buffer_cookie[19:16] = 4'b0010: pattern 2 only
  229. Sw_buffer_cookie[19:16] = 4'b0011: pattern 3 only
  230. Sw_buffer_cookie[19:16] = 4'b0100: pattern 4 only
  231. Sw_buffer_cookie[19:16] = 4'b0101: pattern 5 only
  232. Sw_buffer_cookie[19:16] = 4'b0110: pattern 6 only
  233. Sw_buffer_cookie[19:16] = 4'b0111: pattern 7 only
  234. Sw_buffer_cookie[19:16] = 4'b1000: pattern 8 only
  235. Sw_buffer_cookie[19:16] = 4'b1001: pattern 9 only
  236. Sw_buffer_cookie[19:16] = 4'b1010: pattern 10 only
  237. Sw_buffer_cookie[19:16] = 4'b1011: pattern 11 only
  238. Sw_buffer_cookie[19:18] = 2'b11: reserved
  239. Note: a punctured transmission is indicated by the presence
  240. of TLV TX_PUNCTURE_SETUP embedded in the scheduler TLV
  241. <legal all>
  242. */
  243. #define RX_REO_QUEUE_EXT_MPDU_LINK_POINTER_0_MPDU_LINK_DESC_ADDR_INFO_SW_BUFFER_COOKIE_OFFSET 0x0000000c
  244. #define RX_REO_QUEUE_EXT_MPDU_LINK_POINTER_0_MPDU_LINK_DESC_ADDR_INFO_SW_BUFFER_COOKIE_LSB 12
  245. #define RX_REO_QUEUE_EXT_MPDU_LINK_POINTER_0_MPDU_LINK_DESC_ADDR_INFO_SW_BUFFER_COOKIE_MSB 31
  246. #define RX_REO_QUEUE_EXT_MPDU_LINK_POINTER_0_MPDU_LINK_DESC_ADDR_INFO_SW_BUFFER_COOKIE_MASK 0xfffff000
  247. /* Description MPDU_LINK_POINTER_1
  248. Consumer: REO
  249. Producer: REO
  250. Pointer to the next MPDU_link descriptor in the MPDU queue
  251. */
  252. /* Description MPDU_LINK_DESC_ADDR_INFO
  253. Details of the physical address of an MPDU link descriptor
  254. */
  255. /* Description BUFFER_ADDR_31_0
  256. Address (lower 32 bits) of the MSDU buffer OR MSDU_EXTENSION
  257. descriptor OR Link Descriptor
  258. In case of 'NULL' pointer, this field is set to 0
  259. <legal all>
  260. */
  261. #define RX_REO_QUEUE_EXT_MPDU_LINK_POINTER_1_MPDU_LINK_DESC_ADDR_INFO_BUFFER_ADDR_31_0_OFFSET 0x00000010
  262. #define RX_REO_QUEUE_EXT_MPDU_LINK_POINTER_1_MPDU_LINK_DESC_ADDR_INFO_BUFFER_ADDR_31_0_LSB 0
  263. #define RX_REO_QUEUE_EXT_MPDU_LINK_POINTER_1_MPDU_LINK_DESC_ADDR_INFO_BUFFER_ADDR_31_0_MSB 31
  264. #define RX_REO_QUEUE_EXT_MPDU_LINK_POINTER_1_MPDU_LINK_DESC_ADDR_INFO_BUFFER_ADDR_31_0_MASK 0xffffffff
  265. /* Description BUFFER_ADDR_39_32
  266. Address (upper 8 bits) of the MSDU buffer OR MSDU_EXTENSION
  267. descriptor OR Link Descriptor
  268. In case of 'NULL' pointer, this field is set to 0
  269. <legal all>
  270. */
  271. #define RX_REO_QUEUE_EXT_MPDU_LINK_POINTER_1_MPDU_LINK_DESC_ADDR_INFO_BUFFER_ADDR_39_32_OFFSET 0x00000014
  272. #define RX_REO_QUEUE_EXT_MPDU_LINK_POINTER_1_MPDU_LINK_DESC_ADDR_INFO_BUFFER_ADDR_39_32_LSB 0
  273. #define RX_REO_QUEUE_EXT_MPDU_LINK_POINTER_1_MPDU_LINK_DESC_ADDR_INFO_BUFFER_ADDR_39_32_MSB 7
  274. #define RX_REO_QUEUE_EXT_MPDU_LINK_POINTER_1_MPDU_LINK_DESC_ADDR_INFO_BUFFER_ADDR_39_32_MASK 0x000000ff
  275. /* Description RETURN_BUFFER_MANAGER
  276. Consumer: WBM
  277. Producer: SW/FW
  278. In case of 'NULL' pointer, this field is set to 0
  279. Indicates to which buffer manager the buffer OR MSDU_EXTENSION
  280. descriptor OR link descriptor that is being pointed to
  281. shall be returned after the frame has been processed. It
  282. is used by WBM for routing purposes.
  283. <enum 0 WBM_IDLE_BUF_LIST> This buffer shall be returned
  284. to the WMB buffer idle list
  285. <enum 1 WBM_CHIP0_IDLE_DESC_LIST> This buffer shall be returned
  286. to the WBM idle link descriptor idle list, where the chip
  287. 0 WBM is chosen in case of a multi-chip config
  288. <enum 2 WBM_CHIP1_IDLE_DESC_LIST> This buffer shall be returned
  289. to the chip 1 WBM idle link descriptor idle list
  290. <enum 3 WBM_CHIP2_IDLE_DESC_LIST> This buffer shall be returned
  291. to the chip 2 WBM idle link descriptor idle list
  292. <enum 12 WBM_CHIP3_IDLE_DESC_LIST> This buffer shall be
  293. returned to chip 3 WBM idle link descriptor idle list
  294. <enum 4 FW_BM> This buffer shall be returned to the FW
  295. <enum 5 SW0_BM> This buffer shall be returned to the SW,
  296. ring 0
  297. <enum 6 SW1_BM> This buffer shall be returned to the SW,
  298. ring 1
  299. <enum 7 SW2_BM> This buffer shall be returned to the SW,
  300. ring 2
  301. <enum 8 SW3_BM> This buffer shall be returned to the SW,
  302. ring 3
  303. <enum 9 SW4_BM> This buffer shall be returned to the SW,
  304. ring 4
  305. <enum 10 SW5_BM> This buffer shall be returned to the SW,
  306. ring 5
  307. <enum 11 SW6_BM> This buffer shall be returned to the SW,
  308. ring 6
  309. <legal 0-12>
  310. */
  311. #define RX_REO_QUEUE_EXT_MPDU_LINK_POINTER_1_MPDU_LINK_DESC_ADDR_INFO_RETURN_BUFFER_MANAGER_OFFSET 0x00000014
  312. #define RX_REO_QUEUE_EXT_MPDU_LINK_POINTER_1_MPDU_LINK_DESC_ADDR_INFO_RETURN_BUFFER_MANAGER_LSB 8
  313. #define RX_REO_QUEUE_EXT_MPDU_LINK_POINTER_1_MPDU_LINK_DESC_ADDR_INFO_RETURN_BUFFER_MANAGER_MSB 11
  314. #define RX_REO_QUEUE_EXT_MPDU_LINK_POINTER_1_MPDU_LINK_DESC_ADDR_INFO_RETURN_BUFFER_MANAGER_MASK 0x00000f00
  315. /* Description SW_BUFFER_COOKIE
  316. Cookie field exclusively used by SW.
  317. In case of 'NULL' pointer, this field is set to 0
  318. HW ignores the contents, accept that it passes the programmed
  319. value on to other descriptors together with the physical
  320. address
  321. Field can be used by SW to for example associate the buffers
  322. physical address with the virtual address
  323. The bit definitions as used by SW are within SW HLD specification
  324. NOTE1:
  325. The three most significant bits can have a special meaning
  326. in case this struct is embedded in a TX_MPDU_DETAILS STRUCT,
  327. and field transmit_bw_restriction is set
  328. In case of NON punctured transmission:
  329. Sw_buffer_cookie[19:17] = 3'b000: 20 MHz TX only
  330. Sw_buffer_cookie[19:17] = 3'b001: 40 MHz TX only
  331. Sw_buffer_cookie[19:17] = 3'b010: 80 MHz TX only
  332. Sw_buffer_cookie[19:17] = 3'b011: 160 MHz TX only
  333. Sw_buffer_cookie[19:17] = 3'b101: 240 MHz TX only
  334. Sw_buffer_cookie[19:17] = 3'b100: 320 MHz TX only
  335. Sw_buffer_cookie[19:18] = 2'b11: reserved
  336. In case of punctured transmission:
  337. Sw_buffer_cookie[19:16] = 4'b0000: pattern 0 only
  338. Sw_buffer_cookie[19:16] = 4'b0001: pattern 1 only
  339. Sw_buffer_cookie[19:16] = 4'b0010: pattern 2 only
  340. Sw_buffer_cookie[19:16] = 4'b0011: pattern 3 only
  341. Sw_buffer_cookie[19:16] = 4'b0100: pattern 4 only
  342. Sw_buffer_cookie[19:16] = 4'b0101: pattern 5 only
  343. Sw_buffer_cookie[19:16] = 4'b0110: pattern 6 only
  344. Sw_buffer_cookie[19:16] = 4'b0111: pattern 7 only
  345. Sw_buffer_cookie[19:16] = 4'b1000: pattern 8 only
  346. Sw_buffer_cookie[19:16] = 4'b1001: pattern 9 only
  347. Sw_buffer_cookie[19:16] = 4'b1010: pattern 10 only
  348. Sw_buffer_cookie[19:16] = 4'b1011: pattern 11 only
  349. Sw_buffer_cookie[19:18] = 2'b11: reserved
  350. Note: a punctured transmission is indicated by the presence
  351. of TLV TX_PUNCTURE_SETUP embedded in the scheduler TLV
  352. <legal all>
  353. */
  354. #define RX_REO_QUEUE_EXT_MPDU_LINK_POINTER_1_MPDU_LINK_DESC_ADDR_INFO_SW_BUFFER_COOKIE_OFFSET 0x00000014
  355. #define RX_REO_QUEUE_EXT_MPDU_LINK_POINTER_1_MPDU_LINK_DESC_ADDR_INFO_SW_BUFFER_COOKIE_LSB 12
  356. #define RX_REO_QUEUE_EXT_MPDU_LINK_POINTER_1_MPDU_LINK_DESC_ADDR_INFO_SW_BUFFER_COOKIE_MSB 31
  357. #define RX_REO_QUEUE_EXT_MPDU_LINK_POINTER_1_MPDU_LINK_DESC_ADDR_INFO_SW_BUFFER_COOKIE_MASK 0xfffff000
  358. /* Description MPDU_LINK_POINTER_2
  359. Consumer: REO
  360. Producer: REO
  361. Pointer to the next MPDU_link descriptor in the MPDU queue
  362. */
  363. /* Description MPDU_LINK_DESC_ADDR_INFO
  364. Details of the physical address of an MPDU link descriptor
  365. */
  366. /* Description BUFFER_ADDR_31_0
  367. Address (lower 32 bits) of the MSDU buffer OR MSDU_EXTENSION
  368. descriptor OR Link Descriptor
  369. In case of 'NULL' pointer, this field is set to 0
  370. <legal all>
  371. */
  372. #define RX_REO_QUEUE_EXT_MPDU_LINK_POINTER_2_MPDU_LINK_DESC_ADDR_INFO_BUFFER_ADDR_31_0_OFFSET 0x00000018
  373. #define RX_REO_QUEUE_EXT_MPDU_LINK_POINTER_2_MPDU_LINK_DESC_ADDR_INFO_BUFFER_ADDR_31_0_LSB 0
  374. #define RX_REO_QUEUE_EXT_MPDU_LINK_POINTER_2_MPDU_LINK_DESC_ADDR_INFO_BUFFER_ADDR_31_0_MSB 31
  375. #define RX_REO_QUEUE_EXT_MPDU_LINK_POINTER_2_MPDU_LINK_DESC_ADDR_INFO_BUFFER_ADDR_31_0_MASK 0xffffffff
  376. /* Description BUFFER_ADDR_39_32
  377. Address (upper 8 bits) of the MSDU buffer OR MSDU_EXTENSION
  378. descriptor OR Link Descriptor
  379. In case of 'NULL' pointer, this field is set to 0
  380. <legal all>
  381. */
  382. #define RX_REO_QUEUE_EXT_MPDU_LINK_POINTER_2_MPDU_LINK_DESC_ADDR_INFO_BUFFER_ADDR_39_32_OFFSET 0x0000001c
  383. #define RX_REO_QUEUE_EXT_MPDU_LINK_POINTER_2_MPDU_LINK_DESC_ADDR_INFO_BUFFER_ADDR_39_32_LSB 0
  384. #define RX_REO_QUEUE_EXT_MPDU_LINK_POINTER_2_MPDU_LINK_DESC_ADDR_INFO_BUFFER_ADDR_39_32_MSB 7
  385. #define RX_REO_QUEUE_EXT_MPDU_LINK_POINTER_2_MPDU_LINK_DESC_ADDR_INFO_BUFFER_ADDR_39_32_MASK 0x000000ff
  386. /* Description RETURN_BUFFER_MANAGER
  387. Consumer: WBM
  388. Producer: SW/FW
  389. In case of 'NULL' pointer, this field is set to 0
  390. Indicates to which buffer manager the buffer OR MSDU_EXTENSION
  391. descriptor OR link descriptor that is being pointed to
  392. shall be returned after the frame has been processed. It
  393. is used by WBM for routing purposes.
  394. <enum 0 WBM_IDLE_BUF_LIST> This buffer shall be returned
  395. to the WMB buffer idle list
  396. <enum 1 WBM_CHIP0_IDLE_DESC_LIST> This buffer shall be returned
  397. to the WBM idle link descriptor idle list, where the chip
  398. 0 WBM is chosen in case of a multi-chip config
  399. <enum 2 WBM_CHIP1_IDLE_DESC_LIST> This buffer shall be returned
  400. to the chip 1 WBM idle link descriptor idle list
  401. <enum 3 WBM_CHIP2_IDLE_DESC_LIST> This buffer shall be returned
  402. to the chip 2 WBM idle link descriptor idle list
  403. <enum 12 WBM_CHIP3_IDLE_DESC_LIST> This buffer shall be
  404. returned to chip 3 WBM idle link descriptor idle list
  405. <enum 4 FW_BM> This buffer shall be returned to the FW
  406. <enum 5 SW0_BM> This buffer shall be returned to the SW,
  407. ring 0
  408. <enum 6 SW1_BM> This buffer shall be returned to the SW,
  409. ring 1
  410. <enum 7 SW2_BM> This buffer shall be returned to the SW,
  411. ring 2
  412. <enum 8 SW3_BM> This buffer shall be returned to the SW,
  413. ring 3
  414. <enum 9 SW4_BM> This buffer shall be returned to the SW,
  415. ring 4
  416. <enum 10 SW5_BM> This buffer shall be returned to the SW,
  417. ring 5
  418. <enum 11 SW6_BM> This buffer shall be returned to the SW,
  419. ring 6
  420. <legal 0-12>
  421. */
  422. #define RX_REO_QUEUE_EXT_MPDU_LINK_POINTER_2_MPDU_LINK_DESC_ADDR_INFO_RETURN_BUFFER_MANAGER_OFFSET 0x0000001c
  423. #define RX_REO_QUEUE_EXT_MPDU_LINK_POINTER_2_MPDU_LINK_DESC_ADDR_INFO_RETURN_BUFFER_MANAGER_LSB 8
  424. #define RX_REO_QUEUE_EXT_MPDU_LINK_POINTER_2_MPDU_LINK_DESC_ADDR_INFO_RETURN_BUFFER_MANAGER_MSB 11
  425. #define RX_REO_QUEUE_EXT_MPDU_LINK_POINTER_2_MPDU_LINK_DESC_ADDR_INFO_RETURN_BUFFER_MANAGER_MASK 0x00000f00
  426. /* Description SW_BUFFER_COOKIE
  427. Cookie field exclusively used by SW.
  428. In case of 'NULL' pointer, this field is set to 0
  429. HW ignores the contents, accept that it passes the programmed
  430. value on to other descriptors together with the physical
  431. address
  432. Field can be used by SW to for example associate the buffers
  433. physical address with the virtual address
  434. The bit definitions as used by SW are within SW HLD specification
  435. NOTE1:
  436. The three most significant bits can have a special meaning
  437. in case this struct is embedded in a TX_MPDU_DETAILS STRUCT,
  438. and field transmit_bw_restriction is set
  439. In case of NON punctured transmission:
  440. Sw_buffer_cookie[19:17] = 3'b000: 20 MHz TX only
  441. Sw_buffer_cookie[19:17] = 3'b001: 40 MHz TX only
  442. Sw_buffer_cookie[19:17] = 3'b010: 80 MHz TX only
  443. Sw_buffer_cookie[19:17] = 3'b011: 160 MHz TX only
  444. Sw_buffer_cookie[19:17] = 3'b101: 240 MHz TX only
  445. Sw_buffer_cookie[19:17] = 3'b100: 320 MHz TX only
  446. Sw_buffer_cookie[19:18] = 2'b11: reserved
  447. In case of punctured transmission:
  448. Sw_buffer_cookie[19:16] = 4'b0000: pattern 0 only
  449. Sw_buffer_cookie[19:16] = 4'b0001: pattern 1 only
  450. Sw_buffer_cookie[19:16] = 4'b0010: pattern 2 only
  451. Sw_buffer_cookie[19:16] = 4'b0011: pattern 3 only
  452. Sw_buffer_cookie[19:16] = 4'b0100: pattern 4 only
  453. Sw_buffer_cookie[19:16] = 4'b0101: pattern 5 only
  454. Sw_buffer_cookie[19:16] = 4'b0110: pattern 6 only
  455. Sw_buffer_cookie[19:16] = 4'b0111: pattern 7 only
  456. Sw_buffer_cookie[19:16] = 4'b1000: pattern 8 only
  457. Sw_buffer_cookie[19:16] = 4'b1001: pattern 9 only
  458. Sw_buffer_cookie[19:16] = 4'b1010: pattern 10 only
  459. Sw_buffer_cookie[19:16] = 4'b1011: pattern 11 only
  460. Sw_buffer_cookie[19:18] = 2'b11: reserved
  461. Note: a punctured transmission is indicated by the presence
  462. of TLV TX_PUNCTURE_SETUP embedded in the scheduler TLV
  463. <legal all>
  464. */
  465. #define RX_REO_QUEUE_EXT_MPDU_LINK_POINTER_2_MPDU_LINK_DESC_ADDR_INFO_SW_BUFFER_COOKIE_OFFSET 0x0000001c
  466. #define RX_REO_QUEUE_EXT_MPDU_LINK_POINTER_2_MPDU_LINK_DESC_ADDR_INFO_SW_BUFFER_COOKIE_LSB 12
  467. #define RX_REO_QUEUE_EXT_MPDU_LINK_POINTER_2_MPDU_LINK_DESC_ADDR_INFO_SW_BUFFER_COOKIE_MSB 31
  468. #define RX_REO_QUEUE_EXT_MPDU_LINK_POINTER_2_MPDU_LINK_DESC_ADDR_INFO_SW_BUFFER_COOKIE_MASK 0xfffff000
  469. /* Description MPDU_LINK_POINTER_3
  470. Consumer: REO
  471. Producer: REO
  472. Pointer to the next MPDU_link descriptor in the MPDU queue
  473. */
  474. /* Description MPDU_LINK_DESC_ADDR_INFO
  475. Details of the physical address of an MPDU link descriptor
  476. */
  477. /* Description BUFFER_ADDR_31_0
  478. Address (lower 32 bits) of the MSDU buffer OR MSDU_EXTENSION
  479. descriptor OR Link Descriptor
  480. In case of 'NULL' pointer, this field is set to 0
  481. <legal all>
  482. */
  483. #define RX_REO_QUEUE_EXT_MPDU_LINK_POINTER_3_MPDU_LINK_DESC_ADDR_INFO_BUFFER_ADDR_31_0_OFFSET 0x00000020
  484. #define RX_REO_QUEUE_EXT_MPDU_LINK_POINTER_3_MPDU_LINK_DESC_ADDR_INFO_BUFFER_ADDR_31_0_LSB 0
  485. #define RX_REO_QUEUE_EXT_MPDU_LINK_POINTER_3_MPDU_LINK_DESC_ADDR_INFO_BUFFER_ADDR_31_0_MSB 31
  486. #define RX_REO_QUEUE_EXT_MPDU_LINK_POINTER_3_MPDU_LINK_DESC_ADDR_INFO_BUFFER_ADDR_31_0_MASK 0xffffffff
  487. /* Description BUFFER_ADDR_39_32
  488. Address (upper 8 bits) of the MSDU buffer OR MSDU_EXTENSION
  489. descriptor OR Link Descriptor
  490. In case of 'NULL' pointer, this field is set to 0
  491. <legal all>
  492. */
  493. #define RX_REO_QUEUE_EXT_MPDU_LINK_POINTER_3_MPDU_LINK_DESC_ADDR_INFO_BUFFER_ADDR_39_32_OFFSET 0x00000024
  494. #define RX_REO_QUEUE_EXT_MPDU_LINK_POINTER_3_MPDU_LINK_DESC_ADDR_INFO_BUFFER_ADDR_39_32_LSB 0
  495. #define RX_REO_QUEUE_EXT_MPDU_LINK_POINTER_3_MPDU_LINK_DESC_ADDR_INFO_BUFFER_ADDR_39_32_MSB 7
  496. #define RX_REO_QUEUE_EXT_MPDU_LINK_POINTER_3_MPDU_LINK_DESC_ADDR_INFO_BUFFER_ADDR_39_32_MASK 0x000000ff
  497. /* Description RETURN_BUFFER_MANAGER
  498. Consumer: WBM
  499. Producer: SW/FW
  500. In case of 'NULL' pointer, this field is set to 0
  501. Indicates to which buffer manager the buffer OR MSDU_EXTENSION
  502. descriptor OR link descriptor that is being pointed to
  503. shall be returned after the frame has been processed. It
  504. is used by WBM for routing purposes.
  505. <enum 0 WBM_IDLE_BUF_LIST> This buffer shall be returned
  506. to the WMB buffer idle list
  507. <enum 1 WBM_CHIP0_IDLE_DESC_LIST> This buffer shall be returned
  508. to the WBM idle link descriptor idle list, where the chip
  509. 0 WBM is chosen in case of a multi-chip config
  510. <enum 2 WBM_CHIP1_IDLE_DESC_LIST> This buffer shall be returned
  511. to the chip 1 WBM idle link descriptor idle list
  512. <enum 3 WBM_CHIP2_IDLE_DESC_LIST> This buffer shall be returned
  513. to the chip 2 WBM idle link descriptor idle list
  514. <enum 12 WBM_CHIP3_IDLE_DESC_LIST> This buffer shall be
  515. returned to chip 3 WBM idle link descriptor idle list
  516. <enum 4 FW_BM> This buffer shall be returned to the FW
  517. <enum 5 SW0_BM> This buffer shall be returned to the SW,
  518. ring 0
  519. <enum 6 SW1_BM> This buffer shall be returned to the SW,
  520. ring 1
  521. <enum 7 SW2_BM> This buffer shall be returned to the SW,
  522. ring 2
  523. <enum 8 SW3_BM> This buffer shall be returned to the SW,
  524. ring 3
  525. <enum 9 SW4_BM> This buffer shall be returned to the SW,
  526. ring 4
  527. <enum 10 SW5_BM> This buffer shall be returned to the SW,
  528. ring 5
  529. <enum 11 SW6_BM> This buffer shall be returned to the SW,
  530. ring 6
  531. <legal 0-12>
  532. */
  533. #define RX_REO_QUEUE_EXT_MPDU_LINK_POINTER_3_MPDU_LINK_DESC_ADDR_INFO_RETURN_BUFFER_MANAGER_OFFSET 0x00000024
  534. #define RX_REO_QUEUE_EXT_MPDU_LINK_POINTER_3_MPDU_LINK_DESC_ADDR_INFO_RETURN_BUFFER_MANAGER_LSB 8
  535. #define RX_REO_QUEUE_EXT_MPDU_LINK_POINTER_3_MPDU_LINK_DESC_ADDR_INFO_RETURN_BUFFER_MANAGER_MSB 11
  536. #define RX_REO_QUEUE_EXT_MPDU_LINK_POINTER_3_MPDU_LINK_DESC_ADDR_INFO_RETURN_BUFFER_MANAGER_MASK 0x00000f00
  537. /* Description SW_BUFFER_COOKIE
  538. Cookie field exclusively used by SW.
  539. In case of 'NULL' pointer, this field is set to 0
  540. HW ignores the contents, accept that it passes the programmed
  541. value on to other descriptors together with the physical
  542. address
  543. Field can be used by SW to for example associate the buffers
  544. physical address with the virtual address
  545. The bit definitions as used by SW are within SW HLD specification
  546. NOTE1:
  547. The three most significant bits can have a special meaning
  548. in case this struct is embedded in a TX_MPDU_DETAILS STRUCT,
  549. and field transmit_bw_restriction is set
  550. In case of NON punctured transmission:
  551. Sw_buffer_cookie[19:17] = 3'b000: 20 MHz TX only
  552. Sw_buffer_cookie[19:17] = 3'b001: 40 MHz TX only
  553. Sw_buffer_cookie[19:17] = 3'b010: 80 MHz TX only
  554. Sw_buffer_cookie[19:17] = 3'b011: 160 MHz TX only
  555. Sw_buffer_cookie[19:17] = 3'b101: 240 MHz TX only
  556. Sw_buffer_cookie[19:17] = 3'b100: 320 MHz TX only
  557. Sw_buffer_cookie[19:18] = 2'b11: reserved
  558. In case of punctured transmission:
  559. Sw_buffer_cookie[19:16] = 4'b0000: pattern 0 only
  560. Sw_buffer_cookie[19:16] = 4'b0001: pattern 1 only
  561. Sw_buffer_cookie[19:16] = 4'b0010: pattern 2 only
  562. Sw_buffer_cookie[19:16] = 4'b0011: pattern 3 only
  563. Sw_buffer_cookie[19:16] = 4'b0100: pattern 4 only
  564. Sw_buffer_cookie[19:16] = 4'b0101: pattern 5 only
  565. Sw_buffer_cookie[19:16] = 4'b0110: pattern 6 only
  566. Sw_buffer_cookie[19:16] = 4'b0111: pattern 7 only
  567. Sw_buffer_cookie[19:16] = 4'b1000: pattern 8 only
  568. Sw_buffer_cookie[19:16] = 4'b1001: pattern 9 only
  569. Sw_buffer_cookie[19:16] = 4'b1010: pattern 10 only
  570. Sw_buffer_cookie[19:16] = 4'b1011: pattern 11 only
  571. Sw_buffer_cookie[19:18] = 2'b11: reserved
  572. Note: a punctured transmission is indicated by the presence
  573. of TLV TX_PUNCTURE_SETUP embedded in the scheduler TLV
  574. <legal all>
  575. */
  576. #define RX_REO_QUEUE_EXT_MPDU_LINK_POINTER_3_MPDU_LINK_DESC_ADDR_INFO_SW_BUFFER_COOKIE_OFFSET 0x00000024
  577. #define RX_REO_QUEUE_EXT_MPDU_LINK_POINTER_3_MPDU_LINK_DESC_ADDR_INFO_SW_BUFFER_COOKIE_LSB 12
  578. #define RX_REO_QUEUE_EXT_MPDU_LINK_POINTER_3_MPDU_LINK_DESC_ADDR_INFO_SW_BUFFER_COOKIE_MSB 31
  579. #define RX_REO_QUEUE_EXT_MPDU_LINK_POINTER_3_MPDU_LINK_DESC_ADDR_INFO_SW_BUFFER_COOKIE_MASK 0xfffff000
  580. /* Description MPDU_LINK_POINTER_4
  581. Consumer: REO
  582. Producer: REO
  583. Pointer to the next MPDU_link descriptor in the MPDU queue
  584. */
  585. /* Description MPDU_LINK_DESC_ADDR_INFO
  586. Details of the physical address of an MPDU link descriptor
  587. */
  588. /* Description BUFFER_ADDR_31_0
  589. Address (lower 32 bits) of the MSDU buffer OR MSDU_EXTENSION
  590. descriptor OR Link Descriptor
  591. In case of 'NULL' pointer, this field is set to 0
  592. <legal all>
  593. */
  594. #define RX_REO_QUEUE_EXT_MPDU_LINK_POINTER_4_MPDU_LINK_DESC_ADDR_INFO_BUFFER_ADDR_31_0_OFFSET 0x00000028
  595. #define RX_REO_QUEUE_EXT_MPDU_LINK_POINTER_4_MPDU_LINK_DESC_ADDR_INFO_BUFFER_ADDR_31_0_LSB 0
  596. #define RX_REO_QUEUE_EXT_MPDU_LINK_POINTER_4_MPDU_LINK_DESC_ADDR_INFO_BUFFER_ADDR_31_0_MSB 31
  597. #define RX_REO_QUEUE_EXT_MPDU_LINK_POINTER_4_MPDU_LINK_DESC_ADDR_INFO_BUFFER_ADDR_31_0_MASK 0xffffffff
  598. /* Description BUFFER_ADDR_39_32
  599. Address (upper 8 bits) of the MSDU buffer OR MSDU_EXTENSION
  600. descriptor OR Link Descriptor
  601. In case of 'NULL' pointer, this field is set to 0
  602. <legal all>
  603. */
  604. #define RX_REO_QUEUE_EXT_MPDU_LINK_POINTER_4_MPDU_LINK_DESC_ADDR_INFO_BUFFER_ADDR_39_32_OFFSET 0x0000002c
  605. #define RX_REO_QUEUE_EXT_MPDU_LINK_POINTER_4_MPDU_LINK_DESC_ADDR_INFO_BUFFER_ADDR_39_32_LSB 0
  606. #define RX_REO_QUEUE_EXT_MPDU_LINK_POINTER_4_MPDU_LINK_DESC_ADDR_INFO_BUFFER_ADDR_39_32_MSB 7
  607. #define RX_REO_QUEUE_EXT_MPDU_LINK_POINTER_4_MPDU_LINK_DESC_ADDR_INFO_BUFFER_ADDR_39_32_MASK 0x000000ff
  608. /* Description RETURN_BUFFER_MANAGER
  609. Consumer: WBM
  610. Producer: SW/FW
  611. In case of 'NULL' pointer, this field is set to 0
  612. Indicates to which buffer manager the buffer OR MSDU_EXTENSION
  613. descriptor OR link descriptor that is being pointed to
  614. shall be returned after the frame has been processed. It
  615. is used by WBM for routing purposes.
  616. <enum 0 WBM_IDLE_BUF_LIST> This buffer shall be returned
  617. to the WMB buffer idle list
  618. <enum 1 WBM_CHIP0_IDLE_DESC_LIST> This buffer shall be returned
  619. to the WBM idle link descriptor idle list, where the chip
  620. 0 WBM is chosen in case of a multi-chip config
  621. <enum 2 WBM_CHIP1_IDLE_DESC_LIST> This buffer shall be returned
  622. to the chip 1 WBM idle link descriptor idle list
  623. <enum 3 WBM_CHIP2_IDLE_DESC_LIST> This buffer shall be returned
  624. to the chip 2 WBM idle link descriptor idle list
  625. <enum 12 WBM_CHIP3_IDLE_DESC_LIST> This buffer shall be
  626. returned to chip 3 WBM idle link descriptor idle list
  627. <enum 4 FW_BM> This buffer shall be returned to the FW
  628. <enum 5 SW0_BM> This buffer shall be returned to the SW,
  629. ring 0
  630. <enum 6 SW1_BM> This buffer shall be returned to the SW,
  631. ring 1
  632. <enum 7 SW2_BM> This buffer shall be returned to the SW,
  633. ring 2
  634. <enum 8 SW3_BM> This buffer shall be returned to the SW,
  635. ring 3
  636. <enum 9 SW4_BM> This buffer shall be returned to the SW,
  637. ring 4
  638. <enum 10 SW5_BM> This buffer shall be returned to the SW,
  639. ring 5
  640. <enum 11 SW6_BM> This buffer shall be returned to the SW,
  641. ring 6
  642. <legal 0-12>
  643. */
  644. #define RX_REO_QUEUE_EXT_MPDU_LINK_POINTER_4_MPDU_LINK_DESC_ADDR_INFO_RETURN_BUFFER_MANAGER_OFFSET 0x0000002c
  645. #define RX_REO_QUEUE_EXT_MPDU_LINK_POINTER_4_MPDU_LINK_DESC_ADDR_INFO_RETURN_BUFFER_MANAGER_LSB 8
  646. #define RX_REO_QUEUE_EXT_MPDU_LINK_POINTER_4_MPDU_LINK_DESC_ADDR_INFO_RETURN_BUFFER_MANAGER_MSB 11
  647. #define RX_REO_QUEUE_EXT_MPDU_LINK_POINTER_4_MPDU_LINK_DESC_ADDR_INFO_RETURN_BUFFER_MANAGER_MASK 0x00000f00
  648. /* Description SW_BUFFER_COOKIE
  649. Cookie field exclusively used by SW.
  650. In case of 'NULL' pointer, this field is set to 0
  651. HW ignores the contents, accept that it passes the programmed
  652. value on to other descriptors together with the physical
  653. address
  654. Field can be used by SW to for example associate the buffers
  655. physical address with the virtual address
  656. The bit definitions as used by SW are within SW HLD specification
  657. NOTE1:
  658. The three most significant bits can have a special meaning
  659. in case this struct is embedded in a TX_MPDU_DETAILS STRUCT,
  660. and field transmit_bw_restriction is set
  661. In case of NON punctured transmission:
  662. Sw_buffer_cookie[19:17] = 3'b000: 20 MHz TX only
  663. Sw_buffer_cookie[19:17] = 3'b001: 40 MHz TX only
  664. Sw_buffer_cookie[19:17] = 3'b010: 80 MHz TX only
  665. Sw_buffer_cookie[19:17] = 3'b011: 160 MHz TX only
  666. Sw_buffer_cookie[19:17] = 3'b101: 240 MHz TX only
  667. Sw_buffer_cookie[19:17] = 3'b100: 320 MHz TX only
  668. Sw_buffer_cookie[19:18] = 2'b11: reserved
  669. In case of punctured transmission:
  670. Sw_buffer_cookie[19:16] = 4'b0000: pattern 0 only
  671. Sw_buffer_cookie[19:16] = 4'b0001: pattern 1 only
  672. Sw_buffer_cookie[19:16] = 4'b0010: pattern 2 only
  673. Sw_buffer_cookie[19:16] = 4'b0011: pattern 3 only
  674. Sw_buffer_cookie[19:16] = 4'b0100: pattern 4 only
  675. Sw_buffer_cookie[19:16] = 4'b0101: pattern 5 only
  676. Sw_buffer_cookie[19:16] = 4'b0110: pattern 6 only
  677. Sw_buffer_cookie[19:16] = 4'b0111: pattern 7 only
  678. Sw_buffer_cookie[19:16] = 4'b1000: pattern 8 only
  679. Sw_buffer_cookie[19:16] = 4'b1001: pattern 9 only
  680. Sw_buffer_cookie[19:16] = 4'b1010: pattern 10 only
  681. Sw_buffer_cookie[19:16] = 4'b1011: pattern 11 only
  682. Sw_buffer_cookie[19:18] = 2'b11: reserved
  683. Note: a punctured transmission is indicated by the presence
  684. of TLV TX_PUNCTURE_SETUP embedded in the scheduler TLV
  685. <legal all>
  686. */
  687. #define RX_REO_QUEUE_EXT_MPDU_LINK_POINTER_4_MPDU_LINK_DESC_ADDR_INFO_SW_BUFFER_COOKIE_OFFSET 0x0000002c
  688. #define RX_REO_QUEUE_EXT_MPDU_LINK_POINTER_4_MPDU_LINK_DESC_ADDR_INFO_SW_BUFFER_COOKIE_LSB 12
  689. #define RX_REO_QUEUE_EXT_MPDU_LINK_POINTER_4_MPDU_LINK_DESC_ADDR_INFO_SW_BUFFER_COOKIE_MSB 31
  690. #define RX_REO_QUEUE_EXT_MPDU_LINK_POINTER_4_MPDU_LINK_DESC_ADDR_INFO_SW_BUFFER_COOKIE_MASK 0xfffff000
  691. /* Description MPDU_LINK_POINTER_5
  692. Consumer: REO
  693. Producer: REO
  694. Pointer to the next MPDU_link descriptor in the MPDU queue
  695. */
  696. /* Description MPDU_LINK_DESC_ADDR_INFO
  697. Details of the physical address of an MPDU link descriptor
  698. */
  699. /* Description BUFFER_ADDR_31_0
  700. Address (lower 32 bits) of the MSDU buffer OR MSDU_EXTENSION
  701. descriptor OR Link Descriptor
  702. In case of 'NULL' pointer, this field is set to 0
  703. <legal all>
  704. */
  705. #define RX_REO_QUEUE_EXT_MPDU_LINK_POINTER_5_MPDU_LINK_DESC_ADDR_INFO_BUFFER_ADDR_31_0_OFFSET 0x00000030
  706. #define RX_REO_QUEUE_EXT_MPDU_LINK_POINTER_5_MPDU_LINK_DESC_ADDR_INFO_BUFFER_ADDR_31_0_LSB 0
  707. #define RX_REO_QUEUE_EXT_MPDU_LINK_POINTER_5_MPDU_LINK_DESC_ADDR_INFO_BUFFER_ADDR_31_0_MSB 31
  708. #define RX_REO_QUEUE_EXT_MPDU_LINK_POINTER_5_MPDU_LINK_DESC_ADDR_INFO_BUFFER_ADDR_31_0_MASK 0xffffffff
  709. /* Description BUFFER_ADDR_39_32
  710. Address (upper 8 bits) of the MSDU buffer OR MSDU_EXTENSION
  711. descriptor OR Link Descriptor
  712. In case of 'NULL' pointer, this field is set to 0
  713. <legal all>
  714. */
  715. #define RX_REO_QUEUE_EXT_MPDU_LINK_POINTER_5_MPDU_LINK_DESC_ADDR_INFO_BUFFER_ADDR_39_32_OFFSET 0x00000034
  716. #define RX_REO_QUEUE_EXT_MPDU_LINK_POINTER_5_MPDU_LINK_DESC_ADDR_INFO_BUFFER_ADDR_39_32_LSB 0
  717. #define RX_REO_QUEUE_EXT_MPDU_LINK_POINTER_5_MPDU_LINK_DESC_ADDR_INFO_BUFFER_ADDR_39_32_MSB 7
  718. #define RX_REO_QUEUE_EXT_MPDU_LINK_POINTER_5_MPDU_LINK_DESC_ADDR_INFO_BUFFER_ADDR_39_32_MASK 0x000000ff
  719. /* Description RETURN_BUFFER_MANAGER
  720. Consumer: WBM
  721. Producer: SW/FW
  722. In case of 'NULL' pointer, this field is set to 0
  723. Indicates to which buffer manager the buffer OR MSDU_EXTENSION
  724. descriptor OR link descriptor that is being pointed to
  725. shall be returned after the frame has been processed. It
  726. is used by WBM for routing purposes.
  727. <enum 0 WBM_IDLE_BUF_LIST> This buffer shall be returned
  728. to the WMB buffer idle list
  729. <enum 1 WBM_CHIP0_IDLE_DESC_LIST> This buffer shall be returned
  730. to the WBM idle link descriptor idle list, where the chip
  731. 0 WBM is chosen in case of a multi-chip config
  732. <enum 2 WBM_CHIP1_IDLE_DESC_LIST> This buffer shall be returned
  733. to the chip 1 WBM idle link descriptor idle list
  734. <enum 3 WBM_CHIP2_IDLE_DESC_LIST> This buffer shall be returned
  735. to the chip 2 WBM idle link descriptor idle list
  736. <enum 12 WBM_CHIP3_IDLE_DESC_LIST> This buffer shall be
  737. returned to chip 3 WBM idle link descriptor idle list
  738. <enum 4 FW_BM> This buffer shall be returned to the FW
  739. <enum 5 SW0_BM> This buffer shall be returned to the SW,
  740. ring 0
  741. <enum 6 SW1_BM> This buffer shall be returned to the SW,
  742. ring 1
  743. <enum 7 SW2_BM> This buffer shall be returned to the SW,
  744. ring 2
  745. <enum 8 SW3_BM> This buffer shall be returned to the SW,
  746. ring 3
  747. <enum 9 SW4_BM> This buffer shall be returned to the SW,
  748. ring 4
  749. <enum 10 SW5_BM> This buffer shall be returned to the SW,
  750. ring 5
  751. <enum 11 SW6_BM> This buffer shall be returned to the SW,
  752. ring 6
  753. <legal 0-12>
  754. */
  755. #define RX_REO_QUEUE_EXT_MPDU_LINK_POINTER_5_MPDU_LINK_DESC_ADDR_INFO_RETURN_BUFFER_MANAGER_OFFSET 0x00000034
  756. #define RX_REO_QUEUE_EXT_MPDU_LINK_POINTER_5_MPDU_LINK_DESC_ADDR_INFO_RETURN_BUFFER_MANAGER_LSB 8
  757. #define RX_REO_QUEUE_EXT_MPDU_LINK_POINTER_5_MPDU_LINK_DESC_ADDR_INFO_RETURN_BUFFER_MANAGER_MSB 11
  758. #define RX_REO_QUEUE_EXT_MPDU_LINK_POINTER_5_MPDU_LINK_DESC_ADDR_INFO_RETURN_BUFFER_MANAGER_MASK 0x00000f00
  759. /* Description SW_BUFFER_COOKIE
  760. Cookie field exclusively used by SW.
  761. In case of 'NULL' pointer, this field is set to 0
  762. HW ignores the contents, accept that it passes the programmed
  763. value on to other descriptors together with the physical
  764. address
  765. Field can be used by SW to for example associate the buffers
  766. physical address with the virtual address
  767. The bit definitions as used by SW are within SW HLD specification
  768. NOTE1:
  769. The three most significant bits can have a special meaning
  770. in case this struct is embedded in a TX_MPDU_DETAILS STRUCT,
  771. and field transmit_bw_restriction is set
  772. In case of NON punctured transmission:
  773. Sw_buffer_cookie[19:17] = 3'b000: 20 MHz TX only
  774. Sw_buffer_cookie[19:17] = 3'b001: 40 MHz TX only
  775. Sw_buffer_cookie[19:17] = 3'b010: 80 MHz TX only
  776. Sw_buffer_cookie[19:17] = 3'b011: 160 MHz TX only
  777. Sw_buffer_cookie[19:17] = 3'b101: 240 MHz TX only
  778. Sw_buffer_cookie[19:17] = 3'b100: 320 MHz TX only
  779. Sw_buffer_cookie[19:18] = 2'b11: reserved
  780. In case of punctured transmission:
  781. Sw_buffer_cookie[19:16] = 4'b0000: pattern 0 only
  782. Sw_buffer_cookie[19:16] = 4'b0001: pattern 1 only
  783. Sw_buffer_cookie[19:16] = 4'b0010: pattern 2 only
  784. Sw_buffer_cookie[19:16] = 4'b0011: pattern 3 only
  785. Sw_buffer_cookie[19:16] = 4'b0100: pattern 4 only
  786. Sw_buffer_cookie[19:16] = 4'b0101: pattern 5 only
  787. Sw_buffer_cookie[19:16] = 4'b0110: pattern 6 only
  788. Sw_buffer_cookie[19:16] = 4'b0111: pattern 7 only
  789. Sw_buffer_cookie[19:16] = 4'b1000: pattern 8 only
  790. Sw_buffer_cookie[19:16] = 4'b1001: pattern 9 only
  791. Sw_buffer_cookie[19:16] = 4'b1010: pattern 10 only
  792. Sw_buffer_cookie[19:16] = 4'b1011: pattern 11 only
  793. Sw_buffer_cookie[19:18] = 2'b11: reserved
  794. Note: a punctured transmission is indicated by the presence
  795. of TLV TX_PUNCTURE_SETUP embedded in the scheduler TLV
  796. <legal all>
  797. */
  798. #define RX_REO_QUEUE_EXT_MPDU_LINK_POINTER_5_MPDU_LINK_DESC_ADDR_INFO_SW_BUFFER_COOKIE_OFFSET 0x00000034
  799. #define RX_REO_QUEUE_EXT_MPDU_LINK_POINTER_5_MPDU_LINK_DESC_ADDR_INFO_SW_BUFFER_COOKIE_LSB 12
  800. #define RX_REO_QUEUE_EXT_MPDU_LINK_POINTER_5_MPDU_LINK_DESC_ADDR_INFO_SW_BUFFER_COOKIE_MSB 31
  801. #define RX_REO_QUEUE_EXT_MPDU_LINK_POINTER_5_MPDU_LINK_DESC_ADDR_INFO_SW_BUFFER_COOKIE_MASK 0xfffff000
  802. /* Description MPDU_LINK_POINTER_6
  803. Consumer: REO
  804. Producer: REO
  805. Pointer to the next MPDU_link descriptor in the MPDU queue
  806. */
  807. /* Description MPDU_LINK_DESC_ADDR_INFO
  808. Details of the physical address of an MPDU link descriptor
  809. */
  810. /* Description BUFFER_ADDR_31_0
  811. Address (lower 32 bits) of the MSDU buffer OR MSDU_EXTENSION
  812. descriptor OR Link Descriptor
  813. In case of 'NULL' pointer, this field is set to 0
  814. <legal all>
  815. */
  816. #define RX_REO_QUEUE_EXT_MPDU_LINK_POINTER_6_MPDU_LINK_DESC_ADDR_INFO_BUFFER_ADDR_31_0_OFFSET 0x00000038
  817. #define RX_REO_QUEUE_EXT_MPDU_LINK_POINTER_6_MPDU_LINK_DESC_ADDR_INFO_BUFFER_ADDR_31_0_LSB 0
  818. #define RX_REO_QUEUE_EXT_MPDU_LINK_POINTER_6_MPDU_LINK_DESC_ADDR_INFO_BUFFER_ADDR_31_0_MSB 31
  819. #define RX_REO_QUEUE_EXT_MPDU_LINK_POINTER_6_MPDU_LINK_DESC_ADDR_INFO_BUFFER_ADDR_31_0_MASK 0xffffffff
  820. /* Description BUFFER_ADDR_39_32
  821. Address (upper 8 bits) of the MSDU buffer OR MSDU_EXTENSION
  822. descriptor OR Link Descriptor
  823. In case of 'NULL' pointer, this field is set to 0
  824. <legal all>
  825. */
  826. #define RX_REO_QUEUE_EXT_MPDU_LINK_POINTER_6_MPDU_LINK_DESC_ADDR_INFO_BUFFER_ADDR_39_32_OFFSET 0x0000003c
  827. #define RX_REO_QUEUE_EXT_MPDU_LINK_POINTER_6_MPDU_LINK_DESC_ADDR_INFO_BUFFER_ADDR_39_32_LSB 0
  828. #define RX_REO_QUEUE_EXT_MPDU_LINK_POINTER_6_MPDU_LINK_DESC_ADDR_INFO_BUFFER_ADDR_39_32_MSB 7
  829. #define RX_REO_QUEUE_EXT_MPDU_LINK_POINTER_6_MPDU_LINK_DESC_ADDR_INFO_BUFFER_ADDR_39_32_MASK 0x000000ff
  830. /* Description RETURN_BUFFER_MANAGER
  831. Consumer: WBM
  832. Producer: SW/FW
  833. In case of 'NULL' pointer, this field is set to 0
  834. Indicates to which buffer manager the buffer OR MSDU_EXTENSION
  835. descriptor OR link descriptor that is being pointed to
  836. shall be returned after the frame has been processed. It
  837. is used by WBM for routing purposes.
  838. <enum 0 WBM_IDLE_BUF_LIST> This buffer shall be returned
  839. to the WMB buffer idle list
  840. <enum 1 WBM_CHIP0_IDLE_DESC_LIST> This buffer shall be returned
  841. to the WBM idle link descriptor idle list, where the chip
  842. 0 WBM is chosen in case of a multi-chip config
  843. <enum 2 WBM_CHIP1_IDLE_DESC_LIST> This buffer shall be returned
  844. to the chip 1 WBM idle link descriptor idle list
  845. <enum 3 WBM_CHIP2_IDLE_DESC_LIST> This buffer shall be returned
  846. to the chip 2 WBM idle link descriptor idle list
  847. <enum 12 WBM_CHIP3_IDLE_DESC_LIST> This buffer shall be
  848. returned to chip 3 WBM idle link descriptor idle list
  849. <enum 4 FW_BM> This buffer shall be returned to the FW
  850. <enum 5 SW0_BM> This buffer shall be returned to the SW,
  851. ring 0
  852. <enum 6 SW1_BM> This buffer shall be returned to the SW,
  853. ring 1
  854. <enum 7 SW2_BM> This buffer shall be returned to the SW,
  855. ring 2
  856. <enum 8 SW3_BM> This buffer shall be returned to the SW,
  857. ring 3
  858. <enum 9 SW4_BM> This buffer shall be returned to the SW,
  859. ring 4
  860. <enum 10 SW5_BM> This buffer shall be returned to the SW,
  861. ring 5
  862. <enum 11 SW6_BM> This buffer shall be returned to the SW,
  863. ring 6
  864. <legal 0-12>
  865. */
  866. #define RX_REO_QUEUE_EXT_MPDU_LINK_POINTER_6_MPDU_LINK_DESC_ADDR_INFO_RETURN_BUFFER_MANAGER_OFFSET 0x0000003c
  867. #define RX_REO_QUEUE_EXT_MPDU_LINK_POINTER_6_MPDU_LINK_DESC_ADDR_INFO_RETURN_BUFFER_MANAGER_LSB 8
  868. #define RX_REO_QUEUE_EXT_MPDU_LINK_POINTER_6_MPDU_LINK_DESC_ADDR_INFO_RETURN_BUFFER_MANAGER_MSB 11
  869. #define RX_REO_QUEUE_EXT_MPDU_LINK_POINTER_6_MPDU_LINK_DESC_ADDR_INFO_RETURN_BUFFER_MANAGER_MASK 0x00000f00
  870. /* Description SW_BUFFER_COOKIE
  871. Cookie field exclusively used by SW.
  872. In case of 'NULL' pointer, this field is set to 0
  873. HW ignores the contents, accept that it passes the programmed
  874. value on to other descriptors together with the physical
  875. address
  876. Field can be used by SW to for example associate the buffers
  877. physical address with the virtual address
  878. The bit definitions as used by SW are within SW HLD specification
  879. NOTE1:
  880. The three most significant bits can have a special meaning
  881. in case this struct is embedded in a TX_MPDU_DETAILS STRUCT,
  882. and field transmit_bw_restriction is set
  883. In case of NON punctured transmission:
  884. Sw_buffer_cookie[19:17] = 3'b000: 20 MHz TX only
  885. Sw_buffer_cookie[19:17] = 3'b001: 40 MHz TX only
  886. Sw_buffer_cookie[19:17] = 3'b010: 80 MHz TX only
  887. Sw_buffer_cookie[19:17] = 3'b011: 160 MHz TX only
  888. Sw_buffer_cookie[19:17] = 3'b101: 240 MHz TX only
  889. Sw_buffer_cookie[19:17] = 3'b100: 320 MHz TX only
  890. Sw_buffer_cookie[19:18] = 2'b11: reserved
  891. In case of punctured transmission:
  892. Sw_buffer_cookie[19:16] = 4'b0000: pattern 0 only
  893. Sw_buffer_cookie[19:16] = 4'b0001: pattern 1 only
  894. Sw_buffer_cookie[19:16] = 4'b0010: pattern 2 only
  895. Sw_buffer_cookie[19:16] = 4'b0011: pattern 3 only
  896. Sw_buffer_cookie[19:16] = 4'b0100: pattern 4 only
  897. Sw_buffer_cookie[19:16] = 4'b0101: pattern 5 only
  898. Sw_buffer_cookie[19:16] = 4'b0110: pattern 6 only
  899. Sw_buffer_cookie[19:16] = 4'b0111: pattern 7 only
  900. Sw_buffer_cookie[19:16] = 4'b1000: pattern 8 only
  901. Sw_buffer_cookie[19:16] = 4'b1001: pattern 9 only
  902. Sw_buffer_cookie[19:16] = 4'b1010: pattern 10 only
  903. Sw_buffer_cookie[19:16] = 4'b1011: pattern 11 only
  904. Sw_buffer_cookie[19:18] = 2'b11: reserved
  905. Note: a punctured transmission is indicated by the presence
  906. of TLV TX_PUNCTURE_SETUP embedded in the scheduler TLV
  907. <legal all>
  908. */
  909. #define RX_REO_QUEUE_EXT_MPDU_LINK_POINTER_6_MPDU_LINK_DESC_ADDR_INFO_SW_BUFFER_COOKIE_OFFSET 0x0000003c
  910. #define RX_REO_QUEUE_EXT_MPDU_LINK_POINTER_6_MPDU_LINK_DESC_ADDR_INFO_SW_BUFFER_COOKIE_LSB 12
  911. #define RX_REO_QUEUE_EXT_MPDU_LINK_POINTER_6_MPDU_LINK_DESC_ADDR_INFO_SW_BUFFER_COOKIE_MSB 31
  912. #define RX_REO_QUEUE_EXT_MPDU_LINK_POINTER_6_MPDU_LINK_DESC_ADDR_INFO_SW_BUFFER_COOKIE_MASK 0xfffff000
  913. /* Description MPDU_LINK_POINTER_7
  914. Consumer: REO
  915. Producer: REO
  916. Pointer to the next MPDU_link descriptor in the MPDU queue
  917. */
  918. /* Description MPDU_LINK_DESC_ADDR_INFO
  919. Details of the physical address of an MPDU link descriptor
  920. */
  921. /* Description BUFFER_ADDR_31_0
  922. Address (lower 32 bits) of the MSDU buffer OR MSDU_EXTENSION
  923. descriptor OR Link Descriptor
  924. In case of 'NULL' pointer, this field is set to 0
  925. <legal all>
  926. */
  927. #define RX_REO_QUEUE_EXT_MPDU_LINK_POINTER_7_MPDU_LINK_DESC_ADDR_INFO_BUFFER_ADDR_31_0_OFFSET 0x00000040
  928. #define RX_REO_QUEUE_EXT_MPDU_LINK_POINTER_7_MPDU_LINK_DESC_ADDR_INFO_BUFFER_ADDR_31_0_LSB 0
  929. #define RX_REO_QUEUE_EXT_MPDU_LINK_POINTER_7_MPDU_LINK_DESC_ADDR_INFO_BUFFER_ADDR_31_0_MSB 31
  930. #define RX_REO_QUEUE_EXT_MPDU_LINK_POINTER_7_MPDU_LINK_DESC_ADDR_INFO_BUFFER_ADDR_31_0_MASK 0xffffffff
  931. /* Description BUFFER_ADDR_39_32
  932. Address (upper 8 bits) of the MSDU buffer OR MSDU_EXTENSION
  933. descriptor OR Link Descriptor
  934. In case of 'NULL' pointer, this field is set to 0
  935. <legal all>
  936. */
  937. #define RX_REO_QUEUE_EXT_MPDU_LINK_POINTER_7_MPDU_LINK_DESC_ADDR_INFO_BUFFER_ADDR_39_32_OFFSET 0x00000044
  938. #define RX_REO_QUEUE_EXT_MPDU_LINK_POINTER_7_MPDU_LINK_DESC_ADDR_INFO_BUFFER_ADDR_39_32_LSB 0
  939. #define RX_REO_QUEUE_EXT_MPDU_LINK_POINTER_7_MPDU_LINK_DESC_ADDR_INFO_BUFFER_ADDR_39_32_MSB 7
  940. #define RX_REO_QUEUE_EXT_MPDU_LINK_POINTER_7_MPDU_LINK_DESC_ADDR_INFO_BUFFER_ADDR_39_32_MASK 0x000000ff
  941. /* Description RETURN_BUFFER_MANAGER
  942. Consumer: WBM
  943. Producer: SW/FW
  944. In case of 'NULL' pointer, this field is set to 0
  945. Indicates to which buffer manager the buffer OR MSDU_EXTENSION
  946. descriptor OR link descriptor that is being pointed to
  947. shall be returned after the frame has been processed. It
  948. is used by WBM for routing purposes.
  949. <enum 0 WBM_IDLE_BUF_LIST> This buffer shall be returned
  950. to the WMB buffer idle list
  951. <enum 1 WBM_CHIP0_IDLE_DESC_LIST> This buffer shall be returned
  952. to the WBM idle link descriptor idle list, where the chip
  953. 0 WBM is chosen in case of a multi-chip config
  954. <enum 2 WBM_CHIP1_IDLE_DESC_LIST> This buffer shall be returned
  955. to the chip 1 WBM idle link descriptor idle list
  956. <enum 3 WBM_CHIP2_IDLE_DESC_LIST> This buffer shall be returned
  957. to the chip 2 WBM idle link descriptor idle list
  958. <enum 12 WBM_CHIP3_IDLE_DESC_LIST> This buffer shall be
  959. returned to chip 3 WBM idle link descriptor idle list
  960. <enum 4 FW_BM> This buffer shall be returned to the FW
  961. <enum 5 SW0_BM> This buffer shall be returned to the SW,
  962. ring 0
  963. <enum 6 SW1_BM> This buffer shall be returned to the SW,
  964. ring 1
  965. <enum 7 SW2_BM> This buffer shall be returned to the SW,
  966. ring 2
  967. <enum 8 SW3_BM> This buffer shall be returned to the SW,
  968. ring 3
  969. <enum 9 SW4_BM> This buffer shall be returned to the SW,
  970. ring 4
  971. <enum 10 SW5_BM> This buffer shall be returned to the SW,
  972. ring 5
  973. <enum 11 SW6_BM> This buffer shall be returned to the SW,
  974. ring 6
  975. <legal 0-12>
  976. */
  977. #define RX_REO_QUEUE_EXT_MPDU_LINK_POINTER_7_MPDU_LINK_DESC_ADDR_INFO_RETURN_BUFFER_MANAGER_OFFSET 0x00000044
  978. #define RX_REO_QUEUE_EXT_MPDU_LINK_POINTER_7_MPDU_LINK_DESC_ADDR_INFO_RETURN_BUFFER_MANAGER_LSB 8
  979. #define RX_REO_QUEUE_EXT_MPDU_LINK_POINTER_7_MPDU_LINK_DESC_ADDR_INFO_RETURN_BUFFER_MANAGER_MSB 11
  980. #define RX_REO_QUEUE_EXT_MPDU_LINK_POINTER_7_MPDU_LINK_DESC_ADDR_INFO_RETURN_BUFFER_MANAGER_MASK 0x00000f00
  981. /* Description SW_BUFFER_COOKIE
  982. Cookie field exclusively used by SW.
  983. In case of 'NULL' pointer, this field is set to 0
  984. HW ignores the contents, accept that it passes the programmed
  985. value on to other descriptors together with the physical
  986. address
  987. Field can be used by SW to for example associate the buffers
  988. physical address with the virtual address
  989. The bit definitions as used by SW are within SW HLD specification
  990. NOTE1:
  991. The three most significant bits can have a special meaning
  992. in case this struct is embedded in a TX_MPDU_DETAILS STRUCT,
  993. and field transmit_bw_restriction is set
  994. In case of NON punctured transmission:
  995. Sw_buffer_cookie[19:17] = 3'b000: 20 MHz TX only
  996. Sw_buffer_cookie[19:17] = 3'b001: 40 MHz TX only
  997. Sw_buffer_cookie[19:17] = 3'b010: 80 MHz TX only
  998. Sw_buffer_cookie[19:17] = 3'b011: 160 MHz TX only
  999. Sw_buffer_cookie[19:17] = 3'b101: 240 MHz TX only
  1000. Sw_buffer_cookie[19:17] = 3'b100: 320 MHz TX only
  1001. Sw_buffer_cookie[19:18] = 2'b11: reserved
  1002. In case of punctured transmission:
  1003. Sw_buffer_cookie[19:16] = 4'b0000: pattern 0 only
  1004. Sw_buffer_cookie[19:16] = 4'b0001: pattern 1 only
  1005. Sw_buffer_cookie[19:16] = 4'b0010: pattern 2 only
  1006. Sw_buffer_cookie[19:16] = 4'b0011: pattern 3 only
  1007. Sw_buffer_cookie[19:16] = 4'b0100: pattern 4 only
  1008. Sw_buffer_cookie[19:16] = 4'b0101: pattern 5 only
  1009. Sw_buffer_cookie[19:16] = 4'b0110: pattern 6 only
  1010. Sw_buffer_cookie[19:16] = 4'b0111: pattern 7 only
  1011. Sw_buffer_cookie[19:16] = 4'b1000: pattern 8 only
  1012. Sw_buffer_cookie[19:16] = 4'b1001: pattern 9 only
  1013. Sw_buffer_cookie[19:16] = 4'b1010: pattern 10 only
  1014. Sw_buffer_cookie[19:16] = 4'b1011: pattern 11 only
  1015. Sw_buffer_cookie[19:18] = 2'b11: reserved
  1016. Note: a punctured transmission is indicated by the presence
  1017. of TLV TX_PUNCTURE_SETUP embedded in the scheduler TLV
  1018. <legal all>
  1019. */
  1020. #define RX_REO_QUEUE_EXT_MPDU_LINK_POINTER_7_MPDU_LINK_DESC_ADDR_INFO_SW_BUFFER_COOKIE_OFFSET 0x00000044
  1021. #define RX_REO_QUEUE_EXT_MPDU_LINK_POINTER_7_MPDU_LINK_DESC_ADDR_INFO_SW_BUFFER_COOKIE_LSB 12
  1022. #define RX_REO_QUEUE_EXT_MPDU_LINK_POINTER_7_MPDU_LINK_DESC_ADDR_INFO_SW_BUFFER_COOKIE_MSB 31
  1023. #define RX_REO_QUEUE_EXT_MPDU_LINK_POINTER_7_MPDU_LINK_DESC_ADDR_INFO_SW_BUFFER_COOKIE_MASK 0xfffff000
  1024. /* Description MPDU_LINK_POINTER_8
  1025. Consumer: REO
  1026. Producer: REO
  1027. Pointer to the next MPDU_link descriptor in the MPDU queue
  1028. */
  1029. /* Description MPDU_LINK_DESC_ADDR_INFO
  1030. Details of the physical address of an MPDU link descriptor
  1031. */
  1032. /* Description BUFFER_ADDR_31_0
  1033. Address (lower 32 bits) of the MSDU buffer OR MSDU_EXTENSION
  1034. descriptor OR Link Descriptor
  1035. In case of 'NULL' pointer, this field is set to 0
  1036. <legal all>
  1037. */
  1038. #define RX_REO_QUEUE_EXT_MPDU_LINK_POINTER_8_MPDU_LINK_DESC_ADDR_INFO_BUFFER_ADDR_31_0_OFFSET 0x00000048
  1039. #define RX_REO_QUEUE_EXT_MPDU_LINK_POINTER_8_MPDU_LINK_DESC_ADDR_INFO_BUFFER_ADDR_31_0_LSB 0
  1040. #define RX_REO_QUEUE_EXT_MPDU_LINK_POINTER_8_MPDU_LINK_DESC_ADDR_INFO_BUFFER_ADDR_31_0_MSB 31
  1041. #define RX_REO_QUEUE_EXT_MPDU_LINK_POINTER_8_MPDU_LINK_DESC_ADDR_INFO_BUFFER_ADDR_31_0_MASK 0xffffffff
  1042. /* Description BUFFER_ADDR_39_32
  1043. Address (upper 8 bits) of the MSDU buffer OR MSDU_EXTENSION
  1044. descriptor OR Link Descriptor
  1045. In case of 'NULL' pointer, this field is set to 0
  1046. <legal all>
  1047. */
  1048. #define RX_REO_QUEUE_EXT_MPDU_LINK_POINTER_8_MPDU_LINK_DESC_ADDR_INFO_BUFFER_ADDR_39_32_OFFSET 0x0000004c
  1049. #define RX_REO_QUEUE_EXT_MPDU_LINK_POINTER_8_MPDU_LINK_DESC_ADDR_INFO_BUFFER_ADDR_39_32_LSB 0
  1050. #define RX_REO_QUEUE_EXT_MPDU_LINK_POINTER_8_MPDU_LINK_DESC_ADDR_INFO_BUFFER_ADDR_39_32_MSB 7
  1051. #define RX_REO_QUEUE_EXT_MPDU_LINK_POINTER_8_MPDU_LINK_DESC_ADDR_INFO_BUFFER_ADDR_39_32_MASK 0x000000ff
  1052. /* Description RETURN_BUFFER_MANAGER
  1053. Consumer: WBM
  1054. Producer: SW/FW
  1055. In case of 'NULL' pointer, this field is set to 0
  1056. Indicates to which buffer manager the buffer OR MSDU_EXTENSION
  1057. descriptor OR link descriptor that is being pointed to
  1058. shall be returned after the frame has been processed. It
  1059. is used by WBM for routing purposes.
  1060. <enum 0 WBM_IDLE_BUF_LIST> This buffer shall be returned
  1061. to the WMB buffer idle list
  1062. <enum 1 WBM_CHIP0_IDLE_DESC_LIST> This buffer shall be returned
  1063. to the WBM idle link descriptor idle list, where the chip
  1064. 0 WBM is chosen in case of a multi-chip config
  1065. <enum 2 WBM_CHIP1_IDLE_DESC_LIST> This buffer shall be returned
  1066. to the chip 1 WBM idle link descriptor idle list
  1067. <enum 3 WBM_CHIP2_IDLE_DESC_LIST> This buffer shall be returned
  1068. to the chip 2 WBM idle link descriptor idle list
  1069. <enum 12 WBM_CHIP3_IDLE_DESC_LIST> This buffer shall be
  1070. returned to chip 3 WBM idle link descriptor idle list
  1071. <enum 4 FW_BM> This buffer shall be returned to the FW
  1072. <enum 5 SW0_BM> This buffer shall be returned to the SW,
  1073. ring 0
  1074. <enum 6 SW1_BM> This buffer shall be returned to the SW,
  1075. ring 1
  1076. <enum 7 SW2_BM> This buffer shall be returned to the SW,
  1077. ring 2
  1078. <enum 8 SW3_BM> This buffer shall be returned to the SW,
  1079. ring 3
  1080. <enum 9 SW4_BM> This buffer shall be returned to the SW,
  1081. ring 4
  1082. <enum 10 SW5_BM> This buffer shall be returned to the SW,
  1083. ring 5
  1084. <enum 11 SW6_BM> This buffer shall be returned to the SW,
  1085. ring 6
  1086. <legal 0-12>
  1087. */
  1088. #define RX_REO_QUEUE_EXT_MPDU_LINK_POINTER_8_MPDU_LINK_DESC_ADDR_INFO_RETURN_BUFFER_MANAGER_OFFSET 0x0000004c
  1089. #define RX_REO_QUEUE_EXT_MPDU_LINK_POINTER_8_MPDU_LINK_DESC_ADDR_INFO_RETURN_BUFFER_MANAGER_LSB 8
  1090. #define RX_REO_QUEUE_EXT_MPDU_LINK_POINTER_8_MPDU_LINK_DESC_ADDR_INFO_RETURN_BUFFER_MANAGER_MSB 11
  1091. #define RX_REO_QUEUE_EXT_MPDU_LINK_POINTER_8_MPDU_LINK_DESC_ADDR_INFO_RETURN_BUFFER_MANAGER_MASK 0x00000f00
  1092. /* Description SW_BUFFER_COOKIE
  1093. Cookie field exclusively used by SW.
  1094. In case of 'NULL' pointer, this field is set to 0
  1095. HW ignores the contents, accept that it passes the programmed
  1096. value on to other descriptors together with the physical
  1097. address
  1098. Field can be used by SW to for example associate the buffers
  1099. physical address with the virtual address
  1100. The bit definitions as used by SW are within SW HLD specification
  1101. NOTE1:
  1102. The three most significant bits can have a special meaning
  1103. in case this struct is embedded in a TX_MPDU_DETAILS STRUCT,
  1104. and field transmit_bw_restriction is set
  1105. In case of NON punctured transmission:
  1106. Sw_buffer_cookie[19:17] = 3'b000: 20 MHz TX only
  1107. Sw_buffer_cookie[19:17] = 3'b001: 40 MHz TX only
  1108. Sw_buffer_cookie[19:17] = 3'b010: 80 MHz TX only
  1109. Sw_buffer_cookie[19:17] = 3'b011: 160 MHz TX only
  1110. Sw_buffer_cookie[19:17] = 3'b101: 240 MHz TX only
  1111. Sw_buffer_cookie[19:17] = 3'b100: 320 MHz TX only
  1112. Sw_buffer_cookie[19:18] = 2'b11: reserved
  1113. In case of punctured transmission:
  1114. Sw_buffer_cookie[19:16] = 4'b0000: pattern 0 only
  1115. Sw_buffer_cookie[19:16] = 4'b0001: pattern 1 only
  1116. Sw_buffer_cookie[19:16] = 4'b0010: pattern 2 only
  1117. Sw_buffer_cookie[19:16] = 4'b0011: pattern 3 only
  1118. Sw_buffer_cookie[19:16] = 4'b0100: pattern 4 only
  1119. Sw_buffer_cookie[19:16] = 4'b0101: pattern 5 only
  1120. Sw_buffer_cookie[19:16] = 4'b0110: pattern 6 only
  1121. Sw_buffer_cookie[19:16] = 4'b0111: pattern 7 only
  1122. Sw_buffer_cookie[19:16] = 4'b1000: pattern 8 only
  1123. Sw_buffer_cookie[19:16] = 4'b1001: pattern 9 only
  1124. Sw_buffer_cookie[19:16] = 4'b1010: pattern 10 only
  1125. Sw_buffer_cookie[19:16] = 4'b1011: pattern 11 only
  1126. Sw_buffer_cookie[19:18] = 2'b11: reserved
  1127. Note: a punctured transmission is indicated by the presence
  1128. of TLV TX_PUNCTURE_SETUP embedded in the scheduler TLV
  1129. <legal all>
  1130. */
  1131. #define RX_REO_QUEUE_EXT_MPDU_LINK_POINTER_8_MPDU_LINK_DESC_ADDR_INFO_SW_BUFFER_COOKIE_OFFSET 0x0000004c
  1132. #define RX_REO_QUEUE_EXT_MPDU_LINK_POINTER_8_MPDU_LINK_DESC_ADDR_INFO_SW_BUFFER_COOKIE_LSB 12
  1133. #define RX_REO_QUEUE_EXT_MPDU_LINK_POINTER_8_MPDU_LINK_DESC_ADDR_INFO_SW_BUFFER_COOKIE_MSB 31
  1134. #define RX_REO_QUEUE_EXT_MPDU_LINK_POINTER_8_MPDU_LINK_DESC_ADDR_INFO_SW_BUFFER_COOKIE_MASK 0xfffff000
  1135. /* Description MPDU_LINK_POINTER_9
  1136. Consumer: REO
  1137. Producer: REO
  1138. Pointer to the next MPDU_link descriptor in the MPDU queue
  1139. */
  1140. /* Description MPDU_LINK_DESC_ADDR_INFO
  1141. Details of the physical address of an MPDU link descriptor
  1142. */
  1143. /* Description BUFFER_ADDR_31_0
  1144. Address (lower 32 bits) of the MSDU buffer OR MSDU_EXTENSION
  1145. descriptor OR Link Descriptor
  1146. In case of 'NULL' pointer, this field is set to 0
  1147. <legal all>
  1148. */
  1149. #define RX_REO_QUEUE_EXT_MPDU_LINK_POINTER_9_MPDU_LINK_DESC_ADDR_INFO_BUFFER_ADDR_31_0_OFFSET 0x00000050
  1150. #define RX_REO_QUEUE_EXT_MPDU_LINK_POINTER_9_MPDU_LINK_DESC_ADDR_INFO_BUFFER_ADDR_31_0_LSB 0
  1151. #define RX_REO_QUEUE_EXT_MPDU_LINK_POINTER_9_MPDU_LINK_DESC_ADDR_INFO_BUFFER_ADDR_31_0_MSB 31
  1152. #define RX_REO_QUEUE_EXT_MPDU_LINK_POINTER_9_MPDU_LINK_DESC_ADDR_INFO_BUFFER_ADDR_31_0_MASK 0xffffffff
  1153. /* Description BUFFER_ADDR_39_32
  1154. Address (upper 8 bits) of the MSDU buffer OR MSDU_EXTENSION
  1155. descriptor OR Link Descriptor
  1156. In case of 'NULL' pointer, this field is set to 0
  1157. <legal all>
  1158. */
  1159. #define RX_REO_QUEUE_EXT_MPDU_LINK_POINTER_9_MPDU_LINK_DESC_ADDR_INFO_BUFFER_ADDR_39_32_OFFSET 0x00000054
  1160. #define RX_REO_QUEUE_EXT_MPDU_LINK_POINTER_9_MPDU_LINK_DESC_ADDR_INFO_BUFFER_ADDR_39_32_LSB 0
  1161. #define RX_REO_QUEUE_EXT_MPDU_LINK_POINTER_9_MPDU_LINK_DESC_ADDR_INFO_BUFFER_ADDR_39_32_MSB 7
  1162. #define RX_REO_QUEUE_EXT_MPDU_LINK_POINTER_9_MPDU_LINK_DESC_ADDR_INFO_BUFFER_ADDR_39_32_MASK 0x000000ff
  1163. /* Description RETURN_BUFFER_MANAGER
  1164. Consumer: WBM
  1165. Producer: SW/FW
  1166. In case of 'NULL' pointer, this field is set to 0
  1167. Indicates to which buffer manager the buffer OR MSDU_EXTENSION
  1168. descriptor OR link descriptor that is being pointed to
  1169. shall be returned after the frame has been processed. It
  1170. is used by WBM for routing purposes.
  1171. <enum 0 WBM_IDLE_BUF_LIST> This buffer shall be returned
  1172. to the WMB buffer idle list
  1173. <enum 1 WBM_CHIP0_IDLE_DESC_LIST> This buffer shall be returned
  1174. to the WBM idle link descriptor idle list, where the chip
  1175. 0 WBM is chosen in case of a multi-chip config
  1176. <enum 2 WBM_CHIP1_IDLE_DESC_LIST> This buffer shall be returned
  1177. to the chip 1 WBM idle link descriptor idle list
  1178. <enum 3 WBM_CHIP2_IDLE_DESC_LIST> This buffer shall be returned
  1179. to the chip 2 WBM idle link descriptor idle list
  1180. <enum 12 WBM_CHIP3_IDLE_DESC_LIST> This buffer shall be
  1181. returned to chip 3 WBM idle link descriptor idle list
  1182. <enum 4 FW_BM> This buffer shall be returned to the FW
  1183. <enum 5 SW0_BM> This buffer shall be returned to the SW,
  1184. ring 0
  1185. <enum 6 SW1_BM> This buffer shall be returned to the SW,
  1186. ring 1
  1187. <enum 7 SW2_BM> This buffer shall be returned to the SW,
  1188. ring 2
  1189. <enum 8 SW3_BM> This buffer shall be returned to the SW,
  1190. ring 3
  1191. <enum 9 SW4_BM> This buffer shall be returned to the SW,
  1192. ring 4
  1193. <enum 10 SW5_BM> This buffer shall be returned to the SW,
  1194. ring 5
  1195. <enum 11 SW6_BM> This buffer shall be returned to the SW,
  1196. ring 6
  1197. <legal 0-12>
  1198. */
  1199. #define RX_REO_QUEUE_EXT_MPDU_LINK_POINTER_9_MPDU_LINK_DESC_ADDR_INFO_RETURN_BUFFER_MANAGER_OFFSET 0x00000054
  1200. #define RX_REO_QUEUE_EXT_MPDU_LINK_POINTER_9_MPDU_LINK_DESC_ADDR_INFO_RETURN_BUFFER_MANAGER_LSB 8
  1201. #define RX_REO_QUEUE_EXT_MPDU_LINK_POINTER_9_MPDU_LINK_DESC_ADDR_INFO_RETURN_BUFFER_MANAGER_MSB 11
  1202. #define RX_REO_QUEUE_EXT_MPDU_LINK_POINTER_9_MPDU_LINK_DESC_ADDR_INFO_RETURN_BUFFER_MANAGER_MASK 0x00000f00
  1203. /* Description SW_BUFFER_COOKIE
  1204. Cookie field exclusively used by SW.
  1205. In case of 'NULL' pointer, this field is set to 0
  1206. HW ignores the contents, accept that it passes the programmed
  1207. value on to other descriptors together with the physical
  1208. address
  1209. Field can be used by SW to for example associate the buffers
  1210. physical address with the virtual address
  1211. The bit definitions as used by SW are within SW HLD specification
  1212. NOTE1:
  1213. The three most significant bits can have a special meaning
  1214. in case this struct is embedded in a TX_MPDU_DETAILS STRUCT,
  1215. and field transmit_bw_restriction is set
  1216. In case of NON punctured transmission:
  1217. Sw_buffer_cookie[19:17] = 3'b000: 20 MHz TX only
  1218. Sw_buffer_cookie[19:17] = 3'b001: 40 MHz TX only
  1219. Sw_buffer_cookie[19:17] = 3'b010: 80 MHz TX only
  1220. Sw_buffer_cookie[19:17] = 3'b011: 160 MHz TX only
  1221. Sw_buffer_cookie[19:17] = 3'b101: 240 MHz TX only
  1222. Sw_buffer_cookie[19:17] = 3'b100: 320 MHz TX only
  1223. Sw_buffer_cookie[19:18] = 2'b11: reserved
  1224. In case of punctured transmission:
  1225. Sw_buffer_cookie[19:16] = 4'b0000: pattern 0 only
  1226. Sw_buffer_cookie[19:16] = 4'b0001: pattern 1 only
  1227. Sw_buffer_cookie[19:16] = 4'b0010: pattern 2 only
  1228. Sw_buffer_cookie[19:16] = 4'b0011: pattern 3 only
  1229. Sw_buffer_cookie[19:16] = 4'b0100: pattern 4 only
  1230. Sw_buffer_cookie[19:16] = 4'b0101: pattern 5 only
  1231. Sw_buffer_cookie[19:16] = 4'b0110: pattern 6 only
  1232. Sw_buffer_cookie[19:16] = 4'b0111: pattern 7 only
  1233. Sw_buffer_cookie[19:16] = 4'b1000: pattern 8 only
  1234. Sw_buffer_cookie[19:16] = 4'b1001: pattern 9 only
  1235. Sw_buffer_cookie[19:16] = 4'b1010: pattern 10 only
  1236. Sw_buffer_cookie[19:16] = 4'b1011: pattern 11 only
  1237. Sw_buffer_cookie[19:18] = 2'b11: reserved
  1238. Note: a punctured transmission is indicated by the presence
  1239. of TLV TX_PUNCTURE_SETUP embedded in the scheduler TLV
  1240. <legal all>
  1241. */
  1242. #define RX_REO_QUEUE_EXT_MPDU_LINK_POINTER_9_MPDU_LINK_DESC_ADDR_INFO_SW_BUFFER_COOKIE_OFFSET 0x00000054
  1243. #define RX_REO_QUEUE_EXT_MPDU_LINK_POINTER_9_MPDU_LINK_DESC_ADDR_INFO_SW_BUFFER_COOKIE_LSB 12
  1244. #define RX_REO_QUEUE_EXT_MPDU_LINK_POINTER_9_MPDU_LINK_DESC_ADDR_INFO_SW_BUFFER_COOKIE_MSB 31
  1245. #define RX_REO_QUEUE_EXT_MPDU_LINK_POINTER_9_MPDU_LINK_DESC_ADDR_INFO_SW_BUFFER_COOKIE_MASK 0xfffff000
  1246. /* Description MPDU_LINK_POINTER_10
  1247. Consumer: REO
  1248. Producer: REO
  1249. Pointer to the next MPDU_link descriptor in the MPDU queue
  1250. */
  1251. /* Description MPDU_LINK_DESC_ADDR_INFO
  1252. Details of the physical address of an MPDU link descriptor
  1253. */
  1254. /* Description BUFFER_ADDR_31_0
  1255. Address (lower 32 bits) of the MSDU buffer OR MSDU_EXTENSION
  1256. descriptor OR Link Descriptor
  1257. In case of 'NULL' pointer, this field is set to 0
  1258. <legal all>
  1259. */
  1260. #define RX_REO_QUEUE_EXT_MPDU_LINK_POINTER_10_MPDU_LINK_DESC_ADDR_INFO_BUFFER_ADDR_31_0_OFFSET 0x00000058
  1261. #define RX_REO_QUEUE_EXT_MPDU_LINK_POINTER_10_MPDU_LINK_DESC_ADDR_INFO_BUFFER_ADDR_31_0_LSB 0
  1262. #define RX_REO_QUEUE_EXT_MPDU_LINK_POINTER_10_MPDU_LINK_DESC_ADDR_INFO_BUFFER_ADDR_31_0_MSB 31
  1263. #define RX_REO_QUEUE_EXT_MPDU_LINK_POINTER_10_MPDU_LINK_DESC_ADDR_INFO_BUFFER_ADDR_31_0_MASK 0xffffffff
  1264. /* Description BUFFER_ADDR_39_32
  1265. Address (upper 8 bits) of the MSDU buffer OR MSDU_EXTENSION
  1266. descriptor OR Link Descriptor
  1267. In case of 'NULL' pointer, this field is set to 0
  1268. <legal all>
  1269. */
  1270. #define RX_REO_QUEUE_EXT_MPDU_LINK_POINTER_10_MPDU_LINK_DESC_ADDR_INFO_BUFFER_ADDR_39_32_OFFSET 0x0000005c
  1271. #define RX_REO_QUEUE_EXT_MPDU_LINK_POINTER_10_MPDU_LINK_DESC_ADDR_INFO_BUFFER_ADDR_39_32_LSB 0
  1272. #define RX_REO_QUEUE_EXT_MPDU_LINK_POINTER_10_MPDU_LINK_DESC_ADDR_INFO_BUFFER_ADDR_39_32_MSB 7
  1273. #define RX_REO_QUEUE_EXT_MPDU_LINK_POINTER_10_MPDU_LINK_DESC_ADDR_INFO_BUFFER_ADDR_39_32_MASK 0x000000ff
  1274. /* Description RETURN_BUFFER_MANAGER
  1275. Consumer: WBM
  1276. Producer: SW/FW
  1277. In case of 'NULL' pointer, this field is set to 0
  1278. Indicates to which buffer manager the buffer OR MSDU_EXTENSION
  1279. descriptor OR link descriptor that is being pointed to
  1280. shall be returned after the frame has been processed. It
  1281. is used by WBM for routing purposes.
  1282. <enum 0 WBM_IDLE_BUF_LIST> This buffer shall be returned
  1283. to the WMB buffer idle list
  1284. <enum 1 WBM_CHIP0_IDLE_DESC_LIST> This buffer shall be returned
  1285. to the WBM idle link descriptor idle list, where the chip
  1286. 0 WBM is chosen in case of a multi-chip config
  1287. <enum 2 WBM_CHIP1_IDLE_DESC_LIST> This buffer shall be returned
  1288. to the chip 1 WBM idle link descriptor idle list
  1289. <enum 3 WBM_CHIP2_IDLE_DESC_LIST> This buffer shall be returned
  1290. to the chip 2 WBM idle link descriptor idle list
  1291. <enum 12 WBM_CHIP3_IDLE_DESC_LIST> This buffer shall be
  1292. returned to chip 3 WBM idle link descriptor idle list
  1293. <enum 4 FW_BM> This buffer shall be returned to the FW
  1294. <enum 5 SW0_BM> This buffer shall be returned to the SW,
  1295. ring 0
  1296. <enum 6 SW1_BM> This buffer shall be returned to the SW,
  1297. ring 1
  1298. <enum 7 SW2_BM> This buffer shall be returned to the SW,
  1299. ring 2
  1300. <enum 8 SW3_BM> This buffer shall be returned to the SW,
  1301. ring 3
  1302. <enum 9 SW4_BM> This buffer shall be returned to the SW,
  1303. ring 4
  1304. <enum 10 SW5_BM> This buffer shall be returned to the SW,
  1305. ring 5
  1306. <enum 11 SW6_BM> This buffer shall be returned to the SW,
  1307. ring 6
  1308. <legal 0-12>
  1309. */
  1310. #define RX_REO_QUEUE_EXT_MPDU_LINK_POINTER_10_MPDU_LINK_DESC_ADDR_INFO_RETURN_BUFFER_MANAGER_OFFSET 0x0000005c
  1311. #define RX_REO_QUEUE_EXT_MPDU_LINK_POINTER_10_MPDU_LINK_DESC_ADDR_INFO_RETURN_BUFFER_MANAGER_LSB 8
  1312. #define RX_REO_QUEUE_EXT_MPDU_LINK_POINTER_10_MPDU_LINK_DESC_ADDR_INFO_RETURN_BUFFER_MANAGER_MSB 11
  1313. #define RX_REO_QUEUE_EXT_MPDU_LINK_POINTER_10_MPDU_LINK_DESC_ADDR_INFO_RETURN_BUFFER_MANAGER_MASK 0x00000f00
  1314. /* Description SW_BUFFER_COOKIE
  1315. Cookie field exclusively used by SW.
  1316. In case of 'NULL' pointer, this field is set to 0
  1317. HW ignores the contents, accept that it passes the programmed
  1318. value on to other descriptors together with the physical
  1319. address
  1320. Field can be used by SW to for example associate the buffers
  1321. physical address with the virtual address
  1322. The bit definitions as used by SW are within SW HLD specification
  1323. NOTE1:
  1324. The three most significant bits can have a special meaning
  1325. in case this struct is embedded in a TX_MPDU_DETAILS STRUCT,
  1326. and field transmit_bw_restriction is set
  1327. In case of NON punctured transmission:
  1328. Sw_buffer_cookie[19:17] = 3'b000: 20 MHz TX only
  1329. Sw_buffer_cookie[19:17] = 3'b001: 40 MHz TX only
  1330. Sw_buffer_cookie[19:17] = 3'b010: 80 MHz TX only
  1331. Sw_buffer_cookie[19:17] = 3'b011: 160 MHz TX only
  1332. Sw_buffer_cookie[19:17] = 3'b101: 240 MHz TX only
  1333. Sw_buffer_cookie[19:17] = 3'b100: 320 MHz TX only
  1334. Sw_buffer_cookie[19:18] = 2'b11: reserved
  1335. In case of punctured transmission:
  1336. Sw_buffer_cookie[19:16] = 4'b0000: pattern 0 only
  1337. Sw_buffer_cookie[19:16] = 4'b0001: pattern 1 only
  1338. Sw_buffer_cookie[19:16] = 4'b0010: pattern 2 only
  1339. Sw_buffer_cookie[19:16] = 4'b0011: pattern 3 only
  1340. Sw_buffer_cookie[19:16] = 4'b0100: pattern 4 only
  1341. Sw_buffer_cookie[19:16] = 4'b0101: pattern 5 only
  1342. Sw_buffer_cookie[19:16] = 4'b0110: pattern 6 only
  1343. Sw_buffer_cookie[19:16] = 4'b0111: pattern 7 only
  1344. Sw_buffer_cookie[19:16] = 4'b1000: pattern 8 only
  1345. Sw_buffer_cookie[19:16] = 4'b1001: pattern 9 only
  1346. Sw_buffer_cookie[19:16] = 4'b1010: pattern 10 only
  1347. Sw_buffer_cookie[19:16] = 4'b1011: pattern 11 only
  1348. Sw_buffer_cookie[19:18] = 2'b11: reserved
  1349. Note: a punctured transmission is indicated by the presence
  1350. of TLV TX_PUNCTURE_SETUP embedded in the scheduler TLV
  1351. <legal all>
  1352. */
  1353. #define RX_REO_QUEUE_EXT_MPDU_LINK_POINTER_10_MPDU_LINK_DESC_ADDR_INFO_SW_BUFFER_COOKIE_OFFSET 0x0000005c
  1354. #define RX_REO_QUEUE_EXT_MPDU_LINK_POINTER_10_MPDU_LINK_DESC_ADDR_INFO_SW_BUFFER_COOKIE_LSB 12
  1355. #define RX_REO_QUEUE_EXT_MPDU_LINK_POINTER_10_MPDU_LINK_DESC_ADDR_INFO_SW_BUFFER_COOKIE_MSB 31
  1356. #define RX_REO_QUEUE_EXT_MPDU_LINK_POINTER_10_MPDU_LINK_DESC_ADDR_INFO_SW_BUFFER_COOKIE_MASK 0xfffff000
  1357. /* Description MPDU_LINK_POINTER_11
  1358. Consumer: REO
  1359. Producer: REO
  1360. Pointer to the next MPDU_link descriptor in the MPDU queue
  1361. */
  1362. /* Description MPDU_LINK_DESC_ADDR_INFO
  1363. Details of the physical address of an MPDU link descriptor
  1364. */
  1365. /* Description BUFFER_ADDR_31_0
  1366. Address (lower 32 bits) of the MSDU buffer OR MSDU_EXTENSION
  1367. descriptor OR Link Descriptor
  1368. In case of 'NULL' pointer, this field is set to 0
  1369. <legal all>
  1370. */
  1371. #define RX_REO_QUEUE_EXT_MPDU_LINK_POINTER_11_MPDU_LINK_DESC_ADDR_INFO_BUFFER_ADDR_31_0_OFFSET 0x00000060
  1372. #define RX_REO_QUEUE_EXT_MPDU_LINK_POINTER_11_MPDU_LINK_DESC_ADDR_INFO_BUFFER_ADDR_31_0_LSB 0
  1373. #define RX_REO_QUEUE_EXT_MPDU_LINK_POINTER_11_MPDU_LINK_DESC_ADDR_INFO_BUFFER_ADDR_31_0_MSB 31
  1374. #define RX_REO_QUEUE_EXT_MPDU_LINK_POINTER_11_MPDU_LINK_DESC_ADDR_INFO_BUFFER_ADDR_31_0_MASK 0xffffffff
  1375. /* Description BUFFER_ADDR_39_32
  1376. Address (upper 8 bits) of the MSDU buffer OR MSDU_EXTENSION
  1377. descriptor OR Link Descriptor
  1378. In case of 'NULL' pointer, this field is set to 0
  1379. <legal all>
  1380. */
  1381. #define RX_REO_QUEUE_EXT_MPDU_LINK_POINTER_11_MPDU_LINK_DESC_ADDR_INFO_BUFFER_ADDR_39_32_OFFSET 0x00000064
  1382. #define RX_REO_QUEUE_EXT_MPDU_LINK_POINTER_11_MPDU_LINK_DESC_ADDR_INFO_BUFFER_ADDR_39_32_LSB 0
  1383. #define RX_REO_QUEUE_EXT_MPDU_LINK_POINTER_11_MPDU_LINK_DESC_ADDR_INFO_BUFFER_ADDR_39_32_MSB 7
  1384. #define RX_REO_QUEUE_EXT_MPDU_LINK_POINTER_11_MPDU_LINK_DESC_ADDR_INFO_BUFFER_ADDR_39_32_MASK 0x000000ff
  1385. /* Description RETURN_BUFFER_MANAGER
  1386. Consumer: WBM
  1387. Producer: SW/FW
  1388. In case of 'NULL' pointer, this field is set to 0
  1389. Indicates to which buffer manager the buffer OR MSDU_EXTENSION
  1390. descriptor OR link descriptor that is being pointed to
  1391. shall be returned after the frame has been processed. It
  1392. is used by WBM for routing purposes.
  1393. <enum 0 WBM_IDLE_BUF_LIST> This buffer shall be returned
  1394. to the WMB buffer idle list
  1395. <enum 1 WBM_CHIP0_IDLE_DESC_LIST> This buffer shall be returned
  1396. to the WBM idle link descriptor idle list, where the chip
  1397. 0 WBM is chosen in case of a multi-chip config
  1398. <enum 2 WBM_CHIP1_IDLE_DESC_LIST> This buffer shall be returned
  1399. to the chip 1 WBM idle link descriptor idle list
  1400. <enum 3 WBM_CHIP2_IDLE_DESC_LIST> This buffer shall be returned
  1401. to the chip 2 WBM idle link descriptor idle list
  1402. <enum 12 WBM_CHIP3_IDLE_DESC_LIST> This buffer shall be
  1403. returned to chip 3 WBM idle link descriptor idle list
  1404. <enum 4 FW_BM> This buffer shall be returned to the FW
  1405. <enum 5 SW0_BM> This buffer shall be returned to the SW,
  1406. ring 0
  1407. <enum 6 SW1_BM> This buffer shall be returned to the SW,
  1408. ring 1
  1409. <enum 7 SW2_BM> This buffer shall be returned to the SW,
  1410. ring 2
  1411. <enum 8 SW3_BM> This buffer shall be returned to the SW,
  1412. ring 3
  1413. <enum 9 SW4_BM> This buffer shall be returned to the SW,
  1414. ring 4
  1415. <enum 10 SW5_BM> This buffer shall be returned to the SW,
  1416. ring 5
  1417. <enum 11 SW6_BM> This buffer shall be returned to the SW,
  1418. ring 6
  1419. <legal 0-12>
  1420. */
  1421. #define RX_REO_QUEUE_EXT_MPDU_LINK_POINTER_11_MPDU_LINK_DESC_ADDR_INFO_RETURN_BUFFER_MANAGER_OFFSET 0x00000064
  1422. #define RX_REO_QUEUE_EXT_MPDU_LINK_POINTER_11_MPDU_LINK_DESC_ADDR_INFO_RETURN_BUFFER_MANAGER_LSB 8
  1423. #define RX_REO_QUEUE_EXT_MPDU_LINK_POINTER_11_MPDU_LINK_DESC_ADDR_INFO_RETURN_BUFFER_MANAGER_MSB 11
  1424. #define RX_REO_QUEUE_EXT_MPDU_LINK_POINTER_11_MPDU_LINK_DESC_ADDR_INFO_RETURN_BUFFER_MANAGER_MASK 0x00000f00
  1425. /* Description SW_BUFFER_COOKIE
  1426. Cookie field exclusively used by SW.
  1427. In case of 'NULL' pointer, this field is set to 0
  1428. HW ignores the contents, accept that it passes the programmed
  1429. value on to other descriptors together with the physical
  1430. address
  1431. Field can be used by SW to for example associate the buffers
  1432. physical address with the virtual address
  1433. The bit definitions as used by SW are within SW HLD specification
  1434. NOTE1:
  1435. The three most significant bits can have a special meaning
  1436. in case this struct is embedded in a TX_MPDU_DETAILS STRUCT,
  1437. and field transmit_bw_restriction is set
  1438. In case of NON punctured transmission:
  1439. Sw_buffer_cookie[19:17] = 3'b000: 20 MHz TX only
  1440. Sw_buffer_cookie[19:17] = 3'b001: 40 MHz TX only
  1441. Sw_buffer_cookie[19:17] = 3'b010: 80 MHz TX only
  1442. Sw_buffer_cookie[19:17] = 3'b011: 160 MHz TX only
  1443. Sw_buffer_cookie[19:17] = 3'b101: 240 MHz TX only
  1444. Sw_buffer_cookie[19:17] = 3'b100: 320 MHz TX only
  1445. Sw_buffer_cookie[19:18] = 2'b11: reserved
  1446. In case of punctured transmission:
  1447. Sw_buffer_cookie[19:16] = 4'b0000: pattern 0 only
  1448. Sw_buffer_cookie[19:16] = 4'b0001: pattern 1 only
  1449. Sw_buffer_cookie[19:16] = 4'b0010: pattern 2 only
  1450. Sw_buffer_cookie[19:16] = 4'b0011: pattern 3 only
  1451. Sw_buffer_cookie[19:16] = 4'b0100: pattern 4 only
  1452. Sw_buffer_cookie[19:16] = 4'b0101: pattern 5 only
  1453. Sw_buffer_cookie[19:16] = 4'b0110: pattern 6 only
  1454. Sw_buffer_cookie[19:16] = 4'b0111: pattern 7 only
  1455. Sw_buffer_cookie[19:16] = 4'b1000: pattern 8 only
  1456. Sw_buffer_cookie[19:16] = 4'b1001: pattern 9 only
  1457. Sw_buffer_cookie[19:16] = 4'b1010: pattern 10 only
  1458. Sw_buffer_cookie[19:16] = 4'b1011: pattern 11 only
  1459. Sw_buffer_cookie[19:18] = 2'b11: reserved
  1460. Note: a punctured transmission is indicated by the presence
  1461. of TLV TX_PUNCTURE_SETUP embedded in the scheduler TLV
  1462. <legal all>
  1463. */
  1464. #define RX_REO_QUEUE_EXT_MPDU_LINK_POINTER_11_MPDU_LINK_DESC_ADDR_INFO_SW_BUFFER_COOKIE_OFFSET 0x00000064
  1465. #define RX_REO_QUEUE_EXT_MPDU_LINK_POINTER_11_MPDU_LINK_DESC_ADDR_INFO_SW_BUFFER_COOKIE_LSB 12
  1466. #define RX_REO_QUEUE_EXT_MPDU_LINK_POINTER_11_MPDU_LINK_DESC_ADDR_INFO_SW_BUFFER_COOKIE_MSB 31
  1467. #define RX_REO_QUEUE_EXT_MPDU_LINK_POINTER_11_MPDU_LINK_DESC_ADDR_INFO_SW_BUFFER_COOKIE_MASK 0xfffff000
  1468. /* Description MPDU_LINK_POINTER_12
  1469. Consumer: REO
  1470. Producer: REO
  1471. Pointer to the next MPDU_link descriptor in the MPDU queue
  1472. */
  1473. /* Description MPDU_LINK_DESC_ADDR_INFO
  1474. Details of the physical address of an MPDU link descriptor
  1475. */
  1476. /* Description BUFFER_ADDR_31_0
  1477. Address (lower 32 bits) of the MSDU buffer OR MSDU_EXTENSION
  1478. descriptor OR Link Descriptor
  1479. In case of 'NULL' pointer, this field is set to 0
  1480. <legal all>
  1481. */
  1482. #define RX_REO_QUEUE_EXT_MPDU_LINK_POINTER_12_MPDU_LINK_DESC_ADDR_INFO_BUFFER_ADDR_31_0_OFFSET 0x00000068
  1483. #define RX_REO_QUEUE_EXT_MPDU_LINK_POINTER_12_MPDU_LINK_DESC_ADDR_INFO_BUFFER_ADDR_31_0_LSB 0
  1484. #define RX_REO_QUEUE_EXT_MPDU_LINK_POINTER_12_MPDU_LINK_DESC_ADDR_INFO_BUFFER_ADDR_31_0_MSB 31
  1485. #define RX_REO_QUEUE_EXT_MPDU_LINK_POINTER_12_MPDU_LINK_DESC_ADDR_INFO_BUFFER_ADDR_31_0_MASK 0xffffffff
  1486. /* Description BUFFER_ADDR_39_32
  1487. Address (upper 8 bits) of the MSDU buffer OR MSDU_EXTENSION
  1488. descriptor OR Link Descriptor
  1489. In case of 'NULL' pointer, this field is set to 0
  1490. <legal all>
  1491. */
  1492. #define RX_REO_QUEUE_EXT_MPDU_LINK_POINTER_12_MPDU_LINK_DESC_ADDR_INFO_BUFFER_ADDR_39_32_OFFSET 0x0000006c
  1493. #define RX_REO_QUEUE_EXT_MPDU_LINK_POINTER_12_MPDU_LINK_DESC_ADDR_INFO_BUFFER_ADDR_39_32_LSB 0
  1494. #define RX_REO_QUEUE_EXT_MPDU_LINK_POINTER_12_MPDU_LINK_DESC_ADDR_INFO_BUFFER_ADDR_39_32_MSB 7
  1495. #define RX_REO_QUEUE_EXT_MPDU_LINK_POINTER_12_MPDU_LINK_DESC_ADDR_INFO_BUFFER_ADDR_39_32_MASK 0x000000ff
  1496. /* Description RETURN_BUFFER_MANAGER
  1497. Consumer: WBM
  1498. Producer: SW/FW
  1499. In case of 'NULL' pointer, this field is set to 0
  1500. Indicates to which buffer manager the buffer OR MSDU_EXTENSION
  1501. descriptor OR link descriptor that is being pointed to
  1502. shall be returned after the frame has been processed. It
  1503. is used by WBM for routing purposes.
  1504. <enum 0 WBM_IDLE_BUF_LIST> This buffer shall be returned
  1505. to the WMB buffer idle list
  1506. <enum 1 WBM_CHIP0_IDLE_DESC_LIST> This buffer shall be returned
  1507. to the WBM idle link descriptor idle list, where the chip
  1508. 0 WBM is chosen in case of a multi-chip config
  1509. <enum 2 WBM_CHIP1_IDLE_DESC_LIST> This buffer shall be returned
  1510. to the chip 1 WBM idle link descriptor idle list
  1511. <enum 3 WBM_CHIP2_IDLE_DESC_LIST> This buffer shall be returned
  1512. to the chip 2 WBM idle link descriptor idle list
  1513. <enum 12 WBM_CHIP3_IDLE_DESC_LIST> This buffer shall be
  1514. returned to chip 3 WBM idle link descriptor idle list
  1515. <enum 4 FW_BM> This buffer shall be returned to the FW
  1516. <enum 5 SW0_BM> This buffer shall be returned to the SW,
  1517. ring 0
  1518. <enum 6 SW1_BM> This buffer shall be returned to the SW,
  1519. ring 1
  1520. <enum 7 SW2_BM> This buffer shall be returned to the SW,
  1521. ring 2
  1522. <enum 8 SW3_BM> This buffer shall be returned to the SW,
  1523. ring 3
  1524. <enum 9 SW4_BM> This buffer shall be returned to the SW,
  1525. ring 4
  1526. <enum 10 SW5_BM> This buffer shall be returned to the SW,
  1527. ring 5
  1528. <enum 11 SW6_BM> This buffer shall be returned to the SW,
  1529. ring 6
  1530. <legal 0-12>
  1531. */
  1532. #define RX_REO_QUEUE_EXT_MPDU_LINK_POINTER_12_MPDU_LINK_DESC_ADDR_INFO_RETURN_BUFFER_MANAGER_OFFSET 0x0000006c
  1533. #define RX_REO_QUEUE_EXT_MPDU_LINK_POINTER_12_MPDU_LINK_DESC_ADDR_INFO_RETURN_BUFFER_MANAGER_LSB 8
  1534. #define RX_REO_QUEUE_EXT_MPDU_LINK_POINTER_12_MPDU_LINK_DESC_ADDR_INFO_RETURN_BUFFER_MANAGER_MSB 11
  1535. #define RX_REO_QUEUE_EXT_MPDU_LINK_POINTER_12_MPDU_LINK_DESC_ADDR_INFO_RETURN_BUFFER_MANAGER_MASK 0x00000f00
  1536. /* Description SW_BUFFER_COOKIE
  1537. Cookie field exclusively used by SW.
  1538. In case of 'NULL' pointer, this field is set to 0
  1539. HW ignores the contents, accept that it passes the programmed
  1540. value on to other descriptors together with the physical
  1541. address
  1542. Field can be used by SW to for example associate the buffers
  1543. physical address with the virtual address
  1544. The bit definitions as used by SW are within SW HLD specification
  1545. NOTE1:
  1546. The three most significant bits can have a special meaning
  1547. in case this struct is embedded in a TX_MPDU_DETAILS STRUCT,
  1548. and field transmit_bw_restriction is set
  1549. In case of NON punctured transmission:
  1550. Sw_buffer_cookie[19:17] = 3'b000: 20 MHz TX only
  1551. Sw_buffer_cookie[19:17] = 3'b001: 40 MHz TX only
  1552. Sw_buffer_cookie[19:17] = 3'b010: 80 MHz TX only
  1553. Sw_buffer_cookie[19:17] = 3'b011: 160 MHz TX only
  1554. Sw_buffer_cookie[19:17] = 3'b101: 240 MHz TX only
  1555. Sw_buffer_cookie[19:17] = 3'b100: 320 MHz TX only
  1556. Sw_buffer_cookie[19:18] = 2'b11: reserved
  1557. In case of punctured transmission:
  1558. Sw_buffer_cookie[19:16] = 4'b0000: pattern 0 only
  1559. Sw_buffer_cookie[19:16] = 4'b0001: pattern 1 only
  1560. Sw_buffer_cookie[19:16] = 4'b0010: pattern 2 only
  1561. Sw_buffer_cookie[19:16] = 4'b0011: pattern 3 only
  1562. Sw_buffer_cookie[19:16] = 4'b0100: pattern 4 only
  1563. Sw_buffer_cookie[19:16] = 4'b0101: pattern 5 only
  1564. Sw_buffer_cookie[19:16] = 4'b0110: pattern 6 only
  1565. Sw_buffer_cookie[19:16] = 4'b0111: pattern 7 only
  1566. Sw_buffer_cookie[19:16] = 4'b1000: pattern 8 only
  1567. Sw_buffer_cookie[19:16] = 4'b1001: pattern 9 only
  1568. Sw_buffer_cookie[19:16] = 4'b1010: pattern 10 only
  1569. Sw_buffer_cookie[19:16] = 4'b1011: pattern 11 only
  1570. Sw_buffer_cookie[19:18] = 2'b11: reserved
  1571. Note: a punctured transmission is indicated by the presence
  1572. of TLV TX_PUNCTURE_SETUP embedded in the scheduler TLV
  1573. <legal all>
  1574. */
  1575. #define RX_REO_QUEUE_EXT_MPDU_LINK_POINTER_12_MPDU_LINK_DESC_ADDR_INFO_SW_BUFFER_COOKIE_OFFSET 0x0000006c
  1576. #define RX_REO_QUEUE_EXT_MPDU_LINK_POINTER_12_MPDU_LINK_DESC_ADDR_INFO_SW_BUFFER_COOKIE_LSB 12
  1577. #define RX_REO_QUEUE_EXT_MPDU_LINK_POINTER_12_MPDU_LINK_DESC_ADDR_INFO_SW_BUFFER_COOKIE_MSB 31
  1578. #define RX_REO_QUEUE_EXT_MPDU_LINK_POINTER_12_MPDU_LINK_DESC_ADDR_INFO_SW_BUFFER_COOKIE_MASK 0xfffff000
  1579. /* Description MPDU_LINK_POINTER_13
  1580. Consumer: REO
  1581. Producer: REO
  1582. Pointer to the next MPDU_link descriptor in the MPDU queue
  1583. */
  1584. /* Description MPDU_LINK_DESC_ADDR_INFO
  1585. Details of the physical address of an MPDU link descriptor
  1586. */
  1587. /* Description BUFFER_ADDR_31_0
  1588. Address (lower 32 bits) of the MSDU buffer OR MSDU_EXTENSION
  1589. descriptor OR Link Descriptor
  1590. In case of 'NULL' pointer, this field is set to 0
  1591. <legal all>
  1592. */
  1593. #define RX_REO_QUEUE_EXT_MPDU_LINK_POINTER_13_MPDU_LINK_DESC_ADDR_INFO_BUFFER_ADDR_31_0_OFFSET 0x00000070
  1594. #define RX_REO_QUEUE_EXT_MPDU_LINK_POINTER_13_MPDU_LINK_DESC_ADDR_INFO_BUFFER_ADDR_31_0_LSB 0
  1595. #define RX_REO_QUEUE_EXT_MPDU_LINK_POINTER_13_MPDU_LINK_DESC_ADDR_INFO_BUFFER_ADDR_31_0_MSB 31
  1596. #define RX_REO_QUEUE_EXT_MPDU_LINK_POINTER_13_MPDU_LINK_DESC_ADDR_INFO_BUFFER_ADDR_31_0_MASK 0xffffffff
  1597. /* Description BUFFER_ADDR_39_32
  1598. Address (upper 8 bits) of the MSDU buffer OR MSDU_EXTENSION
  1599. descriptor OR Link Descriptor
  1600. In case of 'NULL' pointer, this field is set to 0
  1601. <legal all>
  1602. */
  1603. #define RX_REO_QUEUE_EXT_MPDU_LINK_POINTER_13_MPDU_LINK_DESC_ADDR_INFO_BUFFER_ADDR_39_32_OFFSET 0x00000074
  1604. #define RX_REO_QUEUE_EXT_MPDU_LINK_POINTER_13_MPDU_LINK_DESC_ADDR_INFO_BUFFER_ADDR_39_32_LSB 0
  1605. #define RX_REO_QUEUE_EXT_MPDU_LINK_POINTER_13_MPDU_LINK_DESC_ADDR_INFO_BUFFER_ADDR_39_32_MSB 7
  1606. #define RX_REO_QUEUE_EXT_MPDU_LINK_POINTER_13_MPDU_LINK_DESC_ADDR_INFO_BUFFER_ADDR_39_32_MASK 0x000000ff
  1607. /* Description RETURN_BUFFER_MANAGER
  1608. Consumer: WBM
  1609. Producer: SW/FW
  1610. In case of 'NULL' pointer, this field is set to 0
  1611. Indicates to which buffer manager the buffer OR MSDU_EXTENSION
  1612. descriptor OR link descriptor that is being pointed to
  1613. shall be returned after the frame has been processed. It
  1614. is used by WBM for routing purposes.
  1615. <enum 0 WBM_IDLE_BUF_LIST> This buffer shall be returned
  1616. to the WMB buffer idle list
  1617. <enum 1 WBM_CHIP0_IDLE_DESC_LIST> This buffer shall be returned
  1618. to the WBM idle link descriptor idle list, where the chip
  1619. 0 WBM is chosen in case of a multi-chip config
  1620. <enum 2 WBM_CHIP1_IDLE_DESC_LIST> This buffer shall be returned
  1621. to the chip 1 WBM idle link descriptor idle list
  1622. <enum 3 WBM_CHIP2_IDLE_DESC_LIST> This buffer shall be returned
  1623. to the chip 2 WBM idle link descriptor idle list
  1624. <enum 12 WBM_CHIP3_IDLE_DESC_LIST> This buffer shall be
  1625. returned to chip 3 WBM idle link descriptor idle list
  1626. <enum 4 FW_BM> This buffer shall be returned to the FW
  1627. <enum 5 SW0_BM> This buffer shall be returned to the SW,
  1628. ring 0
  1629. <enum 6 SW1_BM> This buffer shall be returned to the SW,
  1630. ring 1
  1631. <enum 7 SW2_BM> This buffer shall be returned to the SW,
  1632. ring 2
  1633. <enum 8 SW3_BM> This buffer shall be returned to the SW,
  1634. ring 3
  1635. <enum 9 SW4_BM> This buffer shall be returned to the SW,
  1636. ring 4
  1637. <enum 10 SW5_BM> This buffer shall be returned to the SW,
  1638. ring 5
  1639. <enum 11 SW6_BM> This buffer shall be returned to the SW,
  1640. ring 6
  1641. <legal 0-12>
  1642. */
  1643. #define RX_REO_QUEUE_EXT_MPDU_LINK_POINTER_13_MPDU_LINK_DESC_ADDR_INFO_RETURN_BUFFER_MANAGER_OFFSET 0x00000074
  1644. #define RX_REO_QUEUE_EXT_MPDU_LINK_POINTER_13_MPDU_LINK_DESC_ADDR_INFO_RETURN_BUFFER_MANAGER_LSB 8
  1645. #define RX_REO_QUEUE_EXT_MPDU_LINK_POINTER_13_MPDU_LINK_DESC_ADDR_INFO_RETURN_BUFFER_MANAGER_MSB 11
  1646. #define RX_REO_QUEUE_EXT_MPDU_LINK_POINTER_13_MPDU_LINK_DESC_ADDR_INFO_RETURN_BUFFER_MANAGER_MASK 0x00000f00
  1647. /* Description SW_BUFFER_COOKIE
  1648. Cookie field exclusively used by SW.
  1649. In case of 'NULL' pointer, this field is set to 0
  1650. HW ignores the contents, accept that it passes the programmed
  1651. value on to other descriptors together with the physical
  1652. address
  1653. Field can be used by SW to for example associate the buffers
  1654. physical address with the virtual address
  1655. The bit definitions as used by SW are within SW HLD specification
  1656. NOTE1:
  1657. The three most significant bits can have a special meaning
  1658. in case this struct is embedded in a TX_MPDU_DETAILS STRUCT,
  1659. and field transmit_bw_restriction is set
  1660. In case of NON punctured transmission:
  1661. Sw_buffer_cookie[19:17] = 3'b000: 20 MHz TX only
  1662. Sw_buffer_cookie[19:17] = 3'b001: 40 MHz TX only
  1663. Sw_buffer_cookie[19:17] = 3'b010: 80 MHz TX only
  1664. Sw_buffer_cookie[19:17] = 3'b011: 160 MHz TX only
  1665. Sw_buffer_cookie[19:17] = 3'b101: 240 MHz TX only
  1666. Sw_buffer_cookie[19:17] = 3'b100: 320 MHz TX only
  1667. Sw_buffer_cookie[19:18] = 2'b11: reserved
  1668. In case of punctured transmission:
  1669. Sw_buffer_cookie[19:16] = 4'b0000: pattern 0 only
  1670. Sw_buffer_cookie[19:16] = 4'b0001: pattern 1 only
  1671. Sw_buffer_cookie[19:16] = 4'b0010: pattern 2 only
  1672. Sw_buffer_cookie[19:16] = 4'b0011: pattern 3 only
  1673. Sw_buffer_cookie[19:16] = 4'b0100: pattern 4 only
  1674. Sw_buffer_cookie[19:16] = 4'b0101: pattern 5 only
  1675. Sw_buffer_cookie[19:16] = 4'b0110: pattern 6 only
  1676. Sw_buffer_cookie[19:16] = 4'b0111: pattern 7 only
  1677. Sw_buffer_cookie[19:16] = 4'b1000: pattern 8 only
  1678. Sw_buffer_cookie[19:16] = 4'b1001: pattern 9 only
  1679. Sw_buffer_cookie[19:16] = 4'b1010: pattern 10 only
  1680. Sw_buffer_cookie[19:16] = 4'b1011: pattern 11 only
  1681. Sw_buffer_cookie[19:18] = 2'b11: reserved
  1682. Note: a punctured transmission is indicated by the presence
  1683. of TLV TX_PUNCTURE_SETUP embedded in the scheduler TLV
  1684. <legal all>
  1685. */
  1686. #define RX_REO_QUEUE_EXT_MPDU_LINK_POINTER_13_MPDU_LINK_DESC_ADDR_INFO_SW_BUFFER_COOKIE_OFFSET 0x00000074
  1687. #define RX_REO_QUEUE_EXT_MPDU_LINK_POINTER_13_MPDU_LINK_DESC_ADDR_INFO_SW_BUFFER_COOKIE_LSB 12
  1688. #define RX_REO_QUEUE_EXT_MPDU_LINK_POINTER_13_MPDU_LINK_DESC_ADDR_INFO_SW_BUFFER_COOKIE_MSB 31
  1689. #define RX_REO_QUEUE_EXT_MPDU_LINK_POINTER_13_MPDU_LINK_DESC_ADDR_INFO_SW_BUFFER_COOKIE_MASK 0xfffff000
  1690. /* Description MPDU_LINK_POINTER_14
  1691. Consumer: REO
  1692. Producer: REO
  1693. Pointer to the next MPDU_link descriptor in the MPDU queue
  1694. */
  1695. /* Description MPDU_LINK_DESC_ADDR_INFO
  1696. Details of the physical address of an MPDU link descriptor
  1697. */
  1698. /* Description BUFFER_ADDR_31_0
  1699. Address (lower 32 bits) of the MSDU buffer OR MSDU_EXTENSION
  1700. descriptor OR Link Descriptor
  1701. In case of 'NULL' pointer, this field is set to 0
  1702. <legal all>
  1703. */
  1704. #define RX_REO_QUEUE_EXT_MPDU_LINK_POINTER_14_MPDU_LINK_DESC_ADDR_INFO_BUFFER_ADDR_31_0_OFFSET 0x00000078
  1705. #define RX_REO_QUEUE_EXT_MPDU_LINK_POINTER_14_MPDU_LINK_DESC_ADDR_INFO_BUFFER_ADDR_31_0_LSB 0
  1706. #define RX_REO_QUEUE_EXT_MPDU_LINK_POINTER_14_MPDU_LINK_DESC_ADDR_INFO_BUFFER_ADDR_31_0_MSB 31
  1707. #define RX_REO_QUEUE_EXT_MPDU_LINK_POINTER_14_MPDU_LINK_DESC_ADDR_INFO_BUFFER_ADDR_31_0_MASK 0xffffffff
  1708. /* Description BUFFER_ADDR_39_32
  1709. Address (upper 8 bits) of the MSDU buffer OR MSDU_EXTENSION
  1710. descriptor OR Link Descriptor
  1711. In case of 'NULL' pointer, this field is set to 0
  1712. <legal all>
  1713. */
  1714. #define RX_REO_QUEUE_EXT_MPDU_LINK_POINTER_14_MPDU_LINK_DESC_ADDR_INFO_BUFFER_ADDR_39_32_OFFSET 0x0000007c
  1715. #define RX_REO_QUEUE_EXT_MPDU_LINK_POINTER_14_MPDU_LINK_DESC_ADDR_INFO_BUFFER_ADDR_39_32_LSB 0
  1716. #define RX_REO_QUEUE_EXT_MPDU_LINK_POINTER_14_MPDU_LINK_DESC_ADDR_INFO_BUFFER_ADDR_39_32_MSB 7
  1717. #define RX_REO_QUEUE_EXT_MPDU_LINK_POINTER_14_MPDU_LINK_DESC_ADDR_INFO_BUFFER_ADDR_39_32_MASK 0x000000ff
  1718. /* Description RETURN_BUFFER_MANAGER
  1719. Consumer: WBM
  1720. Producer: SW/FW
  1721. In case of 'NULL' pointer, this field is set to 0
  1722. Indicates to which buffer manager the buffer OR MSDU_EXTENSION
  1723. descriptor OR link descriptor that is being pointed to
  1724. shall be returned after the frame has been processed. It
  1725. is used by WBM for routing purposes.
  1726. <enum 0 WBM_IDLE_BUF_LIST> This buffer shall be returned
  1727. to the WMB buffer idle list
  1728. <enum 1 WBM_CHIP0_IDLE_DESC_LIST> This buffer shall be returned
  1729. to the WBM idle link descriptor idle list, where the chip
  1730. 0 WBM is chosen in case of a multi-chip config
  1731. <enum 2 WBM_CHIP1_IDLE_DESC_LIST> This buffer shall be returned
  1732. to the chip 1 WBM idle link descriptor idle list
  1733. <enum 3 WBM_CHIP2_IDLE_DESC_LIST> This buffer shall be returned
  1734. to the chip 2 WBM idle link descriptor idle list
  1735. <enum 12 WBM_CHIP3_IDLE_DESC_LIST> This buffer shall be
  1736. returned to chip 3 WBM idle link descriptor idle list
  1737. <enum 4 FW_BM> This buffer shall be returned to the FW
  1738. <enum 5 SW0_BM> This buffer shall be returned to the SW,
  1739. ring 0
  1740. <enum 6 SW1_BM> This buffer shall be returned to the SW,
  1741. ring 1
  1742. <enum 7 SW2_BM> This buffer shall be returned to the SW,
  1743. ring 2
  1744. <enum 8 SW3_BM> This buffer shall be returned to the SW,
  1745. ring 3
  1746. <enum 9 SW4_BM> This buffer shall be returned to the SW,
  1747. ring 4
  1748. <enum 10 SW5_BM> This buffer shall be returned to the SW,
  1749. ring 5
  1750. <enum 11 SW6_BM> This buffer shall be returned to the SW,
  1751. ring 6
  1752. <legal 0-12>
  1753. */
  1754. #define RX_REO_QUEUE_EXT_MPDU_LINK_POINTER_14_MPDU_LINK_DESC_ADDR_INFO_RETURN_BUFFER_MANAGER_OFFSET 0x0000007c
  1755. #define RX_REO_QUEUE_EXT_MPDU_LINK_POINTER_14_MPDU_LINK_DESC_ADDR_INFO_RETURN_BUFFER_MANAGER_LSB 8
  1756. #define RX_REO_QUEUE_EXT_MPDU_LINK_POINTER_14_MPDU_LINK_DESC_ADDR_INFO_RETURN_BUFFER_MANAGER_MSB 11
  1757. #define RX_REO_QUEUE_EXT_MPDU_LINK_POINTER_14_MPDU_LINK_DESC_ADDR_INFO_RETURN_BUFFER_MANAGER_MASK 0x00000f00
  1758. /* Description SW_BUFFER_COOKIE
  1759. Cookie field exclusively used by SW.
  1760. In case of 'NULL' pointer, this field is set to 0
  1761. HW ignores the contents, accept that it passes the programmed
  1762. value on to other descriptors together with the physical
  1763. address
  1764. Field can be used by SW to for example associate the buffers
  1765. physical address with the virtual address
  1766. The bit definitions as used by SW are within SW HLD specification
  1767. NOTE1:
  1768. The three most significant bits can have a special meaning
  1769. in case this struct is embedded in a TX_MPDU_DETAILS STRUCT,
  1770. and field transmit_bw_restriction is set
  1771. In case of NON punctured transmission:
  1772. Sw_buffer_cookie[19:17] = 3'b000: 20 MHz TX only
  1773. Sw_buffer_cookie[19:17] = 3'b001: 40 MHz TX only
  1774. Sw_buffer_cookie[19:17] = 3'b010: 80 MHz TX only
  1775. Sw_buffer_cookie[19:17] = 3'b011: 160 MHz TX only
  1776. Sw_buffer_cookie[19:17] = 3'b101: 240 MHz TX only
  1777. Sw_buffer_cookie[19:17] = 3'b100: 320 MHz TX only
  1778. Sw_buffer_cookie[19:18] = 2'b11: reserved
  1779. In case of punctured transmission:
  1780. Sw_buffer_cookie[19:16] = 4'b0000: pattern 0 only
  1781. Sw_buffer_cookie[19:16] = 4'b0001: pattern 1 only
  1782. Sw_buffer_cookie[19:16] = 4'b0010: pattern 2 only
  1783. Sw_buffer_cookie[19:16] = 4'b0011: pattern 3 only
  1784. Sw_buffer_cookie[19:16] = 4'b0100: pattern 4 only
  1785. Sw_buffer_cookie[19:16] = 4'b0101: pattern 5 only
  1786. Sw_buffer_cookie[19:16] = 4'b0110: pattern 6 only
  1787. Sw_buffer_cookie[19:16] = 4'b0111: pattern 7 only
  1788. Sw_buffer_cookie[19:16] = 4'b1000: pattern 8 only
  1789. Sw_buffer_cookie[19:16] = 4'b1001: pattern 9 only
  1790. Sw_buffer_cookie[19:16] = 4'b1010: pattern 10 only
  1791. Sw_buffer_cookie[19:16] = 4'b1011: pattern 11 only
  1792. Sw_buffer_cookie[19:18] = 2'b11: reserved
  1793. Note: a punctured transmission is indicated by the presence
  1794. of TLV TX_PUNCTURE_SETUP embedded in the scheduler TLV
  1795. <legal all>
  1796. */
  1797. #define RX_REO_QUEUE_EXT_MPDU_LINK_POINTER_14_MPDU_LINK_DESC_ADDR_INFO_SW_BUFFER_COOKIE_OFFSET 0x0000007c
  1798. #define RX_REO_QUEUE_EXT_MPDU_LINK_POINTER_14_MPDU_LINK_DESC_ADDR_INFO_SW_BUFFER_COOKIE_LSB 12
  1799. #define RX_REO_QUEUE_EXT_MPDU_LINK_POINTER_14_MPDU_LINK_DESC_ADDR_INFO_SW_BUFFER_COOKIE_MSB 31
  1800. #define RX_REO_QUEUE_EXT_MPDU_LINK_POINTER_14_MPDU_LINK_DESC_ADDR_INFO_SW_BUFFER_COOKIE_MASK 0xfffff000
  1801. #endif // RX_REO_QUEUE_EXT