rx_msdu_link.h 100 KB

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