rx_mpdu_info.h 87 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729173017311732173317341735173617371738173917401741174217431744174517461747174817491750175117521753175417551756175717581759176017611762176317641765176617671768176917701771177217731774177517761777177817791780178117821783178417851786178717881789179017911792179317941795179617971798179918001801180218031804180518061807180818091810181118121813181418151816181718181819182018211822182318241825182618271828182918301831183218331834183518361837183818391840184118421843184418451846184718481849185018511852185318541855185618571858185918601861186218631864186518661867186818691870187118721873187418751876187718781879188018811882188318841885188618871888188918901891189218931894189518961897189818991900190119021903190419051906190719081909191019111912191319141915191619171918191919201921192219231924192519261927192819291930193119321933193419351936193719381939194019411942194319441945194619471948194919501951195219531954195519561957195819591960196119621963196419651966196719681969197019711972197319741975197619771978197919801981198219831984198519861987198819891990199119921993199419951996199719981999200020012002200320042005200620072008200920102011201220132014201520162017201820192020202120222023202420252026202720282029203020312032203320342035203620372038203920402041204220432044204520462047204820492050205120522053205420552056205720582059206020612062206320642065206620672068206920702071207220732074207520762077207820792080208120822083208420852086208720882089209020912092209320942095209620972098209921002101210221032104210521062107210821092110211121122113211421152116211721182119212021212122212321242125212621272128212921302131213221332134213521362137213821392140214121422143214421452146214721482149215021512152215321542155215621572158215921602161216221632164216521662167216821692170217121722173217421752176217721782179218021812182218321842185218621872188218921902191219221932194219521962197219821992200220122022203220422052206220722082209221022112212221322142215221622172218221922202221222222232224222522262227222822292230223122322233223422352236223722382239224022412242224322442245224622472248224922502251225222532254225522562257225822592260226122622263226422652266226722682269227022712272227322742275227622772278227922802281228222832284228522862287228822892290229122922293229422952296229722982299230023012302230323042305230623072308230923102311231223132314231523162317231823192320232123222323232423252326232723282329233023312332233323342335233623372338233923402341234223432344234523462347234823492350235123522353235423552356235723582359236023612362236323642365236623672368236923702371237223732374237523762377237823792380238123822383238423852386238723882389239023912392239323942395239623972398239924002401240224032404240524062407240824092410241124122413241424152416241724182419242024212422242324242425242624272428242924302431243224332434243524362437243824392440244124422443244424452446244724482449245024512452245324542455245624572458245924602461246224632464246524662467246824692470247124722473247424752476247724782479248024812482248324842485248624872488248924902491249224932494249524962497249824992500250125022503250425052506250725082509251025112512251325142515251625172518251925202521252225232524252525262527252825292530253125322533253425352536253725382539254025412542254325442545254625472548254925502551255225532554255525562557255825592560256125622563256425652566256725682569257025712572257325742575257625772578257925802581258225832584258525862587258825892590259125922593259425952596259725982599260026012602260326042605260626072608260926102611261226132614261526162617261826192620262126222623262426252626262726282629263026312632263326342635263626372638263926402641264226432644264526462647264826492650265126522653265426552656265726582659266026612662266326642665266626672668266926702671267226732674267526762677267826792680268126822683268426852686268726882689269026912692269326942695269626972698269927002701270227032704270527062707270827092710271127122713271427152716271727182719272027212722272327242725272627272728272927302731273227332734273527362737273827392740274127422743274427452746274727482749275027512752275327542755275627572758275927602761276227632764276527662767276827692770277127722773277427752776277727782779278027812782278327842785278627872788278927902791279227932794279527962797279827992800280128022803280428052806280728082809281028112812281328142815281628172818281928202821282228232824282528262827282828292830283128322833283428352836283728382839284028412842284328442845284628472848284928502851285228532854285528562857285828592860286128622863286428652866286728682869287028712872287328742875287628772878287928802881288228832884288528862887288828892890289128922893289428952896289728982899290029012902290329042905290629072908290929102911291229132914291529162917291829192920292129222923292429252926292729282929293029312932293329342935293629372938293929402941294229432944294529462947294829492950295129522953295429552956295729582959296029612962296329642965296629672968296929702971297229732974297529762977297829792980298129822983298429852986298729882989299029912992299329942995299629972998299930003001300230033004300530063007300830093010301130123013301430153016301730183019302030213022302330243025302630273028302930303031303230333034303530363037303830393040304130423043304430453046304730483049305030513052305330543055305630573058305930603061306230633064306530663067306830693070307130723073307430753076307730783079308030813082308330843085308630873088308930903091309230933094309530963097309830993100310131023103310431053106310731083109311031113112311331143115311631173118311931203121312231233124312531263127312831293130313131323133313431353136313731383139314031413142314331443145314631473148314931503151315231533154315531563157315831593160316131623163316431653166316731683169317031713172317331743175317631773178317931803181318231833184318531863187318831893190319131923193319431953196319731983199320032013202320332043205320632073208320932103211321232133214321532163217321832193220322132223223322432253226322732283229323032313232323332343235323632373238323932403241324232433244324532463247324832493250325132523253325432553256325732583259326032613262326332643265326632673268326932703271327232733274327532763277327832793280328132823283328432853286328732883289329032913292329332943295329632973298329933003301330233033304330533063307330833093310331133123313331433153316331733183319332033213322332333243325332633273328332933303331333233333334333533363337333833393340334133423343334433453346334733483349335033513352335333543355335633573358335933603361336233633364336533663367336833693370337133723373337433753376337733783379338033813382338333843385
  1. /*
  2. * Copyright (c) 2019, The Linux Foundation. All rights reserved.
  3. *
  4. * Permission to use, copy, modify, and/or distribute this software for any
  5. * purpose with or without fee is hereby granted, provided that the above
  6. * copyright notice and this permission notice appear in all copies.
  7. *
  8. * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
  9. * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
  10. * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
  11. * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
  12. * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
  13. * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
  14. * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
  15. */
  16. #ifndef _RX_MPDU_INFO_H_
  17. #define _RX_MPDU_INFO_H_
  18. #if !defined(__ASSEMBLER__)
  19. #endif
  20. #include "rxpt_classify_info.h"
  21. // ################ START SUMMARY #################
  22. //
  23. // Dword Fields
  24. // 0 struct rxpt_classify_info rxpt_classify_info_details;
  25. // 1 rx_reo_queue_desc_addr_31_0[31:0]
  26. // 2 rx_reo_queue_desc_addr_39_32[7:0], receive_queue_number[23:8], pre_delim_err_warning[24], first_delim_err[25], reserved_2a[31:26]
  27. // 3 pn_31_0[31:0]
  28. // 4 pn_63_32[31:0]
  29. // 5 pn_95_64[31:0]
  30. // 6 pn_127_96[31:0]
  31. // 7 epd_en[0], all_frames_shall_be_encrypted[1], encrypt_type[5:2], wep_key_width_for_variable_key[7:6], mesh_sta[9:8], bssid_hit[10], bssid_number[14:11], tid[18:15], reserved_7a[31:19]
  32. // 8 peer_meta_data[31:0]
  33. // 9 rxpcu_mpdu_filter_in_category[1:0], sw_frame_group_id[8:2], ndp_frame[9], phy_err[10], phy_err_during_mpdu_header[11], protocol_version_err[12], ast_based_lookup_valid[13], reserved_9a[15:14], phy_ppdu_id[31:16]
  34. // 10 ast_index[15:0], sw_peer_id[31:16]
  35. // 11 mpdu_frame_control_valid[0], mpdu_duration_valid[1], mac_addr_ad1_valid[2], mac_addr_ad2_valid[3], mac_addr_ad3_valid[4], mac_addr_ad4_valid[5], mpdu_sequence_control_valid[6], mpdu_qos_control_valid[7], mpdu_ht_control_valid[8], frame_encryption_info_valid[9], mpdu_fragment_number[13:10], more_fragment_flag[14], reserved_11a[15], fr_ds[16], to_ds[17], encrypted[18], mpdu_retry[19], mpdu_sequence_number[31:20]
  36. // 12 key_id_octet[7:0], new_peer_entry[8], decrypt_needed[9], decap_type[11:10], rx_insert_vlan_c_tag_padding[12], rx_insert_vlan_s_tag_padding[13], strip_vlan_c_tag_decap[14], strip_vlan_s_tag_decap[15], pre_delim_count[27:16], ampdu_flag[28], bar_frame[29], raw_mpdu[30], reserved_12[31]
  37. // 13 mpdu_length[13:0], first_mpdu[14], mcast_bcast[15], ast_index_not_found[16], ast_index_timeout[17], power_mgmt[18], non_qos[19], null_data[20], mgmt_type[21], ctrl_type[22], more_data[23], eosp[24], fragment_flag[25], order[26], u_apsd_trigger[27], encrypt_required[28], directed[29], amsdu_present[30], reserved_13[31]
  38. // 14 mpdu_frame_control_field[15:0], mpdu_duration_field[31:16]
  39. // 15 mac_addr_ad1_31_0[31:0]
  40. // 16 mac_addr_ad1_47_32[15:0], mac_addr_ad2_15_0[31:16]
  41. // 17 mac_addr_ad2_47_16[31:0]
  42. // 18 mac_addr_ad3_31_0[31:0]
  43. // 19 mac_addr_ad3_47_32[15:0], mpdu_sequence_control_field[31:16]
  44. // 20 mac_addr_ad4_31_0[31:0]
  45. // 21 mac_addr_ad4_47_32[15:0], mpdu_qos_control_field[31:16]
  46. // 22 mpdu_ht_control_field[31:0]
  47. //
  48. // ################ END SUMMARY #################
  49. #define NUM_OF_DWORDS_RX_MPDU_INFO 23
  50. struct rx_mpdu_info {
  51. struct rxpt_classify_info rxpt_classify_info_details;
  52. uint32_t rx_reo_queue_desc_addr_31_0 : 32; //[31:0]
  53. uint32_t rx_reo_queue_desc_addr_39_32 : 8, //[7:0]
  54. receive_queue_number : 16, //[23:8]
  55. pre_delim_err_warning : 1, //[24]
  56. first_delim_err : 1, //[25]
  57. reserved_2a : 6; //[31:26]
  58. uint32_t pn_31_0 : 32; //[31:0]
  59. uint32_t pn_63_32 : 32; //[31:0]
  60. uint32_t pn_95_64 : 32; //[31:0]
  61. uint32_t pn_127_96 : 32; //[31:0]
  62. uint32_t epd_en : 1, //[0]
  63. all_frames_shall_be_encrypted : 1, //[1]
  64. encrypt_type : 4, //[5:2]
  65. wep_key_width_for_variable_key : 2, //[7:6]
  66. mesh_sta : 2, //[9:8]
  67. bssid_hit : 1, //[10]
  68. bssid_number : 4, //[14:11]
  69. tid : 4, //[18:15]
  70. reserved_7a : 13; //[31:19]
  71. uint32_t peer_meta_data : 32; //[31:0]
  72. uint32_t rxpcu_mpdu_filter_in_category : 2, //[1:0]
  73. sw_frame_group_id : 7, //[8:2]
  74. ndp_frame : 1, //[9]
  75. phy_err : 1, //[10]
  76. phy_err_during_mpdu_header : 1, //[11]
  77. protocol_version_err : 1, //[12]
  78. ast_based_lookup_valid : 1, //[13]
  79. reserved_9a : 2, //[15:14]
  80. phy_ppdu_id : 16; //[31:16]
  81. uint32_t ast_index : 16, //[15:0]
  82. sw_peer_id : 16; //[31:16]
  83. uint32_t mpdu_frame_control_valid : 1, //[0]
  84. mpdu_duration_valid : 1, //[1]
  85. mac_addr_ad1_valid : 1, //[2]
  86. mac_addr_ad2_valid : 1, //[3]
  87. mac_addr_ad3_valid : 1, //[4]
  88. mac_addr_ad4_valid : 1, //[5]
  89. mpdu_sequence_control_valid : 1, //[6]
  90. mpdu_qos_control_valid : 1, //[7]
  91. mpdu_ht_control_valid : 1, //[8]
  92. frame_encryption_info_valid : 1, //[9]
  93. mpdu_fragment_number : 4, //[13:10]
  94. more_fragment_flag : 1, //[14]
  95. reserved_11a : 1, //[15]
  96. fr_ds : 1, //[16]
  97. to_ds : 1, //[17]
  98. encrypted : 1, //[18]
  99. mpdu_retry : 1, //[19]
  100. mpdu_sequence_number : 12; //[31:20]
  101. uint32_t key_id_octet : 8, //[7:0]
  102. new_peer_entry : 1, //[8]
  103. decrypt_needed : 1, //[9]
  104. decap_type : 2, //[11:10]
  105. rx_insert_vlan_c_tag_padding : 1, //[12]
  106. rx_insert_vlan_s_tag_padding : 1, //[13]
  107. strip_vlan_c_tag_decap : 1, //[14]
  108. strip_vlan_s_tag_decap : 1, //[15]
  109. pre_delim_count : 12, //[27:16]
  110. ampdu_flag : 1, //[28]
  111. bar_frame : 1, //[29]
  112. raw_mpdu : 1, //[30]
  113. reserved_12 : 1; //[31]
  114. uint32_t mpdu_length : 14, //[13:0]
  115. first_mpdu : 1, //[14]
  116. mcast_bcast : 1, //[15]
  117. ast_index_not_found : 1, //[16]
  118. ast_index_timeout : 1, //[17]
  119. power_mgmt : 1, //[18]
  120. non_qos : 1, //[19]
  121. null_data : 1, //[20]
  122. mgmt_type : 1, //[21]
  123. ctrl_type : 1, //[22]
  124. more_data : 1, //[23]
  125. eosp : 1, //[24]
  126. fragment_flag : 1, //[25]
  127. order : 1, //[26]
  128. u_apsd_trigger : 1, //[27]
  129. encrypt_required : 1, //[28]
  130. directed : 1, //[29]
  131. amsdu_present : 1, //[30]
  132. reserved_13 : 1; //[31]
  133. uint32_t mpdu_frame_control_field : 16, //[15:0]
  134. mpdu_duration_field : 16; //[31:16]
  135. uint32_t mac_addr_ad1_31_0 : 32; //[31:0]
  136. uint32_t mac_addr_ad1_47_32 : 16, //[15:0]
  137. mac_addr_ad2_15_0 : 16; //[31:16]
  138. uint32_t mac_addr_ad2_47_16 : 32; //[31:0]
  139. uint32_t mac_addr_ad3_31_0 : 32; //[31:0]
  140. uint32_t mac_addr_ad3_47_32 : 16, //[15:0]
  141. mpdu_sequence_control_field : 16; //[31:16]
  142. uint32_t mac_addr_ad4_31_0 : 32; //[31:0]
  143. uint32_t mac_addr_ad4_47_32 : 16, //[15:0]
  144. mpdu_qos_control_field : 16; //[31:16]
  145. uint32_t mpdu_ht_control_field : 32; //[31:0]
  146. };
  147. /*
  148. struct rxpt_classify_info rxpt_classify_info_details
  149. In case of ndp or phy_err or AST_based_lookup_valid ==
  150. 0, this field will be set to 0
  151. RXOLE related classification info
  152. <legal all
  153. rx_reo_queue_desc_addr_31_0
  154. In case of ndp or phy_err or AST_based_lookup_valid ==
  155. 0, this field will be set to 0
  156. Address (lower 32 bits) of the REO queue descriptor.
  157. If no Peer entry lookup happened for this frame, the
  158. value wil be set to 0, and the frame shall never be pushed
  159. to REO entrance ring.
  160. <legal all>
  161. rx_reo_queue_desc_addr_39_32
  162. In case of ndp or phy_err or AST_based_lookup_valid ==
  163. 0, this field will be set to 0
  164. Address (upper 8 bits) of the REO queue descriptor.
  165. If no Peer entry lookup happened for this frame, the
  166. value wil be set to 0, and the frame shall never be pushed
  167. to REO entrance ring.
  168. <legal all>
  169. receive_queue_number
  170. In case of ndp or phy_err or AST_based_lookup_valid ==
  171. 0, this field will be set to 0
  172. Indicates the MPDU queue ID to which this MPDU link
  173. descriptor belongs
  174. Used for tracking and debugging
  175. <legal all>
  176. pre_delim_err_warning
  177. Indicates that a delimiter FCS error was found in
  178. between the Previous MPDU and this MPDU.
  179. Note that this is just a warning, and does not mean that
  180. this MPDU is corrupted in any way. If it is, there will be
  181. other errors indicated such as FCS or decrypt errors
  182. In case of ndp or phy_err, this field will indicate at
  183. least one of delimiters located after the last MPDU in the
  184. previous PPDU has been corrupted.
  185. first_delim_err
  186. Indicates that the first delimiter had a FCS failure.
  187. Only valid when first_mpdu and first_msdu are set.
  188. reserved_2a
  189. <legal 0>
  190. pn_31_0
  191. WEP: IV = {key_id_octet, pn2, pn1, pn0}. Only pn[23:0]
  192. is valid.
  193. TKIP: IV = {pn5, pn4, pn3, pn2, key_id_octet, pn0,
  194. WEPSeed[1], pn1}. Only pn[47:0] is valid.
  195. AES-CCM: IV = {pn5, pn4, pn3, pn2, key_id_octet, 0x0,
  196. pn1, pn0}. Only pn[47:0] is valid.
  197. WAPI: IV = {key_id_octet, 0x0, pn15, pn14, pn13, pn12,
  198. pn11, pn10, pn9, pn8, pn7, pn6, pn5, pn4, pn3, pn2, pn1,
  199. pn0}. pn[127:0] are valid.
  200. pn_63_32
  201. Bits [63:32] of the PN number. See description for
  202. pn_31_0.
  203. pn_95_64
  204. Bits [95:64] of the PN number. See description for
  205. pn_31_0.
  206. pn_127_96
  207. Bits [127:96] of the PN number. See description for
  208. pn_31_0.
  209. epd_en
  210. Field only valid when AST_based_lookup_valid == 1.
  211. In case of ndp or phy_err or AST_based_lookup_valid ==
  212. 0, this field will be set to 0
  213. If set to one use EPD instead of LPD
  214. <legal all>
  215. all_frames_shall_be_encrypted
  216. In case of ndp or phy_err or AST_based_lookup_valid ==
  217. 0, this field will be set to 0
  218. When set, all frames (data only ?) shall be encrypted.
  219. If not, RX CRYPTO shall set an error flag.
  220. <legal all>
  221. encrypt_type
  222. In case of ndp or phy_err or AST_based_lookup_valid ==
  223. 0, this field will be set to 0
  224. Indicates type of decrypt cipher used (as defined in the
  225. peer entry)
  226. <enum 0 wep_40> WEP 40-bit
  227. <enum 1 wep_104> WEP 104-bit
  228. <enum 2 tkip_no_mic> TKIP without MIC
  229. <enum 3 wep_128> WEP 128-bit
  230. <enum 4 tkip_with_mic> TKIP with MIC
  231. <enum 5 wapi> WAPI
  232. <enum 6 aes_ccmp_128> AES CCMP 128
  233. <enum 7 no_cipher> No crypto
  234. <enum 8 aes_ccmp_256> AES CCMP 256
  235. <enum 9 aes_gcmp_128> AES CCMP 128
  236. <enum 10 aes_gcmp_256> AES CCMP 256
  237. <enum 11 wapi_gcm_sm4> WAPI GCM SM4
  238. <enum 12 wep_varied_width> WEP encryption. As for WEP
  239. per keyid the key bit width can vary, the key bit width for
  240. this MPDU will be indicated in field
  241. wep_key_width_for_variable key
  242. <legal 0-12>
  243. wep_key_width_for_variable_key
  244. Field only valid when key_type is set to
  245. wep_varied_width.
  246. This field indicates the size of the wep key for this
  247. MPDU.
  248. <enum 0 wep_varied_width_40> WEP 40-bit
  249. <enum 1 wep_varied_width_104> WEP 104-bit
  250. <enum 2 wep_varied_width_128> WEP 128-bit
  251. <legal 0-2>
  252. mesh_sta
  253. In case of ndp or phy_err or AST_based_lookup_valid ==
  254. 0, this field will be set to 0
  255. When set, this is a Mesh (11s) STA.
  256. The interpretation of the A-MSDU 'Length' field in the
  257. MPDU (if any) is decided by the e-numerations below.
  258. <enum 0 MESH_DISABLE>
  259. <enum 1 MESH_Q2Q> A-MSDU 'Length' is big endian and
  260. includes the length of Mesh Control.
  261. <enum 2 MESH_11S_BE> A-MSDU 'Length' is big endian and
  262. excludes the length of Mesh Control.
  263. <enum 3 MESH_11S_LE> A-MSDU 'Length' is little endian
  264. and excludes the length of Mesh Control. This is
  265. 802.11s-compliant.
  266. <legal all>
  267. bssid_hit
  268. In case of ndp or phy_err or AST_based_lookup_valid ==
  269. 0, this field will be set to 0
  270. When set, the BSSID of the incoming frame matched one of
  271. the 8 BSSID register values
  272. <legal all>
  273. bssid_number
  274. Field only valid when bssid_hit is set.
  275. This number indicates which one out of the 8 BSSID
  276. register values matched the incoming frame
  277. <legal all>
  278. tid
  279. Field only valid when mpdu_qos_control_valid is set
  280. The TID field in the QoS control field
  281. <legal all>
  282. reserved_7a
  283. <legal 0>
  284. peer_meta_data
  285. In case of ndp or phy_err or AST_based_lookup_valid ==
  286. 0, this field will be set to 0
  287. Meta data that SW has programmed in the Peer table entry
  288. of the transmitting STA.
  289. <legal all>
  290. rxpcu_mpdu_filter_in_category
  291. Field indicates what the reason was that this MPDU frame
  292. was allowed to come into the receive path by RXPCU
  293. <enum 0 rxpcu_filter_pass> This MPDU passed the normal
  294. frame filter programming of rxpcu
  295. <enum 1 rxpcu_monitor_client> This MPDU did NOT pass the
  296. regular frame filter and would have been dropped, were it
  297. not for the frame fitting into the 'monitor_client'
  298. category.
  299. <enum 2 rxpcu_monitor_other> This MPDU did NOT pass the
  300. regular frame filter and also did not pass the
  301. rxpcu_monitor_client filter. It would have been dropped
  302. accept that it did pass the 'monitor_other' category.
  303. Note: for ndp frame, if it was expected because the
  304. preceding NDPA was filter_pass, the setting
  305. rxpcu_filter_pass will be used. This setting will also be
  306. used for every ndp frame in case Promiscuous mode is
  307. enabled.
  308. In case promiscuous is not enabled, and an NDP is not
  309. preceded by a NPDA filter pass frame, the only other setting
  310. that could appear here for the NDP is rxpcu_monitor_other.
  311. (rxpcu has a configuration bit specifically for this
  312. scenario)
  313. Note: for
  314. <legal 0-2>
  315. sw_frame_group_id
  316. SW processes frames based on certain classifications.
  317. This field indicates to what sw classification this MPDU is
  318. mapped.
  319. The classification is given in priority order
  320. <enum 0 sw_frame_group_NDP_frame> Note: The
  321. corresponding Rxpcu_Mpdu_filter_in_category can be
  322. rxpcu_filter_pass or rxpcu_monitor_other
  323. <enum 1 sw_frame_group_Multicast_data>
  324. <enum 2 sw_frame_group_Unicast_data>
  325. <enum 3 sw_frame_group_Null_data > This includes mpdus
  326. of type Data Null as well as QoS Data Null
  327. <enum 4 sw_frame_group_mgmt_0000 >
  328. <enum 5 sw_frame_group_mgmt_0001 >
  329. <enum 6 sw_frame_group_mgmt_0010 >
  330. <enum 7 sw_frame_group_mgmt_0011 >
  331. <enum 8 sw_frame_group_mgmt_0100 >
  332. <enum 9 sw_frame_group_mgmt_0101 >
  333. <enum 10 sw_frame_group_mgmt_0110 >
  334. <enum 11 sw_frame_group_mgmt_0111 >
  335. <enum 12 sw_frame_group_mgmt_1000 >
  336. <enum 13 sw_frame_group_mgmt_1001 >
  337. <enum 14 sw_frame_group_mgmt_1010 >
  338. <enum 15 sw_frame_group_mgmt_1011 >
  339. <enum 16 sw_frame_group_mgmt_1100 >
  340. <enum 17 sw_frame_group_mgmt_1101 >
  341. <enum 18 sw_frame_group_mgmt_1110 >
  342. <enum 19 sw_frame_group_mgmt_1111 >
  343. <enum 20 sw_frame_group_ctrl_0000 >
  344. <enum 21 sw_frame_group_ctrl_0001 >
  345. <enum 22 sw_frame_group_ctrl_0010 >
  346. <enum 23 sw_frame_group_ctrl_0011 >
  347. <enum 24 sw_frame_group_ctrl_0100 >
  348. <enum 25 sw_frame_group_ctrl_0101 >
  349. <enum 26 sw_frame_group_ctrl_0110 >
  350. <enum 27 sw_frame_group_ctrl_0111 >
  351. <enum 28 sw_frame_group_ctrl_1000 >
  352. <enum 29 sw_frame_group_ctrl_1001 >
  353. <enum 30 sw_frame_group_ctrl_1010 >
  354. <enum 31 sw_frame_group_ctrl_1011 >
  355. <enum 32 sw_frame_group_ctrl_1100 >
  356. <enum 33 sw_frame_group_ctrl_1101 >
  357. <enum 34 sw_frame_group_ctrl_1110 >
  358. <enum 35 sw_frame_group_ctrl_1111 >
  359. <enum 36 sw_frame_group_unsupported> This covers type 3
  360. and protocol version != 0
  361. Note: The corresponding Rxpcu_Mpdu_filter_in_category
  362. can only be rxpcu_monitor_other
  363. Note: The corresponding Rxpcu_Mpdu_filter_in_category
  364. can be rxpcu_filter_pass
  365. <legal 0-37>
  366. ndp_frame
  367. When set, the received frame was an NDP frame, and thus
  368. there will be no MPDU data.
  369. <legal all>
  370. phy_err
  371. When set, a PHY error was received before MAC received
  372. any data, and thus there will be no MPDU data.
  373. <legal all>
  374. phy_err_during_mpdu_header
  375. When set, a PHY error was received before MAC received
  376. the complete MPDU header which was needed for proper
  377. decoding
  378. <legal all>
  379. protocol_version_err
  380. Set when RXPCU detected a version error in the Frame
  381. control field
  382. <legal all>
  383. ast_based_lookup_valid
  384. When set, AST based lookup for this frame has found a
  385. valid result.
  386. Note that for NDP frame this will never be set
  387. <legal all>
  388. reserved_9a
  389. <legal 0>
  390. phy_ppdu_id
  391. A ppdu counter value that PHY increments for every PPDU
  392. received. The counter value wraps around
  393. <legal all>
  394. ast_index
  395. This field indicates the index of the AST entry
  396. corresponding to this MPDU. It is provided by the GSE module
  397. instantiated in RXPCU.
  398. A value of 0xFFFF indicates an invalid AST index,
  399. meaning that No AST entry was found or NO AST search was
  400. performed
  401. In case of ndp or phy_err, this field will be set to
  402. 0xFFFF
  403. <legal all>
  404. sw_peer_id
  405. In case of ndp or phy_err or AST_based_lookup_valid ==
  406. 0, this field will be set to 0
  407. This field indicates a unique peer identifier. It is set
  408. equal to field 'sw_peer_id' from the AST entry
  409. <legal all>
  410. mpdu_frame_control_valid
  411. When set, the field Mpdu_Frame_control_field has valid
  412. information
  413. <legal all>
  414. mpdu_duration_valid
  415. When set, the field Mpdu_duration_field has valid
  416. information
  417. <legal all>
  418. mac_addr_ad1_valid
  419. When set, the fields mac_addr_ad1_..... have valid
  420. information
  421. <legal all>
  422. mac_addr_ad2_valid
  423. When set, the fields mac_addr_ad2_..... have valid
  424. information
  425. <legal all>
  426. mac_addr_ad3_valid
  427. When set, the fields mac_addr_ad3_..... have valid
  428. information
  429. <legal all>
  430. mac_addr_ad4_valid
  431. When set, the fields mac_addr_ad4_..... have valid
  432. information
  433. <legal all>
  434. mpdu_sequence_control_valid
  435. When set, the fields mpdu_sequence_control_field and
  436. mpdu_sequence_number have valid information as well as field
  437. For MPDUs without a sequence control field, this field
  438. will not be set.
  439. <legal all>
  440. mpdu_qos_control_valid
  441. When set, the field mpdu_qos_control_field has valid
  442. information
  443. For MPDUs without a QoS control field, this field will
  444. not be set.
  445. <legal all>
  446. mpdu_ht_control_valid
  447. When set, the field mpdu_HT_control_field has valid
  448. information
  449. For MPDUs without a HT control field, this field will
  450. not be set.
  451. <legal all>
  452. frame_encryption_info_valid
  453. When set, the encryption related info fields, like IV
  454. and PN are valid
  455. For MPDUs that are not encrypted, this will not be set.
  456. <legal all>
  457. mpdu_fragment_number
  458. Field only valid when Mpdu_sequence_control_valid is set
  459. AND Fragment_flag is set
  460. The fragment number from the 802.11 header
  461. <legal all>
  462. more_fragment_flag
  463. The More Fragment bit setting from the MPDU header of
  464. the received frame
  465. <legal all>
  466. reserved_11a
  467. <legal 0>
  468. fr_ds
  469. Field only valid when Mpdu_frame_control_valid is set
  470. Set if the from DS bit is set in the frame control.
  471. <legal all>
  472. to_ds
  473. Field only valid when Mpdu_frame_control_valid is set
  474. Set if the to DS bit is set in the frame control.
  475. <legal all>
  476. encrypted
  477. Field only valid when Mpdu_frame_control_valid is set.
  478. Protected bit from the frame control.
  479. <legal all>
  480. mpdu_retry
  481. Field only valid when Mpdu_frame_control_valid is set.
  482. Retry bit from the frame control. Only valid when
  483. first_msdu is set.
  484. <legal all>
  485. mpdu_sequence_number
  486. Field only valid when Mpdu_sequence_control_valid is
  487. set.
  488. The sequence number from the 802.11 header.
  489. <legal all>
  490. key_id_octet
  491. The key ID octet from the IV.
  492. In case of ndp or phy_err or AST_based_lookup_valid ==
  493. 0, this field will be set to 0
  494. <legal all>
  495. new_peer_entry
  496. In case of ndp or phy_err or AST_based_lookup_valid ==
  497. 0, this field will be set to 0
  498. Set if new RX_PEER_ENTRY TLV follows. If clear,
  499. RX_PEER_ENTRY doesn't follow so RX DECRYPTION module either
  500. uses old peer entry or not decrypt.
  501. <legal all>
  502. decrypt_needed
  503. In case of ndp or phy_err or AST_based_lookup_valid ==
  504. 0, this field will be set to 0
  505. Set if decryption is needed.
  506. Note:
  507. When RXPCU sets bit 'ast_index_not_found' and/or
  508. ast_index_timeout', RXPCU will also ensure that this bit is
  509. NOT set
  510. CRYPTO for that reason only needs to evaluate this bit
  511. and non of the other ones.
  512. <legal all>
  513. decap_type
  514. In case of ndp or phy_err or AST_based_lookup_valid ==
  515. 0, this field will be set to 0
  516. Used by the OLE during decapsulation.
  517. Indicates the decapsulation that HW will perform:
  518. <enum 0 RAW> No encapsulation
  519. <enum 1 Native_WiFi>
  520. <enum 2 Ethernet> Ethernet 2 (DIX) or 802.3 (uses
  521. SNAP/LLC)
  522. <enum 3 802_3> Indicate Ethernet
  523. <legal all>
  524. rx_insert_vlan_c_tag_padding
  525. In case of ndp or phy_err or AST_based_lookup_valid ==
  526. 0, this field will be set to 0
  527. Insert 4 byte of all zeros as VLAN tag if the rx payload
  528. does not have VLAN. Used during decapsulation.
  529. <legal all>
  530. rx_insert_vlan_s_tag_padding
  531. In case of ndp or phy_err or AST_based_lookup_valid ==
  532. 0, this field will be set to 0
  533. Insert 4 byte of all zeros as double VLAN tag if the rx
  534. payload does not have VLAN. Used during
  535. <legal all>
  536. strip_vlan_c_tag_decap
  537. In case of ndp or phy_err or AST_based_lookup_valid ==
  538. 0, this field will be set to 0
  539. Strip the VLAN during decapsulation.  Used by the OLE.
  540. <legal all>
  541. strip_vlan_s_tag_decap
  542. In case of ndp or phy_err or AST_based_lookup_valid ==
  543. 0, this field will be set to 0
  544. Strip the double VLAN during decapsulation.  Used by
  545. the OLE.
  546. <legal all>
  547. pre_delim_count
  548. The number of delimiters before this MPDU.
  549. Note that this number is cleared at PPDU start.
  550. If this MPDU is the first received MPDU in the PPDU and
  551. this MPDU gets filtered-in, this field will indicate the
  552. number of delimiters located after the last MPDU in the
  553. previous PPDU.
  554. If this MPDU is located after the first received MPDU in
  555. an PPDU, this field will indicate the number of delimiters
  556. located between the previous MPDU and this MPDU.
  557. In case of ndp or phy_err, this field will indicate the
  558. number of delimiters located after the last MPDU in the
  559. previous PPDU.
  560. <legal all>
  561. ampdu_flag
  562. When set, received frame was part of an A-MPDU.
  563. <legal all>
  564. bar_frame
  565. In case of ndp or phy_err or AST_based_lookup_valid ==
  566. 0, this field will be set to 0
  567. When set, received frame is a BAR frame
  568. <legal all>
  569. raw_mpdu
  570. Consumer: SW
  571. Producer: RXOLE
  572. RXPCU sets this field to 0 and RXOLE overwrites it.
  573. Set to 1 by RXOLE when it has not performed any 802.11
  574. to Ethernet/Natvie WiFi header conversion on this MPDU.
  575. <legal all>
  576. reserved_12
  577. <legal 0>
  578. mpdu_length
  579. In case of ndp or phy_err this field will be set to 0
  580. MPDU length before decapsulation.
  581. <legal all>
  582. first_mpdu
  583. See definition in RX attention descriptor
  584. In case of ndp or phy_err, this field will be set. Note
  585. however that there will not actually be any data contents in
  586. the MPDU.
  587. <legal all>
  588. mcast_bcast
  589. In case of ndp or phy_err or Phy_err_during_mpdu_header
  590. this field will be set to 0
  591. See definition in RX attention descriptor
  592. <legal all>
  593. ast_index_not_found
  594. In case of ndp or phy_err or Phy_err_during_mpdu_header
  595. this field will be set to 0
  596. See definition in RX attention descriptor
  597. <legal all>
  598. ast_index_timeout
  599. In case of ndp or phy_err or Phy_err_during_mpdu_header
  600. this field will be set to 0
  601. See definition in RX attention descriptor
  602. <legal all>
  603. power_mgmt
  604. In case of ndp or phy_err or Phy_err_during_mpdu_header
  605. this field will be set to 0
  606. See definition in RX attention descriptor
  607. <legal all>
  608. non_qos
  609. In case of ndp or phy_err or Phy_err_during_mpdu_header
  610. this field will be set to 1
  611. See definition in RX attention descriptor
  612. <legal all>
  613. null_data
  614. In case of ndp or phy_err or Phy_err_during_mpdu_header
  615. this field will be set to 0
  616. See definition in RX attention descriptor
  617. <legal all>
  618. mgmt_type
  619. In case of ndp or phy_err or Phy_err_during_mpdu_header
  620. this field will be set to 0
  621. See definition in RX attention descriptor
  622. <legal all>
  623. ctrl_type
  624. In case of ndp or phy_err or Phy_err_during_mpdu_header
  625. this field will be set to 0
  626. See definition in RX attention descriptor
  627. <legal all>
  628. more_data
  629. In case of ndp or phy_err or Phy_err_during_mpdu_header
  630. this field will be set to 0
  631. See definition in RX attention descriptor
  632. <legal all>
  633. eosp
  634. In case of ndp or phy_err or Phy_err_during_mpdu_header
  635. this field will be set to 0
  636. See definition in RX attention descriptor
  637. <legal all>
  638. fragment_flag
  639. In case of ndp or phy_err or Phy_err_during_mpdu_header
  640. this field will be set to 0
  641. See definition in RX attention descriptor
  642. <legal all>
  643. order
  644. In case of ndp or phy_err or Phy_err_during_mpdu_header
  645. this field will be set to 0
  646. See definition in RX attention descriptor
  647. <legal all>
  648. u_apsd_trigger
  649. In case of ndp or phy_err or Phy_err_during_mpdu_header
  650. this field will be set to 0
  651. See definition in RX attention descriptor
  652. <legal all>
  653. encrypt_required
  654. In case of ndp or phy_err or Phy_err_during_mpdu_header
  655. this field will be set to 0
  656. See definition in RX attention descriptor
  657. <legal all>
  658. directed
  659. In case of ndp or phy_err or Phy_err_during_mpdu_header
  660. this field will be set to 0
  661. See definition in RX attention descriptor
  662. <legal all>
  663. amsdu_present
  664. Field only valid when Mpdu_qos_control_valid is set
  665. The 'amsdu_present' bit within the QoS control field of
  666. the MPDU
  667. <legal all>
  668. reserved_13
  669. <legal 0>
  670. mpdu_frame_control_field
  671. Field only valid when Mpdu_frame_control_valid is set
  672. The frame control field of this received MPDU.
  673. Field only valid when Ndp_frame and phy_err are NOT set
  674. Bytes 0 + 1 of the received MPDU
  675. <legal all>
  676. mpdu_duration_field
  677. Field only valid when Mpdu_duration_valid is set
  678. The duration field of this received MPDU.
  679. <legal all>
  680. mac_addr_ad1_31_0
  681. Field only valid when mac_addr_ad1_valid is set
  682. The Least Significant 4 bytes of the Received Frames MAC
  683. Address AD1
  684. <legal all>
  685. mac_addr_ad1_47_32
  686. Field only valid when mac_addr_ad1_valid is set
  687. The 2 most significant bytes of the Received Frames MAC
  688. Address AD1
  689. <legal all>
  690. mac_addr_ad2_15_0
  691. Field only valid when mac_addr_ad2_valid is set
  692. The Least Significant 2 bytes of the Received Frames MAC
  693. Address AD2
  694. <legal all>
  695. mac_addr_ad2_47_16
  696. Field only valid when mac_addr_ad2_valid is set
  697. The 4 most significant bytes of the Received Frames MAC
  698. Address AD2
  699. <legal all>
  700. mac_addr_ad3_31_0
  701. Field only valid when mac_addr_ad3_valid is set
  702. The Least Significant 4 bytes of the Received Frames MAC
  703. Address AD3
  704. <legal all>
  705. mac_addr_ad3_47_32
  706. Field only valid when mac_addr_ad3_valid is set
  707. The 2 most significant bytes of the Received Frames MAC
  708. Address AD3
  709. <legal all>
  710. mpdu_sequence_control_field
  711. The sequence control field of the MPDU
  712. <legal all>
  713. mac_addr_ad4_31_0
  714. Field only valid when mac_addr_ad4_valid is set
  715. The Least Significant 4 bytes of the Received Frames MAC
  716. Address AD4
  717. <legal all>
  718. mac_addr_ad4_47_32
  719. Field only valid when mac_addr_ad4_valid is set
  720. The 2 most significant bytes of the Received Frames MAC
  721. Address AD4
  722. <legal all>
  723. mpdu_qos_control_field
  724. Field only valid when mpdu_qos_control_valid is set
  725. The sequence control field of the MPDU
  726. <legal all>
  727. mpdu_ht_control_field
  728. Field only valid when mpdu_qos_control_valid is set
  729. The HT control field of the MPDU
  730. <legal all>
  731. */
  732. /* EXTERNAL REFERENCE : struct rxpt_classify_info rxpt_classify_info_details */
  733. /* Description RX_MPDU_INFO_0_RXPT_CLASSIFY_INFO_DETAILS_REO_DESTINATION_INDICATION
  734. The ID of the REO exit ring where the MSDU frame shall
  735. push after (MPDU level) reordering has finished.
  736. <enum 0 reo_destination_tcl> Reo will push the frame
  737. into the REO2TCL ring
  738. <enum 1 reo_destination_sw1> Reo will push the frame
  739. into the REO2SW1 ring
  740. <enum 2 reo_destination_sw2> Reo will push the frame
  741. into the REO2SW2 ring
  742. <enum 3 reo_destination_sw3> Reo will push the frame
  743. into the REO2SW3 ring
  744. <enum 4 reo_destination_sw4> Reo will push the frame
  745. into the REO2SW4 ring
  746. <enum 5 reo_destination_release> Reo will push the frame
  747. into the REO_release ring
  748. <enum 6 reo_destination_fw> Reo will push the frame into
  749. the REO2FW ring
  750. <enum 7 reo_destination_sw5> Reo will push the frame
  751. into the REO2SW5 ring (REO remaps this in chips without
  752. REO2SW5 ring, e.g. Pine)
  753. <enum 8 reo_destination_sw6> Reo will push the frame
  754. into the REO2SW6 ring (REO remaps this in chips without
  755. REO2SW6 ring, e.g. Pine)
  756. <enum 9 reo_destination_9> REO remaps this <enum 10
  757. reo_destination_10> REO remaps this
  758. <enum 11 reo_destination_11> REO remaps this
  759. <enum 12 reo_destination_12> REO remaps this <enum 13
  760. reo_destination_13> REO remaps this
  761. <enum 14 reo_destination_14> REO remaps this
  762. <enum 15 reo_destination_15> REO remaps this
  763. <enum 16 reo_destination_16> REO remaps this
  764. <enum 17 reo_destination_17> REO remaps this
  765. <enum 18 reo_destination_18> REO remaps this
  766. <enum 19 reo_destination_19> REO remaps this
  767. <enum 20 reo_destination_20> REO remaps this
  768. <enum 21 reo_destination_21> REO remaps this
  769. <enum 22 reo_destination_22> REO remaps this
  770. <enum 23 reo_destination_23> REO remaps this
  771. <enum 24 reo_destination_24> REO remaps this
  772. <enum 25 reo_destination_25> REO remaps this
  773. <enum 26 reo_destination_26> REO remaps this
  774. <enum 27 reo_destination_27> REO remaps this
  775. <enum 28 reo_destination_28> REO remaps this
  776. <enum 29 reo_destination_29> REO remaps this
  777. <enum 30 reo_destination_30> REO remaps this
  778. <enum 31 reo_destination_31> REO remaps this
  779. <legal all>
  780. */
  781. #define RX_MPDU_INFO_0_RXPT_CLASSIFY_INFO_DETAILS_REO_DESTINATION_INDICATION_OFFSET 0x00000000
  782. #define RX_MPDU_INFO_0_RXPT_CLASSIFY_INFO_DETAILS_REO_DESTINATION_INDICATION_LSB 0
  783. #define RX_MPDU_INFO_0_RXPT_CLASSIFY_INFO_DETAILS_REO_DESTINATION_INDICATION_MASK 0x0000001f
  784. /* Description RX_MPDU_INFO_0_RXPT_CLASSIFY_INFO_DETAILS_LMAC_PEER_ID_MSB
  785. If use_flow_id_toeplitz_clfy is set and lmac_peer_id_'sb
  786. is 2'b00, Rx OLE uses a REO desination indicati'n of {1'b1,
  787. hash[3:0]} using the chosen Toeplitz hash from Common Parser
  788. if flow search fails.
  789. If use_flow_id_toeplitz_clfy is set and lmac_peer_id_msb
  790. 's not 2'b00, Rx OLE uses a REO desination indication of
  791. {lmac_peer_id_msb, hash[2:0]} using the chosen Toeplitz hash
  792. from Common Parser if flow search fails.
  793. This LMAC/peer-based routing is not supported in
  794. Hastings80 and HastingsPrime.
  795. <legal 0>
  796. */
  797. #define RX_MPDU_INFO_0_RXPT_CLASSIFY_INFO_DETAILS_LMAC_PEER_ID_MSB_OFFSET 0x00000000
  798. #define RX_MPDU_INFO_0_RXPT_CLASSIFY_INFO_DETAILS_LMAC_PEER_ID_MSB_LSB 5
  799. #define RX_MPDU_INFO_0_RXPT_CLASSIFY_INFO_DETAILS_LMAC_PEER_ID_MSB_MASK 0x00000060
  800. /* Description RX_MPDU_INFO_0_RXPT_CLASSIFY_INFO_DETAILS_USE_FLOW_ID_TOEPLITZ_CLFY
  801. Indication to Rx OLE to enable REO destination routing
  802. based on the chosen Toeplitz hash from Common Parser, in
  803. case flow search fails
  804. <legal all>
  805. */
  806. #define RX_MPDU_INFO_0_RXPT_CLASSIFY_INFO_DETAILS_USE_FLOW_ID_TOEPLITZ_CLFY_OFFSET 0x00000000
  807. #define RX_MPDU_INFO_0_RXPT_CLASSIFY_INFO_DETAILS_USE_FLOW_ID_TOEPLITZ_CLFY_LSB 7
  808. #define RX_MPDU_INFO_0_RXPT_CLASSIFY_INFO_DETAILS_USE_FLOW_ID_TOEPLITZ_CLFY_MASK 0x00000080
  809. /* Description RX_MPDU_INFO_0_RXPT_CLASSIFY_INFO_DETAILS_PKT_SELECTION_FP_UCAST_DATA
  810. Filter pass Unicast data frame (matching
  811. rxpcu_filter_pass and sw_frame_group_Unicast_data) routing
  812. selection
  813. 1'b0: source and destination rings are selected from the
  814. RxOLE register settings for the packet type
  815. 1'b1: source ring and destination ring is selected from
  816. the rxdma0_source_ring_selection and
  817. rxdma0_destination_ring_selection fields in this STRUCT
  818. <legal all>
  819. */
  820. #define RX_MPDU_INFO_0_RXPT_CLASSIFY_INFO_DETAILS_PKT_SELECTION_FP_UCAST_DATA_OFFSET 0x00000000
  821. #define RX_MPDU_INFO_0_RXPT_CLASSIFY_INFO_DETAILS_PKT_SELECTION_FP_UCAST_DATA_LSB 8
  822. #define RX_MPDU_INFO_0_RXPT_CLASSIFY_INFO_DETAILS_PKT_SELECTION_FP_UCAST_DATA_MASK 0x00000100
  823. /* Description RX_MPDU_INFO_0_RXPT_CLASSIFY_INFO_DETAILS_PKT_SELECTION_FP_MCAST_DATA
  824. Filter pass Multicast data frame (matching
  825. rxpcu_filter_pass and sw_frame_group_Multicast_data) routing
  826. selection
  827. 1'b0: source and destination rings are selected from the
  828. RxOLE register settings for the packet type
  829. 1'b1: source ring and destination ring is selected from
  830. the rxdma0_source_ring_selection and
  831. rxdma0_destination_ring_selection fields in this STRUCT
  832. <legal all>
  833. */
  834. #define RX_MPDU_INFO_0_RXPT_CLASSIFY_INFO_DETAILS_PKT_SELECTION_FP_MCAST_DATA_OFFSET 0x00000000
  835. #define RX_MPDU_INFO_0_RXPT_CLASSIFY_INFO_DETAILS_PKT_SELECTION_FP_MCAST_DATA_LSB 9
  836. #define RX_MPDU_INFO_0_RXPT_CLASSIFY_INFO_DETAILS_PKT_SELECTION_FP_MCAST_DATA_MASK 0x00000200
  837. /* Description RX_MPDU_INFO_0_RXPT_CLASSIFY_INFO_DETAILS_PKT_SELECTION_FP_1000
  838. Filter pass BAR frame (matching rxpcu_filter_pass and
  839. sw_frame_group_ctrl_1000) routing selection
  840. 1'b0: source and destination rings are selected from the
  841. RxOLE register settings for the packet type
  842. 1'b1: source ring and destination ring is selected from
  843. the rxdma0_source_ring_selection and
  844. rxdma0_destination_ring_selection fields in this STRUCT
  845. <legal all>
  846. */
  847. #define RX_MPDU_INFO_0_RXPT_CLASSIFY_INFO_DETAILS_PKT_SELECTION_FP_1000_OFFSET 0x00000000
  848. #define RX_MPDU_INFO_0_RXPT_CLASSIFY_INFO_DETAILS_PKT_SELECTION_FP_1000_LSB 10
  849. #define RX_MPDU_INFO_0_RXPT_CLASSIFY_INFO_DETAILS_PKT_SELECTION_FP_1000_MASK 0x00000400
  850. /* Description RX_MPDU_INFO_0_RXPT_CLASSIFY_INFO_DETAILS_RXDMA0_SOURCE_RING_SELECTION
  851. Field only valid when for the received frame type the
  852. corresponding pkt_selection_fp_... bit is set
  853. <enum 0 wbm2rxdma_buf_source_ring> The data buffer for
  854. <enum 1 fw2rxdma_buf_source_ring> The data buffer for
  855. this frame shall be sourced by fw2rxdma buffer source ring.
  856. <enum 2 sw2rxdma_buf_source_ring> The data buffer for
  857. this frame shall be sourced by sw2rxdma buffer source ring.
  858. <enum 3 no_buffer_ring> The frame shall not be written
  859. to any data buffer.
  860. <legal all>
  861. */
  862. #define RX_MPDU_INFO_0_RXPT_CLASSIFY_INFO_DETAILS_RXDMA0_SOURCE_RING_SELECTION_OFFSET 0x00000000
  863. #define RX_MPDU_INFO_0_RXPT_CLASSIFY_INFO_DETAILS_RXDMA0_SOURCE_RING_SELECTION_LSB 11
  864. #define RX_MPDU_INFO_0_RXPT_CLASSIFY_INFO_DETAILS_RXDMA0_SOURCE_RING_SELECTION_MASK 0x00001800
  865. /* Description RX_MPDU_INFO_0_RXPT_CLASSIFY_INFO_DETAILS_RXDMA0_DESTINATION_RING_SELECTION
  866. Field only valid when for the received frame type the
  867. corresponding pkt_selection_fp_... bit is set
  868. <enum 0 rxdma_release_ring> RXDMA0 shall push the frame
  869. to the Release ring. Effectively this means the frame needs
  870. to be dropped.
  871. <enum 1 rxdma2fw_ring> RXDMA0 shall push the frame to
  872. the FW ring.
  873. <enum 2 rxdma2sw_ring> RXDMA0 shall push the frame to
  874. the SW ring.
  875. <enum 3 rxdma2reo_ring> RXDMA0 shall push the frame to
  876. the REO entrance ring.
  877. <legal all>
  878. */
  879. #define RX_MPDU_INFO_0_RXPT_CLASSIFY_INFO_DETAILS_RXDMA0_DESTINATION_RING_SELECTION_OFFSET 0x00000000
  880. #define RX_MPDU_INFO_0_RXPT_CLASSIFY_INFO_DETAILS_RXDMA0_DESTINATION_RING_SELECTION_LSB 13
  881. #define RX_MPDU_INFO_0_RXPT_CLASSIFY_INFO_DETAILS_RXDMA0_DESTINATION_RING_SELECTION_MASK 0x00006000
  882. /* Description RX_MPDU_INFO_0_RXPT_CLASSIFY_INFO_DETAILS_RESERVED_0B
  883. <legal 0>
  884. */
  885. #define RX_MPDU_INFO_0_RXPT_CLASSIFY_INFO_DETAILS_RESERVED_0B_OFFSET 0x00000000
  886. #define RX_MPDU_INFO_0_RXPT_CLASSIFY_INFO_DETAILS_RESERVED_0B_LSB 15
  887. #define RX_MPDU_INFO_0_RXPT_CLASSIFY_INFO_DETAILS_RESERVED_0B_MASK 0xffff8000
  888. /* Description RX_MPDU_INFO_1_RX_REO_QUEUE_DESC_ADDR_31_0
  889. In case of ndp or phy_err or AST_based_lookup_valid ==
  890. 0, this field will be set to 0
  891. Address (lower 32 bits) of the REO queue descriptor.
  892. If no Peer entry lookup happened for this frame, the
  893. value wil be set to 0, and the frame shall never be pushed
  894. to REO entrance ring.
  895. <legal all>
  896. */
  897. #define RX_MPDU_INFO_1_RX_REO_QUEUE_DESC_ADDR_31_0_OFFSET 0x00000004
  898. #define RX_MPDU_INFO_1_RX_REO_QUEUE_DESC_ADDR_31_0_LSB 0
  899. #define RX_MPDU_INFO_1_RX_REO_QUEUE_DESC_ADDR_31_0_MASK 0xffffffff
  900. /* Description RX_MPDU_INFO_2_RX_REO_QUEUE_DESC_ADDR_39_32
  901. In case of ndp or phy_err or AST_based_lookup_valid ==
  902. 0, this field will be set to 0
  903. Address (upper 8 bits) of the REO queue descriptor.
  904. If no Peer entry lookup happened for this frame, the
  905. value wil be set to 0, and the frame shall never be pushed
  906. to REO entrance ring.
  907. <legal all>
  908. */
  909. #define RX_MPDU_INFO_2_RX_REO_QUEUE_DESC_ADDR_39_32_OFFSET 0x00000008
  910. #define RX_MPDU_INFO_2_RX_REO_QUEUE_DESC_ADDR_39_32_LSB 0
  911. #define RX_MPDU_INFO_2_RX_REO_QUEUE_DESC_ADDR_39_32_MASK 0x000000ff
  912. /* Description RX_MPDU_INFO_2_RECEIVE_QUEUE_NUMBER
  913. In case of ndp or phy_err or AST_based_lookup_valid ==
  914. 0, this field will be set to 0
  915. Indicates the MPDU queue ID to which this MPDU link
  916. descriptor belongs
  917. Used for tracking and debugging
  918. <legal all>
  919. */
  920. #define RX_MPDU_INFO_2_RECEIVE_QUEUE_NUMBER_OFFSET 0x00000008
  921. #define RX_MPDU_INFO_2_RECEIVE_QUEUE_NUMBER_LSB 8
  922. #define RX_MPDU_INFO_2_RECEIVE_QUEUE_NUMBER_MASK 0x00ffff00
  923. /* Description RX_MPDU_INFO_2_PRE_DELIM_ERR_WARNING
  924. Indicates that a delimiter FCS error was found in
  925. between the Previous MPDU and this MPDU.
  926. Note that this is just a warning, and does not mean that
  927. this MPDU is corrupted in any way. If it is, there will be
  928. other errors indicated such as FCS or decrypt errors
  929. In case of ndp or phy_err, this field will indicate at
  930. least one of delimiters located after the last MPDU in the
  931. previous PPDU has been corrupted.
  932. */
  933. #define RX_MPDU_INFO_2_PRE_DELIM_ERR_WARNING_OFFSET 0x00000008
  934. #define RX_MPDU_INFO_2_PRE_DELIM_ERR_WARNING_LSB 24
  935. #define RX_MPDU_INFO_2_PRE_DELIM_ERR_WARNING_MASK 0x01000000
  936. /* Description RX_MPDU_INFO_2_FIRST_DELIM_ERR
  937. Indicates that the first delimiter had a FCS failure.
  938. Only valid when first_mpdu and first_msdu are set.
  939. */
  940. #define RX_MPDU_INFO_2_FIRST_DELIM_ERR_OFFSET 0x00000008
  941. #define RX_MPDU_INFO_2_FIRST_DELIM_ERR_LSB 25
  942. #define RX_MPDU_INFO_2_FIRST_DELIM_ERR_MASK 0x02000000
  943. /* Description RX_MPDU_INFO_2_RESERVED_2A
  944. <legal 0>
  945. */
  946. #define RX_MPDU_INFO_2_RESERVED_2A_OFFSET 0x00000008
  947. #define RX_MPDU_INFO_2_RESERVED_2A_LSB 26
  948. #define RX_MPDU_INFO_2_RESERVED_2A_MASK 0xfc000000
  949. /* Description RX_MPDU_INFO_3_PN_31_0
  950. WEP: IV = {key_id_octet, pn2, pn1, pn0}. Only pn[23:0]
  951. is valid.
  952. TKIP: IV = {pn5, pn4, pn3, pn2, key_id_octet, pn0,
  953. WEPSeed[1], pn1}. Only pn[47:0] is valid.
  954. AES-CCM: IV = {pn5, pn4, pn3, pn2, key_id_octet, 0x0,
  955. pn1, pn0}. Only pn[47:0] is valid.
  956. WAPI: IV = {key_id_octet, 0x0, pn15, pn14, pn13, pn12,
  957. pn11, pn10, pn9, pn8, pn7, pn6, pn5, pn4, pn3, pn2, pn1,
  958. pn0}. pn[127:0] are valid.
  959. */
  960. #define RX_MPDU_INFO_3_PN_31_0_OFFSET 0x0000000c
  961. #define RX_MPDU_INFO_3_PN_31_0_LSB 0
  962. #define RX_MPDU_INFO_3_PN_31_0_MASK 0xffffffff
  963. /* Description RX_MPDU_INFO_4_PN_63_32
  964. Bits [63:32] of the PN number. See description for
  965. pn_31_0.
  966. */
  967. #define RX_MPDU_INFO_4_PN_63_32_OFFSET 0x00000010
  968. #define RX_MPDU_INFO_4_PN_63_32_LSB 0
  969. #define RX_MPDU_INFO_4_PN_63_32_MASK 0xffffffff
  970. /* Description RX_MPDU_INFO_5_PN_95_64
  971. Bits [95:64] of the PN number. See description for
  972. pn_31_0.
  973. */
  974. #define RX_MPDU_INFO_5_PN_95_64_OFFSET 0x00000014
  975. #define RX_MPDU_INFO_5_PN_95_64_LSB 0
  976. #define RX_MPDU_INFO_5_PN_95_64_MASK 0xffffffff
  977. /* Description RX_MPDU_INFO_6_PN_127_96
  978. Bits [127:96] of the PN number. See description for
  979. pn_31_0.
  980. */
  981. #define RX_MPDU_INFO_6_PN_127_96_OFFSET 0x00000018
  982. #define RX_MPDU_INFO_6_PN_127_96_LSB 0
  983. #define RX_MPDU_INFO_6_PN_127_96_MASK 0xffffffff
  984. /* Description RX_MPDU_INFO_7_EPD_EN
  985. Field only valid when AST_based_lookup_valid == 1.
  986. In case of ndp or phy_err or AST_based_lookup_valid ==
  987. 0, this field will be set to 0
  988. If set to one use EPD instead of LPD
  989. <legal all>
  990. */
  991. #define RX_MPDU_INFO_7_EPD_EN_OFFSET 0x0000001c
  992. #define RX_MPDU_INFO_7_EPD_EN_LSB 0
  993. #define RX_MPDU_INFO_7_EPD_EN_MASK 0x00000001
  994. /* Description RX_MPDU_INFO_7_ALL_FRAMES_SHALL_BE_ENCRYPTED
  995. In case of ndp or phy_err or AST_based_lookup_valid ==
  996. 0, this field will be set to 0
  997. When set, all frames (data only ?) shall be encrypted.
  998. If not, RX CRYPTO shall set an error flag.
  999. <legal all>
  1000. */
  1001. #define RX_MPDU_INFO_7_ALL_FRAMES_SHALL_BE_ENCRYPTED_OFFSET 0x0000001c
  1002. #define RX_MPDU_INFO_7_ALL_FRAMES_SHALL_BE_ENCRYPTED_LSB 1
  1003. #define RX_MPDU_INFO_7_ALL_FRAMES_SHALL_BE_ENCRYPTED_MASK 0x00000002
  1004. /* Description RX_MPDU_INFO_7_ENCRYPT_TYPE
  1005. In case of ndp or phy_err or AST_based_lookup_valid ==
  1006. 0, this field will be set to 0
  1007. Indicates type of decrypt cipher used (as defined in the
  1008. peer entry)
  1009. <enum 0 wep_40> WEP 40-bit
  1010. <enum 1 wep_104> WEP 104-bit
  1011. <enum 2 tkip_no_mic> TKIP without MIC
  1012. <enum 3 wep_128> WEP 128-bit
  1013. <enum 4 tkip_with_mic> TKIP with MIC
  1014. <enum 5 wapi> WAPI
  1015. <enum 6 aes_ccmp_128> AES CCMP 128
  1016. <enum 7 no_cipher> No crypto
  1017. <enum 8 aes_ccmp_256> AES CCMP 256
  1018. <enum 9 aes_gcmp_128> AES CCMP 128
  1019. <enum 10 aes_gcmp_256> AES CCMP 256
  1020. <enum 11 wapi_gcm_sm4> WAPI GCM SM4
  1021. <enum 12 wep_varied_width> WEP encryption. As for WEP
  1022. per keyid the key bit width can vary, the key bit width for
  1023. this MPDU will be indicated in field
  1024. wep_key_width_for_variable key
  1025. <legal 0-12>
  1026. */
  1027. #define RX_MPDU_INFO_7_ENCRYPT_TYPE_OFFSET 0x0000001c
  1028. #define RX_MPDU_INFO_7_ENCRYPT_TYPE_LSB 2
  1029. #define RX_MPDU_INFO_7_ENCRYPT_TYPE_MASK 0x0000003c
  1030. /* Description RX_MPDU_INFO_7_WEP_KEY_WIDTH_FOR_VARIABLE_KEY
  1031. Field only valid when key_type is set to
  1032. wep_varied_width.
  1033. This field indicates the size of the wep key for this
  1034. MPDU.
  1035. <enum 0 wep_varied_width_40> WEP 40-bit
  1036. <enum 1 wep_varied_width_104> WEP 104-bit
  1037. <enum 2 wep_varied_width_128> WEP 128-bit
  1038. <legal 0-2>
  1039. */
  1040. #define RX_MPDU_INFO_7_WEP_KEY_WIDTH_FOR_VARIABLE_KEY_OFFSET 0x0000001c
  1041. #define RX_MPDU_INFO_7_WEP_KEY_WIDTH_FOR_VARIABLE_KEY_LSB 6
  1042. #define RX_MPDU_INFO_7_WEP_KEY_WIDTH_FOR_VARIABLE_KEY_MASK 0x000000c0
  1043. /* Description RX_MPDU_INFO_7_MESH_STA
  1044. In case of ndp or phy_err or AST_based_lookup_valid ==
  1045. 0, this field will be set to 0
  1046. When set, this is a Mesh (11s) STA.
  1047. The interpretation of the A-MSDU 'Length' field in the
  1048. MPDU (if any) is decided by the e-numerations below.
  1049. <enum 0 MESH_DISABLE>
  1050. <enum 1 MESH_Q2Q> A-MSDU 'Length' is big endian and
  1051. includes the length of Mesh Control.
  1052. <enum 2 MESH_11S_BE> A-MSDU 'Length' is big endian and
  1053. excludes the length of Mesh Control.
  1054. <enum 3 MESH_11S_LE> A-MSDU 'Length' is little endian
  1055. and excludes the length of Mesh Control. This is
  1056. 802.11s-compliant.
  1057. <legal all>
  1058. */
  1059. #define RX_MPDU_INFO_7_MESH_STA_OFFSET 0x0000001c
  1060. #define RX_MPDU_INFO_7_MESH_STA_LSB 8
  1061. #define RX_MPDU_INFO_7_MESH_STA_MASK 0x00000300
  1062. /* Description RX_MPDU_INFO_7_BSSID_HIT
  1063. In case of ndp or phy_err or AST_based_lookup_valid ==
  1064. 0, this field will be set to 0
  1065. When set, the BSSID of the incoming frame matched one of
  1066. the 8 BSSID register values
  1067. <legal all>
  1068. */
  1069. #define RX_MPDU_INFO_7_BSSID_HIT_OFFSET 0x0000001c
  1070. #define RX_MPDU_INFO_7_BSSID_HIT_LSB 10
  1071. #define RX_MPDU_INFO_7_BSSID_HIT_MASK 0x00000400
  1072. /* Description RX_MPDU_INFO_7_BSSID_NUMBER
  1073. Field only valid when bssid_hit is set.
  1074. This number indicates which one out of the 8 BSSID
  1075. register values matched the incoming frame
  1076. <legal all>
  1077. */
  1078. #define RX_MPDU_INFO_7_BSSID_NUMBER_OFFSET 0x0000001c
  1079. #define RX_MPDU_INFO_7_BSSID_NUMBER_LSB 11
  1080. #define RX_MPDU_INFO_7_BSSID_NUMBER_MASK 0x00007800
  1081. /* Description RX_MPDU_INFO_7_TID
  1082. Field only valid when mpdu_qos_control_valid is set
  1083. The TID field in the QoS control field
  1084. <legal all>
  1085. */
  1086. #define RX_MPDU_INFO_7_TID_OFFSET 0x0000001c
  1087. #define RX_MPDU_INFO_7_TID_LSB 15
  1088. #define RX_MPDU_INFO_7_TID_MASK 0x00078000
  1089. /* Description RX_MPDU_INFO_7_RESERVED_7A
  1090. <legal 0>
  1091. */
  1092. #define RX_MPDU_INFO_7_RESERVED_7A_OFFSET 0x0000001c
  1093. #define RX_MPDU_INFO_7_RESERVED_7A_LSB 19
  1094. #define RX_MPDU_INFO_7_RESERVED_7A_MASK 0xfff80000
  1095. /* Description RX_MPDU_INFO_8_PEER_META_DATA
  1096. In case of ndp or phy_err or AST_based_lookup_valid ==
  1097. 0, this field will be set to 0
  1098. Meta data that SW has programmed in the Peer table entry
  1099. of the transmitting STA.
  1100. <legal all>
  1101. */
  1102. #define RX_MPDU_INFO_8_PEER_META_DATA_OFFSET 0x00000020
  1103. #define RX_MPDU_INFO_8_PEER_META_DATA_LSB 0
  1104. #define RX_MPDU_INFO_8_PEER_META_DATA_MASK 0xffffffff
  1105. /* Description RX_MPDU_INFO_9_RXPCU_MPDU_FILTER_IN_CATEGORY
  1106. Field indicates what the reason was that this MPDU frame
  1107. was allowed to come into the receive path by RXPCU
  1108. <enum 0 rxpcu_filter_pass> This MPDU passed the normal
  1109. frame filter programming of rxpcu
  1110. <enum 1 rxpcu_monitor_client> This MPDU did NOT pass the
  1111. regular frame filter and would have been dropped, were it
  1112. not for the frame fitting into the 'monitor_client'
  1113. category.
  1114. <enum 2 rxpcu_monitor_other> This MPDU did NOT pass the
  1115. regular frame filter and also did not pass the
  1116. rxpcu_monitor_client filter. It would have been dropped
  1117. accept that it did pass the 'monitor_other' category.
  1118. Note: for ndp frame, if it was expected because the
  1119. preceding NDPA was filter_pass, the setting
  1120. rxpcu_filter_pass will be used. This setting will also be
  1121. used for every ndp frame in case Promiscuous mode is
  1122. enabled.
  1123. In case promiscuous is not enabled, and an NDP is not
  1124. preceded by a NPDA filter pass frame, the only other setting
  1125. that could appear here for the NDP is rxpcu_monitor_other.
  1126. (rxpcu has a configuration bit specifically for this
  1127. scenario)
  1128. Note: for
  1129. <legal 0-2>
  1130. */
  1131. #define RX_MPDU_INFO_9_RXPCU_MPDU_FILTER_IN_CATEGORY_OFFSET 0x00000024
  1132. #define RX_MPDU_INFO_9_RXPCU_MPDU_FILTER_IN_CATEGORY_LSB 0
  1133. #define RX_MPDU_INFO_9_RXPCU_MPDU_FILTER_IN_CATEGORY_MASK 0x00000003
  1134. /* Description RX_MPDU_INFO_9_SW_FRAME_GROUP_ID
  1135. SW processes frames based on certain classifications.
  1136. This field indicates to what sw classification this MPDU is
  1137. mapped.
  1138. The classification is given in priority order
  1139. <enum 0 sw_frame_group_NDP_frame> Note: The
  1140. corresponding Rxpcu_Mpdu_filter_in_category can be
  1141. rxpcu_filter_pass or rxpcu_monitor_other
  1142. <enum 1 sw_frame_group_Multicast_data>
  1143. <enum 2 sw_frame_group_Unicast_data>
  1144. <enum 3 sw_frame_group_Null_data > This includes mpdus
  1145. of type Data Null as well as QoS Data Null
  1146. <enum 4 sw_frame_group_mgmt_0000 >
  1147. <enum 5 sw_frame_group_mgmt_0001 >
  1148. <enum 6 sw_frame_group_mgmt_0010 >
  1149. <enum 7 sw_frame_group_mgmt_0011 >
  1150. <enum 8 sw_frame_group_mgmt_0100 >
  1151. <enum 9 sw_frame_group_mgmt_0101 >
  1152. <enum 10 sw_frame_group_mgmt_0110 >
  1153. <enum 11 sw_frame_group_mgmt_0111 >
  1154. <enum 12 sw_frame_group_mgmt_1000 >
  1155. <enum 13 sw_frame_group_mgmt_1001 >
  1156. <enum 14 sw_frame_group_mgmt_1010 >
  1157. <enum 15 sw_frame_group_mgmt_1011 >
  1158. <enum 16 sw_frame_group_mgmt_1100 >
  1159. <enum 17 sw_frame_group_mgmt_1101 >
  1160. <enum 18 sw_frame_group_mgmt_1110 >
  1161. <enum 19 sw_frame_group_mgmt_1111 >
  1162. <enum 20 sw_frame_group_ctrl_0000 >
  1163. <enum 21 sw_frame_group_ctrl_0001 >
  1164. <enum 22 sw_frame_group_ctrl_0010 >
  1165. <enum 23 sw_frame_group_ctrl_0011 >
  1166. <enum 24 sw_frame_group_ctrl_0100 >
  1167. <enum 25 sw_frame_group_ctrl_0101 >
  1168. <enum 26 sw_frame_group_ctrl_0110 >
  1169. <enum 27 sw_frame_group_ctrl_0111 >
  1170. <enum 28 sw_frame_group_ctrl_1000 >
  1171. <enum 29 sw_frame_group_ctrl_1001 >
  1172. <enum 30 sw_frame_group_ctrl_1010 >
  1173. <enum 31 sw_frame_group_ctrl_1011 >
  1174. <enum 32 sw_frame_group_ctrl_1100 >
  1175. <enum 33 sw_frame_group_ctrl_1101 >
  1176. <enum 34 sw_frame_group_ctrl_1110 >
  1177. <enum 35 sw_frame_group_ctrl_1111 >
  1178. <enum 36 sw_frame_group_unsupported> This covers type 3
  1179. and protocol version != 0
  1180. Note: The corresponding Rxpcu_Mpdu_filter_in_category
  1181. can only be rxpcu_monitor_other
  1182. Note: The corresponding Rxpcu_Mpdu_filter_in_category
  1183. can be rxpcu_filter_pass
  1184. <legal 0-37>
  1185. */
  1186. #define RX_MPDU_INFO_9_SW_FRAME_GROUP_ID_OFFSET 0x00000024
  1187. #define RX_MPDU_INFO_9_SW_FRAME_GROUP_ID_LSB 2
  1188. #define RX_MPDU_INFO_9_SW_FRAME_GROUP_ID_MASK 0x000001fc
  1189. /* Description RX_MPDU_INFO_9_NDP_FRAME
  1190. When set, the received frame was an NDP frame, and thus
  1191. there will be no MPDU data.
  1192. <legal all>
  1193. */
  1194. #define RX_MPDU_INFO_9_NDP_FRAME_OFFSET 0x00000024
  1195. #define RX_MPDU_INFO_9_NDP_FRAME_LSB 9
  1196. #define RX_MPDU_INFO_9_NDP_FRAME_MASK 0x00000200
  1197. /* Description RX_MPDU_INFO_9_PHY_ERR
  1198. When set, a PHY error was received before MAC received
  1199. any data, and thus there will be no MPDU data.
  1200. <legal all>
  1201. */
  1202. #define RX_MPDU_INFO_9_PHY_ERR_OFFSET 0x00000024
  1203. #define RX_MPDU_INFO_9_PHY_ERR_LSB 10
  1204. #define RX_MPDU_INFO_9_PHY_ERR_MASK 0x00000400
  1205. /* Description RX_MPDU_INFO_9_PHY_ERR_DURING_MPDU_HEADER
  1206. When set, a PHY error was received before MAC received
  1207. the complete MPDU header which was needed for proper
  1208. decoding
  1209. <legal all>
  1210. */
  1211. #define RX_MPDU_INFO_9_PHY_ERR_DURING_MPDU_HEADER_OFFSET 0x00000024
  1212. #define RX_MPDU_INFO_9_PHY_ERR_DURING_MPDU_HEADER_LSB 11
  1213. #define RX_MPDU_INFO_9_PHY_ERR_DURING_MPDU_HEADER_MASK 0x00000800
  1214. /* Description RX_MPDU_INFO_9_PROTOCOL_VERSION_ERR
  1215. Set when RXPCU detected a version error in the Frame
  1216. control field
  1217. <legal all>
  1218. */
  1219. #define RX_MPDU_INFO_9_PROTOCOL_VERSION_ERR_OFFSET 0x00000024
  1220. #define RX_MPDU_INFO_9_PROTOCOL_VERSION_ERR_LSB 12
  1221. #define RX_MPDU_INFO_9_PROTOCOL_VERSION_ERR_MASK 0x00001000
  1222. /* Description RX_MPDU_INFO_9_AST_BASED_LOOKUP_VALID
  1223. When set, AST based lookup for this frame has found a
  1224. valid result.
  1225. Note that for NDP frame this will never be set
  1226. <legal all>
  1227. */
  1228. #define RX_MPDU_INFO_9_AST_BASED_LOOKUP_VALID_OFFSET 0x00000024
  1229. #define RX_MPDU_INFO_9_AST_BASED_LOOKUP_VALID_LSB 13
  1230. #define RX_MPDU_INFO_9_AST_BASED_LOOKUP_VALID_MASK 0x00002000
  1231. /* Description RX_MPDU_INFO_9_RESERVED_9A
  1232. <legal 0>
  1233. */
  1234. #define RX_MPDU_INFO_9_RESERVED_9A_OFFSET 0x00000024
  1235. #define RX_MPDU_INFO_9_RESERVED_9A_LSB 14
  1236. #define RX_MPDU_INFO_9_RESERVED_9A_MASK 0x0000c000
  1237. /* Description RX_MPDU_INFO_9_PHY_PPDU_ID
  1238. A ppdu counter value that PHY increments for every PPDU
  1239. received. The counter value wraps around
  1240. <legal all>
  1241. */
  1242. #define RX_MPDU_INFO_9_PHY_PPDU_ID_OFFSET 0x00000024
  1243. #define RX_MPDU_INFO_9_PHY_PPDU_ID_LSB 16
  1244. #define RX_MPDU_INFO_9_PHY_PPDU_ID_MASK 0xffff0000
  1245. /* Description RX_MPDU_INFO_10_AST_INDEX
  1246. This field indicates the index of the AST entry
  1247. corresponding to this MPDU. It is provided by the GSE module
  1248. instantiated in RXPCU.
  1249. A value of 0xFFFF indicates an invalid AST index,
  1250. meaning that No AST entry was found or NO AST search was
  1251. performed
  1252. In case of ndp or phy_err, this field will be set to
  1253. 0xFFFF
  1254. <legal all>
  1255. */
  1256. #define RX_MPDU_INFO_10_AST_INDEX_OFFSET 0x00000028
  1257. #define RX_MPDU_INFO_10_AST_INDEX_LSB 0
  1258. #define RX_MPDU_INFO_10_AST_INDEX_MASK 0x0000ffff
  1259. /* Description RX_MPDU_INFO_10_SW_PEER_ID
  1260. In case of ndp or phy_err or AST_based_lookup_valid ==
  1261. 0, this field will be set to 0
  1262. This field indicates a unique peer identifier. It is set
  1263. equal to field 'sw_peer_id' from the AST entry
  1264. <legal all>
  1265. */
  1266. #define RX_MPDU_INFO_10_SW_PEER_ID_OFFSET 0x00000028
  1267. #define RX_MPDU_INFO_10_SW_PEER_ID_LSB 16
  1268. #define RX_MPDU_INFO_10_SW_PEER_ID_MASK 0xffff0000
  1269. /* Description RX_MPDU_INFO_11_MPDU_FRAME_CONTROL_VALID
  1270. When set, the field Mpdu_Frame_control_field has valid
  1271. information
  1272. <legal all>
  1273. */
  1274. #define RX_MPDU_INFO_11_MPDU_FRAME_CONTROL_VALID_OFFSET 0x0000002c
  1275. #define RX_MPDU_INFO_11_MPDU_FRAME_CONTROL_VALID_LSB 0
  1276. #define RX_MPDU_INFO_11_MPDU_FRAME_CONTROL_VALID_MASK 0x00000001
  1277. /* Description RX_MPDU_INFO_11_MPDU_DURATION_VALID
  1278. When set, the field Mpdu_duration_field has valid
  1279. information
  1280. <legal all>
  1281. */
  1282. #define RX_MPDU_INFO_11_MPDU_DURATION_VALID_OFFSET 0x0000002c
  1283. #define RX_MPDU_INFO_11_MPDU_DURATION_VALID_LSB 1
  1284. #define RX_MPDU_INFO_11_MPDU_DURATION_VALID_MASK 0x00000002
  1285. /* Description RX_MPDU_INFO_11_MAC_ADDR_AD1_VALID
  1286. When set, the fields mac_addr_ad1_..... have valid
  1287. information
  1288. <legal all>
  1289. */
  1290. #define RX_MPDU_INFO_11_MAC_ADDR_AD1_VALID_OFFSET 0x0000002c
  1291. #define RX_MPDU_INFO_11_MAC_ADDR_AD1_VALID_LSB 2
  1292. #define RX_MPDU_INFO_11_MAC_ADDR_AD1_VALID_MASK 0x00000004
  1293. /* Description RX_MPDU_INFO_11_MAC_ADDR_AD2_VALID
  1294. When set, the fields mac_addr_ad2_..... have valid
  1295. information
  1296. <legal all>
  1297. */
  1298. #define RX_MPDU_INFO_11_MAC_ADDR_AD2_VALID_OFFSET 0x0000002c
  1299. #define RX_MPDU_INFO_11_MAC_ADDR_AD2_VALID_LSB 3
  1300. #define RX_MPDU_INFO_11_MAC_ADDR_AD2_VALID_MASK 0x00000008
  1301. /* Description RX_MPDU_INFO_11_MAC_ADDR_AD3_VALID
  1302. When set, the fields mac_addr_ad3_..... have valid
  1303. information
  1304. <legal all>
  1305. */
  1306. #define RX_MPDU_INFO_11_MAC_ADDR_AD3_VALID_OFFSET 0x0000002c
  1307. #define RX_MPDU_INFO_11_MAC_ADDR_AD3_VALID_LSB 4
  1308. #define RX_MPDU_INFO_11_MAC_ADDR_AD3_VALID_MASK 0x00000010
  1309. /* Description RX_MPDU_INFO_11_MAC_ADDR_AD4_VALID
  1310. When set, the fields mac_addr_ad4_..... have valid
  1311. information
  1312. <legal all>
  1313. */
  1314. #define RX_MPDU_INFO_11_MAC_ADDR_AD4_VALID_OFFSET 0x0000002c
  1315. #define RX_MPDU_INFO_11_MAC_ADDR_AD4_VALID_LSB 5
  1316. #define RX_MPDU_INFO_11_MAC_ADDR_AD4_VALID_MASK 0x00000020
  1317. /* Description RX_MPDU_INFO_11_MPDU_SEQUENCE_CONTROL_VALID
  1318. When set, the fields mpdu_sequence_control_field and
  1319. mpdu_sequence_number have valid information as well as field
  1320. For MPDUs without a sequence control field, this field
  1321. will not be set.
  1322. <legal all>
  1323. */
  1324. #define RX_MPDU_INFO_11_MPDU_SEQUENCE_CONTROL_VALID_OFFSET 0x0000002c
  1325. #define RX_MPDU_INFO_11_MPDU_SEQUENCE_CONTROL_VALID_LSB 6
  1326. #define RX_MPDU_INFO_11_MPDU_SEQUENCE_CONTROL_VALID_MASK 0x00000040
  1327. /* Description RX_MPDU_INFO_11_MPDU_QOS_CONTROL_VALID
  1328. When set, the field mpdu_qos_control_field has valid
  1329. information
  1330. For MPDUs without a QoS control field, this field will
  1331. not be set.
  1332. <legal all>
  1333. */
  1334. #define RX_MPDU_INFO_11_MPDU_QOS_CONTROL_VALID_OFFSET 0x0000002c
  1335. #define RX_MPDU_INFO_11_MPDU_QOS_CONTROL_VALID_LSB 7
  1336. #define RX_MPDU_INFO_11_MPDU_QOS_CONTROL_VALID_MASK 0x00000080
  1337. /* Description RX_MPDU_INFO_11_MPDU_HT_CONTROL_VALID
  1338. When set, the field mpdu_HT_control_field has valid
  1339. information
  1340. For MPDUs without a HT control field, this field will
  1341. not be set.
  1342. <legal all>
  1343. */
  1344. #define RX_MPDU_INFO_11_MPDU_HT_CONTROL_VALID_OFFSET 0x0000002c
  1345. #define RX_MPDU_INFO_11_MPDU_HT_CONTROL_VALID_LSB 8
  1346. #define RX_MPDU_INFO_11_MPDU_HT_CONTROL_VALID_MASK 0x00000100
  1347. /* Description RX_MPDU_INFO_11_FRAME_ENCRYPTION_INFO_VALID
  1348. When set, the encryption related info fields, like IV
  1349. and PN are valid
  1350. For MPDUs that are not encrypted, this will not be set.
  1351. <legal all>
  1352. */
  1353. #define RX_MPDU_INFO_11_FRAME_ENCRYPTION_INFO_VALID_OFFSET 0x0000002c
  1354. #define RX_MPDU_INFO_11_FRAME_ENCRYPTION_INFO_VALID_LSB 9
  1355. #define RX_MPDU_INFO_11_FRAME_ENCRYPTION_INFO_VALID_MASK 0x00000200
  1356. /* Description RX_MPDU_INFO_11_MPDU_FRAGMENT_NUMBER
  1357. Field only valid when Mpdu_sequence_control_valid is set
  1358. AND Fragment_flag is set
  1359. The fragment number from the 802.11 header
  1360. <legal all>
  1361. */
  1362. #define RX_MPDU_INFO_11_MPDU_FRAGMENT_NUMBER_OFFSET 0x0000002c
  1363. #define RX_MPDU_INFO_11_MPDU_FRAGMENT_NUMBER_LSB 10
  1364. #define RX_MPDU_INFO_11_MPDU_FRAGMENT_NUMBER_MASK 0x00003c00
  1365. /* Description RX_MPDU_INFO_11_MORE_FRAGMENT_FLAG
  1366. The More Fragment bit setting from the MPDU header of
  1367. the received frame
  1368. <legal all>
  1369. */
  1370. #define RX_MPDU_INFO_11_MORE_FRAGMENT_FLAG_OFFSET 0x0000002c
  1371. #define RX_MPDU_INFO_11_MORE_FRAGMENT_FLAG_LSB 14
  1372. #define RX_MPDU_INFO_11_MORE_FRAGMENT_FLAG_MASK 0x00004000
  1373. /* Description RX_MPDU_INFO_11_RESERVED_11A
  1374. <legal 0>
  1375. */
  1376. #define RX_MPDU_INFO_11_RESERVED_11A_OFFSET 0x0000002c
  1377. #define RX_MPDU_INFO_11_RESERVED_11A_LSB 15
  1378. #define RX_MPDU_INFO_11_RESERVED_11A_MASK 0x00008000
  1379. /* Description RX_MPDU_INFO_11_FR_DS
  1380. Field only valid when Mpdu_frame_control_valid is set
  1381. Set if the from DS bit is set in the frame control.
  1382. <legal all>
  1383. */
  1384. #define RX_MPDU_INFO_11_FR_DS_OFFSET 0x0000002c
  1385. #define RX_MPDU_INFO_11_FR_DS_LSB 16
  1386. #define RX_MPDU_INFO_11_FR_DS_MASK 0x00010000
  1387. /* Description RX_MPDU_INFO_11_TO_DS
  1388. Field only valid when Mpdu_frame_control_valid is set
  1389. Set if the to DS bit is set in the frame control.
  1390. <legal all>
  1391. */
  1392. #define RX_MPDU_INFO_11_TO_DS_OFFSET 0x0000002c
  1393. #define RX_MPDU_INFO_11_TO_DS_LSB 17
  1394. #define RX_MPDU_INFO_11_TO_DS_MASK 0x00020000
  1395. /* Description RX_MPDU_INFO_11_ENCRYPTED
  1396. Field only valid when Mpdu_frame_control_valid is set.
  1397. Protected bit from the frame control.
  1398. <legal all>
  1399. */
  1400. #define RX_MPDU_INFO_11_ENCRYPTED_OFFSET 0x0000002c
  1401. #define RX_MPDU_INFO_11_ENCRYPTED_LSB 18
  1402. #define RX_MPDU_INFO_11_ENCRYPTED_MASK 0x00040000
  1403. /* Description RX_MPDU_INFO_11_MPDU_RETRY
  1404. Field only valid when Mpdu_frame_control_valid is set.
  1405. Retry bit from the frame control. Only valid when
  1406. first_msdu is set.
  1407. <legal all>
  1408. */
  1409. #define RX_MPDU_INFO_11_MPDU_RETRY_OFFSET 0x0000002c
  1410. #define RX_MPDU_INFO_11_MPDU_RETRY_LSB 19
  1411. #define RX_MPDU_INFO_11_MPDU_RETRY_MASK 0x00080000
  1412. /* Description RX_MPDU_INFO_11_MPDU_SEQUENCE_NUMBER
  1413. Field only valid when Mpdu_sequence_control_valid is
  1414. set.
  1415. The sequence number from the 802.11 header.
  1416. <legal all>
  1417. */
  1418. #define RX_MPDU_INFO_11_MPDU_SEQUENCE_NUMBER_OFFSET 0x0000002c
  1419. #define RX_MPDU_INFO_11_MPDU_SEQUENCE_NUMBER_LSB 20
  1420. #define RX_MPDU_INFO_11_MPDU_SEQUENCE_NUMBER_MASK 0xfff00000
  1421. /* Description RX_MPDU_INFO_12_KEY_ID_OCTET
  1422. The key ID octet from the IV.
  1423. In case of ndp or phy_err or AST_based_lookup_valid ==
  1424. 0, this field will be set to 0
  1425. <legal all>
  1426. */
  1427. #define RX_MPDU_INFO_12_KEY_ID_OCTET_OFFSET 0x00000030
  1428. #define RX_MPDU_INFO_12_KEY_ID_OCTET_LSB 0
  1429. #define RX_MPDU_INFO_12_KEY_ID_OCTET_MASK 0x000000ff
  1430. /* Description RX_MPDU_INFO_12_NEW_PEER_ENTRY
  1431. In case of ndp or phy_err or AST_based_lookup_valid ==
  1432. 0, this field will be set to 0
  1433. Set if new RX_PEER_ENTRY TLV follows. If clear,
  1434. RX_PEER_ENTRY doesn't follow so RX DECRYPTION module either
  1435. uses old peer entry or not decrypt.
  1436. <legal all>
  1437. */
  1438. #define RX_MPDU_INFO_12_NEW_PEER_ENTRY_OFFSET 0x00000030
  1439. #define RX_MPDU_INFO_12_NEW_PEER_ENTRY_LSB 8
  1440. #define RX_MPDU_INFO_12_NEW_PEER_ENTRY_MASK 0x00000100
  1441. /* Description RX_MPDU_INFO_12_DECRYPT_NEEDED
  1442. In case of ndp or phy_err or AST_based_lookup_valid ==
  1443. 0, this field will be set to 0
  1444. Set if decryption is needed.
  1445. Note:
  1446. When RXPCU sets bit 'ast_index_not_found' and/or
  1447. ast_index_timeout', RXPCU will also ensure that this bit is
  1448. NOT set
  1449. CRYPTO for that reason only needs to evaluate this bit
  1450. and non of the other ones.
  1451. <legal all>
  1452. */
  1453. #define RX_MPDU_INFO_12_DECRYPT_NEEDED_OFFSET 0x00000030
  1454. #define RX_MPDU_INFO_12_DECRYPT_NEEDED_LSB 9
  1455. #define RX_MPDU_INFO_12_DECRYPT_NEEDED_MASK 0x00000200
  1456. /* Description RX_MPDU_INFO_12_DECAP_TYPE
  1457. In case of ndp or phy_err or AST_based_lookup_valid ==
  1458. 0, this field will be set to 0
  1459. Used by the OLE during decapsulation.
  1460. Indicates the decapsulation that HW will perform:
  1461. <enum 0 RAW> No encapsulation
  1462. <enum 1 Native_WiFi>
  1463. <enum 2 Ethernet> Ethernet 2 (DIX) or 802.3 (uses
  1464. SNAP/LLC)
  1465. <enum 3 802_3> Indicate Ethernet
  1466. <legal all>
  1467. */
  1468. #define RX_MPDU_INFO_12_DECAP_TYPE_OFFSET 0x00000030
  1469. #define RX_MPDU_INFO_12_DECAP_TYPE_LSB 10
  1470. #define RX_MPDU_INFO_12_DECAP_TYPE_MASK 0x00000c00
  1471. /* Description RX_MPDU_INFO_12_RX_INSERT_VLAN_C_TAG_PADDING
  1472. In case of ndp or phy_err or AST_based_lookup_valid ==
  1473. 0, this field will be set to 0
  1474. Insert 4 byte of all zeros as VLAN tag if the rx payload
  1475. does not have VLAN. Used during decapsulation.
  1476. <legal all>
  1477. */
  1478. #define RX_MPDU_INFO_12_RX_INSERT_VLAN_C_TAG_PADDING_OFFSET 0x00000030
  1479. #define RX_MPDU_INFO_12_RX_INSERT_VLAN_C_TAG_PADDING_LSB 12
  1480. #define RX_MPDU_INFO_12_RX_INSERT_VLAN_C_TAG_PADDING_MASK 0x00001000
  1481. /* Description RX_MPDU_INFO_12_RX_INSERT_VLAN_S_TAG_PADDING
  1482. In case of ndp or phy_err or AST_based_lookup_valid ==
  1483. 0, this field will be set to 0
  1484. Insert 4 byte of all zeros as double VLAN tag if the rx
  1485. payload does not have VLAN. Used during
  1486. <legal all>
  1487. */
  1488. #define RX_MPDU_INFO_12_RX_INSERT_VLAN_S_TAG_PADDING_OFFSET 0x00000030
  1489. #define RX_MPDU_INFO_12_RX_INSERT_VLAN_S_TAG_PADDING_LSB 13
  1490. #define RX_MPDU_INFO_12_RX_INSERT_VLAN_S_TAG_PADDING_MASK 0x00002000
  1491. /* Description RX_MPDU_INFO_12_STRIP_VLAN_C_TAG_DECAP
  1492. In case of ndp or phy_err or AST_based_lookup_valid ==
  1493. 0, this field will be set to 0
  1494. Strip the VLAN during decapsulation.  Used by the OLE.
  1495. <legal all>
  1496. */
  1497. #define RX_MPDU_INFO_12_STRIP_VLAN_C_TAG_DECAP_OFFSET 0x00000030
  1498. #define RX_MPDU_INFO_12_STRIP_VLAN_C_TAG_DECAP_LSB 14
  1499. #define RX_MPDU_INFO_12_STRIP_VLAN_C_TAG_DECAP_MASK 0x00004000
  1500. /* Description RX_MPDU_INFO_12_STRIP_VLAN_S_TAG_DECAP
  1501. In case of ndp or phy_err or AST_based_lookup_valid ==
  1502. 0, this field will be set to 0
  1503. Strip the double VLAN during decapsulation.  Used by
  1504. the OLE.
  1505. <legal all>
  1506. */
  1507. #define RX_MPDU_INFO_12_STRIP_VLAN_S_TAG_DECAP_OFFSET 0x00000030
  1508. #define RX_MPDU_INFO_12_STRIP_VLAN_S_TAG_DECAP_LSB 15
  1509. #define RX_MPDU_INFO_12_STRIP_VLAN_S_TAG_DECAP_MASK 0x00008000
  1510. /* Description RX_MPDU_INFO_12_PRE_DELIM_COUNT
  1511. The number of delimiters before this MPDU.
  1512. Note that this number is cleared at PPDU start.
  1513. If this MPDU is the first received MPDU in the PPDU and
  1514. this MPDU gets filtered-in, this field will indicate the
  1515. number of delimiters located after the last MPDU in the
  1516. previous PPDU.
  1517. If this MPDU is located after the first received MPDU in
  1518. an PPDU, this field will indicate the number of delimiters
  1519. located between the previous MPDU and this MPDU.
  1520. In case of ndp or phy_err, this field will indicate the
  1521. number of delimiters located after the last MPDU in the
  1522. previous PPDU.
  1523. <legal all>
  1524. */
  1525. #define RX_MPDU_INFO_12_PRE_DELIM_COUNT_OFFSET 0x00000030
  1526. #define RX_MPDU_INFO_12_PRE_DELIM_COUNT_LSB 16
  1527. #define RX_MPDU_INFO_12_PRE_DELIM_COUNT_MASK 0x0fff0000
  1528. /* Description RX_MPDU_INFO_12_AMPDU_FLAG
  1529. When set, received frame was part of an A-MPDU.
  1530. <legal all>
  1531. */
  1532. #define RX_MPDU_INFO_12_AMPDU_FLAG_OFFSET 0x00000030
  1533. #define RX_MPDU_INFO_12_AMPDU_FLAG_LSB 28
  1534. #define RX_MPDU_INFO_12_AMPDU_FLAG_MASK 0x10000000
  1535. /* Description RX_MPDU_INFO_12_BAR_FRAME
  1536. In case of ndp or phy_err or AST_based_lookup_valid ==
  1537. 0, this field will be set to 0
  1538. When set, received frame is a BAR frame
  1539. <legal all>
  1540. */
  1541. #define RX_MPDU_INFO_12_BAR_FRAME_OFFSET 0x00000030
  1542. #define RX_MPDU_INFO_12_BAR_FRAME_LSB 29
  1543. #define RX_MPDU_INFO_12_BAR_FRAME_MASK 0x20000000
  1544. /* Description RX_MPDU_INFO_12_RAW_MPDU
  1545. Consumer: SW
  1546. Producer: RXOLE
  1547. RXPCU sets this field to 0 and RXOLE overwrites it.
  1548. Set to 1 by RXOLE when it has not performed any 802.11
  1549. to Ethernet/Natvie WiFi header conversion on this MPDU.
  1550. <legal all>
  1551. */
  1552. #define RX_MPDU_INFO_12_RAW_MPDU_OFFSET 0x00000030
  1553. #define RX_MPDU_INFO_12_RAW_MPDU_LSB 30
  1554. #define RX_MPDU_INFO_12_RAW_MPDU_MASK 0x40000000
  1555. /* Description RX_MPDU_INFO_12_RESERVED_12
  1556. <legal 0>
  1557. */
  1558. #define RX_MPDU_INFO_12_RESERVED_12_OFFSET 0x00000030
  1559. #define RX_MPDU_INFO_12_RESERVED_12_LSB 31
  1560. #define RX_MPDU_INFO_12_RESERVED_12_MASK 0x80000000
  1561. /* Description RX_MPDU_INFO_13_MPDU_LENGTH
  1562. In case of ndp or phy_err this field will be set to 0
  1563. MPDU length before decapsulation.
  1564. <legal all>
  1565. */
  1566. #define RX_MPDU_INFO_13_MPDU_LENGTH_OFFSET 0x00000034
  1567. #define RX_MPDU_INFO_13_MPDU_LENGTH_LSB 0
  1568. #define RX_MPDU_INFO_13_MPDU_LENGTH_MASK 0x00003fff
  1569. /* Description RX_MPDU_INFO_13_FIRST_MPDU
  1570. See definition in RX attention descriptor
  1571. In case of ndp or phy_err, this field will be set. Note
  1572. however that there will not actually be any data contents in
  1573. the MPDU.
  1574. <legal all>
  1575. */
  1576. #define RX_MPDU_INFO_13_FIRST_MPDU_OFFSET 0x00000034
  1577. #define RX_MPDU_INFO_13_FIRST_MPDU_LSB 14
  1578. #define RX_MPDU_INFO_13_FIRST_MPDU_MASK 0x00004000
  1579. /* Description RX_MPDU_INFO_13_MCAST_BCAST
  1580. In case of ndp or phy_err or Phy_err_during_mpdu_header
  1581. this field will be set to 0
  1582. See definition in RX attention descriptor
  1583. <legal all>
  1584. */
  1585. #define RX_MPDU_INFO_13_MCAST_BCAST_OFFSET 0x00000034
  1586. #define RX_MPDU_INFO_13_MCAST_BCAST_LSB 15
  1587. #define RX_MPDU_INFO_13_MCAST_BCAST_MASK 0x00008000
  1588. /* Description RX_MPDU_INFO_13_AST_INDEX_NOT_FOUND
  1589. In case of ndp or phy_err or Phy_err_during_mpdu_header
  1590. this field will be set to 0
  1591. See definition in RX attention descriptor
  1592. <legal all>
  1593. */
  1594. #define RX_MPDU_INFO_13_AST_INDEX_NOT_FOUND_OFFSET 0x00000034
  1595. #define RX_MPDU_INFO_13_AST_INDEX_NOT_FOUND_LSB 16
  1596. #define RX_MPDU_INFO_13_AST_INDEX_NOT_FOUND_MASK 0x00010000
  1597. /* Description RX_MPDU_INFO_13_AST_INDEX_TIMEOUT
  1598. In case of ndp or phy_err or Phy_err_during_mpdu_header
  1599. this field will be set to 0
  1600. See definition in RX attention descriptor
  1601. <legal all>
  1602. */
  1603. #define RX_MPDU_INFO_13_AST_INDEX_TIMEOUT_OFFSET 0x00000034
  1604. #define RX_MPDU_INFO_13_AST_INDEX_TIMEOUT_LSB 17
  1605. #define RX_MPDU_INFO_13_AST_INDEX_TIMEOUT_MASK 0x00020000
  1606. /* Description RX_MPDU_INFO_13_POWER_MGMT
  1607. In case of ndp or phy_err or Phy_err_during_mpdu_header
  1608. this field will be set to 0
  1609. See definition in RX attention descriptor
  1610. <legal all>
  1611. */
  1612. #define RX_MPDU_INFO_13_POWER_MGMT_OFFSET 0x00000034
  1613. #define RX_MPDU_INFO_13_POWER_MGMT_LSB 18
  1614. #define RX_MPDU_INFO_13_POWER_MGMT_MASK 0x00040000
  1615. /* Description RX_MPDU_INFO_13_NON_QOS
  1616. In case of ndp or phy_err or Phy_err_during_mpdu_header
  1617. this field will be set to 1
  1618. See definition in RX attention descriptor
  1619. <legal all>
  1620. */
  1621. #define RX_MPDU_INFO_13_NON_QOS_OFFSET 0x00000034
  1622. #define RX_MPDU_INFO_13_NON_QOS_LSB 19
  1623. #define RX_MPDU_INFO_13_NON_QOS_MASK 0x00080000
  1624. /* Description RX_MPDU_INFO_13_NULL_DATA
  1625. In case of ndp or phy_err or Phy_err_during_mpdu_header
  1626. this field will be set to 0
  1627. See definition in RX attention descriptor
  1628. <legal all>
  1629. */
  1630. #define RX_MPDU_INFO_13_NULL_DATA_OFFSET 0x00000034
  1631. #define RX_MPDU_INFO_13_NULL_DATA_LSB 20
  1632. #define RX_MPDU_INFO_13_NULL_DATA_MASK 0x00100000
  1633. /* Description RX_MPDU_INFO_13_MGMT_TYPE
  1634. In case of ndp or phy_err or Phy_err_during_mpdu_header
  1635. this field will be set to 0
  1636. See definition in RX attention descriptor
  1637. <legal all>
  1638. */
  1639. #define RX_MPDU_INFO_13_MGMT_TYPE_OFFSET 0x00000034
  1640. #define RX_MPDU_INFO_13_MGMT_TYPE_LSB 21
  1641. #define RX_MPDU_INFO_13_MGMT_TYPE_MASK 0x00200000
  1642. /* Description RX_MPDU_INFO_13_CTRL_TYPE
  1643. In case of ndp or phy_err or Phy_err_during_mpdu_header
  1644. this field will be set to 0
  1645. See definition in RX attention descriptor
  1646. <legal all>
  1647. */
  1648. #define RX_MPDU_INFO_13_CTRL_TYPE_OFFSET 0x00000034
  1649. #define RX_MPDU_INFO_13_CTRL_TYPE_LSB 22
  1650. #define RX_MPDU_INFO_13_CTRL_TYPE_MASK 0x00400000
  1651. /* Description RX_MPDU_INFO_13_MORE_DATA
  1652. In case of ndp or phy_err or Phy_err_during_mpdu_header
  1653. this field will be set to 0
  1654. See definition in RX attention descriptor
  1655. <legal all>
  1656. */
  1657. #define RX_MPDU_INFO_13_MORE_DATA_OFFSET 0x00000034
  1658. #define RX_MPDU_INFO_13_MORE_DATA_LSB 23
  1659. #define RX_MPDU_INFO_13_MORE_DATA_MASK 0x00800000
  1660. /* Description RX_MPDU_INFO_13_EOSP
  1661. In case of ndp or phy_err or Phy_err_during_mpdu_header
  1662. this field will be set to 0
  1663. See definition in RX attention descriptor
  1664. <legal all>
  1665. */
  1666. #define RX_MPDU_INFO_13_EOSP_OFFSET 0x00000034
  1667. #define RX_MPDU_INFO_13_EOSP_LSB 24
  1668. #define RX_MPDU_INFO_13_EOSP_MASK 0x01000000
  1669. /* Description RX_MPDU_INFO_13_FRAGMENT_FLAG
  1670. In case of ndp or phy_err or Phy_err_during_mpdu_header
  1671. this field will be set to 0
  1672. See definition in RX attention descriptor
  1673. <legal all>
  1674. */
  1675. #define RX_MPDU_INFO_13_FRAGMENT_FLAG_OFFSET 0x00000034
  1676. #define RX_MPDU_INFO_13_FRAGMENT_FLAG_LSB 25
  1677. #define RX_MPDU_INFO_13_FRAGMENT_FLAG_MASK 0x02000000
  1678. /* Description RX_MPDU_INFO_13_ORDER
  1679. In case of ndp or phy_err or Phy_err_during_mpdu_header
  1680. this field will be set to 0
  1681. See definition in RX attention descriptor
  1682. <legal all>
  1683. */
  1684. #define RX_MPDU_INFO_13_ORDER_OFFSET 0x00000034
  1685. #define RX_MPDU_INFO_13_ORDER_LSB 26
  1686. #define RX_MPDU_INFO_13_ORDER_MASK 0x04000000
  1687. /* Description RX_MPDU_INFO_13_U_APSD_TRIGGER
  1688. In case of ndp or phy_err or Phy_err_during_mpdu_header
  1689. this field will be set to 0
  1690. See definition in RX attention descriptor
  1691. <legal all>
  1692. */
  1693. #define RX_MPDU_INFO_13_U_APSD_TRIGGER_OFFSET 0x00000034
  1694. #define RX_MPDU_INFO_13_U_APSD_TRIGGER_LSB 27
  1695. #define RX_MPDU_INFO_13_U_APSD_TRIGGER_MASK 0x08000000
  1696. /* Description RX_MPDU_INFO_13_ENCRYPT_REQUIRED
  1697. In case of ndp or phy_err or Phy_err_during_mpdu_header
  1698. this field will be set to 0
  1699. See definition in RX attention descriptor
  1700. <legal all>
  1701. */
  1702. #define RX_MPDU_INFO_13_ENCRYPT_REQUIRED_OFFSET 0x00000034
  1703. #define RX_MPDU_INFO_13_ENCRYPT_REQUIRED_LSB 28
  1704. #define RX_MPDU_INFO_13_ENCRYPT_REQUIRED_MASK 0x10000000
  1705. /* Description RX_MPDU_INFO_13_DIRECTED
  1706. In case of ndp or phy_err or Phy_err_during_mpdu_header
  1707. this field will be set to 0
  1708. See definition in RX attention descriptor
  1709. <legal all>
  1710. */
  1711. #define RX_MPDU_INFO_13_DIRECTED_OFFSET 0x00000034
  1712. #define RX_MPDU_INFO_13_DIRECTED_LSB 29
  1713. #define RX_MPDU_INFO_13_DIRECTED_MASK 0x20000000
  1714. /* Description RX_MPDU_INFO_13_AMSDU_PRESENT
  1715. Field only valid when Mpdu_qos_control_valid is set
  1716. The 'amsdu_present' bit within the QoS control field of
  1717. the MPDU
  1718. <legal all>
  1719. */
  1720. #define RX_MPDU_INFO_13_AMSDU_PRESENT_OFFSET 0x00000034
  1721. #define RX_MPDU_INFO_13_AMSDU_PRESENT_LSB 30
  1722. #define RX_MPDU_INFO_13_AMSDU_PRESENT_MASK 0x40000000
  1723. /* Description RX_MPDU_INFO_13_RESERVED_13
  1724. <legal 0>
  1725. */
  1726. #define RX_MPDU_INFO_13_RESERVED_13_OFFSET 0x00000034
  1727. #define RX_MPDU_INFO_13_RESERVED_13_LSB 31
  1728. #define RX_MPDU_INFO_13_RESERVED_13_MASK 0x80000000
  1729. /* Description RX_MPDU_INFO_14_MPDU_FRAME_CONTROL_FIELD
  1730. Field only valid when Mpdu_frame_control_valid is set
  1731. The frame control field of this received MPDU.
  1732. Field only valid when Ndp_frame and phy_err are NOT set
  1733. Bytes 0 + 1 of the received MPDU
  1734. <legal all>
  1735. */
  1736. #define RX_MPDU_INFO_14_MPDU_FRAME_CONTROL_FIELD_OFFSET 0x00000038
  1737. #define RX_MPDU_INFO_14_MPDU_FRAME_CONTROL_FIELD_LSB 0
  1738. #define RX_MPDU_INFO_14_MPDU_FRAME_CONTROL_FIELD_MASK 0x0000ffff
  1739. /* Description RX_MPDU_INFO_14_MPDU_DURATION_FIELD
  1740. Field only valid when Mpdu_duration_valid is set
  1741. The duration field of this received MPDU.
  1742. <legal all>
  1743. */
  1744. #define RX_MPDU_INFO_14_MPDU_DURATION_FIELD_OFFSET 0x00000038
  1745. #define RX_MPDU_INFO_14_MPDU_DURATION_FIELD_LSB 16
  1746. #define RX_MPDU_INFO_14_MPDU_DURATION_FIELD_MASK 0xffff0000
  1747. /* Description RX_MPDU_INFO_15_MAC_ADDR_AD1_31_0
  1748. Field only valid when mac_addr_ad1_valid is set
  1749. The Least Significant 4 bytes of the Received Frames MAC
  1750. Address AD1
  1751. <legal all>
  1752. */
  1753. #define RX_MPDU_INFO_15_MAC_ADDR_AD1_31_0_OFFSET 0x0000003c
  1754. #define RX_MPDU_INFO_15_MAC_ADDR_AD1_31_0_LSB 0
  1755. #define RX_MPDU_INFO_15_MAC_ADDR_AD1_31_0_MASK 0xffffffff
  1756. /* Description RX_MPDU_INFO_16_MAC_ADDR_AD1_47_32
  1757. Field only valid when mac_addr_ad1_valid is set
  1758. The 2 most significant bytes of the Received Frames MAC
  1759. Address AD1
  1760. <legal all>
  1761. */
  1762. #define RX_MPDU_INFO_16_MAC_ADDR_AD1_47_32_OFFSET 0x00000040
  1763. #define RX_MPDU_INFO_16_MAC_ADDR_AD1_47_32_LSB 0
  1764. #define RX_MPDU_INFO_16_MAC_ADDR_AD1_47_32_MASK 0x0000ffff
  1765. /* Description RX_MPDU_INFO_16_MAC_ADDR_AD2_15_0
  1766. Field only valid when mac_addr_ad2_valid is set
  1767. The Least Significant 2 bytes of the Received Frames MAC
  1768. Address AD2
  1769. <legal all>
  1770. */
  1771. #define RX_MPDU_INFO_16_MAC_ADDR_AD2_15_0_OFFSET 0x00000040
  1772. #define RX_MPDU_INFO_16_MAC_ADDR_AD2_15_0_LSB 16
  1773. #define RX_MPDU_INFO_16_MAC_ADDR_AD2_15_0_MASK 0xffff0000
  1774. /* Description RX_MPDU_INFO_17_MAC_ADDR_AD2_47_16
  1775. Field only valid when mac_addr_ad2_valid is set
  1776. The 4 most significant bytes of the Received Frames MAC
  1777. Address AD2
  1778. <legal all>
  1779. */
  1780. #define RX_MPDU_INFO_17_MAC_ADDR_AD2_47_16_OFFSET 0x00000044
  1781. #define RX_MPDU_INFO_17_MAC_ADDR_AD2_47_16_LSB 0
  1782. #define RX_MPDU_INFO_17_MAC_ADDR_AD2_47_16_MASK 0xffffffff
  1783. /* Description RX_MPDU_INFO_18_MAC_ADDR_AD3_31_0
  1784. Field only valid when mac_addr_ad3_valid is set
  1785. The Least Significant 4 bytes of the Received Frames MAC
  1786. Address AD3
  1787. <legal all>
  1788. */
  1789. #define RX_MPDU_INFO_18_MAC_ADDR_AD3_31_0_OFFSET 0x00000048
  1790. #define RX_MPDU_INFO_18_MAC_ADDR_AD3_31_0_LSB 0
  1791. #define RX_MPDU_INFO_18_MAC_ADDR_AD3_31_0_MASK 0xffffffff
  1792. /* Description RX_MPDU_INFO_19_MAC_ADDR_AD3_47_32
  1793. Field only valid when mac_addr_ad3_valid is set
  1794. The 2 most significant bytes of the Received Frames MAC
  1795. Address AD3
  1796. <legal all>
  1797. */
  1798. #define RX_MPDU_INFO_19_MAC_ADDR_AD3_47_32_OFFSET 0x0000004c
  1799. #define RX_MPDU_INFO_19_MAC_ADDR_AD3_47_32_LSB 0
  1800. #define RX_MPDU_INFO_19_MAC_ADDR_AD3_47_32_MASK 0x0000ffff
  1801. /* Description RX_MPDU_INFO_19_MPDU_SEQUENCE_CONTROL_FIELD
  1802. The sequence control field of the MPDU
  1803. <legal all>
  1804. */
  1805. #define RX_MPDU_INFO_19_MPDU_SEQUENCE_CONTROL_FIELD_OFFSET 0x0000004c
  1806. #define RX_MPDU_INFO_19_MPDU_SEQUENCE_CONTROL_FIELD_LSB 16
  1807. #define RX_MPDU_INFO_19_MPDU_SEQUENCE_CONTROL_FIELD_MASK 0xffff0000
  1808. /* Description RX_MPDU_INFO_20_MAC_ADDR_AD4_31_0
  1809. Field only valid when mac_addr_ad4_valid is set
  1810. The Least Significant 4 bytes of the Received Frames MAC
  1811. Address AD4
  1812. <legal all>
  1813. */
  1814. #define RX_MPDU_INFO_20_MAC_ADDR_AD4_31_0_OFFSET 0x00000050
  1815. #define RX_MPDU_INFO_20_MAC_ADDR_AD4_31_0_LSB 0
  1816. #define RX_MPDU_INFO_20_MAC_ADDR_AD4_31_0_MASK 0xffffffff
  1817. /* Description RX_MPDU_INFO_21_MAC_ADDR_AD4_47_32
  1818. Field only valid when mac_addr_ad4_valid is set
  1819. The 2 most significant bytes of the Received Frames MAC
  1820. Address AD4
  1821. <legal all>
  1822. */
  1823. #define RX_MPDU_INFO_21_MAC_ADDR_AD4_47_32_OFFSET 0x00000054
  1824. #define RX_MPDU_INFO_21_MAC_ADDR_AD4_47_32_LSB 0
  1825. #define RX_MPDU_INFO_21_MAC_ADDR_AD4_47_32_MASK 0x0000ffff
  1826. /* Description RX_MPDU_INFO_21_MPDU_QOS_CONTROL_FIELD
  1827. Field only valid when mpdu_qos_control_valid is set
  1828. The sequence control field of the MPDU
  1829. <legal all>
  1830. */
  1831. #define RX_MPDU_INFO_21_MPDU_QOS_CONTROL_FIELD_OFFSET 0x00000054
  1832. #define RX_MPDU_INFO_21_MPDU_QOS_CONTROL_FIELD_LSB 16
  1833. #define RX_MPDU_INFO_21_MPDU_QOS_CONTROL_FIELD_MASK 0xffff0000
  1834. /* Description RX_MPDU_INFO_22_MPDU_HT_CONTROL_FIELD
  1835. Field only valid when mpdu_qos_control_valid is set
  1836. The HT control field of the MPDU
  1837. <legal all>
  1838. */
  1839. #define RX_MPDU_INFO_22_MPDU_HT_CONTROL_FIELD_OFFSET 0x00000058
  1840. #define RX_MPDU_INFO_22_MPDU_HT_CONTROL_FIELD_LSB 0
  1841. #define RX_MPDU_INFO_22_MPDU_HT_CONTROL_FIELD_MASK 0xffffffff
  1842. #endif // _RX_MPDU_INFO_H_