rx_msdu_link.h 101 KB

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