rx_msdu_link.h 150 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842184318441845184618471848184918501851185218531854185518561857185818591860186118621863186418651866186718681869187018711872187318741875187618771878187918801881188218831884188518861887188818891890189118921893189418951896189718981899190019011902190319041905190619071908190919101911191219131914191519161917191819191920192119221923192419251926192719281929193019311932193319341935193619371938193919401941194219431944194519461947194819491950195119521953195419551956195719581959196019611962196319641965196619671968196919701971197219731974197519761977197819791980198119821983198419851986198719881989199019911992199319941995199619971998199920002001200220032004200520062007200820092010201120122013201420152016201720182019202020212022202320242025202620272028202920302031203220332034203520362037203820392040204120422043204420452046204720482049205020512052205320542055205620572058205920602061206220632064206520662067206820692070207120722073207420752076207720782079208020812082208320842085208620872088208920902091209220932094209520962097209820992100210121022103210421052106210721082109211021112112211321142115211621172118211921202121212221232124212521262127212821292130213121322133213421352136213721382139214021412142214321442145214621472148214921502151215221532154215521562157215821592160216121622163216421652166216721682169217021712172217321742175217621772178217921802181218221832184218521862187218821892190219121922193219421952196219721982199220022012202220322042205220622072208220922102211221222132214221522162217221822192220222122222223222422252226222722282229223022312232223322342235223622372238223922402241224222432244224522462247224822492250225122522253225422552256225722582259226022612262226322642265226622672268226922702271227222732274227522762277227822792280228122822283228422852286228722882289229022912292229322942295229622972298229923002301230223032304230523062307230823092310231123122313231423152316231723182319232023212322232323242325232623272328232923302331233223332334233523362337233823392340234123422343234423452346234723482349235023512352235323542355235623572358235923602361236223632364236523662367236823692370237123722373237423752376237723782379238023812382238323842385238623872388238923902391239223932394239523962397239823992400240124022403240424052406240724082409241024112412241324142415241624172418241924202421242224232424242524262427242824292430243124322433243424352436243724382439244024412442244324442445244624472448244924502451245224532454245524562457245824592460246124622463246424652466246724682469247024712472247324742475247624772478247924802481248224832484248524862487248824892490249124922493249424952496249724982499250025012502250325042505250625072508250925102511251225132514251525162517251825192520252125222523252425252526252725282529253025312532253325342535253625372538253925402541254225432544254525462547254825492550255125522553255425552556255725582559256025612562256325642565256625672568256925702571257225732574257525762577257825792580258125822583258425852586258725882589259025912592259325942595259625972598259926002601260226032604260526062607260826092610261126122613261426152616261726182619262026212622262326242625262626272628262926302631263226332634263526362637263826392640264126422643264426452646264726482649265026512652265326542655265626572658265926602661266226632664266526662667266826692670267126722673267426752676267726782679268026812682268326842685268626872688268926902691269226932694269526962697269826992700270127022703270427052706270727082709271027112712271327142715271627172718271927202721272227232724272527262727272827292730273127322733273427352736273727382739274027412742274327442745274627472748274927502751275227532754275527562757275827592760276127622763276427652766276727682769277027712772277327742775277627772778277927802781278227832784278527862787278827892790279127922793279427952796279727982799280028012802280328042805280628072808280928102811281228132814281528162817281828192820282128222823282428252826282728282829283028312832283328342835283628372838283928402841284228432844284528462847284828492850285128522853285428552856285728582859286028612862286328642865286628672868286928702871287228732874287528762877287828792880288128822883288428852886288728882889289028912892289328942895289628972898289929002901290229032904290529062907290829092910291129122913291429152916291729182919292029212922292329242925292629272928292929302931293229332934293529362937293829392940294129422943294429452946294729482949295029512952295329542955295629572958295929602961296229632964296529662967296829692970297129722973297429752976297729782979298029812982298329842985298629872988298929902991299229932994299529962997299829993000300130023003300430053006300730083009301030113012301330143015301630173018301930203021302230233024302530263027302830293030303130323033303430353036303730383039304030413042304330443045304630473048304930503051305230533054305530563057305830593060306130623063306430653066306730683069307030713072307330743075307630773078307930803081308230833084308530863087308830893090309130923093309430953096309730983099310031013102310331043105310631073108310931103111311231133114311531163117311831193120312131223123312431253126312731283129313031313132313331343135313631373138313931403141314231433144314531463147314831493150315131523153315431553156315731583159316031613162316331643165316631673168316931703171317231733174317531763177317831793180318131823183318431853186318731883189319031913192319331943195319631973198319932003201320232033204320532063207320832093210321132123213321432153216321732183219322032213222322332243225322632273228322932303231323232333234323532363237323832393240324132423243324432453246324732483249325032513252325332543255325632573258325932603261326232633264326532663267326832693270327132723273327432753276327732783279328032813282328332843285328632873288328932903291329232933294329532963297329832993300330133023303330433053306330733083309331033113312331333143315331633173318331933203321332233233324332533263327332833293330333133323333333433353336333733383339334033413342334333443345334633473348334933503351335233533354335533563357335833593360336133623363336433653366336733683369337033713372337333743375337633773378337933803381338233833384338533863387338833893390339133923393339433953396339733983399340034013402340334043405340634073408340934103411341234133414341534163417341834193420342134223423342434253426342734283429343034313432343334343435343634373438343934403441344234433444344534463447344834493450345134523453345434553456345734583459346034613462346334643465346634673468346934703471347234733474347534763477347834793480348134823483348434853486348734883489349034913492349334943495349634973498349935003501350235033504350535063507350835093510351135123513351435153516351735183519352035213522352335243525352635273528352935303531353235333534353535363537353835393540354135423543354435453546354735483549355035513552355335543555355635573558355935603561356235633564356535663567356835693570357135723573357435753576357735783579358035813582358335843585358635873588358935903591359235933594359535963597359835993600360136023603360436053606360736083609361036113612361336143615361636173618361936203621362236233624362536263627362836293630363136323633363436353636363736383639364036413642364336443645364636473648364936503651365236533654365536563657365836593660366136623663366436653666366736683669367036713672367336743675367636773678367936803681368236833684368536863687368836893690369136923693369436953696369736983699370037013702370337043705370637073708370937103711371237133714371537163717371837193720372137223723372437253726372737283729373037313732373337343735373637373738373937403741374237433744374537463747374837493750375137523753375437553756375737583759376037613762376337643765376637673768376937703771377237733774377537763777377837793780378137823783378437853786378737883789379037913792379337943795379637973798379938003801380238033804380538063807380838093810381138123813381438153816381738183819382038213822382338243825382638273828382938303831383238333834383538363837383838393840384138423843384438453846384738483849385038513852385338543855385638573858385938603861386238633864386538663867386838693870387138723873387438753876387738783879388038813882388338843885388638873888388938903891389238933894389538963897389838993900390139023903390439053906390739083909391039113912391339143915391639173918391939203921392239233924392539263927392839293930393139323933393439353936393739383939394039413942394339443945394639473948394939503951395239533954395539563957395839593960396139623963396439653966396739683969397039713972397339743975397639773978397939803981398239833984398539863987398839893990399139923993399439953996399739983999400040014002400340044005400640074008400940104011401240134014401540164017401840194020402140224023402440254026402740284029403040314032403340344035403640374038403940404041404240434044404540464047404840494050
  1. /*
  2. * Copyright (c) 2023 Qualcomm Innovation Center, Inc. All rights reserved.
  3. *
  4. * Permission to use, copy, modify, and/or distribute this software for any
  5. * purpose with or without fee is hereby granted, provided that the above
  6. * copyright notice and this permission notice appear in all copies.
  7. *
  8. * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
  9. * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
  10. * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
  11. * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
  12. * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
  13. * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
  14. * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
  15. */
  16. #ifndef _RX_MSDU_LINK_H_
  17. #define _RX_MSDU_LINK_H_
  18. #if !defined(__ASSEMBLER__)
  19. #endif
  20. #include "uniform_descriptor_header.h"
  21. #include "buffer_addr_info.h"
  22. #include "rx_msdu_details.h"
  23. #define NUM_OF_DWORDS_RX_MSDU_LINK 32
  24. struct rx_msdu_link {
  25. #ifndef WIFI_BIT_ORDER_BIG_ENDIAN
  26. struct uniform_descriptor_header descriptor_header;
  27. struct buffer_addr_info next_msdu_link_desc_addr_info;
  28. uint32_t receive_queue_number : 16, // [15:0]
  29. first_rx_msdu_link_struct : 1, // [16:16]
  30. reserved_3a : 15; // [31:17]
  31. uint32_t pn_31_0 : 32; // [31:0]
  32. uint32_t pn_63_32 : 32; // [31:0]
  33. uint32_t pn_95_64 : 32; // [31:0]
  34. uint32_t pn_127_96 : 32; // [31:0]
  35. struct rx_msdu_details msdu_0;
  36. struct rx_msdu_details msdu_1;
  37. struct rx_msdu_details msdu_2;
  38. struct rx_msdu_details msdu_3;
  39. struct rx_msdu_details msdu_4;
  40. struct rx_msdu_details msdu_5;
  41. #else
  42. struct uniform_descriptor_header descriptor_header;
  43. struct buffer_addr_info next_msdu_link_desc_addr_info;
  44. uint32_t reserved_3a : 15, // [31:17]
  45. first_rx_msdu_link_struct : 1, // [16:16]
  46. receive_queue_number : 16; // [15:0]
  47. uint32_t pn_31_0 : 32; // [31:0]
  48. uint32_t pn_63_32 : 32; // [31:0]
  49. uint32_t pn_95_64 : 32; // [31:0]
  50. uint32_t pn_127_96 : 32; // [31:0]
  51. struct rx_msdu_details msdu_0;
  52. struct rx_msdu_details msdu_1;
  53. struct rx_msdu_details msdu_2;
  54. struct rx_msdu_details msdu_3;
  55. struct rx_msdu_details msdu_4;
  56. struct rx_msdu_details msdu_5;
  57. #endif
  58. };
  59. /* Description DESCRIPTOR_HEADER
  60. Details about which module owns this struct.
  61. Note that sub field "Buffer_type" shall be set to "Receive_MSDU_Link_descriptor"
  62. */
  63. /* Description OWNER
  64. Consumer: In DEBUG mode: WBM, TQM, TXDMA, RXDMA, REO
  65. Producer: In DEBUG mode: WBM, TQM, TXDMA, RXDMA, REO
  66. The owner of this data structure:
  67. <enum 0 WBM_owned> Buffer Manager currently owns this data
  68. structure.
  69. <enum 1 SW_OR_FW_owned> Software of FW currently owns this
  70. data structure.
  71. <enum 2 TQM_owned> Transmit Queue Manager currently owns
  72. this data structure.
  73. <enum 3 RXDMA_owned> Receive DMA currently owns this data
  74. structure.
  75. <enum 4 REO_owned> Reorder currently owns this data structure.
  76. <enum 5 SWITCH_owned> SWITCH currently owns this data structure.
  77. <legal 0-5>
  78. */
  79. #define RX_MSDU_LINK_DESCRIPTOR_HEADER_OWNER_OFFSET 0x00000000
  80. #define RX_MSDU_LINK_DESCRIPTOR_HEADER_OWNER_LSB 0
  81. #define RX_MSDU_LINK_DESCRIPTOR_HEADER_OWNER_MSB 3
  82. #define RX_MSDU_LINK_DESCRIPTOR_HEADER_OWNER_MASK 0x0000000f
  83. /* Description BUFFER_TYPE
  84. Consumer: In DEBUG mode: WBM, TQM, TXDMA, RXDMA, REO
  85. Producer: In DEBUG mode: WBM, TQM, TXDMA, RXDMA, REO
  86. Field describing what contents format is of this descriptor
  87. <enum 0 Transmit_MSDU_Link_descriptor>
  88. <enum 1 Transmit_MPDU_Link_descriptor>
  89. <enum 2 Transmit_MPDU_Queue_head_descriptor>
  90. <enum 3 Transmit_MPDU_Queue_ext_descriptor>
  91. <enum 4 Transmit_flow_descriptor>
  92. <enum 5 Transmit_buffer> NOT TO BE USED:
  93. <enum 6 Receive_MSDU_Link_descriptor>
  94. <enum 7 Receive_MPDU_Link_descriptor>
  95. <enum 8 Receive_REO_queue_descriptor>
  96. <enum 9 Receive_REO_queue_1k_descriptor>
  97. <enum 10 Receive_REO_queue_ext_descriptor>
  98. <enum 11 Receive_buffer>
  99. <enum 12 Idle_link_list_entry>
  100. <legal 0-12>
  101. */
  102. #define RX_MSDU_LINK_DESCRIPTOR_HEADER_BUFFER_TYPE_OFFSET 0x00000000
  103. #define RX_MSDU_LINK_DESCRIPTOR_HEADER_BUFFER_TYPE_LSB 4
  104. #define RX_MSDU_LINK_DESCRIPTOR_HEADER_BUFFER_TYPE_MSB 7
  105. #define RX_MSDU_LINK_DESCRIPTOR_HEADER_BUFFER_TYPE_MASK 0x000000f0
  106. /* Description TX_MPDU_QUEUE_NUMBER
  107. Consumer: TQM/Debug
  108. Producer: SW (in 'TX_MPDU_QUEUE_HEAD')/TQM (elsewhere)
  109. Field only valid if Buffer_type is any of Transmit_MPDU_*_descriptor
  110. Indicates the MPDU queue ID to which this MPDU descriptor
  111. belongs
  112. Used for tracking and debugging
  113. <legal all>
  114. */
  115. #define RX_MSDU_LINK_DESCRIPTOR_HEADER_TX_MPDU_QUEUE_NUMBER_OFFSET 0x00000000
  116. #define RX_MSDU_LINK_DESCRIPTOR_HEADER_TX_MPDU_QUEUE_NUMBER_LSB 8
  117. #define RX_MSDU_LINK_DESCRIPTOR_HEADER_TX_MPDU_QUEUE_NUMBER_MSB 27
  118. #define RX_MSDU_LINK_DESCRIPTOR_HEADER_TX_MPDU_QUEUE_NUMBER_MASK 0x0fffff00
  119. /* Description RESERVED_0A
  120. <legal 0>
  121. */
  122. #define RX_MSDU_LINK_DESCRIPTOR_HEADER_RESERVED_0A_OFFSET 0x00000000
  123. #define RX_MSDU_LINK_DESCRIPTOR_HEADER_RESERVED_0A_LSB 28
  124. #define RX_MSDU_LINK_DESCRIPTOR_HEADER_RESERVED_0A_MSB 31
  125. #define RX_MSDU_LINK_DESCRIPTOR_HEADER_RESERVED_0A_MASK 0xf0000000
  126. /* Description NEXT_MSDU_LINK_DESC_ADDR_INFO
  127. Details of the physical address of the next MSDU link descriptor
  128. that contains info about additional MSDUs that are part
  129. of this MPDU.
  130. */
  131. /* Description BUFFER_ADDR_31_0
  132. Address (lower 32 bits) of the MSDU buffer OR MSDU_EXTENSION
  133. descriptor OR Link Descriptor
  134. In case of 'NULL' pointer, this field is set to 0
  135. <legal all>
  136. */
  137. #define RX_MSDU_LINK_NEXT_MSDU_LINK_DESC_ADDR_INFO_BUFFER_ADDR_31_0_OFFSET 0x00000004
  138. #define RX_MSDU_LINK_NEXT_MSDU_LINK_DESC_ADDR_INFO_BUFFER_ADDR_31_0_LSB 0
  139. #define RX_MSDU_LINK_NEXT_MSDU_LINK_DESC_ADDR_INFO_BUFFER_ADDR_31_0_MSB 31
  140. #define RX_MSDU_LINK_NEXT_MSDU_LINK_DESC_ADDR_INFO_BUFFER_ADDR_31_0_MASK 0xffffffff
  141. /* Description BUFFER_ADDR_39_32
  142. Address (upper 8 bits) of the MSDU buffer OR MSDU_EXTENSION
  143. descriptor OR Link Descriptor
  144. In case of 'NULL' pointer, this field is set to 0
  145. <legal all>
  146. */
  147. #define RX_MSDU_LINK_NEXT_MSDU_LINK_DESC_ADDR_INFO_BUFFER_ADDR_39_32_OFFSET 0x00000008
  148. #define RX_MSDU_LINK_NEXT_MSDU_LINK_DESC_ADDR_INFO_BUFFER_ADDR_39_32_LSB 0
  149. #define RX_MSDU_LINK_NEXT_MSDU_LINK_DESC_ADDR_INFO_BUFFER_ADDR_39_32_MSB 7
  150. #define RX_MSDU_LINK_NEXT_MSDU_LINK_DESC_ADDR_INFO_BUFFER_ADDR_39_32_MASK 0x000000ff
  151. /* Description RETURN_BUFFER_MANAGER
  152. Consumer: WBM
  153. Producer: SW/FW
  154. In case of 'NULL' pointer, this field is set to 0
  155. Indicates to which buffer manager the buffer OR MSDU_EXTENSION
  156. descriptor OR link descriptor that is being pointed to
  157. shall be returned after the frame has been processed. It
  158. is used by WBM for routing purposes.
  159. <enum 0 WBM_IDLE_BUF_LIST> This buffer shall be returned
  160. to the WMB buffer idle list
  161. <enum 1 WBM_CHIP0_IDLE_DESC_LIST> This buffer shall be returned
  162. to the WBM idle link descriptor idle list, where the chip
  163. 0 WBM is chosen in case of a multi-chip config
  164. <enum 2 WBM_CHIP1_IDLE_DESC_LIST> This buffer shall be returned
  165. to the chip 1 WBM idle link descriptor idle list
  166. <enum 3 WBM_CHIP2_IDLE_DESC_LIST> This buffer shall be returned
  167. to the chip 2 WBM idle link descriptor idle list
  168. <enum 12 WBM_CHIP3_IDLE_DESC_LIST> This buffer shall be
  169. returned to chip 3 WBM idle link descriptor idle list
  170. <enum 4 FW_BM> This buffer shall be returned to the FW
  171. <enum 5 SW0_BM> This buffer shall be returned to the SW,
  172. ring 0
  173. <enum 6 SW1_BM> This buffer shall be returned to the SW,
  174. ring 1
  175. <enum 7 SW2_BM> This buffer shall be returned to the SW,
  176. ring 2
  177. <enum 8 SW3_BM> This buffer shall be returned to the SW,
  178. ring 3
  179. <enum 9 SW4_BM> This buffer shall be returned to the SW,
  180. ring 4
  181. <enum 10 SW5_BM> This buffer shall be returned to the SW,
  182. ring 5
  183. <enum 11 SW6_BM> This buffer shall be returned to the SW,
  184. ring 6
  185. <legal 0-12>
  186. */
  187. #define RX_MSDU_LINK_NEXT_MSDU_LINK_DESC_ADDR_INFO_RETURN_BUFFER_MANAGER_OFFSET 0x00000008
  188. #define RX_MSDU_LINK_NEXT_MSDU_LINK_DESC_ADDR_INFO_RETURN_BUFFER_MANAGER_LSB 8
  189. #define RX_MSDU_LINK_NEXT_MSDU_LINK_DESC_ADDR_INFO_RETURN_BUFFER_MANAGER_MSB 11
  190. #define RX_MSDU_LINK_NEXT_MSDU_LINK_DESC_ADDR_INFO_RETURN_BUFFER_MANAGER_MASK 0x00000f00
  191. /* Description SW_BUFFER_COOKIE
  192. Cookie field exclusively used by SW.
  193. In case of 'NULL' pointer, this field is set to 0
  194. HW ignores the contents, accept that it passes the programmed
  195. value on to other descriptors together with the physical
  196. address
  197. Field can be used by SW to for example associate the buffers
  198. physical address with the virtual address
  199. The bit definitions as used by SW are within SW HLD specification
  200. NOTE1:
  201. The three most significant bits can have a special meaning
  202. in case this struct is embedded in a TX_MPDU_DETAILS STRUCT,
  203. and field transmit_bw_restriction is set
  204. In case of NON punctured transmission:
  205. Sw_buffer_cookie[19:17] = 3'b000: 20 MHz TX only
  206. Sw_buffer_cookie[19:17] = 3'b001: 40 MHz TX only
  207. Sw_buffer_cookie[19:17] = 3'b010: 80 MHz TX only
  208. Sw_buffer_cookie[19:17] = 3'b011: 160 MHz TX only
  209. Sw_buffer_cookie[19:17] = 3'b101: 240 MHz TX only
  210. Sw_buffer_cookie[19:17] = 3'b100: 320 MHz TX only
  211. Sw_buffer_cookie[19:18] = 2'b11: reserved
  212. In case of punctured transmission:
  213. Sw_buffer_cookie[19:16] = 4'b0000: pattern 0 only
  214. Sw_buffer_cookie[19:16] = 4'b0001: pattern 1 only
  215. Sw_buffer_cookie[19:16] = 4'b0010: pattern 2 only
  216. Sw_buffer_cookie[19:16] = 4'b0011: pattern 3 only
  217. Sw_buffer_cookie[19:16] = 4'b0100: pattern 4 only
  218. Sw_buffer_cookie[19:16] = 4'b0101: pattern 5 only
  219. Sw_buffer_cookie[19:16] = 4'b0110: pattern 6 only
  220. Sw_buffer_cookie[19:16] = 4'b0111: pattern 7 only
  221. Sw_buffer_cookie[19:16] = 4'b1000: pattern 8 only
  222. Sw_buffer_cookie[19:16] = 4'b1001: pattern 9 only
  223. Sw_buffer_cookie[19:16] = 4'b1010: pattern 10 only
  224. Sw_buffer_cookie[19:16] = 4'b1011: pattern 11 only
  225. Sw_buffer_cookie[19:18] = 2'b11: reserved
  226. Note: a punctured transmission is indicated by the presence
  227. of TLV TX_PUNCTURE_SETUP embedded in the scheduler TLV
  228. <legal all>
  229. */
  230. #define RX_MSDU_LINK_NEXT_MSDU_LINK_DESC_ADDR_INFO_SW_BUFFER_COOKIE_OFFSET 0x00000008
  231. #define RX_MSDU_LINK_NEXT_MSDU_LINK_DESC_ADDR_INFO_SW_BUFFER_COOKIE_LSB 12
  232. #define RX_MSDU_LINK_NEXT_MSDU_LINK_DESC_ADDR_INFO_SW_BUFFER_COOKIE_MSB 31
  233. #define RX_MSDU_LINK_NEXT_MSDU_LINK_DESC_ADDR_INFO_SW_BUFFER_COOKIE_MASK 0xfffff000
  234. /* Description RECEIVE_QUEUE_NUMBER
  235. Indicates the Receive queue to which this MPDU descriptor
  236. belongs
  237. Used for tracking, finding bugs and debugging.
  238. <legal all>
  239. */
  240. #define RX_MSDU_LINK_RECEIVE_QUEUE_NUMBER_OFFSET 0x0000000c
  241. #define RX_MSDU_LINK_RECEIVE_QUEUE_NUMBER_LSB 0
  242. #define RX_MSDU_LINK_RECEIVE_QUEUE_NUMBER_MSB 15
  243. #define RX_MSDU_LINK_RECEIVE_QUEUE_NUMBER_MASK 0x0000ffff
  244. /* Description FIRST_RX_MSDU_LINK_STRUCT
  245. When set, this RX_MSDU_link descriptor is the first one
  246. in the MSDU link list. Field MSDU_0 points to the very first
  247. MSDU buffer descriptor in the MPDU
  248. <legal all>
  249. */
  250. #define RX_MSDU_LINK_FIRST_RX_MSDU_LINK_STRUCT_OFFSET 0x0000000c
  251. #define RX_MSDU_LINK_FIRST_RX_MSDU_LINK_STRUCT_LSB 16
  252. #define RX_MSDU_LINK_FIRST_RX_MSDU_LINK_STRUCT_MSB 16
  253. #define RX_MSDU_LINK_FIRST_RX_MSDU_LINK_STRUCT_MASK 0x00010000
  254. /* Description RESERVED_3A
  255. <legal 0>
  256. */
  257. #define RX_MSDU_LINK_RESERVED_3A_OFFSET 0x0000000c
  258. #define RX_MSDU_LINK_RESERVED_3A_LSB 17
  259. #define RX_MSDU_LINK_RESERVED_3A_MSB 31
  260. #define RX_MSDU_LINK_RESERVED_3A_MASK 0xfffe0000
  261. /* Description PN_31_0
  262. Field only valid when First_RX_MSDU_link_struct is set.
  263. 31-0 bits of the 256-bit packet number bitmap.
  264. <legal all>
  265. */
  266. #define RX_MSDU_LINK_PN_31_0_OFFSET 0x00000010
  267. #define RX_MSDU_LINK_PN_31_0_LSB 0
  268. #define RX_MSDU_LINK_PN_31_0_MSB 31
  269. #define RX_MSDU_LINK_PN_31_0_MASK 0xffffffff
  270. /* Description PN_63_32
  271. Field only valid when First_RX_MSDU_link_struct is set.
  272. 63-32 bits of the 256-bit packet number bitmap.
  273. <legal all>
  274. */
  275. #define RX_MSDU_LINK_PN_63_32_OFFSET 0x00000014
  276. #define RX_MSDU_LINK_PN_63_32_LSB 0
  277. #define RX_MSDU_LINK_PN_63_32_MSB 31
  278. #define RX_MSDU_LINK_PN_63_32_MASK 0xffffffff
  279. /* Description PN_95_64
  280. Field only valid when First_RX_MSDU_link_struct is set.
  281. 95-64 bits of the 256-bit packet number bitmap.
  282. <legal all>
  283. */
  284. #define RX_MSDU_LINK_PN_95_64_OFFSET 0x00000018
  285. #define RX_MSDU_LINK_PN_95_64_LSB 0
  286. #define RX_MSDU_LINK_PN_95_64_MSB 31
  287. #define RX_MSDU_LINK_PN_95_64_MASK 0xffffffff
  288. /* Description PN_127_96
  289. Field only valid when First_RX_MSDU_link_struct is set.
  290. 127-96 bits of the 256-bit packet number bitmap.
  291. <legal all>
  292. */
  293. #define RX_MSDU_LINK_PN_127_96_OFFSET 0x0000001c
  294. #define RX_MSDU_LINK_PN_127_96_LSB 0
  295. #define RX_MSDU_LINK_PN_127_96_MSB 31
  296. #define RX_MSDU_LINK_PN_127_96_MASK 0xffffffff
  297. /* Description MSDU_0
  298. When First_RX_MSDU_link_struct is set, this MSDU is the
  299. first in the MPDU
  300. When First_RX_MSDU_link_struct is NOT set, this MSDU follows
  301. the last MSDU in the previous RX_MSDU_link data structure
  302. */
  303. /* Description BUFFER_ADDR_INFO_DETAILS
  304. Consumer: REO/SW
  305. Producer: RXDMA
  306. Details of the physical address of the buffer containing
  307. an MSDU (or entire MPDU)
  308. */
  309. /* Description BUFFER_ADDR_31_0
  310. Address (lower 32 bits) of the MSDU buffer OR MSDU_EXTENSION
  311. 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_MSDU_0_BUFFER_ADDR_INFO_DETAILS_BUFFER_ADDR_31_0_OFFSET 0x00000020
  316. #define RX_MSDU_LINK_MSDU_0_BUFFER_ADDR_INFO_DETAILS_BUFFER_ADDR_31_0_LSB 0
  317. #define RX_MSDU_LINK_MSDU_0_BUFFER_ADDR_INFO_DETAILS_BUFFER_ADDR_31_0_MSB 31
  318. #define RX_MSDU_LINK_MSDU_0_BUFFER_ADDR_INFO_DETAILS_BUFFER_ADDR_31_0_MASK 0xffffffff
  319. /* Description BUFFER_ADDR_39_32
  320. Address (upper 8 bits) of the MSDU buffer OR MSDU_EXTENSION
  321. descriptor OR Link Descriptor
  322. In case of 'NULL' pointer, this field is set to 0
  323. <legal all>
  324. */
  325. #define RX_MSDU_LINK_MSDU_0_BUFFER_ADDR_INFO_DETAILS_BUFFER_ADDR_39_32_OFFSET 0x00000024
  326. #define RX_MSDU_LINK_MSDU_0_BUFFER_ADDR_INFO_DETAILS_BUFFER_ADDR_39_32_LSB 0
  327. #define RX_MSDU_LINK_MSDU_0_BUFFER_ADDR_INFO_DETAILS_BUFFER_ADDR_39_32_MSB 7
  328. #define RX_MSDU_LINK_MSDU_0_BUFFER_ADDR_INFO_DETAILS_BUFFER_ADDR_39_32_MASK 0x000000ff
  329. /* Description RETURN_BUFFER_MANAGER
  330. Consumer: WBM
  331. Producer: SW/FW
  332. In case of 'NULL' pointer, this field is set to 0
  333. Indicates to which buffer manager the buffer OR MSDU_EXTENSION
  334. descriptor OR link descriptor that is being pointed to
  335. shall be returned after the frame has been processed. It
  336. is used by WBM for routing purposes.
  337. <enum 0 WBM_IDLE_BUF_LIST> This buffer shall be returned
  338. to the WMB buffer idle list
  339. <enum 1 WBM_CHIP0_IDLE_DESC_LIST> This buffer shall be returned
  340. to the WBM idle link descriptor idle list, where the chip
  341. 0 WBM is chosen in case of a multi-chip config
  342. <enum 2 WBM_CHIP1_IDLE_DESC_LIST> This buffer shall be returned
  343. to the chip 1 WBM idle link descriptor idle list
  344. <enum 3 WBM_CHIP2_IDLE_DESC_LIST> This buffer shall be returned
  345. to the chip 2 WBM idle link descriptor idle list
  346. <enum 12 WBM_CHIP3_IDLE_DESC_LIST> This buffer shall be
  347. returned to chip 3 WBM idle link descriptor idle list
  348. <enum 4 FW_BM> This buffer shall be returned to the FW
  349. <enum 5 SW0_BM> This buffer shall be returned to the SW,
  350. ring 0
  351. <enum 6 SW1_BM> This buffer shall be returned to the SW,
  352. ring 1
  353. <enum 7 SW2_BM> This buffer shall be returned to the SW,
  354. ring 2
  355. <enum 8 SW3_BM> This buffer shall be returned to the SW,
  356. ring 3
  357. <enum 9 SW4_BM> This buffer shall be returned to the SW,
  358. ring 4
  359. <enum 10 SW5_BM> This buffer shall be returned to the SW,
  360. ring 5
  361. <enum 11 SW6_BM> This buffer shall be returned to the SW,
  362. ring 6
  363. <legal 0-12>
  364. */
  365. #define RX_MSDU_LINK_MSDU_0_BUFFER_ADDR_INFO_DETAILS_RETURN_BUFFER_MANAGER_OFFSET 0x00000024
  366. #define RX_MSDU_LINK_MSDU_0_BUFFER_ADDR_INFO_DETAILS_RETURN_BUFFER_MANAGER_LSB 8
  367. #define RX_MSDU_LINK_MSDU_0_BUFFER_ADDR_INFO_DETAILS_RETURN_BUFFER_MANAGER_MSB 11
  368. #define RX_MSDU_LINK_MSDU_0_BUFFER_ADDR_INFO_DETAILS_RETURN_BUFFER_MANAGER_MASK 0x00000f00
  369. /* Description SW_BUFFER_COOKIE
  370. Cookie field exclusively used by SW.
  371. In case of 'NULL' pointer, this field is set to 0
  372. HW ignores the contents, accept that it passes the programmed
  373. value on to other descriptors together with the physical
  374. address
  375. Field can be used by SW to for example associate the buffers
  376. physical address with the virtual address
  377. The bit definitions as used by SW are within SW HLD specification
  378. NOTE1:
  379. The three most significant bits can have a special meaning
  380. in case this struct is embedded in a TX_MPDU_DETAILS STRUCT,
  381. and field transmit_bw_restriction is set
  382. In case of NON punctured transmission:
  383. Sw_buffer_cookie[19:17] = 3'b000: 20 MHz TX only
  384. Sw_buffer_cookie[19:17] = 3'b001: 40 MHz TX only
  385. Sw_buffer_cookie[19:17] = 3'b010: 80 MHz TX only
  386. Sw_buffer_cookie[19:17] = 3'b011: 160 MHz TX only
  387. Sw_buffer_cookie[19:17] = 3'b101: 240 MHz TX only
  388. Sw_buffer_cookie[19:17] = 3'b100: 320 MHz TX only
  389. Sw_buffer_cookie[19:18] = 2'b11: reserved
  390. In case of punctured transmission:
  391. Sw_buffer_cookie[19:16] = 4'b0000: pattern 0 only
  392. Sw_buffer_cookie[19:16] = 4'b0001: pattern 1 only
  393. Sw_buffer_cookie[19:16] = 4'b0010: pattern 2 only
  394. Sw_buffer_cookie[19:16] = 4'b0011: pattern 3 only
  395. Sw_buffer_cookie[19:16] = 4'b0100: pattern 4 only
  396. Sw_buffer_cookie[19:16] = 4'b0101: pattern 5 only
  397. Sw_buffer_cookie[19:16] = 4'b0110: pattern 6 only
  398. Sw_buffer_cookie[19:16] = 4'b0111: pattern 7 only
  399. Sw_buffer_cookie[19:16] = 4'b1000: pattern 8 only
  400. Sw_buffer_cookie[19:16] = 4'b1001: pattern 9 only
  401. Sw_buffer_cookie[19:16] = 4'b1010: pattern 10 only
  402. Sw_buffer_cookie[19:16] = 4'b1011: pattern 11 only
  403. Sw_buffer_cookie[19:18] = 2'b11: reserved
  404. Note: a punctured transmission is indicated by the presence
  405. of TLV TX_PUNCTURE_SETUP embedded in the scheduler TLV
  406. <legal all>
  407. */
  408. #define RX_MSDU_LINK_MSDU_0_BUFFER_ADDR_INFO_DETAILS_SW_BUFFER_COOKIE_OFFSET 0x00000024
  409. #define RX_MSDU_LINK_MSDU_0_BUFFER_ADDR_INFO_DETAILS_SW_BUFFER_COOKIE_LSB 12
  410. #define RX_MSDU_LINK_MSDU_0_BUFFER_ADDR_INFO_DETAILS_SW_BUFFER_COOKIE_MSB 31
  411. #define RX_MSDU_LINK_MSDU_0_BUFFER_ADDR_INFO_DETAILS_SW_BUFFER_COOKIE_MASK 0xfffff000
  412. /* Description RX_MSDU_DESC_INFO_DETAILS
  413. Consumer: REO/SW
  414. Producer: RXDMA
  415. General information related to the MSDU that should be passed
  416. on from RXDMA all the way to to the REO destination ring.
  417. */
  418. /* Description FIRST_MSDU_IN_MPDU_FLAG
  419. Parsed from RX_MSDU_END TLV . In the case MSDU spans over
  420. multiple buffers, this field will be valid in the Last
  421. buffer used by the MSDU
  422. <enum 0 Not_first_msdu> This is not the first MSDU in the
  423. MPDU.
  424. <enum 1 first_msdu> This MSDU is the first one in the MPDU.
  425. <legal all>
  426. */
  427. #define RX_MSDU_LINK_MSDU_0_RX_MSDU_DESC_INFO_DETAILS_FIRST_MSDU_IN_MPDU_FLAG_OFFSET 0x00000028
  428. #define RX_MSDU_LINK_MSDU_0_RX_MSDU_DESC_INFO_DETAILS_FIRST_MSDU_IN_MPDU_FLAG_LSB 0
  429. #define RX_MSDU_LINK_MSDU_0_RX_MSDU_DESC_INFO_DETAILS_FIRST_MSDU_IN_MPDU_FLAG_MSB 0
  430. #define RX_MSDU_LINK_MSDU_0_RX_MSDU_DESC_INFO_DETAILS_FIRST_MSDU_IN_MPDU_FLAG_MASK 0x00000001
  431. /* Description LAST_MSDU_IN_MPDU_FLAG
  432. Consumer: WBM/REO/SW/FW
  433. Producer: RXDMA
  434. Parsed from RX_MSDU_END TLV . In the case MSDU spans over
  435. multiple buffers, this field will be valid in the Last
  436. buffer used by the MSDU
  437. <enum 0 Not_last_msdu> There are more MSDUs linked to this
  438. MSDU that belongs to this MPDU
  439. <enum 1 Last_msdu> this MSDU is the last one in the MPDU.
  440. This setting is only allowed in combination with 'Msdu_continuation'
  441. set to 0. This implies that when an msdu is spread out over
  442. multiple buffers and thus msdu_continuation is set, only
  443. for the very last buffer of the msdu, can the 'last_msdu_in_mpdu_flag'
  444. be set.
  445. When both first_msdu_in_mpdu_flag and last_msdu_in_mpdu_flag
  446. are set, the MPDU that this MSDU belongs to only contains
  447. a single MSDU.
  448. <legal all>
  449. */
  450. #define RX_MSDU_LINK_MSDU_0_RX_MSDU_DESC_INFO_DETAILS_LAST_MSDU_IN_MPDU_FLAG_OFFSET 0x00000028
  451. #define RX_MSDU_LINK_MSDU_0_RX_MSDU_DESC_INFO_DETAILS_LAST_MSDU_IN_MPDU_FLAG_LSB 1
  452. #define RX_MSDU_LINK_MSDU_0_RX_MSDU_DESC_INFO_DETAILS_LAST_MSDU_IN_MPDU_FLAG_MSB 1
  453. #define RX_MSDU_LINK_MSDU_0_RX_MSDU_DESC_INFO_DETAILS_LAST_MSDU_IN_MPDU_FLAG_MASK 0x00000002
  454. /* Description MSDU_CONTINUATION
  455. When set, this MSDU buffer was not able to hold the entire
  456. MSDU. The next buffer will therefor contain additional
  457. information related to this MSDU.
  458. <legal all>
  459. */
  460. #define RX_MSDU_LINK_MSDU_0_RX_MSDU_DESC_INFO_DETAILS_MSDU_CONTINUATION_OFFSET 0x00000028
  461. #define RX_MSDU_LINK_MSDU_0_RX_MSDU_DESC_INFO_DETAILS_MSDU_CONTINUATION_LSB 2
  462. #define RX_MSDU_LINK_MSDU_0_RX_MSDU_DESC_INFO_DETAILS_MSDU_CONTINUATION_MSB 2
  463. #define RX_MSDU_LINK_MSDU_0_RX_MSDU_DESC_INFO_DETAILS_MSDU_CONTINUATION_MASK 0x00000004
  464. /* Description MSDU_LENGTH
  465. Parsed from RX_MSDU_START TLV . In the case MSDU spans over
  466. multiple buffers, this field will be valid in the First
  467. buffer used by MSDU.
  468. Full MSDU length in bytes after decapsulation.
  469. This field is still valid for MPDU frames without A-MSDU.
  470. It still represents MSDU length after decapsulation
  471. Or in case of RAW MPDUs, it indicates the length of the
  472. entire MPDU (without FCS field)
  473. <legal all>
  474. */
  475. #define RX_MSDU_LINK_MSDU_0_RX_MSDU_DESC_INFO_DETAILS_MSDU_LENGTH_OFFSET 0x00000028
  476. #define RX_MSDU_LINK_MSDU_0_RX_MSDU_DESC_INFO_DETAILS_MSDU_LENGTH_LSB 3
  477. #define RX_MSDU_LINK_MSDU_0_RX_MSDU_DESC_INFO_DETAILS_MSDU_LENGTH_MSB 16
  478. #define RX_MSDU_LINK_MSDU_0_RX_MSDU_DESC_INFO_DETAILS_MSDU_LENGTH_MASK 0x0001fff8
  479. /* Description MSDU_DROP
  480. Parsed from RX_MSDU_END TLV . In the case MSDU spans over
  481. multiple buffers, this field will be valid in the Last
  482. buffer used by the MSDU
  483. When set, REO shall drop this MSDU and not forward it to
  484. any other ring...
  485. <legal all>
  486. */
  487. #define RX_MSDU_LINK_MSDU_0_RX_MSDU_DESC_INFO_DETAILS_MSDU_DROP_OFFSET 0x00000028
  488. #define RX_MSDU_LINK_MSDU_0_RX_MSDU_DESC_INFO_DETAILS_MSDU_DROP_LSB 17
  489. #define RX_MSDU_LINK_MSDU_0_RX_MSDU_DESC_INFO_DETAILS_MSDU_DROP_MSB 17
  490. #define RX_MSDU_LINK_MSDU_0_RX_MSDU_DESC_INFO_DETAILS_MSDU_DROP_MASK 0x00020000
  491. /* Description SA_IS_VALID
  492. Parsed from RX_MSDU_END TLV . In the case MSDU spans over
  493. multiple buffers, this field will be valid in the Last
  494. buffer used by the MSDU
  495. Indicates that OLE found a valid SA entry for this MSDU
  496. <legal all>
  497. */
  498. #define RX_MSDU_LINK_MSDU_0_RX_MSDU_DESC_INFO_DETAILS_SA_IS_VALID_OFFSET 0x00000028
  499. #define RX_MSDU_LINK_MSDU_0_RX_MSDU_DESC_INFO_DETAILS_SA_IS_VALID_LSB 18
  500. #define RX_MSDU_LINK_MSDU_0_RX_MSDU_DESC_INFO_DETAILS_SA_IS_VALID_MSB 18
  501. #define RX_MSDU_LINK_MSDU_0_RX_MSDU_DESC_INFO_DETAILS_SA_IS_VALID_MASK 0x00040000
  502. /* Description DA_IS_VALID
  503. Parsed from RX_MSDU_END TLV . In the case MSDU spans over
  504. multiple buffers, this field will be valid in the Last
  505. buffer used by the MSDU
  506. Indicates that OLE found a valid DA entry for this MSDU
  507. <legal all>
  508. */
  509. #define RX_MSDU_LINK_MSDU_0_RX_MSDU_DESC_INFO_DETAILS_DA_IS_VALID_OFFSET 0x00000028
  510. #define RX_MSDU_LINK_MSDU_0_RX_MSDU_DESC_INFO_DETAILS_DA_IS_VALID_LSB 19
  511. #define RX_MSDU_LINK_MSDU_0_RX_MSDU_DESC_INFO_DETAILS_DA_IS_VALID_MSB 19
  512. #define RX_MSDU_LINK_MSDU_0_RX_MSDU_DESC_INFO_DETAILS_DA_IS_VALID_MASK 0x00080000
  513. /* Description DA_IS_MCBC
  514. Field Only valid if "da_is_valid" is set
  515. Indicates the DA address was a Multicast of Broadcast address
  516. for this MSDU
  517. <legal all>
  518. */
  519. #define RX_MSDU_LINK_MSDU_0_RX_MSDU_DESC_INFO_DETAILS_DA_IS_MCBC_OFFSET 0x00000028
  520. #define RX_MSDU_LINK_MSDU_0_RX_MSDU_DESC_INFO_DETAILS_DA_IS_MCBC_LSB 20
  521. #define RX_MSDU_LINK_MSDU_0_RX_MSDU_DESC_INFO_DETAILS_DA_IS_MCBC_MSB 20
  522. #define RX_MSDU_LINK_MSDU_0_RX_MSDU_DESC_INFO_DETAILS_DA_IS_MCBC_MASK 0x00100000
  523. /* Description L3_HEADER_PADDING_MSB
  524. Passed on from 'RX_MSDU_END' TLV (only the MSB is reported
  525. as the LSB is always zero)
  526. Number of bytes padded to make sure that the L3 header will
  527. always start of a Dword boundary
  528. <legal all>
  529. */
  530. #define RX_MSDU_LINK_MSDU_0_RX_MSDU_DESC_INFO_DETAILS_L3_HEADER_PADDING_MSB_OFFSET 0x00000028
  531. #define RX_MSDU_LINK_MSDU_0_RX_MSDU_DESC_INFO_DETAILS_L3_HEADER_PADDING_MSB_LSB 21
  532. #define RX_MSDU_LINK_MSDU_0_RX_MSDU_DESC_INFO_DETAILS_L3_HEADER_PADDING_MSB_MSB 21
  533. #define RX_MSDU_LINK_MSDU_0_RX_MSDU_DESC_INFO_DETAILS_L3_HEADER_PADDING_MSB_MASK 0x00200000
  534. /* Description TCP_UDP_CHKSUM_FAIL
  535. Passed on from 'RX_ATTENTION' TLV
  536. Indicates that the computed checksum did not match the checksum
  537. in the TCP/UDP header.
  538. <legal all>
  539. */
  540. #define RX_MSDU_LINK_MSDU_0_RX_MSDU_DESC_INFO_DETAILS_TCP_UDP_CHKSUM_FAIL_OFFSET 0x00000028
  541. #define RX_MSDU_LINK_MSDU_0_RX_MSDU_DESC_INFO_DETAILS_TCP_UDP_CHKSUM_FAIL_LSB 22
  542. #define RX_MSDU_LINK_MSDU_0_RX_MSDU_DESC_INFO_DETAILS_TCP_UDP_CHKSUM_FAIL_MSB 22
  543. #define RX_MSDU_LINK_MSDU_0_RX_MSDU_DESC_INFO_DETAILS_TCP_UDP_CHKSUM_FAIL_MASK 0x00400000
  544. /* Description IP_CHKSUM_FAIL
  545. Passed on from 'RX_ATTENTION' TLV
  546. Indicates that the computed checksum did not match the checksum
  547. in the IP header.
  548. <legal all>
  549. */
  550. #define RX_MSDU_LINK_MSDU_0_RX_MSDU_DESC_INFO_DETAILS_IP_CHKSUM_FAIL_OFFSET 0x00000028
  551. #define RX_MSDU_LINK_MSDU_0_RX_MSDU_DESC_INFO_DETAILS_IP_CHKSUM_FAIL_LSB 23
  552. #define RX_MSDU_LINK_MSDU_0_RX_MSDU_DESC_INFO_DETAILS_IP_CHKSUM_FAIL_MSB 23
  553. #define RX_MSDU_LINK_MSDU_0_RX_MSDU_DESC_INFO_DETAILS_IP_CHKSUM_FAIL_MASK 0x00800000
  554. /* Description FR_DS
  555. Passed on from 'RX_MPDU_INFO' structure in 'RX_MPDU_START'
  556. TLV
  557. Set if the 'from DS' bit is set in the frame control.
  558. <legal all>
  559. */
  560. #define RX_MSDU_LINK_MSDU_0_RX_MSDU_DESC_INFO_DETAILS_FR_DS_OFFSET 0x00000028
  561. #define RX_MSDU_LINK_MSDU_0_RX_MSDU_DESC_INFO_DETAILS_FR_DS_LSB 24
  562. #define RX_MSDU_LINK_MSDU_0_RX_MSDU_DESC_INFO_DETAILS_FR_DS_MSB 24
  563. #define RX_MSDU_LINK_MSDU_0_RX_MSDU_DESC_INFO_DETAILS_FR_DS_MASK 0x01000000
  564. /* Description TO_DS
  565. Passed on from 'RX_MPDU_INFO' structure in 'RX_MPDU_START'
  566. TLV
  567. Set if the 'to DS' bit is set in the frame control.
  568. <legal all>
  569. */
  570. #define RX_MSDU_LINK_MSDU_0_RX_MSDU_DESC_INFO_DETAILS_TO_DS_OFFSET 0x00000028
  571. #define RX_MSDU_LINK_MSDU_0_RX_MSDU_DESC_INFO_DETAILS_TO_DS_LSB 25
  572. #define RX_MSDU_LINK_MSDU_0_RX_MSDU_DESC_INFO_DETAILS_TO_DS_MSB 25
  573. #define RX_MSDU_LINK_MSDU_0_RX_MSDU_DESC_INFO_DETAILS_TO_DS_MASK 0x02000000
  574. /* Description INTRA_BSS
  575. This packet needs intra-BSS routing by SW as the 'vdev_id'
  576. for the destination is the same as the 'vdev_id' (from 'RX_MPDU_PCU_START')
  577. that this MSDU was got in.
  578. <legal all>
  579. */
  580. #define RX_MSDU_LINK_MSDU_0_RX_MSDU_DESC_INFO_DETAILS_INTRA_BSS_OFFSET 0x00000028
  581. #define RX_MSDU_LINK_MSDU_0_RX_MSDU_DESC_INFO_DETAILS_INTRA_BSS_LSB 26
  582. #define RX_MSDU_LINK_MSDU_0_RX_MSDU_DESC_INFO_DETAILS_INTRA_BSS_MSB 26
  583. #define RX_MSDU_LINK_MSDU_0_RX_MSDU_DESC_INFO_DETAILS_INTRA_BSS_MASK 0x04000000
  584. /* Description DEST_CHIP_ID
  585. If intra_bss is set, copied by RXOLE/RXDMA from 'ADDR_SEARCH_ENTRY'
  586. to support intra-BSS routing with multi-chip multi-link
  587. operation.
  588. This indicates into which chip's TCL the packet should be
  589. queued.
  590. <legal all>
  591. */
  592. #define RX_MSDU_LINK_MSDU_0_RX_MSDU_DESC_INFO_DETAILS_DEST_CHIP_ID_OFFSET 0x00000028
  593. #define RX_MSDU_LINK_MSDU_0_RX_MSDU_DESC_INFO_DETAILS_DEST_CHIP_ID_LSB 27
  594. #define RX_MSDU_LINK_MSDU_0_RX_MSDU_DESC_INFO_DETAILS_DEST_CHIP_ID_MSB 28
  595. #define RX_MSDU_LINK_MSDU_0_RX_MSDU_DESC_INFO_DETAILS_DEST_CHIP_ID_MASK 0x18000000
  596. /* Description DECAP_FORMAT
  597. Indicates the format after decapsulation:
  598. <enum 0 RAW> No encapsulation
  599. <enum 1 Native_WiFi>
  600. <enum 2 Ethernet> Ethernet 2 (DIX) or 802.3 (uses SNAP/LLC)
  601. <enum 3 802_3> Indicate Ethernet
  602. <legal all>
  603. */
  604. #define RX_MSDU_LINK_MSDU_0_RX_MSDU_DESC_INFO_DETAILS_DECAP_FORMAT_OFFSET 0x00000028
  605. #define RX_MSDU_LINK_MSDU_0_RX_MSDU_DESC_INFO_DETAILS_DECAP_FORMAT_LSB 29
  606. #define RX_MSDU_LINK_MSDU_0_RX_MSDU_DESC_INFO_DETAILS_DECAP_FORMAT_MSB 30
  607. #define RX_MSDU_LINK_MSDU_0_RX_MSDU_DESC_INFO_DETAILS_DECAP_FORMAT_MASK 0x60000000
  608. /* Description DEST_CHIP_PMAC_ID
  609. If intra_bss is set, copied by RXOLE/RXDMA from 'ADDR_SEARCH_ENTRY'
  610. to support intra-BSS routing with multi-chip multi-link
  611. operation.
  612. This indicates into which link/'vdev' the packet should
  613. be queued in TCL.
  614. <legal all>
  615. */
  616. #define RX_MSDU_LINK_MSDU_0_RX_MSDU_DESC_INFO_DETAILS_DEST_CHIP_PMAC_ID_OFFSET 0x00000028
  617. #define RX_MSDU_LINK_MSDU_0_RX_MSDU_DESC_INFO_DETAILS_DEST_CHIP_PMAC_ID_LSB 31
  618. #define RX_MSDU_LINK_MSDU_0_RX_MSDU_DESC_INFO_DETAILS_DEST_CHIP_PMAC_ID_MSB 31
  619. #define RX_MSDU_LINK_MSDU_0_RX_MSDU_DESC_INFO_DETAILS_DEST_CHIP_PMAC_ID_MASK 0x80000000
  620. /* Description RX_MSDU_EXT_DESC_INFO_DETAILS
  621. Consumer: REO/SW
  622. Producer: RXDMA
  623. Extended information related to the MSDU that is passed
  624. on from RXDMA to REO but not part of the REO destination
  625. ring. Some fields are passed on to PPE.
  626. */
  627. /* Description REO_DESTINATION_INDICATION
  628. Parsed from RX_MSDU_END TLV . In the case MSDU spans over
  629. multiple buffers, this field will be valid in the Last
  630. buffer used by the MSDU
  631. The ID of the REO exit ring where the MSDU frame shall push
  632. after (MPDU level) reordering has finished.
  633. <enum 0 reo_destination_sw0> Reo will push the frame into
  634. the REO2SW0 ring
  635. <enum 1 reo_destination_sw1> Reo will push the frame into
  636. the REO2SW1 ring
  637. <enum 2 reo_destination_sw2> Reo will push the frame into
  638. the REO2SW2 ring
  639. <enum 3 reo_destination_sw3> Reo will push the frame into
  640. the REO2SW3 ring
  641. <enum 4 reo_destination_sw4> Reo will push the frame into
  642. the REO2SW4 ring
  643. <enum 5 reo_destination_release> Reo will push the frame
  644. into the REO_release ring
  645. <enum 6 reo_destination_fw> Reo will push the frame into
  646. the REO2FW ring
  647. <enum 7 reo_destination_sw5> Reo will push the frame into
  648. the REO2SW5 ring (REO remaps this in chips without REO2SW5
  649. ring)
  650. <enum 8 reo_destination_sw6> Reo will push the frame into
  651. the REO2SW6 ring (REO remaps this in chips without REO2SW6
  652. ring)
  653. <enum 9 reo_destination_sw7> Reo will push the frame into
  654. the REO2SW7 ring (REO remaps this in chips without REO2SW7
  655. ring)
  656. <enum 10 reo_destination_sw8> Reo will push the frame into
  657. the REO2SW8 ring (REO remaps this in chips without REO2SW8
  658. ring)
  659. <enum 11 reo_destination_11> REO remaps this
  660. <enum 12 reo_destination_12> REO remaps this <enum 13 reo_destination_13>
  661. REO remaps this
  662. <enum 14 reo_destination_14> REO remaps this
  663. <enum 15 reo_destination_15> REO remaps this
  664. <enum 16 reo_destination_16> REO remaps this
  665. <enum 17 reo_destination_17> REO remaps this
  666. <enum 18 reo_destination_18> REO remaps this
  667. <enum 19 reo_destination_19> REO remaps this
  668. <enum 20 reo_destination_20> REO remaps this
  669. <enum 21 reo_destination_21> REO remaps this
  670. <enum 22 reo_destination_22> REO remaps this
  671. <enum 23 reo_destination_23> REO remaps this
  672. <enum 24 reo_destination_24> REO remaps this
  673. <enum 25 reo_destination_25> REO remaps this
  674. <enum 26 reo_destination_26> REO remaps this
  675. <enum 27 reo_destination_27> REO remaps this
  676. <enum 28 reo_destination_28> REO remaps this
  677. <enum 29 reo_destination_29> REO remaps this
  678. <enum 30 reo_destination_30> REO remaps this
  679. <enum 31 reo_destination_31> REO remaps this
  680. <legal all>
  681. */
  682. #define RX_MSDU_LINK_MSDU_0_RX_MSDU_EXT_DESC_INFO_DETAILS_REO_DESTINATION_INDICATION_OFFSET 0x0000002c
  683. #define RX_MSDU_LINK_MSDU_0_RX_MSDU_EXT_DESC_INFO_DETAILS_REO_DESTINATION_INDICATION_LSB 0
  684. #define RX_MSDU_LINK_MSDU_0_RX_MSDU_EXT_DESC_INFO_DETAILS_REO_DESTINATION_INDICATION_MSB 4
  685. #define RX_MSDU_LINK_MSDU_0_RX_MSDU_EXT_DESC_INFO_DETAILS_REO_DESTINATION_INDICATION_MASK 0x0000001f
  686. /* Description SERVICE_CODE
  687. Opaque service code between PPE and Wi-Fi
  688. This field gets passed on by REO to PPE in the EDMA descriptor
  689. ('REO_TO_PPE_RING').
  690. <legal all>
  691. */
  692. #define RX_MSDU_LINK_MSDU_0_RX_MSDU_EXT_DESC_INFO_DETAILS_SERVICE_CODE_OFFSET 0x0000002c
  693. #define RX_MSDU_LINK_MSDU_0_RX_MSDU_EXT_DESC_INFO_DETAILS_SERVICE_CODE_LSB 5
  694. #define RX_MSDU_LINK_MSDU_0_RX_MSDU_EXT_DESC_INFO_DETAILS_SERVICE_CODE_MSB 13
  695. #define RX_MSDU_LINK_MSDU_0_RX_MSDU_EXT_DESC_INFO_DETAILS_SERVICE_CODE_MASK 0x00003fe0
  696. /* Description PRIORITY_VALID
  697. This field gets passed on by REO to PPE in the EDMA descriptor
  698. ('REO_TO_PPE_RING').
  699. <legal all>
  700. */
  701. #define RX_MSDU_LINK_MSDU_0_RX_MSDU_EXT_DESC_INFO_DETAILS_PRIORITY_VALID_OFFSET 0x0000002c
  702. #define RX_MSDU_LINK_MSDU_0_RX_MSDU_EXT_DESC_INFO_DETAILS_PRIORITY_VALID_LSB 14
  703. #define RX_MSDU_LINK_MSDU_0_RX_MSDU_EXT_DESC_INFO_DETAILS_PRIORITY_VALID_MSB 14
  704. #define RX_MSDU_LINK_MSDU_0_RX_MSDU_EXT_DESC_INFO_DETAILS_PRIORITY_VALID_MASK 0x00004000
  705. /* Description DATA_OFFSET
  706. The offset to Rx packet data within the buffer (including
  707. Rx DMA offset programming and L3 header padding inserted
  708. by Rx OLE).
  709. This field gets passed on by REO to PPE in the EDMA descriptor
  710. ('REO_TO_PPE_RING').
  711. <legal all>
  712. */
  713. #define RX_MSDU_LINK_MSDU_0_RX_MSDU_EXT_DESC_INFO_DETAILS_DATA_OFFSET_OFFSET 0x0000002c
  714. #define RX_MSDU_LINK_MSDU_0_RX_MSDU_EXT_DESC_INFO_DETAILS_DATA_OFFSET_LSB 15
  715. #define RX_MSDU_LINK_MSDU_0_RX_MSDU_EXT_DESC_INFO_DETAILS_DATA_OFFSET_MSB 26
  716. #define RX_MSDU_LINK_MSDU_0_RX_MSDU_EXT_DESC_INFO_DETAILS_DATA_OFFSET_MASK 0x07ff8000
  717. /* Description SRC_LINK_ID
  718. Consumer: SW
  719. Producer: RXDMA
  720. Set to the link ID of the PMAC that received the frame
  721. <legal all>
  722. */
  723. #define RX_MSDU_LINK_MSDU_0_RX_MSDU_EXT_DESC_INFO_DETAILS_SRC_LINK_ID_OFFSET 0x0000002c
  724. #define RX_MSDU_LINK_MSDU_0_RX_MSDU_EXT_DESC_INFO_DETAILS_SRC_LINK_ID_LSB 27
  725. #define RX_MSDU_LINK_MSDU_0_RX_MSDU_EXT_DESC_INFO_DETAILS_SRC_LINK_ID_MSB 29
  726. #define RX_MSDU_LINK_MSDU_0_RX_MSDU_EXT_DESC_INFO_DETAILS_SRC_LINK_ID_MASK 0x38000000
  727. /* Description RESERVED_0A
  728. <legal 0>
  729. */
  730. #define RX_MSDU_LINK_MSDU_0_RX_MSDU_EXT_DESC_INFO_DETAILS_RESERVED_0A_OFFSET 0x0000002c
  731. #define RX_MSDU_LINK_MSDU_0_RX_MSDU_EXT_DESC_INFO_DETAILS_RESERVED_0A_LSB 30
  732. #define RX_MSDU_LINK_MSDU_0_RX_MSDU_EXT_DESC_INFO_DETAILS_RESERVED_0A_MSB 31
  733. #define RX_MSDU_LINK_MSDU_0_RX_MSDU_EXT_DESC_INFO_DETAILS_RESERVED_0A_MASK 0xc0000000
  734. /* Description MSDU_1
  735. Details of next MSDU in this (MSDU flow) linked list
  736. */
  737. /* Description BUFFER_ADDR_INFO_DETAILS
  738. Consumer: REO/SW
  739. Producer: RXDMA
  740. Details of the physical address of the buffer containing
  741. an MSDU (or entire MPDU)
  742. */
  743. /* Description BUFFER_ADDR_31_0
  744. Address (lower 32 bits) of the MSDU buffer OR MSDU_EXTENSION
  745. descriptor OR Link Descriptor
  746. In case of 'NULL' pointer, this field is set to 0
  747. <legal all>
  748. */
  749. #define RX_MSDU_LINK_MSDU_1_BUFFER_ADDR_INFO_DETAILS_BUFFER_ADDR_31_0_OFFSET 0x00000030
  750. #define RX_MSDU_LINK_MSDU_1_BUFFER_ADDR_INFO_DETAILS_BUFFER_ADDR_31_0_LSB 0
  751. #define RX_MSDU_LINK_MSDU_1_BUFFER_ADDR_INFO_DETAILS_BUFFER_ADDR_31_0_MSB 31
  752. #define RX_MSDU_LINK_MSDU_1_BUFFER_ADDR_INFO_DETAILS_BUFFER_ADDR_31_0_MASK 0xffffffff
  753. /* Description BUFFER_ADDR_39_32
  754. Address (upper 8 bits) of the MSDU buffer OR MSDU_EXTENSION
  755. descriptor OR Link Descriptor
  756. In case of 'NULL' pointer, this field is set to 0
  757. <legal all>
  758. */
  759. #define RX_MSDU_LINK_MSDU_1_BUFFER_ADDR_INFO_DETAILS_BUFFER_ADDR_39_32_OFFSET 0x00000034
  760. #define RX_MSDU_LINK_MSDU_1_BUFFER_ADDR_INFO_DETAILS_BUFFER_ADDR_39_32_LSB 0
  761. #define RX_MSDU_LINK_MSDU_1_BUFFER_ADDR_INFO_DETAILS_BUFFER_ADDR_39_32_MSB 7
  762. #define RX_MSDU_LINK_MSDU_1_BUFFER_ADDR_INFO_DETAILS_BUFFER_ADDR_39_32_MASK 0x000000ff
  763. /* Description RETURN_BUFFER_MANAGER
  764. Consumer: WBM
  765. Producer: SW/FW
  766. In case of 'NULL' pointer, this field is set to 0
  767. Indicates to which buffer manager the buffer OR MSDU_EXTENSION
  768. descriptor OR link descriptor that is being pointed to
  769. shall be returned after the frame has been processed. It
  770. is used by WBM for routing purposes.
  771. <enum 0 WBM_IDLE_BUF_LIST> This buffer shall be returned
  772. to the WMB buffer idle list
  773. <enum 1 WBM_CHIP0_IDLE_DESC_LIST> This buffer shall be returned
  774. to the WBM idle link descriptor idle list, where the chip
  775. 0 WBM is chosen in case of a multi-chip config
  776. <enum 2 WBM_CHIP1_IDLE_DESC_LIST> This buffer shall be returned
  777. to the chip 1 WBM idle link descriptor idle list
  778. <enum 3 WBM_CHIP2_IDLE_DESC_LIST> This buffer shall be returned
  779. to the chip 2 WBM idle link descriptor idle list
  780. <enum 12 WBM_CHIP3_IDLE_DESC_LIST> This buffer shall be
  781. returned to chip 3 WBM idle link descriptor idle list
  782. <enum 4 FW_BM> This buffer shall be returned to the FW
  783. <enum 5 SW0_BM> This buffer shall be returned to the SW,
  784. ring 0
  785. <enum 6 SW1_BM> This buffer shall be returned to the SW,
  786. ring 1
  787. <enum 7 SW2_BM> This buffer shall be returned to the SW,
  788. ring 2
  789. <enum 8 SW3_BM> This buffer shall be returned to the SW,
  790. ring 3
  791. <enum 9 SW4_BM> This buffer shall be returned to the SW,
  792. ring 4
  793. <enum 10 SW5_BM> This buffer shall be returned to the SW,
  794. ring 5
  795. <enum 11 SW6_BM> This buffer shall be returned to the SW,
  796. ring 6
  797. <legal 0-12>
  798. */
  799. #define RX_MSDU_LINK_MSDU_1_BUFFER_ADDR_INFO_DETAILS_RETURN_BUFFER_MANAGER_OFFSET 0x00000034
  800. #define RX_MSDU_LINK_MSDU_1_BUFFER_ADDR_INFO_DETAILS_RETURN_BUFFER_MANAGER_LSB 8
  801. #define RX_MSDU_LINK_MSDU_1_BUFFER_ADDR_INFO_DETAILS_RETURN_BUFFER_MANAGER_MSB 11
  802. #define RX_MSDU_LINK_MSDU_1_BUFFER_ADDR_INFO_DETAILS_RETURN_BUFFER_MANAGER_MASK 0x00000f00
  803. /* Description SW_BUFFER_COOKIE
  804. Cookie field exclusively used by SW.
  805. In case of 'NULL' pointer, this field is set to 0
  806. HW ignores the contents, accept that it passes the programmed
  807. value on to other descriptors together with the physical
  808. address
  809. Field can be used by SW to for example associate the buffers
  810. physical address with the virtual address
  811. The bit definitions as used by SW are within SW HLD specification
  812. NOTE1:
  813. The three most significant bits can have a special meaning
  814. in case this struct is embedded in a TX_MPDU_DETAILS STRUCT,
  815. and field transmit_bw_restriction is set
  816. In case of NON punctured transmission:
  817. Sw_buffer_cookie[19:17] = 3'b000: 20 MHz TX only
  818. Sw_buffer_cookie[19:17] = 3'b001: 40 MHz TX only
  819. Sw_buffer_cookie[19:17] = 3'b010: 80 MHz TX only
  820. Sw_buffer_cookie[19:17] = 3'b011: 160 MHz TX only
  821. Sw_buffer_cookie[19:17] = 3'b101: 240 MHz TX only
  822. Sw_buffer_cookie[19:17] = 3'b100: 320 MHz TX only
  823. Sw_buffer_cookie[19:18] = 2'b11: reserved
  824. In case of punctured transmission:
  825. Sw_buffer_cookie[19:16] = 4'b0000: pattern 0 only
  826. Sw_buffer_cookie[19:16] = 4'b0001: pattern 1 only
  827. Sw_buffer_cookie[19:16] = 4'b0010: pattern 2 only
  828. Sw_buffer_cookie[19:16] = 4'b0011: pattern 3 only
  829. Sw_buffer_cookie[19:16] = 4'b0100: pattern 4 only
  830. Sw_buffer_cookie[19:16] = 4'b0101: pattern 5 only
  831. Sw_buffer_cookie[19:16] = 4'b0110: pattern 6 only
  832. Sw_buffer_cookie[19:16] = 4'b0111: pattern 7 only
  833. Sw_buffer_cookie[19:16] = 4'b1000: pattern 8 only
  834. Sw_buffer_cookie[19:16] = 4'b1001: pattern 9 only
  835. Sw_buffer_cookie[19:16] = 4'b1010: pattern 10 only
  836. Sw_buffer_cookie[19:16] = 4'b1011: pattern 11 only
  837. Sw_buffer_cookie[19:18] = 2'b11: reserved
  838. Note: a punctured transmission is indicated by the presence
  839. of TLV TX_PUNCTURE_SETUP embedded in the scheduler TLV
  840. <legal all>
  841. */
  842. #define RX_MSDU_LINK_MSDU_1_BUFFER_ADDR_INFO_DETAILS_SW_BUFFER_COOKIE_OFFSET 0x00000034
  843. #define RX_MSDU_LINK_MSDU_1_BUFFER_ADDR_INFO_DETAILS_SW_BUFFER_COOKIE_LSB 12
  844. #define RX_MSDU_LINK_MSDU_1_BUFFER_ADDR_INFO_DETAILS_SW_BUFFER_COOKIE_MSB 31
  845. #define RX_MSDU_LINK_MSDU_1_BUFFER_ADDR_INFO_DETAILS_SW_BUFFER_COOKIE_MASK 0xfffff000
  846. /* Description RX_MSDU_DESC_INFO_DETAILS
  847. Consumer: REO/SW
  848. Producer: RXDMA
  849. General information related to the MSDU that should be passed
  850. on from RXDMA all the way to to the REO destination ring.
  851. */
  852. /* Description FIRST_MSDU_IN_MPDU_FLAG
  853. Parsed from RX_MSDU_END TLV . In the case MSDU spans over
  854. multiple buffers, this field will be valid in the Last
  855. buffer used by the MSDU
  856. <enum 0 Not_first_msdu> This is not the first MSDU in the
  857. MPDU.
  858. <enum 1 first_msdu> This MSDU is the first one in the MPDU.
  859. <legal all>
  860. */
  861. #define RX_MSDU_LINK_MSDU_1_RX_MSDU_DESC_INFO_DETAILS_FIRST_MSDU_IN_MPDU_FLAG_OFFSET 0x00000038
  862. #define RX_MSDU_LINK_MSDU_1_RX_MSDU_DESC_INFO_DETAILS_FIRST_MSDU_IN_MPDU_FLAG_LSB 0
  863. #define RX_MSDU_LINK_MSDU_1_RX_MSDU_DESC_INFO_DETAILS_FIRST_MSDU_IN_MPDU_FLAG_MSB 0
  864. #define RX_MSDU_LINK_MSDU_1_RX_MSDU_DESC_INFO_DETAILS_FIRST_MSDU_IN_MPDU_FLAG_MASK 0x00000001
  865. /* Description LAST_MSDU_IN_MPDU_FLAG
  866. Consumer: WBM/REO/SW/FW
  867. Producer: RXDMA
  868. Parsed from RX_MSDU_END TLV . In the case MSDU spans over
  869. multiple buffers, this field will be valid in the Last
  870. buffer used by the MSDU
  871. <enum 0 Not_last_msdu> There are more MSDUs linked to this
  872. MSDU that belongs to this MPDU
  873. <enum 1 Last_msdu> this MSDU is the last one in the MPDU.
  874. This setting is only allowed in combination with 'Msdu_continuation'
  875. set to 0. This implies that when an msdu is spread out over
  876. multiple buffers and thus msdu_continuation is set, only
  877. for the very last buffer of the msdu, can the 'last_msdu_in_mpdu_flag'
  878. be set.
  879. When both first_msdu_in_mpdu_flag and last_msdu_in_mpdu_flag
  880. are set, the MPDU that this MSDU belongs to only contains
  881. a single MSDU.
  882. <legal all>
  883. */
  884. #define RX_MSDU_LINK_MSDU_1_RX_MSDU_DESC_INFO_DETAILS_LAST_MSDU_IN_MPDU_FLAG_OFFSET 0x00000038
  885. #define RX_MSDU_LINK_MSDU_1_RX_MSDU_DESC_INFO_DETAILS_LAST_MSDU_IN_MPDU_FLAG_LSB 1
  886. #define RX_MSDU_LINK_MSDU_1_RX_MSDU_DESC_INFO_DETAILS_LAST_MSDU_IN_MPDU_FLAG_MSB 1
  887. #define RX_MSDU_LINK_MSDU_1_RX_MSDU_DESC_INFO_DETAILS_LAST_MSDU_IN_MPDU_FLAG_MASK 0x00000002
  888. /* Description MSDU_CONTINUATION
  889. When set, this MSDU buffer was not able to hold the entire
  890. MSDU. The next buffer will therefor contain additional
  891. information related to this MSDU.
  892. <legal all>
  893. */
  894. #define RX_MSDU_LINK_MSDU_1_RX_MSDU_DESC_INFO_DETAILS_MSDU_CONTINUATION_OFFSET 0x00000038
  895. #define RX_MSDU_LINK_MSDU_1_RX_MSDU_DESC_INFO_DETAILS_MSDU_CONTINUATION_LSB 2
  896. #define RX_MSDU_LINK_MSDU_1_RX_MSDU_DESC_INFO_DETAILS_MSDU_CONTINUATION_MSB 2
  897. #define RX_MSDU_LINK_MSDU_1_RX_MSDU_DESC_INFO_DETAILS_MSDU_CONTINUATION_MASK 0x00000004
  898. /* Description MSDU_LENGTH
  899. Parsed from RX_MSDU_START TLV . In the case MSDU spans over
  900. multiple buffers, this field will be valid in the First
  901. buffer used by MSDU.
  902. Full MSDU length in bytes after decapsulation.
  903. This field is still valid for MPDU frames without A-MSDU.
  904. It still represents MSDU length after decapsulation
  905. Or in case of RAW MPDUs, it indicates the length of the
  906. entire MPDU (without FCS field)
  907. <legal all>
  908. */
  909. #define RX_MSDU_LINK_MSDU_1_RX_MSDU_DESC_INFO_DETAILS_MSDU_LENGTH_OFFSET 0x00000038
  910. #define RX_MSDU_LINK_MSDU_1_RX_MSDU_DESC_INFO_DETAILS_MSDU_LENGTH_LSB 3
  911. #define RX_MSDU_LINK_MSDU_1_RX_MSDU_DESC_INFO_DETAILS_MSDU_LENGTH_MSB 16
  912. #define RX_MSDU_LINK_MSDU_1_RX_MSDU_DESC_INFO_DETAILS_MSDU_LENGTH_MASK 0x0001fff8
  913. /* Description MSDU_DROP
  914. Parsed from RX_MSDU_END TLV . In the case MSDU spans over
  915. multiple buffers, this field will be valid in the Last
  916. buffer used by the MSDU
  917. When set, REO shall drop this MSDU and not forward it to
  918. any other ring...
  919. <legal all>
  920. */
  921. #define RX_MSDU_LINK_MSDU_1_RX_MSDU_DESC_INFO_DETAILS_MSDU_DROP_OFFSET 0x00000038
  922. #define RX_MSDU_LINK_MSDU_1_RX_MSDU_DESC_INFO_DETAILS_MSDU_DROP_LSB 17
  923. #define RX_MSDU_LINK_MSDU_1_RX_MSDU_DESC_INFO_DETAILS_MSDU_DROP_MSB 17
  924. #define RX_MSDU_LINK_MSDU_1_RX_MSDU_DESC_INFO_DETAILS_MSDU_DROP_MASK 0x00020000
  925. /* Description SA_IS_VALID
  926. Parsed from RX_MSDU_END TLV . In the case MSDU spans over
  927. multiple buffers, this field will be valid in the Last
  928. buffer used by the MSDU
  929. Indicates that OLE found a valid SA entry for this MSDU
  930. <legal all>
  931. */
  932. #define RX_MSDU_LINK_MSDU_1_RX_MSDU_DESC_INFO_DETAILS_SA_IS_VALID_OFFSET 0x00000038
  933. #define RX_MSDU_LINK_MSDU_1_RX_MSDU_DESC_INFO_DETAILS_SA_IS_VALID_LSB 18
  934. #define RX_MSDU_LINK_MSDU_1_RX_MSDU_DESC_INFO_DETAILS_SA_IS_VALID_MSB 18
  935. #define RX_MSDU_LINK_MSDU_1_RX_MSDU_DESC_INFO_DETAILS_SA_IS_VALID_MASK 0x00040000
  936. /* Description DA_IS_VALID
  937. Parsed from RX_MSDU_END TLV . In the case MSDU spans over
  938. multiple buffers, this field will be valid in the Last
  939. buffer used by the MSDU
  940. Indicates that OLE found a valid DA entry for this MSDU
  941. <legal all>
  942. */
  943. #define RX_MSDU_LINK_MSDU_1_RX_MSDU_DESC_INFO_DETAILS_DA_IS_VALID_OFFSET 0x00000038
  944. #define RX_MSDU_LINK_MSDU_1_RX_MSDU_DESC_INFO_DETAILS_DA_IS_VALID_LSB 19
  945. #define RX_MSDU_LINK_MSDU_1_RX_MSDU_DESC_INFO_DETAILS_DA_IS_VALID_MSB 19
  946. #define RX_MSDU_LINK_MSDU_1_RX_MSDU_DESC_INFO_DETAILS_DA_IS_VALID_MASK 0x00080000
  947. /* Description DA_IS_MCBC
  948. Field Only valid if "da_is_valid" is set
  949. Indicates the DA address was a Multicast of Broadcast address
  950. for this MSDU
  951. <legal all>
  952. */
  953. #define RX_MSDU_LINK_MSDU_1_RX_MSDU_DESC_INFO_DETAILS_DA_IS_MCBC_OFFSET 0x00000038
  954. #define RX_MSDU_LINK_MSDU_1_RX_MSDU_DESC_INFO_DETAILS_DA_IS_MCBC_LSB 20
  955. #define RX_MSDU_LINK_MSDU_1_RX_MSDU_DESC_INFO_DETAILS_DA_IS_MCBC_MSB 20
  956. #define RX_MSDU_LINK_MSDU_1_RX_MSDU_DESC_INFO_DETAILS_DA_IS_MCBC_MASK 0x00100000
  957. /* Description L3_HEADER_PADDING_MSB
  958. Passed on from 'RX_MSDU_END' TLV (only the MSB is reported
  959. as the LSB is always zero)
  960. Number of bytes padded to make sure that the L3 header will
  961. always start of a Dword boundary
  962. <legal all>
  963. */
  964. #define RX_MSDU_LINK_MSDU_1_RX_MSDU_DESC_INFO_DETAILS_L3_HEADER_PADDING_MSB_OFFSET 0x00000038
  965. #define RX_MSDU_LINK_MSDU_1_RX_MSDU_DESC_INFO_DETAILS_L3_HEADER_PADDING_MSB_LSB 21
  966. #define RX_MSDU_LINK_MSDU_1_RX_MSDU_DESC_INFO_DETAILS_L3_HEADER_PADDING_MSB_MSB 21
  967. #define RX_MSDU_LINK_MSDU_1_RX_MSDU_DESC_INFO_DETAILS_L3_HEADER_PADDING_MSB_MASK 0x00200000
  968. /* Description TCP_UDP_CHKSUM_FAIL
  969. Passed on from 'RX_ATTENTION' TLV
  970. Indicates that the computed checksum did not match the checksum
  971. in the TCP/UDP header.
  972. <legal all>
  973. */
  974. #define RX_MSDU_LINK_MSDU_1_RX_MSDU_DESC_INFO_DETAILS_TCP_UDP_CHKSUM_FAIL_OFFSET 0x00000038
  975. #define RX_MSDU_LINK_MSDU_1_RX_MSDU_DESC_INFO_DETAILS_TCP_UDP_CHKSUM_FAIL_LSB 22
  976. #define RX_MSDU_LINK_MSDU_1_RX_MSDU_DESC_INFO_DETAILS_TCP_UDP_CHKSUM_FAIL_MSB 22
  977. #define RX_MSDU_LINK_MSDU_1_RX_MSDU_DESC_INFO_DETAILS_TCP_UDP_CHKSUM_FAIL_MASK 0x00400000
  978. /* Description IP_CHKSUM_FAIL
  979. Passed on from 'RX_ATTENTION' TLV
  980. Indicates that the computed checksum did not match the checksum
  981. in the IP header.
  982. <legal all>
  983. */
  984. #define RX_MSDU_LINK_MSDU_1_RX_MSDU_DESC_INFO_DETAILS_IP_CHKSUM_FAIL_OFFSET 0x00000038
  985. #define RX_MSDU_LINK_MSDU_1_RX_MSDU_DESC_INFO_DETAILS_IP_CHKSUM_FAIL_LSB 23
  986. #define RX_MSDU_LINK_MSDU_1_RX_MSDU_DESC_INFO_DETAILS_IP_CHKSUM_FAIL_MSB 23
  987. #define RX_MSDU_LINK_MSDU_1_RX_MSDU_DESC_INFO_DETAILS_IP_CHKSUM_FAIL_MASK 0x00800000
  988. /* Description FR_DS
  989. Passed on from 'RX_MPDU_INFO' structure in 'RX_MPDU_START'
  990. TLV
  991. Set if the 'from DS' bit is set in the frame control.
  992. <legal all>
  993. */
  994. #define RX_MSDU_LINK_MSDU_1_RX_MSDU_DESC_INFO_DETAILS_FR_DS_OFFSET 0x00000038
  995. #define RX_MSDU_LINK_MSDU_1_RX_MSDU_DESC_INFO_DETAILS_FR_DS_LSB 24
  996. #define RX_MSDU_LINK_MSDU_1_RX_MSDU_DESC_INFO_DETAILS_FR_DS_MSB 24
  997. #define RX_MSDU_LINK_MSDU_1_RX_MSDU_DESC_INFO_DETAILS_FR_DS_MASK 0x01000000
  998. /* Description TO_DS
  999. Passed on from 'RX_MPDU_INFO' structure in 'RX_MPDU_START'
  1000. TLV
  1001. Set if the 'to DS' bit is set in the frame control.
  1002. <legal all>
  1003. */
  1004. #define RX_MSDU_LINK_MSDU_1_RX_MSDU_DESC_INFO_DETAILS_TO_DS_OFFSET 0x00000038
  1005. #define RX_MSDU_LINK_MSDU_1_RX_MSDU_DESC_INFO_DETAILS_TO_DS_LSB 25
  1006. #define RX_MSDU_LINK_MSDU_1_RX_MSDU_DESC_INFO_DETAILS_TO_DS_MSB 25
  1007. #define RX_MSDU_LINK_MSDU_1_RX_MSDU_DESC_INFO_DETAILS_TO_DS_MASK 0x02000000
  1008. /* Description INTRA_BSS
  1009. This packet needs intra-BSS routing by SW as the 'vdev_id'
  1010. for the destination is the same as the 'vdev_id' (from 'RX_MPDU_PCU_START')
  1011. that this MSDU was got in.
  1012. <legal all>
  1013. */
  1014. #define RX_MSDU_LINK_MSDU_1_RX_MSDU_DESC_INFO_DETAILS_INTRA_BSS_OFFSET 0x00000038
  1015. #define RX_MSDU_LINK_MSDU_1_RX_MSDU_DESC_INFO_DETAILS_INTRA_BSS_LSB 26
  1016. #define RX_MSDU_LINK_MSDU_1_RX_MSDU_DESC_INFO_DETAILS_INTRA_BSS_MSB 26
  1017. #define RX_MSDU_LINK_MSDU_1_RX_MSDU_DESC_INFO_DETAILS_INTRA_BSS_MASK 0x04000000
  1018. /* Description DEST_CHIP_ID
  1019. If intra_bss is set, copied by RXOLE/RXDMA from 'ADDR_SEARCH_ENTRY'
  1020. to support intra-BSS routing with multi-chip multi-link
  1021. operation.
  1022. This indicates into which chip's TCL the packet should be
  1023. queued.
  1024. <legal all>
  1025. */
  1026. #define RX_MSDU_LINK_MSDU_1_RX_MSDU_DESC_INFO_DETAILS_DEST_CHIP_ID_OFFSET 0x00000038
  1027. #define RX_MSDU_LINK_MSDU_1_RX_MSDU_DESC_INFO_DETAILS_DEST_CHIP_ID_LSB 27
  1028. #define RX_MSDU_LINK_MSDU_1_RX_MSDU_DESC_INFO_DETAILS_DEST_CHIP_ID_MSB 28
  1029. #define RX_MSDU_LINK_MSDU_1_RX_MSDU_DESC_INFO_DETAILS_DEST_CHIP_ID_MASK 0x18000000
  1030. /* Description DECAP_FORMAT
  1031. Indicates the format after decapsulation:
  1032. <enum 0 RAW> No encapsulation
  1033. <enum 1 Native_WiFi>
  1034. <enum 2 Ethernet> Ethernet 2 (DIX) or 802.3 (uses SNAP/LLC)
  1035. <enum 3 802_3> Indicate Ethernet
  1036. <legal all>
  1037. */
  1038. #define RX_MSDU_LINK_MSDU_1_RX_MSDU_DESC_INFO_DETAILS_DECAP_FORMAT_OFFSET 0x00000038
  1039. #define RX_MSDU_LINK_MSDU_1_RX_MSDU_DESC_INFO_DETAILS_DECAP_FORMAT_LSB 29
  1040. #define RX_MSDU_LINK_MSDU_1_RX_MSDU_DESC_INFO_DETAILS_DECAP_FORMAT_MSB 30
  1041. #define RX_MSDU_LINK_MSDU_1_RX_MSDU_DESC_INFO_DETAILS_DECAP_FORMAT_MASK 0x60000000
  1042. /* Description DEST_CHIP_PMAC_ID
  1043. If intra_bss is set, copied by RXOLE/RXDMA from 'ADDR_SEARCH_ENTRY'
  1044. to support intra-BSS routing with multi-chip multi-link
  1045. operation.
  1046. This indicates into which link/'vdev' the packet should
  1047. be queued in TCL.
  1048. <legal all>
  1049. */
  1050. #define RX_MSDU_LINK_MSDU_1_RX_MSDU_DESC_INFO_DETAILS_DEST_CHIP_PMAC_ID_OFFSET 0x00000038
  1051. #define RX_MSDU_LINK_MSDU_1_RX_MSDU_DESC_INFO_DETAILS_DEST_CHIP_PMAC_ID_LSB 31
  1052. #define RX_MSDU_LINK_MSDU_1_RX_MSDU_DESC_INFO_DETAILS_DEST_CHIP_PMAC_ID_MSB 31
  1053. #define RX_MSDU_LINK_MSDU_1_RX_MSDU_DESC_INFO_DETAILS_DEST_CHIP_PMAC_ID_MASK 0x80000000
  1054. /* Description RX_MSDU_EXT_DESC_INFO_DETAILS
  1055. Consumer: REO/SW
  1056. Producer: RXDMA
  1057. Extended information related to the MSDU that is passed
  1058. on from RXDMA to REO but not part of the REO destination
  1059. ring. Some fields are passed on to PPE.
  1060. */
  1061. /* Description REO_DESTINATION_INDICATION
  1062. Parsed from RX_MSDU_END TLV . In the case MSDU spans over
  1063. multiple buffers, this field will be valid in the Last
  1064. buffer used by the MSDU
  1065. The ID of the REO exit ring where the MSDU frame shall push
  1066. after (MPDU level) reordering has finished.
  1067. <enum 0 reo_destination_sw0> Reo will push the frame into
  1068. the REO2SW0 ring
  1069. <enum 1 reo_destination_sw1> Reo will push the frame into
  1070. the REO2SW1 ring
  1071. <enum 2 reo_destination_sw2> Reo will push the frame into
  1072. the REO2SW2 ring
  1073. <enum 3 reo_destination_sw3> Reo will push the frame into
  1074. the REO2SW3 ring
  1075. <enum 4 reo_destination_sw4> Reo will push the frame into
  1076. the REO2SW4 ring
  1077. <enum 5 reo_destination_release> Reo will push the frame
  1078. into the REO_release ring
  1079. <enum 6 reo_destination_fw> Reo will push the frame into
  1080. the REO2FW ring
  1081. <enum 7 reo_destination_sw5> Reo will push the frame into
  1082. the REO2SW5 ring (REO remaps this in chips without REO2SW5
  1083. ring)
  1084. <enum 8 reo_destination_sw6> Reo will push the frame into
  1085. the REO2SW6 ring (REO remaps this in chips without REO2SW6
  1086. ring)
  1087. <enum 9 reo_destination_sw7> Reo will push the frame into
  1088. the REO2SW7 ring (REO remaps this in chips without REO2SW7
  1089. ring)
  1090. <enum 10 reo_destination_sw8> Reo will push the frame into
  1091. the REO2SW8 ring (REO remaps this in chips without REO2SW8
  1092. ring)
  1093. <enum 11 reo_destination_11> REO remaps this
  1094. <enum 12 reo_destination_12> REO remaps this <enum 13 reo_destination_13>
  1095. REO remaps this
  1096. <enum 14 reo_destination_14> REO remaps this
  1097. <enum 15 reo_destination_15> REO remaps this
  1098. <enum 16 reo_destination_16> REO remaps this
  1099. <enum 17 reo_destination_17> REO remaps this
  1100. <enum 18 reo_destination_18> REO remaps this
  1101. <enum 19 reo_destination_19> REO remaps this
  1102. <enum 20 reo_destination_20> REO remaps this
  1103. <enum 21 reo_destination_21> REO remaps this
  1104. <enum 22 reo_destination_22> REO remaps this
  1105. <enum 23 reo_destination_23> REO remaps this
  1106. <enum 24 reo_destination_24> REO remaps this
  1107. <enum 25 reo_destination_25> REO remaps this
  1108. <enum 26 reo_destination_26> REO remaps this
  1109. <enum 27 reo_destination_27> REO remaps this
  1110. <enum 28 reo_destination_28> REO remaps this
  1111. <enum 29 reo_destination_29> REO remaps this
  1112. <enum 30 reo_destination_30> REO remaps this
  1113. <enum 31 reo_destination_31> REO remaps this
  1114. <legal all>
  1115. */
  1116. #define RX_MSDU_LINK_MSDU_1_RX_MSDU_EXT_DESC_INFO_DETAILS_REO_DESTINATION_INDICATION_OFFSET 0x0000003c
  1117. #define RX_MSDU_LINK_MSDU_1_RX_MSDU_EXT_DESC_INFO_DETAILS_REO_DESTINATION_INDICATION_LSB 0
  1118. #define RX_MSDU_LINK_MSDU_1_RX_MSDU_EXT_DESC_INFO_DETAILS_REO_DESTINATION_INDICATION_MSB 4
  1119. #define RX_MSDU_LINK_MSDU_1_RX_MSDU_EXT_DESC_INFO_DETAILS_REO_DESTINATION_INDICATION_MASK 0x0000001f
  1120. /* Description SERVICE_CODE
  1121. Opaque service code between PPE and Wi-Fi
  1122. This field gets passed on by REO to PPE in the EDMA descriptor
  1123. ('REO_TO_PPE_RING').
  1124. <legal all>
  1125. */
  1126. #define RX_MSDU_LINK_MSDU_1_RX_MSDU_EXT_DESC_INFO_DETAILS_SERVICE_CODE_OFFSET 0x0000003c
  1127. #define RX_MSDU_LINK_MSDU_1_RX_MSDU_EXT_DESC_INFO_DETAILS_SERVICE_CODE_LSB 5
  1128. #define RX_MSDU_LINK_MSDU_1_RX_MSDU_EXT_DESC_INFO_DETAILS_SERVICE_CODE_MSB 13
  1129. #define RX_MSDU_LINK_MSDU_1_RX_MSDU_EXT_DESC_INFO_DETAILS_SERVICE_CODE_MASK 0x00003fe0
  1130. /* Description PRIORITY_VALID
  1131. This field gets passed on by REO to PPE in the EDMA descriptor
  1132. ('REO_TO_PPE_RING').
  1133. <legal all>
  1134. */
  1135. #define RX_MSDU_LINK_MSDU_1_RX_MSDU_EXT_DESC_INFO_DETAILS_PRIORITY_VALID_OFFSET 0x0000003c
  1136. #define RX_MSDU_LINK_MSDU_1_RX_MSDU_EXT_DESC_INFO_DETAILS_PRIORITY_VALID_LSB 14
  1137. #define RX_MSDU_LINK_MSDU_1_RX_MSDU_EXT_DESC_INFO_DETAILS_PRIORITY_VALID_MSB 14
  1138. #define RX_MSDU_LINK_MSDU_1_RX_MSDU_EXT_DESC_INFO_DETAILS_PRIORITY_VALID_MASK 0x00004000
  1139. /* Description DATA_OFFSET
  1140. The offset to Rx packet data within the buffer (including
  1141. Rx DMA offset programming and L3 header padding inserted
  1142. by Rx OLE).
  1143. This field gets passed on by REO to PPE in the EDMA descriptor
  1144. ('REO_TO_PPE_RING').
  1145. <legal all>
  1146. */
  1147. #define RX_MSDU_LINK_MSDU_1_RX_MSDU_EXT_DESC_INFO_DETAILS_DATA_OFFSET_OFFSET 0x0000003c
  1148. #define RX_MSDU_LINK_MSDU_1_RX_MSDU_EXT_DESC_INFO_DETAILS_DATA_OFFSET_LSB 15
  1149. #define RX_MSDU_LINK_MSDU_1_RX_MSDU_EXT_DESC_INFO_DETAILS_DATA_OFFSET_MSB 26
  1150. #define RX_MSDU_LINK_MSDU_1_RX_MSDU_EXT_DESC_INFO_DETAILS_DATA_OFFSET_MASK 0x07ff8000
  1151. /* Description SRC_LINK_ID
  1152. Consumer: SW
  1153. Producer: RXDMA
  1154. Set to the link ID of the PMAC that received the frame
  1155. <legal all>
  1156. */
  1157. #define RX_MSDU_LINK_MSDU_1_RX_MSDU_EXT_DESC_INFO_DETAILS_SRC_LINK_ID_OFFSET 0x0000003c
  1158. #define RX_MSDU_LINK_MSDU_1_RX_MSDU_EXT_DESC_INFO_DETAILS_SRC_LINK_ID_LSB 27
  1159. #define RX_MSDU_LINK_MSDU_1_RX_MSDU_EXT_DESC_INFO_DETAILS_SRC_LINK_ID_MSB 29
  1160. #define RX_MSDU_LINK_MSDU_1_RX_MSDU_EXT_DESC_INFO_DETAILS_SRC_LINK_ID_MASK 0x38000000
  1161. /* Description RESERVED_0A
  1162. <legal 0>
  1163. */
  1164. #define RX_MSDU_LINK_MSDU_1_RX_MSDU_EXT_DESC_INFO_DETAILS_RESERVED_0A_OFFSET 0x0000003c
  1165. #define RX_MSDU_LINK_MSDU_1_RX_MSDU_EXT_DESC_INFO_DETAILS_RESERVED_0A_LSB 30
  1166. #define RX_MSDU_LINK_MSDU_1_RX_MSDU_EXT_DESC_INFO_DETAILS_RESERVED_0A_MSB 31
  1167. #define RX_MSDU_LINK_MSDU_1_RX_MSDU_EXT_DESC_INFO_DETAILS_RESERVED_0A_MASK 0xc0000000
  1168. /* Description MSDU_2
  1169. Details of next MSDU in this (MSDU flow) linked list
  1170. */
  1171. /* Description BUFFER_ADDR_INFO_DETAILS
  1172. Consumer: REO/SW
  1173. Producer: RXDMA
  1174. Details of the physical address of the buffer containing
  1175. an MSDU (or entire MPDU)
  1176. */
  1177. /* Description BUFFER_ADDR_31_0
  1178. Address (lower 32 bits) of the MSDU buffer OR MSDU_EXTENSION
  1179. descriptor OR Link Descriptor
  1180. In case of 'NULL' pointer, this field is set to 0
  1181. <legal all>
  1182. */
  1183. #define RX_MSDU_LINK_MSDU_2_BUFFER_ADDR_INFO_DETAILS_BUFFER_ADDR_31_0_OFFSET 0x00000040
  1184. #define RX_MSDU_LINK_MSDU_2_BUFFER_ADDR_INFO_DETAILS_BUFFER_ADDR_31_0_LSB 0
  1185. #define RX_MSDU_LINK_MSDU_2_BUFFER_ADDR_INFO_DETAILS_BUFFER_ADDR_31_0_MSB 31
  1186. #define RX_MSDU_LINK_MSDU_2_BUFFER_ADDR_INFO_DETAILS_BUFFER_ADDR_31_0_MASK 0xffffffff
  1187. /* Description BUFFER_ADDR_39_32
  1188. Address (upper 8 bits) of the MSDU buffer OR MSDU_EXTENSION
  1189. descriptor OR Link Descriptor
  1190. In case of 'NULL' pointer, this field is set to 0
  1191. <legal all>
  1192. */
  1193. #define RX_MSDU_LINK_MSDU_2_BUFFER_ADDR_INFO_DETAILS_BUFFER_ADDR_39_32_OFFSET 0x00000044
  1194. #define RX_MSDU_LINK_MSDU_2_BUFFER_ADDR_INFO_DETAILS_BUFFER_ADDR_39_32_LSB 0
  1195. #define RX_MSDU_LINK_MSDU_2_BUFFER_ADDR_INFO_DETAILS_BUFFER_ADDR_39_32_MSB 7
  1196. #define RX_MSDU_LINK_MSDU_2_BUFFER_ADDR_INFO_DETAILS_BUFFER_ADDR_39_32_MASK 0x000000ff
  1197. /* Description RETURN_BUFFER_MANAGER
  1198. Consumer: WBM
  1199. Producer: SW/FW
  1200. In case of 'NULL' pointer, this field is set to 0
  1201. Indicates to which buffer manager the buffer OR MSDU_EXTENSION
  1202. descriptor OR link descriptor that is being pointed to
  1203. shall be returned after the frame has been processed. It
  1204. is used by WBM for routing purposes.
  1205. <enum 0 WBM_IDLE_BUF_LIST> This buffer shall be returned
  1206. to the WMB buffer idle list
  1207. <enum 1 WBM_CHIP0_IDLE_DESC_LIST> This buffer shall be returned
  1208. to the WBM idle link descriptor idle list, where the chip
  1209. 0 WBM is chosen in case of a multi-chip config
  1210. <enum 2 WBM_CHIP1_IDLE_DESC_LIST> This buffer shall be returned
  1211. to the chip 1 WBM idle link descriptor idle list
  1212. <enum 3 WBM_CHIP2_IDLE_DESC_LIST> This buffer shall be returned
  1213. to the chip 2 WBM idle link descriptor idle list
  1214. <enum 12 WBM_CHIP3_IDLE_DESC_LIST> This buffer shall be
  1215. returned to chip 3 WBM idle link descriptor idle list
  1216. <enum 4 FW_BM> This buffer shall be returned to the FW
  1217. <enum 5 SW0_BM> This buffer shall be returned to the SW,
  1218. ring 0
  1219. <enum 6 SW1_BM> This buffer shall be returned to the SW,
  1220. ring 1
  1221. <enum 7 SW2_BM> This buffer shall be returned to the SW,
  1222. ring 2
  1223. <enum 8 SW3_BM> This buffer shall be returned to the SW,
  1224. ring 3
  1225. <enum 9 SW4_BM> This buffer shall be returned to the SW,
  1226. ring 4
  1227. <enum 10 SW5_BM> This buffer shall be returned to the SW,
  1228. ring 5
  1229. <enum 11 SW6_BM> This buffer shall be returned to the SW,
  1230. ring 6
  1231. <legal 0-12>
  1232. */
  1233. #define RX_MSDU_LINK_MSDU_2_BUFFER_ADDR_INFO_DETAILS_RETURN_BUFFER_MANAGER_OFFSET 0x00000044
  1234. #define RX_MSDU_LINK_MSDU_2_BUFFER_ADDR_INFO_DETAILS_RETURN_BUFFER_MANAGER_LSB 8
  1235. #define RX_MSDU_LINK_MSDU_2_BUFFER_ADDR_INFO_DETAILS_RETURN_BUFFER_MANAGER_MSB 11
  1236. #define RX_MSDU_LINK_MSDU_2_BUFFER_ADDR_INFO_DETAILS_RETURN_BUFFER_MANAGER_MASK 0x00000f00
  1237. /* Description SW_BUFFER_COOKIE
  1238. Cookie field exclusively used by SW.
  1239. In case of 'NULL' pointer, this field is set to 0
  1240. HW ignores the contents, accept that it passes the programmed
  1241. value on to other descriptors together with the physical
  1242. address
  1243. Field can be used by SW to for example associate the buffers
  1244. physical address with the virtual address
  1245. The bit definitions as used by SW are within SW HLD specification
  1246. NOTE1:
  1247. The three most significant bits can have a special meaning
  1248. in case this struct is embedded in a TX_MPDU_DETAILS STRUCT,
  1249. and field transmit_bw_restriction is set
  1250. In case of NON punctured transmission:
  1251. Sw_buffer_cookie[19:17] = 3'b000: 20 MHz TX only
  1252. Sw_buffer_cookie[19:17] = 3'b001: 40 MHz TX only
  1253. Sw_buffer_cookie[19:17] = 3'b010: 80 MHz TX only
  1254. Sw_buffer_cookie[19:17] = 3'b011: 160 MHz TX only
  1255. Sw_buffer_cookie[19:17] = 3'b101: 240 MHz TX only
  1256. Sw_buffer_cookie[19:17] = 3'b100: 320 MHz TX only
  1257. Sw_buffer_cookie[19:18] = 2'b11: reserved
  1258. In case of punctured transmission:
  1259. Sw_buffer_cookie[19:16] = 4'b0000: pattern 0 only
  1260. Sw_buffer_cookie[19:16] = 4'b0001: pattern 1 only
  1261. Sw_buffer_cookie[19:16] = 4'b0010: pattern 2 only
  1262. Sw_buffer_cookie[19:16] = 4'b0011: pattern 3 only
  1263. Sw_buffer_cookie[19:16] = 4'b0100: pattern 4 only
  1264. Sw_buffer_cookie[19:16] = 4'b0101: pattern 5 only
  1265. Sw_buffer_cookie[19:16] = 4'b0110: pattern 6 only
  1266. Sw_buffer_cookie[19:16] = 4'b0111: pattern 7 only
  1267. Sw_buffer_cookie[19:16] = 4'b1000: pattern 8 only
  1268. Sw_buffer_cookie[19:16] = 4'b1001: pattern 9 only
  1269. Sw_buffer_cookie[19:16] = 4'b1010: pattern 10 only
  1270. Sw_buffer_cookie[19:16] = 4'b1011: pattern 11 only
  1271. Sw_buffer_cookie[19:18] = 2'b11: reserved
  1272. Note: a punctured transmission is indicated by the presence
  1273. of TLV TX_PUNCTURE_SETUP embedded in the scheduler TLV
  1274. <legal all>
  1275. */
  1276. #define RX_MSDU_LINK_MSDU_2_BUFFER_ADDR_INFO_DETAILS_SW_BUFFER_COOKIE_OFFSET 0x00000044
  1277. #define RX_MSDU_LINK_MSDU_2_BUFFER_ADDR_INFO_DETAILS_SW_BUFFER_COOKIE_LSB 12
  1278. #define RX_MSDU_LINK_MSDU_2_BUFFER_ADDR_INFO_DETAILS_SW_BUFFER_COOKIE_MSB 31
  1279. #define RX_MSDU_LINK_MSDU_2_BUFFER_ADDR_INFO_DETAILS_SW_BUFFER_COOKIE_MASK 0xfffff000
  1280. /* Description RX_MSDU_DESC_INFO_DETAILS
  1281. Consumer: REO/SW
  1282. Producer: RXDMA
  1283. General information related to the MSDU that should be passed
  1284. on from RXDMA all the way to to the REO destination ring.
  1285. */
  1286. /* Description FIRST_MSDU_IN_MPDU_FLAG
  1287. Parsed from RX_MSDU_END TLV . In the case MSDU spans over
  1288. multiple buffers, this field will be valid in the Last
  1289. buffer used by the MSDU
  1290. <enum 0 Not_first_msdu> This is not the first MSDU in the
  1291. MPDU.
  1292. <enum 1 first_msdu> This MSDU is the first one in the MPDU.
  1293. <legal all>
  1294. */
  1295. #define RX_MSDU_LINK_MSDU_2_RX_MSDU_DESC_INFO_DETAILS_FIRST_MSDU_IN_MPDU_FLAG_OFFSET 0x00000048
  1296. #define RX_MSDU_LINK_MSDU_2_RX_MSDU_DESC_INFO_DETAILS_FIRST_MSDU_IN_MPDU_FLAG_LSB 0
  1297. #define RX_MSDU_LINK_MSDU_2_RX_MSDU_DESC_INFO_DETAILS_FIRST_MSDU_IN_MPDU_FLAG_MSB 0
  1298. #define RX_MSDU_LINK_MSDU_2_RX_MSDU_DESC_INFO_DETAILS_FIRST_MSDU_IN_MPDU_FLAG_MASK 0x00000001
  1299. /* Description LAST_MSDU_IN_MPDU_FLAG
  1300. Consumer: WBM/REO/SW/FW
  1301. Producer: RXDMA
  1302. Parsed from RX_MSDU_END TLV . In the case MSDU spans over
  1303. multiple buffers, this field will be valid in the Last
  1304. buffer used by the MSDU
  1305. <enum 0 Not_last_msdu> There are more MSDUs linked to this
  1306. MSDU that belongs to this MPDU
  1307. <enum 1 Last_msdu> this MSDU is the last one in the MPDU.
  1308. This setting is only allowed in combination with 'Msdu_continuation'
  1309. set to 0. This implies that when an msdu is spread out over
  1310. multiple buffers and thus msdu_continuation is set, only
  1311. for the very last buffer of the msdu, can the 'last_msdu_in_mpdu_flag'
  1312. be set.
  1313. When both first_msdu_in_mpdu_flag and last_msdu_in_mpdu_flag
  1314. are set, the MPDU that this MSDU belongs to only contains
  1315. a single MSDU.
  1316. <legal all>
  1317. */
  1318. #define RX_MSDU_LINK_MSDU_2_RX_MSDU_DESC_INFO_DETAILS_LAST_MSDU_IN_MPDU_FLAG_OFFSET 0x00000048
  1319. #define RX_MSDU_LINK_MSDU_2_RX_MSDU_DESC_INFO_DETAILS_LAST_MSDU_IN_MPDU_FLAG_LSB 1
  1320. #define RX_MSDU_LINK_MSDU_2_RX_MSDU_DESC_INFO_DETAILS_LAST_MSDU_IN_MPDU_FLAG_MSB 1
  1321. #define RX_MSDU_LINK_MSDU_2_RX_MSDU_DESC_INFO_DETAILS_LAST_MSDU_IN_MPDU_FLAG_MASK 0x00000002
  1322. /* Description MSDU_CONTINUATION
  1323. When set, this MSDU buffer was not able to hold the entire
  1324. MSDU. The next buffer will therefor contain additional
  1325. information related to this MSDU.
  1326. <legal all>
  1327. */
  1328. #define RX_MSDU_LINK_MSDU_2_RX_MSDU_DESC_INFO_DETAILS_MSDU_CONTINUATION_OFFSET 0x00000048
  1329. #define RX_MSDU_LINK_MSDU_2_RX_MSDU_DESC_INFO_DETAILS_MSDU_CONTINUATION_LSB 2
  1330. #define RX_MSDU_LINK_MSDU_2_RX_MSDU_DESC_INFO_DETAILS_MSDU_CONTINUATION_MSB 2
  1331. #define RX_MSDU_LINK_MSDU_2_RX_MSDU_DESC_INFO_DETAILS_MSDU_CONTINUATION_MASK 0x00000004
  1332. /* Description MSDU_LENGTH
  1333. Parsed from RX_MSDU_START TLV . In the case MSDU spans over
  1334. multiple buffers, this field will be valid in the First
  1335. buffer used by MSDU.
  1336. Full MSDU length in bytes after decapsulation.
  1337. This field is still valid for MPDU frames without A-MSDU.
  1338. It still represents MSDU length after decapsulation
  1339. Or in case of RAW MPDUs, it indicates the length of the
  1340. entire MPDU (without FCS field)
  1341. <legal all>
  1342. */
  1343. #define RX_MSDU_LINK_MSDU_2_RX_MSDU_DESC_INFO_DETAILS_MSDU_LENGTH_OFFSET 0x00000048
  1344. #define RX_MSDU_LINK_MSDU_2_RX_MSDU_DESC_INFO_DETAILS_MSDU_LENGTH_LSB 3
  1345. #define RX_MSDU_LINK_MSDU_2_RX_MSDU_DESC_INFO_DETAILS_MSDU_LENGTH_MSB 16
  1346. #define RX_MSDU_LINK_MSDU_2_RX_MSDU_DESC_INFO_DETAILS_MSDU_LENGTH_MASK 0x0001fff8
  1347. /* Description MSDU_DROP
  1348. Parsed from RX_MSDU_END TLV . In the case MSDU spans over
  1349. multiple buffers, this field will be valid in the Last
  1350. buffer used by the MSDU
  1351. When set, REO shall drop this MSDU and not forward it to
  1352. any other ring...
  1353. <legal all>
  1354. */
  1355. #define RX_MSDU_LINK_MSDU_2_RX_MSDU_DESC_INFO_DETAILS_MSDU_DROP_OFFSET 0x00000048
  1356. #define RX_MSDU_LINK_MSDU_2_RX_MSDU_DESC_INFO_DETAILS_MSDU_DROP_LSB 17
  1357. #define RX_MSDU_LINK_MSDU_2_RX_MSDU_DESC_INFO_DETAILS_MSDU_DROP_MSB 17
  1358. #define RX_MSDU_LINK_MSDU_2_RX_MSDU_DESC_INFO_DETAILS_MSDU_DROP_MASK 0x00020000
  1359. /* Description SA_IS_VALID
  1360. Parsed from RX_MSDU_END TLV . In the case MSDU spans over
  1361. multiple buffers, this field will be valid in the Last
  1362. buffer used by the MSDU
  1363. Indicates that OLE found a valid SA entry for this MSDU
  1364. <legal all>
  1365. */
  1366. #define RX_MSDU_LINK_MSDU_2_RX_MSDU_DESC_INFO_DETAILS_SA_IS_VALID_OFFSET 0x00000048
  1367. #define RX_MSDU_LINK_MSDU_2_RX_MSDU_DESC_INFO_DETAILS_SA_IS_VALID_LSB 18
  1368. #define RX_MSDU_LINK_MSDU_2_RX_MSDU_DESC_INFO_DETAILS_SA_IS_VALID_MSB 18
  1369. #define RX_MSDU_LINK_MSDU_2_RX_MSDU_DESC_INFO_DETAILS_SA_IS_VALID_MASK 0x00040000
  1370. /* Description DA_IS_VALID
  1371. Parsed from RX_MSDU_END TLV . In the case MSDU spans over
  1372. multiple buffers, this field will be valid in the Last
  1373. buffer used by the MSDU
  1374. Indicates that OLE found a valid DA entry for this MSDU
  1375. <legal all>
  1376. */
  1377. #define RX_MSDU_LINK_MSDU_2_RX_MSDU_DESC_INFO_DETAILS_DA_IS_VALID_OFFSET 0x00000048
  1378. #define RX_MSDU_LINK_MSDU_2_RX_MSDU_DESC_INFO_DETAILS_DA_IS_VALID_LSB 19
  1379. #define RX_MSDU_LINK_MSDU_2_RX_MSDU_DESC_INFO_DETAILS_DA_IS_VALID_MSB 19
  1380. #define RX_MSDU_LINK_MSDU_2_RX_MSDU_DESC_INFO_DETAILS_DA_IS_VALID_MASK 0x00080000
  1381. /* Description DA_IS_MCBC
  1382. Field Only valid if "da_is_valid" is set
  1383. Indicates the DA address was a Multicast of Broadcast address
  1384. for this MSDU
  1385. <legal all>
  1386. */
  1387. #define RX_MSDU_LINK_MSDU_2_RX_MSDU_DESC_INFO_DETAILS_DA_IS_MCBC_OFFSET 0x00000048
  1388. #define RX_MSDU_LINK_MSDU_2_RX_MSDU_DESC_INFO_DETAILS_DA_IS_MCBC_LSB 20
  1389. #define RX_MSDU_LINK_MSDU_2_RX_MSDU_DESC_INFO_DETAILS_DA_IS_MCBC_MSB 20
  1390. #define RX_MSDU_LINK_MSDU_2_RX_MSDU_DESC_INFO_DETAILS_DA_IS_MCBC_MASK 0x00100000
  1391. /* Description L3_HEADER_PADDING_MSB
  1392. Passed on from 'RX_MSDU_END' TLV (only the MSB is reported
  1393. as the LSB is always zero)
  1394. Number of bytes padded to make sure that the L3 header will
  1395. always start of a Dword boundary
  1396. <legal all>
  1397. */
  1398. #define RX_MSDU_LINK_MSDU_2_RX_MSDU_DESC_INFO_DETAILS_L3_HEADER_PADDING_MSB_OFFSET 0x00000048
  1399. #define RX_MSDU_LINK_MSDU_2_RX_MSDU_DESC_INFO_DETAILS_L3_HEADER_PADDING_MSB_LSB 21
  1400. #define RX_MSDU_LINK_MSDU_2_RX_MSDU_DESC_INFO_DETAILS_L3_HEADER_PADDING_MSB_MSB 21
  1401. #define RX_MSDU_LINK_MSDU_2_RX_MSDU_DESC_INFO_DETAILS_L3_HEADER_PADDING_MSB_MASK 0x00200000
  1402. /* Description TCP_UDP_CHKSUM_FAIL
  1403. Passed on from 'RX_ATTENTION' TLV
  1404. Indicates that the computed checksum did not match the checksum
  1405. in the TCP/UDP header.
  1406. <legal all>
  1407. */
  1408. #define RX_MSDU_LINK_MSDU_2_RX_MSDU_DESC_INFO_DETAILS_TCP_UDP_CHKSUM_FAIL_OFFSET 0x00000048
  1409. #define RX_MSDU_LINK_MSDU_2_RX_MSDU_DESC_INFO_DETAILS_TCP_UDP_CHKSUM_FAIL_LSB 22
  1410. #define RX_MSDU_LINK_MSDU_2_RX_MSDU_DESC_INFO_DETAILS_TCP_UDP_CHKSUM_FAIL_MSB 22
  1411. #define RX_MSDU_LINK_MSDU_2_RX_MSDU_DESC_INFO_DETAILS_TCP_UDP_CHKSUM_FAIL_MASK 0x00400000
  1412. /* Description IP_CHKSUM_FAIL
  1413. Passed on from 'RX_ATTENTION' TLV
  1414. Indicates that the computed checksum did not match the checksum
  1415. in the IP header.
  1416. <legal all>
  1417. */
  1418. #define RX_MSDU_LINK_MSDU_2_RX_MSDU_DESC_INFO_DETAILS_IP_CHKSUM_FAIL_OFFSET 0x00000048
  1419. #define RX_MSDU_LINK_MSDU_2_RX_MSDU_DESC_INFO_DETAILS_IP_CHKSUM_FAIL_LSB 23
  1420. #define RX_MSDU_LINK_MSDU_2_RX_MSDU_DESC_INFO_DETAILS_IP_CHKSUM_FAIL_MSB 23
  1421. #define RX_MSDU_LINK_MSDU_2_RX_MSDU_DESC_INFO_DETAILS_IP_CHKSUM_FAIL_MASK 0x00800000
  1422. /* Description FR_DS
  1423. Passed on from 'RX_MPDU_INFO' structure in 'RX_MPDU_START'
  1424. TLV
  1425. Set if the 'from DS' bit is set in the frame control.
  1426. <legal all>
  1427. */
  1428. #define RX_MSDU_LINK_MSDU_2_RX_MSDU_DESC_INFO_DETAILS_FR_DS_OFFSET 0x00000048
  1429. #define RX_MSDU_LINK_MSDU_2_RX_MSDU_DESC_INFO_DETAILS_FR_DS_LSB 24
  1430. #define RX_MSDU_LINK_MSDU_2_RX_MSDU_DESC_INFO_DETAILS_FR_DS_MSB 24
  1431. #define RX_MSDU_LINK_MSDU_2_RX_MSDU_DESC_INFO_DETAILS_FR_DS_MASK 0x01000000
  1432. /* Description TO_DS
  1433. Passed on from 'RX_MPDU_INFO' structure in 'RX_MPDU_START'
  1434. TLV
  1435. Set if the 'to DS' bit is set in the frame control.
  1436. <legal all>
  1437. */
  1438. #define RX_MSDU_LINK_MSDU_2_RX_MSDU_DESC_INFO_DETAILS_TO_DS_OFFSET 0x00000048
  1439. #define RX_MSDU_LINK_MSDU_2_RX_MSDU_DESC_INFO_DETAILS_TO_DS_LSB 25
  1440. #define RX_MSDU_LINK_MSDU_2_RX_MSDU_DESC_INFO_DETAILS_TO_DS_MSB 25
  1441. #define RX_MSDU_LINK_MSDU_2_RX_MSDU_DESC_INFO_DETAILS_TO_DS_MASK 0x02000000
  1442. /* Description INTRA_BSS
  1443. This packet needs intra-BSS routing by SW as the 'vdev_id'
  1444. for the destination is the same as the 'vdev_id' (from 'RX_MPDU_PCU_START')
  1445. that this MSDU was got in.
  1446. <legal all>
  1447. */
  1448. #define RX_MSDU_LINK_MSDU_2_RX_MSDU_DESC_INFO_DETAILS_INTRA_BSS_OFFSET 0x00000048
  1449. #define RX_MSDU_LINK_MSDU_2_RX_MSDU_DESC_INFO_DETAILS_INTRA_BSS_LSB 26
  1450. #define RX_MSDU_LINK_MSDU_2_RX_MSDU_DESC_INFO_DETAILS_INTRA_BSS_MSB 26
  1451. #define RX_MSDU_LINK_MSDU_2_RX_MSDU_DESC_INFO_DETAILS_INTRA_BSS_MASK 0x04000000
  1452. /* Description DEST_CHIP_ID
  1453. If intra_bss is set, copied by RXOLE/RXDMA from 'ADDR_SEARCH_ENTRY'
  1454. to support intra-BSS routing with multi-chip multi-link
  1455. operation.
  1456. This indicates into which chip's TCL the packet should be
  1457. queued.
  1458. <legal all>
  1459. */
  1460. #define RX_MSDU_LINK_MSDU_2_RX_MSDU_DESC_INFO_DETAILS_DEST_CHIP_ID_OFFSET 0x00000048
  1461. #define RX_MSDU_LINK_MSDU_2_RX_MSDU_DESC_INFO_DETAILS_DEST_CHIP_ID_LSB 27
  1462. #define RX_MSDU_LINK_MSDU_2_RX_MSDU_DESC_INFO_DETAILS_DEST_CHIP_ID_MSB 28
  1463. #define RX_MSDU_LINK_MSDU_2_RX_MSDU_DESC_INFO_DETAILS_DEST_CHIP_ID_MASK 0x18000000
  1464. /* Description DECAP_FORMAT
  1465. Indicates the format after decapsulation:
  1466. <enum 0 RAW> No encapsulation
  1467. <enum 1 Native_WiFi>
  1468. <enum 2 Ethernet> Ethernet 2 (DIX) or 802.3 (uses SNAP/LLC)
  1469. <enum 3 802_3> Indicate Ethernet
  1470. <legal all>
  1471. */
  1472. #define RX_MSDU_LINK_MSDU_2_RX_MSDU_DESC_INFO_DETAILS_DECAP_FORMAT_OFFSET 0x00000048
  1473. #define RX_MSDU_LINK_MSDU_2_RX_MSDU_DESC_INFO_DETAILS_DECAP_FORMAT_LSB 29
  1474. #define RX_MSDU_LINK_MSDU_2_RX_MSDU_DESC_INFO_DETAILS_DECAP_FORMAT_MSB 30
  1475. #define RX_MSDU_LINK_MSDU_2_RX_MSDU_DESC_INFO_DETAILS_DECAP_FORMAT_MASK 0x60000000
  1476. /* Description DEST_CHIP_PMAC_ID
  1477. If intra_bss is set, copied by RXOLE/RXDMA from 'ADDR_SEARCH_ENTRY'
  1478. to support intra-BSS routing with multi-chip multi-link
  1479. operation.
  1480. This indicates into which link/'vdev' the packet should
  1481. be queued in TCL.
  1482. <legal all>
  1483. */
  1484. #define RX_MSDU_LINK_MSDU_2_RX_MSDU_DESC_INFO_DETAILS_DEST_CHIP_PMAC_ID_OFFSET 0x00000048
  1485. #define RX_MSDU_LINK_MSDU_2_RX_MSDU_DESC_INFO_DETAILS_DEST_CHIP_PMAC_ID_LSB 31
  1486. #define RX_MSDU_LINK_MSDU_2_RX_MSDU_DESC_INFO_DETAILS_DEST_CHIP_PMAC_ID_MSB 31
  1487. #define RX_MSDU_LINK_MSDU_2_RX_MSDU_DESC_INFO_DETAILS_DEST_CHIP_PMAC_ID_MASK 0x80000000
  1488. /* Description RX_MSDU_EXT_DESC_INFO_DETAILS
  1489. Consumer: REO/SW
  1490. Producer: RXDMA
  1491. Extended information related to the MSDU that is passed
  1492. on from RXDMA to REO but not part of the REO destination
  1493. ring. Some fields are passed on to PPE.
  1494. */
  1495. /* Description REO_DESTINATION_INDICATION
  1496. Parsed from RX_MSDU_END TLV . In the case MSDU spans over
  1497. multiple buffers, this field will be valid in the Last
  1498. buffer used by the MSDU
  1499. The ID of the REO exit ring where the MSDU frame shall push
  1500. after (MPDU level) reordering has finished.
  1501. <enum 0 reo_destination_sw0> Reo will push the frame into
  1502. the REO2SW0 ring
  1503. <enum 1 reo_destination_sw1> Reo will push the frame into
  1504. the REO2SW1 ring
  1505. <enum 2 reo_destination_sw2> Reo will push the frame into
  1506. the REO2SW2 ring
  1507. <enum 3 reo_destination_sw3> Reo will push the frame into
  1508. the REO2SW3 ring
  1509. <enum 4 reo_destination_sw4> Reo will push the frame into
  1510. the REO2SW4 ring
  1511. <enum 5 reo_destination_release> Reo will push the frame
  1512. into the REO_release ring
  1513. <enum 6 reo_destination_fw> Reo will push the frame into
  1514. the REO2FW ring
  1515. <enum 7 reo_destination_sw5> Reo will push the frame into
  1516. the REO2SW5 ring (REO remaps this in chips without REO2SW5
  1517. ring)
  1518. <enum 8 reo_destination_sw6> Reo will push the frame into
  1519. the REO2SW6 ring (REO remaps this in chips without REO2SW6
  1520. ring)
  1521. <enum 9 reo_destination_sw7> Reo will push the frame into
  1522. the REO2SW7 ring (REO remaps this in chips without REO2SW7
  1523. ring)
  1524. <enum 10 reo_destination_sw8> Reo will push the frame into
  1525. the REO2SW8 ring (REO remaps this in chips without REO2SW8
  1526. ring)
  1527. <enum 11 reo_destination_11> REO remaps this
  1528. <enum 12 reo_destination_12> REO remaps this <enum 13 reo_destination_13>
  1529. REO remaps this
  1530. <enum 14 reo_destination_14> REO remaps this
  1531. <enum 15 reo_destination_15> REO remaps this
  1532. <enum 16 reo_destination_16> REO remaps this
  1533. <enum 17 reo_destination_17> REO remaps this
  1534. <enum 18 reo_destination_18> REO remaps this
  1535. <enum 19 reo_destination_19> REO remaps this
  1536. <enum 20 reo_destination_20> REO remaps this
  1537. <enum 21 reo_destination_21> REO remaps this
  1538. <enum 22 reo_destination_22> REO remaps this
  1539. <enum 23 reo_destination_23> REO remaps this
  1540. <enum 24 reo_destination_24> REO remaps this
  1541. <enum 25 reo_destination_25> REO remaps this
  1542. <enum 26 reo_destination_26> REO remaps this
  1543. <enum 27 reo_destination_27> REO remaps this
  1544. <enum 28 reo_destination_28> REO remaps this
  1545. <enum 29 reo_destination_29> REO remaps this
  1546. <enum 30 reo_destination_30> REO remaps this
  1547. <enum 31 reo_destination_31> REO remaps this
  1548. <legal all>
  1549. */
  1550. #define RX_MSDU_LINK_MSDU_2_RX_MSDU_EXT_DESC_INFO_DETAILS_REO_DESTINATION_INDICATION_OFFSET 0x0000004c
  1551. #define RX_MSDU_LINK_MSDU_2_RX_MSDU_EXT_DESC_INFO_DETAILS_REO_DESTINATION_INDICATION_LSB 0
  1552. #define RX_MSDU_LINK_MSDU_2_RX_MSDU_EXT_DESC_INFO_DETAILS_REO_DESTINATION_INDICATION_MSB 4
  1553. #define RX_MSDU_LINK_MSDU_2_RX_MSDU_EXT_DESC_INFO_DETAILS_REO_DESTINATION_INDICATION_MASK 0x0000001f
  1554. /* Description SERVICE_CODE
  1555. Opaque service code between PPE and Wi-Fi
  1556. This field gets passed on by REO to PPE in the EDMA descriptor
  1557. ('REO_TO_PPE_RING').
  1558. <legal all>
  1559. */
  1560. #define RX_MSDU_LINK_MSDU_2_RX_MSDU_EXT_DESC_INFO_DETAILS_SERVICE_CODE_OFFSET 0x0000004c
  1561. #define RX_MSDU_LINK_MSDU_2_RX_MSDU_EXT_DESC_INFO_DETAILS_SERVICE_CODE_LSB 5
  1562. #define RX_MSDU_LINK_MSDU_2_RX_MSDU_EXT_DESC_INFO_DETAILS_SERVICE_CODE_MSB 13
  1563. #define RX_MSDU_LINK_MSDU_2_RX_MSDU_EXT_DESC_INFO_DETAILS_SERVICE_CODE_MASK 0x00003fe0
  1564. /* Description PRIORITY_VALID
  1565. This field gets passed on by REO to PPE in the EDMA descriptor
  1566. ('REO_TO_PPE_RING').
  1567. <legal all>
  1568. */
  1569. #define RX_MSDU_LINK_MSDU_2_RX_MSDU_EXT_DESC_INFO_DETAILS_PRIORITY_VALID_OFFSET 0x0000004c
  1570. #define RX_MSDU_LINK_MSDU_2_RX_MSDU_EXT_DESC_INFO_DETAILS_PRIORITY_VALID_LSB 14
  1571. #define RX_MSDU_LINK_MSDU_2_RX_MSDU_EXT_DESC_INFO_DETAILS_PRIORITY_VALID_MSB 14
  1572. #define RX_MSDU_LINK_MSDU_2_RX_MSDU_EXT_DESC_INFO_DETAILS_PRIORITY_VALID_MASK 0x00004000
  1573. /* Description DATA_OFFSET
  1574. The offset to Rx packet data within the buffer (including
  1575. Rx DMA offset programming and L3 header padding inserted
  1576. by Rx OLE).
  1577. This field gets passed on by REO to PPE in the EDMA descriptor
  1578. ('REO_TO_PPE_RING').
  1579. <legal all>
  1580. */
  1581. #define RX_MSDU_LINK_MSDU_2_RX_MSDU_EXT_DESC_INFO_DETAILS_DATA_OFFSET_OFFSET 0x0000004c
  1582. #define RX_MSDU_LINK_MSDU_2_RX_MSDU_EXT_DESC_INFO_DETAILS_DATA_OFFSET_LSB 15
  1583. #define RX_MSDU_LINK_MSDU_2_RX_MSDU_EXT_DESC_INFO_DETAILS_DATA_OFFSET_MSB 26
  1584. #define RX_MSDU_LINK_MSDU_2_RX_MSDU_EXT_DESC_INFO_DETAILS_DATA_OFFSET_MASK 0x07ff8000
  1585. /* Description SRC_LINK_ID
  1586. Consumer: SW
  1587. Producer: RXDMA
  1588. Set to the link ID of the PMAC that received the frame
  1589. <legal all>
  1590. */
  1591. #define RX_MSDU_LINK_MSDU_2_RX_MSDU_EXT_DESC_INFO_DETAILS_SRC_LINK_ID_OFFSET 0x0000004c
  1592. #define RX_MSDU_LINK_MSDU_2_RX_MSDU_EXT_DESC_INFO_DETAILS_SRC_LINK_ID_LSB 27
  1593. #define RX_MSDU_LINK_MSDU_2_RX_MSDU_EXT_DESC_INFO_DETAILS_SRC_LINK_ID_MSB 29
  1594. #define RX_MSDU_LINK_MSDU_2_RX_MSDU_EXT_DESC_INFO_DETAILS_SRC_LINK_ID_MASK 0x38000000
  1595. /* Description RESERVED_0A
  1596. <legal 0>
  1597. */
  1598. #define RX_MSDU_LINK_MSDU_2_RX_MSDU_EXT_DESC_INFO_DETAILS_RESERVED_0A_OFFSET 0x0000004c
  1599. #define RX_MSDU_LINK_MSDU_2_RX_MSDU_EXT_DESC_INFO_DETAILS_RESERVED_0A_LSB 30
  1600. #define RX_MSDU_LINK_MSDU_2_RX_MSDU_EXT_DESC_INFO_DETAILS_RESERVED_0A_MSB 31
  1601. #define RX_MSDU_LINK_MSDU_2_RX_MSDU_EXT_DESC_INFO_DETAILS_RESERVED_0A_MASK 0xc0000000
  1602. /* Description MSDU_3
  1603. Details of next MSDU in this (MSDU flow) linked list
  1604. */
  1605. /* Description BUFFER_ADDR_INFO_DETAILS
  1606. Consumer: REO/SW
  1607. Producer: RXDMA
  1608. Details of the physical address of the buffer containing
  1609. an MSDU (or entire MPDU)
  1610. */
  1611. /* Description BUFFER_ADDR_31_0
  1612. Address (lower 32 bits) of the MSDU buffer OR MSDU_EXTENSION
  1613. descriptor OR Link Descriptor
  1614. In case of 'NULL' pointer, this field is set to 0
  1615. <legal all>
  1616. */
  1617. #define RX_MSDU_LINK_MSDU_3_BUFFER_ADDR_INFO_DETAILS_BUFFER_ADDR_31_0_OFFSET 0x00000050
  1618. #define RX_MSDU_LINK_MSDU_3_BUFFER_ADDR_INFO_DETAILS_BUFFER_ADDR_31_0_LSB 0
  1619. #define RX_MSDU_LINK_MSDU_3_BUFFER_ADDR_INFO_DETAILS_BUFFER_ADDR_31_0_MSB 31
  1620. #define RX_MSDU_LINK_MSDU_3_BUFFER_ADDR_INFO_DETAILS_BUFFER_ADDR_31_0_MASK 0xffffffff
  1621. /* Description BUFFER_ADDR_39_32
  1622. Address (upper 8 bits) of the MSDU buffer OR MSDU_EXTENSION
  1623. descriptor OR Link Descriptor
  1624. In case of 'NULL' pointer, this field is set to 0
  1625. <legal all>
  1626. */
  1627. #define RX_MSDU_LINK_MSDU_3_BUFFER_ADDR_INFO_DETAILS_BUFFER_ADDR_39_32_OFFSET 0x00000054
  1628. #define RX_MSDU_LINK_MSDU_3_BUFFER_ADDR_INFO_DETAILS_BUFFER_ADDR_39_32_LSB 0
  1629. #define RX_MSDU_LINK_MSDU_3_BUFFER_ADDR_INFO_DETAILS_BUFFER_ADDR_39_32_MSB 7
  1630. #define RX_MSDU_LINK_MSDU_3_BUFFER_ADDR_INFO_DETAILS_BUFFER_ADDR_39_32_MASK 0x000000ff
  1631. /* Description RETURN_BUFFER_MANAGER
  1632. Consumer: WBM
  1633. Producer: SW/FW
  1634. In case of 'NULL' pointer, this field is set to 0
  1635. Indicates to which buffer manager the buffer OR MSDU_EXTENSION
  1636. descriptor OR link descriptor that is being pointed to
  1637. shall be returned after the frame has been processed. It
  1638. is used by WBM for routing purposes.
  1639. <enum 0 WBM_IDLE_BUF_LIST> This buffer shall be returned
  1640. to the WMB buffer idle list
  1641. <enum 1 WBM_CHIP0_IDLE_DESC_LIST> This buffer shall be returned
  1642. to the WBM idle link descriptor idle list, where the chip
  1643. 0 WBM is chosen in case of a multi-chip config
  1644. <enum 2 WBM_CHIP1_IDLE_DESC_LIST> This buffer shall be returned
  1645. to the chip 1 WBM idle link descriptor idle list
  1646. <enum 3 WBM_CHIP2_IDLE_DESC_LIST> This buffer shall be returned
  1647. to the chip 2 WBM idle link descriptor idle list
  1648. <enum 12 WBM_CHIP3_IDLE_DESC_LIST> This buffer shall be
  1649. returned to chip 3 WBM idle link descriptor idle list
  1650. <enum 4 FW_BM> This buffer shall be returned to the FW
  1651. <enum 5 SW0_BM> This buffer shall be returned to the SW,
  1652. ring 0
  1653. <enum 6 SW1_BM> This buffer shall be returned to the SW,
  1654. ring 1
  1655. <enum 7 SW2_BM> This buffer shall be returned to the SW,
  1656. ring 2
  1657. <enum 8 SW3_BM> This buffer shall be returned to the SW,
  1658. ring 3
  1659. <enum 9 SW4_BM> This buffer shall be returned to the SW,
  1660. ring 4
  1661. <enum 10 SW5_BM> This buffer shall be returned to the SW,
  1662. ring 5
  1663. <enum 11 SW6_BM> This buffer shall be returned to the SW,
  1664. ring 6
  1665. <legal 0-12>
  1666. */
  1667. #define RX_MSDU_LINK_MSDU_3_BUFFER_ADDR_INFO_DETAILS_RETURN_BUFFER_MANAGER_OFFSET 0x00000054
  1668. #define RX_MSDU_LINK_MSDU_3_BUFFER_ADDR_INFO_DETAILS_RETURN_BUFFER_MANAGER_LSB 8
  1669. #define RX_MSDU_LINK_MSDU_3_BUFFER_ADDR_INFO_DETAILS_RETURN_BUFFER_MANAGER_MSB 11
  1670. #define RX_MSDU_LINK_MSDU_3_BUFFER_ADDR_INFO_DETAILS_RETURN_BUFFER_MANAGER_MASK 0x00000f00
  1671. /* Description SW_BUFFER_COOKIE
  1672. Cookie field exclusively used by SW.
  1673. In case of 'NULL' pointer, this field is set to 0
  1674. HW ignores the contents, accept that it passes the programmed
  1675. value on to other descriptors together with the physical
  1676. address
  1677. Field can be used by SW to for example associate the buffers
  1678. physical address with the virtual address
  1679. The bit definitions as used by SW are within SW HLD specification
  1680. NOTE1:
  1681. The three most significant bits can have a special meaning
  1682. in case this struct is embedded in a TX_MPDU_DETAILS STRUCT,
  1683. and field transmit_bw_restriction is set
  1684. In case of NON punctured transmission:
  1685. Sw_buffer_cookie[19:17] = 3'b000: 20 MHz TX only
  1686. Sw_buffer_cookie[19:17] = 3'b001: 40 MHz TX only
  1687. Sw_buffer_cookie[19:17] = 3'b010: 80 MHz TX only
  1688. Sw_buffer_cookie[19:17] = 3'b011: 160 MHz TX only
  1689. Sw_buffer_cookie[19:17] = 3'b101: 240 MHz TX only
  1690. Sw_buffer_cookie[19:17] = 3'b100: 320 MHz TX only
  1691. Sw_buffer_cookie[19:18] = 2'b11: reserved
  1692. In case of punctured transmission:
  1693. Sw_buffer_cookie[19:16] = 4'b0000: pattern 0 only
  1694. Sw_buffer_cookie[19:16] = 4'b0001: pattern 1 only
  1695. Sw_buffer_cookie[19:16] = 4'b0010: pattern 2 only
  1696. Sw_buffer_cookie[19:16] = 4'b0011: pattern 3 only
  1697. Sw_buffer_cookie[19:16] = 4'b0100: pattern 4 only
  1698. Sw_buffer_cookie[19:16] = 4'b0101: pattern 5 only
  1699. Sw_buffer_cookie[19:16] = 4'b0110: pattern 6 only
  1700. Sw_buffer_cookie[19:16] = 4'b0111: pattern 7 only
  1701. Sw_buffer_cookie[19:16] = 4'b1000: pattern 8 only
  1702. Sw_buffer_cookie[19:16] = 4'b1001: pattern 9 only
  1703. Sw_buffer_cookie[19:16] = 4'b1010: pattern 10 only
  1704. Sw_buffer_cookie[19:16] = 4'b1011: pattern 11 only
  1705. Sw_buffer_cookie[19:18] = 2'b11: reserved
  1706. Note: a punctured transmission is indicated by the presence
  1707. of TLV TX_PUNCTURE_SETUP embedded in the scheduler TLV
  1708. <legal all>
  1709. */
  1710. #define RX_MSDU_LINK_MSDU_3_BUFFER_ADDR_INFO_DETAILS_SW_BUFFER_COOKIE_OFFSET 0x00000054
  1711. #define RX_MSDU_LINK_MSDU_3_BUFFER_ADDR_INFO_DETAILS_SW_BUFFER_COOKIE_LSB 12
  1712. #define RX_MSDU_LINK_MSDU_3_BUFFER_ADDR_INFO_DETAILS_SW_BUFFER_COOKIE_MSB 31
  1713. #define RX_MSDU_LINK_MSDU_3_BUFFER_ADDR_INFO_DETAILS_SW_BUFFER_COOKIE_MASK 0xfffff000
  1714. /* Description RX_MSDU_DESC_INFO_DETAILS
  1715. Consumer: REO/SW
  1716. Producer: RXDMA
  1717. General information related to the MSDU that should be passed
  1718. on from RXDMA all the way to to the REO destination ring.
  1719. */
  1720. /* Description FIRST_MSDU_IN_MPDU_FLAG
  1721. Parsed from RX_MSDU_END TLV . In the case MSDU spans over
  1722. multiple buffers, this field will be valid in the Last
  1723. buffer used by the MSDU
  1724. <enum 0 Not_first_msdu> This is not the first MSDU in the
  1725. MPDU.
  1726. <enum 1 first_msdu> This MSDU is the first one in the MPDU.
  1727. <legal all>
  1728. */
  1729. #define RX_MSDU_LINK_MSDU_3_RX_MSDU_DESC_INFO_DETAILS_FIRST_MSDU_IN_MPDU_FLAG_OFFSET 0x00000058
  1730. #define RX_MSDU_LINK_MSDU_3_RX_MSDU_DESC_INFO_DETAILS_FIRST_MSDU_IN_MPDU_FLAG_LSB 0
  1731. #define RX_MSDU_LINK_MSDU_3_RX_MSDU_DESC_INFO_DETAILS_FIRST_MSDU_IN_MPDU_FLAG_MSB 0
  1732. #define RX_MSDU_LINK_MSDU_3_RX_MSDU_DESC_INFO_DETAILS_FIRST_MSDU_IN_MPDU_FLAG_MASK 0x00000001
  1733. /* Description LAST_MSDU_IN_MPDU_FLAG
  1734. Consumer: WBM/REO/SW/FW
  1735. Producer: RXDMA
  1736. Parsed from RX_MSDU_END TLV . In the case MSDU spans over
  1737. multiple buffers, this field will be valid in the Last
  1738. buffer used by the MSDU
  1739. <enum 0 Not_last_msdu> There are more MSDUs linked to this
  1740. MSDU that belongs to this MPDU
  1741. <enum 1 Last_msdu> this MSDU is the last one in the MPDU.
  1742. This setting is only allowed in combination with 'Msdu_continuation'
  1743. set to 0. This implies that when an msdu is spread out over
  1744. multiple buffers and thus msdu_continuation is set, only
  1745. for the very last buffer of the msdu, can the 'last_msdu_in_mpdu_flag'
  1746. be set.
  1747. When both first_msdu_in_mpdu_flag and last_msdu_in_mpdu_flag
  1748. are set, the MPDU that this MSDU belongs to only contains
  1749. a single MSDU.
  1750. <legal all>
  1751. */
  1752. #define RX_MSDU_LINK_MSDU_3_RX_MSDU_DESC_INFO_DETAILS_LAST_MSDU_IN_MPDU_FLAG_OFFSET 0x00000058
  1753. #define RX_MSDU_LINK_MSDU_3_RX_MSDU_DESC_INFO_DETAILS_LAST_MSDU_IN_MPDU_FLAG_LSB 1
  1754. #define RX_MSDU_LINK_MSDU_3_RX_MSDU_DESC_INFO_DETAILS_LAST_MSDU_IN_MPDU_FLAG_MSB 1
  1755. #define RX_MSDU_LINK_MSDU_3_RX_MSDU_DESC_INFO_DETAILS_LAST_MSDU_IN_MPDU_FLAG_MASK 0x00000002
  1756. /* Description MSDU_CONTINUATION
  1757. When set, this MSDU buffer was not able to hold the entire
  1758. MSDU. The next buffer will therefor contain additional
  1759. information related to this MSDU.
  1760. <legal all>
  1761. */
  1762. #define RX_MSDU_LINK_MSDU_3_RX_MSDU_DESC_INFO_DETAILS_MSDU_CONTINUATION_OFFSET 0x00000058
  1763. #define RX_MSDU_LINK_MSDU_3_RX_MSDU_DESC_INFO_DETAILS_MSDU_CONTINUATION_LSB 2
  1764. #define RX_MSDU_LINK_MSDU_3_RX_MSDU_DESC_INFO_DETAILS_MSDU_CONTINUATION_MSB 2
  1765. #define RX_MSDU_LINK_MSDU_3_RX_MSDU_DESC_INFO_DETAILS_MSDU_CONTINUATION_MASK 0x00000004
  1766. /* Description MSDU_LENGTH
  1767. Parsed from RX_MSDU_START TLV . In the case MSDU spans over
  1768. multiple buffers, this field will be valid in the First
  1769. buffer used by MSDU.
  1770. Full MSDU length in bytes after decapsulation.
  1771. This field is still valid for MPDU frames without A-MSDU.
  1772. It still represents MSDU length after decapsulation
  1773. Or in case of RAW MPDUs, it indicates the length of the
  1774. entire MPDU (without FCS field)
  1775. <legal all>
  1776. */
  1777. #define RX_MSDU_LINK_MSDU_3_RX_MSDU_DESC_INFO_DETAILS_MSDU_LENGTH_OFFSET 0x00000058
  1778. #define RX_MSDU_LINK_MSDU_3_RX_MSDU_DESC_INFO_DETAILS_MSDU_LENGTH_LSB 3
  1779. #define RX_MSDU_LINK_MSDU_3_RX_MSDU_DESC_INFO_DETAILS_MSDU_LENGTH_MSB 16
  1780. #define RX_MSDU_LINK_MSDU_3_RX_MSDU_DESC_INFO_DETAILS_MSDU_LENGTH_MASK 0x0001fff8
  1781. /* Description MSDU_DROP
  1782. Parsed from RX_MSDU_END TLV . In the case MSDU spans over
  1783. multiple buffers, this field will be valid in the Last
  1784. buffer used by the MSDU
  1785. When set, REO shall drop this MSDU and not forward it to
  1786. any other ring...
  1787. <legal all>
  1788. */
  1789. #define RX_MSDU_LINK_MSDU_3_RX_MSDU_DESC_INFO_DETAILS_MSDU_DROP_OFFSET 0x00000058
  1790. #define RX_MSDU_LINK_MSDU_3_RX_MSDU_DESC_INFO_DETAILS_MSDU_DROP_LSB 17
  1791. #define RX_MSDU_LINK_MSDU_3_RX_MSDU_DESC_INFO_DETAILS_MSDU_DROP_MSB 17
  1792. #define RX_MSDU_LINK_MSDU_3_RX_MSDU_DESC_INFO_DETAILS_MSDU_DROP_MASK 0x00020000
  1793. /* Description SA_IS_VALID
  1794. Parsed from RX_MSDU_END TLV . In the case MSDU spans over
  1795. multiple buffers, this field will be valid in the Last
  1796. buffer used by the MSDU
  1797. Indicates that OLE found a valid SA entry for this MSDU
  1798. <legal all>
  1799. */
  1800. #define RX_MSDU_LINK_MSDU_3_RX_MSDU_DESC_INFO_DETAILS_SA_IS_VALID_OFFSET 0x00000058
  1801. #define RX_MSDU_LINK_MSDU_3_RX_MSDU_DESC_INFO_DETAILS_SA_IS_VALID_LSB 18
  1802. #define RX_MSDU_LINK_MSDU_3_RX_MSDU_DESC_INFO_DETAILS_SA_IS_VALID_MSB 18
  1803. #define RX_MSDU_LINK_MSDU_3_RX_MSDU_DESC_INFO_DETAILS_SA_IS_VALID_MASK 0x00040000
  1804. /* Description DA_IS_VALID
  1805. Parsed from RX_MSDU_END TLV . In the case MSDU spans over
  1806. multiple buffers, this field will be valid in the Last
  1807. buffer used by the MSDU
  1808. Indicates that OLE found a valid DA entry for this MSDU
  1809. <legal all>
  1810. */
  1811. #define RX_MSDU_LINK_MSDU_3_RX_MSDU_DESC_INFO_DETAILS_DA_IS_VALID_OFFSET 0x00000058
  1812. #define RX_MSDU_LINK_MSDU_3_RX_MSDU_DESC_INFO_DETAILS_DA_IS_VALID_LSB 19
  1813. #define RX_MSDU_LINK_MSDU_3_RX_MSDU_DESC_INFO_DETAILS_DA_IS_VALID_MSB 19
  1814. #define RX_MSDU_LINK_MSDU_3_RX_MSDU_DESC_INFO_DETAILS_DA_IS_VALID_MASK 0x00080000
  1815. /* Description DA_IS_MCBC
  1816. Field Only valid if "da_is_valid" is set
  1817. Indicates the DA address was a Multicast of Broadcast address
  1818. for this MSDU
  1819. <legal all>
  1820. */
  1821. #define RX_MSDU_LINK_MSDU_3_RX_MSDU_DESC_INFO_DETAILS_DA_IS_MCBC_OFFSET 0x00000058
  1822. #define RX_MSDU_LINK_MSDU_3_RX_MSDU_DESC_INFO_DETAILS_DA_IS_MCBC_LSB 20
  1823. #define RX_MSDU_LINK_MSDU_3_RX_MSDU_DESC_INFO_DETAILS_DA_IS_MCBC_MSB 20
  1824. #define RX_MSDU_LINK_MSDU_3_RX_MSDU_DESC_INFO_DETAILS_DA_IS_MCBC_MASK 0x00100000
  1825. /* Description L3_HEADER_PADDING_MSB
  1826. Passed on from 'RX_MSDU_END' TLV (only the MSB is reported
  1827. as the LSB is always zero)
  1828. Number of bytes padded to make sure that the L3 header will
  1829. always start of a Dword boundary
  1830. <legal all>
  1831. */
  1832. #define RX_MSDU_LINK_MSDU_3_RX_MSDU_DESC_INFO_DETAILS_L3_HEADER_PADDING_MSB_OFFSET 0x00000058
  1833. #define RX_MSDU_LINK_MSDU_3_RX_MSDU_DESC_INFO_DETAILS_L3_HEADER_PADDING_MSB_LSB 21
  1834. #define RX_MSDU_LINK_MSDU_3_RX_MSDU_DESC_INFO_DETAILS_L3_HEADER_PADDING_MSB_MSB 21
  1835. #define RX_MSDU_LINK_MSDU_3_RX_MSDU_DESC_INFO_DETAILS_L3_HEADER_PADDING_MSB_MASK 0x00200000
  1836. /* Description TCP_UDP_CHKSUM_FAIL
  1837. Passed on from 'RX_ATTENTION' TLV
  1838. Indicates that the computed checksum did not match the checksum
  1839. in the TCP/UDP header.
  1840. <legal all>
  1841. */
  1842. #define RX_MSDU_LINK_MSDU_3_RX_MSDU_DESC_INFO_DETAILS_TCP_UDP_CHKSUM_FAIL_OFFSET 0x00000058
  1843. #define RX_MSDU_LINK_MSDU_3_RX_MSDU_DESC_INFO_DETAILS_TCP_UDP_CHKSUM_FAIL_LSB 22
  1844. #define RX_MSDU_LINK_MSDU_3_RX_MSDU_DESC_INFO_DETAILS_TCP_UDP_CHKSUM_FAIL_MSB 22
  1845. #define RX_MSDU_LINK_MSDU_3_RX_MSDU_DESC_INFO_DETAILS_TCP_UDP_CHKSUM_FAIL_MASK 0x00400000
  1846. /* Description IP_CHKSUM_FAIL
  1847. Passed on from 'RX_ATTENTION' TLV
  1848. Indicates that the computed checksum did not match the checksum
  1849. in the IP header.
  1850. <legal all>
  1851. */
  1852. #define RX_MSDU_LINK_MSDU_3_RX_MSDU_DESC_INFO_DETAILS_IP_CHKSUM_FAIL_OFFSET 0x00000058
  1853. #define RX_MSDU_LINK_MSDU_3_RX_MSDU_DESC_INFO_DETAILS_IP_CHKSUM_FAIL_LSB 23
  1854. #define RX_MSDU_LINK_MSDU_3_RX_MSDU_DESC_INFO_DETAILS_IP_CHKSUM_FAIL_MSB 23
  1855. #define RX_MSDU_LINK_MSDU_3_RX_MSDU_DESC_INFO_DETAILS_IP_CHKSUM_FAIL_MASK 0x00800000
  1856. /* Description FR_DS
  1857. Passed on from 'RX_MPDU_INFO' structure in 'RX_MPDU_START'
  1858. TLV
  1859. Set if the 'from DS' bit is set in the frame control.
  1860. <legal all>
  1861. */
  1862. #define RX_MSDU_LINK_MSDU_3_RX_MSDU_DESC_INFO_DETAILS_FR_DS_OFFSET 0x00000058
  1863. #define RX_MSDU_LINK_MSDU_3_RX_MSDU_DESC_INFO_DETAILS_FR_DS_LSB 24
  1864. #define RX_MSDU_LINK_MSDU_3_RX_MSDU_DESC_INFO_DETAILS_FR_DS_MSB 24
  1865. #define RX_MSDU_LINK_MSDU_3_RX_MSDU_DESC_INFO_DETAILS_FR_DS_MASK 0x01000000
  1866. /* Description TO_DS
  1867. Passed on from 'RX_MPDU_INFO' structure in 'RX_MPDU_START'
  1868. TLV
  1869. Set if the 'to DS' bit is set in the frame control.
  1870. <legal all>
  1871. */
  1872. #define RX_MSDU_LINK_MSDU_3_RX_MSDU_DESC_INFO_DETAILS_TO_DS_OFFSET 0x00000058
  1873. #define RX_MSDU_LINK_MSDU_3_RX_MSDU_DESC_INFO_DETAILS_TO_DS_LSB 25
  1874. #define RX_MSDU_LINK_MSDU_3_RX_MSDU_DESC_INFO_DETAILS_TO_DS_MSB 25
  1875. #define RX_MSDU_LINK_MSDU_3_RX_MSDU_DESC_INFO_DETAILS_TO_DS_MASK 0x02000000
  1876. /* Description INTRA_BSS
  1877. This packet needs intra-BSS routing by SW as the 'vdev_id'
  1878. for the destination is the same as the 'vdev_id' (from 'RX_MPDU_PCU_START')
  1879. that this MSDU was got in.
  1880. <legal all>
  1881. */
  1882. #define RX_MSDU_LINK_MSDU_3_RX_MSDU_DESC_INFO_DETAILS_INTRA_BSS_OFFSET 0x00000058
  1883. #define RX_MSDU_LINK_MSDU_3_RX_MSDU_DESC_INFO_DETAILS_INTRA_BSS_LSB 26
  1884. #define RX_MSDU_LINK_MSDU_3_RX_MSDU_DESC_INFO_DETAILS_INTRA_BSS_MSB 26
  1885. #define RX_MSDU_LINK_MSDU_3_RX_MSDU_DESC_INFO_DETAILS_INTRA_BSS_MASK 0x04000000
  1886. /* Description DEST_CHIP_ID
  1887. If intra_bss is set, copied by RXOLE/RXDMA from 'ADDR_SEARCH_ENTRY'
  1888. to support intra-BSS routing with multi-chip multi-link
  1889. operation.
  1890. This indicates into which chip's TCL the packet should be
  1891. queued.
  1892. <legal all>
  1893. */
  1894. #define RX_MSDU_LINK_MSDU_3_RX_MSDU_DESC_INFO_DETAILS_DEST_CHIP_ID_OFFSET 0x00000058
  1895. #define RX_MSDU_LINK_MSDU_3_RX_MSDU_DESC_INFO_DETAILS_DEST_CHIP_ID_LSB 27
  1896. #define RX_MSDU_LINK_MSDU_3_RX_MSDU_DESC_INFO_DETAILS_DEST_CHIP_ID_MSB 28
  1897. #define RX_MSDU_LINK_MSDU_3_RX_MSDU_DESC_INFO_DETAILS_DEST_CHIP_ID_MASK 0x18000000
  1898. /* Description DECAP_FORMAT
  1899. Indicates the format after decapsulation:
  1900. <enum 0 RAW> No encapsulation
  1901. <enum 1 Native_WiFi>
  1902. <enum 2 Ethernet> Ethernet 2 (DIX) or 802.3 (uses SNAP/LLC)
  1903. <enum 3 802_3> Indicate Ethernet
  1904. <legal all>
  1905. */
  1906. #define RX_MSDU_LINK_MSDU_3_RX_MSDU_DESC_INFO_DETAILS_DECAP_FORMAT_OFFSET 0x00000058
  1907. #define RX_MSDU_LINK_MSDU_3_RX_MSDU_DESC_INFO_DETAILS_DECAP_FORMAT_LSB 29
  1908. #define RX_MSDU_LINK_MSDU_3_RX_MSDU_DESC_INFO_DETAILS_DECAP_FORMAT_MSB 30
  1909. #define RX_MSDU_LINK_MSDU_3_RX_MSDU_DESC_INFO_DETAILS_DECAP_FORMAT_MASK 0x60000000
  1910. /* Description DEST_CHIP_PMAC_ID
  1911. If intra_bss is set, copied by RXOLE/RXDMA from 'ADDR_SEARCH_ENTRY'
  1912. to support intra-BSS routing with multi-chip multi-link
  1913. operation.
  1914. This indicates into which link/'vdev' the packet should
  1915. be queued in TCL.
  1916. <legal all>
  1917. */
  1918. #define RX_MSDU_LINK_MSDU_3_RX_MSDU_DESC_INFO_DETAILS_DEST_CHIP_PMAC_ID_OFFSET 0x00000058
  1919. #define RX_MSDU_LINK_MSDU_3_RX_MSDU_DESC_INFO_DETAILS_DEST_CHIP_PMAC_ID_LSB 31
  1920. #define RX_MSDU_LINK_MSDU_3_RX_MSDU_DESC_INFO_DETAILS_DEST_CHIP_PMAC_ID_MSB 31
  1921. #define RX_MSDU_LINK_MSDU_3_RX_MSDU_DESC_INFO_DETAILS_DEST_CHIP_PMAC_ID_MASK 0x80000000
  1922. /* Description RX_MSDU_EXT_DESC_INFO_DETAILS
  1923. Consumer: REO/SW
  1924. Producer: RXDMA
  1925. Extended information related to the MSDU that is passed
  1926. on from RXDMA to REO but not part of the REO destination
  1927. ring. Some fields are passed on to PPE.
  1928. */
  1929. /* Description REO_DESTINATION_INDICATION
  1930. Parsed from RX_MSDU_END TLV . In the case MSDU spans over
  1931. multiple buffers, this field will be valid in the Last
  1932. buffer used by the MSDU
  1933. The ID of the REO exit ring where the MSDU frame shall push
  1934. after (MPDU level) reordering has finished.
  1935. <enum 0 reo_destination_sw0> Reo will push the frame into
  1936. the REO2SW0 ring
  1937. <enum 1 reo_destination_sw1> Reo will push the frame into
  1938. the REO2SW1 ring
  1939. <enum 2 reo_destination_sw2> Reo will push the frame into
  1940. the REO2SW2 ring
  1941. <enum 3 reo_destination_sw3> Reo will push the frame into
  1942. the REO2SW3 ring
  1943. <enum 4 reo_destination_sw4> Reo will push the frame into
  1944. the REO2SW4 ring
  1945. <enum 5 reo_destination_release> Reo will push the frame
  1946. into the REO_release ring
  1947. <enum 6 reo_destination_fw> Reo will push the frame into
  1948. the REO2FW ring
  1949. <enum 7 reo_destination_sw5> Reo will push the frame into
  1950. the REO2SW5 ring (REO remaps this in chips without REO2SW5
  1951. ring)
  1952. <enum 8 reo_destination_sw6> Reo will push the frame into
  1953. the REO2SW6 ring (REO remaps this in chips without REO2SW6
  1954. ring)
  1955. <enum 9 reo_destination_sw7> Reo will push the frame into
  1956. the REO2SW7 ring (REO remaps this in chips without REO2SW7
  1957. ring)
  1958. <enum 10 reo_destination_sw8> Reo will push the frame into
  1959. the REO2SW8 ring (REO remaps this in chips without REO2SW8
  1960. ring)
  1961. <enum 11 reo_destination_11> REO remaps this
  1962. <enum 12 reo_destination_12> REO remaps this <enum 13 reo_destination_13>
  1963. REO remaps this
  1964. <enum 14 reo_destination_14> REO remaps this
  1965. <enum 15 reo_destination_15> REO remaps this
  1966. <enum 16 reo_destination_16> REO remaps this
  1967. <enum 17 reo_destination_17> REO remaps this
  1968. <enum 18 reo_destination_18> REO remaps this
  1969. <enum 19 reo_destination_19> REO remaps this
  1970. <enum 20 reo_destination_20> REO remaps this
  1971. <enum 21 reo_destination_21> REO remaps this
  1972. <enum 22 reo_destination_22> REO remaps this
  1973. <enum 23 reo_destination_23> REO remaps this
  1974. <enum 24 reo_destination_24> REO remaps this
  1975. <enum 25 reo_destination_25> REO remaps this
  1976. <enum 26 reo_destination_26> REO remaps this
  1977. <enum 27 reo_destination_27> REO remaps this
  1978. <enum 28 reo_destination_28> REO remaps this
  1979. <enum 29 reo_destination_29> REO remaps this
  1980. <enum 30 reo_destination_30> REO remaps this
  1981. <enum 31 reo_destination_31> REO remaps this
  1982. <legal all>
  1983. */
  1984. #define RX_MSDU_LINK_MSDU_3_RX_MSDU_EXT_DESC_INFO_DETAILS_REO_DESTINATION_INDICATION_OFFSET 0x0000005c
  1985. #define RX_MSDU_LINK_MSDU_3_RX_MSDU_EXT_DESC_INFO_DETAILS_REO_DESTINATION_INDICATION_LSB 0
  1986. #define RX_MSDU_LINK_MSDU_3_RX_MSDU_EXT_DESC_INFO_DETAILS_REO_DESTINATION_INDICATION_MSB 4
  1987. #define RX_MSDU_LINK_MSDU_3_RX_MSDU_EXT_DESC_INFO_DETAILS_REO_DESTINATION_INDICATION_MASK 0x0000001f
  1988. /* Description SERVICE_CODE
  1989. Opaque service code between PPE and Wi-Fi
  1990. This field gets passed on by REO to PPE in the EDMA descriptor
  1991. ('REO_TO_PPE_RING').
  1992. <legal all>
  1993. */
  1994. #define RX_MSDU_LINK_MSDU_3_RX_MSDU_EXT_DESC_INFO_DETAILS_SERVICE_CODE_OFFSET 0x0000005c
  1995. #define RX_MSDU_LINK_MSDU_3_RX_MSDU_EXT_DESC_INFO_DETAILS_SERVICE_CODE_LSB 5
  1996. #define RX_MSDU_LINK_MSDU_3_RX_MSDU_EXT_DESC_INFO_DETAILS_SERVICE_CODE_MSB 13
  1997. #define RX_MSDU_LINK_MSDU_3_RX_MSDU_EXT_DESC_INFO_DETAILS_SERVICE_CODE_MASK 0x00003fe0
  1998. /* Description PRIORITY_VALID
  1999. This field gets passed on by REO to PPE in the EDMA descriptor
  2000. ('REO_TO_PPE_RING').
  2001. <legal all>
  2002. */
  2003. #define RX_MSDU_LINK_MSDU_3_RX_MSDU_EXT_DESC_INFO_DETAILS_PRIORITY_VALID_OFFSET 0x0000005c
  2004. #define RX_MSDU_LINK_MSDU_3_RX_MSDU_EXT_DESC_INFO_DETAILS_PRIORITY_VALID_LSB 14
  2005. #define RX_MSDU_LINK_MSDU_3_RX_MSDU_EXT_DESC_INFO_DETAILS_PRIORITY_VALID_MSB 14
  2006. #define RX_MSDU_LINK_MSDU_3_RX_MSDU_EXT_DESC_INFO_DETAILS_PRIORITY_VALID_MASK 0x00004000
  2007. /* Description DATA_OFFSET
  2008. The offset to Rx packet data within the buffer (including
  2009. Rx DMA offset programming and L3 header padding inserted
  2010. by Rx OLE).
  2011. This field gets passed on by REO to PPE in the EDMA descriptor
  2012. ('REO_TO_PPE_RING').
  2013. <legal all>
  2014. */
  2015. #define RX_MSDU_LINK_MSDU_3_RX_MSDU_EXT_DESC_INFO_DETAILS_DATA_OFFSET_OFFSET 0x0000005c
  2016. #define RX_MSDU_LINK_MSDU_3_RX_MSDU_EXT_DESC_INFO_DETAILS_DATA_OFFSET_LSB 15
  2017. #define RX_MSDU_LINK_MSDU_3_RX_MSDU_EXT_DESC_INFO_DETAILS_DATA_OFFSET_MSB 26
  2018. #define RX_MSDU_LINK_MSDU_3_RX_MSDU_EXT_DESC_INFO_DETAILS_DATA_OFFSET_MASK 0x07ff8000
  2019. /* Description SRC_LINK_ID
  2020. Consumer: SW
  2021. Producer: RXDMA
  2022. Set to the link ID of the PMAC that received the frame
  2023. <legal all>
  2024. */
  2025. #define RX_MSDU_LINK_MSDU_3_RX_MSDU_EXT_DESC_INFO_DETAILS_SRC_LINK_ID_OFFSET 0x0000005c
  2026. #define RX_MSDU_LINK_MSDU_3_RX_MSDU_EXT_DESC_INFO_DETAILS_SRC_LINK_ID_LSB 27
  2027. #define RX_MSDU_LINK_MSDU_3_RX_MSDU_EXT_DESC_INFO_DETAILS_SRC_LINK_ID_MSB 29
  2028. #define RX_MSDU_LINK_MSDU_3_RX_MSDU_EXT_DESC_INFO_DETAILS_SRC_LINK_ID_MASK 0x38000000
  2029. /* Description RESERVED_0A
  2030. <legal 0>
  2031. */
  2032. #define RX_MSDU_LINK_MSDU_3_RX_MSDU_EXT_DESC_INFO_DETAILS_RESERVED_0A_OFFSET 0x0000005c
  2033. #define RX_MSDU_LINK_MSDU_3_RX_MSDU_EXT_DESC_INFO_DETAILS_RESERVED_0A_LSB 30
  2034. #define RX_MSDU_LINK_MSDU_3_RX_MSDU_EXT_DESC_INFO_DETAILS_RESERVED_0A_MSB 31
  2035. #define RX_MSDU_LINK_MSDU_3_RX_MSDU_EXT_DESC_INFO_DETAILS_RESERVED_0A_MASK 0xc0000000
  2036. /* Description MSDU_4
  2037. Details of next MSDU in this (MSDU flow) linked list
  2038. */
  2039. /* Description BUFFER_ADDR_INFO_DETAILS
  2040. Consumer: REO/SW
  2041. Producer: RXDMA
  2042. Details of the physical address of the buffer containing
  2043. an MSDU (or entire MPDU)
  2044. */
  2045. /* Description BUFFER_ADDR_31_0
  2046. Address (lower 32 bits) of the MSDU buffer OR MSDU_EXTENSION
  2047. descriptor OR Link Descriptor
  2048. In case of 'NULL' pointer, this field is set to 0
  2049. <legal all>
  2050. */
  2051. #define RX_MSDU_LINK_MSDU_4_BUFFER_ADDR_INFO_DETAILS_BUFFER_ADDR_31_0_OFFSET 0x00000060
  2052. #define RX_MSDU_LINK_MSDU_4_BUFFER_ADDR_INFO_DETAILS_BUFFER_ADDR_31_0_LSB 0
  2053. #define RX_MSDU_LINK_MSDU_4_BUFFER_ADDR_INFO_DETAILS_BUFFER_ADDR_31_0_MSB 31
  2054. #define RX_MSDU_LINK_MSDU_4_BUFFER_ADDR_INFO_DETAILS_BUFFER_ADDR_31_0_MASK 0xffffffff
  2055. /* Description BUFFER_ADDR_39_32
  2056. Address (upper 8 bits) of the MSDU buffer OR MSDU_EXTENSION
  2057. descriptor OR Link Descriptor
  2058. In case of 'NULL' pointer, this field is set to 0
  2059. <legal all>
  2060. */
  2061. #define RX_MSDU_LINK_MSDU_4_BUFFER_ADDR_INFO_DETAILS_BUFFER_ADDR_39_32_OFFSET 0x00000064
  2062. #define RX_MSDU_LINK_MSDU_4_BUFFER_ADDR_INFO_DETAILS_BUFFER_ADDR_39_32_LSB 0
  2063. #define RX_MSDU_LINK_MSDU_4_BUFFER_ADDR_INFO_DETAILS_BUFFER_ADDR_39_32_MSB 7
  2064. #define RX_MSDU_LINK_MSDU_4_BUFFER_ADDR_INFO_DETAILS_BUFFER_ADDR_39_32_MASK 0x000000ff
  2065. /* Description RETURN_BUFFER_MANAGER
  2066. Consumer: WBM
  2067. Producer: SW/FW
  2068. In case of 'NULL' pointer, this field is set to 0
  2069. Indicates to which buffer manager the buffer OR MSDU_EXTENSION
  2070. descriptor OR link descriptor that is being pointed to
  2071. shall be returned after the frame has been processed. It
  2072. is used by WBM for routing purposes.
  2073. <enum 0 WBM_IDLE_BUF_LIST> This buffer shall be returned
  2074. to the WMB buffer idle list
  2075. <enum 1 WBM_CHIP0_IDLE_DESC_LIST> This buffer shall be returned
  2076. to the WBM idle link descriptor idle list, where the chip
  2077. 0 WBM is chosen in case of a multi-chip config
  2078. <enum 2 WBM_CHIP1_IDLE_DESC_LIST> This buffer shall be returned
  2079. to the chip 1 WBM idle link descriptor idle list
  2080. <enum 3 WBM_CHIP2_IDLE_DESC_LIST> This buffer shall be returned
  2081. to the chip 2 WBM idle link descriptor idle list
  2082. <enum 12 WBM_CHIP3_IDLE_DESC_LIST> This buffer shall be
  2083. returned to chip 3 WBM idle link descriptor idle list
  2084. <enum 4 FW_BM> This buffer shall be returned to the FW
  2085. <enum 5 SW0_BM> This buffer shall be returned to the SW,
  2086. ring 0
  2087. <enum 6 SW1_BM> This buffer shall be returned to the SW,
  2088. ring 1
  2089. <enum 7 SW2_BM> This buffer shall be returned to the SW,
  2090. ring 2
  2091. <enum 8 SW3_BM> This buffer shall be returned to the SW,
  2092. ring 3
  2093. <enum 9 SW4_BM> This buffer shall be returned to the SW,
  2094. ring 4
  2095. <enum 10 SW5_BM> This buffer shall be returned to the SW,
  2096. ring 5
  2097. <enum 11 SW6_BM> This buffer shall be returned to the SW,
  2098. ring 6
  2099. <legal 0-12>
  2100. */
  2101. #define RX_MSDU_LINK_MSDU_4_BUFFER_ADDR_INFO_DETAILS_RETURN_BUFFER_MANAGER_OFFSET 0x00000064
  2102. #define RX_MSDU_LINK_MSDU_4_BUFFER_ADDR_INFO_DETAILS_RETURN_BUFFER_MANAGER_LSB 8
  2103. #define RX_MSDU_LINK_MSDU_4_BUFFER_ADDR_INFO_DETAILS_RETURN_BUFFER_MANAGER_MSB 11
  2104. #define RX_MSDU_LINK_MSDU_4_BUFFER_ADDR_INFO_DETAILS_RETURN_BUFFER_MANAGER_MASK 0x00000f00
  2105. /* Description SW_BUFFER_COOKIE
  2106. Cookie field exclusively used by SW.
  2107. In case of 'NULL' pointer, this field is set to 0
  2108. HW ignores the contents, accept that it passes the programmed
  2109. value on to other descriptors together with the physical
  2110. address
  2111. Field can be used by SW to for example associate the buffers
  2112. physical address with the virtual address
  2113. The bit definitions as used by SW are within SW HLD specification
  2114. NOTE1:
  2115. The three most significant bits can have a special meaning
  2116. in case this struct is embedded in a TX_MPDU_DETAILS STRUCT,
  2117. and field transmit_bw_restriction is set
  2118. In case of NON punctured transmission:
  2119. Sw_buffer_cookie[19:17] = 3'b000: 20 MHz TX only
  2120. Sw_buffer_cookie[19:17] = 3'b001: 40 MHz TX only
  2121. Sw_buffer_cookie[19:17] = 3'b010: 80 MHz TX only
  2122. Sw_buffer_cookie[19:17] = 3'b011: 160 MHz TX only
  2123. Sw_buffer_cookie[19:17] = 3'b101: 240 MHz TX only
  2124. Sw_buffer_cookie[19:17] = 3'b100: 320 MHz TX only
  2125. Sw_buffer_cookie[19:18] = 2'b11: reserved
  2126. In case of punctured transmission:
  2127. Sw_buffer_cookie[19:16] = 4'b0000: pattern 0 only
  2128. Sw_buffer_cookie[19:16] = 4'b0001: pattern 1 only
  2129. Sw_buffer_cookie[19:16] = 4'b0010: pattern 2 only
  2130. Sw_buffer_cookie[19:16] = 4'b0011: pattern 3 only
  2131. Sw_buffer_cookie[19:16] = 4'b0100: pattern 4 only
  2132. Sw_buffer_cookie[19:16] = 4'b0101: pattern 5 only
  2133. Sw_buffer_cookie[19:16] = 4'b0110: pattern 6 only
  2134. Sw_buffer_cookie[19:16] = 4'b0111: pattern 7 only
  2135. Sw_buffer_cookie[19:16] = 4'b1000: pattern 8 only
  2136. Sw_buffer_cookie[19:16] = 4'b1001: pattern 9 only
  2137. Sw_buffer_cookie[19:16] = 4'b1010: pattern 10 only
  2138. Sw_buffer_cookie[19:16] = 4'b1011: pattern 11 only
  2139. Sw_buffer_cookie[19:18] = 2'b11: reserved
  2140. Note: a punctured transmission is indicated by the presence
  2141. of TLV TX_PUNCTURE_SETUP embedded in the scheduler TLV
  2142. <legal all>
  2143. */
  2144. #define RX_MSDU_LINK_MSDU_4_BUFFER_ADDR_INFO_DETAILS_SW_BUFFER_COOKIE_OFFSET 0x00000064
  2145. #define RX_MSDU_LINK_MSDU_4_BUFFER_ADDR_INFO_DETAILS_SW_BUFFER_COOKIE_LSB 12
  2146. #define RX_MSDU_LINK_MSDU_4_BUFFER_ADDR_INFO_DETAILS_SW_BUFFER_COOKIE_MSB 31
  2147. #define RX_MSDU_LINK_MSDU_4_BUFFER_ADDR_INFO_DETAILS_SW_BUFFER_COOKIE_MASK 0xfffff000
  2148. /* Description RX_MSDU_DESC_INFO_DETAILS
  2149. Consumer: REO/SW
  2150. Producer: RXDMA
  2151. General information related to the MSDU that should be passed
  2152. on from RXDMA all the way to to the REO destination ring.
  2153. */
  2154. /* Description FIRST_MSDU_IN_MPDU_FLAG
  2155. Parsed from RX_MSDU_END TLV . In the case MSDU spans over
  2156. multiple buffers, this field will be valid in the Last
  2157. buffer used by the MSDU
  2158. <enum 0 Not_first_msdu> This is not the first MSDU in the
  2159. MPDU.
  2160. <enum 1 first_msdu> This MSDU is the first one in the MPDU.
  2161. <legal all>
  2162. */
  2163. #define RX_MSDU_LINK_MSDU_4_RX_MSDU_DESC_INFO_DETAILS_FIRST_MSDU_IN_MPDU_FLAG_OFFSET 0x00000068
  2164. #define RX_MSDU_LINK_MSDU_4_RX_MSDU_DESC_INFO_DETAILS_FIRST_MSDU_IN_MPDU_FLAG_LSB 0
  2165. #define RX_MSDU_LINK_MSDU_4_RX_MSDU_DESC_INFO_DETAILS_FIRST_MSDU_IN_MPDU_FLAG_MSB 0
  2166. #define RX_MSDU_LINK_MSDU_4_RX_MSDU_DESC_INFO_DETAILS_FIRST_MSDU_IN_MPDU_FLAG_MASK 0x00000001
  2167. /* Description LAST_MSDU_IN_MPDU_FLAG
  2168. Consumer: WBM/REO/SW/FW
  2169. Producer: RXDMA
  2170. Parsed from RX_MSDU_END TLV . In the case MSDU spans over
  2171. multiple buffers, this field will be valid in the Last
  2172. buffer used by the MSDU
  2173. <enum 0 Not_last_msdu> There are more MSDUs linked to this
  2174. MSDU that belongs to this MPDU
  2175. <enum 1 Last_msdu> this MSDU is the last one in the MPDU.
  2176. This setting is only allowed in combination with 'Msdu_continuation'
  2177. set to 0. This implies that when an msdu is spread out over
  2178. multiple buffers and thus msdu_continuation is set, only
  2179. for the very last buffer of the msdu, can the 'last_msdu_in_mpdu_flag'
  2180. be set.
  2181. When both first_msdu_in_mpdu_flag and last_msdu_in_mpdu_flag
  2182. are set, the MPDU that this MSDU belongs to only contains
  2183. a single MSDU.
  2184. <legal all>
  2185. */
  2186. #define RX_MSDU_LINK_MSDU_4_RX_MSDU_DESC_INFO_DETAILS_LAST_MSDU_IN_MPDU_FLAG_OFFSET 0x00000068
  2187. #define RX_MSDU_LINK_MSDU_4_RX_MSDU_DESC_INFO_DETAILS_LAST_MSDU_IN_MPDU_FLAG_LSB 1
  2188. #define RX_MSDU_LINK_MSDU_4_RX_MSDU_DESC_INFO_DETAILS_LAST_MSDU_IN_MPDU_FLAG_MSB 1
  2189. #define RX_MSDU_LINK_MSDU_4_RX_MSDU_DESC_INFO_DETAILS_LAST_MSDU_IN_MPDU_FLAG_MASK 0x00000002
  2190. /* Description MSDU_CONTINUATION
  2191. When set, this MSDU buffer was not able to hold the entire
  2192. MSDU. The next buffer will therefor contain additional
  2193. information related to this MSDU.
  2194. <legal all>
  2195. */
  2196. #define RX_MSDU_LINK_MSDU_4_RX_MSDU_DESC_INFO_DETAILS_MSDU_CONTINUATION_OFFSET 0x00000068
  2197. #define RX_MSDU_LINK_MSDU_4_RX_MSDU_DESC_INFO_DETAILS_MSDU_CONTINUATION_LSB 2
  2198. #define RX_MSDU_LINK_MSDU_4_RX_MSDU_DESC_INFO_DETAILS_MSDU_CONTINUATION_MSB 2
  2199. #define RX_MSDU_LINK_MSDU_4_RX_MSDU_DESC_INFO_DETAILS_MSDU_CONTINUATION_MASK 0x00000004
  2200. /* Description MSDU_LENGTH
  2201. Parsed from RX_MSDU_START TLV . In the case MSDU spans over
  2202. multiple buffers, this field will be valid in the First
  2203. buffer used by MSDU.
  2204. Full MSDU length in bytes after decapsulation.
  2205. This field is still valid for MPDU frames without A-MSDU.
  2206. It still represents MSDU length after decapsulation
  2207. Or in case of RAW MPDUs, it indicates the length of the
  2208. entire MPDU (without FCS field)
  2209. <legal all>
  2210. */
  2211. #define RX_MSDU_LINK_MSDU_4_RX_MSDU_DESC_INFO_DETAILS_MSDU_LENGTH_OFFSET 0x00000068
  2212. #define RX_MSDU_LINK_MSDU_4_RX_MSDU_DESC_INFO_DETAILS_MSDU_LENGTH_LSB 3
  2213. #define RX_MSDU_LINK_MSDU_4_RX_MSDU_DESC_INFO_DETAILS_MSDU_LENGTH_MSB 16
  2214. #define RX_MSDU_LINK_MSDU_4_RX_MSDU_DESC_INFO_DETAILS_MSDU_LENGTH_MASK 0x0001fff8
  2215. /* Description MSDU_DROP
  2216. Parsed from RX_MSDU_END TLV . In the case MSDU spans over
  2217. multiple buffers, this field will be valid in the Last
  2218. buffer used by the MSDU
  2219. When set, REO shall drop this MSDU and not forward it to
  2220. any other ring...
  2221. <legal all>
  2222. */
  2223. #define RX_MSDU_LINK_MSDU_4_RX_MSDU_DESC_INFO_DETAILS_MSDU_DROP_OFFSET 0x00000068
  2224. #define RX_MSDU_LINK_MSDU_4_RX_MSDU_DESC_INFO_DETAILS_MSDU_DROP_LSB 17
  2225. #define RX_MSDU_LINK_MSDU_4_RX_MSDU_DESC_INFO_DETAILS_MSDU_DROP_MSB 17
  2226. #define RX_MSDU_LINK_MSDU_4_RX_MSDU_DESC_INFO_DETAILS_MSDU_DROP_MASK 0x00020000
  2227. /* Description SA_IS_VALID
  2228. Parsed from RX_MSDU_END TLV . In the case MSDU spans over
  2229. multiple buffers, this field will be valid in the Last
  2230. buffer used by the MSDU
  2231. Indicates that OLE found a valid SA entry for this MSDU
  2232. <legal all>
  2233. */
  2234. #define RX_MSDU_LINK_MSDU_4_RX_MSDU_DESC_INFO_DETAILS_SA_IS_VALID_OFFSET 0x00000068
  2235. #define RX_MSDU_LINK_MSDU_4_RX_MSDU_DESC_INFO_DETAILS_SA_IS_VALID_LSB 18
  2236. #define RX_MSDU_LINK_MSDU_4_RX_MSDU_DESC_INFO_DETAILS_SA_IS_VALID_MSB 18
  2237. #define RX_MSDU_LINK_MSDU_4_RX_MSDU_DESC_INFO_DETAILS_SA_IS_VALID_MASK 0x00040000
  2238. /* Description DA_IS_VALID
  2239. Parsed from RX_MSDU_END TLV . In the case MSDU spans over
  2240. multiple buffers, this field will be valid in the Last
  2241. buffer used by the MSDU
  2242. Indicates that OLE found a valid DA entry for this MSDU
  2243. <legal all>
  2244. */
  2245. #define RX_MSDU_LINK_MSDU_4_RX_MSDU_DESC_INFO_DETAILS_DA_IS_VALID_OFFSET 0x00000068
  2246. #define RX_MSDU_LINK_MSDU_4_RX_MSDU_DESC_INFO_DETAILS_DA_IS_VALID_LSB 19
  2247. #define RX_MSDU_LINK_MSDU_4_RX_MSDU_DESC_INFO_DETAILS_DA_IS_VALID_MSB 19
  2248. #define RX_MSDU_LINK_MSDU_4_RX_MSDU_DESC_INFO_DETAILS_DA_IS_VALID_MASK 0x00080000
  2249. /* Description DA_IS_MCBC
  2250. Field Only valid if "da_is_valid" is set
  2251. Indicates the DA address was a Multicast of Broadcast address
  2252. for this MSDU
  2253. <legal all>
  2254. */
  2255. #define RX_MSDU_LINK_MSDU_4_RX_MSDU_DESC_INFO_DETAILS_DA_IS_MCBC_OFFSET 0x00000068
  2256. #define RX_MSDU_LINK_MSDU_4_RX_MSDU_DESC_INFO_DETAILS_DA_IS_MCBC_LSB 20
  2257. #define RX_MSDU_LINK_MSDU_4_RX_MSDU_DESC_INFO_DETAILS_DA_IS_MCBC_MSB 20
  2258. #define RX_MSDU_LINK_MSDU_4_RX_MSDU_DESC_INFO_DETAILS_DA_IS_MCBC_MASK 0x00100000
  2259. /* Description L3_HEADER_PADDING_MSB
  2260. Passed on from 'RX_MSDU_END' TLV (only the MSB is reported
  2261. as the LSB is always zero)
  2262. Number of bytes padded to make sure that the L3 header will
  2263. always start of a Dword boundary
  2264. <legal all>
  2265. */
  2266. #define RX_MSDU_LINK_MSDU_4_RX_MSDU_DESC_INFO_DETAILS_L3_HEADER_PADDING_MSB_OFFSET 0x00000068
  2267. #define RX_MSDU_LINK_MSDU_4_RX_MSDU_DESC_INFO_DETAILS_L3_HEADER_PADDING_MSB_LSB 21
  2268. #define RX_MSDU_LINK_MSDU_4_RX_MSDU_DESC_INFO_DETAILS_L3_HEADER_PADDING_MSB_MSB 21
  2269. #define RX_MSDU_LINK_MSDU_4_RX_MSDU_DESC_INFO_DETAILS_L3_HEADER_PADDING_MSB_MASK 0x00200000
  2270. /* Description TCP_UDP_CHKSUM_FAIL
  2271. Passed on from 'RX_ATTENTION' TLV
  2272. Indicates that the computed checksum did not match the checksum
  2273. in the TCP/UDP header.
  2274. <legal all>
  2275. */
  2276. #define RX_MSDU_LINK_MSDU_4_RX_MSDU_DESC_INFO_DETAILS_TCP_UDP_CHKSUM_FAIL_OFFSET 0x00000068
  2277. #define RX_MSDU_LINK_MSDU_4_RX_MSDU_DESC_INFO_DETAILS_TCP_UDP_CHKSUM_FAIL_LSB 22
  2278. #define RX_MSDU_LINK_MSDU_4_RX_MSDU_DESC_INFO_DETAILS_TCP_UDP_CHKSUM_FAIL_MSB 22
  2279. #define RX_MSDU_LINK_MSDU_4_RX_MSDU_DESC_INFO_DETAILS_TCP_UDP_CHKSUM_FAIL_MASK 0x00400000
  2280. /* Description IP_CHKSUM_FAIL
  2281. Passed on from 'RX_ATTENTION' TLV
  2282. Indicates that the computed checksum did not match the checksum
  2283. in the IP header.
  2284. <legal all>
  2285. */
  2286. #define RX_MSDU_LINK_MSDU_4_RX_MSDU_DESC_INFO_DETAILS_IP_CHKSUM_FAIL_OFFSET 0x00000068
  2287. #define RX_MSDU_LINK_MSDU_4_RX_MSDU_DESC_INFO_DETAILS_IP_CHKSUM_FAIL_LSB 23
  2288. #define RX_MSDU_LINK_MSDU_4_RX_MSDU_DESC_INFO_DETAILS_IP_CHKSUM_FAIL_MSB 23
  2289. #define RX_MSDU_LINK_MSDU_4_RX_MSDU_DESC_INFO_DETAILS_IP_CHKSUM_FAIL_MASK 0x00800000
  2290. /* Description FR_DS
  2291. Passed on from 'RX_MPDU_INFO' structure in 'RX_MPDU_START'
  2292. TLV
  2293. Set if the 'from DS' bit is set in the frame control.
  2294. <legal all>
  2295. */
  2296. #define RX_MSDU_LINK_MSDU_4_RX_MSDU_DESC_INFO_DETAILS_FR_DS_OFFSET 0x00000068
  2297. #define RX_MSDU_LINK_MSDU_4_RX_MSDU_DESC_INFO_DETAILS_FR_DS_LSB 24
  2298. #define RX_MSDU_LINK_MSDU_4_RX_MSDU_DESC_INFO_DETAILS_FR_DS_MSB 24
  2299. #define RX_MSDU_LINK_MSDU_4_RX_MSDU_DESC_INFO_DETAILS_FR_DS_MASK 0x01000000
  2300. /* Description TO_DS
  2301. Passed on from 'RX_MPDU_INFO' structure in 'RX_MPDU_START'
  2302. TLV
  2303. Set if the 'to DS' bit is set in the frame control.
  2304. <legal all>
  2305. */
  2306. #define RX_MSDU_LINK_MSDU_4_RX_MSDU_DESC_INFO_DETAILS_TO_DS_OFFSET 0x00000068
  2307. #define RX_MSDU_LINK_MSDU_4_RX_MSDU_DESC_INFO_DETAILS_TO_DS_LSB 25
  2308. #define RX_MSDU_LINK_MSDU_4_RX_MSDU_DESC_INFO_DETAILS_TO_DS_MSB 25
  2309. #define RX_MSDU_LINK_MSDU_4_RX_MSDU_DESC_INFO_DETAILS_TO_DS_MASK 0x02000000
  2310. /* Description INTRA_BSS
  2311. This packet needs intra-BSS routing by SW as the 'vdev_id'
  2312. for the destination is the same as the 'vdev_id' (from 'RX_MPDU_PCU_START')
  2313. that this MSDU was got in.
  2314. <legal all>
  2315. */
  2316. #define RX_MSDU_LINK_MSDU_4_RX_MSDU_DESC_INFO_DETAILS_INTRA_BSS_OFFSET 0x00000068
  2317. #define RX_MSDU_LINK_MSDU_4_RX_MSDU_DESC_INFO_DETAILS_INTRA_BSS_LSB 26
  2318. #define RX_MSDU_LINK_MSDU_4_RX_MSDU_DESC_INFO_DETAILS_INTRA_BSS_MSB 26
  2319. #define RX_MSDU_LINK_MSDU_4_RX_MSDU_DESC_INFO_DETAILS_INTRA_BSS_MASK 0x04000000
  2320. /* Description DEST_CHIP_ID
  2321. If intra_bss is set, copied by RXOLE/RXDMA from 'ADDR_SEARCH_ENTRY'
  2322. to support intra-BSS routing with multi-chip multi-link
  2323. operation.
  2324. This indicates into which chip's TCL the packet should be
  2325. queued.
  2326. <legal all>
  2327. */
  2328. #define RX_MSDU_LINK_MSDU_4_RX_MSDU_DESC_INFO_DETAILS_DEST_CHIP_ID_OFFSET 0x00000068
  2329. #define RX_MSDU_LINK_MSDU_4_RX_MSDU_DESC_INFO_DETAILS_DEST_CHIP_ID_LSB 27
  2330. #define RX_MSDU_LINK_MSDU_4_RX_MSDU_DESC_INFO_DETAILS_DEST_CHIP_ID_MSB 28
  2331. #define RX_MSDU_LINK_MSDU_4_RX_MSDU_DESC_INFO_DETAILS_DEST_CHIP_ID_MASK 0x18000000
  2332. /* Description DECAP_FORMAT
  2333. Indicates the format after decapsulation:
  2334. <enum 0 RAW> No encapsulation
  2335. <enum 1 Native_WiFi>
  2336. <enum 2 Ethernet> Ethernet 2 (DIX) or 802.3 (uses SNAP/LLC)
  2337. <enum 3 802_3> Indicate Ethernet
  2338. <legal all>
  2339. */
  2340. #define RX_MSDU_LINK_MSDU_4_RX_MSDU_DESC_INFO_DETAILS_DECAP_FORMAT_OFFSET 0x00000068
  2341. #define RX_MSDU_LINK_MSDU_4_RX_MSDU_DESC_INFO_DETAILS_DECAP_FORMAT_LSB 29
  2342. #define RX_MSDU_LINK_MSDU_4_RX_MSDU_DESC_INFO_DETAILS_DECAP_FORMAT_MSB 30
  2343. #define RX_MSDU_LINK_MSDU_4_RX_MSDU_DESC_INFO_DETAILS_DECAP_FORMAT_MASK 0x60000000
  2344. /* Description DEST_CHIP_PMAC_ID
  2345. If intra_bss is set, copied by RXOLE/RXDMA from 'ADDR_SEARCH_ENTRY'
  2346. to support intra-BSS routing with multi-chip multi-link
  2347. operation.
  2348. This indicates into which link/'vdev' the packet should
  2349. be queued in TCL.
  2350. <legal all>
  2351. */
  2352. #define RX_MSDU_LINK_MSDU_4_RX_MSDU_DESC_INFO_DETAILS_DEST_CHIP_PMAC_ID_OFFSET 0x00000068
  2353. #define RX_MSDU_LINK_MSDU_4_RX_MSDU_DESC_INFO_DETAILS_DEST_CHIP_PMAC_ID_LSB 31
  2354. #define RX_MSDU_LINK_MSDU_4_RX_MSDU_DESC_INFO_DETAILS_DEST_CHIP_PMAC_ID_MSB 31
  2355. #define RX_MSDU_LINK_MSDU_4_RX_MSDU_DESC_INFO_DETAILS_DEST_CHIP_PMAC_ID_MASK 0x80000000
  2356. /* Description RX_MSDU_EXT_DESC_INFO_DETAILS
  2357. Consumer: REO/SW
  2358. Producer: RXDMA
  2359. Extended information related to the MSDU that is passed
  2360. on from RXDMA to REO but not part of the REO destination
  2361. ring. Some fields are passed on to PPE.
  2362. */
  2363. /* Description REO_DESTINATION_INDICATION
  2364. Parsed from RX_MSDU_END TLV . In the case MSDU spans over
  2365. multiple buffers, this field will be valid in the Last
  2366. buffer used by the MSDU
  2367. The ID of the REO exit ring where the MSDU frame shall push
  2368. after (MPDU level) reordering has finished.
  2369. <enum 0 reo_destination_sw0> Reo will push the frame into
  2370. the REO2SW0 ring
  2371. <enum 1 reo_destination_sw1> Reo will push the frame into
  2372. the REO2SW1 ring
  2373. <enum 2 reo_destination_sw2> Reo will push the frame into
  2374. the REO2SW2 ring
  2375. <enum 3 reo_destination_sw3> Reo will push the frame into
  2376. the REO2SW3 ring
  2377. <enum 4 reo_destination_sw4> Reo will push the frame into
  2378. the REO2SW4 ring
  2379. <enum 5 reo_destination_release> Reo will push the frame
  2380. into the REO_release ring
  2381. <enum 6 reo_destination_fw> Reo will push the frame into
  2382. the REO2FW ring
  2383. <enum 7 reo_destination_sw5> Reo will push the frame into
  2384. the REO2SW5 ring (REO remaps this in chips without REO2SW5
  2385. ring)
  2386. <enum 8 reo_destination_sw6> Reo will push the frame into
  2387. the REO2SW6 ring (REO remaps this in chips without REO2SW6
  2388. ring)
  2389. <enum 9 reo_destination_sw7> Reo will push the frame into
  2390. the REO2SW7 ring (REO remaps this in chips without REO2SW7
  2391. ring)
  2392. <enum 10 reo_destination_sw8> Reo will push the frame into
  2393. the REO2SW8 ring (REO remaps this in chips without REO2SW8
  2394. ring)
  2395. <enum 11 reo_destination_11> REO remaps this
  2396. <enum 12 reo_destination_12> REO remaps this <enum 13 reo_destination_13>
  2397. REO remaps this
  2398. <enum 14 reo_destination_14> REO remaps this
  2399. <enum 15 reo_destination_15> REO remaps this
  2400. <enum 16 reo_destination_16> REO remaps this
  2401. <enum 17 reo_destination_17> REO remaps this
  2402. <enum 18 reo_destination_18> REO remaps this
  2403. <enum 19 reo_destination_19> REO remaps this
  2404. <enum 20 reo_destination_20> REO remaps this
  2405. <enum 21 reo_destination_21> REO remaps this
  2406. <enum 22 reo_destination_22> REO remaps this
  2407. <enum 23 reo_destination_23> REO remaps this
  2408. <enum 24 reo_destination_24> REO remaps this
  2409. <enum 25 reo_destination_25> REO remaps this
  2410. <enum 26 reo_destination_26> REO remaps this
  2411. <enum 27 reo_destination_27> REO remaps this
  2412. <enum 28 reo_destination_28> REO remaps this
  2413. <enum 29 reo_destination_29> REO remaps this
  2414. <enum 30 reo_destination_30> REO remaps this
  2415. <enum 31 reo_destination_31> REO remaps this
  2416. <legal all>
  2417. */
  2418. #define RX_MSDU_LINK_MSDU_4_RX_MSDU_EXT_DESC_INFO_DETAILS_REO_DESTINATION_INDICATION_OFFSET 0x0000006c
  2419. #define RX_MSDU_LINK_MSDU_4_RX_MSDU_EXT_DESC_INFO_DETAILS_REO_DESTINATION_INDICATION_LSB 0
  2420. #define RX_MSDU_LINK_MSDU_4_RX_MSDU_EXT_DESC_INFO_DETAILS_REO_DESTINATION_INDICATION_MSB 4
  2421. #define RX_MSDU_LINK_MSDU_4_RX_MSDU_EXT_DESC_INFO_DETAILS_REO_DESTINATION_INDICATION_MASK 0x0000001f
  2422. /* Description SERVICE_CODE
  2423. Opaque service code between PPE and Wi-Fi
  2424. This field gets passed on by REO to PPE in the EDMA descriptor
  2425. ('REO_TO_PPE_RING').
  2426. <legal all>
  2427. */
  2428. #define RX_MSDU_LINK_MSDU_4_RX_MSDU_EXT_DESC_INFO_DETAILS_SERVICE_CODE_OFFSET 0x0000006c
  2429. #define RX_MSDU_LINK_MSDU_4_RX_MSDU_EXT_DESC_INFO_DETAILS_SERVICE_CODE_LSB 5
  2430. #define RX_MSDU_LINK_MSDU_4_RX_MSDU_EXT_DESC_INFO_DETAILS_SERVICE_CODE_MSB 13
  2431. #define RX_MSDU_LINK_MSDU_4_RX_MSDU_EXT_DESC_INFO_DETAILS_SERVICE_CODE_MASK 0x00003fe0
  2432. /* Description PRIORITY_VALID
  2433. This field gets passed on by REO to PPE in the EDMA descriptor
  2434. ('REO_TO_PPE_RING').
  2435. <legal all>
  2436. */
  2437. #define RX_MSDU_LINK_MSDU_4_RX_MSDU_EXT_DESC_INFO_DETAILS_PRIORITY_VALID_OFFSET 0x0000006c
  2438. #define RX_MSDU_LINK_MSDU_4_RX_MSDU_EXT_DESC_INFO_DETAILS_PRIORITY_VALID_LSB 14
  2439. #define RX_MSDU_LINK_MSDU_4_RX_MSDU_EXT_DESC_INFO_DETAILS_PRIORITY_VALID_MSB 14
  2440. #define RX_MSDU_LINK_MSDU_4_RX_MSDU_EXT_DESC_INFO_DETAILS_PRIORITY_VALID_MASK 0x00004000
  2441. /* Description DATA_OFFSET
  2442. The offset to Rx packet data within the buffer (including
  2443. Rx DMA offset programming and L3 header padding inserted
  2444. by Rx OLE).
  2445. This field gets passed on by REO to PPE in the EDMA descriptor
  2446. ('REO_TO_PPE_RING').
  2447. <legal all>
  2448. */
  2449. #define RX_MSDU_LINK_MSDU_4_RX_MSDU_EXT_DESC_INFO_DETAILS_DATA_OFFSET_OFFSET 0x0000006c
  2450. #define RX_MSDU_LINK_MSDU_4_RX_MSDU_EXT_DESC_INFO_DETAILS_DATA_OFFSET_LSB 15
  2451. #define RX_MSDU_LINK_MSDU_4_RX_MSDU_EXT_DESC_INFO_DETAILS_DATA_OFFSET_MSB 26
  2452. #define RX_MSDU_LINK_MSDU_4_RX_MSDU_EXT_DESC_INFO_DETAILS_DATA_OFFSET_MASK 0x07ff8000
  2453. /* Description SRC_LINK_ID
  2454. Consumer: SW
  2455. Producer: RXDMA
  2456. Set to the link ID of the PMAC that received the frame
  2457. <legal all>
  2458. */
  2459. #define RX_MSDU_LINK_MSDU_4_RX_MSDU_EXT_DESC_INFO_DETAILS_SRC_LINK_ID_OFFSET 0x0000006c
  2460. #define RX_MSDU_LINK_MSDU_4_RX_MSDU_EXT_DESC_INFO_DETAILS_SRC_LINK_ID_LSB 27
  2461. #define RX_MSDU_LINK_MSDU_4_RX_MSDU_EXT_DESC_INFO_DETAILS_SRC_LINK_ID_MSB 29
  2462. #define RX_MSDU_LINK_MSDU_4_RX_MSDU_EXT_DESC_INFO_DETAILS_SRC_LINK_ID_MASK 0x38000000
  2463. /* Description RESERVED_0A
  2464. <legal 0>
  2465. */
  2466. #define RX_MSDU_LINK_MSDU_4_RX_MSDU_EXT_DESC_INFO_DETAILS_RESERVED_0A_OFFSET 0x0000006c
  2467. #define RX_MSDU_LINK_MSDU_4_RX_MSDU_EXT_DESC_INFO_DETAILS_RESERVED_0A_LSB 30
  2468. #define RX_MSDU_LINK_MSDU_4_RX_MSDU_EXT_DESC_INFO_DETAILS_RESERVED_0A_MSB 31
  2469. #define RX_MSDU_LINK_MSDU_4_RX_MSDU_EXT_DESC_INFO_DETAILS_RESERVED_0A_MASK 0xc0000000
  2470. /* Description MSDU_5
  2471. Details of next MSDU in this (MSDU flow) linked list
  2472. */
  2473. /* Description BUFFER_ADDR_INFO_DETAILS
  2474. Consumer: REO/SW
  2475. Producer: RXDMA
  2476. Details of the physical address of the buffer containing
  2477. an MSDU (or entire MPDU)
  2478. */
  2479. /* Description BUFFER_ADDR_31_0
  2480. Address (lower 32 bits) of the MSDU buffer OR MSDU_EXTENSION
  2481. descriptor OR Link Descriptor
  2482. In case of 'NULL' pointer, this field is set to 0
  2483. <legal all>
  2484. */
  2485. #define RX_MSDU_LINK_MSDU_5_BUFFER_ADDR_INFO_DETAILS_BUFFER_ADDR_31_0_OFFSET 0x00000070
  2486. #define RX_MSDU_LINK_MSDU_5_BUFFER_ADDR_INFO_DETAILS_BUFFER_ADDR_31_0_LSB 0
  2487. #define RX_MSDU_LINK_MSDU_5_BUFFER_ADDR_INFO_DETAILS_BUFFER_ADDR_31_0_MSB 31
  2488. #define RX_MSDU_LINK_MSDU_5_BUFFER_ADDR_INFO_DETAILS_BUFFER_ADDR_31_0_MASK 0xffffffff
  2489. /* Description BUFFER_ADDR_39_32
  2490. Address (upper 8 bits) of the MSDU buffer OR MSDU_EXTENSION
  2491. descriptor OR Link Descriptor
  2492. In case of 'NULL' pointer, this field is set to 0
  2493. <legal all>
  2494. */
  2495. #define RX_MSDU_LINK_MSDU_5_BUFFER_ADDR_INFO_DETAILS_BUFFER_ADDR_39_32_OFFSET 0x00000074
  2496. #define RX_MSDU_LINK_MSDU_5_BUFFER_ADDR_INFO_DETAILS_BUFFER_ADDR_39_32_LSB 0
  2497. #define RX_MSDU_LINK_MSDU_5_BUFFER_ADDR_INFO_DETAILS_BUFFER_ADDR_39_32_MSB 7
  2498. #define RX_MSDU_LINK_MSDU_5_BUFFER_ADDR_INFO_DETAILS_BUFFER_ADDR_39_32_MASK 0x000000ff
  2499. /* Description RETURN_BUFFER_MANAGER
  2500. Consumer: WBM
  2501. Producer: SW/FW
  2502. In case of 'NULL' pointer, this field is set to 0
  2503. Indicates to which buffer manager the buffer OR MSDU_EXTENSION
  2504. descriptor OR link descriptor that is being pointed to
  2505. shall be returned after the frame has been processed. It
  2506. is used by WBM for routing purposes.
  2507. <enum 0 WBM_IDLE_BUF_LIST> This buffer shall be returned
  2508. to the WMB buffer idle list
  2509. <enum 1 WBM_CHIP0_IDLE_DESC_LIST> This buffer shall be returned
  2510. to the WBM idle link descriptor idle list, where the chip
  2511. 0 WBM is chosen in case of a multi-chip config
  2512. <enum 2 WBM_CHIP1_IDLE_DESC_LIST> This buffer shall be returned
  2513. to the chip 1 WBM idle link descriptor idle list
  2514. <enum 3 WBM_CHIP2_IDLE_DESC_LIST> This buffer shall be returned
  2515. to the chip 2 WBM idle link descriptor idle list
  2516. <enum 12 WBM_CHIP3_IDLE_DESC_LIST> This buffer shall be
  2517. returned to chip 3 WBM idle link descriptor idle list
  2518. <enum 4 FW_BM> This buffer shall be returned to the FW
  2519. <enum 5 SW0_BM> This buffer shall be returned to the SW,
  2520. ring 0
  2521. <enum 6 SW1_BM> This buffer shall be returned to the SW,
  2522. ring 1
  2523. <enum 7 SW2_BM> This buffer shall be returned to the SW,
  2524. ring 2
  2525. <enum 8 SW3_BM> This buffer shall be returned to the SW,
  2526. ring 3
  2527. <enum 9 SW4_BM> This buffer shall be returned to the SW,
  2528. ring 4
  2529. <enum 10 SW5_BM> This buffer shall be returned to the SW,
  2530. ring 5
  2531. <enum 11 SW6_BM> This buffer shall be returned to the SW,
  2532. ring 6
  2533. <legal 0-12>
  2534. */
  2535. #define RX_MSDU_LINK_MSDU_5_BUFFER_ADDR_INFO_DETAILS_RETURN_BUFFER_MANAGER_OFFSET 0x00000074
  2536. #define RX_MSDU_LINK_MSDU_5_BUFFER_ADDR_INFO_DETAILS_RETURN_BUFFER_MANAGER_LSB 8
  2537. #define RX_MSDU_LINK_MSDU_5_BUFFER_ADDR_INFO_DETAILS_RETURN_BUFFER_MANAGER_MSB 11
  2538. #define RX_MSDU_LINK_MSDU_5_BUFFER_ADDR_INFO_DETAILS_RETURN_BUFFER_MANAGER_MASK 0x00000f00
  2539. /* Description SW_BUFFER_COOKIE
  2540. Cookie field exclusively used by SW.
  2541. In case of 'NULL' pointer, this field is set to 0
  2542. HW ignores the contents, accept that it passes the programmed
  2543. value on to other descriptors together with the physical
  2544. address
  2545. Field can be used by SW to for example associate the buffers
  2546. physical address with the virtual address
  2547. The bit definitions as used by SW are within SW HLD specification
  2548. NOTE1:
  2549. The three most significant bits can have a special meaning
  2550. in case this struct is embedded in a TX_MPDU_DETAILS STRUCT,
  2551. and field transmit_bw_restriction is set
  2552. In case of NON punctured transmission:
  2553. Sw_buffer_cookie[19:17] = 3'b000: 20 MHz TX only
  2554. Sw_buffer_cookie[19:17] = 3'b001: 40 MHz TX only
  2555. Sw_buffer_cookie[19:17] = 3'b010: 80 MHz TX only
  2556. Sw_buffer_cookie[19:17] = 3'b011: 160 MHz TX only
  2557. Sw_buffer_cookie[19:17] = 3'b101: 240 MHz TX only
  2558. Sw_buffer_cookie[19:17] = 3'b100: 320 MHz TX only
  2559. Sw_buffer_cookie[19:18] = 2'b11: reserved
  2560. In case of punctured transmission:
  2561. Sw_buffer_cookie[19:16] = 4'b0000: pattern 0 only
  2562. Sw_buffer_cookie[19:16] = 4'b0001: pattern 1 only
  2563. Sw_buffer_cookie[19:16] = 4'b0010: pattern 2 only
  2564. Sw_buffer_cookie[19:16] = 4'b0011: pattern 3 only
  2565. Sw_buffer_cookie[19:16] = 4'b0100: pattern 4 only
  2566. Sw_buffer_cookie[19:16] = 4'b0101: pattern 5 only
  2567. Sw_buffer_cookie[19:16] = 4'b0110: pattern 6 only
  2568. Sw_buffer_cookie[19:16] = 4'b0111: pattern 7 only
  2569. Sw_buffer_cookie[19:16] = 4'b1000: pattern 8 only
  2570. Sw_buffer_cookie[19:16] = 4'b1001: pattern 9 only
  2571. Sw_buffer_cookie[19:16] = 4'b1010: pattern 10 only
  2572. Sw_buffer_cookie[19:16] = 4'b1011: pattern 11 only
  2573. Sw_buffer_cookie[19:18] = 2'b11: reserved
  2574. Note: a punctured transmission is indicated by the presence
  2575. of TLV TX_PUNCTURE_SETUP embedded in the scheduler TLV
  2576. <legal all>
  2577. */
  2578. #define RX_MSDU_LINK_MSDU_5_BUFFER_ADDR_INFO_DETAILS_SW_BUFFER_COOKIE_OFFSET 0x00000074
  2579. #define RX_MSDU_LINK_MSDU_5_BUFFER_ADDR_INFO_DETAILS_SW_BUFFER_COOKIE_LSB 12
  2580. #define RX_MSDU_LINK_MSDU_5_BUFFER_ADDR_INFO_DETAILS_SW_BUFFER_COOKIE_MSB 31
  2581. #define RX_MSDU_LINK_MSDU_5_BUFFER_ADDR_INFO_DETAILS_SW_BUFFER_COOKIE_MASK 0xfffff000
  2582. /* Description RX_MSDU_DESC_INFO_DETAILS
  2583. Consumer: REO/SW
  2584. Producer: RXDMA
  2585. General information related to the MSDU that should be passed
  2586. on from RXDMA all the way to to the REO destination ring.
  2587. */
  2588. /* Description FIRST_MSDU_IN_MPDU_FLAG
  2589. Parsed from RX_MSDU_END TLV . In the case MSDU spans over
  2590. multiple buffers, this field will be valid in the Last
  2591. buffer used by the MSDU
  2592. <enum 0 Not_first_msdu> This is not the first MSDU in the
  2593. MPDU.
  2594. <enum 1 first_msdu> This MSDU is the first one in the MPDU.
  2595. <legal all>
  2596. */
  2597. #define RX_MSDU_LINK_MSDU_5_RX_MSDU_DESC_INFO_DETAILS_FIRST_MSDU_IN_MPDU_FLAG_OFFSET 0x00000078
  2598. #define RX_MSDU_LINK_MSDU_5_RX_MSDU_DESC_INFO_DETAILS_FIRST_MSDU_IN_MPDU_FLAG_LSB 0
  2599. #define RX_MSDU_LINK_MSDU_5_RX_MSDU_DESC_INFO_DETAILS_FIRST_MSDU_IN_MPDU_FLAG_MSB 0
  2600. #define RX_MSDU_LINK_MSDU_5_RX_MSDU_DESC_INFO_DETAILS_FIRST_MSDU_IN_MPDU_FLAG_MASK 0x00000001
  2601. /* Description LAST_MSDU_IN_MPDU_FLAG
  2602. Consumer: WBM/REO/SW/FW
  2603. Producer: RXDMA
  2604. Parsed from RX_MSDU_END TLV . In the case MSDU spans over
  2605. multiple buffers, this field will be valid in the Last
  2606. buffer used by the MSDU
  2607. <enum 0 Not_last_msdu> There are more MSDUs linked to this
  2608. MSDU that belongs to this MPDU
  2609. <enum 1 Last_msdu> this MSDU is the last one in the MPDU.
  2610. This setting is only allowed in combination with 'Msdu_continuation'
  2611. set to 0. This implies that when an msdu is spread out over
  2612. multiple buffers and thus msdu_continuation is set, only
  2613. for the very last buffer of the msdu, can the 'last_msdu_in_mpdu_flag'
  2614. be set.
  2615. When both first_msdu_in_mpdu_flag and last_msdu_in_mpdu_flag
  2616. are set, the MPDU that this MSDU belongs to only contains
  2617. a single MSDU.
  2618. <legal all>
  2619. */
  2620. #define RX_MSDU_LINK_MSDU_5_RX_MSDU_DESC_INFO_DETAILS_LAST_MSDU_IN_MPDU_FLAG_OFFSET 0x00000078
  2621. #define RX_MSDU_LINK_MSDU_5_RX_MSDU_DESC_INFO_DETAILS_LAST_MSDU_IN_MPDU_FLAG_LSB 1
  2622. #define RX_MSDU_LINK_MSDU_5_RX_MSDU_DESC_INFO_DETAILS_LAST_MSDU_IN_MPDU_FLAG_MSB 1
  2623. #define RX_MSDU_LINK_MSDU_5_RX_MSDU_DESC_INFO_DETAILS_LAST_MSDU_IN_MPDU_FLAG_MASK 0x00000002
  2624. /* Description MSDU_CONTINUATION
  2625. When set, this MSDU buffer was not able to hold the entire
  2626. MSDU. The next buffer will therefor contain additional
  2627. information related to this MSDU.
  2628. <legal all>
  2629. */
  2630. #define RX_MSDU_LINK_MSDU_5_RX_MSDU_DESC_INFO_DETAILS_MSDU_CONTINUATION_OFFSET 0x00000078
  2631. #define RX_MSDU_LINK_MSDU_5_RX_MSDU_DESC_INFO_DETAILS_MSDU_CONTINUATION_LSB 2
  2632. #define RX_MSDU_LINK_MSDU_5_RX_MSDU_DESC_INFO_DETAILS_MSDU_CONTINUATION_MSB 2
  2633. #define RX_MSDU_LINK_MSDU_5_RX_MSDU_DESC_INFO_DETAILS_MSDU_CONTINUATION_MASK 0x00000004
  2634. /* Description MSDU_LENGTH
  2635. Parsed from RX_MSDU_START TLV . In the case MSDU spans over
  2636. multiple buffers, this field will be valid in the First
  2637. buffer used by MSDU.
  2638. Full MSDU length in bytes after decapsulation.
  2639. This field is still valid for MPDU frames without A-MSDU.
  2640. It still represents MSDU length after decapsulation
  2641. Or in case of RAW MPDUs, it indicates the length of the
  2642. entire MPDU (without FCS field)
  2643. <legal all>
  2644. */
  2645. #define RX_MSDU_LINK_MSDU_5_RX_MSDU_DESC_INFO_DETAILS_MSDU_LENGTH_OFFSET 0x00000078
  2646. #define RX_MSDU_LINK_MSDU_5_RX_MSDU_DESC_INFO_DETAILS_MSDU_LENGTH_LSB 3
  2647. #define RX_MSDU_LINK_MSDU_5_RX_MSDU_DESC_INFO_DETAILS_MSDU_LENGTH_MSB 16
  2648. #define RX_MSDU_LINK_MSDU_5_RX_MSDU_DESC_INFO_DETAILS_MSDU_LENGTH_MASK 0x0001fff8
  2649. /* Description MSDU_DROP
  2650. Parsed from RX_MSDU_END TLV . In the case MSDU spans over
  2651. multiple buffers, this field will be valid in the Last
  2652. buffer used by the MSDU
  2653. When set, REO shall drop this MSDU and not forward it to
  2654. any other ring...
  2655. <legal all>
  2656. */
  2657. #define RX_MSDU_LINK_MSDU_5_RX_MSDU_DESC_INFO_DETAILS_MSDU_DROP_OFFSET 0x00000078
  2658. #define RX_MSDU_LINK_MSDU_5_RX_MSDU_DESC_INFO_DETAILS_MSDU_DROP_LSB 17
  2659. #define RX_MSDU_LINK_MSDU_5_RX_MSDU_DESC_INFO_DETAILS_MSDU_DROP_MSB 17
  2660. #define RX_MSDU_LINK_MSDU_5_RX_MSDU_DESC_INFO_DETAILS_MSDU_DROP_MASK 0x00020000
  2661. /* Description SA_IS_VALID
  2662. Parsed from RX_MSDU_END TLV . In the case MSDU spans over
  2663. multiple buffers, this field will be valid in the Last
  2664. buffer used by the MSDU
  2665. Indicates that OLE found a valid SA entry for this MSDU
  2666. <legal all>
  2667. */
  2668. #define RX_MSDU_LINK_MSDU_5_RX_MSDU_DESC_INFO_DETAILS_SA_IS_VALID_OFFSET 0x00000078
  2669. #define RX_MSDU_LINK_MSDU_5_RX_MSDU_DESC_INFO_DETAILS_SA_IS_VALID_LSB 18
  2670. #define RX_MSDU_LINK_MSDU_5_RX_MSDU_DESC_INFO_DETAILS_SA_IS_VALID_MSB 18
  2671. #define RX_MSDU_LINK_MSDU_5_RX_MSDU_DESC_INFO_DETAILS_SA_IS_VALID_MASK 0x00040000
  2672. /* Description DA_IS_VALID
  2673. Parsed from RX_MSDU_END TLV . In the case MSDU spans over
  2674. multiple buffers, this field will be valid in the Last
  2675. buffer used by the MSDU
  2676. Indicates that OLE found a valid DA entry for this MSDU
  2677. <legal all>
  2678. */
  2679. #define RX_MSDU_LINK_MSDU_5_RX_MSDU_DESC_INFO_DETAILS_DA_IS_VALID_OFFSET 0x00000078
  2680. #define RX_MSDU_LINK_MSDU_5_RX_MSDU_DESC_INFO_DETAILS_DA_IS_VALID_LSB 19
  2681. #define RX_MSDU_LINK_MSDU_5_RX_MSDU_DESC_INFO_DETAILS_DA_IS_VALID_MSB 19
  2682. #define RX_MSDU_LINK_MSDU_5_RX_MSDU_DESC_INFO_DETAILS_DA_IS_VALID_MASK 0x00080000
  2683. /* Description DA_IS_MCBC
  2684. Field Only valid if "da_is_valid" is set
  2685. Indicates the DA address was a Multicast of Broadcast address
  2686. for this MSDU
  2687. <legal all>
  2688. */
  2689. #define RX_MSDU_LINK_MSDU_5_RX_MSDU_DESC_INFO_DETAILS_DA_IS_MCBC_OFFSET 0x00000078
  2690. #define RX_MSDU_LINK_MSDU_5_RX_MSDU_DESC_INFO_DETAILS_DA_IS_MCBC_LSB 20
  2691. #define RX_MSDU_LINK_MSDU_5_RX_MSDU_DESC_INFO_DETAILS_DA_IS_MCBC_MSB 20
  2692. #define RX_MSDU_LINK_MSDU_5_RX_MSDU_DESC_INFO_DETAILS_DA_IS_MCBC_MASK 0x00100000
  2693. /* Description L3_HEADER_PADDING_MSB
  2694. Passed on from 'RX_MSDU_END' TLV (only the MSB is reported
  2695. as the LSB is always zero)
  2696. Number of bytes padded to make sure that the L3 header will
  2697. always start of a Dword boundary
  2698. <legal all>
  2699. */
  2700. #define RX_MSDU_LINK_MSDU_5_RX_MSDU_DESC_INFO_DETAILS_L3_HEADER_PADDING_MSB_OFFSET 0x00000078
  2701. #define RX_MSDU_LINK_MSDU_5_RX_MSDU_DESC_INFO_DETAILS_L3_HEADER_PADDING_MSB_LSB 21
  2702. #define RX_MSDU_LINK_MSDU_5_RX_MSDU_DESC_INFO_DETAILS_L3_HEADER_PADDING_MSB_MSB 21
  2703. #define RX_MSDU_LINK_MSDU_5_RX_MSDU_DESC_INFO_DETAILS_L3_HEADER_PADDING_MSB_MASK 0x00200000
  2704. /* Description TCP_UDP_CHKSUM_FAIL
  2705. Passed on from 'RX_ATTENTION' TLV
  2706. Indicates that the computed checksum did not match the checksum
  2707. in the TCP/UDP header.
  2708. <legal all>
  2709. */
  2710. #define RX_MSDU_LINK_MSDU_5_RX_MSDU_DESC_INFO_DETAILS_TCP_UDP_CHKSUM_FAIL_OFFSET 0x00000078
  2711. #define RX_MSDU_LINK_MSDU_5_RX_MSDU_DESC_INFO_DETAILS_TCP_UDP_CHKSUM_FAIL_LSB 22
  2712. #define RX_MSDU_LINK_MSDU_5_RX_MSDU_DESC_INFO_DETAILS_TCP_UDP_CHKSUM_FAIL_MSB 22
  2713. #define RX_MSDU_LINK_MSDU_5_RX_MSDU_DESC_INFO_DETAILS_TCP_UDP_CHKSUM_FAIL_MASK 0x00400000
  2714. /* Description IP_CHKSUM_FAIL
  2715. Passed on from 'RX_ATTENTION' TLV
  2716. Indicates that the computed checksum did not match the checksum
  2717. in the IP header.
  2718. <legal all>
  2719. */
  2720. #define RX_MSDU_LINK_MSDU_5_RX_MSDU_DESC_INFO_DETAILS_IP_CHKSUM_FAIL_OFFSET 0x00000078
  2721. #define RX_MSDU_LINK_MSDU_5_RX_MSDU_DESC_INFO_DETAILS_IP_CHKSUM_FAIL_LSB 23
  2722. #define RX_MSDU_LINK_MSDU_5_RX_MSDU_DESC_INFO_DETAILS_IP_CHKSUM_FAIL_MSB 23
  2723. #define RX_MSDU_LINK_MSDU_5_RX_MSDU_DESC_INFO_DETAILS_IP_CHKSUM_FAIL_MASK 0x00800000
  2724. /* Description FR_DS
  2725. Passed on from 'RX_MPDU_INFO' structure in 'RX_MPDU_START'
  2726. TLV
  2727. Set if the 'from DS' bit is set in the frame control.
  2728. <legal all>
  2729. */
  2730. #define RX_MSDU_LINK_MSDU_5_RX_MSDU_DESC_INFO_DETAILS_FR_DS_OFFSET 0x00000078
  2731. #define RX_MSDU_LINK_MSDU_5_RX_MSDU_DESC_INFO_DETAILS_FR_DS_LSB 24
  2732. #define RX_MSDU_LINK_MSDU_5_RX_MSDU_DESC_INFO_DETAILS_FR_DS_MSB 24
  2733. #define RX_MSDU_LINK_MSDU_5_RX_MSDU_DESC_INFO_DETAILS_FR_DS_MASK 0x01000000
  2734. /* Description TO_DS
  2735. Passed on from 'RX_MPDU_INFO' structure in 'RX_MPDU_START'
  2736. TLV
  2737. Set if the 'to DS' bit is set in the frame control.
  2738. <legal all>
  2739. */
  2740. #define RX_MSDU_LINK_MSDU_5_RX_MSDU_DESC_INFO_DETAILS_TO_DS_OFFSET 0x00000078
  2741. #define RX_MSDU_LINK_MSDU_5_RX_MSDU_DESC_INFO_DETAILS_TO_DS_LSB 25
  2742. #define RX_MSDU_LINK_MSDU_5_RX_MSDU_DESC_INFO_DETAILS_TO_DS_MSB 25
  2743. #define RX_MSDU_LINK_MSDU_5_RX_MSDU_DESC_INFO_DETAILS_TO_DS_MASK 0x02000000
  2744. /* Description INTRA_BSS
  2745. This packet needs intra-BSS routing by SW as the 'vdev_id'
  2746. for the destination is the same as the 'vdev_id' (from 'RX_MPDU_PCU_START')
  2747. that this MSDU was got in.
  2748. <legal all>
  2749. */
  2750. #define RX_MSDU_LINK_MSDU_5_RX_MSDU_DESC_INFO_DETAILS_INTRA_BSS_OFFSET 0x00000078
  2751. #define RX_MSDU_LINK_MSDU_5_RX_MSDU_DESC_INFO_DETAILS_INTRA_BSS_LSB 26
  2752. #define RX_MSDU_LINK_MSDU_5_RX_MSDU_DESC_INFO_DETAILS_INTRA_BSS_MSB 26
  2753. #define RX_MSDU_LINK_MSDU_5_RX_MSDU_DESC_INFO_DETAILS_INTRA_BSS_MASK 0x04000000
  2754. /* Description DEST_CHIP_ID
  2755. If intra_bss is set, copied by RXOLE/RXDMA from 'ADDR_SEARCH_ENTRY'
  2756. to support intra-BSS routing with multi-chip multi-link
  2757. operation.
  2758. This indicates into which chip's TCL the packet should be
  2759. queued.
  2760. <legal all>
  2761. */
  2762. #define RX_MSDU_LINK_MSDU_5_RX_MSDU_DESC_INFO_DETAILS_DEST_CHIP_ID_OFFSET 0x00000078
  2763. #define RX_MSDU_LINK_MSDU_5_RX_MSDU_DESC_INFO_DETAILS_DEST_CHIP_ID_LSB 27
  2764. #define RX_MSDU_LINK_MSDU_5_RX_MSDU_DESC_INFO_DETAILS_DEST_CHIP_ID_MSB 28
  2765. #define RX_MSDU_LINK_MSDU_5_RX_MSDU_DESC_INFO_DETAILS_DEST_CHIP_ID_MASK 0x18000000
  2766. /* Description DECAP_FORMAT
  2767. Indicates the format after decapsulation:
  2768. <enum 0 RAW> No encapsulation
  2769. <enum 1 Native_WiFi>
  2770. <enum 2 Ethernet> Ethernet 2 (DIX) or 802.3 (uses SNAP/LLC)
  2771. <enum 3 802_3> Indicate Ethernet
  2772. <legal all>
  2773. */
  2774. #define RX_MSDU_LINK_MSDU_5_RX_MSDU_DESC_INFO_DETAILS_DECAP_FORMAT_OFFSET 0x00000078
  2775. #define RX_MSDU_LINK_MSDU_5_RX_MSDU_DESC_INFO_DETAILS_DECAP_FORMAT_LSB 29
  2776. #define RX_MSDU_LINK_MSDU_5_RX_MSDU_DESC_INFO_DETAILS_DECAP_FORMAT_MSB 30
  2777. #define RX_MSDU_LINK_MSDU_5_RX_MSDU_DESC_INFO_DETAILS_DECAP_FORMAT_MASK 0x60000000
  2778. /* Description DEST_CHIP_PMAC_ID
  2779. If intra_bss is set, copied by RXOLE/RXDMA from 'ADDR_SEARCH_ENTRY'
  2780. to support intra-BSS routing with multi-chip multi-link
  2781. operation.
  2782. This indicates into which link/'vdev' the packet should
  2783. be queued in TCL.
  2784. <legal all>
  2785. */
  2786. #define RX_MSDU_LINK_MSDU_5_RX_MSDU_DESC_INFO_DETAILS_DEST_CHIP_PMAC_ID_OFFSET 0x00000078
  2787. #define RX_MSDU_LINK_MSDU_5_RX_MSDU_DESC_INFO_DETAILS_DEST_CHIP_PMAC_ID_LSB 31
  2788. #define RX_MSDU_LINK_MSDU_5_RX_MSDU_DESC_INFO_DETAILS_DEST_CHIP_PMAC_ID_MSB 31
  2789. #define RX_MSDU_LINK_MSDU_5_RX_MSDU_DESC_INFO_DETAILS_DEST_CHIP_PMAC_ID_MASK 0x80000000
  2790. /* Description RX_MSDU_EXT_DESC_INFO_DETAILS
  2791. Consumer: REO/SW
  2792. Producer: RXDMA
  2793. Extended information related to the MSDU that is passed
  2794. on from RXDMA to REO but not part of the REO destination
  2795. ring. Some fields are passed on to PPE.
  2796. */
  2797. /* Description REO_DESTINATION_INDICATION
  2798. Parsed from RX_MSDU_END TLV . In the case MSDU spans over
  2799. multiple buffers, this field will be valid in the Last
  2800. buffer used by the MSDU
  2801. The ID of the REO exit ring where the MSDU frame shall push
  2802. after (MPDU level) reordering has finished.
  2803. <enum 0 reo_destination_sw0> Reo will push the frame into
  2804. the REO2SW0 ring
  2805. <enum 1 reo_destination_sw1> Reo will push the frame into
  2806. the REO2SW1 ring
  2807. <enum 2 reo_destination_sw2> Reo will push the frame into
  2808. the REO2SW2 ring
  2809. <enum 3 reo_destination_sw3> Reo will push the frame into
  2810. the REO2SW3 ring
  2811. <enum 4 reo_destination_sw4> Reo will push the frame into
  2812. the REO2SW4 ring
  2813. <enum 5 reo_destination_release> Reo will push the frame
  2814. into the REO_release ring
  2815. <enum 6 reo_destination_fw> Reo will push the frame into
  2816. the REO2FW ring
  2817. <enum 7 reo_destination_sw5> Reo will push the frame into
  2818. the REO2SW5 ring (REO remaps this in chips without REO2SW5
  2819. ring)
  2820. <enum 8 reo_destination_sw6> Reo will push the frame into
  2821. the REO2SW6 ring (REO remaps this in chips without REO2SW6
  2822. ring)
  2823. <enum 9 reo_destination_sw7> Reo will push the frame into
  2824. the REO2SW7 ring (REO remaps this in chips without REO2SW7
  2825. ring)
  2826. <enum 10 reo_destination_sw8> Reo will push the frame into
  2827. the REO2SW8 ring (REO remaps this in chips without REO2SW8
  2828. ring)
  2829. <enum 11 reo_destination_11> REO remaps this
  2830. <enum 12 reo_destination_12> REO remaps this <enum 13 reo_destination_13>
  2831. REO remaps this
  2832. <enum 14 reo_destination_14> REO remaps this
  2833. <enum 15 reo_destination_15> REO remaps this
  2834. <enum 16 reo_destination_16> REO remaps this
  2835. <enum 17 reo_destination_17> REO remaps this
  2836. <enum 18 reo_destination_18> REO remaps this
  2837. <enum 19 reo_destination_19> REO remaps this
  2838. <enum 20 reo_destination_20> REO remaps this
  2839. <enum 21 reo_destination_21> REO remaps this
  2840. <enum 22 reo_destination_22> REO remaps this
  2841. <enum 23 reo_destination_23> REO remaps this
  2842. <enum 24 reo_destination_24> REO remaps this
  2843. <enum 25 reo_destination_25> REO remaps this
  2844. <enum 26 reo_destination_26> REO remaps this
  2845. <enum 27 reo_destination_27> REO remaps this
  2846. <enum 28 reo_destination_28> REO remaps this
  2847. <enum 29 reo_destination_29> REO remaps this
  2848. <enum 30 reo_destination_30> REO remaps this
  2849. <enum 31 reo_destination_31> REO remaps this
  2850. <legal all>
  2851. */
  2852. #define RX_MSDU_LINK_MSDU_5_RX_MSDU_EXT_DESC_INFO_DETAILS_REO_DESTINATION_INDICATION_OFFSET 0x0000007c
  2853. #define RX_MSDU_LINK_MSDU_5_RX_MSDU_EXT_DESC_INFO_DETAILS_REO_DESTINATION_INDICATION_LSB 0
  2854. #define RX_MSDU_LINK_MSDU_5_RX_MSDU_EXT_DESC_INFO_DETAILS_REO_DESTINATION_INDICATION_MSB 4
  2855. #define RX_MSDU_LINK_MSDU_5_RX_MSDU_EXT_DESC_INFO_DETAILS_REO_DESTINATION_INDICATION_MASK 0x0000001f
  2856. /* Description SERVICE_CODE
  2857. Opaque service code between PPE and Wi-Fi
  2858. This field gets passed on by REO to PPE in the EDMA descriptor
  2859. ('REO_TO_PPE_RING').
  2860. <legal all>
  2861. */
  2862. #define RX_MSDU_LINK_MSDU_5_RX_MSDU_EXT_DESC_INFO_DETAILS_SERVICE_CODE_OFFSET 0x0000007c
  2863. #define RX_MSDU_LINK_MSDU_5_RX_MSDU_EXT_DESC_INFO_DETAILS_SERVICE_CODE_LSB 5
  2864. #define RX_MSDU_LINK_MSDU_5_RX_MSDU_EXT_DESC_INFO_DETAILS_SERVICE_CODE_MSB 13
  2865. #define RX_MSDU_LINK_MSDU_5_RX_MSDU_EXT_DESC_INFO_DETAILS_SERVICE_CODE_MASK 0x00003fe0
  2866. /* Description PRIORITY_VALID
  2867. This field gets passed on by REO to PPE in the EDMA descriptor
  2868. ('REO_TO_PPE_RING').
  2869. <legal all>
  2870. */
  2871. #define RX_MSDU_LINK_MSDU_5_RX_MSDU_EXT_DESC_INFO_DETAILS_PRIORITY_VALID_OFFSET 0x0000007c
  2872. #define RX_MSDU_LINK_MSDU_5_RX_MSDU_EXT_DESC_INFO_DETAILS_PRIORITY_VALID_LSB 14
  2873. #define RX_MSDU_LINK_MSDU_5_RX_MSDU_EXT_DESC_INFO_DETAILS_PRIORITY_VALID_MSB 14
  2874. #define RX_MSDU_LINK_MSDU_5_RX_MSDU_EXT_DESC_INFO_DETAILS_PRIORITY_VALID_MASK 0x00004000
  2875. /* Description DATA_OFFSET
  2876. The offset to Rx packet data within the buffer (including
  2877. Rx DMA offset programming and L3 header padding inserted
  2878. by Rx OLE).
  2879. This field gets passed on by REO to PPE in the EDMA descriptor
  2880. ('REO_TO_PPE_RING').
  2881. <legal all>
  2882. */
  2883. #define RX_MSDU_LINK_MSDU_5_RX_MSDU_EXT_DESC_INFO_DETAILS_DATA_OFFSET_OFFSET 0x0000007c
  2884. #define RX_MSDU_LINK_MSDU_5_RX_MSDU_EXT_DESC_INFO_DETAILS_DATA_OFFSET_LSB 15
  2885. #define RX_MSDU_LINK_MSDU_5_RX_MSDU_EXT_DESC_INFO_DETAILS_DATA_OFFSET_MSB 26
  2886. #define RX_MSDU_LINK_MSDU_5_RX_MSDU_EXT_DESC_INFO_DETAILS_DATA_OFFSET_MASK 0x07ff8000
  2887. /* Description SRC_LINK_ID
  2888. Consumer: SW
  2889. Producer: RXDMA
  2890. Set to the link ID of the PMAC that received the frame
  2891. <legal all>
  2892. */
  2893. #define RX_MSDU_LINK_MSDU_5_RX_MSDU_EXT_DESC_INFO_DETAILS_SRC_LINK_ID_OFFSET 0x0000007c
  2894. #define RX_MSDU_LINK_MSDU_5_RX_MSDU_EXT_DESC_INFO_DETAILS_SRC_LINK_ID_LSB 27
  2895. #define RX_MSDU_LINK_MSDU_5_RX_MSDU_EXT_DESC_INFO_DETAILS_SRC_LINK_ID_MSB 29
  2896. #define RX_MSDU_LINK_MSDU_5_RX_MSDU_EXT_DESC_INFO_DETAILS_SRC_LINK_ID_MASK 0x38000000
  2897. /* Description RESERVED_0A
  2898. <legal 0>
  2899. */
  2900. #define RX_MSDU_LINK_MSDU_5_RX_MSDU_EXT_DESC_INFO_DETAILS_RESERVED_0A_OFFSET 0x0000007c
  2901. #define RX_MSDU_LINK_MSDU_5_RX_MSDU_EXT_DESC_INFO_DETAILS_RESERVED_0A_LSB 30
  2902. #define RX_MSDU_LINK_MSDU_5_RX_MSDU_EXT_DESC_INFO_DETAILS_RESERVED_0A_MSB 31
  2903. #define RX_MSDU_LINK_MSDU_5_RX_MSDU_EXT_DESC_INFO_DETAILS_RESERVED_0A_MASK 0xc0000000
  2904. #endif // RX_MSDU_LINK