rx_reo_queue_ext.h 93 KB

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