rx_msdu_link.h 149 KB

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