rx_msdu_link.h 129 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729173017311732173317341735173617371738173917401741174217431744174517461747174817491750175117521753175417551756175717581759176017611762176317641765176617671768176917701771177217731774177517761777177817791780178117821783178417851786178717881789179017911792179317941795179617971798179918001801180218031804180518061807180818091810181118121813181418151816181718181819182018211822182318241825182618271828182918301831183218331834183518361837183818391840184118421843184418451846184718481849185018511852185318541855185618571858185918601861186218631864186518661867186818691870187118721873187418751876187718781879188018811882188318841885188618871888188918901891189218931894189518961897189818991900190119021903190419051906190719081909191019111912191319141915191619171918191919201921192219231924192519261927192819291930193119321933193419351936193719381939194019411942194319441945194619471948194919501951195219531954195519561957195819591960196119621963196419651966196719681969197019711972197319741975197619771978197919801981198219831984198519861987198819891990199119921993199419951996199719981999200020012002200320042005200620072008200920102011201220132014201520162017201820192020202120222023202420252026202720282029203020312032203320342035203620372038203920402041204220432044204520462047204820492050205120522053205420552056205720582059206020612062206320642065206620672068206920702071207220732074207520762077207820792080208120822083208420852086208720882089209020912092209320942095209620972098209921002101210221032104210521062107210821092110211121122113211421152116211721182119212021212122212321242125212621272128212921302131213221332134213521362137213821392140214121422143214421452146214721482149215021512152215321542155215621572158215921602161216221632164216521662167216821692170217121722173217421752176217721782179218021812182218321842185218621872188218921902191219221932194219521962197219821992200220122022203220422052206220722082209221022112212221322142215221622172218221922202221222222232224222522262227222822292230223122322233223422352236223722382239224022412242224322442245224622472248224922502251225222532254225522562257225822592260226122622263226422652266226722682269227022712272227322742275227622772278227922802281228222832284228522862287228822892290229122922293229422952296229722982299230023012302230323042305230623072308230923102311231223132314231523162317231823192320232123222323232423252326232723282329233023312332233323342335233623372338233923402341234223432344234523462347234823492350235123522353235423552356235723582359236023612362236323642365236623672368236923702371237223732374237523762377237823792380238123822383238423852386238723882389239023912392239323942395239623972398239924002401240224032404240524062407240824092410241124122413241424152416241724182419242024212422242324242425242624272428242924302431243224332434243524362437243824392440244124422443244424452446244724482449245024512452245324542455245624572458245924602461246224632464246524662467246824692470247124722473247424752476247724782479248024812482248324842485248624872488248924902491249224932494249524962497249824992500250125022503250425052506250725082509251025112512251325142515251625172518251925202521252225232524252525262527252825292530253125322533253425352536253725382539254025412542254325442545254625472548254925502551255225532554255525562557255825592560256125622563256425652566256725682569257025712572257325742575257625772578257925802581258225832584258525862587258825892590259125922593259425952596259725982599260026012602260326042605260626072608260926102611261226132614261526162617261826192620262126222623262426252626262726282629263026312632263326342635263626372638263926402641264226432644264526462647264826492650265126522653265426552656265726582659266026612662266326642665266626672668266926702671267226732674267526762677267826792680268126822683268426852686268726882689269026912692269326942695269626972698269927002701270227032704270527062707270827092710271127122713271427152716271727182719272027212722272327242725272627272728272927302731273227332734273527362737273827392740274127422743274427452746274727482749275027512752275327542755275627572758275927602761276227632764276527662767276827692770277127722773277427752776277727782779278027812782278327842785278627872788278927902791279227932794279527962797279827992800280128022803280428052806280728082809281028112812281328142815281628172818281928202821282228232824282528262827282828292830283128322833283428352836283728382839284028412842284328442845284628472848284928502851285228532854285528562857285828592860286128622863286428652866286728682869287028712872287328742875287628772878287928802881288228832884288528862887288828892890289128922893289428952896289728982899290029012902290329042905290629072908290929102911291229132914291529162917291829192920292129222923292429252926292729282929293029312932293329342935293629372938293929402941294229432944294529462947294829492950295129522953295429552956295729582959296029612962296329642965296629672968296929702971297229732974297529762977297829792980298129822983298429852986298729882989299029912992299329942995299629972998299930003001300230033004300530063007300830093010301130123013301430153016301730183019302030213022302330243025302630273028302930303031303230333034303530363037303830393040304130423043304430453046304730483049305030513052305330543055305630573058305930603061306230633064306530663067306830693070307130723073307430753076307730783079308030813082308330843085308630873088308930903091309230933094309530963097309830993100310131023103310431053106310731083109311031113112311331143115311631173118311931203121312231233124312531263127312831293130313131323133313431353136313731383139314031413142314331443145314631473148314931503151315231533154315531563157315831593160316131623163316431653166316731683169317031713172317331743175317631773178317931803181318231833184318531863187318831893190319131923193319431953196319731983199320032013202320332043205320632073208320932103211321232133214321532163217321832193220322132223223322432253226322732283229323032313232323332343235323632373238323932403241324232433244324532463247324832493250325132523253325432553256325732583259326032613262326332643265326632673268326932703271327232733274327532763277327832793280328132823283328432853286328732883289329032913292329332943295329632973298329933003301330233033304330533063307330833093310331133123313331433153316331733183319332033213322332333243325332633273328332933303331333233333334333533363337333833393340334133423343334433453346334733483349335033513352335333543355335633573358335933603361336233633364336533663367336833693370337133723373337433753376337733783379338033813382338333843385338633873388338933903391339233933394339533963397339833993400340134023403340434053406340734083409341034113412341334143415341634173418341934203421342234233424342534263427342834293430343134323433343434353436343734383439344034413442344334443445344634473448344934503451345234533454345534563457345834593460346134623463346434653466346734683469347034713472347334743475347634773478347934803481348234833484348534863487348834893490349134923493349434953496349734983499350035013502350335043505350635073508350935103511351235133514351535163517351835193520352135223523352435253526352735283529353035313532353335343535353635373538353935403541354235433544354535463547354835493550355135523553355435553556355735583559356035613562356335643565356635673568356935703571357235733574357535763577357835793580358135823583358435853586358735883589359035913592359335943595359635973598359936003601360236033604360536063607360836093610361136123613361436153616361736183619362036213622362336243625362636273628362936303631363236333634363536363637363836393640364136423643364436453646364736483649365036513652365336543655365636573658365936603661366236633664366536663667366836693670367136723673367436753676367736783679368036813682368336843685368636873688368936903691369236933694369536963697369836993700370137023703370437053706370737083709371037113712371337143715371637173718371937203721372237233724372537263727372837293730373137323733373437353736373737383739374037413742374337443745374637473748374937503751375237533754375537563757375837593760376137623763376437653766376737683769377037713772377337743775377637773778377937803781378237833784378537863787378837893790379137923793379437953796379737983799380038013802380338043805380638073808380938103811381238133814381538163817381838193820382138223823382438253826382738283829383038313832383338343835383638373838383938403841384238433844384538463847384838493850385138523853385438553856385738583859386038613862386338643865386638673868386938703871387238733874387538763877387838793880388138823883388438853886388738883889389038913892389338943895389638973898389939003901390239033904390539063907390839093910391139123913391439153916391739183919392039213922392339243925392639273928392939303931393239333934393539363937393839393940394139423943394439453946394739483949395039513952395339543955395639573958395939603961396239633964396539663967396839693970397139723973397439753976397739783979398039813982398339843985398639873988398939903991399239933994399539963997399839994000400140024003400440054006400740084009401040114012401340144015401640174018401940204021402240234024402540264027402840294030403140324033403440354036403740384039404040414042404340444045404640474048404940504051405240534054405540564057405840594060406140624063406440654066406740684069407040714072407340744075407640774078407940804081408240834084408540864087408840894090409140924093409440954096409740984099410041014102410341044105410641074108410941104111411241134114411541164117411841194120412141224123412441254126412741284129413041314132413341344135413641374138413941404141414241434144414541464147414841494150415141524153415441554156415741584159416041614162416341644165416641674168416941704171417241734174417541764177417841794180418141824183418441854186418741884189419041914192419341944195419641974198419942004201420242034204420542064207420842094210421142124213421442154216421742184219422042214222422342244225
  1. /*
  2. * Copyright (c) 2020, The Linux Foundation. All rights reserved.
  3. *
  4. * Permission to use, copy, modify, and/or distribute this software for any
  5. * purpose with or without fee is hereby granted, provided that the above
  6. * copyright notice and this permission notice appear in all copies.
  7. *
  8. * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
  9. * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
  10. * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
  11. * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
  12. * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
  13. * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
  14. * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
  15. */
  16. #ifndef _RX_MSDU_LINK_H_
  17. #define _RX_MSDU_LINK_H_
  18. #if !defined(__ASSEMBLER__)
  19. #endif
  20. #include "uniform_descriptor_header.h"
  21. #include "buffer_addr_info.h"
  22. #include "rx_msdu_details.h"
  23. // ################ START SUMMARY #################
  24. //
  25. // Dword Fields
  26. // 0 struct uniform_descriptor_header descriptor_header;
  27. // 1-2 struct buffer_addr_info next_msdu_link_desc_addr_info;
  28. // 3 receive_queue_number[15:0], first_rx_msdu_link_struct[16], reserved_3a[31:17]
  29. // 4 pn_31_0[31:0]
  30. // 5 pn_63_32[31:0]
  31. // 6 pn_95_64[31:0]
  32. // 7 pn_127_96[31:0]
  33. // 8-11 struct rx_msdu_details msdu_0;
  34. // 12-15 struct rx_msdu_details msdu_1;
  35. // 16-19 struct rx_msdu_details msdu_2;
  36. // 20-23 struct rx_msdu_details msdu_3;
  37. // 24-27 struct rx_msdu_details msdu_4;
  38. // 28-31 struct rx_msdu_details msdu_5;
  39. //
  40. // ################ END SUMMARY #################
  41. #define NUM_OF_DWORDS_RX_MSDU_LINK 32
  42. struct rx_msdu_link {
  43. struct uniform_descriptor_header descriptor_header;
  44. struct buffer_addr_info next_msdu_link_desc_addr_info;
  45. uint32_t receive_queue_number : 16, //[15:0]
  46. first_rx_msdu_link_struct : 1, //[16]
  47. reserved_3a : 15; //[31:17]
  48. uint32_t pn_31_0 : 32; //[31:0]
  49. uint32_t pn_63_32 : 32; //[31:0]
  50. uint32_t pn_95_64 : 32; //[31:0]
  51. uint32_t pn_127_96 : 32; //[31:0]
  52. struct rx_msdu_details msdu_0;
  53. struct rx_msdu_details msdu_1;
  54. struct rx_msdu_details msdu_2;
  55. struct rx_msdu_details msdu_3;
  56. struct rx_msdu_details msdu_4;
  57. struct rx_msdu_details msdu_5;
  58. };
  59. /*
  60. struct uniform_descriptor_header descriptor_header
  61. Details about which module owns this struct.
  62. Note that sub field Buffer_type shall be set to
  63. Receive_MSDU_Link_descriptor
  64. struct buffer_addr_info next_msdu_link_desc_addr_info
  65. Details of the physical address of the next MSDU link
  66. descriptor that contains info about additional MSDUs that
  67. are part of this MPDU.
  68. receive_queue_number
  69. Indicates the Receive queue to which this MPDU
  70. descriptor belongs
  71. Used for tracking, finding bugs and debugging.
  72. <legal all>
  73. first_rx_msdu_link_struct
  74. When set, this RX_MSDU_link descriptor is the first one
  75. in the MSDU link list. Field MSDU_0 points to the very first
  76. MSDU buffer descriptor in the MPDU
  77. <legal all>
  78. reserved_3a
  79. <legal 0>
  80. pn_31_0
  81. 31-0 bits of the 256-bit packet number bitmap.
  82. <legal all>
  83. pn_63_32
  84. 63-32 bits of the 256-bit packet number bitmap.
  85. <legal all>
  86. pn_95_64
  87. 95-64 bits of the 256-bit packet number bitmap.
  88. <legal all>
  89. pn_127_96
  90. 127-96 bits of the 256-bit packet number bitmap.
  91. <legal all>
  92. struct rx_msdu_details msdu_0
  93. When First_RX_MSDU_link_struct is set, this MSDU is the
  94. first in the MPDU
  95. When First_RX_MSDU_link_struct is NOT set, this MSDU
  96. follows the last MSDU in the previous RX_MSDU_link data
  97. structure
  98. struct rx_msdu_details msdu_1
  99. Details of next MSDU in this (MSDU flow) linked list
  100. struct rx_msdu_details msdu_2
  101. Details of next MSDU in this (MSDU flow) linked list
  102. struct rx_msdu_details msdu_3
  103. Details of next MSDU in this (MSDU flow) linked list
  104. struct rx_msdu_details msdu_4
  105. Details of next MSDU in this (MSDU flow) linked list
  106. struct rx_msdu_details msdu_5
  107. Details of next MSDU in this (MSDU flow) linked list
  108. */
  109. /* EXTERNAL REFERENCE : struct uniform_descriptor_header descriptor_header */
  110. /* Description RX_MSDU_LINK_0_DESCRIPTOR_HEADER_OWNER
  111. Consumer: In DEBUG mode: WBM, TQM, TXDMA, RXDMA, REO
  112. Producer: In DEBUG mode: WBM, TQM, TXDMA, RXDMA, REO
  113. The owner of this data structure:
  114. <enum 0 WBM_owned> Buffer Manager currently owns this
  115. data structure.
  116. <enum 1 SW_OR_FW_owned> Software of FW currently owns
  117. this data structure.
  118. <enum 2 TQM_owned> Transmit Queue Manager currently owns
  119. this data structure.
  120. <enum 3 RXDMA_owned> Receive DMA currently owns this
  121. data structure.
  122. <enum 4 REO_owned> Reorder currently owns this data
  123. structure.
  124. <enum 5 SWITCH_owned> SWITCH currently owns this data
  125. structure.
  126. <legal 0-5>
  127. */
  128. #define RX_MSDU_LINK_0_DESCRIPTOR_HEADER_OWNER_OFFSET 0x00000000
  129. #define RX_MSDU_LINK_0_DESCRIPTOR_HEADER_OWNER_LSB 0
  130. #define RX_MSDU_LINK_0_DESCRIPTOR_HEADER_OWNER_MASK 0x0000000f
  131. /* Description RX_MSDU_LINK_0_DESCRIPTOR_HEADER_BUFFER_TYPE
  132. Consumer: In DEBUG mode: WBM, TQM, TXDMA, RXDMA, REO
  133. Producer: In DEBUG mode: WBM, TQM, TXDMA, RXDMA, REO
  134. Field describing what contents format is of this
  135. descriptor
  136. <enum 0 Transmit_MSDU_Link_descriptor >
  137. <enum 1 Transmit_MPDU_Link_descriptor >
  138. <enum 2 Transmit_MPDU_Queue_head_descriptor>
  139. <enum 3 Transmit_MPDU_Queue_ext_descriptor>
  140. <enum 4 Transmit_flow_descriptor>
  141. <enum 5 Transmit_buffer > NOT TO BE USED:
  142. <enum 6 Receive_MSDU_Link_descriptor >
  143. <enum 7 Receive_MPDU_Link_descriptor >
  144. <enum 8 Receive_REO_queue_descriptor >
  145. <enum 9 Receive_REO_queue_ext_descriptor >
  146. <enum 10 Receive_buffer >
  147. <enum 11 Idle_link_list_entry>
  148. <legal 0-11>
  149. */
  150. #define RX_MSDU_LINK_0_DESCRIPTOR_HEADER_BUFFER_TYPE_OFFSET 0x00000000
  151. #define RX_MSDU_LINK_0_DESCRIPTOR_HEADER_BUFFER_TYPE_LSB 4
  152. #define RX_MSDU_LINK_0_DESCRIPTOR_HEADER_BUFFER_TYPE_MASK 0x000000f0
  153. /* Description RX_MSDU_LINK_0_DESCRIPTOR_HEADER_RESERVED_0A
  154. <legal 0>
  155. */
  156. #define RX_MSDU_LINK_0_DESCRIPTOR_HEADER_RESERVED_0A_OFFSET 0x00000000
  157. #define RX_MSDU_LINK_0_DESCRIPTOR_HEADER_RESERVED_0A_LSB 8
  158. #define RX_MSDU_LINK_0_DESCRIPTOR_HEADER_RESERVED_0A_MASK 0xffffff00
  159. /* EXTERNAL REFERENCE : struct buffer_addr_info next_msdu_link_desc_addr_info */
  160. /* Description RX_MSDU_LINK_1_NEXT_MSDU_LINK_DESC_ADDR_INFO_BUFFER_ADDR_31_0
  161. Address (lower 32 bits) of the MSDU buffer OR
  162. MSDU_EXTENSION descriptor OR Link Descriptor
  163. In case of 'NULL' pointer, this field is set to 0
  164. <legal all>
  165. */
  166. #define RX_MSDU_LINK_1_NEXT_MSDU_LINK_DESC_ADDR_INFO_BUFFER_ADDR_31_0_OFFSET 0x00000004
  167. #define RX_MSDU_LINK_1_NEXT_MSDU_LINK_DESC_ADDR_INFO_BUFFER_ADDR_31_0_LSB 0
  168. #define RX_MSDU_LINK_1_NEXT_MSDU_LINK_DESC_ADDR_INFO_BUFFER_ADDR_31_0_MASK 0xffffffff
  169. /* Description RX_MSDU_LINK_2_NEXT_MSDU_LINK_DESC_ADDR_INFO_BUFFER_ADDR_39_32
  170. Address (upper 8 bits) of the MSDU buffer OR
  171. MSDU_EXTENSION descriptor OR Link Descriptor
  172. In case of 'NULL' pointer, this field is set to 0
  173. <legal all>
  174. */
  175. #define RX_MSDU_LINK_2_NEXT_MSDU_LINK_DESC_ADDR_INFO_BUFFER_ADDR_39_32_OFFSET 0x00000008
  176. #define RX_MSDU_LINK_2_NEXT_MSDU_LINK_DESC_ADDR_INFO_BUFFER_ADDR_39_32_LSB 0
  177. #define RX_MSDU_LINK_2_NEXT_MSDU_LINK_DESC_ADDR_INFO_BUFFER_ADDR_39_32_MASK 0x000000ff
  178. /* Description RX_MSDU_LINK_2_NEXT_MSDU_LINK_DESC_ADDR_INFO_RETURN_BUFFER_MANAGER
  179. Consumer: WBM
  180. Producer: SW/FW
  181. In case of 'NULL' pointer, this field is set to 0
  182. Indicates to which buffer manager the buffer OR
  183. MSDU_EXTENSION descriptor OR link descriptor that is being
  184. pointed to shall be returned after the frame has been
  185. processed. It is used by WBM for routing purposes.
  186. <enum 0 WBM_IDLE_BUF_LIST> This buffer shall be returned
  187. to the WMB buffer idle list
  188. <enum 1 WBM_IDLE_DESC_LIST> This buffer shall be
  189. returned to the WMB idle link descriptor idle list
  190. <enum 2 FW_BM> This buffer shall be returned to the FW
  191. <enum 3 SW0_BM> This buffer shall be returned to the SW,
  192. ring 0
  193. <enum 4 SW1_BM> This buffer shall be returned to the SW,
  194. ring 1
  195. <enum 5 SW2_BM> This buffer shall be returned to the SW,
  196. ring 2
  197. <enum 6 SW3_BM> This buffer shall be returned to the SW,
  198. ring 3
  199. <enum 7 SW4_BM> This buffer shall be returned to the SW,
  200. ring 4
  201. <legal all>
  202. */
  203. #define RX_MSDU_LINK_2_NEXT_MSDU_LINK_DESC_ADDR_INFO_RETURN_BUFFER_MANAGER_OFFSET 0x00000008
  204. #define RX_MSDU_LINK_2_NEXT_MSDU_LINK_DESC_ADDR_INFO_RETURN_BUFFER_MANAGER_LSB 8
  205. #define RX_MSDU_LINK_2_NEXT_MSDU_LINK_DESC_ADDR_INFO_RETURN_BUFFER_MANAGER_MASK 0x00000700
  206. /* Description RX_MSDU_LINK_2_NEXT_MSDU_LINK_DESC_ADDR_INFO_SW_BUFFER_COOKIE
  207. Cookie field exclusively used by SW.
  208. In case of 'NULL' pointer, this field is set to 0
  209. HW ignores the contents, accept that it passes the
  210. programmed value on to other descriptors together with the
  211. physical address
  212. Field can be used by SW to for example associate the
  213. buffers physical address with the virtual address
  214. The bit definitions as used by SW are within SW HLD
  215. specification
  216. NOTE1:
  217. The three most significant bits can have a special
  218. meaning in case this struct is embedded in a TX_MPDU_DETAILS
  219. STRUCT, and field transmit_bw_restriction is set
  220. In case of NON punctured transmission:
  221. Sw_buffer_cookie[20:19] = 2'b00: 20 MHz TX only
  222. Sw_buffer_cookie[20:19] = 2'b01: 40 MHz TX only
  223. Sw_buffer_cookie[20:19] = 2'b10: 80 MHz TX only
  224. Sw_buffer_cookie[20:19] = 2'b11: 160 MHz TX only
  225. In case of punctured transmission:
  226. Sw_buffer_cookie[20:18] = 3'b000: pattern 0 only
  227. Sw_buffer_cookie[20:18] = 3'b001: pattern 1 only
  228. Sw_buffer_cookie[20:18] = 3'b010: pattern 2 only
  229. Sw_buffer_cookie[20:18] = 3'b011: pattern 3 only
  230. Sw_buffer_cookie[20:18] = 3'b100: pattern 4 only
  231. Sw_buffer_cookie[20:18] = 3'b101: pattern 5 only
  232. Sw_buffer_cookie[20:18] = 3'b110: pattern 6 only
  233. Sw_buffer_cookie[20:18] = 3'b111: pattern 7 only
  234. Note: a punctured transmission is indicated by the
  235. presence of TLV TX_PUNCTURE_SETUP embedded in the scheduler
  236. TLV
  237. NOTE 2:The five most significant bits can have a special
  238. meaning in case this struct is embedded in an
  239. RX_MSDU_DETAILS STRUCT, and Maple/Spruce Rx DMA is
  240. configured for passing on the additional info
  241. from 'RX_MPDU_INFO' structure in 'RX_MPDU_START' TLV
  242. (FR56821). This is not supported in HastingsPrime, Pine or
  243. Moselle.
  244. Sw_buffer_cookie[20:17]: Tid: The TID field in the QoS
  245. control field
  246. Sw_buffer_cookie[16]: Mpdu_qos_control_valid: This field
  247. indicates MPDUs with a QoS control field.
  248. <legal all>
  249. */
  250. #define RX_MSDU_LINK_2_NEXT_MSDU_LINK_DESC_ADDR_INFO_SW_BUFFER_COOKIE_OFFSET 0x00000008
  251. #define RX_MSDU_LINK_2_NEXT_MSDU_LINK_DESC_ADDR_INFO_SW_BUFFER_COOKIE_LSB 11
  252. #define RX_MSDU_LINK_2_NEXT_MSDU_LINK_DESC_ADDR_INFO_SW_BUFFER_COOKIE_MASK 0xfffff800
  253. /* Description RX_MSDU_LINK_3_RECEIVE_QUEUE_NUMBER
  254. Indicates the Receive queue to which this MPDU
  255. descriptor belongs
  256. Used for tracking, finding bugs and debugging.
  257. <legal all>
  258. */
  259. #define RX_MSDU_LINK_3_RECEIVE_QUEUE_NUMBER_OFFSET 0x0000000c
  260. #define RX_MSDU_LINK_3_RECEIVE_QUEUE_NUMBER_LSB 0
  261. #define RX_MSDU_LINK_3_RECEIVE_QUEUE_NUMBER_MASK 0x0000ffff
  262. /* Description RX_MSDU_LINK_3_FIRST_RX_MSDU_LINK_STRUCT
  263. When set, this RX_MSDU_link descriptor is the first one
  264. in the MSDU link list. Field MSDU_0 points to the very first
  265. MSDU buffer descriptor in the MPDU
  266. <legal all>
  267. */
  268. #define RX_MSDU_LINK_3_FIRST_RX_MSDU_LINK_STRUCT_OFFSET 0x0000000c
  269. #define RX_MSDU_LINK_3_FIRST_RX_MSDU_LINK_STRUCT_LSB 16
  270. #define RX_MSDU_LINK_3_FIRST_RX_MSDU_LINK_STRUCT_MASK 0x00010000
  271. /* Description RX_MSDU_LINK_3_RESERVED_3A
  272. <legal 0>
  273. */
  274. #define RX_MSDU_LINK_3_RESERVED_3A_OFFSET 0x0000000c
  275. #define RX_MSDU_LINK_3_RESERVED_3A_LSB 17
  276. #define RX_MSDU_LINK_3_RESERVED_3A_MASK 0xfffe0000
  277. /* Description RX_MSDU_LINK_4_PN_31_0
  278. 31-0 bits of the 256-bit packet number bitmap.
  279. <legal all>
  280. */
  281. #define RX_MSDU_LINK_4_PN_31_0_OFFSET 0x00000010
  282. #define RX_MSDU_LINK_4_PN_31_0_LSB 0
  283. #define RX_MSDU_LINK_4_PN_31_0_MASK 0xffffffff
  284. /* Description RX_MSDU_LINK_5_PN_63_32
  285. 63-32 bits of the 256-bit packet number bitmap.
  286. <legal all>
  287. */
  288. #define RX_MSDU_LINK_5_PN_63_32_OFFSET 0x00000014
  289. #define RX_MSDU_LINK_5_PN_63_32_LSB 0
  290. #define RX_MSDU_LINK_5_PN_63_32_MASK 0xffffffff
  291. /* Description RX_MSDU_LINK_6_PN_95_64
  292. 95-64 bits of the 256-bit packet number bitmap.
  293. <legal all>
  294. */
  295. #define RX_MSDU_LINK_6_PN_95_64_OFFSET 0x00000018
  296. #define RX_MSDU_LINK_6_PN_95_64_LSB 0
  297. #define RX_MSDU_LINK_6_PN_95_64_MASK 0xffffffff
  298. /* Description RX_MSDU_LINK_7_PN_127_96
  299. 127-96 bits of the 256-bit packet number bitmap.
  300. <legal all>
  301. */
  302. #define RX_MSDU_LINK_7_PN_127_96_OFFSET 0x0000001c
  303. #define RX_MSDU_LINK_7_PN_127_96_LSB 0
  304. #define RX_MSDU_LINK_7_PN_127_96_MASK 0xffffffff
  305. /* EXTERNAL REFERENCE : struct rx_msdu_details msdu_0 */
  306. /* EXTERNAL REFERENCE : struct buffer_addr_info buffer_addr_info_details */
  307. /* Description RX_MSDU_LINK_8_MSDU_0_BUFFER_ADDR_INFO_DETAILS_BUFFER_ADDR_31_0
  308. Address (lower 32 bits) of the MSDU buffer OR
  309. MSDU_EXTENSION descriptor OR Link Descriptor
  310. In case of 'NULL' pointer, this field is set to 0
  311. <legal all>
  312. */
  313. #define RX_MSDU_LINK_8_MSDU_0_BUFFER_ADDR_INFO_DETAILS_BUFFER_ADDR_31_0_OFFSET 0x00000020
  314. #define RX_MSDU_LINK_8_MSDU_0_BUFFER_ADDR_INFO_DETAILS_BUFFER_ADDR_31_0_LSB 0
  315. #define RX_MSDU_LINK_8_MSDU_0_BUFFER_ADDR_INFO_DETAILS_BUFFER_ADDR_31_0_MASK 0xffffffff
  316. /* Description RX_MSDU_LINK_9_MSDU_0_BUFFER_ADDR_INFO_DETAILS_BUFFER_ADDR_39_32
  317. Address (upper 8 bits) of the MSDU buffer OR
  318. MSDU_EXTENSION descriptor OR Link Descriptor
  319. In case of 'NULL' pointer, this field is set to 0
  320. <legal all>
  321. */
  322. #define RX_MSDU_LINK_9_MSDU_0_BUFFER_ADDR_INFO_DETAILS_BUFFER_ADDR_39_32_OFFSET 0x00000024
  323. #define RX_MSDU_LINK_9_MSDU_0_BUFFER_ADDR_INFO_DETAILS_BUFFER_ADDR_39_32_LSB 0
  324. #define RX_MSDU_LINK_9_MSDU_0_BUFFER_ADDR_INFO_DETAILS_BUFFER_ADDR_39_32_MASK 0x000000ff
  325. /* Description RX_MSDU_LINK_9_MSDU_0_BUFFER_ADDR_INFO_DETAILS_RETURN_BUFFER_MANAGER
  326. Consumer: WBM
  327. Producer: SW/FW
  328. In case of 'NULL' pointer, this field is set to 0
  329. Indicates to which buffer manager the buffer OR
  330. MSDU_EXTENSION descriptor OR link descriptor that is being
  331. pointed to shall be returned after the frame has been
  332. processed. It is used by WBM for routing purposes.
  333. <enum 0 WBM_IDLE_BUF_LIST> This buffer shall be returned
  334. to the WMB buffer idle list
  335. <enum 1 WBM_IDLE_DESC_LIST> This buffer shall be
  336. returned to the WMB idle link descriptor idle list
  337. <enum 2 FW_BM> This buffer shall be returned to the FW
  338. <enum 3 SW0_BM> This buffer shall be returned to the SW,
  339. ring 0
  340. <enum 4 SW1_BM> This buffer shall be returned to the SW,
  341. ring 1
  342. <enum 5 SW2_BM> This buffer shall be returned to the SW,
  343. ring 2
  344. <enum 6 SW3_BM> This buffer shall be returned to the SW,
  345. ring 3
  346. <enum 7 SW4_BM> This buffer shall be returned to the SW,
  347. ring 4
  348. <legal all>
  349. */
  350. #define RX_MSDU_LINK_9_MSDU_0_BUFFER_ADDR_INFO_DETAILS_RETURN_BUFFER_MANAGER_OFFSET 0x00000024
  351. #define RX_MSDU_LINK_9_MSDU_0_BUFFER_ADDR_INFO_DETAILS_RETURN_BUFFER_MANAGER_LSB 8
  352. #define RX_MSDU_LINK_9_MSDU_0_BUFFER_ADDR_INFO_DETAILS_RETURN_BUFFER_MANAGER_MASK 0x00000700
  353. /* Description RX_MSDU_LINK_9_MSDU_0_BUFFER_ADDR_INFO_DETAILS_SW_BUFFER_COOKIE
  354. Cookie field exclusively used by SW.
  355. In case of 'NULL' pointer, this field is set to 0
  356. HW ignores the contents, accept that it passes the
  357. programmed value on to other descriptors together with the
  358. physical address
  359. Field can be used by SW to for example associate the
  360. buffers physical address with the virtual address
  361. The bit definitions as used by SW are within SW HLD
  362. specification
  363. NOTE1:
  364. The three most significant bits can have a special
  365. meaning in case this struct is embedded in a TX_MPDU_DETAILS
  366. STRUCT, and field transmit_bw_restriction is set
  367. In case of NON punctured transmission:
  368. Sw_buffer_cookie[20:19] = 2'b00: 20 MHz TX only
  369. Sw_buffer_cookie[20:19] = 2'b01: 40 MHz TX only
  370. Sw_buffer_cookie[20:19] = 2'b10: 80 MHz TX only
  371. Sw_buffer_cookie[20:19] = 2'b11: 160 MHz TX only
  372. In case of punctured transmission:
  373. Sw_buffer_cookie[20:18] = 3'b000: pattern 0 only
  374. Sw_buffer_cookie[20:18] = 3'b001: pattern 1 only
  375. Sw_buffer_cookie[20:18] = 3'b010: pattern 2 only
  376. Sw_buffer_cookie[20:18] = 3'b011: pattern 3 only
  377. Sw_buffer_cookie[20:18] = 3'b100: pattern 4 only
  378. Sw_buffer_cookie[20:18] = 3'b101: pattern 5 only
  379. Sw_buffer_cookie[20:18] = 3'b110: pattern 6 only
  380. Sw_buffer_cookie[20:18] = 3'b111: pattern 7 only
  381. Note: a punctured transmission is indicated by the
  382. presence of TLV TX_PUNCTURE_SETUP embedded in the scheduler
  383. TLV
  384. NOTE 2:The five most significant bits can have a special
  385. meaning in case this struct is embedded in an
  386. RX_MSDU_DETAILS STRUCT, and Maple/Spruce Rx DMA is
  387. configured for passing on the additional info
  388. from 'RX_MPDU_INFO' structure in 'RX_MPDU_START' TLV
  389. (FR56821). This is not supported in HastingsPrime, Pine or
  390. Moselle.
  391. Sw_buffer_cookie[20:17]: Tid: The TID field in the QoS
  392. control field
  393. Sw_buffer_cookie[16]: Mpdu_qos_control_valid: This field
  394. indicates MPDUs with a QoS control field.
  395. <legal all>
  396. */
  397. #define RX_MSDU_LINK_9_MSDU_0_BUFFER_ADDR_INFO_DETAILS_SW_BUFFER_COOKIE_OFFSET 0x00000024
  398. #define RX_MSDU_LINK_9_MSDU_0_BUFFER_ADDR_INFO_DETAILS_SW_BUFFER_COOKIE_LSB 11
  399. #define RX_MSDU_LINK_9_MSDU_0_BUFFER_ADDR_INFO_DETAILS_SW_BUFFER_COOKIE_MASK 0xfffff800
  400. /* EXTERNAL REFERENCE : struct rx_msdu_desc_info rx_msdu_desc_info_details */
  401. /* Description RX_MSDU_LINK_10_MSDU_0_RX_MSDU_DESC_INFO_DETAILS_FIRST_MSDU_IN_MPDU_FLAG
  402. Parsed from RX_MSDU_END TLV . In the case MSDU spans
  403. over multiple buffers, this field will be valid in the Last
  404. buffer used by the MSDU
  405. <enum 0 Not_first_msdu> This is not the first MSDU in
  406. the MPDU.
  407. <enum 1 first_msdu> This MSDU is the first one in the
  408. MPDU.
  409. <legal all>
  410. */
  411. #define RX_MSDU_LINK_10_MSDU_0_RX_MSDU_DESC_INFO_DETAILS_FIRST_MSDU_IN_MPDU_FLAG_OFFSET 0x00000028
  412. #define RX_MSDU_LINK_10_MSDU_0_RX_MSDU_DESC_INFO_DETAILS_FIRST_MSDU_IN_MPDU_FLAG_LSB 0
  413. #define RX_MSDU_LINK_10_MSDU_0_RX_MSDU_DESC_INFO_DETAILS_FIRST_MSDU_IN_MPDU_FLAG_MASK 0x00000001
  414. /* Description RX_MSDU_LINK_10_MSDU_0_RX_MSDU_DESC_INFO_DETAILS_LAST_MSDU_IN_MPDU_FLAG
  415. Consumer: WBM/REO/SW/FW
  416. Producer: RXDMA
  417. Parsed from RX_MSDU_END TLV . In the case MSDU spans
  418. over multiple buffers, this field will be valid in the Last
  419. buffer used by the MSDU
  420. <enum 0 Not_last_msdu> There are more MSDUs linked to
  421. this MSDU that belongs to this MPDU
  422. <enum 1 Last_msdu> this MSDU is the last one in the
  423. MPDU. This setting is only allowed in combination with
  424. 'Msdu_continuation' set to 0. This implies that when an msdu
  425. is spread out over multiple buffers and thus
  426. msdu_continuation is set, only for the very last buffer of
  427. the msdu, can the 'last_msdu_in_mpdu_flag' be set.
  428. When both first_msdu_in_mpdu_flag and
  429. last_msdu_in_mpdu_flag are set, the MPDU that this MSDU
  430. belongs to only contains a single MSDU.
  431. <legal all>
  432. */
  433. #define RX_MSDU_LINK_10_MSDU_0_RX_MSDU_DESC_INFO_DETAILS_LAST_MSDU_IN_MPDU_FLAG_OFFSET 0x00000028
  434. #define RX_MSDU_LINK_10_MSDU_0_RX_MSDU_DESC_INFO_DETAILS_LAST_MSDU_IN_MPDU_FLAG_LSB 1
  435. #define RX_MSDU_LINK_10_MSDU_0_RX_MSDU_DESC_INFO_DETAILS_LAST_MSDU_IN_MPDU_FLAG_MASK 0x00000002
  436. /* Description RX_MSDU_LINK_10_MSDU_0_RX_MSDU_DESC_INFO_DETAILS_MSDU_CONTINUATION
  437. When set, this MSDU buffer was not able to hold the
  438. entire MSDU. The next buffer will therefor contain
  439. additional information related to this MSDU.
  440. <legal all>
  441. */
  442. #define RX_MSDU_LINK_10_MSDU_0_RX_MSDU_DESC_INFO_DETAILS_MSDU_CONTINUATION_OFFSET 0x00000028
  443. #define RX_MSDU_LINK_10_MSDU_0_RX_MSDU_DESC_INFO_DETAILS_MSDU_CONTINUATION_LSB 2
  444. #define RX_MSDU_LINK_10_MSDU_0_RX_MSDU_DESC_INFO_DETAILS_MSDU_CONTINUATION_MASK 0x00000004
  445. /* Description RX_MSDU_LINK_10_MSDU_0_RX_MSDU_DESC_INFO_DETAILS_MSDU_LENGTH
  446. Parsed from RX_MSDU_START TLV . In the case MSDU spans
  447. over multiple buffers, this field will be valid in the First
  448. buffer used by MSDU.
  449. Full MSDU length in bytes after decapsulation.
  450. This field is still valid for MPDU frames without
  451. A-MSDU. It still represents MSDU length after decapsulation
  452. Or in case of RAW MPDUs, it indicates the length of the
  453. entire MPDU (without FCS field)
  454. <legal all>
  455. */
  456. #define RX_MSDU_LINK_10_MSDU_0_RX_MSDU_DESC_INFO_DETAILS_MSDU_LENGTH_OFFSET 0x00000028
  457. #define RX_MSDU_LINK_10_MSDU_0_RX_MSDU_DESC_INFO_DETAILS_MSDU_LENGTH_LSB 3
  458. #define RX_MSDU_LINK_10_MSDU_0_RX_MSDU_DESC_INFO_DETAILS_MSDU_LENGTH_MASK 0x0001fff8
  459. /* Description RX_MSDU_LINK_10_MSDU_0_RX_MSDU_DESC_INFO_DETAILS_REO_DESTINATION_INDICATION
  460. Parsed from RX_MSDU_END TLV . In the case MSDU spans
  461. over multiple buffers, this field will be valid in the Last
  462. buffer used by the MSDU
  463. The ID of the REO exit ring where the MSDU frame shall
  464. push after (MPDU level) reordering has finished.
  465. <enum 0 reo_destination_tcl> Reo will push the frame
  466. into the REO2TCL ring
  467. <enum 1 reo_destination_sw1> Reo will push the frame
  468. into the REO2SW1 ring
  469. <enum 2 reo_destination_sw2> Reo will push the frame
  470. into the REO2SW2 ring
  471. <enum 3 reo_destination_sw3> Reo will push the frame
  472. into the REO2SW3 ring
  473. <enum 4 reo_destination_sw4> Reo will push the frame
  474. into the REO2SW4 ring
  475. <enum 5 reo_destination_release> Reo will push the frame
  476. into the REO_release ring
  477. <enum 6 reo_destination_fw> Reo will push the frame into
  478. the REO2FW ring
  479. <enum 7 reo_destination_sw5> Reo will push the frame
  480. into the REO2SW5 ring (REO remaps this in chips without
  481. REO2SW5 ring, e.g. Pine)
  482. <enum 8 reo_destination_sw6> Reo will push the frame
  483. into the REO2SW6 ring (REO remaps this in chips without
  484. REO2SW6 ring, e.g. Pine)
  485. <enum 9 reo_destination_9> REO remaps this <enum 10
  486. reo_destination_10> REO remaps this
  487. <enum 11 reo_destination_11> REO remaps this
  488. <enum 12 reo_destination_12> REO remaps this <enum 13
  489. reo_destination_13> REO remaps this
  490. <enum 14 reo_destination_14> REO remaps this
  491. <enum 15 reo_destination_15> REO remaps this
  492. <enum 16 reo_destination_16> REO remaps this
  493. <enum 17 reo_destination_17> REO remaps this
  494. <enum 18 reo_destination_18> REO remaps this
  495. <enum 19 reo_destination_19> REO remaps this
  496. <enum 20 reo_destination_20> REO remaps this
  497. <enum 21 reo_destination_21> REO remaps this
  498. <enum 22 reo_destination_22> REO remaps this
  499. <enum 23 reo_destination_23> REO remaps this
  500. <enum 24 reo_destination_24> REO remaps this
  501. <enum 25 reo_destination_25> REO remaps this
  502. <enum 26 reo_destination_26> REO remaps this
  503. <enum 27 reo_destination_27> REO remaps this
  504. <enum 28 reo_destination_28> REO remaps this
  505. <enum 29 reo_destination_29> REO remaps this
  506. <enum 30 reo_destination_30> REO remaps this
  507. <enum 31 reo_destination_31> REO remaps this
  508. <legal all>
  509. */
  510. #define RX_MSDU_LINK_10_MSDU_0_RX_MSDU_DESC_INFO_DETAILS_REO_DESTINATION_INDICATION_OFFSET 0x00000028
  511. #define RX_MSDU_LINK_10_MSDU_0_RX_MSDU_DESC_INFO_DETAILS_REO_DESTINATION_INDICATION_LSB 17
  512. #define RX_MSDU_LINK_10_MSDU_0_RX_MSDU_DESC_INFO_DETAILS_REO_DESTINATION_INDICATION_MASK 0x003e0000
  513. /* Description RX_MSDU_LINK_10_MSDU_0_RX_MSDU_DESC_INFO_DETAILS_MSDU_DROP
  514. Parsed from RX_MSDU_END TLV . In the case MSDU spans
  515. over multiple buffers, this field will be valid in the Last
  516. buffer used by the MSDU
  517. When set, REO shall drop this MSDU and not forward it to
  518. any other ring...
  519. <legal all>
  520. */
  521. #define RX_MSDU_LINK_10_MSDU_0_RX_MSDU_DESC_INFO_DETAILS_MSDU_DROP_OFFSET 0x00000028
  522. #define RX_MSDU_LINK_10_MSDU_0_RX_MSDU_DESC_INFO_DETAILS_MSDU_DROP_LSB 22
  523. #define RX_MSDU_LINK_10_MSDU_0_RX_MSDU_DESC_INFO_DETAILS_MSDU_DROP_MASK 0x00400000
  524. /* Description RX_MSDU_LINK_10_MSDU_0_RX_MSDU_DESC_INFO_DETAILS_SA_IS_VALID
  525. Parsed from RX_MSDU_END TLV . In the case MSDU spans
  526. over multiple buffers, this field will be valid in the Last
  527. buffer used by the MSDU
  528. Indicates that OLE found a valid SA entry for this MSDU
  529. <legal all>
  530. */
  531. #define RX_MSDU_LINK_10_MSDU_0_RX_MSDU_DESC_INFO_DETAILS_SA_IS_VALID_OFFSET 0x00000028
  532. #define RX_MSDU_LINK_10_MSDU_0_RX_MSDU_DESC_INFO_DETAILS_SA_IS_VALID_LSB 23
  533. #define RX_MSDU_LINK_10_MSDU_0_RX_MSDU_DESC_INFO_DETAILS_SA_IS_VALID_MASK 0x00800000
  534. /* Description RX_MSDU_LINK_10_MSDU_0_RX_MSDU_DESC_INFO_DETAILS_SA_IDX_TIMEOUT
  535. Parsed from RX_MSDU_END TLV . In the case MSDU spans
  536. over multiple buffers, this field will be valid in the Last
  537. buffer used by the MSDU
  538. Indicates an unsuccessful MAC source address search due
  539. to the expiring of the search timer for this MSDU
  540. <legal all>
  541. */
  542. #define RX_MSDU_LINK_10_MSDU_0_RX_MSDU_DESC_INFO_DETAILS_SA_IDX_TIMEOUT_OFFSET 0x00000028
  543. #define RX_MSDU_LINK_10_MSDU_0_RX_MSDU_DESC_INFO_DETAILS_SA_IDX_TIMEOUT_LSB 24
  544. #define RX_MSDU_LINK_10_MSDU_0_RX_MSDU_DESC_INFO_DETAILS_SA_IDX_TIMEOUT_MASK 0x01000000
  545. /* Description RX_MSDU_LINK_10_MSDU_0_RX_MSDU_DESC_INFO_DETAILS_DA_IS_VALID
  546. Parsed from RX_MSDU_END TLV . In the case MSDU spans
  547. over multiple buffers, this field will be valid in the Last
  548. buffer used by the MSDU
  549. Indicates that OLE found a valid DA entry for this MSDU
  550. <legal all>
  551. */
  552. #define RX_MSDU_LINK_10_MSDU_0_RX_MSDU_DESC_INFO_DETAILS_DA_IS_VALID_OFFSET 0x00000028
  553. #define RX_MSDU_LINK_10_MSDU_0_RX_MSDU_DESC_INFO_DETAILS_DA_IS_VALID_LSB 25
  554. #define RX_MSDU_LINK_10_MSDU_0_RX_MSDU_DESC_INFO_DETAILS_DA_IS_VALID_MASK 0x02000000
  555. /* Description RX_MSDU_LINK_10_MSDU_0_RX_MSDU_DESC_INFO_DETAILS_DA_IS_MCBC
  556. Field Only valid if da_is_valid is set
  557. Indicates the DA address was a Multicast of Broadcast
  558. address for this MSDU
  559. <legal all>
  560. */
  561. #define RX_MSDU_LINK_10_MSDU_0_RX_MSDU_DESC_INFO_DETAILS_DA_IS_MCBC_OFFSET 0x00000028
  562. #define RX_MSDU_LINK_10_MSDU_0_RX_MSDU_DESC_INFO_DETAILS_DA_IS_MCBC_LSB 26
  563. #define RX_MSDU_LINK_10_MSDU_0_RX_MSDU_DESC_INFO_DETAILS_DA_IS_MCBC_MASK 0x04000000
  564. /* Description RX_MSDU_LINK_10_MSDU_0_RX_MSDU_DESC_INFO_DETAILS_DA_IDX_TIMEOUT
  565. Parsed from RX_MSDU_END TLV . In the case MSDU spans
  566. over multiple buffers, this field will be valid in the Last
  567. buffer used by the MSDU
  568. Indicates an unsuccessful MAC destination address search
  569. due to the expiring of the search timer for this MSDU
  570. <legal all>
  571. */
  572. #define RX_MSDU_LINK_10_MSDU_0_RX_MSDU_DESC_INFO_DETAILS_DA_IDX_TIMEOUT_OFFSET 0x00000028
  573. #define RX_MSDU_LINK_10_MSDU_0_RX_MSDU_DESC_INFO_DETAILS_DA_IDX_TIMEOUT_LSB 27
  574. #define RX_MSDU_LINK_10_MSDU_0_RX_MSDU_DESC_INFO_DETAILS_DA_IDX_TIMEOUT_MASK 0x08000000
  575. /* Description RX_MSDU_LINK_10_MSDU_0_RX_MSDU_DESC_INFO_DETAILS_L3_HEADER_PADDING_MSB
  576. Passed on from 'RX_MSDU_END' TLV (only the MSB is
  577. reported as the LSB is always zero)
  578. Number of bytes padded to make sure that the L3 header
  579. will always start of a Dword boundary
  580. <legal all>
  581. */
  582. #define RX_MSDU_LINK_10_MSDU_0_RX_MSDU_DESC_INFO_DETAILS_L3_HEADER_PADDING_MSB_OFFSET 0x00000028
  583. #define RX_MSDU_LINK_10_MSDU_0_RX_MSDU_DESC_INFO_DETAILS_L3_HEADER_PADDING_MSB_LSB 28
  584. #define RX_MSDU_LINK_10_MSDU_0_RX_MSDU_DESC_INFO_DETAILS_L3_HEADER_PADDING_MSB_MASK 0x10000000
  585. /* Description RX_MSDU_LINK_10_MSDU_0_RX_MSDU_DESC_INFO_DETAILS_TCP_UDP_CHKSUM_FAIL
  586. Passed on from 'RX_ATTENTION' TLV
  587. Indicates that the computed checksum did not match the
  588. checksum in the TCP/UDP header.
  589. <legal all>
  590. */
  591. #define RX_MSDU_LINK_10_MSDU_0_RX_MSDU_DESC_INFO_DETAILS_TCP_UDP_CHKSUM_FAIL_OFFSET 0x00000028
  592. #define RX_MSDU_LINK_10_MSDU_0_RX_MSDU_DESC_INFO_DETAILS_TCP_UDP_CHKSUM_FAIL_LSB 29
  593. #define RX_MSDU_LINK_10_MSDU_0_RX_MSDU_DESC_INFO_DETAILS_TCP_UDP_CHKSUM_FAIL_MASK 0x20000000
  594. /* Description RX_MSDU_LINK_10_MSDU_0_RX_MSDU_DESC_INFO_DETAILS_IP_CHKSUM_FAIL
  595. Passed on from 'RX_ATTENTION' TLV
  596. Indicates that the computed checksum did not match the
  597. checksum in the IP header.
  598. <legal all>
  599. */
  600. #define RX_MSDU_LINK_10_MSDU_0_RX_MSDU_DESC_INFO_DETAILS_IP_CHKSUM_FAIL_OFFSET 0x00000028
  601. #define RX_MSDU_LINK_10_MSDU_0_RX_MSDU_DESC_INFO_DETAILS_IP_CHKSUM_FAIL_LSB 30
  602. #define RX_MSDU_LINK_10_MSDU_0_RX_MSDU_DESC_INFO_DETAILS_IP_CHKSUM_FAIL_MASK 0x40000000
  603. /* Description RX_MSDU_LINK_10_MSDU_0_RX_MSDU_DESC_INFO_DETAILS_RAW_MPDU
  604. Passed on from 'RX_MPDU_INFO' structure in
  605. 'RX_MPDU_START' TLV
  606. Set to 1 by RXOLE when it has not performed any 802.11
  607. to Ethernet/Natvie WiFi header conversion on this MPDU.
  608. <legal all>
  609. */
  610. #define RX_MSDU_LINK_10_MSDU_0_RX_MSDU_DESC_INFO_DETAILS_RAW_MPDU_OFFSET 0x00000028
  611. #define RX_MSDU_LINK_10_MSDU_0_RX_MSDU_DESC_INFO_DETAILS_RAW_MPDU_LSB 31
  612. #define RX_MSDU_LINK_10_MSDU_0_RX_MSDU_DESC_INFO_DETAILS_RAW_MPDU_MASK 0x80000000
  613. /* Description RX_MSDU_LINK_11_MSDU_0_RX_MSDU_DESC_INFO_DETAILS_SA_IDX_OR_SW_PEER_ID_14_0
  614. Passed on from 'RX_MSDU_END' TLV (one MSB is omitted)
  615. Based on a register configuration in RXDMA, this field
  616. will contain:
  617. The offset in the address search table which matches the
  618. MAC source address
  619. OR
  620. 'sw_peer_id' from the address search entry corresponding
  621. to the source address of the MSDU
  622. <legal all>
  623. */
  624. #define RX_MSDU_LINK_11_MSDU_0_RX_MSDU_DESC_INFO_DETAILS_SA_IDX_OR_SW_PEER_ID_14_0_OFFSET 0x0000002c
  625. #define RX_MSDU_LINK_11_MSDU_0_RX_MSDU_DESC_INFO_DETAILS_SA_IDX_OR_SW_PEER_ID_14_0_LSB 0
  626. #define RX_MSDU_LINK_11_MSDU_0_RX_MSDU_DESC_INFO_DETAILS_SA_IDX_OR_SW_PEER_ID_14_0_MASK 0x00007fff
  627. /* Description RX_MSDU_LINK_11_MSDU_0_RX_MSDU_DESC_INFO_DETAILS_MPDU_AST_IDX_OR_SW_PEER_ID_14_0
  628. Passed on from 'RX_MPDU_INFO' structure in
  629. 'RX_MPDU_START' TLV (one MSB is omitted)
  630. Based on a register configuration in RXDMA, this field
  631. will contain:
  632. The index of the address search entry corresponding to
  633. this MPDU (a value of 0xFFFF indicates an invalid AST index,
  634. meaning that no AST entry was found or no AST search was
  635. performed)
  636. OR:
  637. 'sw_peer_id' from the address search entry corresponding
  638. to this MPDU (in case of ndp or phy_err or
  639. AST_based_lookup_valid == 0, this field will be set to 0)
  640. <legal all>
  641. */
  642. #define RX_MSDU_LINK_11_MSDU_0_RX_MSDU_DESC_INFO_DETAILS_MPDU_AST_IDX_OR_SW_PEER_ID_14_0_OFFSET 0x0000002c
  643. #define RX_MSDU_LINK_11_MSDU_0_RX_MSDU_DESC_INFO_DETAILS_MPDU_AST_IDX_OR_SW_PEER_ID_14_0_LSB 15
  644. #define RX_MSDU_LINK_11_MSDU_0_RX_MSDU_DESC_INFO_DETAILS_MPDU_AST_IDX_OR_SW_PEER_ID_14_0_MASK 0x3fff8000
  645. /* Description RX_MSDU_LINK_11_MSDU_0_RX_MSDU_DESC_INFO_DETAILS_FR_DS
  646. Passed on from 'RX_MPDU_INFO' structure in
  647. 'RX_MPDU_START' TLV
  648. Set if the 'from DS' bit is set in the frame control.
  649. <legal all>
  650. */
  651. #define RX_MSDU_LINK_11_MSDU_0_RX_MSDU_DESC_INFO_DETAILS_FR_DS_OFFSET 0x0000002c
  652. #define RX_MSDU_LINK_11_MSDU_0_RX_MSDU_DESC_INFO_DETAILS_FR_DS_LSB 30
  653. #define RX_MSDU_LINK_11_MSDU_0_RX_MSDU_DESC_INFO_DETAILS_FR_DS_MASK 0x40000000
  654. /* Description RX_MSDU_LINK_11_MSDU_0_RX_MSDU_DESC_INFO_DETAILS_TO_DS
  655. Passed on from 'RX_MPDU_INFO' structure in
  656. 'RX_MPDU_START' TLV
  657. Set if the 'to DS' bit is set in the frame control.
  658. <legal all>
  659. */
  660. #define RX_MSDU_LINK_11_MSDU_0_RX_MSDU_DESC_INFO_DETAILS_TO_DS_OFFSET 0x0000002c
  661. #define RX_MSDU_LINK_11_MSDU_0_RX_MSDU_DESC_INFO_DETAILS_TO_DS_LSB 31
  662. #define RX_MSDU_LINK_11_MSDU_0_RX_MSDU_DESC_INFO_DETAILS_TO_DS_MASK 0x80000000
  663. /* EXTERNAL REFERENCE : struct rx_msdu_details msdu_1 */
  664. /* EXTERNAL REFERENCE : struct buffer_addr_info buffer_addr_info_details */
  665. /* Description RX_MSDU_LINK_12_MSDU_1_BUFFER_ADDR_INFO_DETAILS_BUFFER_ADDR_31_0
  666. Address (lower 32 bits) of the MSDU buffer OR
  667. MSDU_EXTENSION descriptor OR Link Descriptor
  668. In case of 'NULL' pointer, this field is set to 0
  669. <legal all>
  670. */
  671. #define RX_MSDU_LINK_12_MSDU_1_BUFFER_ADDR_INFO_DETAILS_BUFFER_ADDR_31_0_OFFSET 0x00000030
  672. #define RX_MSDU_LINK_12_MSDU_1_BUFFER_ADDR_INFO_DETAILS_BUFFER_ADDR_31_0_LSB 0
  673. #define RX_MSDU_LINK_12_MSDU_1_BUFFER_ADDR_INFO_DETAILS_BUFFER_ADDR_31_0_MASK 0xffffffff
  674. /* Description RX_MSDU_LINK_13_MSDU_1_BUFFER_ADDR_INFO_DETAILS_BUFFER_ADDR_39_32
  675. Address (upper 8 bits) of the MSDU buffer OR
  676. MSDU_EXTENSION descriptor OR Link Descriptor
  677. In case of 'NULL' pointer, this field is set to 0
  678. <legal all>
  679. */
  680. #define RX_MSDU_LINK_13_MSDU_1_BUFFER_ADDR_INFO_DETAILS_BUFFER_ADDR_39_32_OFFSET 0x00000034
  681. #define RX_MSDU_LINK_13_MSDU_1_BUFFER_ADDR_INFO_DETAILS_BUFFER_ADDR_39_32_LSB 0
  682. #define RX_MSDU_LINK_13_MSDU_1_BUFFER_ADDR_INFO_DETAILS_BUFFER_ADDR_39_32_MASK 0x000000ff
  683. /* Description RX_MSDU_LINK_13_MSDU_1_BUFFER_ADDR_INFO_DETAILS_RETURN_BUFFER_MANAGER
  684. Consumer: WBM
  685. Producer: SW/FW
  686. In case of 'NULL' pointer, this field is set to 0
  687. Indicates to which buffer manager the buffer OR
  688. MSDU_EXTENSION descriptor OR link descriptor that is being
  689. pointed to shall be returned after the frame has been
  690. processed. It is used by WBM for routing purposes.
  691. <enum 0 WBM_IDLE_BUF_LIST> This buffer shall be returned
  692. to the WMB buffer idle list
  693. <enum 1 WBM_IDLE_DESC_LIST> This buffer shall be
  694. returned to the WMB idle link descriptor idle list
  695. <enum 2 FW_BM> This buffer shall be returned to the FW
  696. <enum 3 SW0_BM> This buffer shall be returned to the SW,
  697. ring 0
  698. <enum 4 SW1_BM> This buffer shall be returned to the SW,
  699. ring 1
  700. <enum 5 SW2_BM> This buffer shall be returned to the SW,
  701. ring 2
  702. <enum 6 SW3_BM> This buffer shall be returned to the SW,
  703. ring 3
  704. <enum 7 SW4_BM> This buffer shall be returned to the SW,
  705. ring 4
  706. <legal all>
  707. */
  708. #define RX_MSDU_LINK_13_MSDU_1_BUFFER_ADDR_INFO_DETAILS_RETURN_BUFFER_MANAGER_OFFSET 0x00000034
  709. #define RX_MSDU_LINK_13_MSDU_1_BUFFER_ADDR_INFO_DETAILS_RETURN_BUFFER_MANAGER_LSB 8
  710. #define RX_MSDU_LINK_13_MSDU_1_BUFFER_ADDR_INFO_DETAILS_RETURN_BUFFER_MANAGER_MASK 0x00000700
  711. /* Description RX_MSDU_LINK_13_MSDU_1_BUFFER_ADDR_INFO_DETAILS_SW_BUFFER_COOKIE
  712. Cookie field exclusively used by SW.
  713. In case of 'NULL' pointer, this field is set to 0
  714. HW ignores the contents, accept that it passes the
  715. programmed value on to other descriptors together with the
  716. physical address
  717. Field can be used by SW to for example associate the
  718. buffers physical address with the virtual address
  719. The bit definitions as used by SW are within SW HLD
  720. specification
  721. NOTE1:
  722. The three most significant bits can have a special
  723. meaning in case this struct is embedded in a TX_MPDU_DETAILS
  724. STRUCT, and field transmit_bw_restriction is set
  725. In case of NON punctured transmission:
  726. Sw_buffer_cookie[20:19] = 2'b00: 20 MHz TX only
  727. Sw_buffer_cookie[20:19] = 2'b01: 40 MHz TX only
  728. Sw_buffer_cookie[20:19] = 2'b10: 80 MHz TX only
  729. Sw_buffer_cookie[20:19] = 2'b11: 160 MHz TX only
  730. In case of punctured transmission:
  731. Sw_buffer_cookie[20:18] = 3'b000: pattern 0 only
  732. Sw_buffer_cookie[20:18] = 3'b001: pattern 1 only
  733. Sw_buffer_cookie[20:18] = 3'b010: pattern 2 only
  734. Sw_buffer_cookie[20:18] = 3'b011: pattern 3 only
  735. Sw_buffer_cookie[20:18] = 3'b100: pattern 4 only
  736. Sw_buffer_cookie[20:18] = 3'b101: pattern 5 only
  737. Sw_buffer_cookie[20:18] = 3'b110: pattern 6 only
  738. Sw_buffer_cookie[20:18] = 3'b111: pattern 7 only
  739. Note: a punctured transmission is indicated by the
  740. presence of TLV TX_PUNCTURE_SETUP embedded in the scheduler
  741. TLV
  742. NOTE 2:The five most significant bits can have a special
  743. meaning in case this struct is embedded in an
  744. RX_MSDU_DETAILS STRUCT, and Maple/Spruce Rx DMA is
  745. configured for passing on the additional info
  746. from 'RX_MPDU_INFO' structure in 'RX_MPDU_START' TLV
  747. (FR56821). This is not supported in HastingsPrime, Pine or
  748. Moselle.
  749. Sw_buffer_cookie[20:17]: Tid: The TID field in the QoS
  750. control field
  751. Sw_buffer_cookie[16]: Mpdu_qos_control_valid: This field
  752. indicates MPDUs with a QoS control field.
  753. <legal all>
  754. */
  755. #define RX_MSDU_LINK_13_MSDU_1_BUFFER_ADDR_INFO_DETAILS_SW_BUFFER_COOKIE_OFFSET 0x00000034
  756. #define RX_MSDU_LINK_13_MSDU_1_BUFFER_ADDR_INFO_DETAILS_SW_BUFFER_COOKIE_LSB 11
  757. #define RX_MSDU_LINK_13_MSDU_1_BUFFER_ADDR_INFO_DETAILS_SW_BUFFER_COOKIE_MASK 0xfffff800
  758. /* EXTERNAL REFERENCE : struct rx_msdu_desc_info rx_msdu_desc_info_details */
  759. /* Description RX_MSDU_LINK_14_MSDU_1_RX_MSDU_DESC_INFO_DETAILS_FIRST_MSDU_IN_MPDU_FLAG
  760. Parsed from RX_MSDU_END TLV . In the case MSDU spans
  761. over multiple buffers, this field will be valid in the Last
  762. buffer used by the MSDU
  763. <enum 0 Not_first_msdu> This is not the first MSDU in
  764. the MPDU.
  765. <enum 1 first_msdu> This MSDU is the first one in the
  766. MPDU.
  767. <legal all>
  768. */
  769. #define RX_MSDU_LINK_14_MSDU_1_RX_MSDU_DESC_INFO_DETAILS_FIRST_MSDU_IN_MPDU_FLAG_OFFSET 0x00000038
  770. #define RX_MSDU_LINK_14_MSDU_1_RX_MSDU_DESC_INFO_DETAILS_FIRST_MSDU_IN_MPDU_FLAG_LSB 0
  771. #define RX_MSDU_LINK_14_MSDU_1_RX_MSDU_DESC_INFO_DETAILS_FIRST_MSDU_IN_MPDU_FLAG_MASK 0x00000001
  772. /* Description RX_MSDU_LINK_14_MSDU_1_RX_MSDU_DESC_INFO_DETAILS_LAST_MSDU_IN_MPDU_FLAG
  773. Consumer: WBM/REO/SW/FW
  774. Producer: RXDMA
  775. Parsed from RX_MSDU_END TLV . In the case MSDU spans
  776. over multiple buffers, this field will be valid in the Last
  777. buffer used by the MSDU
  778. <enum 0 Not_last_msdu> There are more MSDUs linked to
  779. this MSDU that belongs to this MPDU
  780. <enum 1 Last_msdu> this MSDU is the last one in the
  781. MPDU. This setting is only allowed in combination with
  782. 'Msdu_continuation' set to 0. This implies that when an msdu
  783. is spread out over multiple buffers and thus
  784. msdu_continuation is set, only for the very last buffer of
  785. the msdu, can the 'last_msdu_in_mpdu_flag' be set.
  786. When both first_msdu_in_mpdu_flag and
  787. last_msdu_in_mpdu_flag are set, the MPDU that this MSDU
  788. belongs to only contains a single MSDU.
  789. <legal all>
  790. */
  791. #define RX_MSDU_LINK_14_MSDU_1_RX_MSDU_DESC_INFO_DETAILS_LAST_MSDU_IN_MPDU_FLAG_OFFSET 0x00000038
  792. #define RX_MSDU_LINK_14_MSDU_1_RX_MSDU_DESC_INFO_DETAILS_LAST_MSDU_IN_MPDU_FLAG_LSB 1
  793. #define RX_MSDU_LINK_14_MSDU_1_RX_MSDU_DESC_INFO_DETAILS_LAST_MSDU_IN_MPDU_FLAG_MASK 0x00000002
  794. /* Description RX_MSDU_LINK_14_MSDU_1_RX_MSDU_DESC_INFO_DETAILS_MSDU_CONTINUATION
  795. When set, this MSDU buffer was not able to hold the
  796. entire MSDU. The next buffer will therefor contain
  797. additional information related to this MSDU.
  798. <legal all>
  799. */
  800. #define RX_MSDU_LINK_14_MSDU_1_RX_MSDU_DESC_INFO_DETAILS_MSDU_CONTINUATION_OFFSET 0x00000038
  801. #define RX_MSDU_LINK_14_MSDU_1_RX_MSDU_DESC_INFO_DETAILS_MSDU_CONTINUATION_LSB 2
  802. #define RX_MSDU_LINK_14_MSDU_1_RX_MSDU_DESC_INFO_DETAILS_MSDU_CONTINUATION_MASK 0x00000004
  803. /* Description RX_MSDU_LINK_14_MSDU_1_RX_MSDU_DESC_INFO_DETAILS_MSDU_LENGTH
  804. Parsed from RX_MSDU_START TLV . In the case MSDU spans
  805. over multiple buffers, this field will be valid in the First
  806. buffer used by MSDU.
  807. Full MSDU length in bytes after decapsulation.
  808. This field is still valid for MPDU frames without
  809. A-MSDU. It still represents MSDU length after decapsulation
  810. Or in case of RAW MPDUs, it indicates the length of the
  811. entire MPDU (without FCS field)
  812. <legal all>
  813. */
  814. #define RX_MSDU_LINK_14_MSDU_1_RX_MSDU_DESC_INFO_DETAILS_MSDU_LENGTH_OFFSET 0x00000038
  815. #define RX_MSDU_LINK_14_MSDU_1_RX_MSDU_DESC_INFO_DETAILS_MSDU_LENGTH_LSB 3
  816. #define RX_MSDU_LINK_14_MSDU_1_RX_MSDU_DESC_INFO_DETAILS_MSDU_LENGTH_MASK 0x0001fff8
  817. /* Description RX_MSDU_LINK_14_MSDU_1_RX_MSDU_DESC_INFO_DETAILS_REO_DESTINATION_INDICATION
  818. Parsed from RX_MSDU_END TLV . In the case MSDU spans
  819. over multiple buffers, this field will be valid in the Last
  820. buffer used by the MSDU
  821. The ID of the REO exit ring where the MSDU frame shall
  822. push after (MPDU level) reordering has finished.
  823. <enum 0 reo_destination_tcl> Reo will push the frame
  824. into the REO2TCL ring
  825. <enum 1 reo_destination_sw1> Reo will push the frame
  826. into the REO2SW1 ring
  827. <enum 2 reo_destination_sw2> Reo will push the frame
  828. into the REO2SW2 ring
  829. <enum 3 reo_destination_sw3> Reo will push the frame
  830. into the REO2SW3 ring
  831. <enum 4 reo_destination_sw4> Reo will push the frame
  832. into the REO2SW4 ring
  833. <enum 5 reo_destination_release> Reo will push the frame
  834. into the REO_release ring
  835. <enum 6 reo_destination_fw> Reo will push the frame into
  836. the REO2FW ring
  837. <enum 7 reo_destination_sw5> Reo will push the frame
  838. into the REO2SW5 ring (REO remaps this in chips without
  839. REO2SW5 ring, e.g. Pine)
  840. <enum 8 reo_destination_sw6> Reo will push the frame
  841. into the REO2SW6 ring (REO remaps this in chips without
  842. REO2SW6 ring, e.g. Pine)
  843. <enum 9 reo_destination_9> REO remaps this <enum 10
  844. reo_destination_10> REO remaps this
  845. <enum 11 reo_destination_11> REO remaps this
  846. <enum 12 reo_destination_12> REO remaps this <enum 13
  847. reo_destination_13> REO remaps this
  848. <enum 14 reo_destination_14> REO remaps this
  849. <enum 15 reo_destination_15> REO remaps this
  850. <enum 16 reo_destination_16> REO remaps this
  851. <enum 17 reo_destination_17> REO remaps this
  852. <enum 18 reo_destination_18> REO remaps this
  853. <enum 19 reo_destination_19> REO remaps this
  854. <enum 20 reo_destination_20> REO remaps this
  855. <enum 21 reo_destination_21> REO remaps this
  856. <enum 22 reo_destination_22> REO remaps this
  857. <enum 23 reo_destination_23> REO remaps this
  858. <enum 24 reo_destination_24> REO remaps this
  859. <enum 25 reo_destination_25> REO remaps this
  860. <enum 26 reo_destination_26> REO remaps this
  861. <enum 27 reo_destination_27> REO remaps this
  862. <enum 28 reo_destination_28> REO remaps this
  863. <enum 29 reo_destination_29> REO remaps this
  864. <enum 30 reo_destination_30> REO remaps this
  865. <enum 31 reo_destination_31> REO remaps this
  866. <legal all>
  867. */
  868. #define RX_MSDU_LINK_14_MSDU_1_RX_MSDU_DESC_INFO_DETAILS_REO_DESTINATION_INDICATION_OFFSET 0x00000038
  869. #define RX_MSDU_LINK_14_MSDU_1_RX_MSDU_DESC_INFO_DETAILS_REO_DESTINATION_INDICATION_LSB 17
  870. #define RX_MSDU_LINK_14_MSDU_1_RX_MSDU_DESC_INFO_DETAILS_REO_DESTINATION_INDICATION_MASK 0x003e0000
  871. /* Description RX_MSDU_LINK_14_MSDU_1_RX_MSDU_DESC_INFO_DETAILS_MSDU_DROP
  872. Parsed from RX_MSDU_END TLV . In the case MSDU spans
  873. over multiple buffers, this field will be valid in the Last
  874. buffer used by the MSDU
  875. When set, REO shall drop this MSDU and not forward it to
  876. any other ring...
  877. <legal all>
  878. */
  879. #define RX_MSDU_LINK_14_MSDU_1_RX_MSDU_DESC_INFO_DETAILS_MSDU_DROP_OFFSET 0x00000038
  880. #define RX_MSDU_LINK_14_MSDU_1_RX_MSDU_DESC_INFO_DETAILS_MSDU_DROP_LSB 22
  881. #define RX_MSDU_LINK_14_MSDU_1_RX_MSDU_DESC_INFO_DETAILS_MSDU_DROP_MASK 0x00400000
  882. /* Description RX_MSDU_LINK_14_MSDU_1_RX_MSDU_DESC_INFO_DETAILS_SA_IS_VALID
  883. Parsed from RX_MSDU_END TLV . In the case MSDU spans
  884. over multiple buffers, this field will be valid in the Last
  885. buffer used by the MSDU
  886. Indicates that OLE found a valid SA entry for this MSDU
  887. <legal all>
  888. */
  889. #define RX_MSDU_LINK_14_MSDU_1_RX_MSDU_DESC_INFO_DETAILS_SA_IS_VALID_OFFSET 0x00000038
  890. #define RX_MSDU_LINK_14_MSDU_1_RX_MSDU_DESC_INFO_DETAILS_SA_IS_VALID_LSB 23
  891. #define RX_MSDU_LINK_14_MSDU_1_RX_MSDU_DESC_INFO_DETAILS_SA_IS_VALID_MASK 0x00800000
  892. /* Description RX_MSDU_LINK_14_MSDU_1_RX_MSDU_DESC_INFO_DETAILS_SA_IDX_TIMEOUT
  893. Parsed from RX_MSDU_END TLV . In the case MSDU spans
  894. over multiple buffers, this field will be valid in the Last
  895. buffer used by the MSDU
  896. Indicates an unsuccessful MAC source address search due
  897. to the expiring of the search timer for this MSDU
  898. <legal all>
  899. */
  900. #define RX_MSDU_LINK_14_MSDU_1_RX_MSDU_DESC_INFO_DETAILS_SA_IDX_TIMEOUT_OFFSET 0x00000038
  901. #define RX_MSDU_LINK_14_MSDU_1_RX_MSDU_DESC_INFO_DETAILS_SA_IDX_TIMEOUT_LSB 24
  902. #define RX_MSDU_LINK_14_MSDU_1_RX_MSDU_DESC_INFO_DETAILS_SA_IDX_TIMEOUT_MASK 0x01000000
  903. /* Description RX_MSDU_LINK_14_MSDU_1_RX_MSDU_DESC_INFO_DETAILS_DA_IS_VALID
  904. Parsed from RX_MSDU_END TLV . In the case MSDU spans
  905. over multiple buffers, this field will be valid in the Last
  906. buffer used by the MSDU
  907. Indicates that OLE found a valid DA entry for this MSDU
  908. <legal all>
  909. */
  910. #define RX_MSDU_LINK_14_MSDU_1_RX_MSDU_DESC_INFO_DETAILS_DA_IS_VALID_OFFSET 0x00000038
  911. #define RX_MSDU_LINK_14_MSDU_1_RX_MSDU_DESC_INFO_DETAILS_DA_IS_VALID_LSB 25
  912. #define RX_MSDU_LINK_14_MSDU_1_RX_MSDU_DESC_INFO_DETAILS_DA_IS_VALID_MASK 0x02000000
  913. /* Description RX_MSDU_LINK_14_MSDU_1_RX_MSDU_DESC_INFO_DETAILS_DA_IS_MCBC
  914. Field Only valid if da_is_valid is set
  915. Indicates the DA address was a Multicast of Broadcast
  916. address for this MSDU
  917. <legal all>
  918. */
  919. #define RX_MSDU_LINK_14_MSDU_1_RX_MSDU_DESC_INFO_DETAILS_DA_IS_MCBC_OFFSET 0x00000038
  920. #define RX_MSDU_LINK_14_MSDU_1_RX_MSDU_DESC_INFO_DETAILS_DA_IS_MCBC_LSB 26
  921. #define RX_MSDU_LINK_14_MSDU_1_RX_MSDU_DESC_INFO_DETAILS_DA_IS_MCBC_MASK 0x04000000
  922. /* Description RX_MSDU_LINK_14_MSDU_1_RX_MSDU_DESC_INFO_DETAILS_DA_IDX_TIMEOUT
  923. Parsed from RX_MSDU_END TLV . In the case MSDU spans
  924. over multiple buffers, this field will be valid in the Last
  925. buffer used by the MSDU
  926. Indicates an unsuccessful MAC destination address search
  927. due to the expiring of the search timer for this MSDU
  928. <legal all>
  929. */
  930. #define RX_MSDU_LINK_14_MSDU_1_RX_MSDU_DESC_INFO_DETAILS_DA_IDX_TIMEOUT_OFFSET 0x00000038
  931. #define RX_MSDU_LINK_14_MSDU_1_RX_MSDU_DESC_INFO_DETAILS_DA_IDX_TIMEOUT_LSB 27
  932. #define RX_MSDU_LINK_14_MSDU_1_RX_MSDU_DESC_INFO_DETAILS_DA_IDX_TIMEOUT_MASK 0x08000000
  933. /* Description RX_MSDU_LINK_14_MSDU_1_RX_MSDU_DESC_INFO_DETAILS_L3_HEADER_PADDING_MSB
  934. Passed on from 'RX_MSDU_END' TLV (only the MSB is
  935. reported as the LSB is always zero)
  936. Number of bytes padded to make sure that the L3 header
  937. will always start of a Dword boundary
  938. <legal all>
  939. */
  940. #define RX_MSDU_LINK_14_MSDU_1_RX_MSDU_DESC_INFO_DETAILS_L3_HEADER_PADDING_MSB_OFFSET 0x00000038
  941. #define RX_MSDU_LINK_14_MSDU_1_RX_MSDU_DESC_INFO_DETAILS_L3_HEADER_PADDING_MSB_LSB 28
  942. #define RX_MSDU_LINK_14_MSDU_1_RX_MSDU_DESC_INFO_DETAILS_L3_HEADER_PADDING_MSB_MASK 0x10000000
  943. /* Description RX_MSDU_LINK_14_MSDU_1_RX_MSDU_DESC_INFO_DETAILS_TCP_UDP_CHKSUM_FAIL
  944. Passed on from 'RX_ATTENTION' TLV
  945. Indicates that the computed checksum did not match the
  946. checksum in the TCP/UDP header.
  947. <legal all>
  948. */
  949. #define RX_MSDU_LINK_14_MSDU_1_RX_MSDU_DESC_INFO_DETAILS_TCP_UDP_CHKSUM_FAIL_OFFSET 0x00000038
  950. #define RX_MSDU_LINK_14_MSDU_1_RX_MSDU_DESC_INFO_DETAILS_TCP_UDP_CHKSUM_FAIL_LSB 29
  951. #define RX_MSDU_LINK_14_MSDU_1_RX_MSDU_DESC_INFO_DETAILS_TCP_UDP_CHKSUM_FAIL_MASK 0x20000000
  952. /* Description RX_MSDU_LINK_14_MSDU_1_RX_MSDU_DESC_INFO_DETAILS_IP_CHKSUM_FAIL
  953. Passed on from 'RX_ATTENTION' TLV
  954. Indicates that the computed checksum did not match the
  955. checksum in the IP header.
  956. <legal all>
  957. */
  958. #define RX_MSDU_LINK_14_MSDU_1_RX_MSDU_DESC_INFO_DETAILS_IP_CHKSUM_FAIL_OFFSET 0x00000038
  959. #define RX_MSDU_LINK_14_MSDU_1_RX_MSDU_DESC_INFO_DETAILS_IP_CHKSUM_FAIL_LSB 30
  960. #define RX_MSDU_LINK_14_MSDU_1_RX_MSDU_DESC_INFO_DETAILS_IP_CHKSUM_FAIL_MASK 0x40000000
  961. /* Description RX_MSDU_LINK_14_MSDU_1_RX_MSDU_DESC_INFO_DETAILS_RAW_MPDU
  962. Passed on from 'RX_MPDU_INFO' structure in
  963. 'RX_MPDU_START' TLV
  964. Set to 1 by RXOLE when it has not performed any 802.11
  965. to Ethernet/Natvie WiFi header conversion on this MPDU.
  966. <legal all>
  967. */
  968. #define RX_MSDU_LINK_14_MSDU_1_RX_MSDU_DESC_INFO_DETAILS_RAW_MPDU_OFFSET 0x00000038
  969. #define RX_MSDU_LINK_14_MSDU_1_RX_MSDU_DESC_INFO_DETAILS_RAW_MPDU_LSB 31
  970. #define RX_MSDU_LINK_14_MSDU_1_RX_MSDU_DESC_INFO_DETAILS_RAW_MPDU_MASK 0x80000000
  971. /* Description RX_MSDU_LINK_15_MSDU_1_RX_MSDU_DESC_INFO_DETAILS_SA_IDX_OR_SW_PEER_ID_14_0
  972. Passed on from 'RX_MSDU_END' TLV (one MSB is omitted)
  973. Based on a register configuration in RXDMA, this field
  974. will contain:
  975. The offset in the address search table which matches the
  976. MAC source address
  977. OR
  978. 'sw_peer_id' from the address search entry corresponding
  979. to the source address of the MSDU
  980. <legal all>
  981. */
  982. #define RX_MSDU_LINK_15_MSDU_1_RX_MSDU_DESC_INFO_DETAILS_SA_IDX_OR_SW_PEER_ID_14_0_OFFSET 0x0000003c
  983. #define RX_MSDU_LINK_15_MSDU_1_RX_MSDU_DESC_INFO_DETAILS_SA_IDX_OR_SW_PEER_ID_14_0_LSB 0
  984. #define RX_MSDU_LINK_15_MSDU_1_RX_MSDU_DESC_INFO_DETAILS_SA_IDX_OR_SW_PEER_ID_14_0_MASK 0x00007fff
  985. /* Description RX_MSDU_LINK_15_MSDU_1_RX_MSDU_DESC_INFO_DETAILS_MPDU_AST_IDX_OR_SW_PEER_ID_14_0
  986. Passed on from 'RX_MPDU_INFO' structure in
  987. 'RX_MPDU_START' TLV (one MSB is omitted)
  988. Based on a register configuration in RXDMA, this field
  989. will contain:
  990. The index of the address search entry corresponding to
  991. this MPDU (a value of 0xFFFF indicates an invalid AST index,
  992. meaning that no AST entry was found or no AST search was
  993. performed)
  994. OR:
  995. 'sw_peer_id' from the address search entry corresponding
  996. to this MPDU (in case of ndp or phy_err or
  997. AST_based_lookup_valid == 0, this field will be set to 0)
  998. <legal all>
  999. */
  1000. #define RX_MSDU_LINK_15_MSDU_1_RX_MSDU_DESC_INFO_DETAILS_MPDU_AST_IDX_OR_SW_PEER_ID_14_0_OFFSET 0x0000003c
  1001. #define RX_MSDU_LINK_15_MSDU_1_RX_MSDU_DESC_INFO_DETAILS_MPDU_AST_IDX_OR_SW_PEER_ID_14_0_LSB 15
  1002. #define RX_MSDU_LINK_15_MSDU_1_RX_MSDU_DESC_INFO_DETAILS_MPDU_AST_IDX_OR_SW_PEER_ID_14_0_MASK 0x3fff8000
  1003. /* Description RX_MSDU_LINK_15_MSDU_1_RX_MSDU_DESC_INFO_DETAILS_FR_DS
  1004. Passed on from 'RX_MPDU_INFO' structure in
  1005. 'RX_MPDU_START' TLV
  1006. Set if the 'from DS' bit is set in the frame control.
  1007. <legal all>
  1008. */
  1009. #define RX_MSDU_LINK_15_MSDU_1_RX_MSDU_DESC_INFO_DETAILS_FR_DS_OFFSET 0x0000003c
  1010. #define RX_MSDU_LINK_15_MSDU_1_RX_MSDU_DESC_INFO_DETAILS_FR_DS_LSB 30
  1011. #define RX_MSDU_LINK_15_MSDU_1_RX_MSDU_DESC_INFO_DETAILS_FR_DS_MASK 0x40000000
  1012. /* Description RX_MSDU_LINK_15_MSDU_1_RX_MSDU_DESC_INFO_DETAILS_TO_DS
  1013. Passed on from 'RX_MPDU_INFO' structure in
  1014. 'RX_MPDU_START' TLV
  1015. Set if the 'to DS' bit is set in the frame control.
  1016. <legal all>
  1017. */
  1018. #define RX_MSDU_LINK_15_MSDU_1_RX_MSDU_DESC_INFO_DETAILS_TO_DS_OFFSET 0x0000003c
  1019. #define RX_MSDU_LINK_15_MSDU_1_RX_MSDU_DESC_INFO_DETAILS_TO_DS_LSB 31
  1020. #define RX_MSDU_LINK_15_MSDU_1_RX_MSDU_DESC_INFO_DETAILS_TO_DS_MASK 0x80000000
  1021. /* EXTERNAL REFERENCE : struct rx_msdu_details msdu_2 */
  1022. /* EXTERNAL REFERENCE : struct buffer_addr_info buffer_addr_info_details */
  1023. /* Description RX_MSDU_LINK_16_MSDU_2_BUFFER_ADDR_INFO_DETAILS_BUFFER_ADDR_31_0
  1024. Address (lower 32 bits) of the MSDU buffer OR
  1025. MSDU_EXTENSION descriptor OR Link Descriptor
  1026. In case of 'NULL' pointer, this field is set to 0
  1027. <legal all>
  1028. */
  1029. #define RX_MSDU_LINK_16_MSDU_2_BUFFER_ADDR_INFO_DETAILS_BUFFER_ADDR_31_0_OFFSET 0x00000040
  1030. #define RX_MSDU_LINK_16_MSDU_2_BUFFER_ADDR_INFO_DETAILS_BUFFER_ADDR_31_0_LSB 0
  1031. #define RX_MSDU_LINK_16_MSDU_2_BUFFER_ADDR_INFO_DETAILS_BUFFER_ADDR_31_0_MASK 0xffffffff
  1032. /* Description RX_MSDU_LINK_17_MSDU_2_BUFFER_ADDR_INFO_DETAILS_BUFFER_ADDR_39_32
  1033. Address (upper 8 bits) of the MSDU buffer OR
  1034. MSDU_EXTENSION descriptor OR Link Descriptor
  1035. In case of 'NULL' pointer, this field is set to 0
  1036. <legal all>
  1037. */
  1038. #define RX_MSDU_LINK_17_MSDU_2_BUFFER_ADDR_INFO_DETAILS_BUFFER_ADDR_39_32_OFFSET 0x00000044
  1039. #define RX_MSDU_LINK_17_MSDU_2_BUFFER_ADDR_INFO_DETAILS_BUFFER_ADDR_39_32_LSB 0
  1040. #define RX_MSDU_LINK_17_MSDU_2_BUFFER_ADDR_INFO_DETAILS_BUFFER_ADDR_39_32_MASK 0x000000ff
  1041. /* Description RX_MSDU_LINK_17_MSDU_2_BUFFER_ADDR_INFO_DETAILS_RETURN_BUFFER_MANAGER
  1042. Consumer: WBM
  1043. Producer: SW/FW
  1044. In case of 'NULL' pointer, this field is set to 0
  1045. Indicates to which buffer manager the buffer OR
  1046. MSDU_EXTENSION descriptor OR link descriptor that is being
  1047. pointed to shall be returned after the frame has been
  1048. processed. It is used by WBM for routing purposes.
  1049. <enum 0 WBM_IDLE_BUF_LIST> This buffer shall be returned
  1050. to the WMB buffer idle list
  1051. <enum 1 WBM_IDLE_DESC_LIST> This buffer shall be
  1052. returned to the WMB idle link descriptor idle list
  1053. <enum 2 FW_BM> This buffer shall be returned to the FW
  1054. <enum 3 SW0_BM> This buffer shall be returned to the SW,
  1055. ring 0
  1056. <enum 4 SW1_BM> This buffer shall be returned to the SW,
  1057. ring 1
  1058. <enum 5 SW2_BM> This buffer shall be returned to the SW,
  1059. ring 2
  1060. <enum 6 SW3_BM> This buffer shall be returned to the SW,
  1061. ring 3
  1062. <enum 7 SW4_BM> This buffer shall be returned to the SW,
  1063. ring 4
  1064. <legal all>
  1065. */
  1066. #define RX_MSDU_LINK_17_MSDU_2_BUFFER_ADDR_INFO_DETAILS_RETURN_BUFFER_MANAGER_OFFSET 0x00000044
  1067. #define RX_MSDU_LINK_17_MSDU_2_BUFFER_ADDR_INFO_DETAILS_RETURN_BUFFER_MANAGER_LSB 8
  1068. #define RX_MSDU_LINK_17_MSDU_2_BUFFER_ADDR_INFO_DETAILS_RETURN_BUFFER_MANAGER_MASK 0x00000700
  1069. /* Description RX_MSDU_LINK_17_MSDU_2_BUFFER_ADDR_INFO_DETAILS_SW_BUFFER_COOKIE
  1070. Cookie field exclusively used by SW.
  1071. In case of 'NULL' pointer, this field is set to 0
  1072. HW ignores the contents, accept that it passes the
  1073. programmed value on to other descriptors together with the
  1074. physical address
  1075. Field can be used by SW to for example associate the
  1076. buffers physical address with the virtual address
  1077. The bit definitions as used by SW are within SW HLD
  1078. specification
  1079. NOTE1:
  1080. The three most significant bits can have a special
  1081. meaning in case this struct is embedded in a TX_MPDU_DETAILS
  1082. STRUCT, and field transmit_bw_restriction is set
  1083. In case of NON punctured transmission:
  1084. Sw_buffer_cookie[20:19] = 2'b00: 20 MHz TX only
  1085. Sw_buffer_cookie[20:19] = 2'b01: 40 MHz TX only
  1086. Sw_buffer_cookie[20:19] = 2'b10: 80 MHz TX only
  1087. Sw_buffer_cookie[20:19] = 2'b11: 160 MHz TX only
  1088. In case of punctured transmission:
  1089. Sw_buffer_cookie[20:18] = 3'b000: pattern 0 only
  1090. Sw_buffer_cookie[20:18] = 3'b001: pattern 1 only
  1091. Sw_buffer_cookie[20:18] = 3'b010: pattern 2 only
  1092. Sw_buffer_cookie[20:18] = 3'b011: pattern 3 only
  1093. Sw_buffer_cookie[20:18] = 3'b100: pattern 4 only
  1094. Sw_buffer_cookie[20:18] = 3'b101: pattern 5 only
  1095. Sw_buffer_cookie[20:18] = 3'b110: pattern 6 only
  1096. Sw_buffer_cookie[20:18] = 3'b111: pattern 7 only
  1097. Note: a punctured transmission is indicated by the
  1098. presence of TLV TX_PUNCTURE_SETUP embedded in the scheduler
  1099. TLV
  1100. NOTE 2:The five most significant bits can have a special
  1101. meaning in case this struct is embedded in an
  1102. RX_MSDU_DETAILS STRUCT, and Maple/Spruce Rx DMA is
  1103. configured for passing on the additional info
  1104. from 'RX_MPDU_INFO' structure in 'RX_MPDU_START' TLV
  1105. (FR56821). This is not supported in HastingsPrime, Pine or
  1106. Moselle.
  1107. Sw_buffer_cookie[20:17]: Tid: The TID field in the QoS
  1108. control field
  1109. Sw_buffer_cookie[16]: Mpdu_qos_control_valid: This field
  1110. indicates MPDUs with a QoS control field.
  1111. <legal all>
  1112. */
  1113. #define RX_MSDU_LINK_17_MSDU_2_BUFFER_ADDR_INFO_DETAILS_SW_BUFFER_COOKIE_OFFSET 0x00000044
  1114. #define RX_MSDU_LINK_17_MSDU_2_BUFFER_ADDR_INFO_DETAILS_SW_BUFFER_COOKIE_LSB 11
  1115. #define RX_MSDU_LINK_17_MSDU_2_BUFFER_ADDR_INFO_DETAILS_SW_BUFFER_COOKIE_MASK 0xfffff800
  1116. /* EXTERNAL REFERENCE : struct rx_msdu_desc_info rx_msdu_desc_info_details */
  1117. /* Description RX_MSDU_LINK_18_MSDU_2_RX_MSDU_DESC_INFO_DETAILS_FIRST_MSDU_IN_MPDU_FLAG
  1118. Parsed from RX_MSDU_END TLV . In the case MSDU spans
  1119. over multiple buffers, this field will be valid in the Last
  1120. buffer used by the MSDU
  1121. <enum 0 Not_first_msdu> This is not the first MSDU in
  1122. the MPDU.
  1123. <enum 1 first_msdu> This MSDU is the first one in the
  1124. MPDU.
  1125. <legal all>
  1126. */
  1127. #define RX_MSDU_LINK_18_MSDU_2_RX_MSDU_DESC_INFO_DETAILS_FIRST_MSDU_IN_MPDU_FLAG_OFFSET 0x00000048
  1128. #define RX_MSDU_LINK_18_MSDU_2_RX_MSDU_DESC_INFO_DETAILS_FIRST_MSDU_IN_MPDU_FLAG_LSB 0
  1129. #define RX_MSDU_LINK_18_MSDU_2_RX_MSDU_DESC_INFO_DETAILS_FIRST_MSDU_IN_MPDU_FLAG_MASK 0x00000001
  1130. /* Description RX_MSDU_LINK_18_MSDU_2_RX_MSDU_DESC_INFO_DETAILS_LAST_MSDU_IN_MPDU_FLAG
  1131. Consumer: WBM/REO/SW/FW
  1132. Producer: RXDMA
  1133. Parsed from RX_MSDU_END TLV . In the case MSDU spans
  1134. over multiple buffers, this field will be valid in the Last
  1135. buffer used by the MSDU
  1136. <enum 0 Not_last_msdu> There are more MSDUs linked to
  1137. this MSDU that belongs to this MPDU
  1138. <enum 1 Last_msdu> this MSDU is the last one in the
  1139. MPDU. This setting is only allowed in combination with
  1140. 'Msdu_continuation' set to 0. This implies that when an msdu
  1141. is spread out over multiple buffers and thus
  1142. msdu_continuation is set, only for the very last buffer of
  1143. the msdu, can the 'last_msdu_in_mpdu_flag' be set.
  1144. When both first_msdu_in_mpdu_flag and
  1145. last_msdu_in_mpdu_flag are set, the MPDU that this MSDU
  1146. belongs to only contains a single MSDU.
  1147. <legal all>
  1148. */
  1149. #define RX_MSDU_LINK_18_MSDU_2_RX_MSDU_DESC_INFO_DETAILS_LAST_MSDU_IN_MPDU_FLAG_OFFSET 0x00000048
  1150. #define RX_MSDU_LINK_18_MSDU_2_RX_MSDU_DESC_INFO_DETAILS_LAST_MSDU_IN_MPDU_FLAG_LSB 1
  1151. #define RX_MSDU_LINK_18_MSDU_2_RX_MSDU_DESC_INFO_DETAILS_LAST_MSDU_IN_MPDU_FLAG_MASK 0x00000002
  1152. /* Description RX_MSDU_LINK_18_MSDU_2_RX_MSDU_DESC_INFO_DETAILS_MSDU_CONTINUATION
  1153. When set, this MSDU buffer was not able to hold the
  1154. entire MSDU. The next buffer will therefor contain
  1155. additional information related to this MSDU.
  1156. <legal all>
  1157. */
  1158. #define RX_MSDU_LINK_18_MSDU_2_RX_MSDU_DESC_INFO_DETAILS_MSDU_CONTINUATION_OFFSET 0x00000048
  1159. #define RX_MSDU_LINK_18_MSDU_2_RX_MSDU_DESC_INFO_DETAILS_MSDU_CONTINUATION_LSB 2
  1160. #define RX_MSDU_LINK_18_MSDU_2_RX_MSDU_DESC_INFO_DETAILS_MSDU_CONTINUATION_MASK 0x00000004
  1161. /* Description RX_MSDU_LINK_18_MSDU_2_RX_MSDU_DESC_INFO_DETAILS_MSDU_LENGTH
  1162. Parsed from RX_MSDU_START TLV . In the case MSDU spans
  1163. over multiple buffers, this field will be valid in the First
  1164. buffer used by MSDU.
  1165. Full MSDU length in bytes after decapsulation.
  1166. This field is still valid for MPDU frames without
  1167. A-MSDU. It still represents MSDU length after decapsulation
  1168. Or in case of RAW MPDUs, it indicates the length of the
  1169. entire MPDU (without FCS field)
  1170. <legal all>
  1171. */
  1172. #define RX_MSDU_LINK_18_MSDU_2_RX_MSDU_DESC_INFO_DETAILS_MSDU_LENGTH_OFFSET 0x00000048
  1173. #define RX_MSDU_LINK_18_MSDU_2_RX_MSDU_DESC_INFO_DETAILS_MSDU_LENGTH_LSB 3
  1174. #define RX_MSDU_LINK_18_MSDU_2_RX_MSDU_DESC_INFO_DETAILS_MSDU_LENGTH_MASK 0x0001fff8
  1175. /* Description RX_MSDU_LINK_18_MSDU_2_RX_MSDU_DESC_INFO_DETAILS_REO_DESTINATION_INDICATION
  1176. Parsed from RX_MSDU_END TLV . In the case MSDU spans
  1177. over multiple buffers, this field will be valid in the Last
  1178. buffer used by the MSDU
  1179. The ID of the REO exit ring where the MSDU frame shall
  1180. push after (MPDU level) reordering has finished.
  1181. <enum 0 reo_destination_tcl> Reo will push the frame
  1182. into the REO2TCL ring
  1183. <enum 1 reo_destination_sw1> Reo will push the frame
  1184. into the REO2SW1 ring
  1185. <enum 2 reo_destination_sw2> Reo will push the frame
  1186. into the REO2SW2 ring
  1187. <enum 3 reo_destination_sw3> Reo will push the frame
  1188. into the REO2SW3 ring
  1189. <enum 4 reo_destination_sw4> Reo will push the frame
  1190. into the REO2SW4 ring
  1191. <enum 5 reo_destination_release> Reo will push the frame
  1192. into the REO_release ring
  1193. <enum 6 reo_destination_fw> Reo will push the frame into
  1194. the REO2FW ring
  1195. <enum 7 reo_destination_sw5> Reo will push the frame
  1196. into the REO2SW5 ring (REO remaps this in chips without
  1197. REO2SW5 ring, e.g. Pine)
  1198. <enum 8 reo_destination_sw6> Reo will push the frame
  1199. into the REO2SW6 ring (REO remaps this in chips without
  1200. REO2SW6 ring, e.g. Pine)
  1201. <enum 9 reo_destination_9> REO remaps this <enum 10
  1202. reo_destination_10> REO remaps this
  1203. <enum 11 reo_destination_11> REO remaps this
  1204. <enum 12 reo_destination_12> REO remaps this <enum 13
  1205. reo_destination_13> REO remaps this
  1206. <enum 14 reo_destination_14> REO remaps this
  1207. <enum 15 reo_destination_15> REO remaps this
  1208. <enum 16 reo_destination_16> REO remaps this
  1209. <enum 17 reo_destination_17> REO remaps this
  1210. <enum 18 reo_destination_18> REO remaps this
  1211. <enum 19 reo_destination_19> REO remaps this
  1212. <enum 20 reo_destination_20> REO remaps this
  1213. <enum 21 reo_destination_21> REO remaps this
  1214. <enum 22 reo_destination_22> REO remaps this
  1215. <enum 23 reo_destination_23> REO remaps this
  1216. <enum 24 reo_destination_24> REO remaps this
  1217. <enum 25 reo_destination_25> REO remaps this
  1218. <enum 26 reo_destination_26> REO remaps this
  1219. <enum 27 reo_destination_27> REO remaps this
  1220. <enum 28 reo_destination_28> REO remaps this
  1221. <enum 29 reo_destination_29> REO remaps this
  1222. <enum 30 reo_destination_30> REO remaps this
  1223. <enum 31 reo_destination_31> REO remaps this
  1224. <legal all>
  1225. */
  1226. #define RX_MSDU_LINK_18_MSDU_2_RX_MSDU_DESC_INFO_DETAILS_REO_DESTINATION_INDICATION_OFFSET 0x00000048
  1227. #define RX_MSDU_LINK_18_MSDU_2_RX_MSDU_DESC_INFO_DETAILS_REO_DESTINATION_INDICATION_LSB 17
  1228. #define RX_MSDU_LINK_18_MSDU_2_RX_MSDU_DESC_INFO_DETAILS_REO_DESTINATION_INDICATION_MASK 0x003e0000
  1229. /* Description RX_MSDU_LINK_18_MSDU_2_RX_MSDU_DESC_INFO_DETAILS_MSDU_DROP
  1230. Parsed from RX_MSDU_END TLV . In the case MSDU spans
  1231. over multiple buffers, this field will be valid in the Last
  1232. buffer used by the MSDU
  1233. When set, REO shall drop this MSDU and not forward it to
  1234. any other ring...
  1235. <legal all>
  1236. */
  1237. #define RX_MSDU_LINK_18_MSDU_2_RX_MSDU_DESC_INFO_DETAILS_MSDU_DROP_OFFSET 0x00000048
  1238. #define RX_MSDU_LINK_18_MSDU_2_RX_MSDU_DESC_INFO_DETAILS_MSDU_DROP_LSB 22
  1239. #define RX_MSDU_LINK_18_MSDU_2_RX_MSDU_DESC_INFO_DETAILS_MSDU_DROP_MASK 0x00400000
  1240. /* Description RX_MSDU_LINK_18_MSDU_2_RX_MSDU_DESC_INFO_DETAILS_SA_IS_VALID
  1241. Parsed from RX_MSDU_END TLV . In the case MSDU spans
  1242. over multiple buffers, this field will be valid in the Last
  1243. buffer used by the MSDU
  1244. Indicates that OLE found a valid SA entry for this MSDU
  1245. <legal all>
  1246. */
  1247. #define RX_MSDU_LINK_18_MSDU_2_RX_MSDU_DESC_INFO_DETAILS_SA_IS_VALID_OFFSET 0x00000048
  1248. #define RX_MSDU_LINK_18_MSDU_2_RX_MSDU_DESC_INFO_DETAILS_SA_IS_VALID_LSB 23
  1249. #define RX_MSDU_LINK_18_MSDU_2_RX_MSDU_DESC_INFO_DETAILS_SA_IS_VALID_MASK 0x00800000
  1250. /* Description RX_MSDU_LINK_18_MSDU_2_RX_MSDU_DESC_INFO_DETAILS_SA_IDX_TIMEOUT
  1251. Parsed from RX_MSDU_END TLV . In the case MSDU spans
  1252. over multiple buffers, this field will be valid in the Last
  1253. buffer used by the MSDU
  1254. Indicates an unsuccessful MAC source address search due
  1255. to the expiring of the search timer for this MSDU
  1256. <legal all>
  1257. */
  1258. #define RX_MSDU_LINK_18_MSDU_2_RX_MSDU_DESC_INFO_DETAILS_SA_IDX_TIMEOUT_OFFSET 0x00000048
  1259. #define RX_MSDU_LINK_18_MSDU_2_RX_MSDU_DESC_INFO_DETAILS_SA_IDX_TIMEOUT_LSB 24
  1260. #define RX_MSDU_LINK_18_MSDU_2_RX_MSDU_DESC_INFO_DETAILS_SA_IDX_TIMEOUT_MASK 0x01000000
  1261. /* Description RX_MSDU_LINK_18_MSDU_2_RX_MSDU_DESC_INFO_DETAILS_DA_IS_VALID
  1262. Parsed from RX_MSDU_END TLV . In the case MSDU spans
  1263. over multiple buffers, this field will be valid in the Last
  1264. buffer used by the MSDU
  1265. Indicates that OLE found a valid DA entry for this MSDU
  1266. <legal all>
  1267. */
  1268. #define RX_MSDU_LINK_18_MSDU_2_RX_MSDU_DESC_INFO_DETAILS_DA_IS_VALID_OFFSET 0x00000048
  1269. #define RX_MSDU_LINK_18_MSDU_2_RX_MSDU_DESC_INFO_DETAILS_DA_IS_VALID_LSB 25
  1270. #define RX_MSDU_LINK_18_MSDU_2_RX_MSDU_DESC_INFO_DETAILS_DA_IS_VALID_MASK 0x02000000
  1271. /* Description RX_MSDU_LINK_18_MSDU_2_RX_MSDU_DESC_INFO_DETAILS_DA_IS_MCBC
  1272. Field Only valid if da_is_valid is set
  1273. Indicates the DA address was a Multicast of Broadcast
  1274. address for this MSDU
  1275. <legal all>
  1276. */
  1277. #define RX_MSDU_LINK_18_MSDU_2_RX_MSDU_DESC_INFO_DETAILS_DA_IS_MCBC_OFFSET 0x00000048
  1278. #define RX_MSDU_LINK_18_MSDU_2_RX_MSDU_DESC_INFO_DETAILS_DA_IS_MCBC_LSB 26
  1279. #define RX_MSDU_LINK_18_MSDU_2_RX_MSDU_DESC_INFO_DETAILS_DA_IS_MCBC_MASK 0x04000000
  1280. /* Description RX_MSDU_LINK_18_MSDU_2_RX_MSDU_DESC_INFO_DETAILS_DA_IDX_TIMEOUT
  1281. Parsed from RX_MSDU_END TLV . In the case MSDU spans
  1282. over multiple buffers, this field will be valid in the Last
  1283. buffer used by the MSDU
  1284. Indicates an unsuccessful MAC destination address search
  1285. due to the expiring of the search timer for this MSDU
  1286. <legal all>
  1287. */
  1288. #define RX_MSDU_LINK_18_MSDU_2_RX_MSDU_DESC_INFO_DETAILS_DA_IDX_TIMEOUT_OFFSET 0x00000048
  1289. #define RX_MSDU_LINK_18_MSDU_2_RX_MSDU_DESC_INFO_DETAILS_DA_IDX_TIMEOUT_LSB 27
  1290. #define RX_MSDU_LINK_18_MSDU_2_RX_MSDU_DESC_INFO_DETAILS_DA_IDX_TIMEOUT_MASK 0x08000000
  1291. /* Description RX_MSDU_LINK_18_MSDU_2_RX_MSDU_DESC_INFO_DETAILS_L3_HEADER_PADDING_MSB
  1292. Passed on from 'RX_MSDU_END' TLV (only the MSB is
  1293. reported as the LSB is always zero)
  1294. Number of bytes padded to make sure that the L3 header
  1295. will always start of a Dword boundary
  1296. <legal all>
  1297. */
  1298. #define RX_MSDU_LINK_18_MSDU_2_RX_MSDU_DESC_INFO_DETAILS_L3_HEADER_PADDING_MSB_OFFSET 0x00000048
  1299. #define RX_MSDU_LINK_18_MSDU_2_RX_MSDU_DESC_INFO_DETAILS_L3_HEADER_PADDING_MSB_LSB 28
  1300. #define RX_MSDU_LINK_18_MSDU_2_RX_MSDU_DESC_INFO_DETAILS_L3_HEADER_PADDING_MSB_MASK 0x10000000
  1301. /* Description RX_MSDU_LINK_18_MSDU_2_RX_MSDU_DESC_INFO_DETAILS_TCP_UDP_CHKSUM_FAIL
  1302. Passed on from 'RX_ATTENTION' TLV
  1303. Indicates that the computed checksum did not match the
  1304. checksum in the TCP/UDP header.
  1305. <legal all>
  1306. */
  1307. #define RX_MSDU_LINK_18_MSDU_2_RX_MSDU_DESC_INFO_DETAILS_TCP_UDP_CHKSUM_FAIL_OFFSET 0x00000048
  1308. #define RX_MSDU_LINK_18_MSDU_2_RX_MSDU_DESC_INFO_DETAILS_TCP_UDP_CHKSUM_FAIL_LSB 29
  1309. #define RX_MSDU_LINK_18_MSDU_2_RX_MSDU_DESC_INFO_DETAILS_TCP_UDP_CHKSUM_FAIL_MASK 0x20000000
  1310. /* Description RX_MSDU_LINK_18_MSDU_2_RX_MSDU_DESC_INFO_DETAILS_IP_CHKSUM_FAIL
  1311. Passed on from 'RX_ATTENTION' TLV
  1312. Indicates that the computed checksum did not match the
  1313. checksum in the IP header.
  1314. <legal all>
  1315. */
  1316. #define RX_MSDU_LINK_18_MSDU_2_RX_MSDU_DESC_INFO_DETAILS_IP_CHKSUM_FAIL_OFFSET 0x00000048
  1317. #define RX_MSDU_LINK_18_MSDU_2_RX_MSDU_DESC_INFO_DETAILS_IP_CHKSUM_FAIL_LSB 30
  1318. #define RX_MSDU_LINK_18_MSDU_2_RX_MSDU_DESC_INFO_DETAILS_IP_CHKSUM_FAIL_MASK 0x40000000
  1319. /* Description RX_MSDU_LINK_18_MSDU_2_RX_MSDU_DESC_INFO_DETAILS_RAW_MPDU
  1320. Passed on from 'RX_MPDU_INFO' structure in
  1321. 'RX_MPDU_START' TLV
  1322. Set to 1 by RXOLE when it has not performed any 802.11
  1323. to Ethernet/Natvie WiFi header conversion on this MPDU.
  1324. <legal all>
  1325. */
  1326. #define RX_MSDU_LINK_18_MSDU_2_RX_MSDU_DESC_INFO_DETAILS_RAW_MPDU_OFFSET 0x00000048
  1327. #define RX_MSDU_LINK_18_MSDU_2_RX_MSDU_DESC_INFO_DETAILS_RAW_MPDU_LSB 31
  1328. #define RX_MSDU_LINK_18_MSDU_2_RX_MSDU_DESC_INFO_DETAILS_RAW_MPDU_MASK 0x80000000
  1329. /* Description RX_MSDU_LINK_19_MSDU_2_RX_MSDU_DESC_INFO_DETAILS_SA_IDX_OR_SW_PEER_ID_14_0
  1330. Passed on from 'RX_MSDU_END' TLV (one MSB is omitted)
  1331. Based on a register configuration in RXDMA, this field
  1332. will contain:
  1333. The offset in the address search table which matches the
  1334. MAC source address
  1335. OR
  1336. 'sw_peer_id' from the address search entry corresponding
  1337. to the source address of the MSDU
  1338. <legal all>
  1339. */
  1340. #define RX_MSDU_LINK_19_MSDU_2_RX_MSDU_DESC_INFO_DETAILS_SA_IDX_OR_SW_PEER_ID_14_0_OFFSET 0x0000004c
  1341. #define RX_MSDU_LINK_19_MSDU_2_RX_MSDU_DESC_INFO_DETAILS_SA_IDX_OR_SW_PEER_ID_14_0_LSB 0
  1342. #define RX_MSDU_LINK_19_MSDU_2_RX_MSDU_DESC_INFO_DETAILS_SA_IDX_OR_SW_PEER_ID_14_0_MASK 0x00007fff
  1343. /* Description RX_MSDU_LINK_19_MSDU_2_RX_MSDU_DESC_INFO_DETAILS_MPDU_AST_IDX_OR_SW_PEER_ID_14_0
  1344. Passed on from 'RX_MPDU_INFO' structure in
  1345. 'RX_MPDU_START' TLV (one MSB is omitted)
  1346. Based on a register configuration in RXDMA, this field
  1347. will contain:
  1348. The index of the address search entry corresponding to
  1349. this MPDU (a value of 0xFFFF indicates an invalid AST index,
  1350. meaning that no AST entry was found or no AST search was
  1351. performed)
  1352. OR:
  1353. 'sw_peer_id' from the address search entry corresponding
  1354. to this MPDU (in case of ndp or phy_err or
  1355. AST_based_lookup_valid == 0, this field will be set to 0)
  1356. <legal all>
  1357. */
  1358. #define RX_MSDU_LINK_19_MSDU_2_RX_MSDU_DESC_INFO_DETAILS_MPDU_AST_IDX_OR_SW_PEER_ID_14_0_OFFSET 0x0000004c
  1359. #define RX_MSDU_LINK_19_MSDU_2_RX_MSDU_DESC_INFO_DETAILS_MPDU_AST_IDX_OR_SW_PEER_ID_14_0_LSB 15
  1360. #define RX_MSDU_LINK_19_MSDU_2_RX_MSDU_DESC_INFO_DETAILS_MPDU_AST_IDX_OR_SW_PEER_ID_14_0_MASK 0x3fff8000
  1361. /* Description RX_MSDU_LINK_19_MSDU_2_RX_MSDU_DESC_INFO_DETAILS_FR_DS
  1362. Passed on from 'RX_MPDU_INFO' structure in
  1363. 'RX_MPDU_START' TLV
  1364. Set if the 'from DS' bit is set in the frame control.
  1365. <legal all>
  1366. */
  1367. #define RX_MSDU_LINK_19_MSDU_2_RX_MSDU_DESC_INFO_DETAILS_FR_DS_OFFSET 0x0000004c
  1368. #define RX_MSDU_LINK_19_MSDU_2_RX_MSDU_DESC_INFO_DETAILS_FR_DS_LSB 30
  1369. #define RX_MSDU_LINK_19_MSDU_2_RX_MSDU_DESC_INFO_DETAILS_FR_DS_MASK 0x40000000
  1370. /* Description RX_MSDU_LINK_19_MSDU_2_RX_MSDU_DESC_INFO_DETAILS_TO_DS
  1371. Passed on from 'RX_MPDU_INFO' structure in
  1372. 'RX_MPDU_START' TLV
  1373. Set if the 'to DS' bit is set in the frame control.
  1374. <legal all>
  1375. */
  1376. #define RX_MSDU_LINK_19_MSDU_2_RX_MSDU_DESC_INFO_DETAILS_TO_DS_OFFSET 0x0000004c
  1377. #define RX_MSDU_LINK_19_MSDU_2_RX_MSDU_DESC_INFO_DETAILS_TO_DS_LSB 31
  1378. #define RX_MSDU_LINK_19_MSDU_2_RX_MSDU_DESC_INFO_DETAILS_TO_DS_MASK 0x80000000
  1379. /* EXTERNAL REFERENCE : struct rx_msdu_details msdu_3 */
  1380. /* EXTERNAL REFERENCE : struct buffer_addr_info buffer_addr_info_details */
  1381. /* Description RX_MSDU_LINK_20_MSDU_3_BUFFER_ADDR_INFO_DETAILS_BUFFER_ADDR_31_0
  1382. Address (lower 32 bits) of the MSDU buffer OR
  1383. MSDU_EXTENSION descriptor OR Link Descriptor
  1384. In case of 'NULL' pointer, this field is set to 0
  1385. <legal all>
  1386. */
  1387. #define RX_MSDU_LINK_20_MSDU_3_BUFFER_ADDR_INFO_DETAILS_BUFFER_ADDR_31_0_OFFSET 0x00000050
  1388. #define RX_MSDU_LINK_20_MSDU_3_BUFFER_ADDR_INFO_DETAILS_BUFFER_ADDR_31_0_LSB 0
  1389. #define RX_MSDU_LINK_20_MSDU_3_BUFFER_ADDR_INFO_DETAILS_BUFFER_ADDR_31_0_MASK 0xffffffff
  1390. /* Description RX_MSDU_LINK_21_MSDU_3_BUFFER_ADDR_INFO_DETAILS_BUFFER_ADDR_39_32
  1391. Address (upper 8 bits) of the MSDU buffer OR
  1392. MSDU_EXTENSION descriptor OR Link Descriptor
  1393. In case of 'NULL' pointer, this field is set to 0
  1394. <legal all>
  1395. */
  1396. #define RX_MSDU_LINK_21_MSDU_3_BUFFER_ADDR_INFO_DETAILS_BUFFER_ADDR_39_32_OFFSET 0x00000054
  1397. #define RX_MSDU_LINK_21_MSDU_3_BUFFER_ADDR_INFO_DETAILS_BUFFER_ADDR_39_32_LSB 0
  1398. #define RX_MSDU_LINK_21_MSDU_3_BUFFER_ADDR_INFO_DETAILS_BUFFER_ADDR_39_32_MASK 0x000000ff
  1399. /* Description RX_MSDU_LINK_21_MSDU_3_BUFFER_ADDR_INFO_DETAILS_RETURN_BUFFER_MANAGER
  1400. Consumer: WBM
  1401. Producer: SW/FW
  1402. In case of 'NULL' pointer, this field is set to 0
  1403. Indicates to which buffer manager the buffer OR
  1404. MSDU_EXTENSION descriptor OR link descriptor that is being
  1405. pointed to shall be returned after the frame has been
  1406. processed. It is used by WBM for routing purposes.
  1407. <enum 0 WBM_IDLE_BUF_LIST> This buffer shall be returned
  1408. to the WMB buffer idle list
  1409. <enum 1 WBM_IDLE_DESC_LIST> This buffer shall be
  1410. returned to the WMB idle link descriptor idle list
  1411. <enum 2 FW_BM> This buffer shall be returned to the FW
  1412. <enum 3 SW0_BM> This buffer shall be returned to the SW,
  1413. ring 0
  1414. <enum 4 SW1_BM> This buffer shall be returned to the SW,
  1415. ring 1
  1416. <enum 5 SW2_BM> This buffer shall be returned to the SW,
  1417. ring 2
  1418. <enum 6 SW3_BM> This buffer shall be returned to the SW,
  1419. ring 3
  1420. <enum 7 SW4_BM> This buffer shall be returned to the SW,
  1421. ring 4
  1422. <legal all>
  1423. */
  1424. #define RX_MSDU_LINK_21_MSDU_3_BUFFER_ADDR_INFO_DETAILS_RETURN_BUFFER_MANAGER_OFFSET 0x00000054
  1425. #define RX_MSDU_LINK_21_MSDU_3_BUFFER_ADDR_INFO_DETAILS_RETURN_BUFFER_MANAGER_LSB 8
  1426. #define RX_MSDU_LINK_21_MSDU_3_BUFFER_ADDR_INFO_DETAILS_RETURN_BUFFER_MANAGER_MASK 0x00000700
  1427. /* Description RX_MSDU_LINK_21_MSDU_3_BUFFER_ADDR_INFO_DETAILS_SW_BUFFER_COOKIE
  1428. Cookie field exclusively used by SW.
  1429. In case of 'NULL' pointer, this field is set to 0
  1430. HW ignores the contents, accept that it passes the
  1431. programmed value on to other descriptors together with the
  1432. physical address
  1433. Field can be used by SW to for example associate the
  1434. buffers physical address with the virtual address
  1435. The bit definitions as used by SW are within SW HLD
  1436. specification
  1437. NOTE1:
  1438. The three most significant bits can have a special
  1439. meaning in case this struct is embedded in a TX_MPDU_DETAILS
  1440. STRUCT, and field transmit_bw_restriction is set
  1441. In case of NON punctured transmission:
  1442. Sw_buffer_cookie[20:19] = 2'b00: 20 MHz TX only
  1443. Sw_buffer_cookie[20:19] = 2'b01: 40 MHz TX only
  1444. Sw_buffer_cookie[20:19] = 2'b10: 80 MHz TX only
  1445. Sw_buffer_cookie[20:19] = 2'b11: 160 MHz TX only
  1446. In case of punctured transmission:
  1447. Sw_buffer_cookie[20:18] = 3'b000: pattern 0 only
  1448. Sw_buffer_cookie[20:18] = 3'b001: pattern 1 only
  1449. Sw_buffer_cookie[20:18] = 3'b010: pattern 2 only
  1450. Sw_buffer_cookie[20:18] = 3'b011: pattern 3 only
  1451. Sw_buffer_cookie[20:18] = 3'b100: pattern 4 only
  1452. Sw_buffer_cookie[20:18] = 3'b101: pattern 5 only
  1453. Sw_buffer_cookie[20:18] = 3'b110: pattern 6 only
  1454. Sw_buffer_cookie[20:18] = 3'b111: pattern 7 only
  1455. Note: a punctured transmission is indicated by the
  1456. presence of TLV TX_PUNCTURE_SETUP embedded in the scheduler
  1457. TLV
  1458. NOTE 2:The five most significant bits can have a special
  1459. meaning in case this struct is embedded in an
  1460. RX_MSDU_DETAILS STRUCT, and Maple/Spruce Rx DMA is
  1461. configured for passing on the additional info
  1462. from 'RX_MPDU_INFO' structure in 'RX_MPDU_START' TLV
  1463. (FR56821). This is not supported in HastingsPrime, Pine or
  1464. Moselle.
  1465. Sw_buffer_cookie[20:17]: Tid: The TID field in the QoS
  1466. control field
  1467. Sw_buffer_cookie[16]: Mpdu_qos_control_valid: This field
  1468. indicates MPDUs with a QoS control field.
  1469. <legal all>
  1470. */
  1471. #define RX_MSDU_LINK_21_MSDU_3_BUFFER_ADDR_INFO_DETAILS_SW_BUFFER_COOKIE_OFFSET 0x00000054
  1472. #define RX_MSDU_LINK_21_MSDU_3_BUFFER_ADDR_INFO_DETAILS_SW_BUFFER_COOKIE_LSB 11
  1473. #define RX_MSDU_LINK_21_MSDU_3_BUFFER_ADDR_INFO_DETAILS_SW_BUFFER_COOKIE_MASK 0xfffff800
  1474. /* EXTERNAL REFERENCE : struct rx_msdu_desc_info rx_msdu_desc_info_details */
  1475. /* Description RX_MSDU_LINK_22_MSDU_3_RX_MSDU_DESC_INFO_DETAILS_FIRST_MSDU_IN_MPDU_FLAG
  1476. Parsed from RX_MSDU_END TLV . In the case MSDU spans
  1477. over multiple buffers, this field will be valid in the Last
  1478. buffer used by the MSDU
  1479. <enum 0 Not_first_msdu> This is not the first MSDU in
  1480. the MPDU.
  1481. <enum 1 first_msdu> This MSDU is the first one in the
  1482. MPDU.
  1483. <legal all>
  1484. */
  1485. #define RX_MSDU_LINK_22_MSDU_3_RX_MSDU_DESC_INFO_DETAILS_FIRST_MSDU_IN_MPDU_FLAG_OFFSET 0x00000058
  1486. #define RX_MSDU_LINK_22_MSDU_3_RX_MSDU_DESC_INFO_DETAILS_FIRST_MSDU_IN_MPDU_FLAG_LSB 0
  1487. #define RX_MSDU_LINK_22_MSDU_3_RX_MSDU_DESC_INFO_DETAILS_FIRST_MSDU_IN_MPDU_FLAG_MASK 0x00000001
  1488. /* Description RX_MSDU_LINK_22_MSDU_3_RX_MSDU_DESC_INFO_DETAILS_LAST_MSDU_IN_MPDU_FLAG
  1489. Consumer: WBM/REO/SW/FW
  1490. Producer: RXDMA
  1491. Parsed from RX_MSDU_END TLV . In the case MSDU spans
  1492. over multiple buffers, this field will be valid in the Last
  1493. buffer used by the MSDU
  1494. <enum 0 Not_last_msdu> There are more MSDUs linked to
  1495. this MSDU that belongs to this MPDU
  1496. <enum 1 Last_msdu> this MSDU is the last one in the
  1497. MPDU. This setting is only allowed in combination with
  1498. 'Msdu_continuation' set to 0. This implies that when an msdu
  1499. is spread out over multiple buffers and thus
  1500. msdu_continuation is set, only for the very last buffer of
  1501. the msdu, can the 'last_msdu_in_mpdu_flag' be set.
  1502. When both first_msdu_in_mpdu_flag and
  1503. last_msdu_in_mpdu_flag are set, the MPDU that this MSDU
  1504. belongs to only contains a single MSDU.
  1505. <legal all>
  1506. */
  1507. #define RX_MSDU_LINK_22_MSDU_3_RX_MSDU_DESC_INFO_DETAILS_LAST_MSDU_IN_MPDU_FLAG_OFFSET 0x00000058
  1508. #define RX_MSDU_LINK_22_MSDU_3_RX_MSDU_DESC_INFO_DETAILS_LAST_MSDU_IN_MPDU_FLAG_LSB 1
  1509. #define RX_MSDU_LINK_22_MSDU_3_RX_MSDU_DESC_INFO_DETAILS_LAST_MSDU_IN_MPDU_FLAG_MASK 0x00000002
  1510. /* Description RX_MSDU_LINK_22_MSDU_3_RX_MSDU_DESC_INFO_DETAILS_MSDU_CONTINUATION
  1511. When set, this MSDU buffer was not able to hold the
  1512. entire MSDU. The next buffer will therefor contain
  1513. additional information related to this MSDU.
  1514. <legal all>
  1515. */
  1516. #define RX_MSDU_LINK_22_MSDU_3_RX_MSDU_DESC_INFO_DETAILS_MSDU_CONTINUATION_OFFSET 0x00000058
  1517. #define RX_MSDU_LINK_22_MSDU_3_RX_MSDU_DESC_INFO_DETAILS_MSDU_CONTINUATION_LSB 2
  1518. #define RX_MSDU_LINK_22_MSDU_3_RX_MSDU_DESC_INFO_DETAILS_MSDU_CONTINUATION_MASK 0x00000004
  1519. /* Description RX_MSDU_LINK_22_MSDU_3_RX_MSDU_DESC_INFO_DETAILS_MSDU_LENGTH
  1520. Parsed from RX_MSDU_START TLV . In the case MSDU spans
  1521. over multiple buffers, this field will be valid in the First
  1522. buffer used by MSDU.
  1523. Full MSDU length in bytes after decapsulation.
  1524. This field is still valid for MPDU frames without
  1525. A-MSDU. It still represents MSDU length after decapsulation
  1526. Or in case of RAW MPDUs, it indicates the length of the
  1527. entire MPDU (without FCS field)
  1528. <legal all>
  1529. */
  1530. #define RX_MSDU_LINK_22_MSDU_3_RX_MSDU_DESC_INFO_DETAILS_MSDU_LENGTH_OFFSET 0x00000058
  1531. #define RX_MSDU_LINK_22_MSDU_3_RX_MSDU_DESC_INFO_DETAILS_MSDU_LENGTH_LSB 3
  1532. #define RX_MSDU_LINK_22_MSDU_3_RX_MSDU_DESC_INFO_DETAILS_MSDU_LENGTH_MASK 0x0001fff8
  1533. /* Description RX_MSDU_LINK_22_MSDU_3_RX_MSDU_DESC_INFO_DETAILS_REO_DESTINATION_INDICATION
  1534. Parsed from RX_MSDU_END TLV . In the case MSDU spans
  1535. over multiple buffers, this field will be valid in the Last
  1536. buffer used by the MSDU
  1537. The ID of the REO exit ring where the MSDU frame shall
  1538. push after (MPDU level) reordering has finished.
  1539. <enum 0 reo_destination_tcl> Reo will push the frame
  1540. into the REO2TCL ring
  1541. <enum 1 reo_destination_sw1> Reo will push the frame
  1542. into the REO2SW1 ring
  1543. <enum 2 reo_destination_sw2> Reo will push the frame
  1544. into the REO2SW2 ring
  1545. <enum 3 reo_destination_sw3> Reo will push the frame
  1546. into the REO2SW3 ring
  1547. <enum 4 reo_destination_sw4> Reo will push the frame
  1548. into the REO2SW4 ring
  1549. <enum 5 reo_destination_release> Reo will push the frame
  1550. into the REO_release ring
  1551. <enum 6 reo_destination_fw> Reo will push the frame into
  1552. the REO2FW ring
  1553. <enum 7 reo_destination_sw5> Reo will push the frame
  1554. into the REO2SW5 ring (REO remaps this in chips without
  1555. REO2SW5 ring, e.g. Pine)
  1556. <enum 8 reo_destination_sw6> Reo will push the frame
  1557. into the REO2SW6 ring (REO remaps this in chips without
  1558. REO2SW6 ring, e.g. Pine)
  1559. <enum 9 reo_destination_9> REO remaps this <enum 10
  1560. reo_destination_10> REO remaps this
  1561. <enum 11 reo_destination_11> REO remaps this
  1562. <enum 12 reo_destination_12> REO remaps this <enum 13
  1563. reo_destination_13> REO remaps this
  1564. <enum 14 reo_destination_14> REO remaps this
  1565. <enum 15 reo_destination_15> REO remaps this
  1566. <enum 16 reo_destination_16> REO remaps this
  1567. <enum 17 reo_destination_17> REO remaps this
  1568. <enum 18 reo_destination_18> REO remaps this
  1569. <enum 19 reo_destination_19> REO remaps this
  1570. <enum 20 reo_destination_20> REO remaps this
  1571. <enum 21 reo_destination_21> REO remaps this
  1572. <enum 22 reo_destination_22> REO remaps this
  1573. <enum 23 reo_destination_23> REO remaps this
  1574. <enum 24 reo_destination_24> REO remaps this
  1575. <enum 25 reo_destination_25> REO remaps this
  1576. <enum 26 reo_destination_26> REO remaps this
  1577. <enum 27 reo_destination_27> REO remaps this
  1578. <enum 28 reo_destination_28> REO remaps this
  1579. <enum 29 reo_destination_29> REO remaps this
  1580. <enum 30 reo_destination_30> REO remaps this
  1581. <enum 31 reo_destination_31> REO remaps this
  1582. <legal all>
  1583. */
  1584. #define RX_MSDU_LINK_22_MSDU_3_RX_MSDU_DESC_INFO_DETAILS_REO_DESTINATION_INDICATION_OFFSET 0x00000058
  1585. #define RX_MSDU_LINK_22_MSDU_3_RX_MSDU_DESC_INFO_DETAILS_REO_DESTINATION_INDICATION_LSB 17
  1586. #define RX_MSDU_LINK_22_MSDU_3_RX_MSDU_DESC_INFO_DETAILS_REO_DESTINATION_INDICATION_MASK 0x003e0000
  1587. /* Description RX_MSDU_LINK_22_MSDU_3_RX_MSDU_DESC_INFO_DETAILS_MSDU_DROP
  1588. Parsed from RX_MSDU_END TLV . In the case MSDU spans
  1589. over multiple buffers, this field will be valid in the Last
  1590. buffer used by the MSDU
  1591. When set, REO shall drop this MSDU and not forward it to
  1592. any other ring...
  1593. <legal all>
  1594. */
  1595. #define RX_MSDU_LINK_22_MSDU_3_RX_MSDU_DESC_INFO_DETAILS_MSDU_DROP_OFFSET 0x00000058
  1596. #define RX_MSDU_LINK_22_MSDU_3_RX_MSDU_DESC_INFO_DETAILS_MSDU_DROP_LSB 22
  1597. #define RX_MSDU_LINK_22_MSDU_3_RX_MSDU_DESC_INFO_DETAILS_MSDU_DROP_MASK 0x00400000
  1598. /* Description RX_MSDU_LINK_22_MSDU_3_RX_MSDU_DESC_INFO_DETAILS_SA_IS_VALID
  1599. Parsed from RX_MSDU_END TLV . In the case MSDU spans
  1600. over multiple buffers, this field will be valid in the Last
  1601. buffer used by the MSDU
  1602. Indicates that OLE found a valid SA entry for this MSDU
  1603. <legal all>
  1604. */
  1605. #define RX_MSDU_LINK_22_MSDU_3_RX_MSDU_DESC_INFO_DETAILS_SA_IS_VALID_OFFSET 0x00000058
  1606. #define RX_MSDU_LINK_22_MSDU_3_RX_MSDU_DESC_INFO_DETAILS_SA_IS_VALID_LSB 23
  1607. #define RX_MSDU_LINK_22_MSDU_3_RX_MSDU_DESC_INFO_DETAILS_SA_IS_VALID_MASK 0x00800000
  1608. /* Description RX_MSDU_LINK_22_MSDU_3_RX_MSDU_DESC_INFO_DETAILS_SA_IDX_TIMEOUT
  1609. Parsed from RX_MSDU_END TLV . In the case MSDU spans
  1610. over multiple buffers, this field will be valid in the Last
  1611. buffer used by the MSDU
  1612. Indicates an unsuccessful MAC source address search due
  1613. to the expiring of the search timer for this MSDU
  1614. <legal all>
  1615. */
  1616. #define RX_MSDU_LINK_22_MSDU_3_RX_MSDU_DESC_INFO_DETAILS_SA_IDX_TIMEOUT_OFFSET 0x00000058
  1617. #define RX_MSDU_LINK_22_MSDU_3_RX_MSDU_DESC_INFO_DETAILS_SA_IDX_TIMEOUT_LSB 24
  1618. #define RX_MSDU_LINK_22_MSDU_3_RX_MSDU_DESC_INFO_DETAILS_SA_IDX_TIMEOUT_MASK 0x01000000
  1619. /* Description RX_MSDU_LINK_22_MSDU_3_RX_MSDU_DESC_INFO_DETAILS_DA_IS_VALID
  1620. Parsed from RX_MSDU_END TLV . In the case MSDU spans
  1621. over multiple buffers, this field will be valid in the Last
  1622. buffer used by the MSDU
  1623. Indicates that OLE found a valid DA entry for this MSDU
  1624. <legal all>
  1625. */
  1626. #define RX_MSDU_LINK_22_MSDU_3_RX_MSDU_DESC_INFO_DETAILS_DA_IS_VALID_OFFSET 0x00000058
  1627. #define RX_MSDU_LINK_22_MSDU_3_RX_MSDU_DESC_INFO_DETAILS_DA_IS_VALID_LSB 25
  1628. #define RX_MSDU_LINK_22_MSDU_3_RX_MSDU_DESC_INFO_DETAILS_DA_IS_VALID_MASK 0x02000000
  1629. /* Description RX_MSDU_LINK_22_MSDU_3_RX_MSDU_DESC_INFO_DETAILS_DA_IS_MCBC
  1630. Field Only valid if da_is_valid is set
  1631. Indicates the DA address was a Multicast of Broadcast
  1632. address for this MSDU
  1633. <legal all>
  1634. */
  1635. #define RX_MSDU_LINK_22_MSDU_3_RX_MSDU_DESC_INFO_DETAILS_DA_IS_MCBC_OFFSET 0x00000058
  1636. #define RX_MSDU_LINK_22_MSDU_3_RX_MSDU_DESC_INFO_DETAILS_DA_IS_MCBC_LSB 26
  1637. #define RX_MSDU_LINK_22_MSDU_3_RX_MSDU_DESC_INFO_DETAILS_DA_IS_MCBC_MASK 0x04000000
  1638. /* Description RX_MSDU_LINK_22_MSDU_3_RX_MSDU_DESC_INFO_DETAILS_DA_IDX_TIMEOUT
  1639. Parsed from RX_MSDU_END TLV . In the case MSDU spans
  1640. over multiple buffers, this field will be valid in the Last
  1641. buffer used by the MSDU
  1642. Indicates an unsuccessful MAC destination address search
  1643. due to the expiring of the search timer for this MSDU
  1644. <legal all>
  1645. */
  1646. #define RX_MSDU_LINK_22_MSDU_3_RX_MSDU_DESC_INFO_DETAILS_DA_IDX_TIMEOUT_OFFSET 0x00000058
  1647. #define RX_MSDU_LINK_22_MSDU_3_RX_MSDU_DESC_INFO_DETAILS_DA_IDX_TIMEOUT_LSB 27
  1648. #define RX_MSDU_LINK_22_MSDU_3_RX_MSDU_DESC_INFO_DETAILS_DA_IDX_TIMEOUT_MASK 0x08000000
  1649. /* Description RX_MSDU_LINK_22_MSDU_3_RX_MSDU_DESC_INFO_DETAILS_L3_HEADER_PADDING_MSB
  1650. Passed on from 'RX_MSDU_END' TLV (only the MSB is
  1651. reported as the LSB is always zero)
  1652. Number of bytes padded to make sure that the L3 header
  1653. will always start of a Dword boundary
  1654. <legal all>
  1655. */
  1656. #define RX_MSDU_LINK_22_MSDU_3_RX_MSDU_DESC_INFO_DETAILS_L3_HEADER_PADDING_MSB_OFFSET 0x00000058
  1657. #define RX_MSDU_LINK_22_MSDU_3_RX_MSDU_DESC_INFO_DETAILS_L3_HEADER_PADDING_MSB_LSB 28
  1658. #define RX_MSDU_LINK_22_MSDU_3_RX_MSDU_DESC_INFO_DETAILS_L3_HEADER_PADDING_MSB_MASK 0x10000000
  1659. /* Description RX_MSDU_LINK_22_MSDU_3_RX_MSDU_DESC_INFO_DETAILS_TCP_UDP_CHKSUM_FAIL
  1660. Passed on from 'RX_ATTENTION' TLV
  1661. Indicates that the computed checksum did not match the
  1662. checksum in the TCP/UDP header.
  1663. <legal all>
  1664. */
  1665. #define RX_MSDU_LINK_22_MSDU_3_RX_MSDU_DESC_INFO_DETAILS_TCP_UDP_CHKSUM_FAIL_OFFSET 0x00000058
  1666. #define RX_MSDU_LINK_22_MSDU_3_RX_MSDU_DESC_INFO_DETAILS_TCP_UDP_CHKSUM_FAIL_LSB 29
  1667. #define RX_MSDU_LINK_22_MSDU_3_RX_MSDU_DESC_INFO_DETAILS_TCP_UDP_CHKSUM_FAIL_MASK 0x20000000
  1668. /* Description RX_MSDU_LINK_22_MSDU_3_RX_MSDU_DESC_INFO_DETAILS_IP_CHKSUM_FAIL
  1669. Passed on from 'RX_ATTENTION' TLV
  1670. Indicates that the computed checksum did not match the
  1671. checksum in the IP header.
  1672. <legal all>
  1673. */
  1674. #define RX_MSDU_LINK_22_MSDU_3_RX_MSDU_DESC_INFO_DETAILS_IP_CHKSUM_FAIL_OFFSET 0x00000058
  1675. #define RX_MSDU_LINK_22_MSDU_3_RX_MSDU_DESC_INFO_DETAILS_IP_CHKSUM_FAIL_LSB 30
  1676. #define RX_MSDU_LINK_22_MSDU_3_RX_MSDU_DESC_INFO_DETAILS_IP_CHKSUM_FAIL_MASK 0x40000000
  1677. /* Description RX_MSDU_LINK_22_MSDU_3_RX_MSDU_DESC_INFO_DETAILS_RAW_MPDU
  1678. Passed on from 'RX_MPDU_INFO' structure in
  1679. 'RX_MPDU_START' TLV
  1680. Set to 1 by RXOLE when it has not performed any 802.11
  1681. to Ethernet/Natvie WiFi header conversion on this MPDU.
  1682. <legal all>
  1683. */
  1684. #define RX_MSDU_LINK_22_MSDU_3_RX_MSDU_DESC_INFO_DETAILS_RAW_MPDU_OFFSET 0x00000058
  1685. #define RX_MSDU_LINK_22_MSDU_3_RX_MSDU_DESC_INFO_DETAILS_RAW_MPDU_LSB 31
  1686. #define RX_MSDU_LINK_22_MSDU_3_RX_MSDU_DESC_INFO_DETAILS_RAW_MPDU_MASK 0x80000000
  1687. /* Description RX_MSDU_LINK_23_MSDU_3_RX_MSDU_DESC_INFO_DETAILS_SA_IDX_OR_SW_PEER_ID_14_0
  1688. Passed on from 'RX_MSDU_END' TLV (one MSB is omitted)
  1689. Based on a register configuration in RXDMA, this field
  1690. will contain:
  1691. The offset in the address search table which matches the
  1692. MAC source address
  1693. OR
  1694. 'sw_peer_id' from the address search entry corresponding
  1695. to the source address of the MSDU
  1696. <legal all>
  1697. */
  1698. #define RX_MSDU_LINK_23_MSDU_3_RX_MSDU_DESC_INFO_DETAILS_SA_IDX_OR_SW_PEER_ID_14_0_OFFSET 0x0000005c
  1699. #define RX_MSDU_LINK_23_MSDU_3_RX_MSDU_DESC_INFO_DETAILS_SA_IDX_OR_SW_PEER_ID_14_0_LSB 0
  1700. #define RX_MSDU_LINK_23_MSDU_3_RX_MSDU_DESC_INFO_DETAILS_SA_IDX_OR_SW_PEER_ID_14_0_MASK 0x00007fff
  1701. /* Description RX_MSDU_LINK_23_MSDU_3_RX_MSDU_DESC_INFO_DETAILS_MPDU_AST_IDX_OR_SW_PEER_ID_14_0
  1702. Passed on from 'RX_MPDU_INFO' structure in
  1703. 'RX_MPDU_START' TLV (one MSB is omitted)
  1704. Based on a register configuration in RXDMA, this field
  1705. will contain:
  1706. The index of the address search entry corresponding to
  1707. this MPDU (a value of 0xFFFF indicates an invalid AST index,
  1708. meaning that no AST entry was found or no AST search was
  1709. performed)
  1710. OR:
  1711. 'sw_peer_id' from the address search entry corresponding
  1712. to this MPDU (in case of ndp or phy_err or
  1713. AST_based_lookup_valid == 0, this field will be set to 0)
  1714. <legal all>
  1715. */
  1716. #define RX_MSDU_LINK_23_MSDU_3_RX_MSDU_DESC_INFO_DETAILS_MPDU_AST_IDX_OR_SW_PEER_ID_14_0_OFFSET 0x0000005c
  1717. #define RX_MSDU_LINK_23_MSDU_3_RX_MSDU_DESC_INFO_DETAILS_MPDU_AST_IDX_OR_SW_PEER_ID_14_0_LSB 15
  1718. #define RX_MSDU_LINK_23_MSDU_3_RX_MSDU_DESC_INFO_DETAILS_MPDU_AST_IDX_OR_SW_PEER_ID_14_0_MASK 0x3fff8000
  1719. /* Description RX_MSDU_LINK_23_MSDU_3_RX_MSDU_DESC_INFO_DETAILS_FR_DS
  1720. Passed on from 'RX_MPDU_INFO' structure in
  1721. 'RX_MPDU_START' TLV
  1722. Set if the 'from DS' bit is set in the frame control.
  1723. <legal all>
  1724. */
  1725. #define RX_MSDU_LINK_23_MSDU_3_RX_MSDU_DESC_INFO_DETAILS_FR_DS_OFFSET 0x0000005c
  1726. #define RX_MSDU_LINK_23_MSDU_3_RX_MSDU_DESC_INFO_DETAILS_FR_DS_LSB 30
  1727. #define RX_MSDU_LINK_23_MSDU_3_RX_MSDU_DESC_INFO_DETAILS_FR_DS_MASK 0x40000000
  1728. /* Description RX_MSDU_LINK_23_MSDU_3_RX_MSDU_DESC_INFO_DETAILS_TO_DS
  1729. Passed on from 'RX_MPDU_INFO' structure in
  1730. 'RX_MPDU_START' TLV
  1731. Set if the 'to DS' bit is set in the frame control.
  1732. <legal all>
  1733. */
  1734. #define RX_MSDU_LINK_23_MSDU_3_RX_MSDU_DESC_INFO_DETAILS_TO_DS_OFFSET 0x0000005c
  1735. #define RX_MSDU_LINK_23_MSDU_3_RX_MSDU_DESC_INFO_DETAILS_TO_DS_LSB 31
  1736. #define RX_MSDU_LINK_23_MSDU_3_RX_MSDU_DESC_INFO_DETAILS_TO_DS_MASK 0x80000000
  1737. /* EXTERNAL REFERENCE : struct rx_msdu_details msdu_4 */
  1738. /* EXTERNAL REFERENCE : struct buffer_addr_info buffer_addr_info_details */
  1739. /* Description RX_MSDU_LINK_24_MSDU_4_BUFFER_ADDR_INFO_DETAILS_BUFFER_ADDR_31_0
  1740. Address (lower 32 bits) of the MSDU buffer OR
  1741. MSDU_EXTENSION descriptor OR Link Descriptor
  1742. In case of 'NULL' pointer, this field is set to 0
  1743. <legal all>
  1744. */
  1745. #define RX_MSDU_LINK_24_MSDU_4_BUFFER_ADDR_INFO_DETAILS_BUFFER_ADDR_31_0_OFFSET 0x00000060
  1746. #define RX_MSDU_LINK_24_MSDU_4_BUFFER_ADDR_INFO_DETAILS_BUFFER_ADDR_31_0_LSB 0
  1747. #define RX_MSDU_LINK_24_MSDU_4_BUFFER_ADDR_INFO_DETAILS_BUFFER_ADDR_31_0_MASK 0xffffffff
  1748. /* Description RX_MSDU_LINK_25_MSDU_4_BUFFER_ADDR_INFO_DETAILS_BUFFER_ADDR_39_32
  1749. Address (upper 8 bits) of the MSDU buffer OR
  1750. MSDU_EXTENSION descriptor OR Link Descriptor
  1751. In case of 'NULL' pointer, this field is set to 0
  1752. <legal all>
  1753. */
  1754. #define RX_MSDU_LINK_25_MSDU_4_BUFFER_ADDR_INFO_DETAILS_BUFFER_ADDR_39_32_OFFSET 0x00000064
  1755. #define RX_MSDU_LINK_25_MSDU_4_BUFFER_ADDR_INFO_DETAILS_BUFFER_ADDR_39_32_LSB 0
  1756. #define RX_MSDU_LINK_25_MSDU_4_BUFFER_ADDR_INFO_DETAILS_BUFFER_ADDR_39_32_MASK 0x000000ff
  1757. /* Description RX_MSDU_LINK_25_MSDU_4_BUFFER_ADDR_INFO_DETAILS_RETURN_BUFFER_MANAGER
  1758. Consumer: WBM
  1759. Producer: SW/FW
  1760. In case of 'NULL' pointer, this field is set to 0
  1761. Indicates to which buffer manager the buffer OR
  1762. MSDU_EXTENSION descriptor OR link descriptor that is being
  1763. pointed to shall be returned after the frame has been
  1764. processed. It is used by WBM for routing purposes.
  1765. <enum 0 WBM_IDLE_BUF_LIST> This buffer shall be returned
  1766. to the WMB buffer idle list
  1767. <enum 1 WBM_IDLE_DESC_LIST> This buffer shall be
  1768. returned to the WMB idle link descriptor idle list
  1769. <enum 2 FW_BM> This buffer shall be returned to the FW
  1770. <enum 3 SW0_BM> This buffer shall be returned to the SW,
  1771. ring 0
  1772. <enum 4 SW1_BM> This buffer shall be returned to the SW,
  1773. ring 1
  1774. <enum 5 SW2_BM> This buffer shall be returned to the SW,
  1775. ring 2
  1776. <enum 6 SW3_BM> This buffer shall be returned to the SW,
  1777. ring 3
  1778. <enum 7 SW4_BM> This buffer shall be returned to the SW,
  1779. ring 4
  1780. <legal all>
  1781. */
  1782. #define RX_MSDU_LINK_25_MSDU_4_BUFFER_ADDR_INFO_DETAILS_RETURN_BUFFER_MANAGER_OFFSET 0x00000064
  1783. #define RX_MSDU_LINK_25_MSDU_4_BUFFER_ADDR_INFO_DETAILS_RETURN_BUFFER_MANAGER_LSB 8
  1784. #define RX_MSDU_LINK_25_MSDU_4_BUFFER_ADDR_INFO_DETAILS_RETURN_BUFFER_MANAGER_MASK 0x00000700
  1785. /* Description RX_MSDU_LINK_25_MSDU_4_BUFFER_ADDR_INFO_DETAILS_SW_BUFFER_COOKIE
  1786. Cookie field exclusively used by SW.
  1787. In case of 'NULL' pointer, this field is set to 0
  1788. HW ignores the contents, accept that it passes the
  1789. programmed value on to other descriptors together with the
  1790. physical address
  1791. Field can be used by SW to for example associate the
  1792. buffers physical address with the virtual address
  1793. The bit definitions as used by SW are within SW HLD
  1794. specification
  1795. NOTE1:
  1796. The three most significant bits can have a special
  1797. meaning in case this struct is embedded in a TX_MPDU_DETAILS
  1798. STRUCT, and field transmit_bw_restriction is set
  1799. In case of NON punctured transmission:
  1800. Sw_buffer_cookie[20:19] = 2'b00: 20 MHz TX only
  1801. Sw_buffer_cookie[20:19] = 2'b01: 40 MHz TX only
  1802. Sw_buffer_cookie[20:19] = 2'b10: 80 MHz TX only
  1803. Sw_buffer_cookie[20:19] = 2'b11: 160 MHz TX only
  1804. In case of punctured transmission:
  1805. Sw_buffer_cookie[20:18] = 3'b000: pattern 0 only
  1806. Sw_buffer_cookie[20:18] = 3'b001: pattern 1 only
  1807. Sw_buffer_cookie[20:18] = 3'b010: pattern 2 only
  1808. Sw_buffer_cookie[20:18] = 3'b011: pattern 3 only
  1809. Sw_buffer_cookie[20:18] = 3'b100: pattern 4 only
  1810. Sw_buffer_cookie[20:18] = 3'b101: pattern 5 only
  1811. Sw_buffer_cookie[20:18] = 3'b110: pattern 6 only
  1812. Sw_buffer_cookie[20:18] = 3'b111: pattern 7 only
  1813. Note: a punctured transmission is indicated by the
  1814. presence of TLV TX_PUNCTURE_SETUP embedded in the scheduler
  1815. TLV
  1816. NOTE 2:The five most significant bits can have a special
  1817. meaning in case this struct is embedded in an
  1818. RX_MSDU_DETAILS STRUCT, and Maple/Spruce Rx DMA is
  1819. configured for passing on the additional info
  1820. from 'RX_MPDU_INFO' structure in 'RX_MPDU_START' TLV
  1821. (FR56821). This is not supported in HastingsPrime, Pine or
  1822. Moselle.
  1823. Sw_buffer_cookie[20:17]: Tid: The TID field in the QoS
  1824. control field
  1825. Sw_buffer_cookie[16]: Mpdu_qos_control_valid: This field
  1826. indicates MPDUs with a QoS control field.
  1827. <legal all>
  1828. */
  1829. #define RX_MSDU_LINK_25_MSDU_4_BUFFER_ADDR_INFO_DETAILS_SW_BUFFER_COOKIE_OFFSET 0x00000064
  1830. #define RX_MSDU_LINK_25_MSDU_4_BUFFER_ADDR_INFO_DETAILS_SW_BUFFER_COOKIE_LSB 11
  1831. #define RX_MSDU_LINK_25_MSDU_4_BUFFER_ADDR_INFO_DETAILS_SW_BUFFER_COOKIE_MASK 0xfffff800
  1832. /* EXTERNAL REFERENCE : struct rx_msdu_desc_info rx_msdu_desc_info_details */
  1833. /* Description RX_MSDU_LINK_26_MSDU_4_RX_MSDU_DESC_INFO_DETAILS_FIRST_MSDU_IN_MPDU_FLAG
  1834. Parsed from RX_MSDU_END TLV . In the case MSDU spans
  1835. over multiple buffers, this field will be valid in the Last
  1836. buffer used by the MSDU
  1837. <enum 0 Not_first_msdu> This is not the first MSDU in
  1838. the MPDU.
  1839. <enum 1 first_msdu> This MSDU is the first one in the
  1840. MPDU.
  1841. <legal all>
  1842. */
  1843. #define RX_MSDU_LINK_26_MSDU_4_RX_MSDU_DESC_INFO_DETAILS_FIRST_MSDU_IN_MPDU_FLAG_OFFSET 0x00000068
  1844. #define RX_MSDU_LINK_26_MSDU_4_RX_MSDU_DESC_INFO_DETAILS_FIRST_MSDU_IN_MPDU_FLAG_LSB 0
  1845. #define RX_MSDU_LINK_26_MSDU_4_RX_MSDU_DESC_INFO_DETAILS_FIRST_MSDU_IN_MPDU_FLAG_MASK 0x00000001
  1846. /* Description RX_MSDU_LINK_26_MSDU_4_RX_MSDU_DESC_INFO_DETAILS_LAST_MSDU_IN_MPDU_FLAG
  1847. Consumer: WBM/REO/SW/FW
  1848. Producer: RXDMA
  1849. Parsed from RX_MSDU_END TLV . In the case MSDU spans
  1850. over multiple buffers, this field will be valid in the Last
  1851. buffer used by the MSDU
  1852. <enum 0 Not_last_msdu> There are more MSDUs linked to
  1853. this MSDU that belongs to this MPDU
  1854. <enum 1 Last_msdu> this MSDU is the last one in the
  1855. MPDU. This setting is only allowed in combination with
  1856. 'Msdu_continuation' set to 0. This implies that when an msdu
  1857. is spread out over multiple buffers and thus
  1858. msdu_continuation is set, only for the very last buffer of
  1859. the msdu, can the 'last_msdu_in_mpdu_flag' be set.
  1860. When both first_msdu_in_mpdu_flag and
  1861. last_msdu_in_mpdu_flag are set, the MPDU that this MSDU
  1862. belongs to only contains a single MSDU.
  1863. <legal all>
  1864. */
  1865. #define RX_MSDU_LINK_26_MSDU_4_RX_MSDU_DESC_INFO_DETAILS_LAST_MSDU_IN_MPDU_FLAG_OFFSET 0x00000068
  1866. #define RX_MSDU_LINK_26_MSDU_4_RX_MSDU_DESC_INFO_DETAILS_LAST_MSDU_IN_MPDU_FLAG_LSB 1
  1867. #define RX_MSDU_LINK_26_MSDU_4_RX_MSDU_DESC_INFO_DETAILS_LAST_MSDU_IN_MPDU_FLAG_MASK 0x00000002
  1868. /* Description RX_MSDU_LINK_26_MSDU_4_RX_MSDU_DESC_INFO_DETAILS_MSDU_CONTINUATION
  1869. When set, this MSDU buffer was not able to hold the
  1870. entire MSDU. The next buffer will therefor contain
  1871. additional information related to this MSDU.
  1872. <legal all>
  1873. */
  1874. #define RX_MSDU_LINK_26_MSDU_4_RX_MSDU_DESC_INFO_DETAILS_MSDU_CONTINUATION_OFFSET 0x00000068
  1875. #define RX_MSDU_LINK_26_MSDU_4_RX_MSDU_DESC_INFO_DETAILS_MSDU_CONTINUATION_LSB 2
  1876. #define RX_MSDU_LINK_26_MSDU_4_RX_MSDU_DESC_INFO_DETAILS_MSDU_CONTINUATION_MASK 0x00000004
  1877. /* Description RX_MSDU_LINK_26_MSDU_4_RX_MSDU_DESC_INFO_DETAILS_MSDU_LENGTH
  1878. Parsed from RX_MSDU_START TLV . In the case MSDU spans
  1879. over multiple buffers, this field will be valid in the First
  1880. buffer used by MSDU.
  1881. Full MSDU length in bytes after decapsulation.
  1882. This field is still valid for MPDU frames without
  1883. A-MSDU. It still represents MSDU length after decapsulation
  1884. Or in case of RAW MPDUs, it indicates the length of the
  1885. entire MPDU (without FCS field)
  1886. <legal all>
  1887. */
  1888. #define RX_MSDU_LINK_26_MSDU_4_RX_MSDU_DESC_INFO_DETAILS_MSDU_LENGTH_OFFSET 0x00000068
  1889. #define RX_MSDU_LINK_26_MSDU_4_RX_MSDU_DESC_INFO_DETAILS_MSDU_LENGTH_LSB 3
  1890. #define RX_MSDU_LINK_26_MSDU_4_RX_MSDU_DESC_INFO_DETAILS_MSDU_LENGTH_MASK 0x0001fff8
  1891. /* Description RX_MSDU_LINK_26_MSDU_4_RX_MSDU_DESC_INFO_DETAILS_REO_DESTINATION_INDICATION
  1892. Parsed from RX_MSDU_END TLV . In the case MSDU spans
  1893. over multiple buffers, this field will be valid in the Last
  1894. buffer used by the MSDU
  1895. The ID of the REO exit ring where the MSDU frame shall
  1896. push after (MPDU level) reordering has finished.
  1897. <enum 0 reo_destination_tcl> Reo will push the frame
  1898. into the REO2TCL ring
  1899. <enum 1 reo_destination_sw1> Reo will push the frame
  1900. into the REO2SW1 ring
  1901. <enum 2 reo_destination_sw2> Reo will push the frame
  1902. into the REO2SW2 ring
  1903. <enum 3 reo_destination_sw3> Reo will push the frame
  1904. into the REO2SW3 ring
  1905. <enum 4 reo_destination_sw4> Reo will push the frame
  1906. into the REO2SW4 ring
  1907. <enum 5 reo_destination_release> Reo will push the frame
  1908. into the REO_release ring
  1909. <enum 6 reo_destination_fw> Reo will push the frame into
  1910. the REO2FW ring
  1911. <enum 7 reo_destination_sw5> Reo will push the frame
  1912. into the REO2SW5 ring (REO remaps this in chips without
  1913. REO2SW5 ring, e.g. Pine)
  1914. <enum 8 reo_destination_sw6> Reo will push the frame
  1915. into the REO2SW6 ring (REO remaps this in chips without
  1916. REO2SW6 ring, e.g. Pine)
  1917. <enum 9 reo_destination_9> REO remaps this <enum 10
  1918. reo_destination_10> REO remaps this
  1919. <enum 11 reo_destination_11> REO remaps this
  1920. <enum 12 reo_destination_12> REO remaps this <enum 13
  1921. reo_destination_13> REO remaps this
  1922. <enum 14 reo_destination_14> REO remaps this
  1923. <enum 15 reo_destination_15> REO remaps this
  1924. <enum 16 reo_destination_16> REO remaps this
  1925. <enum 17 reo_destination_17> REO remaps this
  1926. <enum 18 reo_destination_18> REO remaps this
  1927. <enum 19 reo_destination_19> REO remaps this
  1928. <enum 20 reo_destination_20> REO remaps this
  1929. <enum 21 reo_destination_21> REO remaps this
  1930. <enum 22 reo_destination_22> REO remaps this
  1931. <enum 23 reo_destination_23> REO remaps this
  1932. <enum 24 reo_destination_24> REO remaps this
  1933. <enum 25 reo_destination_25> REO remaps this
  1934. <enum 26 reo_destination_26> REO remaps this
  1935. <enum 27 reo_destination_27> REO remaps this
  1936. <enum 28 reo_destination_28> REO remaps this
  1937. <enum 29 reo_destination_29> REO remaps this
  1938. <enum 30 reo_destination_30> REO remaps this
  1939. <enum 31 reo_destination_31> REO remaps this
  1940. <legal all>
  1941. */
  1942. #define RX_MSDU_LINK_26_MSDU_4_RX_MSDU_DESC_INFO_DETAILS_REO_DESTINATION_INDICATION_OFFSET 0x00000068
  1943. #define RX_MSDU_LINK_26_MSDU_4_RX_MSDU_DESC_INFO_DETAILS_REO_DESTINATION_INDICATION_LSB 17
  1944. #define RX_MSDU_LINK_26_MSDU_4_RX_MSDU_DESC_INFO_DETAILS_REO_DESTINATION_INDICATION_MASK 0x003e0000
  1945. /* Description RX_MSDU_LINK_26_MSDU_4_RX_MSDU_DESC_INFO_DETAILS_MSDU_DROP
  1946. Parsed from RX_MSDU_END TLV . In the case MSDU spans
  1947. over multiple buffers, this field will be valid in the Last
  1948. buffer used by the MSDU
  1949. When set, REO shall drop this MSDU and not forward it to
  1950. any other ring...
  1951. <legal all>
  1952. */
  1953. #define RX_MSDU_LINK_26_MSDU_4_RX_MSDU_DESC_INFO_DETAILS_MSDU_DROP_OFFSET 0x00000068
  1954. #define RX_MSDU_LINK_26_MSDU_4_RX_MSDU_DESC_INFO_DETAILS_MSDU_DROP_LSB 22
  1955. #define RX_MSDU_LINK_26_MSDU_4_RX_MSDU_DESC_INFO_DETAILS_MSDU_DROP_MASK 0x00400000
  1956. /* Description RX_MSDU_LINK_26_MSDU_4_RX_MSDU_DESC_INFO_DETAILS_SA_IS_VALID
  1957. Parsed from RX_MSDU_END TLV . In the case MSDU spans
  1958. over multiple buffers, this field will be valid in the Last
  1959. buffer used by the MSDU
  1960. Indicates that OLE found a valid SA entry for this MSDU
  1961. <legal all>
  1962. */
  1963. #define RX_MSDU_LINK_26_MSDU_4_RX_MSDU_DESC_INFO_DETAILS_SA_IS_VALID_OFFSET 0x00000068
  1964. #define RX_MSDU_LINK_26_MSDU_4_RX_MSDU_DESC_INFO_DETAILS_SA_IS_VALID_LSB 23
  1965. #define RX_MSDU_LINK_26_MSDU_4_RX_MSDU_DESC_INFO_DETAILS_SA_IS_VALID_MASK 0x00800000
  1966. /* Description RX_MSDU_LINK_26_MSDU_4_RX_MSDU_DESC_INFO_DETAILS_SA_IDX_TIMEOUT
  1967. Parsed from RX_MSDU_END TLV . In the case MSDU spans
  1968. over multiple buffers, this field will be valid in the Last
  1969. buffer used by the MSDU
  1970. Indicates an unsuccessful MAC source address search due
  1971. to the expiring of the search timer for this MSDU
  1972. <legal all>
  1973. */
  1974. #define RX_MSDU_LINK_26_MSDU_4_RX_MSDU_DESC_INFO_DETAILS_SA_IDX_TIMEOUT_OFFSET 0x00000068
  1975. #define RX_MSDU_LINK_26_MSDU_4_RX_MSDU_DESC_INFO_DETAILS_SA_IDX_TIMEOUT_LSB 24
  1976. #define RX_MSDU_LINK_26_MSDU_4_RX_MSDU_DESC_INFO_DETAILS_SA_IDX_TIMEOUT_MASK 0x01000000
  1977. /* Description RX_MSDU_LINK_26_MSDU_4_RX_MSDU_DESC_INFO_DETAILS_DA_IS_VALID
  1978. Parsed from RX_MSDU_END TLV . In the case MSDU spans
  1979. over multiple buffers, this field will be valid in the Last
  1980. buffer used by the MSDU
  1981. Indicates that OLE found a valid DA entry for this MSDU
  1982. <legal all>
  1983. */
  1984. #define RX_MSDU_LINK_26_MSDU_4_RX_MSDU_DESC_INFO_DETAILS_DA_IS_VALID_OFFSET 0x00000068
  1985. #define RX_MSDU_LINK_26_MSDU_4_RX_MSDU_DESC_INFO_DETAILS_DA_IS_VALID_LSB 25
  1986. #define RX_MSDU_LINK_26_MSDU_4_RX_MSDU_DESC_INFO_DETAILS_DA_IS_VALID_MASK 0x02000000
  1987. /* Description RX_MSDU_LINK_26_MSDU_4_RX_MSDU_DESC_INFO_DETAILS_DA_IS_MCBC
  1988. Field Only valid if da_is_valid is set
  1989. Indicates the DA address was a Multicast of Broadcast
  1990. address for this MSDU
  1991. <legal all>
  1992. */
  1993. #define RX_MSDU_LINK_26_MSDU_4_RX_MSDU_DESC_INFO_DETAILS_DA_IS_MCBC_OFFSET 0x00000068
  1994. #define RX_MSDU_LINK_26_MSDU_4_RX_MSDU_DESC_INFO_DETAILS_DA_IS_MCBC_LSB 26
  1995. #define RX_MSDU_LINK_26_MSDU_4_RX_MSDU_DESC_INFO_DETAILS_DA_IS_MCBC_MASK 0x04000000
  1996. /* Description RX_MSDU_LINK_26_MSDU_4_RX_MSDU_DESC_INFO_DETAILS_DA_IDX_TIMEOUT
  1997. Parsed from RX_MSDU_END TLV . In the case MSDU spans
  1998. over multiple buffers, this field will be valid in the Last
  1999. buffer used by the MSDU
  2000. Indicates an unsuccessful MAC destination address search
  2001. due to the expiring of the search timer for this MSDU
  2002. <legal all>
  2003. */
  2004. #define RX_MSDU_LINK_26_MSDU_4_RX_MSDU_DESC_INFO_DETAILS_DA_IDX_TIMEOUT_OFFSET 0x00000068
  2005. #define RX_MSDU_LINK_26_MSDU_4_RX_MSDU_DESC_INFO_DETAILS_DA_IDX_TIMEOUT_LSB 27
  2006. #define RX_MSDU_LINK_26_MSDU_4_RX_MSDU_DESC_INFO_DETAILS_DA_IDX_TIMEOUT_MASK 0x08000000
  2007. /* Description RX_MSDU_LINK_26_MSDU_4_RX_MSDU_DESC_INFO_DETAILS_L3_HEADER_PADDING_MSB
  2008. Passed on from 'RX_MSDU_END' TLV (only the MSB is
  2009. reported as the LSB is always zero)
  2010. Number of bytes padded to make sure that the L3 header
  2011. will always start of a Dword boundary
  2012. <legal all>
  2013. */
  2014. #define RX_MSDU_LINK_26_MSDU_4_RX_MSDU_DESC_INFO_DETAILS_L3_HEADER_PADDING_MSB_OFFSET 0x00000068
  2015. #define RX_MSDU_LINK_26_MSDU_4_RX_MSDU_DESC_INFO_DETAILS_L3_HEADER_PADDING_MSB_LSB 28
  2016. #define RX_MSDU_LINK_26_MSDU_4_RX_MSDU_DESC_INFO_DETAILS_L3_HEADER_PADDING_MSB_MASK 0x10000000
  2017. /* Description RX_MSDU_LINK_26_MSDU_4_RX_MSDU_DESC_INFO_DETAILS_TCP_UDP_CHKSUM_FAIL
  2018. Passed on from 'RX_ATTENTION' TLV
  2019. Indicates that the computed checksum did not match the
  2020. checksum in the TCP/UDP header.
  2021. <legal all>
  2022. */
  2023. #define RX_MSDU_LINK_26_MSDU_4_RX_MSDU_DESC_INFO_DETAILS_TCP_UDP_CHKSUM_FAIL_OFFSET 0x00000068
  2024. #define RX_MSDU_LINK_26_MSDU_4_RX_MSDU_DESC_INFO_DETAILS_TCP_UDP_CHKSUM_FAIL_LSB 29
  2025. #define RX_MSDU_LINK_26_MSDU_4_RX_MSDU_DESC_INFO_DETAILS_TCP_UDP_CHKSUM_FAIL_MASK 0x20000000
  2026. /* Description RX_MSDU_LINK_26_MSDU_4_RX_MSDU_DESC_INFO_DETAILS_IP_CHKSUM_FAIL
  2027. Passed on from 'RX_ATTENTION' TLV
  2028. Indicates that the computed checksum did not match the
  2029. checksum in the IP header.
  2030. <legal all>
  2031. */
  2032. #define RX_MSDU_LINK_26_MSDU_4_RX_MSDU_DESC_INFO_DETAILS_IP_CHKSUM_FAIL_OFFSET 0x00000068
  2033. #define RX_MSDU_LINK_26_MSDU_4_RX_MSDU_DESC_INFO_DETAILS_IP_CHKSUM_FAIL_LSB 30
  2034. #define RX_MSDU_LINK_26_MSDU_4_RX_MSDU_DESC_INFO_DETAILS_IP_CHKSUM_FAIL_MASK 0x40000000
  2035. /* Description RX_MSDU_LINK_26_MSDU_4_RX_MSDU_DESC_INFO_DETAILS_RAW_MPDU
  2036. Passed on from 'RX_MPDU_INFO' structure in
  2037. 'RX_MPDU_START' TLV
  2038. Set to 1 by RXOLE when it has not performed any 802.11
  2039. to Ethernet/Natvie WiFi header conversion on this MPDU.
  2040. <legal all>
  2041. */
  2042. #define RX_MSDU_LINK_26_MSDU_4_RX_MSDU_DESC_INFO_DETAILS_RAW_MPDU_OFFSET 0x00000068
  2043. #define RX_MSDU_LINK_26_MSDU_4_RX_MSDU_DESC_INFO_DETAILS_RAW_MPDU_LSB 31
  2044. #define RX_MSDU_LINK_26_MSDU_4_RX_MSDU_DESC_INFO_DETAILS_RAW_MPDU_MASK 0x80000000
  2045. /* Description RX_MSDU_LINK_27_MSDU_4_RX_MSDU_DESC_INFO_DETAILS_SA_IDX_OR_SW_PEER_ID_14_0
  2046. Passed on from 'RX_MSDU_END' TLV (one MSB is omitted)
  2047. Based on a register configuration in RXDMA, this field
  2048. will contain:
  2049. The offset in the address search table which matches the
  2050. MAC source address
  2051. OR
  2052. 'sw_peer_id' from the address search entry corresponding
  2053. to the source address of the MSDU
  2054. <legal all>
  2055. */
  2056. #define RX_MSDU_LINK_27_MSDU_4_RX_MSDU_DESC_INFO_DETAILS_SA_IDX_OR_SW_PEER_ID_14_0_OFFSET 0x0000006c
  2057. #define RX_MSDU_LINK_27_MSDU_4_RX_MSDU_DESC_INFO_DETAILS_SA_IDX_OR_SW_PEER_ID_14_0_LSB 0
  2058. #define RX_MSDU_LINK_27_MSDU_4_RX_MSDU_DESC_INFO_DETAILS_SA_IDX_OR_SW_PEER_ID_14_0_MASK 0x00007fff
  2059. /* Description RX_MSDU_LINK_27_MSDU_4_RX_MSDU_DESC_INFO_DETAILS_MPDU_AST_IDX_OR_SW_PEER_ID_14_0
  2060. Passed on from 'RX_MPDU_INFO' structure in
  2061. 'RX_MPDU_START' TLV (one MSB is omitted)
  2062. Based on a register configuration in RXDMA, this field
  2063. will contain:
  2064. The index of the address search entry corresponding to
  2065. this MPDU (a value of 0xFFFF indicates an invalid AST index,
  2066. meaning that no AST entry was found or no AST search was
  2067. performed)
  2068. OR:
  2069. 'sw_peer_id' from the address search entry corresponding
  2070. to this MPDU (in case of ndp or phy_err or
  2071. AST_based_lookup_valid == 0, this field will be set to 0)
  2072. <legal all>
  2073. */
  2074. #define RX_MSDU_LINK_27_MSDU_4_RX_MSDU_DESC_INFO_DETAILS_MPDU_AST_IDX_OR_SW_PEER_ID_14_0_OFFSET 0x0000006c
  2075. #define RX_MSDU_LINK_27_MSDU_4_RX_MSDU_DESC_INFO_DETAILS_MPDU_AST_IDX_OR_SW_PEER_ID_14_0_LSB 15
  2076. #define RX_MSDU_LINK_27_MSDU_4_RX_MSDU_DESC_INFO_DETAILS_MPDU_AST_IDX_OR_SW_PEER_ID_14_0_MASK 0x3fff8000
  2077. /* Description RX_MSDU_LINK_27_MSDU_4_RX_MSDU_DESC_INFO_DETAILS_FR_DS
  2078. Passed on from 'RX_MPDU_INFO' structure in
  2079. 'RX_MPDU_START' TLV
  2080. Set if the 'from DS' bit is set in the frame control.
  2081. <legal all>
  2082. */
  2083. #define RX_MSDU_LINK_27_MSDU_4_RX_MSDU_DESC_INFO_DETAILS_FR_DS_OFFSET 0x0000006c
  2084. #define RX_MSDU_LINK_27_MSDU_4_RX_MSDU_DESC_INFO_DETAILS_FR_DS_LSB 30
  2085. #define RX_MSDU_LINK_27_MSDU_4_RX_MSDU_DESC_INFO_DETAILS_FR_DS_MASK 0x40000000
  2086. /* Description RX_MSDU_LINK_27_MSDU_4_RX_MSDU_DESC_INFO_DETAILS_TO_DS
  2087. Passed on from 'RX_MPDU_INFO' structure in
  2088. 'RX_MPDU_START' TLV
  2089. Set if the 'to DS' bit is set in the frame control.
  2090. <legal all>
  2091. */
  2092. #define RX_MSDU_LINK_27_MSDU_4_RX_MSDU_DESC_INFO_DETAILS_TO_DS_OFFSET 0x0000006c
  2093. #define RX_MSDU_LINK_27_MSDU_4_RX_MSDU_DESC_INFO_DETAILS_TO_DS_LSB 31
  2094. #define RX_MSDU_LINK_27_MSDU_4_RX_MSDU_DESC_INFO_DETAILS_TO_DS_MASK 0x80000000
  2095. /* EXTERNAL REFERENCE : struct rx_msdu_details msdu_5 */
  2096. /* EXTERNAL REFERENCE : struct buffer_addr_info buffer_addr_info_details */
  2097. /* Description RX_MSDU_LINK_28_MSDU_5_BUFFER_ADDR_INFO_DETAILS_BUFFER_ADDR_31_0
  2098. Address (lower 32 bits) of the MSDU buffer OR
  2099. MSDU_EXTENSION descriptor OR Link Descriptor
  2100. In case of 'NULL' pointer, this field is set to 0
  2101. <legal all>
  2102. */
  2103. #define RX_MSDU_LINK_28_MSDU_5_BUFFER_ADDR_INFO_DETAILS_BUFFER_ADDR_31_0_OFFSET 0x00000070
  2104. #define RX_MSDU_LINK_28_MSDU_5_BUFFER_ADDR_INFO_DETAILS_BUFFER_ADDR_31_0_LSB 0
  2105. #define RX_MSDU_LINK_28_MSDU_5_BUFFER_ADDR_INFO_DETAILS_BUFFER_ADDR_31_0_MASK 0xffffffff
  2106. /* Description RX_MSDU_LINK_29_MSDU_5_BUFFER_ADDR_INFO_DETAILS_BUFFER_ADDR_39_32
  2107. Address (upper 8 bits) of the MSDU buffer OR
  2108. MSDU_EXTENSION descriptor OR Link Descriptor
  2109. In case of 'NULL' pointer, this field is set to 0
  2110. <legal all>
  2111. */
  2112. #define RX_MSDU_LINK_29_MSDU_5_BUFFER_ADDR_INFO_DETAILS_BUFFER_ADDR_39_32_OFFSET 0x00000074
  2113. #define RX_MSDU_LINK_29_MSDU_5_BUFFER_ADDR_INFO_DETAILS_BUFFER_ADDR_39_32_LSB 0
  2114. #define RX_MSDU_LINK_29_MSDU_5_BUFFER_ADDR_INFO_DETAILS_BUFFER_ADDR_39_32_MASK 0x000000ff
  2115. /* Description RX_MSDU_LINK_29_MSDU_5_BUFFER_ADDR_INFO_DETAILS_RETURN_BUFFER_MANAGER
  2116. Consumer: WBM
  2117. Producer: SW/FW
  2118. In case of 'NULL' pointer, this field is set to 0
  2119. Indicates to which buffer manager the buffer OR
  2120. MSDU_EXTENSION descriptor OR link descriptor that is being
  2121. pointed to shall be returned after the frame has been
  2122. processed. It is used by WBM for routing purposes.
  2123. <enum 0 WBM_IDLE_BUF_LIST> This buffer shall be returned
  2124. to the WMB buffer idle list
  2125. <enum 1 WBM_IDLE_DESC_LIST> This buffer shall be
  2126. returned to the WMB idle link descriptor idle list
  2127. <enum 2 FW_BM> This buffer shall be returned to the FW
  2128. <enum 3 SW0_BM> This buffer shall be returned to the SW,
  2129. ring 0
  2130. <enum 4 SW1_BM> This buffer shall be returned to the SW,
  2131. ring 1
  2132. <enum 5 SW2_BM> This buffer shall be returned to the SW,
  2133. ring 2
  2134. <enum 6 SW3_BM> This buffer shall be returned to the SW,
  2135. ring 3
  2136. <enum 7 SW4_BM> This buffer shall be returned to the SW,
  2137. ring 4
  2138. <legal all>
  2139. */
  2140. #define RX_MSDU_LINK_29_MSDU_5_BUFFER_ADDR_INFO_DETAILS_RETURN_BUFFER_MANAGER_OFFSET 0x00000074
  2141. #define RX_MSDU_LINK_29_MSDU_5_BUFFER_ADDR_INFO_DETAILS_RETURN_BUFFER_MANAGER_LSB 8
  2142. #define RX_MSDU_LINK_29_MSDU_5_BUFFER_ADDR_INFO_DETAILS_RETURN_BUFFER_MANAGER_MASK 0x00000700
  2143. /* Description RX_MSDU_LINK_29_MSDU_5_BUFFER_ADDR_INFO_DETAILS_SW_BUFFER_COOKIE
  2144. Cookie field exclusively used by SW.
  2145. In case of 'NULL' pointer, this field is set to 0
  2146. HW ignores the contents, accept that it passes the
  2147. programmed value on to other descriptors together with the
  2148. physical address
  2149. Field can be used by SW to for example associate the
  2150. buffers physical address with the virtual address
  2151. The bit definitions as used by SW are within SW HLD
  2152. specification
  2153. NOTE1:
  2154. The three most significant bits can have a special
  2155. meaning in case this struct is embedded in a TX_MPDU_DETAILS
  2156. STRUCT, and field transmit_bw_restriction is set
  2157. In case of NON punctured transmission:
  2158. Sw_buffer_cookie[20:19] = 2'b00: 20 MHz TX only
  2159. Sw_buffer_cookie[20:19] = 2'b01: 40 MHz TX only
  2160. Sw_buffer_cookie[20:19] = 2'b10: 80 MHz TX only
  2161. Sw_buffer_cookie[20:19] = 2'b11: 160 MHz TX only
  2162. In case of punctured transmission:
  2163. Sw_buffer_cookie[20:18] = 3'b000: pattern 0 only
  2164. Sw_buffer_cookie[20:18] = 3'b001: pattern 1 only
  2165. Sw_buffer_cookie[20:18] = 3'b010: pattern 2 only
  2166. Sw_buffer_cookie[20:18] = 3'b011: pattern 3 only
  2167. Sw_buffer_cookie[20:18] = 3'b100: pattern 4 only
  2168. Sw_buffer_cookie[20:18] = 3'b101: pattern 5 only
  2169. Sw_buffer_cookie[20:18] = 3'b110: pattern 6 only
  2170. Sw_buffer_cookie[20:18] = 3'b111: pattern 7 only
  2171. Note: a punctured transmission is indicated by the
  2172. presence of TLV TX_PUNCTURE_SETUP embedded in the scheduler
  2173. TLV
  2174. NOTE 2:The five most significant bits can have a special
  2175. meaning in case this struct is embedded in an
  2176. RX_MSDU_DETAILS STRUCT, and Maple/Spruce Rx DMA is
  2177. configured for passing on the additional info
  2178. from 'RX_MPDU_INFO' structure in 'RX_MPDU_START' TLV
  2179. (FR56821). This is not supported in HastingsPrime, Pine or
  2180. Moselle.
  2181. Sw_buffer_cookie[20:17]: Tid: The TID field in the QoS
  2182. control field
  2183. Sw_buffer_cookie[16]: Mpdu_qos_control_valid: This field
  2184. indicates MPDUs with a QoS control field.
  2185. <legal all>
  2186. */
  2187. #define RX_MSDU_LINK_29_MSDU_5_BUFFER_ADDR_INFO_DETAILS_SW_BUFFER_COOKIE_OFFSET 0x00000074
  2188. #define RX_MSDU_LINK_29_MSDU_5_BUFFER_ADDR_INFO_DETAILS_SW_BUFFER_COOKIE_LSB 11
  2189. #define RX_MSDU_LINK_29_MSDU_5_BUFFER_ADDR_INFO_DETAILS_SW_BUFFER_COOKIE_MASK 0xfffff800
  2190. /* EXTERNAL REFERENCE : struct rx_msdu_desc_info rx_msdu_desc_info_details */
  2191. /* Description RX_MSDU_LINK_30_MSDU_5_RX_MSDU_DESC_INFO_DETAILS_FIRST_MSDU_IN_MPDU_FLAG
  2192. Parsed from RX_MSDU_END TLV . In the case MSDU spans
  2193. over multiple buffers, this field will be valid in the Last
  2194. buffer used by the MSDU
  2195. <enum 0 Not_first_msdu> This is not the first MSDU in
  2196. the MPDU.
  2197. <enum 1 first_msdu> This MSDU is the first one in the
  2198. MPDU.
  2199. <legal all>
  2200. */
  2201. #define RX_MSDU_LINK_30_MSDU_5_RX_MSDU_DESC_INFO_DETAILS_FIRST_MSDU_IN_MPDU_FLAG_OFFSET 0x00000078
  2202. #define RX_MSDU_LINK_30_MSDU_5_RX_MSDU_DESC_INFO_DETAILS_FIRST_MSDU_IN_MPDU_FLAG_LSB 0
  2203. #define RX_MSDU_LINK_30_MSDU_5_RX_MSDU_DESC_INFO_DETAILS_FIRST_MSDU_IN_MPDU_FLAG_MASK 0x00000001
  2204. /* Description RX_MSDU_LINK_30_MSDU_5_RX_MSDU_DESC_INFO_DETAILS_LAST_MSDU_IN_MPDU_FLAG
  2205. Consumer: WBM/REO/SW/FW
  2206. Producer: RXDMA
  2207. Parsed from RX_MSDU_END TLV . In the case MSDU spans
  2208. over multiple buffers, this field will be valid in the Last
  2209. buffer used by the MSDU
  2210. <enum 0 Not_last_msdu> There are more MSDUs linked to
  2211. this MSDU that belongs to this MPDU
  2212. <enum 1 Last_msdu> this MSDU is the last one in the
  2213. MPDU. This setting is only allowed in combination with
  2214. 'Msdu_continuation' set to 0. This implies that when an msdu
  2215. is spread out over multiple buffers and thus
  2216. msdu_continuation is set, only for the very last buffer of
  2217. the msdu, can the 'last_msdu_in_mpdu_flag' be set.
  2218. When both first_msdu_in_mpdu_flag and
  2219. last_msdu_in_mpdu_flag are set, the MPDU that this MSDU
  2220. belongs to only contains a single MSDU.
  2221. <legal all>
  2222. */
  2223. #define RX_MSDU_LINK_30_MSDU_5_RX_MSDU_DESC_INFO_DETAILS_LAST_MSDU_IN_MPDU_FLAG_OFFSET 0x00000078
  2224. #define RX_MSDU_LINK_30_MSDU_5_RX_MSDU_DESC_INFO_DETAILS_LAST_MSDU_IN_MPDU_FLAG_LSB 1
  2225. #define RX_MSDU_LINK_30_MSDU_5_RX_MSDU_DESC_INFO_DETAILS_LAST_MSDU_IN_MPDU_FLAG_MASK 0x00000002
  2226. /* Description RX_MSDU_LINK_30_MSDU_5_RX_MSDU_DESC_INFO_DETAILS_MSDU_CONTINUATION
  2227. When set, this MSDU buffer was not able to hold the
  2228. entire MSDU. The next buffer will therefor contain
  2229. additional information related to this MSDU.
  2230. <legal all>
  2231. */
  2232. #define RX_MSDU_LINK_30_MSDU_5_RX_MSDU_DESC_INFO_DETAILS_MSDU_CONTINUATION_OFFSET 0x00000078
  2233. #define RX_MSDU_LINK_30_MSDU_5_RX_MSDU_DESC_INFO_DETAILS_MSDU_CONTINUATION_LSB 2
  2234. #define RX_MSDU_LINK_30_MSDU_5_RX_MSDU_DESC_INFO_DETAILS_MSDU_CONTINUATION_MASK 0x00000004
  2235. /* Description RX_MSDU_LINK_30_MSDU_5_RX_MSDU_DESC_INFO_DETAILS_MSDU_LENGTH
  2236. Parsed from RX_MSDU_START TLV . In the case MSDU spans
  2237. over multiple buffers, this field will be valid in the First
  2238. buffer used by MSDU.
  2239. Full MSDU length in bytes after decapsulation.
  2240. This field is still valid for MPDU frames without
  2241. A-MSDU. It still represents MSDU length after decapsulation
  2242. Or in case of RAW MPDUs, it indicates the length of the
  2243. entire MPDU (without FCS field)
  2244. <legal all>
  2245. */
  2246. #define RX_MSDU_LINK_30_MSDU_5_RX_MSDU_DESC_INFO_DETAILS_MSDU_LENGTH_OFFSET 0x00000078
  2247. #define RX_MSDU_LINK_30_MSDU_5_RX_MSDU_DESC_INFO_DETAILS_MSDU_LENGTH_LSB 3
  2248. #define RX_MSDU_LINK_30_MSDU_5_RX_MSDU_DESC_INFO_DETAILS_MSDU_LENGTH_MASK 0x0001fff8
  2249. /* Description RX_MSDU_LINK_30_MSDU_5_RX_MSDU_DESC_INFO_DETAILS_REO_DESTINATION_INDICATION
  2250. Parsed from RX_MSDU_END TLV . In the case MSDU spans
  2251. over multiple buffers, this field will be valid in the Last
  2252. buffer used by the MSDU
  2253. The ID of the REO exit ring where the MSDU frame shall
  2254. push after (MPDU level) reordering has finished.
  2255. <enum 0 reo_destination_tcl> Reo will push the frame
  2256. into the REO2TCL ring
  2257. <enum 1 reo_destination_sw1> Reo will push the frame
  2258. into the REO2SW1 ring
  2259. <enum 2 reo_destination_sw2> Reo will push the frame
  2260. into the REO2SW2 ring
  2261. <enum 3 reo_destination_sw3> Reo will push the frame
  2262. into the REO2SW3 ring
  2263. <enum 4 reo_destination_sw4> Reo will push the frame
  2264. into the REO2SW4 ring
  2265. <enum 5 reo_destination_release> Reo will push the frame
  2266. into the REO_release ring
  2267. <enum 6 reo_destination_fw> Reo will push the frame into
  2268. the REO2FW ring
  2269. <enum 7 reo_destination_sw5> Reo will push the frame
  2270. into the REO2SW5 ring (REO remaps this in chips without
  2271. REO2SW5 ring, e.g. Pine)
  2272. <enum 8 reo_destination_sw6> Reo will push the frame
  2273. into the REO2SW6 ring (REO remaps this in chips without
  2274. REO2SW6 ring, e.g. Pine)
  2275. <enum 9 reo_destination_9> REO remaps this <enum 10
  2276. reo_destination_10> REO remaps this
  2277. <enum 11 reo_destination_11> REO remaps this
  2278. <enum 12 reo_destination_12> REO remaps this <enum 13
  2279. reo_destination_13> REO remaps this
  2280. <enum 14 reo_destination_14> REO remaps this
  2281. <enum 15 reo_destination_15> REO remaps this
  2282. <enum 16 reo_destination_16> REO remaps this
  2283. <enum 17 reo_destination_17> REO remaps this
  2284. <enum 18 reo_destination_18> REO remaps this
  2285. <enum 19 reo_destination_19> REO remaps this
  2286. <enum 20 reo_destination_20> REO remaps this
  2287. <enum 21 reo_destination_21> REO remaps this
  2288. <enum 22 reo_destination_22> REO remaps this
  2289. <enum 23 reo_destination_23> REO remaps this
  2290. <enum 24 reo_destination_24> REO remaps this
  2291. <enum 25 reo_destination_25> REO remaps this
  2292. <enum 26 reo_destination_26> REO remaps this
  2293. <enum 27 reo_destination_27> REO remaps this
  2294. <enum 28 reo_destination_28> REO remaps this
  2295. <enum 29 reo_destination_29> REO remaps this
  2296. <enum 30 reo_destination_30> REO remaps this
  2297. <enum 31 reo_destination_31> REO remaps this
  2298. <legal all>
  2299. */
  2300. #define RX_MSDU_LINK_30_MSDU_5_RX_MSDU_DESC_INFO_DETAILS_REO_DESTINATION_INDICATION_OFFSET 0x00000078
  2301. #define RX_MSDU_LINK_30_MSDU_5_RX_MSDU_DESC_INFO_DETAILS_REO_DESTINATION_INDICATION_LSB 17
  2302. #define RX_MSDU_LINK_30_MSDU_5_RX_MSDU_DESC_INFO_DETAILS_REO_DESTINATION_INDICATION_MASK 0x003e0000
  2303. /* Description RX_MSDU_LINK_30_MSDU_5_RX_MSDU_DESC_INFO_DETAILS_MSDU_DROP
  2304. Parsed from RX_MSDU_END TLV . In the case MSDU spans
  2305. over multiple buffers, this field will be valid in the Last
  2306. buffer used by the MSDU
  2307. When set, REO shall drop this MSDU and not forward it to
  2308. any other ring...
  2309. <legal all>
  2310. */
  2311. #define RX_MSDU_LINK_30_MSDU_5_RX_MSDU_DESC_INFO_DETAILS_MSDU_DROP_OFFSET 0x00000078
  2312. #define RX_MSDU_LINK_30_MSDU_5_RX_MSDU_DESC_INFO_DETAILS_MSDU_DROP_LSB 22
  2313. #define RX_MSDU_LINK_30_MSDU_5_RX_MSDU_DESC_INFO_DETAILS_MSDU_DROP_MASK 0x00400000
  2314. /* Description RX_MSDU_LINK_30_MSDU_5_RX_MSDU_DESC_INFO_DETAILS_SA_IS_VALID
  2315. Parsed from RX_MSDU_END TLV . In the case MSDU spans
  2316. over multiple buffers, this field will be valid in the Last
  2317. buffer used by the MSDU
  2318. Indicates that OLE found a valid SA entry for this MSDU
  2319. <legal all>
  2320. */
  2321. #define RX_MSDU_LINK_30_MSDU_5_RX_MSDU_DESC_INFO_DETAILS_SA_IS_VALID_OFFSET 0x00000078
  2322. #define RX_MSDU_LINK_30_MSDU_5_RX_MSDU_DESC_INFO_DETAILS_SA_IS_VALID_LSB 23
  2323. #define RX_MSDU_LINK_30_MSDU_5_RX_MSDU_DESC_INFO_DETAILS_SA_IS_VALID_MASK 0x00800000
  2324. /* Description RX_MSDU_LINK_30_MSDU_5_RX_MSDU_DESC_INFO_DETAILS_SA_IDX_TIMEOUT
  2325. Parsed from RX_MSDU_END TLV . In the case MSDU spans
  2326. over multiple buffers, this field will be valid in the Last
  2327. buffer used by the MSDU
  2328. Indicates an unsuccessful MAC source address search due
  2329. to the expiring of the search timer for this MSDU
  2330. <legal all>
  2331. */
  2332. #define RX_MSDU_LINK_30_MSDU_5_RX_MSDU_DESC_INFO_DETAILS_SA_IDX_TIMEOUT_OFFSET 0x00000078
  2333. #define RX_MSDU_LINK_30_MSDU_5_RX_MSDU_DESC_INFO_DETAILS_SA_IDX_TIMEOUT_LSB 24
  2334. #define RX_MSDU_LINK_30_MSDU_5_RX_MSDU_DESC_INFO_DETAILS_SA_IDX_TIMEOUT_MASK 0x01000000
  2335. /* Description RX_MSDU_LINK_30_MSDU_5_RX_MSDU_DESC_INFO_DETAILS_DA_IS_VALID
  2336. Parsed from RX_MSDU_END TLV . In the case MSDU spans
  2337. over multiple buffers, this field will be valid in the Last
  2338. buffer used by the MSDU
  2339. Indicates that OLE found a valid DA entry for this MSDU
  2340. <legal all>
  2341. */
  2342. #define RX_MSDU_LINK_30_MSDU_5_RX_MSDU_DESC_INFO_DETAILS_DA_IS_VALID_OFFSET 0x00000078
  2343. #define RX_MSDU_LINK_30_MSDU_5_RX_MSDU_DESC_INFO_DETAILS_DA_IS_VALID_LSB 25
  2344. #define RX_MSDU_LINK_30_MSDU_5_RX_MSDU_DESC_INFO_DETAILS_DA_IS_VALID_MASK 0x02000000
  2345. /* Description RX_MSDU_LINK_30_MSDU_5_RX_MSDU_DESC_INFO_DETAILS_DA_IS_MCBC
  2346. Field Only valid if da_is_valid is set
  2347. Indicates the DA address was a Multicast of Broadcast
  2348. address for this MSDU
  2349. <legal all>
  2350. */
  2351. #define RX_MSDU_LINK_30_MSDU_5_RX_MSDU_DESC_INFO_DETAILS_DA_IS_MCBC_OFFSET 0x00000078
  2352. #define RX_MSDU_LINK_30_MSDU_5_RX_MSDU_DESC_INFO_DETAILS_DA_IS_MCBC_LSB 26
  2353. #define RX_MSDU_LINK_30_MSDU_5_RX_MSDU_DESC_INFO_DETAILS_DA_IS_MCBC_MASK 0x04000000
  2354. /* Description RX_MSDU_LINK_30_MSDU_5_RX_MSDU_DESC_INFO_DETAILS_DA_IDX_TIMEOUT
  2355. Parsed from RX_MSDU_END TLV . In the case MSDU spans
  2356. over multiple buffers, this field will be valid in the Last
  2357. buffer used by the MSDU
  2358. Indicates an unsuccessful MAC destination address search
  2359. due to the expiring of the search timer for this MSDU
  2360. <legal all>
  2361. */
  2362. #define RX_MSDU_LINK_30_MSDU_5_RX_MSDU_DESC_INFO_DETAILS_DA_IDX_TIMEOUT_OFFSET 0x00000078
  2363. #define RX_MSDU_LINK_30_MSDU_5_RX_MSDU_DESC_INFO_DETAILS_DA_IDX_TIMEOUT_LSB 27
  2364. #define RX_MSDU_LINK_30_MSDU_5_RX_MSDU_DESC_INFO_DETAILS_DA_IDX_TIMEOUT_MASK 0x08000000
  2365. /* Description RX_MSDU_LINK_30_MSDU_5_RX_MSDU_DESC_INFO_DETAILS_L3_HEADER_PADDING_MSB
  2366. Passed on from 'RX_MSDU_END' TLV (only the MSB is
  2367. reported as the LSB is always zero)
  2368. Number of bytes padded to make sure that the L3 header
  2369. will always start of a Dword boundary
  2370. <legal all>
  2371. */
  2372. #define RX_MSDU_LINK_30_MSDU_5_RX_MSDU_DESC_INFO_DETAILS_L3_HEADER_PADDING_MSB_OFFSET 0x00000078
  2373. #define RX_MSDU_LINK_30_MSDU_5_RX_MSDU_DESC_INFO_DETAILS_L3_HEADER_PADDING_MSB_LSB 28
  2374. #define RX_MSDU_LINK_30_MSDU_5_RX_MSDU_DESC_INFO_DETAILS_L3_HEADER_PADDING_MSB_MASK 0x10000000
  2375. /* Description RX_MSDU_LINK_30_MSDU_5_RX_MSDU_DESC_INFO_DETAILS_TCP_UDP_CHKSUM_FAIL
  2376. Passed on from 'RX_ATTENTION' TLV
  2377. Indicates that the computed checksum did not match the
  2378. checksum in the TCP/UDP header.
  2379. <legal all>
  2380. */
  2381. #define RX_MSDU_LINK_30_MSDU_5_RX_MSDU_DESC_INFO_DETAILS_TCP_UDP_CHKSUM_FAIL_OFFSET 0x00000078
  2382. #define RX_MSDU_LINK_30_MSDU_5_RX_MSDU_DESC_INFO_DETAILS_TCP_UDP_CHKSUM_FAIL_LSB 29
  2383. #define RX_MSDU_LINK_30_MSDU_5_RX_MSDU_DESC_INFO_DETAILS_TCP_UDP_CHKSUM_FAIL_MASK 0x20000000
  2384. /* Description RX_MSDU_LINK_30_MSDU_5_RX_MSDU_DESC_INFO_DETAILS_IP_CHKSUM_FAIL
  2385. Passed on from 'RX_ATTENTION' TLV
  2386. Indicates that the computed checksum did not match the
  2387. checksum in the IP header.
  2388. <legal all>
  2389. */
  2390. #define RX_MSDU_LINK_30_MSDU_5_RX_MSDU_DESC_INFO_DETAILS_IP_CHKSUM_FAIL_OFFSET 0x00000078
  2391. #define RX_MSDU_LINK_30_MSDU_5_RX_MSDU_DESC_INFO_DETAILS_IP_CHKSUM_FAIL_LSB 30
  2392. #define RX_MSDU_LINK_30_MSDU_5_RX_MSDU_DESC_INFO_DETAILS_IP_CHKSUM_FAIL_MASK 0x40000000
  2393. /* Description RX_MSDU_LINK_30_MSDU_5_RX_MSDU_DESC_INFO_DETAILS_RAW_MPDU
  2394. Passed on from 'RX_MPDU_INFO' structure in
  2395. 'RX_MPDU_START' TLV
  2396. Set to 1 by RXOLE when it has not performed any 802.11
  2397. to Ethernet/Natvie WiFi header conversion on this MPDU.
  2398. <legal all>
  2399. */
  2400. #define RX_MSDU_LINK_30_MSDU_5_RX_MSDU_DESC_INFO_DETAILS_RAW_MPDU_OFFSET 0x00000078
  2401. #define RX_MSDU_LINK_30_MSDU_5_RX_MSDU_DESC_INFO_DETAILS_RAW_MPDU_LSB 31
  2402. #define RX_MSDU_LINK_30_MSDU_5_RX_MSDU_DESC_INFO_DETAILS_RAW_MPDU_MASK 0x80000000
  2403. /* Description RX_MSDU_LINK_31_MSDU_5_RX_MSDU_DESC_INFO_DETAILS_SA_IDX_OR_SW_PEER_ID_14_0
  2404. Passed on from 'RX_MSDU_END' TLV (one MSB is omitted)
  2405. Based on a register configuration in RXDMA, this field
  2406. will contain:
  2407. The offset in the address search table which matches the
  2408. MAC source address
  2409. OR
  2410. 'sw_peer_id' from the address search entry corresponding
  2411. to the source address of the MSDU
  2412. <legal all>
  2413. */
  2414. #define RX_MSDU_LINK_31_MSDU_5_RX_MSDU_DESC_INFO_DETAILS_SA_IDX_OR_SW_PEER_ID_14_0_OFFSET 0x0000007c
  2415. #define RX_MSDU_LINK_31_MSDU_5_RX_MSDU_DESC_INFO_DETAILS_SA_IDX_OR_SW_PEER_ID_14_0_LSB 0
  2416. #define RX_MSDU_LINK_31_MSDU_5_RX_MSDU_DESC_INFO_DETAILS_SA_IDX_OR_SW_PEER_ID_14_0_MASK 0x00007fff
  2417. /* Description RX_MSDU_LINK_31_MSDU_5_RX_MSDU_DESC_INFO_DETAILS_MPDU_AST_IDX_OR_SW_PEER_ID_14_0
  2418. Passed on from 'RX_MPDU_INFO' structure in
  2419. 'RX_MPDU_START' TLV (one MSB is omitted)
  2420. Based on a register configuration in RXDMA, this field
  2421. will contain:
  2422. The index of the address search entry corresponding to
  2423. this MPDU (a value of 0xFFFF indicates an invalid AST index,
  2424. meaning that no AST entry was found or no AST search was
  2425. performed)
  2426. OR:
  2427. 'sw_peer_id' from the address search entry corresponding
  2428. to this MPDU (in case of ndp or phy_err or
  2429. AST_based_lookup_valid == 0, this field will be set to 0)
  2430. <legal all>
  2431. */
  2432. #define RX_MSDU_LINK_31_MSDU_5_RX_MSDU_DESC_INFO_DETAILS_MPDU_AST_IDX_OR_SW_PEER_ID_14_0_OFFSET 0x0000007c
  2433. #define RX_MSDU_LINK_31_MSDU_5_RX_MSDU_DESC_INFO_DETAILS_MPDU_AST_IDX_OR_SW_PEER_ID_14_0_LSB 15
  2434. #define RX_MSDU_LINK_31_MSDU_5_RX_MSDU_DESC_INFO_DETAILS_MPDU_AST_IDX_OR_SW_PEER_ID_14_0_MASK 0x3fff8000
  2435. /* Description RX_MSDU_LINK_31_MSDU_5_RX_MSDU_DESC_INFO_DETAILS_FR_DS
  2436. Passed on from 'RX_MPDU_INFO' structure in
  2437. 'RX_MPDU_START' TLV
  2438. Set if the 'from DS' bit is set in the frame control.
  2439. <legal all>
  2440. */
  2441. #define RX_MSDU_LINK_31_MSDU_5_RX_MSDU_DESC_INFO_DETAILS_FR_DS_OFFSET 0x0000007c
  2442. #define RX_MSDU_LINK_31_MSDU_5_RX_MSDU_DESC_INFO_DETAILS_FR_DS_LSB 30
  2443. #define RX_MSDU_LINK_31_MSDU_5_RX_MSDU_DESC_INFO_DETAILS_FR_DS_MASK 0x40000000
  2444. /* Description RX_MSDU_LINK_31_MSDU_5_RX_MSDU_DESC_INFO_DETAILS_TO_DS
  2445. Passed on from 'RX_MPDU_INFO' structure in
  2446. 'RX_MPDU_START' TLV
  2447. Set if the 'to DS' bit is set in the frame control.
  2448. <legal all>
  2449. */
  2450. #define RX_MSDU_LINK_31_MSDU_5_RX_MSDU_DESC_INFO_DETAILS_TO_DS_OFFSET 0x0000007c
  2451. #define RX_MSDU_LINK_31_MSDU_5_RX_MSDU_DESC_INFO_DETAILS_TO_DS_LSB 31
  2452. #define RX_MSDU_LINK_31_MSDU_5_RX_MSDU_DESC_INFO_DETAILS_TO_DS_MASK 0x80000000
  2453. #endif // _RX_MSDU_LINK_H_