rx_msdu_link.h 100 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842184318441845184618471848184918501851185218531854185518561857185818591860186118621863186418651866186718681869187018711872187318741875187618771878187918801881188218831884188518861887188818891890189118921893189418951896189718981899190019011902190319041905190619071908190919101911191219131914191519161917191819191920192119221923192419251926192719281929193019311932193319341935193619371938193919401941194219431944194519461947194819491950195119521953195419551956195719581959196019611962196319641965196619671968196919701971197219731974197519761977197819791980198119821983198419851986198719881989199019911992199319941995199619971998199920002001200220032004200520062007200820092010201120122013201420152016201720182019202020212022202320242025202620272028202920302031203220332034203520362037203820392040204120422043204420452046204720482049205020512052205320542055205620572058205920602061206220632064206520662067206820692070207120722073207420752076207720782079208020812082208320842085208620872088208920902091209220932094209520962097209820992100210121022103210421052106210721082109211021112112211321142115211621172118211921202121212221232124212521262127212821292130213121322133213421352136213721382139214021412142214321442145214621472148214921502151215221532154215521562157215821592160216121622163216421652166216721682169217021712172217321742175217621772178217921802181218221832184218521862187218821892190219121922193219421952196219721982199220022012202220322042205220622072208220922102211221222132214221522162217221822192220222122222223222422252226222722282229223022312232223322342235223622372238223922402241224222432244224522462247224822492250225122522253225422552256225722582259226022612262226322642265226622672268226922702271227222732274227522762277227822792280228122822283228422852286228722882289229022912292229322942295229622972298229923002301230223032304230523062307230823092310231123122313231423152316231723182319232023212322232323242325232623272328232923302331233223332334233523362337233823392340234123422343234423452346234723482349235023512352235323542355235623572358235923602361236223632364236523662367236823692370237123722373237423752376237723782379238023812382238323842385238623872388238923902391239223932394239523962397239823992400240124022403240424052406240724082409241024112412241324142415241624172418241924202421242224232424242524262427242824292430243124322433243424352436243724382439244024412442244324442445244624472448244924502451245224532454245524562457245824592460246124622463246424652466246724682469247024712472247324742475247624772478247924802481248224832484248524862487248824892490249124922493249424952496249724982499250025012502250325042505250625072508250925102511251225132514251525162517251825192520252125222523252425252526252725282529253025312532253325342535253625372538253925402541254225432544254525462547254825492550255125522553255425552556255725582559256025612562256325642565256625672568256925702571257225732574257525762577257825792580258125822583258425852586258725882589259025912592259325942595259625972598259926002601260226032604260526062607260826092610261126122613261426152616261726182619262026212622262326242625262626272628262926302631263226332634263526362637263826392640264126422643264426452646264726482649265026512652265326542655265626572658265926602661266226632664266526662667266826692670267126722673267426752676267726782679268026812682268326842685268626872688268926902691269226932694269526962697269826992700270127022703270427052706270727082709271027112712271327142715271627172718271927202721272227232724272527262727272827292730273127322733273427352736273727382739274027412742274327442745274627472748274927502751275227532754275527562757275827592760276127622763276427652766276727682769277027712772277327742775277627772778277927802781278227832784278527862787278827892790279127922793279427952796279727982799280028012802280328042805280628072808280928102811281228132814281528162817281828192820282128222823282428252826282728282829283028312832283328342835283628372838283928402841284228432844284528462847284828492850285128522853285428552856285728582859286028612862286328642865286628672868286928702871287228732874287528762877287828792880288128822883288428852886288728882889289028912892289328942895289628972898289929002901290229032904290529062907290829092910291129122913291429152916291729182919292029212922292329242925292629272928292929302931293229332934293529362937293829392940294129422943294429452946294729482949295029512952295329542955295629572958295929602961296229632964296529662967296829692970297129722973297429752976297729782979298029812982298329842985298629872988298929902991299229932994299529962997299829993000300130023003300430053006300730083009301030113012301330143015301630173018301930203021302230233024302530263027302830293030303130323033303430353036303730383039304030413042304330443045304630473048304930503051305230533054305530563057305830593060306130623063306430653066306730683069307030713072307330743075307630773078307930803081308230833084308530863087308830893090309130923093309430953096309730983099310031013102310331043105310631073108310931103111311231133114311531163117311831193120312131223123312431253126312731283129313031313132313331343135313631373138313931403141314231433144314531463147314831493150315131523153315431553156315731583159316031613162316331643165316631673168316931703171317231733174317531763177317831793180318131823183318431853186318731883189319031913192319331943195319631973198319932003201320232033204320532063207320832093210321132123213321432153216321732183219322032213222322332243225322632273228322932303231323232333234323532363237323832393240324132423243324432453246324732483249325032513252325332543255325632573258325932603261326232633264326532663267326832693270327132723273327432753276327732783279328032813282328332843285328632873288328932903291329232933294329532963297329832993300330133023303330433053306330733083309331033113312331333143315331633173318331933203321332233233324332533263327332833293330333133323333333433353336333733383339334033413342334333443345334633473348334933503351
  1. /*
  2. * Copyright (c) 2019, The Linux Foundation. All rights reserved.
  3. *
  4. * Permission to use, copy, modify, and/or distribute this software for any
  5. * purpose with or without fee is hereby granted, provided that the above
  6. * copyright notice and this permission notice appear in all copies.
  7. *
  8. * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
  9. * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
  10. * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
  11. * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
  12. * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
  13. * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
  14. * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
  15. */
  16. #ifndef _RX_MSDU_LINK_H_
  17. #define _RX_MSDU_LINK_H_
  18. #if !defined(__ASSEMBLER__)
  19. #endif
  20. #include "uniform_descriptor_header.h"
  21. #include "buffer_addr_info.h"
  22. #include "rx_msdu_details.h"
  23. // ################ START SUMMARY #################
  24. //
  25. // Dword Fields
  26. // 0 struct uniform_descriptor_header descriptor_header;
  27. // 1-2 struct buffer_addr_info next_msdu_link_desc_addr_info;
  28. // 3 receive_queue_number[15:0], first_rx_msdu_link_struct[16], reserved_3a[31:17]
  29. // 4 pn_31_0[31:0]
  30. // 5 pn_63_32[31:0]
  31. // 6 pn_95_64[31:0]
  32. // 7 pn_127_96[31:0]
  33. // 8-11 struct rx_msdu_details msdu_0;
  34. // 12-15 struct rx_msdu_details msdu_1;
  35. // 16-19 struct rx_msdu_details msdu_2;
  36. // 20-23 struct rx_msdu_details msdu_3;
  37. // 24-27 struct rx_msdu_details msdu_4;
  38. // 28-31 struct rx_msdu_details msdu_5;
  39. //
  40. // ################ END SUMMARY #################
  41. #define NUM_OF_DWORDS_RX_MSDU_LINK 32
  42. struct rx_msdu_link {
  43. struct uniform_descriptor_header descriptor_header;
  44. struct buffer_addr_info next_msdu_link_desc_addr_info;
  45. uint32_t receive_queue_number : 16, //[15:0]
  46. first_rx_msdu_link_struct : 1, //[16]
  47. reserved_3a : 15; //[31:17]
  48. uint32_t pn_31_0 : 32; //[31:0]
  49. uint32_t pn_63_32 : 32; //[31:0]
  50. uint32_t pn_95_64 : 32; //[31:0]
  51. uint32_t pn_127_96 : 32; //[31:0]
  52. struct rx_msdu_details msdu_0;
  53. struct rx_msdu_details msdu_1;
  54. struct rx_msdu_details msdu_2;
  55. struct rx_msdu_details msdu_3;
  56. struct rx_msdu_details msdu_4;
  57. struct rx_msdu_details msdu_5;
  58. };
  59. /*
  60. struct uniform_descriptor_header descriptor_header
  61. Details about which module owns this struct.
  62. Note that sub field Buffer_type shall be set to
  63. Receive_MSDU_Link_descriptor
  64. struct buffer_addr_info next_msdu_link_desc_addr_info
  65. Details of the physical address of the next MSDU link
  66. descriptor that contains info about additional MSDUs that
  67. are part of this MPDU.
  68. receive_queue_number
  69. Indicates the Receive queue to which this MPDU
  70. descriptor belongs
  71. Used for tracking, finding bugs and debugging.
  72. <legal all>
  73. first_rx_msdu_link_struct
  74. When set, this RX_MSDU_link descriptor is the first one
  75. in the MSDU link list. Field MSDU_0 points to the very first
  76. MSDU buffer descriptor in the MPDU
  77. <legal all>
  78. reserved_3a
  79. <legal 0>
  80. pn_31_0
  81. 31-0 bits of the 256-bit packet number bitmap.
  82. <legal all>
  83. pn_63_32
  84. 63-32 bits of the 256-bit packet number bitmap.
  85. <legal all>
  86. pn_95_64
  87. 95-64 bits of the 256-bit packet number bitmap.
  88. <legal all>
  89. pn_127_96
  90. 127-96 bits of the 256-bit packet number bitmap.
  91. <legal all>
  92. struct rx_msdu_details msdu_0
  93. When First_RX_MSDU_link_struct is set, this MSDU is the
  94. first in the MPDU
  95. When First_RX_MSDU_link_struct is NOT set, this MSDU
  96. follows the last MSDU in the previous RX_MSDU_link data
  97. structure
  98. struct rx_msdu_details msdu_1
  99. Details of next MSDU in this (MSDU flow) linked list
  100. struct rx_msdu_details msdu_2
  101. Details of next MSDU in this (MSDU flow) linked list
  102. struct rx_msdu_details msdu_3
  103. Details of next MSDU in this (MSDU flow) linked list
  104. struct rx_msdu_details msdu_4
  105. Details of next MSDU in this (MSDU flow) linked list
  106. struct rx_msdu_details msdu_5
  107. Details of next MSDU in this (MSDU flow) linked list
  108. */
  109. /* EXTERNAL REFERENCE : struct uniform_descriptor_header descriptor_header */
  110. /* Description RX_MSDU_LINK_0_DESCRIPTOR_HEADER_OWNER
  111. Consumer: In DEBUG mode: WBM, TQM, TXDMA, RXDMA, REO
  112. Producer: In DEBUG mode: WBM, TQM, TXDMA, RXDMA, REO
  113. The owner of this data structure:
  114. <enum 0 WBM_owned> Buffer Manager currently owns this
  115. data structure.
  116. <enum 1 SW_OR_FW_owned> Software of FW currently owns
  117. this data structure.
  118. <enum 2 TQM_owned> Transmit Queue Manager currently owns
  119. this data structure.
  120. <enum 3 RXDMA_owned> Receive DMA currently owns this
  121. data structure.
  122. <enum 4 REO_owned> Reorder currently owns this data
  123. structure.
  124. <enum 5 SWITCH_owned> SWITCH currently owns this data
  125. structure.
  126. <legal 0-5>
  127. */
  128. #define RX_MSDU_LINK_0_DESCRIPTOR_HEADER_OWNER_OFFSET 0x00000000
  129. #define RX_MSDU_LINK_0_DESCRIPTOR_HEADER_OWNER_LSB 0
  130. #define RX_MSDU_LINK_0_DESCRIPTOR_HEADER_OWNER_MASK 0x0000000f
  131. /* Description RX_MSDU_LINK_0_DESCRIPTOR_HEADER_BUFFER_TYPE
  132. Consumer: In DEBUG mode: WBM, TQM, TXDMA, RXDMA, REO
  133. Producer: In DEBUG mode: WBM, TQM, TXDMA, RXDMA, REO
  134. Field describing what contents format is of this
  135. descriptor
  136. <enum 0 Transmit_MSDU_Link_descriptor >
  137. <enum 1 Transmit_MPDU_Link_descriptor >
  138. <enum 2 Transmit_MPDU_Queue_head_descriptor>
  139. <enum 3 Transmit_MPDU_Queue_ext_descriptor>
  140. <enum 4 Transmit_flow_descriptor>
  141. <enum 5 Transmit_buffer > NOT TO BE USED:
  142. <enum 6 Receive_MSDU_Link_descriptor >
  143. <enum 7 Receive_MPDU_Link_descriptor >
  144. <enum 8 Receive_REO_queue_descriptor >
  145. <enum 9 Receive_REO_queue_ext_descriptor >
  146. <enum 10 Receive_buffer >
  147. <enum 11 Idle_link_list_entry>
  148. <legal 0-11>
  149. */
  150. #define RX_MSDU_LINK_0_DESCRIPTOR_HEADER_BUFFER_TYPE_OFFSET 0x00000000
  151. #define RX_MSDU_LINK_0_DESCRIPTOR_HEADER_BUFFER_TYPE_LSB 4
  152. #define RX_MSDU_LINK_0_DESCRIPTOR_HEADER_BUFFER_TYPE_MASK 0x000000f0
  153. /* Description RX_MSDU_LINK_0_DESCRIPTOR_HEADER_RESERVED_0A
  154. <legal 0>
  155. */
  156. #define RX_MSDU_LINK_0_DESCRIPTOR_HEADER_RESERVED_0A_OFFSET 0x00000000
  157. #define RX_MSDU_LINK_0_DESCRIPTOR_HEADER_RESERVED_0A_LSB 8
  158. #define RX_MSDU_LINK_0_DESCRIPTOR_HEADER_RESERVED_0A_MASK 0xffffff00
  159. /* EXTERNAL REFERENCE : struct buffer_addr_info next_msdu_link_desc_addr_info */
  160. /* Description RX_MSDU_LINK_1_NEXT_MSDU_LINK_DESC_ADDR_INFO_BUFFER_ADDR_31_0
  161. Address (lower 32 bits) of the MSDU buffer OR
  162. MSDU_EXTENSION descriptor OR Link Descriptor
  163. In case of 'NULL' pointer, this field is set to 0
  164. <legal all>
  165. */
  166. #define RX_MSDU_LINK_1_NEXT_MSDU_LINK_DESC_ADDR_INFO_BUFFER_ADDR_31_0_OFFSET 0x00000004
  167. #define RX_MSDU_LINK_1_NEXT_MSDU_LINK_DESC_ADDR_INFO_BUFFER_ADDR_31_0_LSB 0
  168. #define RX_MSDU_LINK_1_NEXT_MSDU_LINK_DESC_ADDR_INFO_BUFFER_ADDR_31_0_MASK 0xffffffff
  169. /* Description RX_MSDU_LINK_2_NEXT_MSDU_LINK_DESC_ADDR_INFO_BUFFER_ADDR_39_32
  170. Address (upper 8 bits) of the MSDU buffer OR
  171. MSDU_EXTENSION descriptor OR Link Descriptor
  172. In case of 'NULL' pointer, this field is set to 0
  173. <legal all>
  174. */
  175. #define RX_MSDU_LINK_2_NEXT_MSDU_LINK_DESC_ADDR_INFO_BUFFER_ADDR_39_32_OFFSET 0x00000008
  176. #define RX_MSDU_LINK_2_NEXT_MSDU_LINK_DESC_ADDR_INFO_BUFFER_ADDR_39_32_LSB 0
  177. #define RX_MSDU_LINK_2_NEXT_MSDU_LINK_DESC_ADDR_INFO_BUFFER_ADDR_39_32_MASK 0x000000ff
  178. /* Description RX_MSDU_LINK_2_NEXT_MSDU_LINK_DESC_ADDR_INFO_RETURN_BUFFER_MANAGER
  179. Consumer: WBM
  180. Producer: SW/FW
  181. In case of 'NULL' pointer, this field is set to 0
  182. Indicates to which buffer manager the buffer OR
  183. MSDU_EXTENSION descriptor OR link descriptor that is being
  184. pointed to shall be returned after the frame has been
  185. processed. It is used by WBM for routing purposes.
  186. <enum 0 WBM_IDLE_BUF_LIST> This buffer shall be returned
  187. to the WMB buffer idle list
  188. <enum 1 WBM_IDLE_DESC_LIST> This buffer shall be
  189. returned to the WMB idle link descriptor idle list
  190. <enum 2 FW_BM> This buffer shall be returned to the FW
  191. <enum 3 SW0_BM> This buffer shall be returned to the SW,
  192. ring 0
  193. <enum 4 SW1_BM> This buffer shall be returned to the SW,
  194. ring 1
  195. <enum 5 SW2_BM> This buffer shall be returned to the SW,
  196. ring 2
  197. <enum 6 SW3_BM> This buffer shall be returned to the SW,
  198. ring 3
  199. <enum 7 SW4_BM> This buffer shall be returned to the SW,
  200. ring 4
  201. <legal all>
  202. */
  203. #define RX_MSDU_LINK_2_NEXT_MSDU_LINK_DESC_ADDR_INFO_RETURN_BUFFER_MANAGER_OFFSET 0x00000008
  204. #define RX_MSDU_LINK_2_NEXT_MSDU_LINK_DESC_ADDR_INFO_RETURN_BUFFER_MANAGER_LSB 8
  205. #define RX_MSDU_LINK_2_NEXT_MSDU_LINK_DESC_ADDR_INFO_RETURN_BUFFER_MANAGER_MASK 0x00000700
  206. /* Description RX_MSDU_LINK_2_NEXT_MSDU_LINK_DESC_ADDR_INFO_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
  210. programmed value on to other descriptors together with the
  211. physical address
  212. Field can be used by SW to for example associate the
  213. buffers physical address with the virtual address
  214. The bit definitions as used by SW are within SW HLD
  215. specification
  216. NOTE:
  217. The three most significant bits can have a special
  218. meaning in case this struct is embedded in a TX_MPDU_DETAILS
  219. STRUCT, and field transmit_bw_restriction is set
  220. In case of NON punctured transmission:
  221. Sw_buffer_cookie[20:19] = 2'b00: 20 MHz TX only
  222. Sw_buffer_cookie[20:19] = 2'b01: 40 MHz TX only
  223. Sw_buffer_cookie[20:19] = 2'b10: 80 MHz TX only
  224. Sw_buffer_cookie[20:19] = 2'b11: 160 MHz TX only
  225. In case of punctured transmission:
  226. Sw_buffer_cookie[20:18] = 3'b000: pattern 0 only
  227. Sw_buffer_cookie[20:18] = 3'b001: pattern 1 only
  228. Sw_buffer_cookie[20:18] = 3'b010: pattern 2 only
  229. Sw_buffer_cookie[20:18] = 3'b011: pattern 3 only
  230. Sw_buffer_cookie[20:18] = 3'b100: pattern 4 only
  231. Sw_buffer_cookie[20:18] = 3'b101: pattern 5 only
  232. Sw_buffer_cookie[20:18] = 3'b110: pattern 6 only
  233. Sw_buffer_cookie[20:18] = 3'b111: pattern 7 only
  234. Note: a punctured transmission is indicated by the
  235. presence of TLV TX_PUNCTURE_SETUP embedded in the scheduler
  236. TLV
  237. <legal all>
  238. */
  239. #define RX_MSDU_LINK_2_NEXT_MSDU_LINK_DESC_ADDR_INFO_SW_BUFFER_COOKIE_OFFSET 0x00000008
  240. #define RX_MSDU_LINK_2_NEXT_MSDU_LINK_DESC_ADDR_INFO_SW_BUFFER_COOKIE_LSB 11
  241. #define RX_MSDU_LINK_2_NEXT_MSDU_LINK_DESC_ADDR_INFO_SW_BUFFER_COOKIE_MASK 0xfffff800
  242. /* Description RX_MSDU_LINK_3_RECEIVE_QUEUE_NUMBER
  243. Indicates the Receive queue to which this MPDU
  244. descriptor belongs
  245. Used for tracking, finding bugs and debugging.
  246. <legal all>
  247. */
  248. #define RX_MSDU_LINK_3_RECEIVE_QUEUE_NUMBER_OFFSET 0x0000000c
  249. #define RX_MSDU_LINK_3_RECEIVE_QUEUE_NUMBER_LSB 0
  250. #define RX_MSDU_LINK_3_RECEIVE_QUEUE_NUMBER_MASK 0x0000ffff
  251. /* Description RX_MSDU_LINK_3_FIRST_RX_MSDU_LINK_STRUCT
  252. When set, this RX_MSDU_link descriptor is the first one
  253. in the MSDU link list. Field MSDU_0 points to the very first
  254. MSDU buffer descriptor in the MPDU
  255. <legal all>
  256. */
  257. #define RX_MSDU_LINK_3_FIRST_RX_MSDU_LINK_STRUCT_OFFSET 0x0000000c
  258. #define RX_MSDU_LINK_3_FIRST_RX_MSDU_LINK_STRUCT_LSB 16
  259. #define RX_MSDU_LINK_3_FIRST_RX_MSDU_LINK_STRUCT_MASK 0x00010000
  260. /* Description RX_MSDU_LINK_3_RESERVED_3A
  261. <legal 0>
  262. */
  263. #define RX_MSDU_LINK_3_RESERVED_3A_OFFSET 0x0000000c
  264. #define RX_MSDU_LINK_3_RESERVED_3A_LSB 17
  265. #define RX_MSDU_LINK_3_RESERVED_3A_MASK 0xfffe0000
  266. /* Description RX_MSDU_LINK_4_PN_31_0
  267. 31-0 bits of the 256-bit packet number bitmap.
  268. <legal all>
  269. */
  270. #define RX_MSDU_LINK_4_PN_31_0_OFFSET 0x00000010
  271. #define RX_MSDU_LINK_4_PN_31_0_LSB 0
  272. #define RX_MSDU_LINK_4_PN_31_0_MASK 0xffffffff
  273. /* Description RX_MSDU_LINK_5_PN_63_32
  274. 63-32 bits of the 256-bit packet number bitmap.
  275. <legal all>
  276. */
  277. #define RX_MSDU_LINK_5_PN_63_32_OFFSET 0x00000014
  278. #define RX_MSDU_LINK_5_PN_63_32_LSB 0
  279. #define RX_MSDU_LINK_5_PN_63_32_MASK 0xffffffff
  280. /* Description RX_MSDU_LINK_6_PN_95_64
  281. 95-64 bits of the 256-bit packet number bitmap.
  282. <legal all>
  283. */
  284. #define RX_MSDU_LINK_6_PN_95_64_OFFSET 0x00000018
  285. #define RX_MSDU_LINK_6_PN_95_64_LSB 0
  286. #define RX_MSDU_LINK_6_PN_95_64_MASK 0xffffffff
  287. /* Description RX_MSDU_LINK_7_PN_127_96
  288. 127-96 bits of the 256-bit packet number bitmap.
  289. <legal all>
  290. */
  291. #define RX_MSDU_LINK_7_PN_127_96_OFFSET 0x0000001c
  292. #define RX_MSDU_LINK_7_PN_127_96_LSB 0
  293. #define RX_MSDU_LINK_7_PN_127_96_MASK 0xffffffff
  294. /* EXTERNAL REFERENCE : struct rx_msdu_details msdu_0 */
  295. /* EXTERNAL REFERENCE : struct buffer_addr_info buffer_addr_info_details */
  296. /* Description RX_MSDU_LINK_8_MSDU_0_BUFFER_ADDR_INFO_DETAILS_BUFFER_ADDR_31_0
  297. Address (lower 32 bits) of the MSDU buffer OR
  298. MSDU_EXTENSION descriptor OR Link Descriptor
  299. In case of 'NULL' pointer, this field is set to 0
  300. <legal all>
  301. */
  302. #define RX_MSDU_LINK_8_MSDU_0_BUFFER_ADDR_INFO_DETAILS_BUFFER_ADDR_31_0_OFFSET 0x00000020
  303. #define RX_MSDU_LINK_8_MSDU_0_BUFFER_ADDR_INFO_DETAILS_BUFFER_ADDR_31_0_LSB 0
  304. #define RX_MSDU_LINK_8_MSDU_0_BUFFER_ADDR_INFO_DETAILS_BUFFER_ADDR_31_0_MASK 0xffffffff
  305. /* Description RX_MSDU_LINK_9_MSDU_0_BUFFER_ADDR_INFO_DETAILS_BUFFER_ADDR_39_32
  306. Address (upper 8 bits) of the MSDU buffer OR
  307. MSDU_EXTENSION descriptor OR Link Descriptor
  308. In case of 'NULL' pointer, this field is set to 0
  309. <legal all>
  310. */
  311. #define RX_MSDU_LINK_9_MSDU_0_BUFFER_ADDR_INFO_DETAILS_BUFFER_ADDR_39_32_OFFSET 0x00000024
  312. #define RX_MSDU_LINK_9_MSDU_0_BUFFER_ADDR_INFO_DETAILS_BUFFER_ADDR_39_32_LSB 0
  313. #define RX_MSDU_LINK_9_MSDU_0_BUFFER_ADDR_INFO_DETAILS_BUFFER_ADDR_39_32_MASK 0x000000ff
  314. /* Description RX_MSDU_LINK_9_MSDU_0_BUFFER_ADDR_INFO_DETAILS_RETURN_BUFFER_MANAGER
  315. Consumer: WBM
  316. Producer: SW/FW
  317. In case of 'NULL' pointer, this field is set to 0
  318. Indicates to which buffer manager the buffer OR
  319. MSDU_EXTENSION descriptor OR link descriptor that is being
  320. pointed to shall be returned after the frame has been
  321. processed. It is used by WBM for routing purposes.
  322. <enum 0 WBM_IDLE_BUF_LIST> This buffer shall be returned
  323. to the WMB buffer idle list
  324. <enum 1 WBM_IDLE_DESC_LIST> This buffer shall be
  325. returned to the WMB idle link descriptor idle list
  326. <enum 2 FW_BM> This buffer shall be returned to the FW
  327. <enum 3 SW0_BM> This buffer shall be returned to the SW,
  328. ring 0
  329. <enum 4 SW1_BM> This buffer shall be returned to the SW,
  330. ring 1
  331. <enum 5 SW2_BM> This buffer shall be returned to the SW,
  332. ring 2
  333. <enum 6 SW3_BM> This buffer shall be returned to the SW,
  334. ring 3
  335. <enum 7 SW4_BM> This buffer shall be returned to the SW,
  336. ring 4
  337. <legal all>
  338. */
  339. #define RX_MSDU_LINK_9_MSDU_0_BUFFER_ADDR_INFO_DETAILS_RETURN_BUFFER_MANAGER_OFFSET 0x00000024
  340. #define RX_MSDU_LINK_9_MSDU_0_BUFFER_ADDR_INFO_DETAILS_RETURN_BUFFER_MANAGER_LSB 8
  341. #define RX_MSDU_LINK_9_MSDU_0_BUFFER_ADDR_INFO_DETAILS_RETURN_BUFFER_MANAGER_MASK 0x00000700
  342. /* Description RX_MSDU_LINK_9_MSDU_0_BUFFER_ADDR_INFO_DETAILS_SW_BUFFER_COOKIE
  343. Cookie field exclusively used by SW.
  344. In case of 'NULL' pointer, this field is set to 0
  345. HW ignores the contents, accept that it passes the
  346. programmed value on to other descriptors together with the
  347. physical address
  348. Field can be used by SW to for example associate the
  349. buffers physical address with the virtual address
  350. The bit definitions as used by SW are within SW HLD
  351. specification
  352. NOTE:
  353. The three most significant bits can have a special
  354. meaning in case this struct is embedded in a TX_MPDU_DETAILS
  355. STRUCT, and field transmit_bw_restriction is set
  356. In case of NON punctured transmission:
  357. Sw_buffer_cookie[20:19] = 2'b00: 20 MHz TX only
  358. Sw_buffer_cookie[20:19] = 2'b01: 40 MHz TX only
  359. Sw_buffer_cookie[20:19] = 2'b10: 80 MHz TX only
  360. Sw_buffer_cookie[20:19] = 2'b11: 160 MHz TX only
  361. In case of punctured transmission:
  362. Sw_buffer_cookie[20:18] = 3'b000: pattern 0 only
  363. Sw_buffer_cookie[20:18] = 3'b001: pattern 1 only
  364. Sw_buffer_cookie[20:18] = 3'b010: pattern 2 only
  365. Sw_buffer_cookie[20:18] = 3'b011: pattern 3 only
  366. Sw_buffer_cookie[20:18] = 3'b100: pattern 4 only
  367. Sw_buffer_cookie[20:18] = 3'b101: pattern 5 only
  368. Sw_buffer_cookie[20:18] = 3'b110: pattern 6 only
  369. Sw_buffer_cookie[20:18] = 3'b111: pattern 7 only
  370. Note: a punctured transmission is indicated by the
  371. presence of TLV TX_PUNCTURE_SETUP embedded in the scheduler
  372. TLV
  373. <legal all>
  374. */
  375. #define RX_MSDU_LINK_9_MSDU_0_BUFFER_ADDR_INFO_DETAILS_SW_BUFFER_COOKIE_OFFSET 0x00000024
  376. #define RX_MSDU_LINK_9_MSDU_0_BUFFER_ADDR_INFO_DETAILS_SW_BUFFER_COOKIE_LSB 11
  377. #define RX_MSDU_LINK_9_MSDU_0_BUFFER_ADDR_INFO_DETAILS_SW_BUFFER_COOKIE_MASK 0xfffff800
  378. /* EXTERNAL REFERENCE : struct rx_msdu_desc_info rx_msdu_desc_info_details */
  379. /* Description RX_MSDU_LINK_10_MSDU_0_RX_MSDU_DESC_INFO_DETAILS_FIRST_MSDU_IN_MPDU_FLAG
  380. Parsed from RX_MSDU_END TLV . In the case MSDU spans
  381. over multiple buffers, this field will be valid in the Last
  382. buffer used by the MSDU
  383. <enum 0 Not_first_msdu> This is not the first MSDU in
  384. the MPDU.
  385. <enum 1 first_msdu> This MSDU is the first one in the
  386. MPDU.
  387. <legal all>
  388. */
  389. #define RX_MSDU_LINK_10_MSDU_0_RX_MSDU_DESC_INFO_DETAILS_FIRST_MSDU_IN_MPDU_FLAG_OFFSET 0x00000028
  390. #define RX_MSDU_LINK_10_MSDU_0_RX_MSDU_DESC_INFO_DETAILS_FIRST_MSDU_IN_MPDU_FLAG_LSB 0
  391. #define RX_MSDU_LINK_10_MSDU_0_RX_MSDU_DESC_INFO_DETAILS_FIRST_MSDU_IN_MPDU_FLAG_MASK 0x00000001
  392. /* Description RX_MSDU_LINK_10_MSDU_0_RX_MSDU_DESC_INFO_DETAILS_LAST_MSDU_IN_MPDU_FLAG
  393. Consumer: WBM/REO/SW/FW
  394. Producer: RXDMA
  395. Parsed from RX_MSDU_END TLV . In the case MSDU spans
  396. over multiple buffers, this field will be valid in the Last
  397. buffer used by the MSDU
  398. <enum 0 Not_last_msdu> There are more MSDUs linked to
  399. this MSDU that belongs to this MPDU
  400. <enum 1 Last_msdu> this MSDU is the last one in the
  401. MPDU. This setting is only allowed in combination with
  402. 'Msdu_continuation' set to 0. This implies that when an msdu
  403. is spread out over multiple buffers and thus
  404. msdu_continuation is set, only for the very last buffer of
  405. the msdu, can the 'last_msdu_in_mpdu_flag' be set.
  406. When both first_msdu_in_mpdu_flag and
  407. last_msdu_in_mpdu_flag are set, the MPDU that this MSDU
  408. belongs to only contains a single MSDU.
  409. <legal all>
  410. */
  411. #define RX_MSDU_LINK_10_MSDU_0_RX_MSDU_DESC_INFO_DETAILS_LAST_MSDU_IN_MPDU_FLAG_OFFSET 0x00000028
  412. #define RX_MSDU_LINK_10_MSDU_0_RX_MSDU_DESC_INFO_DETAILS_LAST_MSDU_IN_MPDU_FLAG_LSB 1
  413. #define RX_MSDU_LINK_10_MSDU_0_RX_MSDU_DESC_INFO_DETAILS_LAST_MSDU_IN_MPDU_FLAG_MASK 0x00000002
  414. /* Description RX_MSDU_LINK_10_MSDU_0_RX_MSDU_DESC_INFO_DETAILS_MSDU_CONTINUATION
  415. When set, this MSDU buffer was not able to hold the
  416. entire MSDU. The next buffer will therefor contain
  417. additional information related to this MSDU.
  418. <legal all>
  419. */
  420. #define RX_MSDU_LINK_10_MSDU_0_RX_MSDU_DESC_INFO_DETAILS_MSDU_CONTINUATION_OFFSET 0x00000028
  421. #define RX_MSDU_LINK_10_MSDU_0_RX_MSDU_DESC_INFO_DETAILS_MSDU_CONTINUATION_LSB 2
  422. #define RX_MSDU_LINK_10_MSDU_0_RX_MSDU_DESC_INFO_DETAILS_MSDU_CONTINUATION_MASK 0x00000004
  423. /* Description RX_MSDU_LINK_10_MSDU_0_RX_MSDU_DESC_INFO_DETAILS_MSDU_LENGTH
  424. Parsed from RX_MSDU_START TLV . In the case MSDU spans
  425. over multiple buffers, this field will be valid in the First
  426. buffer used by MSDU.
  427. Full MSDU length in bytes after decapsulation.
  428. This field is still valid for MPDU frames without
  429. A-MSDU. It still represents MSDU length after decapsulation
  430. Or in case of RAW MPDUs, it indicates the length of the
  431. entire MPDU (without FCS field)
  432. <legal all>
  433. */
  434. #define RX_MSDU_LINK_10_MSDU_0_RX_MSDU_DESC_INFO_DETAILS_MSDU_LENGTH_OFFSET 0x00000028
  435. #define RX_MSDU_LINK_10_MSDU_0_RX_MSDU_DESC_INFO_DETAILS_MSDU_LENGTH_LSB 3
  436. #define RX_MSDU_LINK_10_MSDU_0_RX_MSDU_DESC_INFO_DETAILS_MSDU_LENGTH_MASK 0x0001fff8
  437. /* Description RX_MSDU_LINK_10_MSDU_0_RX_MSDU_DESC_INFO_DETAILS_REO_DESTINATION_INDICATION
  438. Parsed from RX_MSDU_END TLV . In the case MSDU spans
  439. over multiple buffers, this field will be valid in the Last
  440. buffer used by the MSDU
  441. The ID of the REO exit ring where the MSDU frame shall
  442. push after (MPDU level) reordering has finished.
  443. <enum 0 reo_destination_tcl> Reo will push the frame
  444. into the REO2TCL ring
  445. <enum 1 reo_destination_sw1> Reo will push the frame
  446. into the REO2SW1 ring
  447. <enum 2 reo_destination_sw2> Reo will push the frame
  448. into the REO2SW2 ring
  449. <enum 3 reo_destination_sw3> Reo will push the frame
  450. into the REO2SW3 ring
  451. <enum 4 reo_destination_sw4> Reo will push the frame
  452. into the REO2SW4 ring
  453. <enum 5 reo_destination_release> Reo will push the frame
  454. into the REO_release ring
  455. <enum 6 reo_destination_fw> Reo will push the frame into
  456. the REO2FW ring
  457. <enum 7 reo_destination_sw5> Reo will push the frame
  458. into the REO2SW5 ring
  459. <enum 8 reo_destination_sw6> Reo will push the frame
  460. into the REO2SW6 ring
  461. <enum 9 reo_destination_9> REO remaps this <enum 10
  462. reo_destination_10> REO remaps this
  463. <enum 11 reo_destination_11> REO remaps this
  464. <enum 12 reo_destination_12> REO remaps this <enum 13
  465. reo_destination_13> REO remaps this
  466. <enum 14 reo_destination_14> REO remaps this
  467. <enum 15 reo_destination_15> REO remaps this
  468. <enum 16 reo_destination_16> REO remaps this
  469. <enum 17 reo_destination_17> REO remaps this
  470. <enum 18 reo_destination_18> REO remaps this
  471. <enum 19 reo_destination_19> REO remaps this
  472. <enum 20 reo_destination_20> REO remaps this
  473. <enum 21 reo_destination_21> REO remaps this
  474. <enum 22 reo_destination_22> REO remaps this
  475. <enum 23 reo_destination_23> REO remaps this
  476. <enum 24 reo_destination_24> REO remaps this
  477. <enum 25 reo_destination_25> REO remaps this
  478. <enum 26 reo_destination_26> REO remaps this
  479. <enum 27 reo_destination_27> REO remaps this
  480. <enum 28 reo_destination_28> REO remaps this
  481. <enum 29 reo_destination_29> REO remaps this
  482. <enum 30 reo_destination_30> REO remaps this
  483. <enum 31 reo_destination_31> REO remaps this
  484. <legal all>
  485. */
  486. #define RX_MSDU_LINK_10_MSDU_0_RX_MSDU_DESC_INFO_DETAILS_REO_DESTINATION_INDICATION_OFFSET 0x00000028
  487. #define RX_MSDU_LINK_10_MSDU_0_RX_MSDU_DESC_INFO_DETAILS_REO_DESTINATION_INDICATION_LSB 17
  488. #define RX_MSDU_LINK_10_MSDU_0_RX_MSDU_DESC_INFO_DETAILS_REO_DESTINATION_INDICATION_MASK 0x003e0000
  489. /* Description RX_MSDU_LINK_10_MSDU_0_RX_MSDU_DESC_INFO_DETAILS_MSDU_DROP
  490. Parsed from RX_MSDU_END TLV . In the case MSDU spans
  491. over multiple buffers, this field will be valid in the Last
  492. buffer used by the MSDU
  493. When set, REO shall drop this MSDU and not forward it to
  494. any other ring...
  495. <legal all>
  496. */
  497. #define RX_MSDU_LINK_10_MSDU_0_RX_MSDU_DESC_INFO_DETAILS_MSDU_DROP_OFFSET 0x00000028
  498. #define RX_MSDU_LINK_10_MSDU_0_RX_MSDU_DESC_INFO_DETAILS_MSDU_DROP_LSB 22
  499. #define RX_MSDU_LINK_10_MSDU_0_RX_MSDU_DESC_INFO_DETAILS_MSDU_DROP_MASK 0x00400000
  500. /* Description RX_MSDU_LINK_10_MSDU_0_RX_MSDU_DESC_INFO_DETAILS_SA_IS_VALID
  501. Parsed from RX_MSDU_END TLV . In the case MSDU spans
  502. over multiple buffers, this field will be valid in the Last
  503. buffer used by the MSDU
  504. Indicates that OLE found a valid SA entry for this MSDU
  505. <legal all>
  506. */
  507. #define RX_MSDU_LINK_10_MSDU_0_RX_MSDU_DESC_INFO_DETAILS_SA_IS_VALID_OFFSET 0x00000028
  508. #define RX_MSDU_LINK_10_MSDU_0_RX_MSDU_DESC_INFO_DETAILS_SA_IS_VALID_LSB 23
  509. #define RX_MSDU_LINK_10_MSDU_0_RX_MSDU_DESC_INFO_DETAILS_SA_IS_VALID_MASK 0x00800000
  510. /* Description RX_MSDU_LINK_10_MSDU_0_RX_MSDU_DESC_INFO_DETAILS_SA_IDX_TIMEOUT
  511. Parsed from RX_MSDU_END TLV . In the case MSDU spans
  512. over multiple buffers, this field will be valid in the Last
  513. buffer used by the MSDU
  514. Indicates an unsuccessful MAC source address search due
  515. to the expiring of the search timer for this MSDU
  516. <legal all>
  517. */
  518. #define RX_MSDU_LINK_10_MSDU_0_RX_MSDU_DESC_INFO_DETAILS_SA_IDX_TIMEOUT_OFFSET 0x00000028
  519. #define RX_MSDU_LINK_10_MSDU_0_RX_MSDU_DESC_INFO_DETAILS_SA_IDX_TIMEOUT_LSB 24
  520. #define RX_MSDU_LINK_10_MSDU_0_RX_MSDU_DESC_INFO_DETAILS_SA_IDX_TIMEOUT_MASK 0x01000000
  521. /* Description RX_MSDU_LINK_10_MSDU_0_RX_MSDU_DESC_INFO_DETAILS_DA_IS_VALID
  522. Parsed from RX_MSDU_END TLV . In the case MSDU spans
  523. over multiple buffers, this field will be valid in the Last
  524. buffer used by the MSDU
  525. Indicates that OLE found a valid DA entry for this MSDU
  526. <legal all>
  527. */
  528. #define RX_MSDU_LINK_10_MSDU_0_RX_MSDU_DESC_INFO_DETAILS_DA_IS_VALID_OFFSET 0x00000028
  529. #define RX_MSDU_LINK_10_MSDU_0_RX_MSDU_DESC_INFO_DETAILS_DA_IS_VALID_LSB 25
  530. #define RX_MSDU_LINK_10_MSDU_0_RX_MSDU_DESC_INFO_DETAILS_DA_IS_VALID_MASK 0x02000000
  531. /* Description RX_MSDU_LINK_10_MSDU_0_RX_MSDU_DESC_INFO_DETAILS_DA_IS_MCBC
  532. Field Only valid if da_is_valid is set
  533. Indicates the DA address was a Multicast of Broadcast
  534. address for this MSDU
  535. <legal all>
  536. */
  537. #define RX_MSDU_LINK_10_MSDU_0_RX_MSDU_DESC_INFO_DETAILS_DA_IS_MCBC_OFFSET 0x00000028
  538. #define RX_MSDU_LINK_10_MSDU_0_RX_MSDU_DESC_INFO_DETAILS_DA_IS_MCBC_LSB 26
  539. #define RX_MSDU_LINK_10_MSDU_0_RX_MSDU_DESC_INFO_DETAILS_DA_IS_MCBC_MASK 0x04000000
  540. /* Description RX_MSDU_LINK_10_MSDU_0_RX_MSDU_DESC_INFO_DETAILS_DA_IDX_TIMEOUT
  541. Parsed from RX_MSDU_END TLV . In the case MSDU spans
  542. over multiple buffers, this field will be valid in the Last
  543. buffer used by the MSDU
  544. Indicates an unsuccessful MAC destination address search
  545. due to the expiring of the search timer for this MSDU
  546. <legal all>
  547. */
  548. #define RX_MSDU_LINK_10_MSDU_0_RX_MSDU_DESC_INFO_DETAILS_DA_IDX_TIMEOUT_OFFSET 0x00000028
  549. #define RX_MSDU_LINK_10_MSDU_0_RX_MSDU_DESC_INFO_DETAILS_DA_IDX_TIMEOUT_LSB 27
  550. #define RX_MSDU_LINK_10_MSDU_0_RX_MSDU_DESC_INFO_DETAILS_DA_IDX_TIMEOUT_MASK 0x08000000
  551. /* Description RX_MSDU_LINK_10_MSDU_0_RX_MSDU_DESC_INFO_DETAILS_RESERVED_0A
  552. <legal 0>
  553. */
  554. #define RX_MSDU_LINK_10_MSDU_0_RX_MSDU_DESC_INFO_DETAILS_RESERVED_0A_OFFSET 0x00000028
  555. #define RX_MSDU_LINK_10_MSDU_0_RX_MSDU_DESC_INFO_DETAILS_RESERVED_0A_LSB 28
  556. #define RX_MSDU_LINK_10_MSDU_0_RX_MSDU_DESC_INFO_DETAILS_RESERVED_0A_MASK 0xf0000000
  557. /* Description RX_MSDU_LINK_11_MSDU_0_RX_MSDU_DESC_INFO_DETAILS_RESERVED_1A
  558. <legal 0>
  559. */
  560. #define RX_MSDU_LINK_11_MSDU_0_RX_MSDU_DESC_INFO_DETAILS_RESERVED_1A_OFFSET 0x0000002c
  561. #define RX_MSDU_LINK_11_MSDU_0_RX_MSDU_DESC_INFO_DETAILS_RESERVED_1A_LSB 0
  562. #define RX_MSDU_LINK_11_MSDU_0_RX_MSDU_DESC_INFO_DETAILS_RESERVED_1A_MASK 0xffffffff
  563. /* EXTERNAL REFERENCE : struct rx_msdu_details msdu_1 */
  564. /* EXTERNAL REFERENCE : struct buffer_addr_info buffer_addr_info_details */
  565. /* Description RX_MSDU_LINK_12_MSDU_1_BUFFER_ADDR_INFO_DETAILS_BUFFER_ADDR_31_0
  566. Address (lower 32 bits) of the MSDU buffer OR
  567. MSDU_EXTENSION descriptor OR Link Descriptor
  568. In case of 'NULL' pointer, this field is set to 0
  569. <legal all>
  570. */
  571. #define RX_MSDU_LINK_12_MSDU_1_BUFFER_ADDR_INFO_DETAILS_BUFFER_ADDR_31_0_OFFSET 0x00000030
  572. #define RX_MSDU_LINK_12_MSDU_1_BUFFER_ADDR_INFO_DETAILS_BUFFER_ADDR_31_0_LSB 0
  573. #define RX_MSDU_LINK_12_MSDU_1_BUFFER_ADDR_INFO_DETAILS_BUFFER_ADDR_31_0_MASK 0xffffffff
  574. /* Description RX_MSDU_LINK_13_MSDU_1_BUFFER_ADDR_INFO_DETAILS_BUFFER_ADDR_39_32
  575. Address (upper 8 bits) of the MSDU buffer OR
  576. MSDU_EXTENSION descriptor OR Link Descriptor
  577. In case of 'NULL' pointer, this field is set to 0
  578. <legal all>
  579. */
  580. #define RX_MSDU_LINK_13_MSDU_1_BUFFER_ADDR_INFO_DETAILS_BUFFER_ADDR_39_32_OFFSET 0x00000034
  581. #define RX_MSDU_LINK_13_MSDU_1_BUFFER_ADDR_INFO_DETAILS_BUFFER_ADDR_39_32_LSB 0
  582. #define RX_MSDU_LINK_13_MSDU_1_BUFFER_ADDR_INFO_DETAILS_BUFFER_ADDR_39_32_MASK 0x000000ff
  583. /* Description RX_MSDU_LINK_13_MSDU_1_BUFFER_ADDR_INFO_DETAILS_RETURN_BUFFER_MANAGER
  584. Consumer: WBM
  585. Producer: SW/FW
  586. In case of 'NULL' pointer, this field is set to 0
  587. Indicates to which buffer manager the buffer OR
  588. MSDU_EXTENSION descriptor OR link descriptor that is being
  589. pointed to shall be returned after the frame has been
  590. processed. It is used by WBM for routing purposes.
  591. <enum 0 WBM_IDLE_BUF_LIST> This buffer shall be returned
  592. to the WMB buffer idle list
  593. <enum 1 WBM_IDLE_DESC_LIST> This buffer shall be
  594. returned to the WMB idle link descriptor idle list
  595. <enum 2 FW_BM> This buffer shall be returned to the FW
  596. <enum 3 SW0_BM> This buffer shall be returned to the SW,
  597. ring 0
  598. <enum 4 SW1_BM> This buffer shall be returned to the SW,
  599. ring 1
  600. <enum 5 SW2_BM> This buffer shall be returned to the SW,
  601. ring 2
  602. <enum 6 SW3_BM> This buffer shall be returned to the SW,
  603. ring 3
  604. <enum 7 SW4_BM> This buffer shall be returned to the SW,
  605. ring 4
  606. <legal all>
  607. */
  608. #define RX_MSDU_LINK_13_MSDU_1_BUFFER_ADDR_INFO_DETAILS_RETURN_BUFFER_MANAGER_OFFSET 0x00000034
  609. #define RX_MSDU_LINK_13_MSDU_1_BUFFER_ADDR_INFO_DETAILS_RETURN_BUFFER_MANAGER_LSB 8
  610. #define RX_MSDU_LINK_13_MSDU_1_BUFFER_ADDR_INFO_DETAILS_RETURN_BUFFER_MANAGER_MASK 0x00000700
  611. /* Description RX_MSDU_LINK_13_MSDU_1_BUFFER_ADDR_INFO_DETAILS_SW_BUFFER_COOKIE
  612. Cookie field exclusively used by SW.
  613. In case of 'NULL' pointer, this field is set to 0
  614. HW ignores the contents, accept that it passes the
  615. programmed value on to other descriptors together with the
  616. physical address
  617. Field can be used by SW to for example associate the
  618. buffers physical address with the virtual address
  619. The bit definitions as used by SW are within SW HLD
  620. specification
  621. NOTE:
  622. The three most significant bits can have a special
  623. meaning in case this struct is embedded in a TX_MPDU_DETAILS
  624. STRUCT, and field transmit_bw_restriction is set
  625. In case of NON punctured transmission:
  626. Sw_buffer_cookie[20:19] = 2'b00: 20 MHz TX only
  627. Sw_buffer_cookie[20:19] = 2'b01: 40 MHz TX only
  628. Sw_buffer_cookie[20:19] = 2'b10: 80 MHz TX only
  629. Sw_buffer_cookie[20:19] = 2'b11: 160 MHz TX only
  630. In case of punctured transmission:
  631. Sw_buffer_cookie[20:18] = 3'b000: pattern 0 only
  632. Sw_buffer_cookie[20:18] = 3'b001: pattern 1 only
  633. Sw_buffer_cookie[20:18] = 3'b010: pattern 2 only
  634. Sw_buffer_cookie[20:18] = 3'b011: pattern 3 only
  635. Sw_buffer_cookie[20:18] = 3'b100: pattern 4 only
  636. Sw_buffer_cookie[20:18] = 3'b101: pattern 5 only
  637. Sw_buffer_cookie[20:18] = 3'b110: pattern 6 only
  638. Sw_buffer_cookie[20:18] = 3'b111: pattern 7 only
  639. Note: a punctured transmission is indicated by the
  640. presence of TLV TX_PUNCTURE_SETUP embedded in the scheduler
  641. TLV
  642. <legal all>
  643. */
  644. #define RX_MSDU_LINK_13_MSDU_1_BUFFER_ADDR_INFO_DETAILS_SW_BUFFER_COOKIE_OFFSET 0x00000034
  645. #define RX_MSDU_LINK_13_MSDU_1_BUFFER_ADDR_INFO_DETAILS_SW_BUFFER_COOKIE_LSB 11
  646. #define RX_MSDU_LINK_13_MSDU_1_BUFFER_ADDR_INFO_DETAILS_SW_BUFFER_COOKIE_MASK 0xfffff800
  647. /* EXTERNAL REFERENCE : struct rx_msdu_desc_info rx_msdu_desc_info_details */
  648. /* Description RX_MSDU_LINK_14_MSDU_1_RX_MSDU_DESC_INFO_DETAILS_FIRST_MSDU_IN_MPDU_FLAG
  649. Parsed from RX_MSDU_END TLV . In the case MSDU spans
  650. over multiple buffers, this field will be valid in the Last
  651. buffer used by the MSDU
  652. <enum 0 Not_first_msdu> This is not the first MSDU in
  653. the MPDU.
  654. <enum 1 first_msdu> This MSDU is the first one in the
  655. MPDU.
  656. <legal all>
  657. */
  658. #define RX_MSDU_LINK_14_MSDU_1_RX_MSDU_DESC_INFO_DETAILS_FIRST_MSDU_IN_MPDU_FLAG_OFFSET 0x00000038
  659. #define RX_MSDU_LINK_14_MSDU_1_RX_MSDU_DESC_INFO_DETAILS_FIRST_MSDU_IN_MPDU_FLAG_LSB 0
  660. #define RX_MSDU_LINK_14_MSDU_1_RX_MSDU_DESC_INFO_DETAILS_FIRST_MSDU_IN_MPDU_FLAG_MASK 0x00000001
  661. /* Description RX_MSDU_LINK_14_MSDU_1_RX_MSDU_DESC_INFO_DETAILS_LAST_MSDU_IN_MPDU_FLAG
  662. Consumer: WBM/REO/SW/FW
  663. Producer: RXDMA
  664. Parsed from RX_MSDU_END TLV . In the case MSDU spans
  665. over multiple buffers, this field will be valid in the Last
  666. buffer used by the MSDU
  667. <enum 0 Not_last_msdu> There are more MSDUs linked to
  668. this MSDU that belongs to this MPDU
  669. <enum 1 Last_msdu> this MSDU is the last one in the
  670. MPDU. This setting is only allowed in combination with
  671. 'Msdu_continuation' set to 0. This implies that when an msdu
  672. is spread out over multiple buffers and thus
  673. msdu_continuation is set, only for the very last buffer of
  674. the msdu, can the 'last_msdu_in_mpdu_flag' be set.
  675. When both first_msdu_in_mpdu_flag and
  676. last_msdu_in_mpdu_flag are set, the MPDU that this MSDU
  677. belongs to only contains a single MSDU.
  678. <legal all>
  679. */
  680. #define RX_MSDU_LINK_14_MSDU_1_RX_MSDU_DESC_INFO_DETAILS_LAST_MSDU_IN_MPDU_FLAG_OFFSET 0x00000038
  681. #define RX_MSDU_LINK_14_MSDU_1_RX_MSDU_DESC_INFO_DETAILS_LAST_MSDU_IN_MPDU_FLAG_LSB 1
  682. #define RX_MSDU_LINK_14_MSDU_1_RX_MSDU_DESC_INFO_DETAILS_LAST_MSDU_IN_MPDU_FLAG_MASK 0x00000002
  683. /* Description RX_MSDU_LINK_14_MSDU_1_RX_MSDU_DESC_INFO_DETAILS_MSDU_CONTINUATION
  684. When set, this MSDU buffer was not able to hold the
  685. entire MSDU. The next buffer will therefor contain
  686. additional information related to this MSDU.
  687. <legal all>
  688. */
  689. #define RX_MSDU_LINK_14_MSDU_1_RX_MSDU_DESC_INFO_DETAILS_MSDU_CONTINUATION_OFFSET 0x00000038
  690. #define RX_MSDU_LINK_14_MSDU_1_RX_MSDU_DESC_INFO_DETAILS_MSDU_CONTINUATION_LSB 2
  691. #define RX_MSDU_LINK_14_MSDU_1_RX_MSDU_DESC_INFO_DETAILS_MSDU_CONTINUATION_MASK 0x00000004
  692. /* Description RX_MSDU_LINK_14_MSDU_1_RX_MSDU_DESC_INFO_DETAILS_MSDU_LENGTH
  693. Parsed from RX_MSDU_START TLV . In the case MSDU spans
  694. over multiple buffers, this field will be valid in the First
  695. buffer used by MSDU.
  696. Full MSDU length in bytes after decapsulation.
  697. This field is still valid for MPDU frames without
  698. A-MSDU. It still represents MSDU length after decapsulation
  699. Or in case of RAW MPDUs, it indicates the length of the
  700. entire MPDU (without FCS field)
  701. <legal all>
  702. */
  703. #define RX_MSDU_LINK_14_MSDU_1_RX_MSDU_DESC_INFO_DETAILS_MSDU_LENGTH_OFFSET 0x00000038
  704. #define RX_MSDU_LINK_14_MSDU_1_RX_MSDU_DESC_INFO_DETAILS_MSDU_LENGTH_LSB 3
  705. #define RX_MSDU_LINK_14_MSDU_1_RX_MSDU_DESC_INFO_DETAILS_MSDU_LENGTH_MASK 0x0001fff8
  706. /* Description RX_MSDU_LINK_14_MSDU_1_RX_MSDU_DESC_INFO_DETAILS_REO_DESTINATION_INDICATION
  707. Parsed from RX_MSDU_END TLV . In the case MSDU spans
  708. over multiple buffers, this field will be valid in the Last
  709. buffer used by the MSDU
  710. The ID of the REO exit ring where the MSDU frame shall
  711. push after (MPDU level) reordering has finished.
  712. <enum 0 reo_destination_tcl> Reo will push the frame
  713. into the REO2TCL ring
  714. <enum 1 reo_destination_sw1> Reo will push the frame
  715. into the REO2SW1 ring
  716. <enum 2 reo_destination_sw2> Reo will push the frame
  717. into the REO2SW2 ring
  718. <enum 3 reo_destination_sw3> Reo will push the frame
  719. into the REO2SW3 ring
  720. <enum 4 reo_destination_sw4> Reo will push the frame
  721. into the REO2SW4 ring
  722. <enum 5 reo_destination_release> Reo will push the frame
  723. into the REO_release ring
  724. <enum 6 reo_destination_fw> Reo will push the frame into
  725. the REO2FW ring
  726. <enum 7 reo_destination_sw5> Reo will push the frame
  727. into the REO2SW5 ring
  728. <enum 8 reo_destination_sw6> Reo will push the frame
  729. into the REO2SW6 ring
  730. <enum 9 reo_destination_9> REO remaps this <enum 10
  731. reo_destination_10> REO remaps this
  732. <enum 11 reo_destination_11> REO remaps this
  733. <enum 12 reo_destination_12> REO remaps this <enum 13
  734. reo_destination_13> REO remaps this
  735. <enum 14 reo_destination_14> REO remaps this
  736. <enum 15 reo_destination_15> REO remaps this
  737. <enum 16 reo_destination_16> REO remaps this
  738. <enum 17 reo_destination_17> REO remaps this
  739. <enum 18 reo_destination_18> REO remaps this
  740. <enum 19 reo_destination_19> REO remaps this
  741. <enum 20 reo_destination_20> REO remaps this
  742. <enum 21 reo_destination_21> REO remaps this
  743. <enum 22 reo_destination_22> REO remaps this
  744. <enum 23 reo_destination_23> REO remaps this
  745. <enum 24 reo_destination_24> REO remaps this
  746. <enum 25 reo_destination_25> REO remaps this
  747. <enum 26 reo_destination_26> REO remaps this
  748. <enum 27 reo_destination_27> REO remaps this
  749. <enum 28 reo_destination_28> REO remaps this
  750. <enum 29 reo_destination_29> REO remaps this
  751. <enum 30 reo_destination_30> REO remaps this
  752. <enum 31 reo_destination_31> REO remaps this
  753. <legal all>
  754. */
  755. #define RX_MSDU_LINK_14_MSDU_1_RX_MSDU_DESC_INFO_DETAILS_REO_DESTINATION_INDICATION_OFFSET 0x00000038
  756. #define RX_MSDU_LINK_14_MSDU_1_RX_MSDU_DESC_INFO_DETAILS_REO_DESTINATION_INDICATION_LSB 17
  757. #define RX_MSDU_LINK_14_MSDU_1_RX_MSDU_DESC_INFO_DETAILS_REO_DESTINATION_INDICATION_MASK 0x003e0000
  758. /* Description RX_MSDU_LINK_14_MSDU_1_RX_MSDU_DESC_INFO_DETAILS_MSDU_DROP
  759. Parsed from RX_MSDU_END TLV . In the case MSDU spans
  760. over multiple buffers, this field will be valid in the Last
  761. buffer used by the MSDU
  762. When set, REO shall drop this MSDU and not forward it to
  763. any other ring...
  764. <legal all>
  765. */
  766. #define RX_MSDU_LINK_14_MSDU_1_RX_MSDU_DESC_INFO_DETAILS_MSDU_DROP_OFFSET 0x00000038
  767. #define RX_MSDU_LINK_14_MSDU_1_RX_MSDU_DESC_INFO_DETAILS_MSDU_DROP_LSB 22
  768. #define RX_MSDU_LINK_14_MSDU_1_RX_MSDU_DESC_INFO_DETAILS_MSDU_DROP_MASK 0x00400000
  769. /* Description RX_MSDU_LINK_14_MSDU_1_RX_MSDU_DESC_INFO_DETAILS_SA_IS_VALID
  770. Parsed from RX_MSDU_END TLV . In the case MSDU spans
  771. over multiple buffers, this field will be valid in the Last
  772. buffer used by the MSDU
  773. Indicates that OLE found a valid SA entry for this MSDU
  774. <legal all>
  775. */
  776. #define RX_MSDU_LINK_14_MSDU_1_RX_MSDU_DESC_INFO_DETAILS_SA_IS_VALID_OFFSET 0x00000038
  777. #define RX_MSDU_LINK_14_MSDU_1_RX_MSDU_DESC_INFO_DETAILS_SA_IS_VALID_LSB 23
  778. #define RX_MSDU_LINK_14_MSDU_1_RX_MSDU_DESC_INFO_DETAILS_SA_IS_VALID_MASK 0x00800000
  779. /* Description RX_MSDU_LINK_14_MSDU_1_RX_MSDU_DESC_INFO_DETAILS_SA_IDX_TIMEOUT
  780. Parsed from RX_MSDU_END TLV . In the case MSDU spans
  781. over multiple buffers, this field will be valid in the Last
  782. buffer used by the MSDU
  783. Indicates an unsuccessful MAC source address search due
  784. to the expiring of the search timer for this MSDU
  785. <legal all>
  786. */
  787. #define RX_MSDU_LINK_14_MSDU_1_RX_MSDU_DESC_INFO_DETAILS_SA_IDX_TIMEOUT_OFFSET 0x00000038
  788. #define RX_MSDU_LINK_14_MSDU_1_RX_MSDU_DESC_INFO_DETAILS_SA_IDX_TIMEOUT_LSB 24
  789. #define RX_MSDU_LINK_14_MSDU_1_RX_MSDU_DESC_INFO_DETAILS_SA_IDX_TIMEOUT_MASK 0x01000000
  790. /* Description RX_MSDU_LINK_14_MSDU_1_RX_MSDU_DESC_INFO_DETAILS_DA_IS_VALID
  791. Parsed from RX_MSDU_END TLV . In the case MSDU spans
  792. over multiple buffers, this field will be valid in the Last
  793. buffer used by the MSDU
  794. Indicates that OLE found a valid DA entry for this MSDU
  795. <legal all>
  796. */
  797. #define RX_MSDU_LINK_14_MSDU_1_RX_MSDU_DESC_INFO_DETAILS_DA_IS_VALID_OFFSET 0x00000038
  798. #define RX_MSDU_LINK_14_MSDU_1_RX_MSDU_DESC_INFO_DETAILS_DA_IS_VALID_LSB 25
  799. #define RX_MSDU_LINK_14_MSDU_1_RX_MSDU_DESC_INFO_DETAILS_DA_IS_VALID_MASK 0x02000000
  800. /* Description RX_MSDU_LINK_14_MSDU_1_RX_MSDU_DESC_INFO_DETAILS_DA_IS_MCBC
  801. Field Only valid if da_is_valid is set
  802. Indicates the DA address was a Multicast of Broadcast
  803. address for this MSDU
  804. <legal all>
  805. */
  806. #define RX_MSDU_LINK_14_MSDU_1_RX_MSDU_DESC_INFO_DETAILS_DA_IS_MCBC_OFFSET 0x00000038
  807. #define RX_MSDU_LINK_14_MSDU_1_RX_MSDU_DESC_INFO_DETAILS_DA_IS_MCBC_LSB 26
  808. #define RX_MSDU_LINK_14_MSDU_1_RX_MSDU_DESC_INFO_DETAILS_DA_IS_MCBC_MASK 0x04000000
  809. /* Description RX_MSDU_LINK_14_MSDU_1_RX_MSDU_DESC_INFO_DETAILS_DA_IDX_TIMEOUT
  810. Parsed from RX_MSDU_END TLV . In the case MSDU spans
  811. over multiple buffers, this field will be valid in the Last
  812. buffer used by the MSDU
  813. Indicates an unsuccessful MAC destination address search
  814. due to the expiring of the search timer for this MSDU
  815. <legal all>
  816. */
  817. #define RX_MSDU_LINK_14_MSDU_1_RX_MSDU_DESC_INFO_DETAILS_DA_IDX_TIMEOUT_OFFSET 0x00000038
  818. #define RX_MSDU_LINK_14_MSDU_1_RX_MSDU_DESC_INFO_DETAILS_DA_IDX_TIMEOUT_LSB 27
  819. #define RX_MSDU_LINK_14_MSDU_1_RX_MSDU_DESC_INFO_DETAILS_DA_IDX_TIMEOUT_MASK 0x08000000
  820. /* Description RX_MSDU_LINK_14_MSDU_1_RX_MSDU_DESC_INFO_DETAILS_RESERVED_0A
  821. <legal 0>
  822. */
  823. #define RX_MSDU_LINK_14_MSDU_1_RX_MSDU_DESC_INFO_DETAILS_RESERVED_0A_OFFSET 0x00000038
  824. #define RX_MSDU_LINK_14_MSDU_1_RX_MSDU_DESC_INFO_DETAILS_RESERVED_0A_LSB 28
  825. #define RX_MSDU_LINK_14_MSDU_1_RX_MSDU_DESC_INFO_DETAILS_RESERVED_0A_MASK 0xf0000000
  826. /* Description RX_MSDU_LINK_15_MSDU_1_RX_MSDU_DESC_INFO_DETAILS_RESERVED_1A
  827. <legal 0>
  828. */
  829. #define RX_MSDU_LINK_15_MSDU_1_RX_MSDU_DESC_INFO_DETAILS_RESERVED_1A_OFFSET 0x0000003c
  830. #define RX_MSDU_LINK_15_MSDU_1_RX_MSDU_DESC_INFO_DETAILS_RESERVED_1A_LSB 0
  831. #define RX_MSDU_LINK_15_MSDU_1_RX_MSDU_DESC_INFO_DETAILS_RESERVED_1A_MASK 0xffffffff
  832. /* EXTERNAL REFERENCE : struct rx_msdu_details msdu_2 */
  833. /* EXTERNAL REFERENCE : struct buffer_addr_info buffer_addr_info_details */
  834. /* Description RX_MSDU_LINK_16_MSDU_2_BUFFER_ADDR_INFO_DETAILS_BUFFER_ADDR_31_0
  835. Address (lower 32 bits) of the MSDU buffer OR
  836. MSDU_EXTENSION descriptor OR Link Descriptor
  837. In case of 'NULL' pointer, this field is set to 0
  838. <legal all>
  839. */
  840. #define RX_MSDU_LINK_16_MSDU_2_BUFFER_ADDR_INFO_DETAILS_BUFFER_ADDR_31_0_OFFSET 0x00000040
  841. #define RX_MSDU_LINK_16_MSDU_2_BUFFER_ADDR_INFO_DETAILS_BUFFER_ADDR_31_0_LSB 0
  842. #define RX_MSDU_LINK_16_MSDU_2_BUFFER_ADDR_INFO_DETAILS_BUFFER_ADDR_31_0_MASK 0xffffffff
  843. /* Description RX_MSDU_LINK_17_MSDU_2_BUFFER_ADDR_INFO_DETAILS_BUFFER_ADDR_39_32
  844. Address (upper 8 bits) of the MSDU buffer OR
  845. MSDU_EXTENSION descriptor OR Link Descriptor
  846. In case of 'NULL' pointer, this field is set to 0
  847. <legal all>
  848. */
  849. #define RX_MSDU_LINK_17_MSDU_2_BUFFER_ADDR_INFO_DETAILS_BUFFER_ADDR_39_32_OFFSET 0x00000044
  850. #define RX_MSDU_LINK_17_MSDU_2_BUFFER_ADDR_INFO_DETAILS_BUFFER_ADDR_39_32_LSB 0
  851. #define RX_MSDU_LINK_17_MSDU_2_BUFFER_ADDR_INFO_DETAILS_BUFFER_ADDR_39_32_MASK 0x000000ff
  852. /* Description RX_MSDU_LINK_17_MSDU_2_BUFFER_ADDR_INFO_DETAILS_RETURN_BUFFER_MANAGER
  853. Consumer: WBM
  854. Producer: SW/FW
  855. In case of 'NULL' pointer, this field is set to 0
  856. Indicates to which buffer manager the buffer OR
  857. MSDU_EXTENSION descriptor OR link descriptor that is being
  858. pointed to shall be returned after the frame has been
  859. processed. It is used by WBM for routing purposes.
  860. <enum 0 WBM_IDLE_BUF_LIST> This buffer shall be returned
  861. to the WMB buffer idle list
  862. <enum 1 WBM_IDLE_DESC_LIST> This buffer shall be
  863. returned to the WMB idle link descriptor idle list
  864. <enum 2 FW_BM> This buffer shall be returned to the FW
  865. <enum 3 SW0_BM> This buffer shall be returned to the SW,
  866. ring 0
  867. <enum 4 SW1_BM> This buffer shall be returned to the SW,
  868. ring 1
  869. <enum 5 SW2_BM> This buffer shall be returned to the SW,
  870. ring 2
  871. <enum 6 SW3_BM> This buffer shall be returned to the SW,
  872. ring 3
  873. <enum 7 SW4_BM> This buffer shall be returned to the SW,
  874. ring 4
  875. <legal all>
  876. */
  877. #define RX_MSDU_LINK_17_MSDU_2_BUFFER_ADDR_INFO_DETAILS_RETURN_BUFFER_MANAGER_OFFSET 0x00000044
  878. #define RX_MSDU_LINK_17_MSDU_2_BUFFER_ADDR_INFO_DETAILS_RETURN_BUFFER_MANAGER_LSB 8
  879. #define RX_MSDU_LINK_17_MSDU_2_BUFFER_ADDR_INFO_DETAILS_RETURN_BUFFER_MANAGER_MASK 0x00000700
  880. /* Description RX_MSDU_LINK_17_MSDU_2_BUFFER_ADDR_INFO_DETAILS_SW_BUFFER_COOKIE
  881. Cookie field exclusively used by SW.
  882. In case of 'NULL' pointer, this field is set to 0
  883. HW ignores the contents, accept that it passes the
  884. programmed value on to other descriptors together with the
  885. physical address
  886. Field can be used by SW to for example associate the
  887. buffers physical address with the virtual address
  888. The bit definitions as used by SW are within SW HLD
  889. specification
  890. NOTE:
  891. The three most significant bits can have a special
  892. meaning in case this struct is embedded in a TX_MPDU_DETAILS
  893. STRUCT, and field transmit_bw_restriction is set
  894. In case of NON punctured transmission:
  895. Sw_buffer_cookie[20:19] = 2'b00: 20 MHz TX only
  896. Sw_buffer_cookie[20:19] = 2'b01: 40 MHz TX only
  897. Sw_buffer_cookie[20:19] = 2'b10: 80 MHz TX only
  898. Sw_buffer_cookie[20:19] = 2'b11: 160 MHz TX only
  899. In case of punctured transmission:
  900. Sw_buffer_cookie[20:18] = 3'b000: pattern 0 only
  901. Sw_buffer_cookie[20:18] = 3'b001: pattern 1 only
  902. Sw_buffer_cookie[20:18] = 3'b010: pattern 2 only
  903. Sw_buffer_cookie[20:18] = 3'b011: pattern 3 only
  904. Sw_buffer_cookie[20:18] = 3'b100: pattern 4 only
  905. Sw_buffer_cookie[20:18] = 3'b101: pattern 5 only
  906. Sw_buffer_cookie[20:18] = 3'b110: pattern 6 only
  907. Sw_buffer_cookie[20:18] = 3'b111: pattern 7 only
  908. Note: a punctured transmission is indicated by the
  909. presence of TLV TX_PUNCTURE_SETUP embedded in the scheduler
  910. TLV
  911. <legal all>
  912. */
  913. #define RX_MSDU_LINK_17_MSDU_2_BUFFER_ADDR_INFO_DETAILS_SW_BUFFER_COOKIE_OFFSET 0x00000044
  914. #define RX_MSDU_LINK_17_MSDU_2_BUFFER_ADDR_INFO_DETAILS_SW_BUFFER_COOKIE_LSB 11
  915. #define RX_MSDU_LINK_17_MSDU_2_BUFFER_ADDR_INFO_DETAILS_SW_BUFFER_COOKIE_MASK 0xfffff800
  916. /* EXTERNAL REFERENCE : struct rx_msdu_desc_info rx_msdu_desc_info_details */
  917. /* Description RX_MSDU_LINK_18_MSDU_2_RX_MSDU_DESC_INFO_DETAILS_FIRST_MSDU_IN_MPDU_FLAG
  918. Parsed from RX_MSDU_END TLV . In the case MSDU spans
  919. over multiple buffers, this field will be valid in the Last
  920. buffer used by the MSDU
  921. <enum 0 Not_first_msdu> This is not the first MSDU in
  922. the MPDU.
  923. <enum 1 first_msdu> This MSDU is the first one in the
  924. MPDU.
  925. <legal all>
  926. */
  927. #define RX_MSDU_LINK_18_MSDU_2_RX_MSDU_DESC_INFO_DETAILS_FIRST_MSDU_IN_MPDU_FLAG_OFFSET 0x00000048
  928. #define RX_MSDU_LINK_18_MSDU_2_RX_MSDU_DESC_INFO_DETAILS_FIRST_MSDU_IN_MPDU_FLAG_LSB 0
  929. #define RX_MSDU_LINK_18_MSDU_2_RX_MSDU_DESC_INFO_DETAILS_FIRST_MSDU_IN_MPDU_FLAG_MASK 0x00000001
  930. /* Description RX_MSDU_LINK_18_MSDU_2_RX_MSDU_DESC_INFO_DETAILS_LAST_MSDU_IN_MPDU_FLAG
  931. Consumer: WBM/REO/SW/FW
  932. Producer: RXDMA
  933. Parsed from RX_MSDU_END TLV . In the case MSDU spans
  934. over multiple buffers, this field will be valid in the Last
  935. buffer used by the MSDU
  936. <enum 0 Not_last_msdu> There are more MSDUs linked to
  937. this MSDU that belongs to this MPDU
  938. <enum 1 Last_msdu> this MSDU is the last one in the
  939. MPDU. This setting is only allowed in combination with
  940. 'Msdu_continuation' set to 0. This implies that when an msdu
  941. is spread out over multiple buffers and thus
  942. msdu_continuation is set, only for the very last buffer of
  943. the msdu, can the 'last_msdu_in_mpdu_flag' be set.
  944. When both first_msdu_in_mpdu_flag and
  945. last_msdu_in_mpdu_flag are set, the MPDU that this MSDU
  946. belongs to only contains a single MSDU.
  947. <legal all>
  948. */
  949. #define RX_MSDU_LINK_18_MSDU_2_RX_MSDU_DESC_INFO_DETAILS_LAST_MSDU_IN_MPDU_FLAG_OFFSET 0x00000048
  950. #define RX_MSDU_LINK_18_MSDU_2_RX_MSDU_DESC_INFO_DETAILS_LAST_MSDU_IN_MPDU_FLAG_LSB 1
  951. #define RX_MSDU_LINK_18_MSDU_2_RX_MSDU_DESC_INFO_DETAILS_LAST_MSDU_IN_MPDU_FLAG_MASK 0x00000002
  952. /* Description RX_MSDU_LINK_18_MSDU_2_RX_MSDU_DESC_INFO_DETAILS_MSDU_CONTINUATION
  953. When set, this MSDU buffer was not able to hold the
  954. entire MSDU. The next buffer will therefor contain
  955. additional information related to this MSDU.
  956. <legal all>
  957. */
  958. #define RX_MSDU_LINK_18_MSDU_2_RX_MSDU_DESC_INFO_DETAILS_MSDU_CONTINUATION_OFFSET 0x00000048
  959. #define RX_MSDU_LINK_18_MSDU_2_RX_MSDU_DESC_INFO_DETAILS_MSDU_CONTINUATION_LSB 2
  960. #define RX_MSDU_LINK_18_MSDU_2_RX_MSDU_DESC_INFO_DETAILS_MSDU_CONTINUATION_MASK 0x00000004
  961. /* Description RX_MSDU_LINK_18_MSDU_2_RX_MSDU_DESC_INFO_DETAILS_MSDU_LENGTH
  962. Parsed from RX_MSDU_START TLV . In the case MSDU spans
  963. over multiple buffers, this field will be valid in the First
  964. buffer used by MSDU.
  965. Full MSDU length in bytes after decapsulation.
  966. This field is still valid for MPDU frames without
  967. A-MSDU. It still represents MSDU length after decapsulation
  968. Or in case of RAW MPDUs, it indicates the length of the
  969. entire MPDU (without FCS field)
  970. <legal all>
  971. */
  972. #define RX_MSDU_LINK_18_MSDU_2_RX_MSDU_DESC_INFO_DETAILS_MSDU_LENGTH_OFFSET 0x00000048
  973. #define RX_MSDU_LINK_18_MSDU_2_RX_MSDU_DESC_INFO_DETAILS_MSDU_LENGTH_LSB 3
  974. #define RX_MSDU_LINK_18_MSDU_2_RX_MSDU_DESC_INFO_DETAILS_MSDU_LENGTH_MASK 0x0001fff8
  975. /* Description RX_MSDU_LINK_18_MSDU_2_RX_MSDU_DESC_INFO_DETAILS_REO_DESTINATION_INDICATION
  976. Parsed from RX_MSDU_END TLV . In the case MSDU spans
  977. over multiple buffers, this field will be valid in the Last
  978. buffer used by the MSDU
  979. The ID of the REO exit ring where the MSDU frame shall
  980. push after (MPDU level) reordering has finished.
  981. <enum 0 reo_destination_tcl> Reo will push the frame
  982. into the REO2TCL ring
  983. <enum 1 reo_destination_sw1> Reo will push the frame
  984. into the REO2SW1 ring
  985. <enum 2 reo_destination_sw2> Reo will push the frame
  986. into the REO2SW2 ring
  987. <enum 3 reo_destination_sw3> Reo will push the frame
  988. into the REO2SW3 ring
  989. <enum 4 reo_destination_sw4> Reo will push the frame
  990. into the REO2SW4 ring
  991. <enum 5 reo_destination_release> Reo will push the frame
  992. into the REO_release ring
  993. <enum 6 reo_destination_fw> Reo will push the frame into
  994. the REO2FW ring
  995. <enum 7 reo_destination_sw5> Reo will push the frame
  996. into the REO2SW5 ring
  997. <enum 8 reo_destination_sw6> Reo will push the frame
  998. into the REO2SW6 ring
  999. <enum 9 reo_destination_9> REO remaps this <enum 10
  1000. reo_destination_10> REO remaps this
  1001. <enum 11 reo_destination_11> REO remaps this
  1002. <enum 12 reo_destination_12> REO remaps this <enum 13
  1003. reo_destination_13> REO remaps this
  1004. <enum 14 reo_destination_14> REO remaps this
  1005. <enum 15 reo_destination_15> REO remaps this
  1006. <enum 16 reo_destination_16> REO remaps this
  1007. <enum 17 reo_destination_17> REO remaps this
  1008. <enum 18 reo_destination_18> REO remaps this
  1009. <enum 19 reo_destination_19> REO remaps this
  1010. <enum 20 reo_destination_20> REO remaps this
  1011. <enum 21 reo_destination_21> REO remaps this
  1012. <enum 22 reo_destination_22> REO remaps this
  1013. <enum 23 reo_destination_23> REO remaps this
  1014. <enum 24 reo_destination_24> REO remaps this
  1015. <enum 25 reo_destination_25> REO remaps this
  1016. <enum 26 reo_destination_26> REO remaps this
  1017. <enum 27 reo_destination_27> REO remaps this
  1018. <enum 28 reo_destination_28> REO remaps this
  1019. <enum 29 reo_destination_29> REO remaps this
  1020. <enum 30 reo_destination_30> REO remaps this
  1021. <enum 31 reo_destination_31> REO remaps this
  1022. <legal all>
  1023. */
  1024. #define RX_MSDU_LINK_18_MSDU_2_RX_MSDU_DESC_INFO_DETAILS_REO_DESTINATION_INDICATION_OFFSET 0x00000048
  1025. #define RX_MSDU_LINK_18_MSDU_2_RX_MSDU_DESC_INFO_DETAILS_REO_DESTINATION_INDICATION_LSB 17
  1026. #define RX_MSDU_LINK_18_MSDU_2_RX_MSDU_DESC_INFO_DETAILS_REO_DESTINATION_INDICATION_MASK 0x003e0000
  1027. /* Description RX_MSDU_LINK_18_MSDU_2_RX_MSDU_DESC_INFO_DETAILS_MSDU_DROP
  1028. Parsed from RX_MSDU_END TLV . In the case MSDU spans
  1029. over multiple buffers, this field will be valid in the Last
  1030. buffer used by the MSDU
  1031. When set, REO shall drop this MSDU and not forward it to
  1032. any other ring...
  1033. <legal all>
  1034. */
  1035. #define RX_MSDU_LINK_18_MSDU_2_RX_MSDU_DESC_INFO_DETAILS_MSDU_DROP_OFFSET 0x00000048
  1036. #define RX_MSDU_LINK_18_MSDU_2_RX_MSDU_DESC_INFO_DETAILS_MSDU_DROP_LSB 22
  1037. #define RX_MSDU_LINK_18_MSDU_2_RX_MSDU_DESC_INFO_DETAILS_MSDU_DROP_MASK 0x00400000
  1038. /* Description RX_MSDU_LINK_18_MSDU_2_RX_MSDU_DESC_INFO_DETAILS_SA_IS_VALID
  1039. Parsed from RX_MSDU_END TLV . In the case MSDU spans
  1040. over multiple buffers, this field will be valid in the Last
  1041. buffer used by the MSDU
  1042. Indicates that OLE found a valid SA entry for this MSDU
  1043. <legal all>
  1044. */
  1045. #define RX_MSDU_LINK_18_MSDU_2_RX_MSDU_DESC_INFO_DETAILS_SA_IS_VALID_OFFSET 0x00000048
  1046. #define RX_MSDU_LINK_18_MSDU_2_RX_MSDU_DESC_INFO_DETAILS_SA_IS_VALID_LSB 23
  1047. #define RX_MSDU_LINK_18_MSDU_2_RX_MSDU_DESC_INFO_DETAILS_SA_IS_VALID_MASK 0x00800000
  1048. /* Description RX_MSDU_LINK_18_MSDU_2_RX_MSDU_DESC_INFO_DETAILS_SA_IDX_TIMEOUT
  1049. Parsed from RX_MSDU_END TLV . In the case MSDU spans
  1050. over multiple buffers, this field will be valid in the Last
  1051. buffer used by the MSDU
  1052. Indicates an unsuccessful MAC source address search due
  1053. to the expiring of the search timer for this MSDU
  1054. <legal all>
  1055. */
  1056. #define RX_MSDU_LINK_18_MSDU_2_RX_MSDU_DESC_INFO_DETAILS_SA_IDX_TIMEOUT_OFFSET 0x00000048
  1057. #define RX_MSDU_LINK_18_MSDU_2_RX_MSDU_DESC_INFO_DETAILS_SA_IDX_TIMEOUT_LSB 24
  1058. #define RX_MSDU_LINK_18_MSDU_2_RX_MSDU_DESC_INFO_DETAILS_SA_IDX_TIMEOUT_MASK 0x01000000
  1059. /* Description RX_MSDU_LINK_18_MSDU_2_RX_MSDU_DESC_INFO_DETAILS_DA_IS_VALID
  1060. Parsed from RX_MSDU_END TLV . In the case MSDU spans
  1061. over multiple buffers, this field will be valid in the Last
  1062. buffer used by the MSDU
  1063. Indicates that OLE found a valid DA entry for this MSDU
  1064. <legal all>
  1065. */
  1066. #define RX_MSDU_LINK_18_MSDU_2_RX_MSDU_DESC_INFO_DETAILS_DA_IS_VALID_OFFSET 0x00000048
  1067. #define RX_MSDU_LINK_18_MSDU_2_RX_MSDU_DESC_INFO_DETAILS_DA_IS_VALID_LSB 25
  1068. #define RX_MSDU_LINK_18_MSDU_2_RX_MSDU_DESC_INFO_DETAILS_DA_IS_VALID_MASK 0x02000000
  1069. /* Description RX_MSDU_LINK_18_MSDU_2_RX_MSDU_DESC_INFO_DETAILS_DA_IS_MCBC
  1070. Field Only valid if da_is_valid is set
  1071. Indicates the DA address was a Multicast of Broadcast
  1072. address for this MSDU
  1073. <legal all>
  1074. */
  1075. #define RX_MSDU_LINK_18_MSDU_2_RX_MSDU_DESC_INFO_DETAILS_DA_IS_MCBC_OFFSET 0x00000048
  1076. #define RX_MSDU_LINK_18_MSDU_2_RX_MSDU_DESC_INFO_DETAILS_DA_IS_MCBC_LSB 26
  1077. #define RX_MSDU_LINK_18_MSDU_2_RX_MSDU_DESC_INFO_DETAILS_DA_IS_MCBC_MASK 0x04000000
  1078. /* Description RX_MSDU_LINK_18_MSDU_2_RX_MSDU_DESC_INFO_DETAILS_DA_IDX_TIMEOUT
  1079. Parsed from RX_MSDU_END TLV . In the case MSDU spans
  1080. over multiple buffers, this field will be valid in the Last
  1081. buffer used by the MSDU
  1082. Indicates an unsuccessful MAC destination address search
  1083. due to the expiring of the search timer for this MSDU
  1084. <legal all>
  1085. */
  1086. #define RX_MSDU_LINK_18_MSDU_2_RX_MSDU_DESC_INFO_DETAILS_DA_IDX_TIMEOUT_OFFSET 0x00000048
  1087. #define RX_MSDU_LINK_18_MSDU_2_RX_MSDU_DESC_INFO_DETAILS_DA_IDX_TIMEOUT_LSB 27
  1088. #define RX_MSDU_LINK_18_MSDU_2_RX_MSDU_DESC_INFO_DETAILS_DA_IDX_TIMEOUT_MASK 0x08000000
  1089. /* Description RX_MSDU_LINK_18_MSDU_2_RX_MSDU_DESC_INFO_DETAILS_RESERVED_0A
  1090. <legal 0>
  1091. */
  1092. #define RX_MSDU_LINK_18_MSDU_2_RX_MSDU_DESC_INFO_DETAILS_RESERVED_0A_OFFSET 0x00000048
  1093. #define RX_MSDU_LINK_18_MSDU_2_RX_MSDU_DESC_INFO_DETAILS_RESERVED_0A_LSB 28
  1094. #define RX_MSDU_LINK_18_MSDU_2_RX_MSDU_DESC_INFO_DETAILS_RESERVED_0A_MASK 0xf0000000
  1095. /* Description RX_MSDU_LINK_19_MSDU_2_RX_MSDU_DESC_INFO_DETAILS_RESERVED_1A
  1096. <legal 0>
  1097. */
  1098. #define RX_MSDU_LINK_19_MSDU_2_RX_MSDU_DESC_INFO_DETAILS_RESERVED_1A_OFFSET 0x0000004c
  1099. #define RX_MSDU_LINK_19_MSDU_2_RX_MSDU_DESC_INFO_DETAILS_RESERVED_1A_LSB 0
  1100. #define RX_MSDU_LINK_19_MSDU_2_RX_MSDU_DESC_INFO_DETAILS_RESERVED_1A_MASK 0xffffffff
  1101. /* EXTERNAL REFERENCE : struct rx_msdu_details msdu_3 */
  1102. /* EXTERNAL REFERENCE : struct buffer_addr_info buffer_addr_info_details */
  1103. /* Description RX_MSDU_LINK_20_MSDU_3_BUFFER_ADDR_INFO_DETAILS_BUFFER_ADDR_31_0
  1104. Address (lower 32 bits) of the MSDU buffer OR
  1105. MSDU_EXTENSION descriptor OR Link Descriptor
  1106. In case of 'NULL' pointer, this field is set to 0
  1107. <legal all>
  1108. */
  1109. #define RX_MSDU_LINK_20_MSDU_3_BUFFER_ADDR_INFO_DETAILS_BUFFER_ADDR_31_0_OFFSET 0x00000050
  1110. #define RX_MSDU_LINK_20_MSDU_3_BUFFER_ADDR_INFO_DETAILS_BUFFER_ADDR_31_0_LSB 0
  1111. #define RX_MSDU_LINK_20_MSDU_3_BUFFER_ADDR_INFO_DETAILS_BUFFER_ADDR_31_0_MASK 0xffffffff
  1112. /* Description RX_MSDU_LINK_21_MSDU_3_BUFFER_ADDR_INFO_DETAILS_BUFFER_ADDR_39_32
  1113. Address (upper 8 bits) of the MSDU buffer OR
  1114. MSDU_EXTENSION descriptor OR Link Descriptor
  1115. In case of 'NULL' pointer, this field is set to 0
  1116. <legal all>
  1117. */
  1118. #define RX_MSDU_LINK_21_MSDU_3_BUFFER_ADDR_INFO_DETAILS_BUFFER_ADDR_39_32_OFFSET 0x00000054
  1119. #define RX_MSDU_LINK_21_MSDU_3_BUFFER_ADDR_INFO_DETAILS_BUFFER_ADDR_39_32_LSB 0
  1120. #define RX_MSDU_LINK_21_MSDU_3_BUFFER_ADDR_INFO_DETAILS_BUFFER_ADDR_39_32_MASK 0x000000ff
  1121. /* Description RX_MSDU_LINK_21_MSDU_3_BUFFER_ADDR_INFO_DETAILS_RETURN_BUFFER_MANAGER
  1122. Consumer: WBM
  1123. Producer: SW/FW
  1124. In case of 'NULL' pointer, this field is set to 0
  1125. Indicates to which buffer manager the buffer OR
  1126. MSDU_EXTENSION descriptor OR link descriptor that is being
  1127. pointed to shall be returned after the frame has been
  1128. processed. It is used by WBM for routing purposes.
  1129. <enum 0 WBM_IDLE_BUF_LIST> This buffer shall be returned
  1130. to the WMB buffer idle list
  1131. <enum 1 WBM_IDLE_DESC_LIST> This buffer shall be
  1132. returned to the WMB idle link descriptor idle list
  1133. <enum 2 FW_BM> This buffer shall be returned to the FW
  1134. <enum 3 SW0_BM> This buffer shall be returned to the SW,
  1135. ring 0
  1136. <enum 4 SW1_BM> This buffer shall be returned to the SW,
  1137. ring 1
  1138. <enum 5 SW2_BM> This buffer shall be returned to the SW,
  1139. ring 2
  1140. <enum 6 SW3_BM> This buffer shall be returned to the SW,
  1141. ring 3
  1142. <enum 7 SW4_BM> This buffer shall be returned to the SW,
  1143. ring 4
  1144. <legal all>
  1145. */
  1146. #define RX_MSDU_LINK_21_MSDU_3_BUFFER_ADDR_INFO_DETAILS_RETURN_BUFFER_MANAGER_OFFSET 0x00000054
  1147. #define RX_MSDU_LINK_21_MSDU_3_BUFFER_ADDR_INFO_DETAILS_RETURN_BUFFER_MANAGER_LSB 8
  1148. #define RX_MSDU_LINK_21_MSDU_3_BUFFER_ADDR_INFO_DETAILS_RETURN_BUFFER_MANAGER_MASK 0x00000700
  1149. /* Description RX_MSDU_LINK_21_MSDU_3_BUFFER_ADDR_INFO_DETAILS_SW_BUFFER_COOKIE
  1150. Cookie field exclusively used by SW.
  1151. In case of 'NULL' pointer, this field is set to 0
  1152. HW ignores the contents, accept that it passes the
  1153. programmed value on to other descriptors together with the
  1154. physical address
  1155. Field can be used by SW to for example associate the
  1156. buffers physical address with the virtual address
  1157. The bit definitions as used by SW are within SW HLD
  1158. specification
  1159. NOTE:
  1160. The three most significant bits can have a special
  1161. meaning in case this struct is embedded in a TX_MPDU_DETAILS
  1162. STRUCT, and field transmit_bw_restriction is set
  1163. In case of NON punctured transmission:
  1164. Sw_buffer_cookie[20:19] = 2'b00: 20 MHz TX only
  1165. Sw_buffer_cookie[20:19] = 2'b01: 40 MHz TX only
  1166. Sw_buffer_cookie[20:19] = 2'b10: 80 MHz TX only
  1167. Sw_buffer_cookie[20:19] = 2'b11: 160 MHz TX only
  1168. In case of punctured transmission:
  1169. Sw_buffer_cookie[20:18] = 3'b000: pattern 0 only
  1170. Sw_buffer_cookie[20:18] = 3'b001: pattern 1 only
  1171. Sw_buffer_cookie[20:18] = 3'b010: pattern 2 only
  1172. Sw_buffer_cookie[20:18] = 3'b011: pattern 3 only
  1173. Sw_buffer_cookie[20:18] = 3'b100: pattern 4 only
  1174. Sw_buffer_cookie[20:18] = 3'b101: pattern 5 only
  1175. Sw_buffer_cookie[20:18] = 3'b110: pattern 6 only
  1176. Sw_buffer_cookie[20:18] = 3'b111: pattern 7 only
  1177. Note: a punctured transmission is indicated by the
  1178. presence of TLV TX_PUNCTURE_SETUP embedded in the scheduler
  1179. TLV
  1180. <legal all>
  1181. */
  1182. #define RX_MSDU_LINK_21_MSDU_3_BUFFER_ADDR_INFO_DETAILS_SW_BUFFER_COOKIE_OFFSET 0x00000054
  1183. #define RX_MSDU_LINK_21_MSDU_3_BUFFER_ADDR_INFO_DETAILS_SW_BUFFER_COOKIE_LSB 11
  1184. #define RX_MSDU_LINK_21_MSDU_3_BUFFER_ADDR_INFO_DETAILS_SW_BUFFER_COOKIE_MASK 0xfffff800
  1185. /* EXTERNAL REFERENCE : struct rx_msdu_desc_info rx_msdu_desc_info_details */
  1186. /* Description RX_MSDU_LINK_22_MSDU_3_RX_MSDU_DESC_INFO_DETAILS_FIRST_MSDU_IN_MPDU_FLAG
  1187. Parsed from RX_MSDU_END TLV . In the case MSDU spans
  1188. over multiple buffers, this field will be valid in the Last
  1189. buffer used by the MSDU
  1190. <enum 0 Not_first_msdu> This is not the first MSDU in
  1191. the MPDU.
  1192. <enum 1 first_msdu> This MSDU is the first one in the
  1193. MPDU.
  1194. <legal all>
  1195. */
  1196. #define RX_MSDU_LINK_22_MSDU_3_RX_MSDU_DESC_INFO_DETAILS_FIRST_MSDU_IN_MPDU_FLAG_OFFSET 0x00000058
  1197. #define RX_MSDU_LINK_22_MSDU_3_RX_MSDU_DESC_INFO_DETAILS_FIRST_MSDU_IN_MPDU_FLAG_LSB 0
  1198. #define RX_MSDU_LINK_22_MSDU_3_RX_MSDU_DESC_INFO_DETAILS_FIRST_MSDU_IN_MPDU_FLAG_MASK 0x00000001
  1199. /* Description RX_MSDU_LINK_22_MSDU_3_RX_MSDU_DESC_INFO_DETAILS_LAST_MSDU_IN_MPDU_FLAG
  1200. Consumer: WBM/REO/SW/FW
  1201. Producer: RXDMA
  1202. Parsed from RX_MSDU_END TLV . In the case MSDU spans
  1203. over multiple buffers, this field will be valid in the Last
  1204. buffer used by the MSDU
  1205. <enum 0 Not_last_msdu> There are more MSDUs linked to
  1206. this MSDU that belongs to this MPDU
  1207. <enum 1 Last_msdu> this MSDU is the last one in the
  1208. MPDU. This setting is only allowed in combination with
  1209. 'Msdu_continuation' set to 0. This implies that when an msdu
  1210. is spread out over multiple buffers and thus
  1211. msdu_continuation is set, only for the very last buffer of
  1212. the msdu, can the 'last_msdu_in_mpdu_flag' be set.
  1213. When both first_msdu_in_mpdu_flag and
  1214. last_msdu_in_mpdu_flag are set, the MPDU that this MSDU
  1215. belongs to only contains a single MSDU.
  1216. <legal all>
  1217. */
  1218. #define RX_MSDU_LINK_22_MSDU_3_RX_MSDU_DESC_INFO_DETAILS_LAST_MSDU_IN_MPDU_FLAG_OFFSET 0x00000058
  1219. #define RX_MSDU_LINK_22_MSDU_3_RX_MSDU_DESC_INFO_DETAILS_LAST_MSDU_IN_MPDU_FLAG_LSB 1
  1220. #define RX_MSDU_LINK_22_MSDU_3_RX_MSDU_DESC_INFO_DETAILS_LAST_MSDU_IN_MPDU_FLAG_MASK 0x00000002
  1221. /* Description RX_MSDU_LINK_22_MSDU_3_RX_MSDU_DESC_INFO_DETAILS_MSDU_CONTINUATION
  1222. When set, this MSDU buffer was not able to hold the
  1223. entire MSDU. The next buffer will therefor contain
  1224. additional information related to this MSDU.
  1225. <legal all>
  1226. */
  1227. #define RX_MSDU_LINK_22_MSDU_3_RX_MSDU_DESC_INFO_DETAILS_MSDU_CONTINUATION_OFFSET 0x00000058
  1228. #define RX_MSDU_LINK_22_MSDU_3_RX_MSDU_DESC_INFO_DETAILS_MSDU_CONTINUATION_LSB 2
  1229. #define RX_MSDU_LINK_22_MSDU_3_RX_MSDU_DESC_INFO_DETAILS_MSDU_CONTINUATION_MASK 0x00000004
  1230. /* Description RX_MSDU_LINK_22_MSDU_3_RX_MSDU_DESC_INFO_DETAILS_MSDU_LENGTH
  1231. Parsed from RX_MSDU_START TLV . In the case MSDU spans
  1232. over multiple buffers, this field will be valid in the First
  1233. buffer used by MSDU.
  1234. Full MSDU length in bytes after decapsulation.
  1235. This field is still valid for MPDU frames without
  1236. A-MSDU. It still represents MSDU length after decapsulation
  1237. Or in case of RAW MPDUs, it indicates the length of the
  1238. entire MPDU (without FCS field)
  1239. <legal all>
  1240. */
  1241. #define RX_MSDU_LINK_22_MSDU_3_RX_MSDU_DESC_INFO_DETAILS_MSDU_LENGTH_OFFSET 0x00000058
  1242. #define RX_MSDU_LINK_22_MSDU_3_RX_MSDU_DESC_INFO_DETAILS_MSDU_LENGTH_LSB 3
  1243. #define RX_MSDU_LINK_22_MSDU_3_RX_MSDU_DESC_INFO_DETAILS_MSDU_LENGTH_MASK 0x0001fff8
  1244. /* Description RX_MSDU_LINK_22_MSDU_3_RX_MSDU_DESC_INFO_DETAILS_REO_DESTINATION_INDICATION
  1245. Parsed from RX_MSDU_END TLV . In the case MSDU spans
  1246. over multiple buffers, this field will be valid in the Last
  1247. buffer used by the MSDU
  1248. The ID of the REO exit ring where the MSDU frame shall
  1249. push after (MPDU level) reordering has finished.
  1250. <enum 0 reo_destination_tcl> Reo will push the frame
  1251. into the REO2TCL ring
  1252. <enum 1 reo_destination_sw1> Reo will push the frame
  1253. into the REO2SW1 ring
  1254. <enum 2 reo_destination_sw2> Reo will push the frame
  1255. into the REO2SW2 ring
  1256. <enum 3 reo_destination_sw3> Reo will push the frame
  1257. into the REO2SW3 ring
  1258. <enum 4 reo_destination_sw4> Reo will push the frame
  1259. into the REO2SW4 ring
  1260. <enum 5 reo_destination_release> Reo will push the frame
  1261. into the REO_release ring
  1262. <enum 6 reo_destination_fw> Reo will push the frame into
  1263. the REO2FW ring
  1264. <enum 7 reo_destination_sw5> Reo will push the frame
  1265. into the REO2SW5 ring
  1266. <enum 8 reo_destination_sw6> Reo will push the frame
  1267. into the REO2SW6 ring
  1268. <enum 9 reo_destination_9> REO remaps this <enum 10
  1269. reo_destination_10> REO remaps this
  1270. <enum 11 reo_destination_11> REO remaps this
  1271. <enum 12 reo_destination_12> REO remaps this <enum 13
  1272. reo_destination_13> REO remaps this
  1273. <enum 14 reo_destination_14> REO remaps this
  1274. <enum 15 reo_destination_15> REO remaps this
  1275. <enum 16 reo_destination_16> REO remaps this
  1276. <enum 17 reo_destination_17> REO remaps this
  1277. <enum 18 reo_destination_18> REO remaps this
  1278. <enum 19 reo_destination_19> REO remaps this
  1279. <enum 20 reo_destination_20> REO remaps this
  1280. <enum 21 reo_destination_21> REO remaps this
  1281. <enum 22 reo_destination_22> REO remaps this
  1282. <enum 23 reo_destination_23> REO remaps this
  1283. <enum 24 reo_destination_24> REO remaps this
  1284. <enum 25 reo_destination_25> REO remaps this
  1285. <enum 26 reo_destination_26> REO remaps this
  1286. <enum 27 reo_destination_27> REO remaps this
  1287. <enum 28 reo_destination_28> REO remaps this
  1288. <enum 29 reo_destination_29> REO remaps this
  1289. <enum 30 reo_destination_30> REO remaps this
  1290. <enum 31 reo_destination_31> REO remaps this
  1291. <legal all>
  1292. */
  1293. #define RX_MSDU_LINK_22_MSDU_3_RX_MSDU_DESC_INFO_DETAILS_REO_DESTINATION_INDICATION_OFFSET 0x00000058
  1294. #define RX_MSDU_LINK_22_MSDU_3_RX_MSDU_DESC_INFO_DETAILS_REO_DESTINATION_INDICATION_LSB 17
  1295. #define RX_MSDU_LINK_22_MSDU_3_RX_MSDU_DESC_INFO_DETAILS_REO_DESTINATION_INDICATION_MASK 0x003e0000
  1296. /* Description RX_MSDU_LINK_22_MSDU_3_RX_MSDU_DESC_INFO_DETAILS_MSDU_DROP
  1297. Parsed from RX_MSDU_END TLV . In the case MSDU spans
  1298. over multiple buffers, this field will be valid in the Last
  1299. buffer used by the MSDU
  1300. When set, REO shall drop this MSDU and not forward it to
  1301. any other ring...
  1302. <legal all>
  1303. */
  1304. #define RX_MSDU_LINK_22_MSDU_3_RX_MSDU_DESC_INFO_DETAILS_MSDU_DROP_OFFSET 0x00000058
  1305. #define RX_MSDU_LINK_22_MSDU_3_RX_MSDU_DESC_INFO_DETAILS_MSDU_DROP_LSB 22
  1306. #define RX_MSDU_LINK_22_MSDU_3_RX_MSDU_DESC_INFO_DETAILS_MSDU_DROP_MASK 0x00400000
  1307. /* Description RX_MSDU_LINK_22_MSDU_3_RX_MSDU_DESC_INFO_DETAILS_SA_IS_VALID
  1308. Parsed from RX_MSDU_END TLV . In the case MSDU spans
  1309. over multiple buffers, this field will be valid in the Last
  1310. buffer used by the MSDU
  1311. Indicates that OLE found a valid SA entry for this MSDU
  1312. <legal all>
  1313. */
  1314. #define RX_MSDU_LINK_22_MSDU_3_RX_MSDU_DESC_INFO_DETAILS_SA_IS_VALID_OFFSET 0x00000058
  1315. #define RX_MSDU_LINK_22_MSDU_3_RX_MSDU_DESC_INFO_DETAILS_SA_IS_VALID_LSB 23
  1316. #define RX_MSDU_LINK_22_MSDU_3_RX_MSDU_DESC_INFO_DETAILS_SA_IS_VALID_MASK 0x00800000
  1317. /* Description RX_MSDU_LINK_22_MSDU_3_RX_MSDU_DESC_INFO_DETAILS_SA_IDX_TIMEOUT
  1318. Parsed from RX_MSDU_END TLV . In the case MSDU spans
  1319. over multiple buffers, this field will be valid in the Last
  1320. buffer used by the MSDU
  1321. Indicates an unsuccessful MAC source address search due
  1322. to the expiring of the search timer for this MSDU
  1323. <legal all>
  1324. */
  1325. #define RX_MSDU_LINK_22_MSDU_3_RX_MSDU_DESC_INFO_DETAILS_SA_IDX_TIMEOUT_OFFSET 0x00000058
  1326. #define RX_MSDU_LINK_22_MSDU_3_RX_MSDU_DESC_INFO_DETAILS_SA_IDX_TIMEOUT_LSB 24
  1327. #define RX_MSDU_LINK_22_MSDU_3_RX_MSDU_DESC_INFO_DETAILS_SA_IDX_TIMEOUT_MASK 0x01000000
  1328. /* Description RX_MSDU_LINK_22_MSDU_3_RX_MSDU_DESC_INFO_DETAILS_DA_IS_VALID
  1329. Parsed from RX_MSDU_END TLV . In the case MSDU spans
  1330. over multiple buffers, this field will be valid in the Last
  1331. buffer used by the MSDU
  1332. Indicates that OLE found a valid DA entry for this MSDU
  1333. <legal all>
  1334. */
  1335. #define RX_MSDU_LINK_22_MSDU_3_RX_MSDU_DESC_INFO_DETAILS_DA_IS_VALID_OFFSET 0x00000058
  1336. #define RX_MSDU_LINK_22_MSDU_3_RX_MSDU_DESC_INFO_DETAILS_DA_IS_VALID_LSB 25
  1337. #define RX_MSDU_LINK_22_MSDU_3_RX_MSDU_DESC_INFO_DETAILS_DA_IS_VALID_MASK 0x02000000
  1338. /* Description RX_MSDU_LINK_22_MSDU_3_RX_MSDU_DESC_INFO_DETAILS_DA_IS_MCBC
  1339. Field Only valid if da_is_valid is set
  1340. Indicates the DA address was a Multicast of Broadcast
  1341. address for this MSDU
  1342. <legal all>
  1343. */
  1344. #define RX_MSDU_LINK_22_MSDU_3_RX_MSDU_DESC_INFO_DETAILS_DA_IS_MCBC_OFFSET 0x00000058
  1345. #define RX_MSDU_LINK_22_MSDU_3_RX_MSDU_DESC_INFO_DETAILS_DA_IS_MCBC_LSB 26
  1346. #define RX_MSDU_LINK_22_MSDU_3_RX_MSDU_DESC_INFO_DETAILS_DA_IS_MCBC_MASK 0x04000000
  1347. /* Description RX_MSDU_LINK_22_MSDU_3_RX_MSDU_DESC_INFO_DETAILS_DA_IDX_TIMEOUT
  1348. Parsed from RX_MSDU_END TLV . In the case MSDU spans
  1349. over multiple buffers, this field will be valid in the Last
  1350. buffer used by the MSDU
  1351. Indicates an unsuccessful MAC destination address search
  1352. due to the expiring of the search timer for this MSDU
  1353. <legal all>
  1354. */
  1355. #define RX_MSDU_LINK_22_MSDU_3_RX_MSDU_DESC_INFO_DETAILS_DA_IDX_TIMEOUT_OFFSET 0x00000058
  1356. #define RX_MSDU_LINK_22_MSDU_3_RX_MSDU_DESC_INFO_DETAILS_DA_IDX_TIMEOUT_LSB 27
  1357. #define RX_MSDU_LINK_22_MSDU_3_RX_MSDU_DESC_INFO_DETAILS_DA_IDX_TIMEOUT_MASK 0x08000000
  1358. /* Description RX_MSDU_LINK_22_MSDU_3_RX_MSDU_DESC_INFO_DETAILS_RESERVED_0A
  1359. <legal 0>
  1360. */
  1361. #define RX_MSDU_LINK_22_MSDU_3_RX_MSDU_DESC_INFO_DETAILS_RESERVED_0A_OFFSET 0x00000058
  1362. #define RX_MSDU_LINK_22_MSDU_3_RX_MSDU_DESC_INFO_DETAILS_RESERVED_0A_LSB 28
  1363. #define RX_MSDU_LINK_22_MSDU_3_RX_MSDU_DESC_INFO_DETAILS_RESERVED_0A_MASK 0xf0000000
  1364. /* Description RX_MSDU_LINK_23_MSDU_3_RX_MSDU_DESC_INFO_DETAILS_RESERVED_1A
  1365. <legal 0>
  1366. */
  1367. #define RX_MSDU_LINK_23_MSDU_3_RX_MSDU_DESC_INFO_DETAILS_RESERVED_1A_OFFSET 0x0000005c
  1368. #define RX_MSDU_LINK_23_MSDU_3_RX_MSDU_DESC_INFO_DETAILS_RESERVED_1A_LSB 0
  1369. #define RX_MSDU_LINK_23_MSDU_3_RX_MSDU_DESC_INFO_DETAILS_RESERVED_1A_MASK 0xffffffff
  1370. /* EXTERNAL REFERENCE : struct rx_msdu_details msdu_4 */
  1371. /* EXTERNAL REFERENCE : struct buffer_addr_info buffer_addr_info_details */
  1372. /* Description RX_MSDU_LINK_24_MSDU_4_BUFFER_ADDR_INFO_DETAILS_BUFFER_ADDR_31_0
  1373. Address (lower 32 bits) of the MSDU buffer OR
  1374. MSDU_EXTENSION descriptor OR Link Descriptor
  1375. In case of 'NULL' pointer, this field is set to 0
  1376. <legal all>
  1377. */
  1378. #define RX_MSDU_LINK_24_MSDU_4_BUFFER_ADDR_INFO_DETAILS_BUFFER_ADDR_31_0_OFFSET 0x00000060
  1379. #define RX_MSDU_LINK_24_MSDU_4_BUFFER_ADDR_INFO_DETAILS_BUFFER_ADDR_31_0_LSB 0
  1380. #define RX_MSDU_LINK_24_MSDU_4_BUFFER_ADDR_INFO_DETAILS_BUFFER_ADDR_31_0_MASK 0xffffffff
  1381. /* Description RX_MSDU_LINK_25_MSDU_4_BUFFER_ADDR_INFO_DETAILS_BUFFER_ADDR_39_32
  1382. Address (upper 8 bits) of the MSDU buffer OR
  1383. MSDU_EXTENSION descriptor OR Link Descriptor
  1384. In case of 'NULL' pointer, this field is set to 0
  1385. <legal all>
  1386. */
  1387. #define RX_MSDU_LINK_25_MSDU_4_BUFFER_ADDR_INFO_DETAILS_BUFFER_ADDR_39_32_OFFSET 0x00000064
  1388. #define RX_MSDU_LINK_25_MSDU_4_BUFFER_ADDR_INFO_DETAILS_BUFFER_ADDR_39_32_LSB 0
  1389. #define RX_MSDU_LINK_25_MSDU_4_BUFFER_ADDR_INFO_DETAILS_BUFFER_ADDR_39_32_MASK 0x000000ff
  1390. /* Description RX_MSDU_LINK_25_MSDU_4_BUFFER_ADDR_INFO_DETAILS_RETURN_BUFFER_MANAGER
  1391. Consumer: WBM
  1392. Producer: SW/FW
  1393. In case of 'NULL' pointer, this field is set to 0
  1394. Indicates to which buffer manager the buffer OR
  1395. MSDU_EXTENSION descriptor OR link descriptor that is being
  1396. pointed to shall be returned after the frame has been
  1397. processed. It is used by WBM for routing purposes.
  1398. <enum 0 WBM_IDLE_BUF_LIST> This buffer shall be returned
  1399. to the WMB buffer idle list
  1400. <enum 1 WBM_IDLE_DESC_LIST> This buffer shall be
  1401. returned to the WMB idle link descriptor idle list
  1402. <enum 2 FW_BM> This buffer shall be returned to the FW
  1403. <enum 3 SW0_BM> This buffer shall be returned to the SW,
  1404. ring 0
  1405. <enum 4 SW1_BM> This buffer shall be returned to the SW,
  1406. ring 1
  1407. <enum 5 SW2_BM> This buffer shall be returned to the SW,
  1408. ring 2
  1409. <enum 6 SW3_BM> This buffer shall be returned to the SW,
  1410. ring 3
  1411. <enum 7 SW4_BM> This buffer shall be returned to the SW,
  1412. ring 4
  1413. <legal all>
  1414. */
  1415. #define RX_MSDU_LINK_25_MSDU_4_BUFFER_ADDR_INFO_DETAILS_RETURN_BUFFER_MANAGER_OFFSET 0x00000064
  1416. #define RX_MSDU_LINK_25_MSDU_4_BUFFER_ADDR_INFO_DETAILS_RETURN_BUFFER_MANAGER_LSB 8
  1417. #define RX_MSDU_LINK_25_MSDU_4_BUFFER_ADDR_INFO_DETAILS_RETURN_BUFFER_MANAGER_MASK 0x00000700
  1418. /* Description RX_MSDU_LINK_25_MSDU_4_BUFFER_ADDR_INFO_DETAILS_SW_BUFFER_COOKIE
  1419. Cookie field exclusively used by SW.
  1420. In case of 'NULL' pointer, this field is set to 0
  1421. HW ignores the contents, accept that it passes the
  1422. programmed value on to other descriptors together with the
  1423. physical address
  1424. Field can be used by SW to for example associate the
  1425. buffers physical address with the virtual address
  1426. The bit definitions as used by SW are within SW HLD
  1427. specification
  1428. NOTE:
  1429. The three most significant bits can have a special
  1430. meaning in case this struct is embedded in a TX_MPDU_DETAILS
  1431. STRUCT, and field transmit_bw_restriction is set
  1432. In case of NON punctured transmission:
  1433. Sw_buffer_cookie[20:19] = 2'b00: 20 MHz TX only
  1434. Sw_buffer_cookie[20:19] = 2'b01: 40 MHz TX only
  1435. Sw_buffer_cookie[20:19] = 2'b10: 80 MHz TX only
  1436. Sw_buffer_cookie[20:19] = 2'b11: 160 MHz TX only
  1437. In case of punctured transmission:
  1438. Sw_buffer_cookie[20:18] = 3'b000: pattern 0 only
  1439. Sw_buffer_cookie[20:18] = 3'b001: pattern 1 only
  1440. Sw_buffer_cookie[20:18] = 3'b010: pattern 2 only
  1441. Sw_buffer_cookie[20:18] = 3'b011: pattern 3 only
  1442. Sw_buffer_cookie[20:18] = 3'b100: pattern 4 only
  1443. Sw_buffer_cookie[20:18] = 3'b101: pattern 5 only
  1444. Sw_buffer_cookie[20:18] = 3'b110: pattern 6 only
  1445. Sw_buffer_cookie[20:18] = 3'b111: pattern 7 only
  1446. Note: a punctured transmission is indicated by the
  1447. presence of TLV TX_PUNCTURE_SETUP embedded in the scheduler
  1448. TLV
  1449. <legal all>
  1450. */
  1451. #define RX_MSDU_LINK_25_MSDU_4_BUFFER_ADDR_INFO_DETAILS_SW_BUFFER_COOKIE_OFFSET 0x00000064
  1452. #define RX_MSDU_LINK_25_MSDU_4_BUFFER_ADDR_INFO_DETAILS_SW_BUFFER_COOKIE_LSB 11
  1453. #define RX_MSDU_LINK_25_MSDU_4_BUFFER_ADDR_INFO_DETAILS_SW_BUFFER_COOKIE_MASK 0xfffff800
  1454. /* EXTERNAL REFERENCE : struct rx_msdu_desc_info rx_msdu_desc_info_details */
  1455. /* Description RX_MSDU_LINK_26_MSDU_4_RX_MSDU_DESC_INFO_DETAILS_FIRST_MSDU_IN_MPDU_FLAG
  1456. Parsed from RX_MSDU_END TLV . In the case MSDU spans
  1457. over multiple buffers, this field will be valid in the Last
  1458. buffer used by the MSDU
  1459. <enum 0 Not_first_msdu> This is not the first MSDU in
  1460. the MPDU.
  1461. <enum 1 first_msdu> This MSDU is the first one in the
  1462. MPDU.
  1463. <legal all>
  1464. */
  1465. #define RX_MSDU_LINK_26_MSDU_4_RX_MSDU_DESC_INFO_DETAILS_FIRST_MSDU_IN_MPDU_FLAG_OFFSET 0x00000068
  1466. #define RX_MSDU_LINK_26_MSDU_4_RX_MSDU_DESC_INFO_DETAILS_FIRST_MSDU_IN_MPDU_FLAG_LSB 0
  1467. #define RX_MSDU_LINK_26_MSDU_4_RX_MSDU_DESC_INFO_DETAILS_FIRST_MSDU_IN_MPDU_FLAG_MASK 0x00000001
  1468. /* Description RX_MSDU_LINK_26_MSDU_4_RX_MSDU_DESC_INFO_DETAILS_LAST_MSDU_IN_MPDU_FLAG
  1469. Consumer: WBM/REO/SW/FW
  1470. Producer: RXDMA
  1471. Parsed from RX_MSDU_END TLV . In the case MSDU spans
  1472. over multiple buffers, this field will be valid in the Last
  1473. buffer used by the MSDU
  1474. <enum 0 Not_last_msdu> There are more MSDUs linked to
  1475. this MSDU that belongs to this MPDU
  1476. <enum 1 Last_msdu> this MSDU is the last one in the
  1477. MPDU. This setting is only allowed in combination with
  1478. 'Msdu_continuation' set to 0. This implies that when an msdu
  1479. is spread out over multiple buffers and thus
  1480. msdu_continuation is set, only for the very last buffer of
  1481. the msdu, can the 'last_msdu_in_mpdu_flag' be set.
  1482. When both first_msdu_in_mpdu_flag and
  1483. last_msdu_in_mpdu_flag are set, the MPDU that this MSDU
  1484. belongs to only contains a single MSDU.
  1485. <legal all>
  1486. */
  1487. #define RX_MSDU_LINK_26_MSDU_4_RX_MSDU_DESC_INFO_DETAILS_LAST_MSDU_IN_MPDU_FLAG_OFFSET 0x00000068
  1488. #define RX_MSDU_LINK_26_MSDU_4_RX_MSDU_DESC_INFO_DETAILS_LAST_MSDU_IN_MPDU_FLAG_LSB 1
  1489. #define RX_MSDU_LINK_26_MSDU_4_RX_MSDU_DESC_INFO_DETAILS_LAST_MSDU_IN_MPDU_FLAG_MASK 0x00000002
  1490. /* Description RX_MSDU_LINK_26_MSDU_4_RX_MSDU_DESC_INFO_DETAILS_MSDU_CONTINUATION
  1491. When set, this MSDU buffer was not able to hold the
  1492. entire MSDU. The next buffer will therefor contain
  1493. additional information related to this MSDU.
  1494. <legal all>
  1495. */
  1496. #define RX_MSDU_LINK_26_MSDU_4_RX_MSDU_DESC_INFO_DETAILS_MSDU_CONTINUATION_OFFSET 0x00000068
  1497. #define RX_MSDU_LINK_26_MSDU_4_RX_MSDU_DESC_INFO_DETAILS_MSDU_CONTINUATION_LSB 2
  1498. #define RX_MSDU_LINK_26_MSDU_4_RX_MSDU_DESC_INFO_DETAILS_MSDU_CONTINUATION_MASK 0x00000004
  1499. /* Description RX_MSDU_LINK_26_MSDU_4_RX_MSDU_DESC_INFO_DETAILS_MSDU_LENGTH
  1500. Parsed from RX_MSDU_START TLV . In the case MSDU spans
  1501. over multiple buffers, this field will be valid in the First
  1502. buffer used by MSDU.
  1503. Full MSDU length in bytes after decapsulation.
  1504. This field is still valid for MPDU frames without
  1505. A-MSDU. It still represents MSDU length after decapsulation
  1506. Or in case of RAW MPDUs, it indicates the length of the
  1507. entire MPDU (without FCS field)
  1508. <legal all>
  1509. */
  1510. #define RX_MSDU_LINK_26_MSDU_4_RX_MSDU_DESC_INFO_DETAILS_MSDU_LENGTH_OFFSET 0x00000068
  1511. #define RX_MSDU_LINK_26_MSDU_4_RX_MSDU_DESC_INFO_DETAILS_MSDU_LENGTH_LSB 3
  1512. #define RX_MSDU_LINK_26_MSDU_4_RX_MSDU_DESC_INFO_DETAILS_MSDU_LENGTH_MASK 0x0001fff8
  1513. /* Description RX_MSDU_LINK_26_MSDU_4_RX_MSDU_DESC_INFO_DETAILS_REO_DESTINATION_INDICATION
  1514. Parsed from RX_MSDU_END TLV . In the case MSDU spans
  1515. over multiple buffers, this field will be valid in the Last
  1516. buffer used by the MSDU
  1517. The ID of the REO exit ring where the MSDU frame shall
  1518. push after (MPDU level) reordering has finished.
  1519. <enum 0 reo_destination_tcl> Reo will push the frame
  1520. into the REO2TCL ring
  1521. <enum 1 reo_destination_sw1> Reo will push the frame
  1522. into the REO2SW1 ring
  1523. <enum 2 reo_destination_sw2> Reo will push the frame
  1524. into the REO2SW2 ring
  1525. <enum 3 reo_destination_sw3> Reo will push the frame
  1526. into the REO2SW3 ring
  1527. <enum 4 reo_destination_sw4> Reo will push the frame
  1528. into the REO2SW4 ring
  1529. <enum 5 reo_destination_release> Reo will push the frame
  1530. into the REO_release ring
  1531. <enum 6 reo_destination_fw> Reo will push the frame into
  1532. the REO2FW ring
  1533. <enum 7 reo_destination_sw5> Reo will push the frame
  1534. into the REO2SW5 ring
  1535. <enum 8 reo_destination_sw6> Reo will push the frame
  1536. into the REO2SW6 ring
  1537. <enum 9 reo_destination_9> REO remaps this <enum 10
  1538. reo_destination_10> REO remaps this
  1539. <enum 11 reo_destination_11> REO remaps this
  1540. <enum 12 reo_destination_12> REO remaps this <enum 13
  1541. reo_destination_13> REO remaps this
  1542. <enum 14 reo_destination_14> REO remaps this
  1543. <enum 15 reo_destination_15> REO remaps this
  1544. <enum 16 reo_destination_16> REO remaps this
  1545. <enum 17 reo_destination_17> REO remaps this
  1546. <enum 18 reo_destination_18> REO remaps this
  1547. <enum 19 reo_destination_19> REO remaps this
  1548. <enum 20 reo_destination_20> REO remaps this
  1549. <enum 21 reo_destination_21> REO remaps this
  1550. <enum 22 reo_destination_22> REO remaps this
  1551. <enum 23 reo_destination_23> REO remaps this
  1552. <enum 24 reo_destination_24> REO remaps this
  1553. <enum 25 reo_destination_25> REO remaps this
  1554. <enum 26 reo_destination_26> REO remaps this
  1555. <enum 27 reo_destination_27> REO remaps this
  1556. <enum 28 reo_destination_28> REO remaps this
  1557. <enum 29 reo_destination_29> REO remaps this
  1558. <enum 30 reo_destination_30> REO remaps this
  1559. <enum 31 reo_destination_31> REO remaps this
  1560. <legal all>
  1561. */
  1562. #define RX_MSDU_LINK_26_MSDU_4_RX_MSDU_DESC_INFO_DETAILS_REO_DESTINATION_INDICATION_OFFSET 0x00000068
  1563. #define RX_MSDU_LINK_26_MSDU_4_RX_MSDU_DESC_INFO_DETAILS_REO_DESTINATION_INDICATION_LSB 17
  1564. #define RX_MSDU_LINK_26_MSDU_4_RX_MSDU_DESC_INFO_DETAILS_REO_DESTINATION_INDICATION_MASK 0x003e0000
  1565. /* Description RX_MSDU_LINK_26_MSDU_4_RX_MSDU_DESC_INFO_DETAILS_MSDU_DROP
  1566. Parsed from RX_MSDU_END TLV . In the case MSDU spans
  1567. over multiple buffers, this field will be valid in the Last
  1568. buffer used by the MSDU
  1569. When set, REO shall drop this MSDU and not forward it to
  1570. any other ring...
  1571. <legal all>
  1572. */
  1573. #define RX_MSDU_LINK_26_MSDU_4_RX_MSDU_DESC_INFO_DETAILS_MSDU_DROP_OFFSET 0x00000068
  1574. #define RX_MSDU_LINK_26_MSDU_4_RX_MSDU_DESC_INFO_DETAILS_MSDU_DROP_LSB 22
  1575. #define RX_MSDU_LINK_26_MSDU_4_RX_MSDU_DESC_INFO_DETAILS_MSDU_DROP_MASK 0x00400000
  1576. /* Description RX_MSDU_LINK_26_MSDU_4_RX_MSDU_DESC_INFO_DETAILS_SA_IS_VALID
  1577. Parsed from RX_MSDU_END TLV . In the case MSDU spans
  1578. over multiple buffers, this field will be valid in the Last
  1579. buffer used by the MSDU
  1580. Indicates that OLE found a valid SA entry for this MSDU
  1581. <legal all>
  1582. */
  1583. #define RX_MSDU_LINK_26_MSDU_4_RX_MSDU_DESC_INFO_DETAILS_SA_IS_VALID_OFFSET 0x00000068
  1584. #define RX_MSDU_LINK_26_MSDU_4_RX_MSDU_DESC_INFO_DETAILS_SA_IS_VALID_LSB 23
  1585. #define RX_MSDU_LINK_26_MSDU_4_RX_MSDU_DESC_INFO_DETAILS_SA_IS_VALID_MASK 0x00800000
  1586. /* Description RX_MSDU_LINK_26_MSDU_4_RX_MSDU_DESC_INFO_DETAILS_SA_IDX_TIMEOUT
  1587. Parsed from RX_MSDU_END TLV . In the case MSDU spans
  1588. over multiple buffers, this field will be valid in the Last
  1589. buffer used by the MSDU
  1590. Indicates an unsuccessful MAC source address search due
  1591. to the expiring of the search timer for this MSDU
  1592. <legal all>
  1593. */
  1594. #define RX_MSDU_LINK_26_MSDU_4_RX_MSDU_DESC_INFO_DETAILS_SA_IDX_TIMEOUT_OFFSET 0x00000068
  1595. #define RX_MSDU_LINK_26_MSDU_4_RX_MSDU_DESC_INFO_DETAILS_SA_IDX_TIMEOUT_LSB 24
  1596. #define RX_MSDU_LINK_26_MSDU_4_RX_MSDU_DESC_INFO_DETAILS_SA_IDX_TIMEOUT_MASK 0x01000000
  1597. /* Description RX_MSDU_LINK_26_MSDU_4_RX_MSDU_DESC_INFO_DETAILS_DA_IS_VALID
  1598. Parsed from RX_MSDU_END TLV . In the case MSDU spans
  1599. over multiple buffers, this field will be valid in the Last
  1600. buffer used by the MSDU
  1601. Indicates that OLE found a valid DA entry for this MSDU
  1602. <legal all>
  1603. */
  1604. #define RX_MSDU_LINK_26_MSDU_4_RX_MSDU_DESC_INFO_DETAILS_DA_IS_VALID_OFFSET 0x00000068
  1605. #define RX_MSDU_LINK_26_MSDU_4_RX_MSDU_DESC_INFO_DETAILS_DA_IS_VALID_LSB 25
  1606. #define RX_MSDU_LINK_26_MSDU_4_RX_MSDU_DESC_INFO_DETAILS_DA_IS_VALID_MASK 0x02000000
  1607. /* Description RX_MSDU_LINK_26_MSDU_4_RX_MSDU_DESC_INFO_DETAILS_DA_IS_MCBC
  1608. Field Only valid if da_is_valid is set
  1609. Indicates the DA address was a Multicast of Broadcast
  1610. address for this MSDU
  1611. <legal all>
  1612. */
  1613. #define RX_MSDU_LINK_26_MSDU_4_RX_MSDU_DESC_INFO_DETAILS_DA_IS_MCBC_OFFSET 0x00000068
  1614. #define RX_MSDU_LINK_26_MSDU_4_RX_MSDU_DESC_INFO_DETAILS_DA_IS_MCBC_LSB 26
  1615. #define RX_MSDU_LINK_26_MSDU_4_RX_MSDU_DESC_INFO_DETAILS_DA_IS_MCBC_MASK 0x04000000
  1616. /* Description RX_MSDU_LINK_26_MSDU_4_RX_MSDU_DESC_INFO_DETAILS_DA_IDX_TIMEOUT
  1617. Parsed from RX_MSDU_END TLV . In the case MSDU spans
  1618. over multiple buffers, this field will be valid in the Last
  1619. buffer used by the MSDU
  1620. Indicates an unsuccessful MAC destination address search
  1621. due to the expiring of the search timer for this MSDU
  1622. <legal all>
  1623. */
  1624. #define RX_MSDU_LINK_26_MSDU_4_RX_MSDU_DESC_INFO_DETAILS_DA_IDX_TIMEOUT_OFFSET 0x00000068
  1625. #define RX_MSDU_LINK_26_MSDU_4_RX_MSDU_DESC_INFO_DETAILS_DA_IDX_TIMEOUT_LSB 27
  1626. #define RX_MSDU_LINK_26_MSDU_4_RX_MSDU_DESC_INFO_DETAILS_DA_IDX_TIMEOUT_MASK 0x08000000
  1627. /* Description RX_MSDU_LINK_26_MSDU_4_RX_MSDU_DESC_INFO_DETAILS_RESERVED_0A
  1628. <legal 0>
  1629. */
  1630. #define RX_MSDU_LINK_26_MSDU_4_RX_MSDU_DESC_INFO_DETAILS_RESERVED_0A_OFFSET 0x00000068
  1631. #define RX_MSDU_LINK_26_MSDU_4_RX_MSDU_DESC_INFO_DETAILS_RESERVED_0A_LSB 28
  1632. #define RX_MSDU_LINK_26_MSDU_4_RX_MSDU_DESC_INFO_DETAILS_RESERVED_0A_MASK 0xf0000000
  1633. /* Description RX_MSDU_LINK_27_MSDU_4_RX_MSDU_DESC_INFO_DETAILS_RESERVED_1A
  1634. <legal 0>
  1635. */
  1636. #define RX_MSDU_LINK_27_MSDU_4_RX_MSDU_DESC_INFO_DETAILS_RESERVED_1A_OFFSET 0x0000006c
  1637. #define RX_MSDU_LINK_27_MSDU_4_RX_MSDU_DESC_INFO_DETAILS_RESERVED_1A_LSB 0
  1638. #define RX_MSDU_LINK_27_MSDU_4_RX_MSDU_DESC_INFO_DETAILS_RESERVED_1A_MASK 0xffffffff
  1639. /* EXTERNAL REFERENCE : struct rx_msdu_details msdu_5 */
  1640. /* EXTERNAL REFERENCE : struct buffer_addr_info buffer_addr_info_details */
  1641. /* Description RX_MSDU_LINK_28_MSDU_5_BUFFER_ADDR_INFO_DETAILS_BUFFER_ADDR_31_0
  1642. Address (lower 32 bits) of the MSDU buffer OR
  1643. MSDU_EXTENSION descriptor OR Link Descriptor
  1644. In case of 'NULL' pointer, this field is set to 0
  1645. <legal all>
  1646. */
  1647. #define RX_MSDU_LINK_28_MSDU_5_BUFFER_ADDR_INFO_DETAILS_BUFFER_ADDR_31_0_OFFSET 0x00000070
  1648. #define RX_MSDU_LINK_28_MSDU_5_BUFFER_ADDR_INFO_DETAILS_BUFFER_ADDR_31_0_LSB 0
  1649. #define RX_MSDU_LINK_28_MSDU_5_BUFFER_ADDR_INFO_DETAILS_BUFFER_ADDR_31_0_MASK 0xffffffff
  1650. /* Description RX_MSDU_LINK_29_MSDU_5_BUFFER_ADDR_INFO_DETAILS_BUFFER_ADDR_39_32
  1651. Address (upper 8 bits) of the MSDU buffer OR
  1652. MSDU_EXTENSION descriptor OR Link Descriptor
  1653. In case of 'NULL' pointer, this field is set to 0
  1654. <legal all>
  1655. */
  1656. #define RX_MSDU_LINK_29_MSDU_5_BUFFER_ADDR_INFO_DETAILS_BUFFER_ADDR_39_32_OFFSET 0x00000074
  1657. #define RX_MSDU_LINK_29_MSDU_5_BUFFER_ADDR_INFO_DETAILS_BUFFER_ADDR_39_32_LSB 0
  1658. #define RX_MSDU_LINK_29_MSDU_5_BUFFER_ADDR_INFO_DETAILS_BUFFER_ADDR_39_32_MASK 0x000000ff
  1659. /* Description RX_MSDU_LINK_29_MSDU_5_BUFFER_ADDR_INFO_DETAILS_RETURN_BUFFER_MANAGER
  1660. Consumer: WBM
  1661. Producer: SW/FW
  1662. In case of 'NULL' pointer, this field is set to 0
  1663. Indicates to which buffer manager the buffer OR
  1664. MSDU_EXTENSION descriptor OR link descriptor that is being
  1665. pointed to shall be returned after the frame has been
  1666. processed. It is used by WBM for routing purposes.
  1667. <enum 0 WBM_IDLE_BUF_LIST> This buffer shall be returned
  1668. to the WMB buffer idle list
  1669. <enum 1 WBM_IDLE_DESC_LIST> This buffer shall be
  1670. returned to the WMB idle link descriptor idle list
  1671. <enum 2 FW_BM> This buffer shall be returned to the FW
  1672. <enum 3 SW0_BM> This buffer shall be returned to the SW,
  1673. ring 0
  1674. <enum 4 SW1_BM> This buffer shall be returned to the SW,
  1675. ring 1
  1676. <enum 5 SW2_BM> This buffer shall be returned to the SW,
  1677. ring 2
  1678. <enum 6 SW3_BM> This buffer shall be returned to the SW,
  1679. ring 3
  1680. <enum 7 SW4_BM> This buffer shall be returned to the SW,
  1681. ring 4
  1682. <legal all>
  1683. */
  1684. #define RX_MSDU_LINK_29_MSDU_5_BUFFER_ADDR_INFO_DETAILS_RETURN_BUFFER_MANAGER_OFFSET 0x00000074
  1685. #define RX_MSDU_LINK_29_MSDU_5_BUFFER_ADDR_INFO_DETAILS_RETURN_BUFFER_MANAGER_LSB 8
  1686. #define RX_MSDU_LINK_29_MSDU_5_BUFFER_ADDR_INFO_DETAILS_RETURN_BUFFER_MANAGER_MASK 0x00000700
  1687. /* Description RX_MSDU_LINK_29_MSDU_5_BUFFER_ADDR_INFO_DETAILS_SW_BUFFER_COOKIE
  1688. Cookie field exclusively used by SW.
  1689. In case of 'NULL' pointer, this field is set to 0
  1690. HW ignores the contents, accept that it passes the
  1691. programmed value on to other descriptors together with the
  1692. physical address
  1693. Field can be used by SW to for example associate the
  1694. buffers physical address with the virtual address
  1695. The bit definitions as used by SW are within SW HLD
  1696. specification
  1697. NOTE:
  1698. The three most significant bits can have a special
  1699. meaning in case this struct is embedded in a TX_MPDU_DETAILS
  1700. STRUCT, and field transmit_bw_restriction is set
  1701. In case of NON punctured transmission:
  1702. Sw_buffer_cookie[20:19] = 2'b00: 20 MHz TX only
  1703. Sw_buffer_cookie[20:19] = 2'b01: 40 MHz TX only
  1704. Sw_buffer_cookie[20:19] = 2'b10: 80 MHz TX only
  1705. Sw_buffer_cookie[20:19] = 2'b11: 160 MHz TX only
  1706. In case of punctured transmission:
  1707. Sw_buffer_cookie[20:18] = 3'b000: pattern 0 only
  1708. Sw_buffer_cookie[20:18] = 3'b001: pattern 1 only
  1709. Sw_buffer_cookie[20:18] = 3'b010: pattern 2 only
  1710. Sw_buffer_cookie[20:18] = 3'b011: pattern 3 only
  1711. Sw_buffer_cookie[20:18] = 3'b100: pattern 4 only
  1712. Sw_buffer_cookie[20:18] = 3'b101: pattern 5 only
  1713. Sw_buffer_cookie[20:18] = 3'b110: pattern 6 only
  1714. Sw_buffer_cookie[20:18] = 3'b111: pattern 7 only
  1715. Note: a punctured transmission is indicated by the
  1716. presence of TLV TX_PUNCTURE_SETUP embedded in the scheduler
  1717. TLV
  1718. <legal all>
  1719. */
  1720. #define RX_MSDU_LINK_29_MSDU_5_BUFFER_ADDR_INFO_DETAILS_SW_BUFFER_COOKIE_OFFSET 0x00000074
  1721. #define RX_MSDU_LINK_29_MSDU_5_BUFFER_ADDR_INFO_DETAILS_SW_BUFFER_COOKIE_LSB 11
  1722. #define RX_MSDU_LINK_29_MSDU_5_BUFFER_ADDR_INFO_DETAILS_SW_BUFFER_COOKIE_MASK 0xfffff800
  1723. /* EXTERNAL REFERENCE : struct rx_msdu_desc_info rx_msdu_desc_info_details */
  1724. /* Description RX_MSDU_LINK_30_MSDU_5_RX_MSDU_DESC_INFO_DETAILS_FIRST_MSDU_IN_MPDU_FLAG
  1725. Parsed from RX_MSDU_END TLV . In the case MSDU spans
  1726. over multiple buffers, this field will be valid in the Last
  1727. buffer used by the MSDU
  1728. <enum 0 Not_first_msdu> This is not the first MSDU in
  1729. the MPDU.
  1730. <enum 1 first_msdu> This MSDU is the first one in the
  1731. MPDU.
  1732. <legal all>
  1733. */
  1734. #define RX_MSDU_LINK_30_MSDU_5_RX_MSDU_DESC_INFO_DETAILS_FIRST_MSDU_IN_MPDU_FLAG_OFFSET 0x00000078
  1735. #define RX_MSDU_LINK_30_MSDU_5_RX_MSDU_DESC_INFO_DETAILS_FIRST_MSDU_IN_MPDU_FLAG_LSB 0
  1736. #define RX_MSDU_LINK_30_MSDU_5_RX_MSDU_DESC_INFO_DETAILS_FIRST_MSDU_IN_MPDU_FLAG_MASK 0x00000001
  1737. /* Description RX_MSDU_LINK_30_MSDU_5_RX_MSDU_DESC_INFO_DETAILS_LAST_MSDU_IN_MPDU_FLAG
  1738. Consumer: WBM/REO/SW/FW
  1739. Producer: RXDMA
  1740. Parsed from RX_MSDU_END TLV . In the case MSDU spans
  1741. over multiple buffers, this field will be valid in the Last
  1742. buffer used by the MSDU
  1743. <enum 0 Not_last_msdu> There are more MSDUs linked to
  1744. this MSDU that belongs to this MPDU
  1745. <enum 1 Last_msdu> this MSDU is the last one in the
  1746. MPDU. This setting is only allowed in combination with
  1747. 'Msdu_continuation' set to 0. This implies that when an msdu
  1748. is spread out over multiple buffers and thus
  1749. msdu_continuation is set, only for the very last buffer of
  1750. the msdu, can the 'last_msdu_in_mpdu_flag' be set.
  1751. When both first_msdu_in_mpdu_flag and
  1752. last_msdu_in_mpdu_flag are set, the MPDU that this MSDU
  1753. belongs to only contains a single MSDU.
  1754. <legal all>
  1755. */
  1756. #define RX_MSDU_LINK_30_MSDU_5_RX_MSDU_DESC_INFO_DETAILS_LAST_MSDU_IN_MPDU_FLAG_OFFSET 0x00000078
  1757. #define RX_MSDU_LINK_30_MSDU_5_RX_MSDU_DESC_INFO_DETAILS_LAST_MSDU_IN_MPDU_FLAG_LSB 1
  1758. #define RX_MSDU_LINK_30_MSDU_5_RX_MSDU_DESC_INFO_DETAILS_LAST_MSDU_IN_MPDU_FLAG_MASK 0x00000002
  1759. /* Description RX_MSDU_LINK_30_MSDU_5_RX_MSDU_DESC_INFO_DETAILS_MSDU_CONTINUATION
  1760. When set, this MSDU buffer was not able to hold the
  1761. entire MSDU. The next buffer will therefor contain
  1762. additional information related to this MSDU.
  1763. <legal all>
  1764. */
  1765. #define RX_MSDU_LINK_30_MSDU_5_RX_MSDU_DESC_INFO_DETAILS_MSDU_CONTINUATION_OFFSET 0x00000078
  1766. #define RX_MSDU_LINK_30_MSDU_5_RX_MSDU_DESC_INFO_DETAILS_MSDU_CONTINUATION_LSB 2
  1767. #define RX_MSDU_LINK_30_MSDU_5_RX_MSDU_DESC_INFO_DETAILS_MSDU_CONTINUATION_MASK 0x00000004
  1768. /* Description RX_MSDU_LINK_30_MSDU_5_RX_MSDU_DESC_INFO_DETAILS_MSDU_LENGTH
  1769. Parsed from RX_MSDU_START TLV . In the case MSDU spans
  1770. over multiple buffers, this field will be valid in the First
  1771. buffer used by MSDU.
  1772. Full MSDU length in bytes after decapsulation.
  1773. This field is still valid for MPDU frames without
  1774. A-MSDU. It still represents MSDU length after decapsulation
  1775. Or in case of RAW MPDUs, it indicates the length of the
  1776. entire MPDU (without FCS field)
  1777. <legal all>
  1778. */
  1779. #define RX_MSDU_LINK_30_MSDU_5_RX_MSDU_DESC_INFO_DETAILS_MSDU_LENGTH_OFFSET 0x00000078
  1780. #define RX_MSDU_LINK_30_MSDU_5_RX_MSDU_DESC_INFO_DETAILS_MSDU_LENGTH_LSB 3
  1781. #define RX_MSDU_LINK_30_MSDU_5_RX_MSDU_DESC_INFO_DETAILS_MSDU_LENGTH_MASK 0x0001fff8
  1782. /* Description RX_MSDU_LINK_30_MSDU_5_RX_MSDU_DESC_INFO_DETAILS_REO_DESTINATION_INDICATION
  1783. Parsed from RX_MSDU_END TLV . In the case MSDU spans
  1784. over multiple buffers, this field will be valid in the Last
  1785. buffer used by the MSDU
  1786. The ID of the REO exit ring where the MSDU frame shall
  1787. push after (MPDU level) reordering has finished.
  1788. <enum 0 reo_destination_tcl> Reo will push the frame
  1789. into the REO2TCL ring
  1790. <enum 1 reo_destination_sw1> Reo will push the frame
  1791. into the REO2SW1 ring
  1792. <enum 2 reo_destination_sw2> Reo will push the frame
  1793. into the REO2SW2 ring
  1794. <enum 3 reo_destination_sw3> Reo will push the frame
  1795. into the REO2SW3 ring
  1796. <enum 4 reo_destination_sw4> Reo will push the frame
  1797. into the REO2SW4 ring
  1798. <enum 5 reo_destination_release> Reo will push the frame
  1799. into the REO_release ring
  1800. <enum 6 reo_destination_fw> Reo will push the frame into
  1801. the REO2FW ring
  1802. <enum 7 reo_destination_sw5> Reo will push the frame
  1803. into the REO2SW5 ring
  1804. <enum 8 reo_destination_sw6> Reo will push the frame
  1805. into the REO2SW6 ring
  1806. <enum 9 reo_destination_9> REO remaps this <enum 10
  1807. reo_destination_10> REO remaps this
  1808. <enum 11 reo_destination_11> REO remaps this
  1809. <enum 12 reo_destination_12> REO remaps this <enum 13
  1810. reo_destination_13> REO remaps this
  1811. <enum 14 reo_destination_14> REO remaps this
  1812. <enum 15 reo_destination_15> REO remaps this
  1813. <enum 16 reo_destination_16> REO remaps this
  1814. <enum 17 reo_destination_17> REO remaps this
  1815. <enum 18 reo_destination_18> REO remaps this
  1816. <enum 19 reo_destination_19> REO remaps this
  1817. <enum 20 reo_destination_20> REO remaps this
  1818. <enum 21 reo_destination_21> REO remaps this
  1819. <enum 22 reo_destination_22> REO remaps this
  1820. <enum 23 reo_destination_23> REO remaps this
  1821. <enum 24 reo_destination_24> REO remaps this
  1822. <enum 25 reo_destination_25> REO remaps this
  1823. <enum 26 reo_destination_26> REO remaps this
  1824. <enum 27 reo_destination_27> REO remaps this
  1825. <enum 28 reo_destination_28> REO remaps this
  1826. <enum 29 reo_destination_29> REO remaps this
  1827. <enum 30 reo_destination_30> REO remaps this
  1828. <enum 31 reo_destination_31> REO remaps this
  1829. <legal all>
  1830. */
  1831. #define RX_MSDU_LINK_30_MSDU_5_RX_MSDU_DESC_INFO_DETAILS_REO_DESTINATION_INDICATION_OFFSET 0x00000078
  1832. #define RX_MSDU_LINK_30_MSDU_5_RX_MSDU_DESC_INFO_DETAILS_REO_DESTINATION_INDICATION_LSB 17
  1833. #define RX_MSDU_LINK_30_MSDU_5_RX_MSDU_DESC_INFO_DETAILS_REO_DESTINATION_INDICATION_MASK 0x003e0000
  1834. /* Description RX_MSDU_LINK_30_MSDU_5_RX_MSDU_DESC_INFO_DETAILS_MSDU_DROP
  1835. Parsed from RX_MSDU_END TLV . In the case MSDU spans
  1836. over multiple buffers, this field will be valid in the Last
  1837. buffer used by the MSDU
  1838. When set, REO shall drop this MSDU and not forward it to
  1839. any other ring...
  1840. <legal all>
  1841. */
  1842. #define RX_MSDU_LINK_30_MSDU_5_RX_MSDU_DESC_INFO_DETAILS_MSDU_DROP_OFFSET 0x00000078
  1843. #define RX_MSDU_LINK_30_MSDU_5_RX_MSDU_DESC_INFO_DETAILS_MSDU_DROP_LSB 22
  1844. #define RX_MSDU_LINK_30_MSDU_5_RX_MSDU_DESC_INFO_DETAILS_MSDU_DROP_MASK 0x00400000
  1845. /* Description RX_MSDU_LINK_30_MSDU_5_RX_MSDU_DESC_INFO_DETAILS_SA_IS_VALID
  1846. Parsed from RX_MSDU_END TLV . In the case MSDU spans
  1847. over multiple buffers, this field will be valid in the Last
  1848. buffer used by the MSDU
  1849. Indicates that OLE found a valid SA entry for this MSDU
  1850. <legal all>
  1851. */
  1852. #define RX_MSDU_LINK_30_MSDU_5_RX_MSDU_DESC_INFO_DETAILS_SA_IS_VALID_OFFSET 0x00000078
  1853. #define RX_MSDU_LINK_30_MSDU_5_RX_MSDU_DESC_INFO_DETAILS_SA_IS_VALID_LSB 23
  1854. #define RX_MSDU_LINK_30_MSDU_5_RX_MSDU_DESC_INFO_DETAILS_SA_IS_VALID_MASK 0x00800000
  1855. /* Description RX_MSDU_LINK_30_MSDU_5_RX_MSDU_DESC_INFO_DETAILS_SA_IDX_TIMEOUT
  1856. Parsed from RX_MSDU_END TLV . In the case MSDU spans
  1857. over multiple buffers, this field will be valid in the Last
  1858. buffer used by the MSDU
  1859. Indicates an unsuccessful MAC source address search due
  1860. to the expiring of the search timer for this MSDU
  1861. <legal all>
  1862. */
  1863. #define RX_MSDU_LINK_30_MSDU_5_RX_MSDU_DESC_INFO_DETAILS_SA_IDX_TIMEOUT_OFFSET 0x00000078
  1864. #define RX_MSDU_LINK_30_MSDU_5_RX_MSDU_DESC_INFO_DETAILS_SA_IDX_TIMEOUT_LSB 24
  1865. #define RX_MSDU_LINK_30_MSDU_5_RX_MSDU_DESC_INFO_DETAILS_SA_IDX_TIMEOUT_MASK 0x01000000
  1866. /* Description RX_MSDU_LINK_30_MSDU_5_RX_MSDU_DESC_INFO_DETAILS_DA_IS_VALID
  1867. Parsed from RX_MSDU_END TLV . In the case MSDU spans
  1868. over multiple buffers, this field will be valid in the Last
  1869. buffer used by the MSDU
  1870. Indicates that OLE found a valid DA entry for this MSDU
  1871. <legal all>
  1872. */
  1873. #define RX_MSDU_LINK_30_MSDU_5_RX_MSDU_DESC_INFO_DETAILS_DA_IS_VALID_OFFSET 0x00000078
  1874. #define RX_MSDU_LINK_30_MSDU_5_RX_MSDU_DESC_INFO_DETAILS_DA_IS_VALID_LSB 25
  1875. #define RX_MSDU_LINK_30_MSDU_5_RX_MSDU_DESC_INFO_DETAILS_DA_IS_VALID_MASK 0x02000000
  1876. /* Description RX_MSDU_LINK_30_MSDU_5_RX_MSDU_DESC_INFO_DETAILS_DA_IS_MCBC
  1877. Field Only valid if da_is_valid is set
  1878. Indicates the DA address was a Multicast of Broadcast
  1879. address for this MSDU
  1880. <legal all>
  1881. */
  1882. #define RX_MSDU_LINK_30_MSDU_5_RX_MSDU_DESC_INFO_DETAILS_DA_IS_MCBC_OFFSET 0x00000078
  1883. #define RX_MSDU_LINK_30_MSDU_5_RX_MSDU_DESC_INFO_DETAILS_DA_IS_MCBC_LSB 26
  1884. #define RX_MSDU_LINK_30_MSDU_5_RX_MSDU_DESC_INFO_DETAILS_DA_IS_MCBC_MASK 0x04000000
  1885. /* Description RX_MSDU_LINK_30_MSDU_5_RX_MSDU_DESC_INFO_DETAILS_DA_IDX_TIMEOUT
  1886. Parsed from RX_MSDU_END TLV . In the case MSDU spans
  1887. over multiple buffers, this field will be valid in the Last
  1888. buffer used by the MSDU
  1889. Indicates an unsuccessful MAC destination address search
  1890. due to the expiring of the search timer for this MSDU
  1891. <legal all>
  1892. */
  1893. #define RX_MSDU_LINK_30_MSDU_5_RX_MSDU_DESC_INFO_DETAILS_DA_IDX_TIMEOUT_OFFSET 0x00000078
  1894. #define RX_MSDU_LINK_30_MSDU_5_RX_MSDU_DESC_INFO_DETAILS_DA_IDX_TIMEOUT_LSB 27
  1895. #define RX_MSDU_LINK_30_MSDU_5_RX_MSDU_DESC_INFO_DETAILS_DA_IDX_TIMEOUT_MASK 0x08000000
  1896. /* Description RX_MSDU_LINK_30_MSDU_5_RX_MSDU_DESC_INFO_DETAILS_RESERVED_0A
  1897. <legal 0>
  1898. */
  1899. #define RX_MSDU_LINK_30_MSDU_5_RX_MSDU_DESC_INFO_DETAILS_RESERVED_0A_OFFSET 0x00000078
  1900. #define RX_MSDU_LINK_30_MSDU_5_RX_MSDU_DESC_INFO_DETAILS_RESERVED_0A_LSB 28
  1901. #define RX_MSDU_LINK_30_MSDU_5_RX_MSDU_DESC_INFO_DETAILS_RESERVED_0A_MASK 0xf0000000
  1902. /* Description RX_MSDU_LINK_31_MSDU_5_RX_MSDU_DESC_INFO_DETAILS_RESERVED_1A
  1903. <legal 0>
  1904. */
  1905. #define RX_MSDU_LINK_31_MSDU_5_RX_MSDU_DESC_INFO_DETAILS_RESERVED_1A_OFFSET 0x0000007c
  1906. #define RX_MSDU_LINK_31_MSDU_5_RX_MSDU_DESC_INFO_DETAILS_RESERVED_1A_LSB 0
  1907. #define RX_MSDU_LINK_31_MSDU_5_RX_MSDU_DESC_INFO_DETAILS_RESERVED_1A_MASK 0xffffffff
  1908. #endif // _RX_MSDU_LINK_H_