rx_mpdu_info.h 83 KB

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