rx_msdu_link.h 96 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729173017311732173317341735173617371738173917401741174217431744174517461747174817491750175117521753175417551756175717581759176017611762176317641765176617671768176917701771177217731774177517761777177817791780178117821783178417851786178717881789179017911792179317941795179617971798179918001801180218031804180518061807180818091810181118121813181418151816181718181819182018211822182318241825182618271828182918301831183218331834183518361837183818391840184118421843184418451846184718481849185018511852185318541855185618571858185918601861186218631864186518661867186818691870187118721873187418751876187718781879188018811882188318841885188618871888188918901891189218931894189518961897189818991900190119021903190419051906190719081909191019111912191319141915191619171918191919201921192219231924192519261927192819291930193119321933193419351936193719381939194019411942194319441945194619471948194919501951195219531954195519561957195819591960196119621963196419651966196719681969197019711972197319741975197619771978197919801981198219831984198519861987198819891990199119921993199419951996199719981999200020012002200320042005200620072008200920102011201220132014201520162017201820192020202120222023202420252026202720282029203020312032203320342035203620372038203920402041204220432044204520462047204820492050205120522053205420552056205720582059206020612062206320642065206620672068206920702071207220732074207520762077207820792080208120822083208420852086208720882089209020912092209320942095209620972098209921002101210221032104210521062107210821092110211121122113211421152116211721182119212021212122212321242125212621272128212921302131213221332134213521362137213821392140214121422143214421452146214721482149215021512152215321542155215621572158215921602161216221632164216521662167216821692170217121722173217421752176217721782179218021812182218321842185218621872188218921902191219221932194219521962197219821992200220122022203220422052206220722082209221022112212221322142215221622172218221922202221222222232224222522262227222822292230223122322233223422352236223722382239224022412242224322442245224622472248224922502251225222532254225522562257225822592260226122622263226422652266226722682269227022712272227322742275227622772278227922802281228222832284228522862287228822892290229122922293229422952296229722982299230023012302230323042305230623072308230923102311231223132314231523162317231823192320232123222323232423252326232723282329233023312332233323342335233623372338233923402341234223432344234523462347234823492350235123522353235423552356235723582359236023612362236323642365236623672368236923702371237223732374237523762377237823792380238123822383238423852386238723882389239023912392239323942395239623972398239924002401240224032404240524062407240824092410241124122413241424152416241724182419242024212422242324242425242624272428242924302431243224332434243524362437243824392440244124422443244424452446244724482449245024512452245324542455245624572458245924602461246224632464246524662467246824692470247124722473247424752476247724782479248024812482248324842485248624872488248924902491249224932494249524962497249824992500250125022503250425052506250725082509251025112512251325142515251625172518251925202521252225232524252525262527252825292530253125322533253425352536253725382539254025412542254325442545254625472548254925502551255225532554255525562557255825592560256125622563256425652566256725682569257025712572257325742575257625772578257925802581258225832584258525862587258825892590259125922593259425952596259725982599260026012602260326042605260626072608260926102611261226132614261526162617261826192620262126222623262426252626262726282629263026312632263326342635263626372638263926402641264226432644264526462647264826492650265126522653265426552656265726582659266026612662266326642665266626672668266926702671267226732674267526762677267826792680268126822683268426852686268726882689269026912692269326942695269626972698269927002701270227032704270527062707270827092710271127122713271427152716271727182719272027212722272327242725272627272728272927302731273227332734273527362737273827392740274127422743274427452746274727482749275027512752275327542755275627572758275927602761276227632764276527662767276827692770277127722773277427752776277727782779278027812782278327842785278627872788278927902791279227932794279527962797279827992800280128022803280428052806280728082809281028112812281328142815281628172818281928202821282228232824282528262827282828292830283128322833283428352836283728382839284028412842284328442845284628472848284928502851285228532854285528562857285828592860286128622863286428652866286728682869287028712872287328742875287628772878287928802881288228832884288528862887288828892890289128922893289428952896289728982899290029012902290329042905290629072908290929102911291229132914291529162917291829192920292129222923292429252926292729282929293029312932293329342935293629372938293929402941294229432944294529462947294829492950295129522953295429552956295729582959296029612962296329642965296629672968296929702971297229732974297529762977297829792980298129822983298429852986298729882989299029912992299329942995299629972998299930003001300230033004300530063007300830093010301130123013301430153016301730183019302030213022302330243025302630273028302930303031303230333034303530363037303830393040304130423043304430453046304730483049305030513052305330543055305630573058305930603061306230633064306530663067306830693070307130723073307430753076307730783079308030813082308330843085308630873088308930903091309230933094309530963097309830993100310131023103310431053106310731083109311031113112311331143115311631173118311931203121312231233124312531263127312831293130313131323133313431353136313731383139314031413142314331443145314631473148314931503151315231533154315531563157315831593160316131623163316431653166316731683169317031713172317331743175317631773178317931803181318231833184318531863187318831893190319131923193319431953196319731983199320032013202320332043205320632073208320932103211321232133214321532163217321832193220322132223223322432253226322732283229323032313232323332343235323632373238323932403241324232433244324532463247324832493250325132523253325432553256325732583259326032613262326332643265326632673268326932703271327232733274327532763277327832793280328132823283328432853286328732883289329032913292329332943295329632973298329933003301330233033304330533063307330833093310331133123313331433153316331733183319332033213322332333243325332633273328332933303331333233333334333533363337333833393340334133423343334433453346334733483349335033513352335333543355335633573358
  1. /*
  2. * Copyright (c) 2019 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
  464. <enum 8 reo_destination_sw6> Reo will push the frame
  465. into the REO2SW6 ring
  466. <enum 9 reo_destination_9> REO remaps this <enum 10
  467. reo_destination_10> REO remaps this
  468. <enum 11 reo_destination_11> REO remaps this
  469. <enum 12 reo_destination_12> REO remaps this <enum 13
  470. reo_destination_13> REO remaps this
  471. <enum 14 reo_destination_14> REO remaps this
  472. <enum 15 reo_destination_15> REO remaps this
  473. <enum 16 reo_destination_16> REO remaps this
  474. <enum 17 reo_destination_17> REO remaps this
  475. <enum 18 reo_destination_18> REO remaps this
  476. <enum 19 reo_destination_19> REO remaps this
  477. <enum 20 reo_destination_20> REO remaps this
  478. <enum 21 reo_destination_21> REO remaps this
  479. <enum 22 reo_destination_22> REO remaps this
  480. <enum 23 reo_destination_23> REO remaps this
  481. <enum 24 reo_destination_24> REO remaps this
  482. <enum 25 reo_destination_25> REO remaps this
  483. <enum 26 reo_destination_26> REO remaps this
  484. <enum 27 reo_destination_27> REO remaps this
  485. <enum 28 reo_destination_28> REO remaps this
  486. <enum 29 reo_destination_29> REO remaps this
  487. <enum 30 reo_destination_30> REO remaps this
  488. <enum 31 reo_destination_31> REO remaps this
  489. <legal all>
  490. */
  491. #define RX_MSDU_LINK_10_MSDU_0_RX_MSDU_DESC_INFO_DETAILS_REO_DESTINATION_INDICATION_OFFSET 0x00000028
  492. #define RX_MSDU_LINK_10_MSDU_0_RX_MSDU_DESC_INFO_DETAILS_REO_DESTINATION_INDICATION_LSB 17
  493. #define RX_MSDU_LINK_10_MSDU_0_RX_MSDU_DESC_INFO_DETAILS_REO_DESTINATION_INDICATION_MASK 0x003e0000
  494. /* Description RX_MSDU_LINK_10_MSDU_0_RX_MSDU_DESC_INFO_DETAILS_MSDU_DROP
  495. Parsed from RX_MSDU_END TLV . In the case MSDU spans
  496. over multiple buffers, this field will be valid in the Last
  497. buffer used by the MSDU
  498. When set, REO shall drop this MSDU and not forward it to
  499. any other ring...
  500. <legal all>
  501. */
  502. #define RX_MSDU_LINK_10_MSDU_0_RX_MSDU_DESC_INFO_DETAILS_MSDU_DROP_OFFSET 0x00000028
  503. #define RX_MSDU_LINK_10_MSDU_0_RX_MSDU_DESC_INFO_DETAILS_MSDU_DROP_LSB 22
  504. #define RX_MSDU_LINK_10_MSDU_0_RX_MSDU_DESC_INFO_DETAILS_MSDU_DROP_MASK 0x00400000
  505. /* Description RX_MSDU_LINK_10_MSDU_0_RX_MSDU_DESC_INFO_DETAILS_SA_IS_VALID
  506. Parsed from RX_MSDU_END TLV . In the case MSDU spans
  507. over multiple buffers, this field will be valid in the Last
  508. buffer used by the MSDU
  509. Indicates that OLE found a valid SA entry for this MSDU
  510. <legal all>
  511. */
  512. #define RX_MSDU_LINK_10_MSDU_0_RX_MSDU_DESC_INFO_DETAILS_SA_IS_VALID_OFFSET 0x00000028
  513. #define RX_MSDU_LINK_10_MSDU_0_RX_MSDU_DESC_INFO_DETAILS_SA_IS_VALID_LSB 23
  514. #define RX_MSDU_LINK_10_MSDU_0_RX_MSDU_DESC_INFO_DETAILS_SA_IS_VALID_MASK 0x00800000
  515. /* Description RX_MSDU_LINK_10_MSDU_0_RX_MSDU_DESC_INFO_DETAILS_SA_IDX_TIMEOUT
  516. Parsed from RX_MSDU_END TLV . In the case MSDU spans
  517. over multiple buffers, this field will be valid in the Last
  518. buffer used by the MSDU
  519. Indicates an unsuccessful MAC source address search due
  520. to the expiring of the search timer for this MSDU
  521. <legal all>
  522. */
  523. #define RX_MSDU_LINK_10_MSDU_0_RX_MSDU_DESC_INFO_DETAILS_SA_IDX_TIMEOUT_OFFSET 0x00000028
  524. #define RX_MSDU_LINK_10_MSDU_0_RX_MSDU_DESC_INFO_DETAILS_SA_IDX_TIMEOUT_LSB 24
  525. #define RX_MSDU_LINK_10_MSDU_0_RX_MSDU_DESC_INFO_DETAILS_SA_IDX_TIMEOUT_MASK 0x01000000
  526. /* Description RX_MSDU_LINK_10_MSDU_0_RX_MSDU_DESC_INFO_DETAILS_DA_IS_VALID
  527. Parsed from RX_MSDU_END TLV . In the case MSDU spans
  528. over multiple buffers, this field will be valid in the Last
  529. buffer used by the MSDU
  530. Indicates that OLE found a valid DA entry for this MSDU
  531. <legal all>
  532. */
  533. #define RX_MSDU_LINK_10_MSDU_0_RX_MSDU_DESC_INFO_DETAILS_DA_IS_VALID_OFFSET 0x00000028
  534. #define RX_MSDU_LINK_10_MSDU_0_RX_MSDU_DESC_INFO_DETAILS_DA_IS_VALID_LSB 25
  535. #define RX_MSDU_LINK_10_MSDU_0_RX_MSDU_DESC_INFO_DETAILS_DA_IS_VALID_MASK 0x02000000
  536. /* Description RX_MSDU_LINK_10_MSDU_0_RX_MSDU_DESC_INFO_DETAILS_DA_IS_MCBC
  537. Field Only valid if da_is_valid is set
  538. Indicates the DA address was a Multicast of Broadcast
  539. address for this MSDU
  540. <legal all>
  541. */
  542. #define RX_MSDU_LINK_10_MSDU_0_RX_MSDU_DESC_INFO_DETAILS_DA_IS_MCBC_OFFSET 0x00000028
  543. #define RX_MSDU_LINK_10_MSDU_0_RX_MSDU_DESC_INFO_DETAILS_DA_IS_MCBC_LSB 26
  544. #define RX_MSDU_LINK_10_MSDU_0_RX_MSDU_DESC_INFO_DETAILS_DA_IS_MCBC_MASK 0x04000000
  545. /* Description RX_MSDU_LINK_10_MSDU_0_RX_MSDU_DESC_INFO_DETAILS_DA_IDX_TIMEOUT
  546. Parsed from RX_MSDU_END TLV . In the case MSDU spans
  547. over multiple buffers, this field will be valid in the Last
  548. buffer used by the MSDU
  549. Indicates an unsuccessful MAC destination address search
  550. due to the expiring of the search timer for this MSDU
  551. <legal all>
  552. */
  553. #define RX_MSDU_LINK_10_MSDU_0_RX_MSDU_DESC_INFO_DETAILS_DA_IDX_TIMEOUT_OFFSET 0x00000028
  554. #define RX_MSDU_LINK_10_MSDU_0_RX_MSDU_DESC_INFO_DETAILS_DA_IDX_TIMEOUT_LSB 27
  555. #define RX_MSDU_LINK_10_MSDU_0_RX_MSDU_DESC_INFO_DETAILS_DA_IDX_TIMEOUT_MASK 0x08000000
  556. /* Description RX_MSDU_LINK_10_MSDU_0_RX_MSDU_DESC_INFO_DETAILS_RESERVED_0A
  557. <legal 0>
  558. */
  559. #define RX_MSDU_LINK_10_MSDU_0_RX_MSDU_DESC_INFO_DETAILS_RESERVED_0A_OFFSET 0x00000028
  560. #define RX_MSDU_LINK_10_MSDU_0_RX_MSDU_DESC_INFO_DETAILS_RESERVED_0A_LSB 28
  561. #define RX_MSDU_LINK_10_MSDU_0_RX_MSDU_DESC_INFO_DETAILS_RESERVED_0A_MASK 0xf0000000
  562. /* Description RX_MSDU_LINK_11_MSDU_0_RX_MSDU_DESC_INFO_DETAILS_RESERVED_1A
  563. <legal 0>
  564. */
  565. #define RX_MSDU_LINK_11_MSDU_0_RX_MSDU_DESC_INFO_DETAILS_RESERVED_1A_OFFSET 0x0000002c
  566. #define RX_MSDU_LINK_11_MSDU_0_RX_MSDU_DESC_INFO_DETAILS_RESERVED_1A_LSB 0
  567. #define RX_MSDU_LINK_11_MSDU_0_RX_MSDU_DESC_INFO_DETAILS_RESERVED_1A_MASK 0xffffffff
  568. /* EXTERNAL REFERENCE : struct rx_msdu_details msdu_1 */
  569. /* EXTERNAL REFERENCE : struct buffer_addr_info buffer_addr_info_details */
  570. /* Description RX_MSDU_LINK_12_MSDU_1_BUFFER_ADDR_INFO_DETAILS_BUFFER_ADDR_31_0
  571. Address (lower 32 bits) of the MSDU buffer OR
  572. MSDU_EXTENSION descriptor OR Link Descriptor
  573. In case of 'NULL' pointer, this field is set to 0
  574. <legal all>
  575. */
  576. #define RX_MSDU_LINK_12_MSDU_1_BUFFER_ADDR_INFO_DETAILS_BUFFER_ADDR_31_0_OFFSET 0x00000030
  577. #define RX_MSDU_LINK_12_MSDU_1_BUFFER_ADDR_INFO_DETAILS_BUFFER_ADDR_31_0_LSB 0
  578. #define RX_MSDU_LINK_12_MSDU_1_BUFFER_ADDR_INFO_DETAILS_BUFFER_ADDR_31_0_MASK 0xffffffff
  579. /* Description RX_MSDU_LINK_13_MSDU_1_BUFFER_ADDR_INFO_DETAILS_BUFFER_ADDR_39_32
  580. Address (upper 8 bits) of the MSDU buffer OR
  581. MSDU_EXTENSION descriptor OR Link Descriptor
  582. In case of 'NULL' pointer, this field is set to 0
  583. <legal all>
  584. */
  585. #define RX_MSDU_LINK_13_MSDU_1_BUFFER_ADDR_INFO_DETAILS_BUFFER_ADDR_39_32_OFFSET 0x00000034
  586. #define RX_MSDU_LINK_13_MSDU_1_BUFFER_ADDR_INFO_DETAILS_BUFFER_ADDR_39_32_LSB 0
  587. #define RX_MSDU_LINK_13_MSDU_1_BUFFER_ADDR_INFO_DETAILS_BUFFER_ADDR_39_32_MASK 0x000000ff
  588. /* Description RX_MSDU_LINK_13_MSDU_1_BUFFER_ADDR_INFO_DETAILS_RETURN_BUFFER_MANAGER
  589. Consumer: WBM
  590. Producer: SW/FW
  591. In case of 'NULL' pointer, this field is set to 0
  592. Indicates to which buffer manager the buffer OR
  593. MSDU_EXTENSION descriptor OR link descriptor that is being
  594. pointed to shall be returned after the frame has been
  595. processed. It is used by WBM for routing purposes.
  596. <enum 0 WBM_IDLE_BUF_LIST> This buffer shall be returned
  597. to the WMB buffer idle list
  598. <enum 1 WBM_IDLE_DESC_LIST> This buffer shall be
  599. returned to the WMB idle link descriptor idle list
  600. <enum 2 FW_BM> This buffer shall be returned to the FW
  601. <enum 3 SW0_BM> This buffer shall be returned to the SW,
  602. ring 0
  603. <enum 4 SW1_BM> This buffer shall be returned to the SW,
  604. ring 1
  605. <enum 5 SW2_BM> This buffer shall be returned to the SW,
  606. ring 2
  607. <enum 6 SW3_BM> This buffer shall be returned to the SW,
  608. ring 3
  609. <enum 7 SW4_BM> This buffer shall be returned to the SW,
  610. ring 4
  611. <legal all>
  612. */
  613. #define RX_MSDU_LINK_13_MSDU_1_BUFFER_ADDR_INFO_DETAILS_RETURN_BUFFER_MANAGER_OFFSET 0x00000034
  614. #define RX_MSDU_LINK_13_MSDU_1_BUFFER_ADDR_INFO_DETAILS_RETURN_BUFFER_MANAGER_LSB 8
  615. #define RX_MSDU_LINK_13_MSDU_1_BUFFER_ADDR_INFO_DETAILS_RETURN_BUFFER_MANAGER_MASK 0x00000700
  616. /* Description RX_MSDU_LINK_13_MSDU_1_BUFFER_ADDR_INFO_DETAILS_SW_BUFFER_COOKIE
  617. Cookie field exclusively used by SW.
  618. In case of 'NULL' pointer, this field is set to 0
  619. HW ignores the contents, accept that it passes the
  620. programmed value on to other descriptors together with the
  621. physical address
  622. Field can be used by SW to for example associate the
  623. buffers physical address with the virtual address
  624. The bit definitions as used by SW are within SW HLD
  625. specification
  626. NOTE:
  627. The three most significant bits can have a special
  628. meaning in case this struct is embedded in a TX_MPDU_DETAILS
  629. STRUCT, and field transmit_bw_restriction is set
  630. In case of NON punctured transmission:
  631. Sw_buffer_cookie[20:19] = 2'b00: 20 MHz TX only
  632. Sw_buffer_cookie[20:19] = 2'b01: 40 MHz TX only
  633. Sw_buffer_cookie[20:19] = 2'b10: 80 MHz TX only
  634. Sw_buffer_cookie[20:19] = 2'b11: 160 MHz TX only
  635. In case of punctured transmission:
  636. Sw_buffer_cookie[20:18] = 3'b000: pattern 0 only
  637. Sw_buffer_cookie[20:18] = 3'b001: pattern 1 only
  638. Sw_buffer_cookie[20:18] = 3'b010: pattern 2 only
  639. Sw_buffer_cookie[20:18] = 3'b011: pattern 3 only
  640. Sw_buffer_cookie[20:18] = 3'b100: pattern 4 only
  641. Sw_buffer_cookie[20:18] = 3'b101: pattern 5 only
  642. Sw_buffer_cookie[20:18] = 3'b110: pattern 6 only
  643. Sw_buffer_cookie[20:18] = 3'b111: pattern 7 only
  644. Note: a punctured transmission is indicated by the
  645. presence of TLV TX_PUNCTURE_SETUP embedded in the scheduler
  646. TLV
  647. <legal all>
  648. */
  649. #define RX_MSDU_LINK_13_MSDU_1_BUFFER_ADDR_INFO_DETAILS_SW_BUFFER_COOKIE_OFFSET 0x00000034
  650. #define RX_MSDU_LINK_13_MSDU_1_BUFFER_ADDR_INFO_DETAILS_SW_BUFFER_COOKIE_LSB 11
  651. #define RX_MSDU_LINK_13_MSDU_1_BUFFER_ADDR_INFO_DETAILS_SW_BUFFER_COOKIE_MASK 0xfffff800
  652. /* EXTERNAL REFERENCE : struct rx_msdu_desc_info rx_msdu_desc_info_details */
  653. /* Description RX_MSDU_LINK_14_MSDU_1_RX_MSDU_DESC_INFO_DETAILS_FIRST_MSDU_IN_MPDU_FLAG
  654. Parsed from RX_MSDU_END TLV . In the case MSDU spans
  655. over multiple buffers, this field will be valid in the Last
  656. buffer used by the MSDU
  657. <enum 0 Not_first_msdu> This is not the first MSDU in
  658. the MPDU.
  659. <enum 1 first_msdu> This MSDU is the first one in the
  660. MPDU.
  661. <legal all>
  662. */
  663. #define RX_MSDU_LINK_14_MSDU_1_RX_MSDU_DESC_INFO_DETAILS_FIRST_MSDU_IN_MPDU_FLAG_OFFSET 0x00000038
  664. #define RX_MSDU_LINK_14_MSDU_1_RX_MSDU_DESC_INFO_DETAILS_FIRST_MSDU_IN_MPDU_FLAG_LSB 0
  665. #define RX_MSDU_LINK_14_MSDU_1_RX_MSDU_DESC_INFO_DETAILS_FIRST_MSDU_IN_MPDU_FLAG_MASK 0x00000001
  666. /* Description RX_MSDU_LINK_14_MSDU_1_RX_MSDU_DESC_INFO_DETAILS_LAST_MSDU_IN_MPDU_FLAG
  667. Consumer: WBM/REO/SW/FW
  668. Producer: RXDMA
  669. Parsed from RX_MSDU_END TLV . In the case MSDU spans
  670. over multiple buffers, this field will be valid in the Last
  671. buffer used by the MSDU
  672. <enum 0 Not_last_msdu> There are more MSDUs linked to
  673. this MSDU that belongs to this MPDU
  674. <enum 1 Last_msdu> this MSDU is the last one in the
  675. MPDU. This setting is only allowed in combination with
  676. 'Msdu_continuation' set to 0. This implies that when an msdu
  677. is spread out over multiple buffers and thus
  678. msdu_continuation is set, only for the very last buffer of
  679. the msdu, can the 'last_msdu_in_mpdu_flag' be set.
  680. When both first_msdu_in_mpdu_flag and
  681. last_msdu_in_mpdu_flag are set, the MPDU that this MSDU
  682. belongs to only contains a single MSDU.
  683. <legal all>
  684. */
  685. #define RX_MSDU_LINK_14_MSDU_1_RX_MSDU_DESC_INFO_DETAILS_LAST_MSDU_IN_MPDU_FLAG_OFFSET 0x00000038
  686. #define RX_MSDU_LINK_14_MSDU_1_RX_MSDU_DESC_INFO_DETAILS_LAST_MSDU_IN_MPDU_FLAG_LSB 1
  687. #define RX_MSDU_LINK_14_MSDU_1_RX_MSDU_DESC_INFO_DETAILS_LAST_MSDU_IN_MPDU_FLAG_MASK 0x00000002
  688. /* Description RX_MSDU_LINK_14_MSDU_1_RX_MSDU_DESC_INFO_DETAILS_MSDU_CONTINUATION
  689. When set, this MSDU buffer was not able to hold the
  690. entire MSDU. The next buffer will therefor contain
  691. additional information related to this MSDU.
  692. <legal all>
  693. */
  694. #define RX_MSDU_LINK_14_MSDU_1_RX_MSDU_DESC_INFO_DETAILS_MSDU_CONTINUATION_OFFSET 0x00000038
  695. #define RX_MSDU_LINK_14_MSDU_1_RX_MSDU_DESC_INFO_DETAILS_MSDU_CONTINUATION_LSB 2
  696. #define RX_MSDU_LINK_14_MSDU_1_RX_MSDU_DESC_INFO_DETAILS_MSDU_CONTINUATION_MASK 0x00000004
  697. /* Description RX_MSDU_LINK_14_MSDU_1_RX_MSDU_DESC_INFO_DETAILS_MSDU_LENGTH
  698. Parsed from RX_MSDU_START TLV . In the case MSDU spans
  699. over multiple buffers, this field will be valid in the First
  700. buffer used by MSDU.
  701. Full MSDU length in bytes after decapsulation.
  702. This field is still valid for MPDU frames without
  703. A-MSDU. It still represents MSDU length after decapsulation
  704. Or in case of RAW MPDUs, it indicates the length of the
  705. entire MPDU (without FCS field)
  706. <legal all>
  707. */
  708. #define RX_MSDU_LINK_14_MSDU_1_RX_MSDU_DESC_INFO_DETAILS_MSDU_LENGTH_OFFSET 0x00000038
  709. #define RX_MSDU_LINK_14_MSDU_1_RX_MSDU_DESC_INFO_DETAILS_MSDU_LENGTH_LSB 3
  710. #define RX_MSDU_LINK_14_MSDU_1_RX_MSDU_DESC_INFO_DETAILS_MSDU_LENGTH_MASK 0x0001fff8
  711. /* Description RX_MSDU_LINK_14_MSDU_1_RX_MSDU_DESC_INFO_DETAILS_REO_DESTINATION_INDICATION
  712. Parsed from RX_MSDU_END TLV . In the case MSDU spans
  713. over multiple buffers, this field will be valid in the Last
  714. buffer used by the MSDU
  715. The ID of the REO exit ring where the MSDU frame shall
  716. push after (MPDU level) reordering has finished.
  717. <enum 0 reo_destination_tcl> Reo will push the frame
  718. into the REO2TCL ring
  719. <enum 1 reo_destination_sw1> Reo will push the frame
  720. into the REO2SW1 ring
  721. <enum 2 reo_destination_sw2> Reo will push the frame
  722. into the REO2SW2 ring
  723. <enum 3 reo_destination_sw3> Reo will push the frame
  724. into the REO2SW3 ring
  725. <enum 4 reo_destination_sw4> Reo will push the frame
  726. into the REO2SW4 ring
  727. <enum 5 reo_destination_release> Reo will push the frame
  728. into the REO_release ring
  729. <enum 6 reo_destination_fw> Reo will push the frame into
  730. the REO2FW ring
  731. <enum 7 reo_destination_sw5> Reo will push the frame
  732. into the REO2SW5 ring
  733. <enum 8 reo_destination_sw6> Reo will push the frame
  734. into the REO2SW6 ring
  735. <enum 9 reo_destination_9> REO remaps this <enum 10
  736. reo_destination_10> REO remaps this
  737. <enum 11 reo_destination_11> REO remaps this
  738. <enum 12 reo_destination_12> REO remaps this <enum 13
  739. reo_destination_13> REO remaps this
  740. <enum 14 reo_destination_14> REO remaps this
  741. <enum 15 reo_destination_15> REO remaps this
  742. <enum 16 reo_destination_16> REO remaps this
  743. <enum 17 reo_destination_17> REO remaps this
  744. <enum 18 reo_destination_18> REO remaps this
  745. <enum 19 reo_destination_19> REO remaps this
  746. <enum 20 reo_destination_20> REO remaps this
  747. <enum 21 reo_destination_21> REO remaps this
  748. <enum 22 reo_destination_22> REO remaps this
  749. <enum 23 reo_destination_23> REO remaps this
  750. <enum 24 reo_destination_24> REO remaps this
  751. <enum 25 reo_destination_25> REO remaps this
  752. <enum 26 reo_destination_26> REO remaps this
  753. <enum 27 reo_destination_27> REO remaps this
  754. <enum 28 reo_destination_28> REO remaps this
  755. <enum 29 reo_destination_29> REO remaps this
  756. <enum 30 reo_destination_30> REO remaps this
  757. <enum 31 reo_destination_31> REO remaps this
  758. <legal all>
  759. */
  760. #define RX_MSDU_LINK_14_MSDU_1_RX_MSDU_DESC_INFO_DETAILS_REO_DESTINATION_INDICATION_OFFSET 0x00000038
  761. #define RX_MSDU_LINK_14_MSDU_1_RX_MSDU_DESC_INFO_DETAILS_REO_DESTINATION_INDICATION_LSB 17
  762. #define RX_MSDU_LINK_14_MSDU_1_RX_MSDU_DESC_INFO_DETAILS_REO_DESTINATION_INDICATION_MASK 0x003e0000
  763. /* Description RX_MSDU_LINK_14_MSDU_1_RX_MSDU_DESC_INFO_DETAILS_MSDU_DROP
  764. Parsed from RX_MSDU_END TLV . In the case MSDU spans
  765. over multiple buffers, this field will be valid in the Last
  766. buffer used by the MSDU
  767. When set, REO shall drop this MSDU and not forward it to
  768. any other ring...
  769. <legal all>
  770. */
  771. #define RX_MSDU_LINK_14_MSDU_1_RX_MSDU_DESC_INFO_DETAILS_MSDU_DROP_OFFSET 0x00000038
  772. #define RX_MSDU_LINK_14_MSDU_1_RX_MSDU_DESC_INFO_DETAILS_MSDU_DROP_LSB 22
  773. #define RX_MSDU_LINK_14_MSDU_1_RX_MSDU_DESC_INFO_DETAILS_MSDU_DROP_MASK 0x00400000
  774. /* Description RX_MSDU_LINK_14_MSDU_1_RX_MSDU_DESC_INFO_DETAILS_SA_IS_VALID
  775. Parsed from RX_MSDU_END TLV . In the case MSDU spans
  776. over multiple buffers, this field will be valid in the Last
  777. buffer used by the MSDU
  778. Indicates that OLE found a valid SA entry for this MSDU
  779. <legal all>
  780. */
  781. #define RX_MSDU_LINK_14_MSDU_1_RX_MSDU_DESC_INFO_DETAILS_SA_IS_VALID_OFFSET 0x00000038
  782. #define RX_MSDU_LINK_14_MSDU_1_RX_MSDU_DESC_INFO_DETAILS_SA_IS_VALID_LSB 23
  783. #define RX_MSDU_LINK_14_MSDU_1_RX_MSDU_DESC_INFO_DETAILS_SA_IS_VALID_MASK 0x00800000
  784. /* Description RX_MSDU_LINK_14_MSDU_1_RX_MSDU_DESC_INFO_DETAILS_SA_IDX_TIMEOUT
  785. Parsed from RX_MSDU_END TLV . In the case MSDU spans
  786. over multiple buffers, this field will be valid in the Last
  787. buffer used by the MSDU
  788. Indicates an unsuccessful MAC source address search due
  789. to the expiring of the search timer for this MSDU
  790. <legal all>
  791. */
  792. #define RX_MSDU_LINK_14_MSDU_1_RX_MSDU_DESC_INFO_DETAILS_SA_IDX_TIMEOUT_OFFSET 0x00000038
  793. #define RX_MSDU_LINK_14_MSDU_1_RX_MSDU_DESC_INFO_DETAILS_SA_IDX_TIMEOUT_LSB 24
  794. #define RX_MSDU_LINK_14_MSDU_1_RX_MSDU_DESC_INFO_DETAILS_SA_IDX_TIMEOUT_MASK 0x01000000
  795. /* Description RX_MSDU_LINK_14_MSDU_1_RX_MSDU_DESC_INFO_DETAILS_DA_IS_VALID
  796. Parsed from RX_MSDU_END TLV . In the case MSDU spans
  797. over multiple buffers, this field will be valid in the Last
  798. buffer used by the MSDU
  799. Indicates that OLE found a valid DA entry for this MSDU
  800. <legal all>
  801. */
  802. #define RX_MSDU_LINK_14_MSDU_1_RX_MSDU_DESC_INFO_DETAILS_DA_IS_VALID_OFFSET 0x00000038
  803. #define RX_MSDU_LINK_14_MSDU_1_RX_MSDU_DESC_INFO_DETAILS_DA_IS_VALID_LSB 25
  804. #define RX_MSDU_LINK_14_MSDU_1_RX_MSDU_DESC_INFO_DETAILS_DA_IS_VALID_MASK 0x02000000
  805. /* Description RX_MSDU_LINK_14_MSDU_1_RX_MSDU_DESC_INFO_DETAILS_DA_IS_MCBC
  806. Field Only valid if da_is_valid is set
  807. Indicates the DA address was a Multicast of Broadcast
  808. address for this MSDU
  809. <legal all>
  810. */
  811. #define RX_MSDU_LINK_14_MSDU_1_RX_MSDU_DESC_INFO_DETAILS_DA_IS_MCBC_OFFSET 0x00000038
  812. #define RX_MSDU_LINK_14_MSDU_1_RX_MSDU_DESC_INFO_DETAILS_DA_IS_MCBC_LSB 26
  813. #define RX_MSDU_LINK_14_MSDU_1_RX_MSDU_DESC_INFO_DETAILS_DA_IS_MCBC_MASK 0x04000000
  814. /* Description RX_MSDU_LINK_14_MSDU_1_RX_MSDU_DESC_INFO_DETAILS_DA_IDX_TIMEOUT
  815. Parsed from RX_MSDU_END TLV . In the case MSDU spans
  816. over multiple buffers, this field will be valid in the Last
  817. buffer used by the MSDU
  818. Indicates an unsuccessful MAC destination address search
  819. due to the expiring of the search timer for this MSDU
  820. <legal all>
  821. */
  822. #define RX_MSDU_LINK_14_MSDU_1_RX_MSDU_DESC_INFO_DETAILS_DA_IDX_TIMEOUT_OFFSET 0x00000038
  823. #define RX_MSDU_LINK_14_MSDU_1_RX_MSDU_DESC_INFO_DETAILS_DA_IDX_TIMEOUT_LSB 27
  824. #define RX_MSDU_LINK_14_MSDU_1_RX_MSDU_DESC_INFO_DETAILS_DA_IDX_TIMEOUT_MASK 0x08000000
  825. /* Description RX_MSDU_LINK_14_MSDU_1_RX_MSDU_DESC_INFO_DETAILS_RESERVED_0A
  826. <legal 0>
  827. */
  828. #define RX_MSDU_LINK_14_MSDU_1_RX_MSDU_DESC_INFO_DETAILS_RESERVED_0A_OFFSET 0x00000038
  829. #define RX_MSDU_LINK_14_MSDU_1_RX_MSDU_DESC_INFO_DETAILS_RESERVED_0A_LSB 28
  830. #define RX_MSDU_LINK_14_MSDU_1_RX_MSDU_DESC_INFO_DETAILS_RESERVED_0A_MASK 0xf0000000
  831. /* Description RX_MSDU_LINK_15_MSDU_1_RX_MSDU_DESC_INFO_DETAILS_RESERVED_1A
  832. <legal 0>
  833. */
  834. #define RX_MSDU_LINK_15_MSDU_1_RX_MSDU_DESC_INFO_DETAILS_RESERVED_1A_OFFSET 0x0000003c
  835. #define RX_MSDU_LINK_15_MSDU_1_RX_MSDU_DESC_INFO_DETAILS_RESERVED_1A_LSB 0
  836. #define RX_MSDU_LINK_15_MSDU_1_RX_MSDU_DESC_INFO_DETAILS_RESERVED_1A_MASK 0xffffffff
  837. /* EXTERNAL REFERENCE : struct rx_msdu_details msdu_2 */
  838. /* EXTERNAL REFERENCE : struct buffer_addr_info buffer_addr_info_details */
  839. /* Description RX_MSDU_LINK_16_MSDU_2_BUFFER_ADDR_INFO_DETAILS_BUFFER_ADDR_31_0
  840. Address (lower 32 bits) of the MSDU buffer OR
  841. MSDU_EXTENSION descriptor OR Link Descriptor
  842. In case of 'NULL' pointer, this field is set to 0
  843. <legal all>
  844. */
  845. #define RX_MSDU_LINK_16_MSDU_2_BUFFER_ADDR_INFO_DETAILS_BUFFER_ADDR_31_0_OFFSET 0x00000040
  846. #define RX_MSDU_LINK_16_MSDU_2_BUFFER_ADDR_INFO_DETAILS_BUFFER_ADDR_31_0_LSB 0
  847. #define RX_MSDU_LINK_16_MSDU_2_BUFFER_ADDR_INFO_DETAILS_BUFFER_ADDR_31_0_MASK 0xffffffff
  848. /* Description RX_MSDU_LINK_17_MSDU_2_BUFFER_ADDR_INFO_DETAILS_BUFFER_ADDR_39_32
  849. Address (upper 8 bits) of the MSDU buffer OR
  850. MSDU_EXTENSION descriptor OR Link Descriptor
  851. In case of 'NULL' pointer, this field is set to 0
  852. <legal all>
  853. */
  854. #define RX_MSDU_LINK_17_MSDU_2_BUFFER_ADDR_INFO_DETAILS_BUFFER_ADDR_39_32_OFFSET 0x00000044
  855. #define RX_MSDU_LINK_17_MSDU_2_BUFFER_ADDR_INFO_DETAILS_BUFFER_ADDR_39_32_LSB 0
  856. #define RX_MSDU_LINK_17_MSDU_2_BUFFER_ADDR_INFO_DETAILS_BUFFER_ADDR_39_32_MASK 0x000000ff
  857. /* Description RX_MSDU_LINK_17_MSDU_2_BUFFER_ADDR_INFO_DETAILS_RETURN_BUFFER_MANAGER
  858. Consumer: WBM
  859. Producer: SW/FW
  860. In case of 'NULL' pointer, this field is set to 0
  861. Indicates to which buffer manager the buffer OR
  862. MSDU_EXTENSION descriptor OR link descriptor that is being
  863. pointed to shall be returned after the frame has been
  864. processed. It is used by WBM for routing purposes.
  865. <enum 0 WBM_IDLE_BUF_LIST> This buffer shall be returned
  866. to the WMB buffer idle list
  867. <enum 1 WBM_IDLE_DESC_LIST> This buffer shall be
  868. returned to the WMB idle link descriptor idle list
  869. <enum 2 FW_BM> This buffer shall be returned to the FW
  870. <enum 3 SW0_BM> This buffer shall be returned to the SW,
  871. ring 0
  872. <enum 4 SW1_BM> This buffer shall be returned to the SW,
  873. ring 1
  874. <enum 5 SW2_BM> This buffer shall be returned to the SW,
  875. ring 2
  876. <enum 6 SW3_BM> This buffer shall be returned to the SW,
  877. ring 3
  878. <enum 7 SW4_BM> This buffer shall be returned to the SW,
  879. ring 4
  880. <legal all>
  881. */
  882. #define RX_MSDU_LINK_17_MSDU_2_BUFFER_ADDR_INFO_DETAILS_RETURN_BUFFER_MANAGER_OFFSET 0x00000044
  883. #define RX_MSDU_LINK_17_MSDU_2_BUFFER_ADDR_INFO_DETAILS_RETURN_BUFFER_MANAGER_LSB 8
  884. #define RX_MSDU_LINK_17_MSDU_2_BUFFER_ADDR_INFO_DETAILS_RETURN_BUFFER_MANAGER_MASK 0x00000700
  885. /* Description RX_MSDU_LINK_17_MSDU_2_BUFFER_ADDR_INFO_DETAILS_SW_BUFFER_COOKIE
  886. Cookie field exclusively used by SW.
  887. In case of 'NULL' pointer, this field is set to 0
  888. HW ignores the contents, accept that it passes the
  889. programmed value on to other descriptors together with the
  890. physical address
  891. Field can be used by SW to for example associate the
  892. buffers physical address with the virtual address
  893. The bit definitions as used by SW are within SW HLD
  894. specification
  895. NOTE:
  896. The three most significant bits can have a special
  897. meaning in case this struct is embedded in a TX_MPDU_DETAILS
  898. STRUCT, and field transmit_bw_restriction is set
  899. In case of NON punctured transmission:
  900. Sw_buffer_cookie[20:19] = 2'b00: 20 MHz TX only
  901. Sw_buffer_cookie[20:19] = 2'b01: 40 MHz TX only
  902. Sw_buffer_cookie[20:19] = 2'b10: 80 MHz TX only
  903. Sw_buffer_cookie[20:19] = 2'b11: 160 MHz TX only
  904. In case of punctured transmission:
  905. Sw_buffer_cookie[20:18] = 3'b000: pattern 0 only
  906. Sw_buffer_cookie[20:18] = 3'b001: pattern 1 only
  907. Sw_buffer_cookie[20:18] = 3'b010: pattern 2 only
  908. Sw_buffer_cookie[20:18] = 3'b011: pattern 3 only
  909. Sw_buffer_cookie[20:18] = 3'b100: pattern 4 only
  910. Sw_buffer_cookie[20:18] = 3'b101: pattern 5 only
  911. Sw_buffer_cookie[20:18] = 3'b110: pattern 6 only
  912. Sw_buffer_cookie[20:18] = 3'b111: pattern 7 only
  913. Note: a punctured transmission is indicated by the
  914. presence of TLV TX_PUNCTURE_SETUP embedded in the scheduler
  915. TLV
  916. <legal all>
  917. */
  918. #define RX_MSDU_LINK_17_MSDU_2_BUFFER_ADDR_INFO_DETAILS_SW_BUFFER_COOKIE_OFFSET 0x00000044
  919. #define RX_MSDU_LINK_17_MSDU_2_BUFFER_ADDR_INFO_DETAILS_SW_BUFFER_COOKIE_LSB 11
  920. #define RX_MSDU_LINK_17_MSDU_2_BUFFER_ADDR_INFO_DETAILS_SW_BUFFER_COOKIE_MASK 0xfffff800
  921. /* EXTERNAL REFERENCE : struct rx_msdu_desc_info rx_msdu_desc_info_details */
  922. /* Description RX_MSDU_LINK_18_MSDU_2_RX_MSDU_DESC_INFO_DETAILS_FIRST_MSDU_IN_MPDU_FLAG
  923. Parsed from RX_MSDU_END TLV . In the case MSDU spans
  924. over multiple buffers, this field will be valid in the Last
  925. buffer used by the MSDU
  926. <enum 0 Not_first_msdu> This is not the first MSDU in
  927. the MPDU.
  928. <enum 1 first_msdu> This MSDU is the first one in the
  929. MPDU.
  930. <legal all>
  931. */
  932. #define RX_MSDU_LINK_18_MSDU_2_RX_MSDU_DESC_INFO_DETAILS_FIRST_MSDU_IN_MPDU_FLAG_OFFSET 0x00000048
  933. #define RX_MSDU_LINK_18_MSDU_2_RX_MSDU_DESC_INFO_DETAILS_FIRST_MSDU_IN_MPDU_FLAG_LSB 0
  934. #define RX_MSDU_LINK_18_MSDU_2_RX_MSDU_DESC_INFO_DETAILS_FIRST_MSDU_IN_MPDU_FLAG_MASK 0x00000001
  935. /* Description RX_MSDU_LINK_18_MSDU_2_RX_MSDU_DESC_INFO_DETAILS_LAST_MSDU_IN_MPDU_FLAG
  936. Consumer: WBM/REO/SW/FW
  937. Producer: RXDMA
  938. Parsed from RX_MSDU_END TLV . In the case MSDU spans
  939. over multiple buffers, this field will be valid in the Last
  940. buffer used by the MSDU
  941. <enum 0 Not_last_msdu> There are more MSDUs linked to
  942. this MSDU that belongs to this MPDU
  943. <enum 1 Last_msdu> this MSDU is the last one in the
  944. MPDU. This setting is only allowed in combination with
  945. 'Msdu_continuation' set to 0. This implies that when an msdu
  946. is spread out over multiple buffers and thus
  947. msdu_continuation is set, only for the very last buffer of
  948. the msdu, can the 'last_msdu_in_mpdu_flag' be set.
  949. When both first_msdu_in_mpdu_flag and
  950. last_msdu_in_mpdu_flag are set, the MPDU that this MSDU
  951. belongs to only contains a single MSDU.
  952. <legal all>
  953. */
  954. #define RX_MSDU_LINK_18_MSDU_2_RX_MSDU_DESC_INFO_DETAILS_LAST_MSDU_IN_MPDU_FLAG_OFFSET 0x00000048
  955. #define RX_MSDU_LINK_18_MSDU_2_RX_MSDU_DESC_INFO_DETAILS_LAST_MSDU_IN_MPDU_FLAG_LSB 1
  956. #define RX_MSDU_LINK_18_MSDU_2_RX_MSDU_DESC_INFO_DETAILS_LAST_MSDU_IN_MPDU_FLAG_MASK 0x00000002
  957. /* Description RX_MSDU_LINK_18_MSDU_2_RX_MSDU_DESC_INFO_DETAILS_MSDU_CONTINUATION
  958. When set, this MSDU buffer was not able to hold the
  959. entire MSDU. The next buffer will therefor contain
  960. additional information related to this MSDU.
  961. <legal all>
  962. */
  963. #define RX_MSDU_LINK_18_MSDU_2_RX_MSDU_DESC_INFO_DETAILS_MSDU_CONTINUATION_OFFSET 0x00000048
  964. #define RX_MSDU_LINK_18_MSDU_2_RX_MSDU_DESC_INFO_DETAILS_MSDU_CONTINUATION_LSB 2
  965. #define RX_MSDU_LINK_18_MSDU_2_RX_MSDU_DESC_INFO_DETAILS_MSDU_CONTINUATION_MASK 0x00000004
  966. /* Description RX_MSDU_LINK_18_MSDU_2_RX_MSDU_DESC_INFO_DETAILS_MSDU_LENGTH
  967. Parsed from RX_MSDU_START TLV . In the case MSDU spans
  968. over multiple buffers, this field will be valid in the First
  969. buffer used by MSDU.
  970. Full MSDU length in bytes after decapsulation.
  971. This field is still valid for MPDU frames without
  972. A-MSDU. It still represents MSDU length after decapsulation
  973. Or in case of RAW MPDUs, it indicates the length of the
  974. entire MPDU (without FCS field)
  975. <legal all>
  976. */
  977. #define RX_MSDU_LINK_18_MSDU_2_RX_MSDU_DESC_INFO_DETAILS_MSDU_LENGTH_OFFSET 0x00000048
  978. #define RX_MSDU_LINK_18_MSDU_2_RX_MSDU_DESC_INFO_DETAILS_MSDU_LENGTH_LSB 3
  979. #define RX_MSDU_LINK_18_MSDU_2_RX_MSDU_DESC_INFO_DETAILS_MSDU_LENGTH_MASK 0x0001fff8
  980. /* Description RX_MSDU_LINK_18_MSDU_2_RX_MSDU_DESC_INFO_DETAILS_REO_DESTINATION_INDICATION
  981. Parsed from RX_MSDU_END TLV . In the case MSDU spans
  982. over multiple buffers, this field will be valid in the Last
  983. buffer used by the MSDU
  984. The ID of the REO exit ring where the MSDU frame shall
  985. push after (MPDU level) reordering has finished.
  986. <enum 0 reo_destination_tcl> Reo will push the frame
  987. into the REO2TCL ring
  988. <enum 1 reo_destination_sw1> Reo will push the frame
  989. into the REO2SW1 ring
  990. <enum 2 reo_destination_sw2> Reo will push the frame
  991. into the REO2SW2 ring
  992. <enum 3 reo_destination_sw3> Reo will push the frame
  993. into the REO2SW3 ring
  994. <enum 4 reo_destination_sw4> Reo will push the frame
  995. into the REO2SW4 ring
  996. <enum 5 reo_destination_release> Reo will push the frame
  997. into the REO_release ring
  998. <enum 6 reo_destination_fw> Reo will push the frame into
  999. the REO2FW ring
  1000. <enum 7 reo_destination_sw5> Reo will push the frame
  1001. into the REO2SW5 ring
  1002. <enum 8 reo_destination_sw6> Reo will push the frame
  1003. into the REO2SW6 ring
  1004. <enum 9 reo_destination_9> REO remaps this <enum 10
  1005. reo_destination_10> REO remaps this
  1006. <enum 11 reo_destination_11> REO remaps this
  1007. <enum 12 reo_destination_12> REO remaps this <enum 13
  1008. reo_destination_13> REO remaps this
  1009. <enum 14 reo_destination_14> REO remaps this
  1010. <enum 15 reo_destination_15> REO remaps this
  1011. <enum 16 reo_destination_16> REO remaps this
  1012. <enum 17 reo_destination_17> REO remaps this
  1013. <enum 18 reo_destination_18> REO remaps this
  1014. <enum 19 reo_destination_19> REO remaps this
  1015. <enum 20 reo_destination_20> REO remaps this
  1016. <enum 21 reo_destination_21> REO remaps this
  1017. <enum 22 reo_destination_22> REO remaps this
  1018. <enum 23 reo_destination_23> REO remaps this
  1019. <enum 24 reo_destination_24> REO remaps this
  1020. <enum 25 reo_destination_25> REO remaps this
  1021. <enum 26 reo_destination_26> REO remaps this
  1022. <enum 27 reo_destination_27> REO remaps this
  1023. <enum 28 reo_destination_28> REO remaps this
  1024. <enum 29 reo_destination_29> REO remaps this
  1025. <enum 30 reo_destination_30> REO remaps this
  1026. <enum 31 reo_destination_31> REO remaps this
  1027. <legal all>
  1028. */
  1029. #define RX_MSDU_LINK_18_MSDU_2_RX_MSDU_DESC_INFO_DETAILS_REO_DESTINATION_INDICATION_OFFSET 0x00000048
  1030. #define RX_MSDU_LINK_18_MSDU_2_RX_MSDU_DESC_INFO_DETAILS_REO_DESTINATION_INDICATION_LSB 17
  1031. #define RX_MSDU_LINK_18_MSDU_2_RX_MSDU_DESC_INFO_DETAILS_REO_DESTINATION_INDICATION_MASK 0x003e0000
  1032. /* Description RX_MSDU_LINK_18_MSDU_2_RX_MSDU_DESC_INFO_DETAILS_MSDU_DROP
  1033. Parsed from RX_MSDU_END TLV . In the case MSDU spans
  1034. over multiple buffers, this field will be valid in the Last
  1035. buffer used by the MSDU
  1036. When set, REO shall drop this MSDU and not forward it to
  1037. any other ring...
  1038. <legal all>
  1039. */
  1040. #define RX_MSDU_LINK_18_MSDU_2_RX_MSDU_DESC_INFO_DETAILS_MSDU_DROP_OFFSET 0x00000048
  1041. #define RX_MSDU_LINK_18_MSDU_2_RX_MSDU_DESC_INFO_DETAILS_MSDU_DROP_LSB 22
  1042. #define RX_MSDU_LINK_18_MSDU_2_RX_MSDU_DESC_INFO_DETAILS_MSDU_DROP_MASK 0x00400000
  1043. /* Description RX_MSDU_LINK_18_MSDU_2_RX_MSDU_DESC_INFO_DETAILS_SA_IS_VALID
  1044. Parsed from RX_MSDU_END TLV . In the case MSDU spans
  1045. over multiple buffers, this field will be valid in the Last
  1046. buffer used by the MSDU
  1047. Indicates that OLE found a valid SA entry for this MSDU
  1048. <legal all>
  1049. */
  1050. #define RX_MSDU_LINK_18_MSDU_2_RX_MSDU_DESC_INFO_DETAILS_SA_IS_VALID_OFFSET 0x00000048
  1051. #define RX_MSDU_LINK_18_MSDU_2_RX_MSDU_DESC_INFO_DETAILS_SA_IS_VALID_LSB 23
  1052. #define RX_MSDU_LINK_18_MSDU_2_RX_MSDU_DESC_INFO_DETAILS_SA_IS_VALID_MASK 0x00800000
  1053. /* Description RX_MSDU_LINK_18_MSDU_2_RX_MSDU_DESC_INFO_DETAILS_SA_IDX_TIMEOUT
  1054. Parsed from RX_MSDU_END TLV . In the case MSDU spans
  1055. over multiple buffers, this field will be valid in the Last
  1056. buffer used by the MSDU
  1057. Indicates an unsuccessful MAC source address search due
  1058. to the expiring of the search timer for this MSDU
  1059. <legal all>
  1060. */
  1061. #define RX_MSDU_LINK_18_MSDU_2_RX_MSDU_DESC_INFO_DETAILS_SA_IDX_TIMEOUT_OFFSET 0x00000048
  1062. #define RX_MSDU_LINK_18_MSDU_2_RX_MSDU_DESC_INFO_DETAILS_SA_IDX_TIMEOUT_LSB 24
  1063. #define RX_MSDU_LINK_18_MSDU_2_RX_MSDU_DESC_INFO_DETAILS_SA_IDX_TIMEOUT_MASK 0x01000000
  1064. /* Description RX_MSDU_LINK_18_MSDU_2_RX_MSDU_DESC_INFO_DETAILS_DA_IS_VALID
  1065. Parsed from RX_MSDU_END TLV . In the case MSDU spans
  1066. over multiple buffers, this field will be valid in the Last
  1067. buffer used by the MSDU
  1068. Indicates that OLE found a valid DA entry for this MSDU
  1069. <legal all>
  1070. */
  1071. #define RX_MSDU_LINK_18_MSDU_2_RX_MSDU_DESC_INFO_DETAILS_DA_IS_VALID_OFFSET 0x00000048
  1072. #define RX_MSDU_LINK_18_MSDU_2_RX_MSDU_DESC_INFO_DETAILS_DA_IS_VALID_LSB 25
  1073. #define RX_MSDU_LINK_18_MSDU_2_RX_MSDU_DESC_INFO_DETAILS_DA_IS_VALID_MASK 0x02000000
  1074. /* Description RX_MSDU_LINK_18_MSDU_2_RX_MSDU_DESC_INFO_DETAILS_DA_IS_MCBC
  1075. Field Only valid if da_is_valid is set
  1076. Indicates the DA address was a Multicast of Broadcast
  1077. address for this MSDU
  1078. <legal all>
  1079. */
  1080. #define RX_MSDU_LINK_18_MSDU_2_RX_MSDU_DESC_INFO_DETAILS_DA_IS_MCBC_OFFSET 0x00000048
  1081. #define RX_MSDU_LINK_18_MSDU_2_RX_MSDU_DESC_INFO_DETAILS_DA_IS_MCBC_LSB 26
  1082. #define RX_MSDU_LINK_18_MSDU_2_RX_MSDU_DESC_INFO_DETAILS_DA_IS_MCBC_MASK 0x04000000
  1083. /* Description RX_MSDU_LINK_18_MSDU_2_RX_MSDU_DESC_INFO_DETAILS_DA_IDX_TIMEOUT
  1084. Parsed from RX_MSDU_END TLV . In the case MSDU spans
  1085. over multiple buffers, this field will be valid in the Last
  1086. buffer used by the MSDU
  1087. Indicates an unsuccessful MAC destination address search
  1088. due to the expiring of the search timer for this MSDU
  1089. <legal all>
  1090. */
  1091. #define RX_MSDU_LINK_18_MSDU_2_RX_MSDU_DESC_INFO_DETAILS_DA_IDX_TIMEOUT_OFFSET 0x00000048
  1092. #define RX_MSDU_LINK_18_MSDU_2_RX_MSDU_DESC_INFO_DETAILS_DA_IDX_TIMEOUT_LSB 27
  1093. #define RX_MSDU_LINK_18_MSDU_2_RX_MSDU_DESC_INFO_DETAILS_DA_IDX_TIMEOUT_MASK 0x08000000
  1094. /* Description RX_MSDU_LINK_18_MSDU_2_RX_MSDU_DESC_INFO_DETAILS_RESERVED_0A
  1095. <legal 0>
  1096. */
  1097. #define RX_MSDU_LINK_18_MSDU_2_RX_MSDU_DESC_INFO_DETAILS_RESERVED_0A_OFFSET 0x00000048
  1098. #define RX_MSDU_LINK_18_MSDU_2_RX_MSDU_DESC_INFO_DETAILS_RESERVED_0A_LSB 28
  1099. #define RX_MSDU_LINK_18_MSDU_2_RX_MSDU_DESC_INFO_DETAILS_RESERVED_0A_MASK 0xf0000000
  1100. /* Description RX_MSDU_LINK_19_MSDU_2_RX_MSDU_DESC_INFO_DETAILS_RESERVED_1A
  1101. <legal 0>
  1102. */
  1103. #define RX_MSDU_LINK_19_MSDU_2_RX_MSDU_DESC_INFO_DETAILS_RESERVED_1A_OFFSET 0x0000004c
  1104. #define RX_MSDU_LINK_19_MSDU_2_RX_MSDU_DESC_INFO_DETAILS_RESERVED_1A_LSB 0
  1105. #define RX_MSDU_LINK_19_MSDU_2_RX_MSDU_DESC_INFO_DETAILS_RESERVED_1A_MASK 0xffffffff
  1106. /* EXTERNAL REFERENCE : struct rx_msdu_details msdu_3 */
  1107. /* EXTERNAL REFERENCE : struct buffer_addr_info buffer_addr_info_details */
  1108. /* Description RX_MSDU_LINK_20_MSDU_3_BUFFER_ADDR_INFO_DETAILS_BUFFER_ADDR_31_0
  1109. Address (lower 32 bits) of the MSDU buffer OR
  1110. MSDU_EXTENSION descriptor OR Link Descriptor
  1111. In case of 'NULL' pointer, this field is set to 0
  1112. <legal all>
  1113. */
  1114. #define RX_MSDU_LINK_20_MSDU_3_BUFFER_ADDR_INFO_DETAILS_BUFFER_ADDR_31_0_OFFSET 0x00000050
  1115. #define RX_MSDU_LINK_20_MSDU_3_BUFFER_ADDR_INFO_DETAILS_BUFFER_ADDR_31_0_LSB 0
  1116. #define RX_MSDU_LINK_20_MSDU_3_BUFFER_ADDR_INFO_DETAILS_BUFFER_ADDR_31_0_MASK 0xffffffff
  1117. /* Description RX_MSDU_LINK_21_MSDU_3_BUFFER_ADDR_INFO_DETAILS_BUFFER_ADDR_39_32
  1118. Address (upper 8 bits) of the MSDU buffer OR
  1119. MSDU_EXTENSION descriptor OR Link Descriptor
  1120. In case of 'NULL' pointer, this field is set to 0
  1121. <legal all>
  1122. */
  1123. #define RX_MSDU_LINK_21_MSDU_3_BUFFER_ADDR_INFO_DETAILS_BUFFER_ADDR_39_32_OFFSET 0x00000054
  1124. #define RX_MSDU_LINK_21_MSDU_3_BUFFER_ADDR_INFO_DETAILS_BUFFER_ADDR_39_32_LSB 0
  1125. #define RX_MSDU_LINK_21_MSDU_3_BUFFER_ADDR_INFO_DETAILS_BUFFER_ADDR_39_32_MASK 0x000000ff
  1126. /* Description RX_MSDU_LINK_21_MSDU_3_BUFFER_ADDR_INFO_DETAILS_RETURN_BUFFER_MANAGER
  1127. Consumer: WBM
  1128. Producer: SW/FW
  1129. In case of 'NULL' pointer, this field is set to 0
  1130. Indicates to which buffer manager the buffer OR
  1131. MSDU_EXTENSION descriptor OR link descriptor that is being
  1132. pointed to shall be returned after the frame has been
  1133. processed. It is used by WBM for routing purposes.
  1134. <enum 0 WBM_IDLE_BUF_LIST> This buffer shall be returned
  1135. to the WMB buffer idle list
  1136. <enum 1 WBM_IDLE_DESC_LIST> This buffer shall be
  1137. returned to the WMB idle link descriptor idle list
  1138. <enum 2 FW_BM> This buffer shall be returned to the FW
  1139. <enum 3 SW0_BM> This buffer shall be returned to the SW,
  1140. ring 0
  1141. <enum 4 SW1_BM> This buffer shall be returned to the SW,
  1142. ring 1
  1143. <enum 5 SW2_BM> This buffer shall be returned to the SW,
  1144. ring 2
  1145. <enum 6 SW3_BM> This buffer shall be returned to the SW,
  1146. ring 3
  1147. <enum 7 SW4_BM> This buffer shall be returned to the SW,
  1148. ring 4
  1149. <legal all>
  1150. */
  1151. #define RX_MSDU_LINK_21_MSDU_3_BUFFER_ADDR_INFO_DETAILS_RETURN_BUFFER_MANAGER_OFFSET 0x00000054
  1152. #define RX_MSDU_LINK_21_MSDU_3_BUFFER_ADDR_INFO_DETAILS_RETURN_BUFFER_MANAGER_LSB 8
  1153. #define RX_MSDU_LINK_21_MSDU_3_BUFFER_ADDR_INFO_DETAILS_RETURN_BUFFER_MANAGER_MASK 0x00000700
  1154. /* Description RX_MSDU_LINK_21_MSDU_3_BUFFER_ADDR_INFO_DETAILS_SW_BUFFER_COOKIE
  1155. Cookie field exclusively used by SW.
  1156. In case of 'NULL' pointer, this field is set to 0
  1157. HW ignores the contents, accept that it passes the
  1158. programmed value on to other descriptors together with the
  1159. physical address
  1160. Field can be used by SW to for example associate the
  1161. buffers physical address with the virtual address
  1162. The bit definitions as used by SW are within SW HLD
  1163. specification
  1164. NOTE:
  1165. The three most significant bits can have a special
  1166. meaning in case this struct is embedded in a TX_MPDU_DETAILS
  1167. STRUCT, and field transmit_bw_restriction is set
  1168. In case of NON punctured transmission:
  1169. Sw_buffer_cookie[20:19] = 2'b00: 20 MHz TX only
  1170. Sw_buffer_cookie[20:19] = 2'b01: 40 MHz TX only
  1171. Sw_buffer_cookie[20:19] = 2'b10: 80 MHz TX only
  1172. Sw_buffer_cookie[20:19] = 2'b11: 160 MHz TX only
  1173. In case of punctured transmission:
  1174. Sw_buffer_cookie[20:18] = 3'b000: pattern 0 only
  1175. Sw_buffer_cookie[20:18] = 3'b001: pattern 1 only
  1176. Sw_buffer_cookie[20:18] = 3'b010: pattern 2 only
  1177. Sw_buffer_cookie[20:18] = 3'b011: pattern 3 only
  1178. Sw_buffer_cookie[20:18] = 3'b100: pattern 4 only
  1179. Sw_buffer_cookie[20:18] = 3'b101: pattern 5 only
  1180. Sw_buffer_cookie[20:18] = 3'b110: pattern 6 only
  1181. Sw_buffer_cookie[20:18] = 3'b111: pattern 7 only
  1182. Note: a punctured transmission is indicated by the
  1183. presence of TLV TX_PUNCTURE_SETUP embedded in the scheduler
  1184. TLV
  1185. <legal all>
  1186. */
  1187. #define RX_MSDU_LINK_21_MSDU_3_BUFFER_ADDR_INFO_DETAILS_SW_BUFFER_COOKIE_OFFSET 0x00000054
  1188. #define RX_MSDU_LINK_21_MSDU_3_BUFFER_ADDR_INFO_DETAILS_SW_BUFFER_COOKIE_LSB 11
  1189. #define RX_MSDU_LINK_21_MSDU_3_BUFFER_ADDR_INFO_DETAILS_SW_BUFFER_COOKIE_MASK 0xfffff800
  1190. /* EXTERNAL REFERENCE : struct rx_msdu_desc_info rx_msdu_desc_info_details */
  1191. /* Description RX_MSDU_LINK_22_MSDU_3_RX_MSDU_DESC_INFO_DETAILS_FIRST_MSDU_IN_MPDU_FLAG
  1192. Parsed from RX_MSDU_END TLV . In the case MSDU spans
  1193. over multiple buffers, this field will be valid in the Last
  1194. buffer used by the MSDU
  1195. <enum 0 Not_first_msdu> This is not the first MSDU in
  1196. the MPDU.
  1197. <enum 1 first_msdu> This MSDU is the first one in the
  1198. MPDU.
  1199. <legal all>
  1200. */
  1201. #define RX_MSDU_LINK_22_MSDU_3_RX_MSDU_DESC_INFO_DETAILS_FIRST_MSDU_IN_MPDU_FLAG_OFFSET 0x00000058
  1202. #define RX_MSDU_LINK_22_MSDU_3_RX_MSDU_DESC_INFO_DETAILS_FIRST_MSDU_IN_MPDU_FLAG_LSB 0
  1203. #define RX_MSDU_LINK_22_MSDU_3_RX_MSDU_DESC_INFO_DETAILS_FIRST_MSDU_IN_MPDU_FLAG_MASK 0x00000001
  1204. /* Description RX_MSDU_LINK_22_MSDU_3_RX_MSDU_DESC_INFO_DETAILS_LAST_MSDU_IN_MPDU_FLAG
  1205. Consumer: WBM/REO/SW/FW
  1206. Producer: RXDMA
  1207. Parsed from RX_MSDU_END TLV . In the case MSDU spans
  1208. over multiple buffers, this field will be valid in the Last
  1209. buffer used by the MSDU
  1210. <enum 0 Not_last_msdu> There are more MSDUs linked to
  1211. this MSDU that belongs to this MPDU
  1212. <enum 1 Last_msdu> this MSDU is the last one in the
  1213. MPDU. This setting is only allowed in combination with
  1214. 'Msdu_continuation' set to 0. This implies that when an msdu
  1215. is spread out over multiple buffers and thus
  1216. msdu_continuation is set, only for the very last buffer of
  1217. the msdu, can the 'last_msdu_in_mpdu_flag' be set.
  1218. When both first_msdu_in_mpdu_flag and
  1219. last_msdu_in_mpdu_flag are set, the MPDU that this MSDU
  1220. belongs to only contains a single MSDU.
  1221. <legal all>
  1222. */
  1223. #define RX_MSDU_LINK_22_MSDU_3_RX_MSDU_DESC_INFO_DETAILS_LAST_MSDU_IN_MPDU_FLAG_OFFSET 0x00000058
  1224. #define RX_MSDU_LINK_22_MSDU_3_RX_MSDU_DESC_INFO_DETAILS_LAST_MSDU_IN_MPDU_FLAG_LSB 1
  1225. #define RX_MSDU_LINK_22_MSDU_3_RX_MSDU_DESC_INFO_DETAILS_LAST_MSDU_IN_MPDU_FLAG_MASK 0x00000002
  1226. /* Description RX_MSDU_LINK_22_MSDU_3_RX_MSDU_DESC_INFO_DETAILS_MSDU_CONTINUATION
  1227. When set, this MSDU buffer was not able to hold the
  1228. entire MSDU. The next buffer will therefor contain
  1229. additional information related to this MSDU.
  1230. <legal all>
  1231. */
  1232. #define RX_MSDU_LINK_22_MSDU_3_RX_MSDU_DESC_INFO_DETAILS_MSDU_CONTINUATION_OFFSET 0x00000058
  1233. #define RX_MSDU_LINK_22_MSDU_3_RX_MSDU_DESC_INFO_DETAILS_MSDU_CONTINUATION_LSB 2
  1234. #define RX_MSDU_LINK_22_MSDU_3_RX_MSDU_DESC_INFO_DETAILS_MSDU_CONTINUATION_MASK 0x00000004
  1235. /* Description RX_MSDU_LINK_22_MSDU_3_RX_MSDU_DESC_INFO_DETAILS_MSDU_LENGTH
  1236. Parsed from RX_MSDU_START TLV . In the case MSDU spans
  1237. over multiple buffers, this field will be valid in the First
  1238. buffer used by MSDU.
  1239. Full MSDU length in bytes after decapsulation.
  1240. This field is still valid for MPDU frames without
  1241. A-MSDU. It still represents MSDU length after decapsulation
  1242. Or in case of RAW MPDUs, it indicates the length of the
  1243. entire MPDU (without FCS field)
  1244. <legal all>
  1245. */
  1246. #define RX_MSDU_LINK_22_MSDU_3_RX_MSDU_DESC_INFO_DETAILS_MSDU_LENGTH_OFFSET 0x00000058
  1247. #define RX_MSDU_LINK_22_MSDU_3_RX_MSDU_DESC_INFO_DETAILS_MSDU_LENGTH_LSB 3
  1248. #define RX_MSDU_LINK_22_MSDU_3_RX_MSDU_DESC_INFO_DETAILS_MSDU_LENGTH_MASK 0x0001fff8
  1249. /* Description RX_MSDU_LINK_22_MSDU_3_RX_MSDU_DESC_INFO_DETAILS_REO_DESTINATION_INDICATION
  1250. Parsed from RX_MSDU_END TLV . In the case MSDU spans
  1251. over multiple buffers, this field will be valid in the Last
  1252. buffer used by the MSDU
  1253. The ID of the REO exit ring where the MSDU frame shall
  1254. push after (MPDU level) reordering has finished.
  1255. <enum 0 reo_destination_tcl> Reo will push the frame
  1256. into the REO2TCL ring
  1257. <enum 1 reo_destination_sw1> Reo will push the frame
  1258. into the REO2SW1 ring
  1259. <enum 2 reo_destination_sw2> Reo will push the frame
  1260. into the REO2SW2 ring
  1261. <enum 3 reo_destination_sw3> Reo will push the frame
  1262. into the REO2SW3 ring
  1263. <enum 4 reo_destination_sw4> Reo will push the frame
  1264. into the REO2SW4 ring
  1265. <enum 5 reo_destination_release> Reo will push the frame
  1266. into the REO_release ring
  1267. <enum 6 reo_destination_fw> Reo will push the frame into
  1268. the REO2FW ring
  1269. <enum 7 reo_destination_sw5> Reo will push the frame
  1270. into the REO2SW5 ring
  1271. <enum 8 reo_destination_sw6> Reo will push the frame
  1272. into the REO2SW6 ring
  1273. <enum 9 reo_destination_9> REO remaps this <enum 10
  1274. reo_destination_10> REO remaps this
  1275. <enum 11 reo_destination_11> REO remaps this
  1276. <enum 12 reo_destination_12> REO remaps this <enum 13
  1277. reo_destination_13> REO remaps this
  1278. <enum 14 reo_destination_14> REO remaps this
  1279. <enum 15 reo_destination_15> REO remaps this
  1280. <enum 16 reo_destination_16> REO remaps this
  1281. <enum 17 reo_destination_17> REO remaps this
  1282. <enum 18 reo_destination_18> REO remaps this
  1283. <enum 19 reo_destination_19> REO remaps this
  1284. <enum 20 reo_destination_20> REO remaps this
  1285. <enum 21 reo_destination_21> REO remaps this
  1286. <enum 22 reo_destination_22> REO remaps this
  1287. <enum 23 reo_destination_23> REO remaps this
  1288. <enum 24 reo_destination_24> REO remaps this
  1289. <enum 25 reo_destination_25> REO remaps this
  1290. <enum 26 reo_destination_26> REO remaps this
  1291. <enum 27 reo_destination_27> REO remaps this
  1292. <enum 28 reo_destination_28> REO remaps this
  1293. <enum 29 reo_destination_29> REO remaps this
  1294. <enum 30 reo_destination_30> REO remaps this
  1295. <enum 31 reo_destination_31> REO remaps this
  1296. <legal all>
  1297. */
  1298. #define RX_MSDU_LINK_22_MSDU_3_RX_MSDU_DESC_INFO_DETAILS_REO_DESTINATION_INDICATION_OFFSET 0x00000058
  1299. #define RX_MSDU_LINK_22_MSDU_3_RX_MSDU_DESC_INFO_DETAILS_REO_DESTINATION_INDICATION_LSB 17
  1300. #define RX_MSDU_LINK_22_MSDU_3_RX_MSDU_DESC_INFO_DETAILS_REO_DESTINATION_INDICATION_MASK 0x003e0000
  1301. /* Description RX_MSDU_LINK_22_MSDU_3_RX_MSDU_DESC_INFO_DETAILS_MSDU_DROP
  1302. Parsed from RX_MSDU_END TLV . In the case MSDU spans
  1303. over multiple buffers, this field will be valid in the Last
  1304. buffer used by the MSDU
  1305. When set, REO shall drop this MSDU and not forward it to
  1306. any other ring...
  1307. <legal all>
  1308. */
  1309. #define RX_MSDU_LINK_22_MSDU_3_RX_MSDU_DESC_INFO_DETAILS_MSDU_DROP_OFFSET 0x00000058
  1310. #define RX_MSDU_LINK_22_MSDU_3_RX_MSDU_DESC_INFO_DETAILS_MSDU_DROP_LSB 22
  1311. #define RX_MSDU_LINK_22_MSDU_3_RX_MSDU_DESC_INFO_DETAILS_MSDU_DROP_MASK 0x00400000
  1312. /* Description RX_MSDU_LINK_22_MSDU_3_RX_MSDU_DESC_INFO_DETAILS_SA_IS_VALID
  1313. Parsed from RX_MSDU_END TLV . In the case MSDU spans
  1314. over multiple buffers, this field will be valid in the Last
  1315. buffer used by the MSDU
  1316. Indicates that OLE found a valid SA entry for this MSDU
  1317. <legal all>
  1318. */
  1319. #define RX_MSDU_LINK_22_MSDU_3_RX_MSDU_DESC_INFO_DETAILS_SA_IS_VALID_OFFSET 0x00000058
  1320. #define RX_MSDU_LINK_22_MSDU_3_RX_MSDU_DESC_INFO_DETAILS_SA_IS_VALID_LSB 23
  1321. #define RX_MSDU_LINK_22_MSDU_3_RX_MSDU_DESC_INFO_DETAILS_SA_IS_VALID_MASK 0x00800000
  1322. /* Description RX_MSDU_LINK_22_MSDU_3_RX_MSDU_DESC_INFO_DETAILS_SA_IDX_TIMEOUT
  1323. Parsed from RX_MSDU_END TLV . In the case MSDU spans
  1324. over multiple buffers, this field will be valid in the Last
  1325. buffer used by the MSDU
  1326. Indicates an unsuccessful MAC source address search due
  1327. to the expiring of the search timer for this MSDU
  1328. <legal all>
  1329. */
  1330. #define RX_MSDU_LINK_22_MSDU_3_RX_MSDU_DESC_INFO_DETAILS_SA_IDX_TIMEOUT_OFFSET 0x00000058
  1331. #define RX_MSDU_LINK_22_MSDU_3_RX_MSDU_DESC_INFO_DETAILS_SA_IDX_TIMEOUT_LSB 24
  1332. #define RX_MSDU_LINK_22_MSDU_3_RX_MSDU_DESC_INFO_DETAILS_SA_IDX_TIMEOUT_MASK 0x01000000
  1333. /* Description RX_MSDU_LINK_22_MSDU_3_RX_MSDU_DESC_INFO_DETAILS_DA_IS_VALID
  1334. Parsed from RX_MSDU_END TLV . In the case MSDU spans
  1335. over multiple buffers, this field will be valid in the Last
  1336. buffer used by the MSDU
  1337. Indicates that OLE found a valid DA entry for this MSDU
  1338. <legal all>
  1339. */
  1340. #define RX_MSDU_LINK_22_MSDU_3_RX_MSDU_DESC_INFO_DETAILS_DA_IS_VALID_OFFSET 0x00000058
  1341. #define RX_MSDU_LINK_22_MSDU_3_RX_MSDU_DESC_INFO_DETAILS_DA_IS_VALID_LSB 25
  1342. #define RX_MSDU_LINK_22_MSDU_3_RX_MSDU_DESC_INFO_DETAILS_DA_IS_VALID_MASK 0x02000000
  1343. /* Description RX_MSDU_LINK_22_MSDU_3_RX_MSDU_DESC_INFO_DETAILS_DA_IS_MCBC
  1344. Field Only valid if da_is_valid is set
  1345. Indicates the DA address was a Multicast of Broadcast
  1346. address for this MSDU
  1347. <legal all>
  1348. */
  1349. #define RX_MSDU_LINK_22_MSDU_3_RX_MSDU_DESC_INFO_DETAILS_DA_IS_MCBC_OFFSET 0x00000058
  1350. #define RX_MSDU_LINK_22_MSDU_3_RX_MSDU_DESC_INFO_DETAILS_DA_IS_MCBC_LSB 26
  1351. #define RX_MSDU_LINK_22_MSDU_3_RX_MSDU_DESC_INFO_DETAILS_DA_IS_MCBC_MASK 0x04000000
  1352. /* Description RX_MSDU_LINK_22_MSDU_3_RX_MSDU_DESC_INFO_DETAILS_DA_IDX_TIMEOUT
  1353. Parsed from RX_MSDU_END TLV . In the case MSDU spans
  1354. over multiple buffers, this field will be valid in the Last
  1355. buffer used by the MSDU
  1356. Indicates an unsuccessful MAC destination address search
  1357. due to the expiring of the search timer for this MSDU
  1358. <legal all>
  1359. */
  1360. #define RX_MSDU_LINK_22_MSDU_3_RX_MSDU_DESC_INFO_DETAILS_DA_IDX_TIMEOUT_OFFSET 0x00000058
  1361. #define RX_MSDU_LINK_22_MSDU_3_RX_MSDU_DESC_INFO_DETAILS_DA_IDX_TIMEOUT_LSB 27
  1362. #define RX_MSDU_LINK_22_MSDU_3_RX_MSDU_DESC_INFO_DETAILS_DA_IDX_TIMEOUT_MASK 0x08000000
  1363. /* Description RX_MSDU_LINK_22_MSDU_3_RX_MSDU_DESC_INFO_DETAILS_RESERVED_0A
  1364. <legal 0>
  1365. */
  1366. #define RX_MSDU_LINK_22_MSDU_3_RX_MSDU_DESC_INFO_DETAILS_RESERVED_0A_OFFSET 0x00000058
  1367. #define RX_MSDU_LINK_22_MSDU_3_RX_MSDU_DESC_INFO_DETAILS_RESERVED_0A_LSB 28
  1368. #define RX_MSDU_LINK_22_MSDU_3_RX_MSDU_DESC_INFO_DETAILS_RESERVED_0A_MASK 0xf0000000
  1369. /* Description RX_MSDU_LINK_23_MSDU_3_RX_MSDU_DESC_INFO_DETAILS_RESERVED_1A
  1370. <legal 0>
  1371. */
  1372. #define RX_MSDU_LINK_23_MSDU_3_RX_MSDU_DESC_INFO_DETAILS_RESERVED_1A_OFFSET 0x0000005c
  1373. #define RX_MSDU_LINK_23_MSDU_3_RX_MSDU_DESC_INFO_DETAILS_RESERVED_1A_LSB 0
  1374. #define RX_MSDU_LINK_23_MSDU_3_RX_MSDU_DESC_INFO_DETAILS_RESERVED_1A_MASK 0xffffffff
  1375. /* EXTERNAL REFERENCE : struct rx_msdu_details msdu_4 */
  1376. /* EXTERNAL REFERENCE : struct buffer_addr_info buffer_addr_info_details */
  1377. /* Description RX_MSDU_LINK_24_MSDU_4_BUFFER_ADDR_INFO_DETAILS_BUFFER_ADDR_31_0
  1378. Address (lower 32 bits) of the MSDU buffer OR
  1379. MSDU_EXTENSION descriptor OR Link Descriptor
  1380. In case of 'NULL' pointer, this field is set to 0
  1381. <legal all>
  1382. */
  1383. #define RX_MSDU_LINK_24_MSDU_4_BUFFER_ADDR_INFO_DETAILS_BUFFER_ADDR_31_0_OFFSET 0x00000060
  1384. #define RX_MSDU_LINK_24_MSDU_4_BUFFER_ADDR_INFO_DETAILS_BUFFER_ADDR_31_0_LSB 0
  1385. #define RX_MSDU_LINK_24_MSDU_4_BUFFER_ADDR_INFO_DETAILS_BUFFER_ADDR_31_0_MASK 0xffffffff
  1386. /* Description RX_MSDU_LINK_25_MSDU_4_BUFFER_ADDR_INFO_DETAILS_BUFFER_ADDR_39_32
  1387. Address (upper 8 bits) of the MSDU buffer OR
  1388. MSDU_EXTENSION descriptor OR Link Descriptor
  1389. In case of 'NULL' pointer, this field is set to 0
  1390. <legal all>
  1391. */
  1392. #define RX_MSDU_LINK_25_MSDU_4_BUFFER_ADDR_INFO_DETAILS_BUFFER_ADDR_39_32_OFFSET 0x00000064
  1393. #define RX_MSDU_LINK_25_MSDU_4_BUFFER_ADDR_INFO_DETAILS_BUFFER_ADDR_39_32_LSB 0
  1394. #define RX_MSDU_LINK_25_MSDU_4_BUFFER_ADDR_INFO_DETAILS_BUFFER_ADDR_39_32_MASK 0x000000ff
  1395. /* Description RX_MSDU_LINK_25_MSDU_4_BUFFER_ADDR_INFO_DETAILS_RETURN_BUFFER_MANAGER
  1396. Consumer: WBM
  1397. Producer: SW/FW
  1398. In case of 'NULL' pointer, this field is set to 0
  1399. Indicates to which buffer manager the buffer OR
  1400. MSDU_EXTENSION descriptor OR link descriptor that is being
  1401. pointed to shall be returned after the frame has been
  1402. processed. It is used by WBM for routing purposes.
  1403. <enum 0 WBM_IDLE_BUF_LIST> This buffer shall be returned
  1404. to the WMB buffer idle list
  1405. <enum 1 WBM_IDLE_DESC_LIST> This buffer shall be
  1406. returned to the WMB idle link descriptor idle list
  1407. <enum 2 FW_BM> This buffer shall be returned to the FW
  1408. <enum 3 SW0_BM> This buffer shall be returned to the SW,
  1409. ring 0
  1410. <enum 4 SW1_BM> This buffer shall be returned to the SW,
  1411. ring 1
  1412. <enum 5 SW2_BM> This buffer shall be returned to the SW,
  1413. ring 2
  1414. <enum 6 SW3_BM> This buffer shall be returned to the SW,
  1415. ring 3
  1416. <enum 7 SW4_BM> This buffer shall be returned to the SW,
  1417. ring 4
  1418. <legal all>
  1419. */
  1420. #define RX_MSDU_LINK_25_MSDU_4_BUFFER_ADDR_INFO_DETAILS_RETURN_BUFFER_MANAGER_OFFSET 0x00000064
  1421. #define RX_MSDU_LINK_25_MSDU_4_BUFFER_ADDR_INFO_DETAILS_RETURN_BUFFER_MANAGER_LSB 8
  1422. #define RX_MSDU_LINK_25_MSDU_4_BUFFER_ADDR_INFO_DETAILS_RETURN_BUFFER_MANAGER_MASK 0x00000700
  1423. /* Description RX_MSDU_LINK_25_MSDU_4_BUFFER_ADDR_INFO_DETAILS_SW_BUFFER_COOKIE
  1424. Cookie field exclusively used by SW.
  1425. In case of 'NULL' pointer, this field is set to 0
  1426. HW ignores the contents, accept that it passes the
  1427. programmed value on to other descriptors together with the
  1428. physical address
  1429. Field can be used by SW to for example associate the
  1430. buffers physical address with the virtual address
  1431. The bit definitions as used by SW are within SW HLD
  1432. specification
  1433. NOTE:
  1434. The three most significant bits can have a special
  1435. meaning in case this struct is embedded in a TX_MPDU_DETAILS
  1436. STRUCT, and field transmit_bw_restriction is set
  1437. In case of NON punctured transmission:
  1438. Sw_buffer_cookie[20:19] = 2'b00: 20 MHz TX only
  1439. Sw_buffer_cookie[20:19] = 2'b01: 40 MHz TX only
  1440. Sw_buffer_cookie[20:19] = 2'b10: 80 MHz TX only
  1441. Sw_buffer_cookie[20:19] = 2'b11: 160 MHz TX only
  1442. In case of punctured transmission:
  1443. Sw_buffer_cookie[20:18] = 3'b000: pattern 0 only
  1444. Sw_buffer_cookie[20:18] = 3'b001: pattern 1 only
  1445. Sw_buffer_cookie[20:18] = 3'b010: pattern 2 only
  1446. Sw_buffer_cookie[20:18] = 3'b011: pattern 3 only
  1447. Sw_buffer_cookie[20:18] = 3'b100: pattern 4 only
  1448. Sw_buffer_cookie[20:18] = 3'b101: pattern 5 only
  1449. Sw_buffer_cookie[20:18] = 3'b110: pattern 6 only
  1450. Sw_buffer_cookie[20:18] = 3'b111: pattern 7 only
  1451. Note: a punctured transmission is indicated by the
  1452. presence of TLV TX_PUNCTURE_SETUP embedded in the scheduler
  1453. TLV
  1454. <legal all>
  1455. */
  1456. #define RX_MSDU_LINK_25_MSDU_4_BUFFER_ADDR_INFO_DETAILS_SW_BUFFER_COOKIE_OFFSET 0x00000064
  1457. #define RX_MSDU_LINK_25_MSDU_4_BUFFER_ADDR_INFO_DETAILS_SW_BUFFER_COOKIE_LSB 11
  1458. #define RX_MSDU_LINK_25_MSDU_4_BUFFER_ADDR_INFO_DETAILS_SW_BUFFER_COOKIE_MASK 0xfffff800
  1459. /* EXTERNAL REFERENCE : struct rx_msdu_desc_info rx_msdu_desc_info_details */
  1460. /* Description RX_MSDU_LINK_26_MSDU_4_RX_MSDU_DESC_INFO_DETAILS_FIRST_MSDU_IN_MPDU_FLAG
  1461. Parsed from RX_MSDU_END TLV . In the case MSDU spans
  1462. over multiple buffers, this field will be valid in the Last
  1463. buffer used by the MSDU
  1464. <enum 0 Not_first_msdu> This is not the first MSDU in
  1465. the MPDU.
  1466. <enum 1 first_msdu> This MSDU is the first one in the
  1467. MPDU.
  1468. <legal all>
  1469. */
  1470. #define RX_MSDU_LINK_26_MSDU_4_RX_MSDU_DESC_INFO_DETAILS_FIRST_MSDU_IN_MPDU_FLAG_OFFSET 0x00000068
  1471. #define RX_MSDU_LINK_26_MSDU_4_RX_MSDU_DESC_INFO_DETAILS_FIRST_MSDU_IN_MPDU_FLAG_LSB 0
  1472. #define RX_MSDU_LINK_26_MSDU_4_RX_MSDU_DESC_INFO_DETAILS_FIRST_MSDU_IN_MPDU_FLAG_MASK 0x00000001
  1473. /* Description RX_MSDU_LINK_26_MSDU_4_RX_MSDU_DESC_INFO_DETAILS_LAST_MSDU_IN_MPDU_FLAG
  1474. Consumer: WBM/REO/SW/FW
  1475. Producer: RXDMA
  1476. Parsed from RX_MSDU_END TLV . In the case MSDU spans
  1477. over multiple buffers, this field will be valid in the Last
  1478. buffer used by the MSDU
  1479. <enum 0 Not_last_msdu> There are more MSDUs linked to
  1480. this MSDU that belongs to this MPDU
  1481. <enum 1 Last_msdu> this MSDU is the last one in the
  1482. MPDU. This setting is only allowed in combination with
  1483. 'Msdu_continuation' set to 0. This implies that when an msdu
  1484. is spread out over multiple buffers and thus
  1485. msdu_continuation is set, only for the very last buffer of
  1486. the msdu, can the 'last_msdu_in_mpdu_flag' be set.
  1487. When both first_msdu_in_mpdu_flag and
  1488. last_msdu_in_mpdu_flag are set, the MPDU that this MSDU
  1489. belongs to only contains a single MSDU.
  1490. <legal all>
  1491. */
  1492. #define RX_MSDU_LINK_26_MSDU_4_RX_MSDU_DESC_INFO_DETAILS_LAST_MSDU_IN_MPDU_FLAG_OFFSET 0x00000068
  1493. #define RX_MSDU_LINK_26_MSDU_4_RX_MSDU_DESC_INFO_DETAILS_LAST_MSDU_IN_MPDU_FLAG_LSB 1
  1494. #define RX_MSDU_LINK_26_MSDU_4_RX_MSDU_DESC_INFO_DETAILS_LAST_MSDU_IN_MPDU_FLAG_MASK 0x00000002
  1495. /* Description RX_MSDU_LINK_26_MSDU_4_RX_MSDU_DESC_INFO_DETAILS_MSDU_CONTINUATION
  1496. When set, this MSDU buffer was not able to hold the
  1497. entire MSDU. The next buffer will therefor contain
  1498. additional information related to this MSDU.
  1499. <legal all>
  1500. */
  1501. #define RX_MSDU_LINK_26_MSDU_4_RX_MSDU_DESC_INFO_DETAILS_MSDU_CONTINUATION_OFFSET 0x00000068
  1502. #define RX_MSDU_LINK_26_MSDU_4_RX_MSDU_DESC_INFO_DETAILS_MSDU_CONTINUATION_LSB 2
  1503. #define RX_MSDU_LINK_26_MSDU_4_RX_MSDU_DESC_INFO_DETAILS_MSDU_CONTINUATION_MASK 0x00000004
  1504. /* Description RX_MSDU_LINK_26_MSDU_4_RX_MSDU_DESC_INFO_DETAILS_MSDU_LENGTH
  1505. Parsed from RX_MSDU_START TLV . In the case MSDU spans
  1506. over multiple buffers, this field will be valid in the First
  1507. buffer used by MSDU.
  1508. Full MSDU length in bytes after decapsulation.
  1509. This field is still valid for MPDU frames without
  1510. A-MSDU. It still represents MSDU length after decapsulation
  1511. Or in case of RAW MPDUs, it indicates the length of the
  1512. entire MPDU (without FCS field)
  1513. <legal all>
  1514. */
  1515. #define RX_MSDU_LINK_26_MSDU_4_RX_MSDU_DESC_INFO_DETAILS_MSDU_LENGTH_OFFSET 0x00000068
  1516. #define RX_MSDU_LINK_26_MSDU_4_RX_MSDU_DESC_INFO_DETAILS_MSDU_LENGTH_LSB 3
  1517. #define RX_MSDU_LINK_26_MSDU_4_RX_MSDU_DESC_INFO_DETAILS_MSDU_LENGTH_MASK 0x0001fff8
  1518. /* Description RX_MSDU_LINK_26_MSDU_4_RX_MSDU_DESC_INFO_DETAILS_REO_DESTINATION_INDICATION
  1519. Parsed from RX_MSDU_END TLV . In the case MSDU spans
  1520. over multiple buffers, this field will be valid in the Last
  1521. buffer used by the MSDU
  1522. The ID of the REO exit ring where the MSDU frame shall
  1523. push after (MPDU level) reordering has finished.
  1524. <enum 0 reo_destination_tcl> Reo will push the frame
  1525. into the REO2TCL ring
  1526. <enum 1 reo_destination_sw1> Reo will push the frame
  1527. into the REO2SW1 ring
  1528. <enum 2 reo_destination_sw2> Reo will push the frame
  1529. into the REO2SW2 ring
  1530. <enum 3 reo_destination_sw3> Reo will push the frame
  1531. into the REO2SW3 ring
  1532. <enum 4 reo_destination_sw4> Reo will push the frame
  1533. into the REO2SW4 ring
  1534. <enum 5 reo_destination_release> Reo will push the frame
  1535. into the REO_release ring
  1536. <enum 6 reo_destination_fw> Reo will push the frame into
  1537. the REO2FW ring
  1538. <enum 7 reo_destination_sw5> Reo will push the frame
  1539. into the REO2SW5 ring
  1540. <enum 8 reo_destination_sw6> Reo will push the frame
  1541. into the REO2SW6 ring
  1542. <enum 9 reo_destination_9> REO remaps this <enum 10
  1543. reo_destination_10> REO remaps this
  1544. <enum 11 reo_destination_11> REO remaps this
  1545. <enum 12 reo_destination_12> REO remaps this <enum 13
  1546. reo_destination_13> REO remaps this
  1547. <enum 14 reo_destination_14> REO remaps this
  1548. <enum 15 reo_destination_15> REO remaps this
  1549. <enum 16 reo_destination_16> REO remaps this
  1550. <enum 17 reo_destination_17> REO remaps this
  1551. <enum 18 reo_destination_18> REO remaps this
  1552. <enum 19 reo_destination_19> REO remaps this
  1553. <enum 20 reo_destination_20> REO remaps this
  1554. <enum 21 reo_destination_21> REO remaps this
  1555. <enum 22 reo_destination_22> REO remaps this
  1556. <enum 23 reo_destination_23> REO remaps this
  1557. <enum 24 reo_destination_24> REO remaps this
  1558. <enum 25 reo_destination_25> REO remaps this
  1559. <enum 26 reo_destination_26> REO remaps this
  1560. <enum 27 reo_destination_27> REO remaps this
  1561. <enum 28 reo_destination_28> REO remaps this
  1562. <enum 29 reo_destination_29> REO remaps this
  1563. <enum 30 reo_destination_30> REO remaps this
  1564. <enum 31 reo_destination_31> REO remaps this
  1565. <legal all>
  1566. */
  1567. #define RX_MSDU_LINK_26_MSDU_4_RX_MSDU_DESC_INFO_DETAILS_REO_DESTINATION_INDICATION_OFFSET 0x00000068
  1568. #define RX_MSDU_LINK_26_MSDU_4_RX_MSDU_DESC_INFO_DETAILS_REO_DESTINATION_INDICATION_LSB 17
  1569. #define RX_MSDU_LINK_26_MSDU_4_RX_MSDU_DESC_INFO_DETAILS_REO_DESTINATION_INDICATION_MASK 0x003e0000
  1570. /* Description RX_MSDU_LINK_26_MSDU_4_RX_MSDU_DESC_INFO_DETAILS_MSDU_DROP
  1571. Parsed from RX_MSDU_END TLV . In the case MSDU spans
  1572. over multiple buffers, this field will be valid in the Last
  1573. buffer used by the MSDU
  1574. When set, REO shall drop this MSDU and not forward it to
  1575. any other ring...
  1576. <legal all>
  1577. */
  1578. #define RX_MSDU_LINK_26_MSDU_4_RX_MSDU_DESC_INFO_DETAILS_MSDU_DROP_OFFSET 0x00000068
  1579. #define RX_MSDU_LINK_26_MSDU_4_RX_MSDU_DESC_INFO_DETAILS_MSDU_DROP_LSB 22
  1580. #define RX_MSDU_LINK_26_MSDU_4_RX_MSDU_DESC_INFO_DETAILS_MSDU_DROP_MASK 0x00400000
  1581. /* Description RX_MSDU_LINK_26_MSDU_4_RX_MSDU_DESC_INFO_DETAILS_SA_IS_VALID
  1582. Parsed from RX_MSDU_END TLV . In the case MSDU spans
  1583. over multiple buffers, this field will be valid in the Last
  1584. buffer used by the MSDU
  1585. Indicates that OLE found a valid SA entry for this MSDU
  1586. <legal all>
  1587. */
  1588. #define RX_MSDU_LINK_26_MSDU_4_RX_MSDU_DESC_INFO_DETAILS_SA_IS_VALID_OFFSET 0x00000068
  1589. #define RX_MSDU_LINK_26_MSDU_4_RX_MSDU_DESC_INFO_DETAILS_SA_IS_VALID_LSB 23
  1590. #define RX_MSDU_LINK_26_MSDU_4_RX_MSDU_DESC_INFO_DETAILS_SA_IS_VALID_MASK 0x00800000
  1591. /* Description RX_MSDU_LINK_26_MSDU_4_RX_MSDU_DESC_INFO_DETAILS_SA_IDX_TIMEOUT
  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 an unsuccessful MAC source address search due
  1596. to the expiring of the search timer for this MSDU
  1597. <legal all>
  1598. */
  1599. #define RX_MSDU_LINK_26_MSDU_4_RX_MSDU_DESC_INFO_DETAILS_SA_IDX_TIMEOUT_OFFSET 0x00000068
  1600. #define RX_MSDU_LINK_26_MSDU_4_RX_MSDU_DESC_INFO_DETAILS_SA_IDX_TIMEOUT_LSB 24
  1601. #define RX_MSDU_LINK_26_MSDU_4_RX_MSDU_DESC_INFO_DETAILS_SA_IDX_TIMEOUT_MASK 0x01000000
  1602. /* Description RX_MSDU_LINK_26_MSDU_4_RX_MSDU_DESC_INFO_DETAILS_DA_IS_VALID
  1603. Parsed from RX_MSDU_END TLV . In the case MSDU spans
  1604. over multiple buffers, this field will be valid in the Last
  1605. buffer used by the MSDU
  1606. Indicates that OLE found a valid DA entry for this MSDU
  1607. <legal all>
  1608. */
  1609. #define RX_MSDU_LINK_26_MSDU_4_RX_MSDU_DESC_INFO_DETAILS_DA_IS_VALID_OFFSET 0x00000068
  1610. #define RX_MSDU_LINK_26_MSDU_4_RX_MSDU_DESC_INFO_DETAILS_DA_IS_VALID_LSB 25
  1611. #define RX_MSDU_LINK_26_MSDU_4_RX_MSDU_DESC_INFO_DETAILS_DA_IS_VALID_MASK 0x02000000
  1612. /* Description RX_MSDU_LINK_26_MSDU_4_RX_MSDU_DESC_INFO_DETAILS_DA_IS_MCBC
  1613. Field Only valid if da_is_valid is set
  1614. Indicates the DA address was a Multicast of Broadcast
  1615. address for this MSDU
  1616. <legal all>
  1617. */
  1618. #define RX_MSDU_LINK_26_MSDU_4_RX_MSDU_DESC_INFO_DETAILS_DA_IS_MCBC_OFFSET 0x00000068
  1619. #define RX_MSDU_LINK_26_MSDU_4_RX_MSDU_DESC_INFO_DETAILS_DA_IS_MCBC_LSB 26
  1620. #define RX_MSDU_LINK_26_MSDU_4_RX_MSDU_DESC_INFO_DETAILS_DA_IS_MCBC_MASK 0x04000000
  1621. /* Description RX_MSDU_LINK_26_MSDU_4_RX_MSDU_DESC_INFO_DETAILS_DA_IDX_TIMEOUT
  1622. Parsed from RX_MSDU_END TLV . In the case MSDU spans
  1623. over multiple buffers, this field will be valid in the Last
  1624. buffer used by the MSDU
  1625. Indicates an unsuccessful MAC destination address search
  1626. due to the expiring of the search timer for this MSDU
  1627. <legal all>
  1628. */
  1629. #define RX_MSDU_LINK_26_MSDU_4_RX_MSDU_DESC_INFO_DETAILS_DA_IDX_TIMEOUT_OFFSET 0x00000068
  1630. #define RX_MSDU_LINK_26_MSDU_4_RX_MSDU_DESC_INFO_DETAILS_DA_IDX_TIMEOUT_LSB 27
  1631. #define RX_MSDU_LINK_26_MSDU_4_RX_MSDU_DESC_INFO_DETAILS_DA_IDX_TIMEOUT_MASK 0x08000000
  1632. /* Description RX_MSDU_LINK_26_MSDU_4_RX_MSDU_DESC_INFO_DETAILS_RESERVED_0A
  1633. <legal 0>
  1634. */
  1635. #define RX_MSDU_LINK_26_MSDU_4_RX_MSDU_DESC_INFO_DETAILS_RESERVED_0A_OFFSET 0x00000068
  1636. #define RX_MSDU_LINK_26_MSDU_4_RX_MSDU_DESC_INFO_DETAILS_RESERVED_0A_LSB 28
  1637. #define RX_MSDU_LINK_26_MSDU_4_RX_MSDU_DESC_INFO_DETAILS_RESERVED_0A_MASK 0xf0000000
  1638. /* Description RX_MSDU_LINK_27_MSDU_4_RX_MSDU_DESC_INFO_DETAILS_RESERVED_1A
  1639. <legal 0>
  1640. */
  1641. #define RX_MSDU_LINK_27_MSDU_4_RX_MSDU_DESC_INFO_DETAILS_RESERVED_1A_OFFSET 0x0000006c
  1642. #define RX_MSDU_LINK_27_MSDU_4_RX_MSDU_DESC_INFO_DETAILS_RESERVED_1A_LSB 0
  1643. #define RX_MSDU_LINK_27_MSDU_4_RX_MSDU_DESC_INFO_DETAILS_RESERVED_1A_MASK 0xffffffff
  1644. /* EXTERNAL REFERENCE : struct rx_msdu_details msdu_5 */
  1645. /* EXTERNAL REFERENCE : struct buffer_addr_info buffer_addr_info_details */
  1646. /* Description RX_MSDU_LINK_28_MSDU_5_BUFFER_ADDR_INFO_DETAILS_BUFFER_ADDR_31_0
  1647. Address (lower 32 bits) of the MSDU buffer OR
  1648. MSDU_EXTENSION descriptor OR Link Descriptor
  1649. In case of 'NULL' pointer, this field is set to 0
  1650. <legal all>
  1651. */
  1652. #define RX_MSDU_LINK_28_MSDU_5_BUFFER_ADDR_INFO_DETAILS_BUFFER_ADDR_31_0_OFFSET 0x00000070
  1653. #define RX_MSDU_LINK_28_MSDU_5_BUFFER_ADDR_INFO_DETAILS_BUFFER_ADDR_31_0_LSB 0
  1654. #define RX_MSDU_LINK_28_MSDU_5_BUFFER_ADDR_INFO_DETAILS_BUFFER_ADDR_31_0_MASK 0xffffffff
  1655. /* Description RX_MSDU_LINK_29_MSDU_5_BUFFER_ADDR_INFO_DETAILS_BUFFER_ADDR_39_32
  1656. Address (upper 8 bits) of the MSDU buffer OR
  1657. MSDU_EXTENSION descriptor OR Link Descriptor
  1658. In case of 'NULL' pointer, this field is set to 0
  1659. <legal all>
  1660. */
  1661. #define RX_MSDU_LINK_29_MSDU_5_BUFFER_ADDR_INFO_DETAILS_BUFFER_ADDR_39_32_OFFSET 0x00000074
  1662. #define RX_MSDU_LINK_29_MSDU_5_BUFFER_ADDR_INFO_DETAILS_BUFFER_ADDR_39_32_LSB 0
  1663. #define RX_MSDU_LINK_29_MSDU_5_BUFFER_ADDR_INFO_DETAILS_BUFFER_ADDR_39_32_MASK 0x000000ff
  1664. /* Description RX_MSDU_LINK_29_MSDU_5_BUFFER_ADDR_INFO_DETAILS_RETURN_BUFFER_MANAGER
  1665. Consumer: WBM
  1666. Producer: SW/FW
  1667. In case of 'NULL' pointer, this field is set to 0
  1668. Indicates to which buffer manager the buffer OR
  1669. MSDU_EXTENSION descriptor OR link descriptor that is being
  1670. pointed to shall be returned after the frame has been
  1671. processed. It is used by WBM for routing purposes.
  1672. <enum 0 WBM_IDLE_BUF_LIST> This buffer shall be returned
  1673. to the WMB buffer idle list
  1674. <enum 1 WBM_IDLE_DESC_LIST> This buffer shall be
  1675. returned to the WMB idle link descriptor idle list
  1676. <enum 2 FW_BM> This buffer shall be returned to the FW
  1677. <enum 3 SW0_BM> This buffer shall be returned to the SW,
  1678. ring 0
  1679. <enum 4 SW1_BM> This buffer shall be returned to the SW,
  1680. ring 1
  1681. <enum 5 SW2_BM> This buffer shall be returned to the SW,
  1682. ring 2
  1683. <enum 6 SW3_BM> This buffer shall be returned to the SW,
  1684. ring 3
  1685. <enum 7 SW4_BM> This buffer shall be returned to the SW,
  1686. ring 4
  1687. <legal all>
  1688. */
  1689. #define RX_MSDU_LINK_29_MSDU_5_BUFFER_ADDR_INFO_DETAILS_RETURN_BUFFER_MANAGER_OFFSET 0x00000074
  1690. #define RX_MSDU_LINK_29_MSDU_5_BUFFER_ADDR_INFO_DETAILS_RETURN_BUFFER_MANAGER_LSB 8
  1691. #define RX_MSDU_LINK_29_MSDU_5_BUFFER_ADDR_INFO_DETAILS_RETURN_BUFFER_MANAGER_MASK 0x00000700
  1692. /* Description RX_MSDU_LINK_29_MSDU_5_BUFFER_ADDR_INFO_DETAILS_SW_BUFFER_COOKIE
  1693. Cookie field exclusively used by SW.
  1694. In case of 'NULL' pointer, this field is set to 0
  1695. HW ignores the contents, accept that it passes the
  1696. programmed value on to other descriptors together with the
  1697. physical address
  1698. Field can be used by SW to for example associate the
  1699. buffers physical address with the virtual address
  1700. The bit definitions as used by SW are within SW HLD
  1701. specification
  1702. NOTE:
  1703. The three most significant bits can have a special
  1704. meaning in case this struct is embedded in a TX_MPDU_DETAILS
  1705. STRUCT, and field transmit_bw_restriction is set
  1706. In case of NON punctured transmission:
  1707. Sw_buffer_cookie[20:19] = 2'b00: 20 MHz TX only
  1708. Sw_buffer_cookie[20:19] = 2'b01: 40 MHz TX only
  1709. Sw_buffer_cookie[20:19] = 2'b10: 80 MHz TX only
  1710. Sw_buffer_cookie[20:19] = 2'b11: 160 MHz TX only
  1711. In case of punctured transmission:
  1712. Sw_buffer_cookie[20:18] = 3'b000: pattern 0 only
  1713. Sw_buffer_cookie[20:18] = 3'b001: pattern 1 only
  1714. Sw_buffer_cookie[20:18] = 3'b010: pattern 2 only
  1715. Sw_buffer_cookie[20:18] = 3'b011: pattern 3 only
  1716. Sw_buffer_cookie[20:18] = 3'b100: pattern 4 only
  1717. Sw_buffer_cookie[20:18] = 3'b101: pattern 5 only
  1718. Sw_buffer_cookie[20:18] = 3'b110: pattern 6 only
  1719. Sw_buffer_cookie[20:18] = 3'b111: pattern 7 only
  1720. Note: a punctured transmission is indicated by the
  1721. presence of TLV TX_PUNCTURE_SETUP embedded in the scheduler
  1722. TLV
  1723. <legal all>
  1724. */
  1725. #define RX_MSDU_LINK_29_MSDU_5_BUFFER_ADDR_INFO_DETAILS_SW_BUFFER_COOKIE_OFFSET 0x00000074
  1726. #define RX_MSDU_LINK_29_MSDU_5_BUFFER_ADDR_INFO_DETAILS_SW_BUFFER_COOKIE_LSB 11
  1727. #define RX_MSDU_LINK_29_MSDU_5_BUFFER_ADDR_INFO_DETAILS_SW_BUFFER_COOKIE_MASK 0xfffff800
  1728. /* EXTERNAL REFERENCE : struct rx_msdu_desc_info rx_msdu_desc_info_details */
  1729. /* Description RX_MSDU_LINK_30_MSDU_5_RX_MSDU_DESC_INFO_DETAILS_FIRST_MSDU_IN_MPDU_FLAG
  1730. Parsed from RX_MSDU_END TLV . In the case MSDU spans
  1731. over multiple buffers, this field will be valid in the Last
  1732. buffer used by the MSDU
  1733. <enum 0 Not_first_msdu> This is not the first MSDU in
  1734. the MPDU.
  1735. <enum 1 first_msdu> This MSDU is the first one in the
  1736. MPDU.
  1737. <legal all>
  1738. */
  1739. #define RX_MSDU_LINK_30_MSDU_5_RX_MSDU_DESC_INFO_DETAILS_FIRST_MSDU_IN_MPDU_FLAG_OFFSET 0x00000078
  1740. #define RX_MSDU_LINK_30_MSDU_5_RX_MSDU_DESC_INFO_DETAILS_FIRST_MSDU_IN_MPDU_FLAG_LSB 0
  1741. #define RX_MSDU_LINK_30_MSDU_5_RX_MSDU_DESC_INFO_DETAILS_FIRST_MSDU_IN_MPDU_FLAG_MASK 0x00000001
  1742. /* Description RX_MSDU_LINK_30_MSDU_5_RX_MSDU_DESC_INFO_DETAILS_LAST_MSDU_IN_MPDU_FLAG
  1743. Consumer: WBM/REO/SW/FW
  1744. Producer: RXDMA
  1745. Parsed from RX_MSDU_END TLV . In the case MSDU spans
  1746. over multiple buffers, this field will be valid in the Last
  1747. buffer used by the MSDU
  1748. <enum 0 Not_last_msdu> There are more MSDUs linked to
  1749. this MSDU that belongs to this MPDU
  1750. <enum 1 Last_msdu> this MSDU is the last one in the
  1751. MPDU. This setting is only allowed in combination with
  1752. 'Msdu_continuation' set to 0. This implies that when an msdu
  1753. is spread out over multiple buffers and thus
  1754. msdu_continuation is set, only for the very last buffer of
  1755. the msdu, can the 'last_msdu_in_mpdu_flag' be set.
  1756. When both first_msdu_in_mpdu_flag and
  1757. last_msdu_in_mpdu_flag are set, the MPDU that this MSDU
  1758. belongs to only contains a single MSDU.
  1759. <legal all>
  1760. */
  1761. #define RX_MSDU_LINK_30_MSDU_5_RX_MSDU_DESC_INFO_DETAILS_LAST_MSDU_IN_MPDU_FLAG_OFFSET 0x00000078
  1762. #define RX_MSDU_LINK_30_MSDU_5_RX_MSDU_DESC_INFO_DETAILS_LAST_MSDU_IN_MPDU_FLAG_LSB 1
  1763. #define RX_MSDU_LINK_30_MSDU_5_RX_MSDU_DESC_INFO_DETAILS_LAST_MSDU_IN_MPDU_FLAG_MASK 0x00000002
  1764. /* Description RX_MSDU_LINK_30_MSDU_5_RX_MSDU_DESC_INFO_DETAILS_MSDU_CONTINUATION
  1765. When set, this MSDU buffer was not able to hold the
  1766. entire MSDU. The next buffer will therefor contain
  1767. additional information related to this MSDU.
  1768. <legal all>
  1769. */
  1770. #define RX_MSDU_LINK_30_MSDU_5_RX_MSDU_DESC_INFO_DETAILS_MSDU_CONTINUATION_OFFSET 0x00000078
  1771. #define RX_MSDU_LINK_30_MSDU_5_RX_MSDU_DESC_INFO_DETAILS_MSDU_CONTINUATION_LSB 2
  1772. #define RX_MSDU_LINK_30_MSDU_5_RX_MSDU_DESC_INFO_DETAILS_MSDU_CONTINUATION_MASK 0x00000004
  1773. /* Description RX_MSDU_LINK_30_MSDU_5_RX_MSDU_DESC_INFO_DETAILS_MSDU_LENGTH
  1774. Parsed from RX_MSDU_START TLV . In the case MSDU spans
  1775. over multiple buffers, this field will be valid in the First
  1776. buffer used by MSDU.
  1777. Full MSDU length in bytes after decapsulation.
  1778. This field is still valid for MPDU frames without
  1779. A-MSDU. It still represents MSDU length after decapsulation
  1780. Or in case of RAW MPDUs, it indicates the length of the
  1781. entire MPDU (without FCS field)
  1782. <legal all>
  1783. */
  1784. #define RX_MSDU_LINK_30_MSDU_5_RX_MSDU_DESC_INFO_DETAILS_MSDU_LENGTH_OFFSET 0x00000078
  1785. #define RX_MSDU_LINK_30_MSDU_5_RX_MSDU_DESC_INFO_DETAILS_MSDU_LENGTH_LSB 3
  1786. #define RX_MSDU_LINK_30_MSDU_5_RX_MSDU_DESC_INFO_DETAILS_MSDU_LENGTH_MASK 0x0001fff8
  1787. /* Description RX_MSDU_LINK_30_MSDU_5_RX_MSDU_DESC_INFO_DETAILS_REO_DESTINATION_INDICATION
  1788. Parsed from RX_MSDU_END TLV . In the case MSDU spans
  1789. over multiple buffers, this field will be valid in the Last
  1790. buffer used by the MSDU
  1791. The ID of the REO exit ring where the MSDU frame shall
  1792. push after (MPDU level) reordering has finished.
  1793. <enum 0 reo_destination_tcl> Reo will push the frame
  1794. into the REO2TCL ring
  1795. <enum 1 reo_destination_sw1> Reo will push the frame
  1796. into the REO2SW1 ring
  1797. <enum 2 reo_destination_sw2> Reo will push the frame
  1798. into the REO2SW2 ring
  1799. <enum 3 reo_destination_sw3> Reo will push the frame
  1800. into the REO2SW3 ring
  1801. <enum 4 reo_destination_sw4> Reo will push the frame
  1802. into the REO2SW4 ring
  1803. <enum 5 reo_destination_release> Reo will push the frame
  1804. into the REO_release ring
  1805. <enum 6 reo_destination_fw> Reo will push the frame into
  1806. the REO2FW ring
  1807. <enum 7 reo_destination_sw5> Reo will push the frame
  1808. into the REO2SW5 ring
  1809. <enum 8 reo_destination_sw6> Reo will push the frame
  1810. into the REO2SW6 ring
  1811. <enum 9 reo_destination_9> REO remaps this <enum 10
  1812. reo_destination_10> REO remaps this
  1813. <enum 11 reo_destination_11> REO remaps this
  1814. <enum 12 reo_destination_12> REO remaps this <enum 13
  1815. reo_destination_13> REO remaps this
  1816. <enum 14 reo_destination_14> REO remaps this
  1817. <enum 15 reo_destination_15> REO remaps this
  1818. <enum 16 reo_destination_16> REO remaps this
  1819. <enum 17 reo_destination_17> REO remaps this
  1820. <enum 18 reo_destination_18> REO remaps this
  1821. <enum 19 reo_destination_19> REO remaps this
  1822. <enum 20 reo_destination_20> REO remaps this
  1823. <enum 21 reo_destination_21> REO remaps this
  1824. <enum 22 reo_destination_22> REO remaps this
  1825. <enum 23 reo_destination_23> REO remaps this
  1826. <enum 24 reo_destination_24> REO remaps this
  1827. <enum 25 reo_destination_25> REO remaps this
  1828. <enum 26 reo_destination_26> REO remaps this
  1829. <enum 27 reo_destination_27> REO remaps this
  1830. <enum 28 reo_destination_28> REO remaps this
  1831. <enum 29 reo_destination_29> REO remaps this
  1832. <enum 30 reo_destination_30> REO remaps this
  1833. <enum 31 reo_destination_31> REO remaps this
  1834. <legal all>
  1835. */
  1836. #define RX_MSDU_LINK_30_MSDU_5_RX_MSDU_DESC_INFO_DETAILS_REO_DESTINATION_INDICATION_OFFSET 0x00000078
  1837. #define RX_MSDU_LINK_30_MSDU_5_RX_MSDU_DESC_INFO_DETAILS_REO_DESTINATION_INDICATION_LSB 17
  1838. #define RX_MSDU_LINK_30_MSDU_5_RX_MSDU_DESC_INFO_DETAILS_REO_DESTINATION_INDICATION_MASK 0x003e0000
  1839. /* Description RX_MSDU_LINK_30_MSDU_5_RX_MSDU_DESC_INFO_DETAILS_MSDU_DROP
  1840. Parsed from RX_MSDU_END TLV . In the case MSDU spans
  1841. over multiple buffers, this field will be valid in the Last
  1842. buffer used by the MSDU
  1843. When set, REO shall drop this MSDU and not forward it to
  1844. any other ring...
  1845. <legal all>
  1846. */
  1847. #define RX_MSDU_LINK_30_MSDU_5_RX_MSDU_DESC_INFO_DETAILS_MSDU_DROP_OFFSET 0x00000078
  1848. #define RX_MSDU_LINK_30_MSDU_5_RX_MSDU_DESC_INFO_DETAILS_MSDU_DROP_LSB 22
  1849. #define RX_MSDU_LINK_30_MSDU_5_RX_MSDU_DESC_INFO_DETAILS_MSDU_DROP_MASK 0x00400000
  1850. /* Description RX_MSDU_LINK_30_MSDU_5_RX_MSDU_DESC_INFO_DETAILS_SA_IS_VALID
  1851. Parsed from RX_MSDU_END TLV . In the case MSDU spans
  1852. over multiple buffers, this field will be valid in the Last
  1853. buffer used by the MSDU
  1854. Indicates that OLE found a valid SA entry for this MSDU
  1855. <legal all>
  1856. */
  1857. #define RX_MSDU_LINK_30_MSDU_5_RX_MSDU_DESC_INFO_DETAILS_SA_IS_VALID_OFFSET 0x00000078
  1858. #define RX_MSDU_LINK_30_MSDU_5_RX_MSDU_DESC_INFO_DETAILS_SA_IS_VALID_LSB 23
  1859. #define RX_MSDU_LINK_30_MSDU_5_RX_MSDU_DESC_INFO_DETAILS_SA_IS_VALID_MASK 0x00800000
  1860. /* Description RX_MSDU_LINK_30_MSDU_5_RX_MSDU_DESC_INFO_DETAILS_SA_IDX_TIMEOUT
  1861. Parsed from RX_MSDU_END TLV . In the case MSDU spans
  1862. over multiple buffers, this field will be valid in the Last
  1863. buffer used by the MSDU
  1864. Indicates an unsuccessful MAC source address search due
  1865. to the expiring of the search timer for this MSDU
  1866. <legal all>
  1867. */
  1868. #define RX_MSDU_LINK_30_MSDU_5_RX_MSDU_DESC_INFO_DETAILS_SA_IDX_TIMEOUT_OFFSET 0x00000078
  1869. #define RX_MSDU_LINK_30_MSDU_5_RX_MSDU_DESC_INFO_DETAILS_SA_IDX_TIMEOUT_LSB 24
  1870. #define RX_MSDU_LINK_30_MSDU_5_RX_MSDU_DESC_INFO_DETAILS_SA_IDX_TIMEOUT_MASK 0x01000000
  1871. /* Description RX_MSDU_LINK_30_MSDU_5_RX_MSDU_DESC_INFO_DETAILS_DA_IS_VALID
  1872. Parsed from RX_MSDU_END TLV . In the case MSDU spans
  1873. over multiple buffers, this field will be valid in the Last
  1874. buffer used by the MSDU
  1875. Indicates that OLE found a valid DA entry for this MSDU
  1876. <legal all>
  1877. */
  1878. #define RX_MSDU_LINK_30_MSDU_5_RX_MSDU_DESC_INFO_DETAILS_DA_IS_VALID_OFFSET 0x00000078
  1879. #define RX_MSDU_LINK_30_MSDU_5_RX_MSDU_DESC_INFO_DETAILS_DA_IS_VALID_LSB 25
  1880. #define RX_MSDU_LINK_30_MSDU_5_RX_MSDU_DESC_INFO_DETAILS_DA_IS_VALID_MASK 0x02000000
  1881. /* Description RX_MSDU_LINK_30_MSDU_5_RX_MSDU_DESC_INFO_DETAILS_DA_IS_MCBC
  1882. Field Only valid if da_is_valid is set
  1883. Indicates the DA address was a Multicast of Broadcast
  1884. address for this MSDU
  1885. <legal all>
  1886. */
  1887. #define RX_MSDU_LINK_30_MSDU_5_RX_MSDU_DESC_INFO_DETAILS_DA_IS_MCBC_OFFSET 0x00000078
  1888. #define RX_MSDU_LINK_30_MSDU_5_RX_MSDU_DESC_INFO_DETAILS_DA_IS_MCBC_LSB 26
  1889. #define RX_MSDU_LINK_30_MSDU_5_RX_MSDU_DESC_INFO_DETAILS_DA_IS_MCBC_MASK 0x04000000
  1890. /* Description RX_MSDU_LINK_30_MSDU_5_RX_MSDU_DESC_INFO_DETAILS_DA_IDX_TIMEOUT
  1891. Parsed from RX_MSDU_END TLV . In the case MSDU spans
  1892. over multiple buffers, this field will be valid in the Last
  1893. buffer used by the MSDU
  1894. Indicates an unsuccessful MAC destination address search
  1895. due to the expiring of the search timer for this MSDU
  1896. <legal all>
  1897. */
  1898. #define RX_MSDU_LINK_30_MSDU_5_RX_MSDU_DESC_INFO_DETAILS_DA_IDX_TIMEOUT_OFFSET 0x00000078
  1899. #define RX_MSDU_LINK_30_MSDU_5_RX_MSDU_DESC_INFO_DETAILS_DA_IDX_TIMEOUT_LSB 27
  1900. #define RX_MSDU_LINK_30_MSDU_5_RX_MSDU_DESC_INFO_DETAILS_DA_IDX_TIMEOUT_MASK 0x08000000
  1901. /* Description RX_MSDU_LINK_30_MSDU_5_RX_MSDU_DESC_INFO_DETAILS_RESERVED_0A
  1902. <legal 0>
  1903. */
  1904. #define RX_MSDU_LINK_30_MSDU_5_RX_MSDU_DESC_INFO_DETAILS_RESERVED_0A_OFFSET 0x00000078
  1905. #define RX_MSDU_LINK_30_MSDU_5_RX_MSDU_DESC_INFO_DETAILS_RESERVED_0A_LSB 28
  1906. #define RX_MSDU_LINK_30_MSDU_5_RX_MSDU_DESC_INFO_DETAILS_RESERVED_0A_MASK 0xf0000000
  1907. /* Description RX_MSDU_LINK_31_MSDU_5_RX_MSDU_DESC_INFO_DETAILS_RESERVED_1A
  1908. <legal 0>
  1909. */
  1910. #define RX_MSDU_LINK_31_MSDU_5_RX_MSDU_DESC_INFO_DETAILS_RESERVED_1A_OFFSET 0x0000007c
  1911. #define RX_MSDU_LINK_31_MSDU_5_RX_MSDU_DESC_INFO_DETAILS_RESERVED_1A_LSB 0
  1912. #define RX_MSDU_LINK_31_MSDU_5_RX_MSDU_DESC_INFO_DETAILS_RESERVED_1A_MASK 0xffffffff
  1913. #endif // _RX_MSDU_LINK_H_