rx_reo_queue_ext.h 93 KB

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