rx_msdu_link.h 150 KB

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