rx_mpdu_info.h 87 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517151815191520152115221523152415251526152715281529153015311532153315341535153615371538153915401541154215431544154515461547154815491550155115521553155415551556155715581559156015611562156315641565156615671568156915701571157215731574157515761577157815791580158115821583158415851586158715881589159015911592159315941595159615971598159916001601160216031604160516061607160816091610161116121613161416151616161716181619162016211622162316241625162616271628162916301631163216331634163516361637163816391640164116421643164416451646164716481649165016511652165316541655165616571658165916601661166216631664166516661667166816691670167116721673167416751676167716781679168016811682168316841685168616871688168916901691169216931694169516961697169816991700170117021703170417051706170717081709171017111712171317141715171617171718171917201721172217231724172517261727172817291730173117321733173417351736173717381739174017411742174317441745174617471748174917501751175217531754175517561757175817591760176117621763176417651766176717681769177017711772177317741775177617771778177917801781178217831784178517861787178817891790179117921793179417951796179717981799180018011802180318041805180618071808180918101811181218131814181518161817181818191820182118221823182418251826182718281829183018311832183318341835183618371838183918401841184218431844184518461847184818491850185118521853185418551856185718581859186018611862186318641865186618671868186918701871187218731874187518761877187818791880188118821883188418851886188718881889189018911892189318941895189618971898189919001901190219031904190519061907190819091910191119121913191419151916191719181919192019211922192319241925192619271928192919301931193219331934193519361937193819391940194119421943194419451946194719481949195019511952195319541955195619571958195919601961196219631964196519661967196819691970197119721973197419751976197719781979198019811982198319841985198619871988198919901991199219931994199519961997199819992000200120022003200420052006200720082009201020112012201320142015201620172018201920202021202220232024202520262027202820292030203120322033203420352036203720382039204020412042204320442045204620472048204920502051205220532054205520562057205820592060206120622063206420652066206720682069207020712072207320742075207620772078207920802081208220832084208520862087208820892090209120922093209420952096209720982099210021012102210321042105210621072108210921102111211221132114211521162117211821192120212121222123212421252126212721282129213021312132213321342135213621372138213921402141214221432144214521462147214821492150215121522153215421552156215721582159216021612162216321642165216621672168216921702171217221732174217521762177217821792180218121822183218421852186218721882189219021912192219321942195219621972198219922002201220222032204220522062207220822092210221122122213221422152216221722182219222022212222222322242225222622272228222922302231223222332234223522362237223822392240224122422243224422452246224722482249225022512252225322542255225622572258225922602261226222632264226522662267226822692270227122722273227422752276227722782279228022812282228322842285228622872288228922902291229222932294229522962297229822992300230123022303230423052306230723082309231023112312231323142315231623172318231923202321232223232324232523262327232823292330233123322333233423352336233723382339234023412342234323442345234623472348234923502351235223532354235523562357235823592360236123622363236423652366236723682369237023712372237323742375237623772378237923802381238223832384238523862387238823892390239123922393239423952396239723982399240024012402240324042405240624072408240924102411241224132414241524162417241824192420242124222423242424252426242724282429243024312432243324342435243624372438243924402441244224432444244524462447244824492450245124522453245424552456245724582459246024612462246324642465246624672468246924702471247224732474247524762477247824792480248124822483248424852486248724882489249024912492249324942495249624972498249925002501250225032504250525062507250825092510251125122513251425152516251725182519252025212522252325242525252625272528252925302531253225332534253525362537253825392540254125422543254425452546254725482549255025512552255325542555255625572558255925602561256225632564256525662567256825692570257125722573257425752576257725782579258025812582258325842585258625872588258925902591259225932594259525962597259825992600260126022603260426052606260726082609261026112612261326142615261626172618261926202621262226232624262526262627262826292630263126322633263426352636263726382639264026412642264326442645264626472648264926502651265226532654265526562657265826592660266126622663266426652666266726682669267026712672267326742675267626772678267926802681268226832684268526862687268826892690269126922693269426952696269726982699270027012702270327042705270627072708270927102711271227132714271527162717271827192720272127222723272427252726272727282729273027312732273327342735273627372738273927402741274227432744274527462747274827492750275127522753275427552756275727582759276027612762276327642765276627672768276927702771277227732774277527762777277827792780278127822783278427852786278727882789279027912792279327942795279627972798279928002801280228032804280528062807280828092810281128122813281428152816281728182819282028212822282328242825282628272828282928302831283228332834283528362837283828392840284128422843284428452846284728482849285028512852285328542855285628572858285928602861286228632864286528662867286828692870287128722873287428752876287728782879288028812882288328842885288628872888288928902891289228932894289528962897289828992900290129022903290429052906290729082909291029112912291329142915291629172918291929202921292229232924292529262927292829292930293129322933293429352936293729382939294029412942294329442945294629472948294929502951295229532954295529562957295829592960296129622963296429652966296729682969297029712972297329742975297629772978297929802981298229832984298529862987298829892990299129922993299429952996299729982999300030013002300330043005300630073008300930103011301230133014301530163017301830193020302130223023302430253026302730283029303030313032303330343035303630373038303930403041304230433044304530463047304830493050305130523053305430553056305730583059306030613062306330643065306630673068306930703071307230733074307530763077307830793080308130823083308430853086308730883089309030913092309330943095309630973098309931003101310231033104310531063107310831093110311131123113311431153116311731183119312031213122312331243125312631273128312931303131313231333134313531363137313831393140314131423143314431453146314731483149315031513152315331543155315631573158315931603161316231633164316531663167316831693170317131723173317431753176317731783179318031813182318331843185318631873188318931903191319231933194319531963197319831993200320132023203320432053206320732083209321032113212321332143215321632173218321932203221322232233224322532263227322832293230323132323233323432353236323732383239324032413242324332443245324632473248324932503251325232533254325532563257325832593260326132623263326432653266326732683269327032713272327332743275327632773278327932803281328232833284328532863287328832893290329132923293329432953296329732983299330033013302330333043305330633073308330933103311331233133314331533163317331833193320332133223323332433253326332733283329333033313332333333343335333633373338333933403341334233433344334533463347334833493350335133523353335433553356335733583359336033613362336333643365336633673368336933703371337233733374337533763377337833793380338133823383338433853386338733883389339033913392
  1. /*
  2. * Copyright (c) 2020 The Linux Foundation. All rights reserved.
  3. *
  4. * Permission to use, copy, modify, and/or distribute this software for
  5. * any purpose with or without fee is hereby granted, provided that the
  6. * above copyright notice and this permission notice appear in all
  7. * copies.
  8. *
  9. * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL
  10. * WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED
  11. * WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE
  12. * AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL
  13. * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
  14. * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
  15. * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
  16. * PERFORMANCE OF THIS SOFTWARE.
  17. */
  18. //
  19. // DO NOT EDIT! This file is automatically generated
  20. // These definitions are tied to a particular hardware layout
  21. #ifndef _RX_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_2a[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_7a[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_9a[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_11a[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_2a : 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_7a : 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_9a : 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_11a : 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_2a
  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_7a
  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_9a
  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_11a
  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 (REO remaps this in chips without
  757. REO2SW5 ring, e.g. Pine)
  758. <enum 8 reo_destination_sw6> Reo will push the frame
  759. into the REO2SW6 ring (REO remaps this in chips without
  760. REO2SW6 ring, e.g. Pine)
  761. <enum 9 reo_destination_9> REO remaps this <enum 10
  762. reo_destination_10> REO remaps this
  763. <enum 11 reo_destination_11> REO remaps this
  764. <enum 12 reo_destination_12> REO remaps this <enum 13
  765. reo_destination_13> REO remaps this
  766. <enum 14 reo_destination_14> REO remaps this
  767. <enum 15 reo_destination_15> REO remaps this
  768. <enum 16 reo_destination_16> REO remaps this
  769. <enum 17 reo_destination_17> REO remaps this
  770. <enum 18 reo_destination_18> REO remaps this
  771. <enum 19 reo_destination_19> REO remaps this
  772. <enum 20 reo_destination_20> REO remaps this
  773. <enum 21 reo_destination_21> REO remaps this
  774. <enum 22 reo_destination_22> REO remaps this
  775. <enum 23 reo_destination_23> REO remaps this
  776. <enum 24 reo_destination_24> REO remaps this
  777. <enum 25 reo_destination_25> REO remaps this
  778. <enum 26 reo_destination_26> REO remaps this
  779. <enum 27 reo_destination_27> REO remaps this
  780. <enum 28 reo_destination_28> REO remaps this
  781. <enum 29 reo_destination_29> REO remaps this
  782. <enum 30 reo_destination_30> REO remaps this
  783. <enum 31 reo_destination_31> REO remaps this
  784. <legal all>
  785. */
  786. #define RX_MPDU_INFO_0_RXPT_CLASSIFY_INFO_DETAILS_REO_DESTINATION_INDICATION_OFFSET 0x00000000
  787. #define RX_MPDU_INFO_0_RXPT_CLASSIFY_INFO_DETAILS_REO_DESTINATION_INDICATION_LSB 0
  788. #define RX_MPDU_INFO_0_RXPT_CLASSIFY_INFO_DETAILS_REO_DESTINATION_INDICATION_MASK 0x0000001f
  789. /* Description RX_MPDU_INFO_0_RXPT_CLASSIFY_INFO_DETAILS_LMAC_PEER_ID_MSB
  790. If use_flow_id_toeplitz_clfy is set and lmac_peer_id_'sb
  791. is 2'b00, Rx OLE uses a REO desination indicati'n of {1'b1,
  792. hash[3:0]} using the chosen Toeplitz hash from Common Parser
  793. if flow search fails.
  794. If use_flow_id_toeplitz_clfy is set and lmac_peer_id_msb
  795. 's not 2'b00, Rx OLE uses a REO desination indication of
  796. {lmac_peer_id_msb, hash[2:0]} using the chosen Toeplitz hash
  797. from Common Parser if flow search fails.
  798. This LMAC/peer-based routing is not supported in
  799. Hastings80 and HastingsPrime.
  800. <legal all>
  801. */
  802. #define RX_MPDU_INFO_0_RXPT_CLASSIFY_INFO_DETAILS_LMAC_PEER_ID_MSB_OFFSET 0x00000000
  803. #define RX_MPDU_INFO_0_RXPT_CLASSIFY_INFO_DETAILS_LMAC_PEER_ID_MSB_LSB 5
  804. #define RX_MPDU_INFO_0_RXPT_CLASSIFY_INFO_DETAILS_LMAC_PEER_ID_MSB_MASK 0x00000060
  805. /* Description RX_MPDU_INFO_0_RXPT_CLASSIFY_INFO_DETAILS_USE_FLOW_ID_TOEPLITZ_CLFY
  806. Indication to Rx OLE to enable REO destination routing
  807. based on the chosen Toeplitz hash from Common Parser, in
  808. case flow search fails
  809. <legal all>
  810. */
  811. #define RX_MPDU_INFO_0_RXPT_CLASSIFY_INFO_DETAILS_USE_FLOW_ID_TOEPLITZ_CLFY_OFFSET 0x00000000
  812. #define RX_MPDU_INFO_0_RXPT_CLASSIFY_INFO_DETAILS_USE_FLOW_ID_TOEPLITZ_CLFY_LSB 7
  813. #define RX_MPDU_INFO_0_RXPT_CLASSIFY_INFO_DETAILS_USE_FLOW_ID_TOEPLITZ_CLFY_MASK 0x00000080
  814. /* Description RX_MPDU_INFO_0_RXPT_CLASSIFY_INFO_DETAILS_PKT_SELECTION_FP_UCAST_DATA
  815. Filter pass Unicast data frame (matching
  816. rxpcu_filter_pass and sw_frame_group_Unicast_data) routing
  817. selection
  818. 1'b0: source and destination rings are selected from the
  819. RxOLE register settings for the packet type
  820. 1'b1: source ring and destination ring is selected from
  821. the rxdma0_source_ring_selection and
  822. rxdma0_destination_ring_selection fields in this STRUCT
  823. <legal all>
  824. */
  825. #define RX_MPDU_INFO_0_RXPT_CLASSIFY_INFO_DETAILS_PKT_SELECTION_FP_UCAST_DATA_OFFSET 0x00000000
  826. #define RX_MPDU_INFO_0_RXPT_CLASSIFY_INFO_DETAILS_PKT_SELECTION_FP_UCAST_DATA_LSB 8
  827. #define RX_MPDU_INFO_0_RXPT_CLASSIFY_INFO_DETAILS_PKT_SELECTION_FP_UCAST_DATA_MASK 0x00000100
  828. /* Description RX_MPDU_INFO_0_RXPT_CLASSIFY_INFO_DETAILS_PKT_SELECTION_FP_MCAST_DATA
  829. Filter pass Multicast data frame (matching
  830. rxpcu_filter_pass and sw_frame_group_Multicast_data) routing
  831. selection
  832. 1'b0: source and destination rings are selected from the
  833. RxOLE register settings for the packet type
  834. 1'b1: source ring and destination ring is selected from
  835. the rxdma0_source_ring_selection and
  836. rxdma0_destination_ring_selection fields in this STRUCT
  837. <legal all>
  838. */
  839. #define RX_MPDU_INFO_0_RXPT_CLASSIFY_INFO_DETAILS_PKT_SELECTION_FP_MCAST_DATA_OFFSET 0x00000000
  840. #define RX_MPDU_INFO_0_RXPT_CLASSIFY_INFO_DETAILS_PKT_SELECTION_FP_MCAST_DATA_LSB 9
  841. #define RX_MPDU_INFO_0_RXPT_CLASSIFY_INFO_DETAILS_PKT_SELECTION_FP_MCAST_DATA_MASK 0x00000200
  842. /* Description RX_MPDU_INFO_0_RXPT_CLASSIFY_INFO_DETAILS_PKT_SELECTION_FP_1000
  843. Filter pass BAR frame (matching rxpcu_filter_pass and
  844. sw_frame_group_ctrl_1000) routing selection
  845. 1'b0: source and destination rings are selected from the
  846. RxOLE register settings for the packet type
  847. 1'b1: source ring and destination ring is selected from
  848. the rxdma0_source_ring_selection and
  849. rxdma0_destination_ring_selection fields in this STRUCT
  850. <legal all>
  851. */
  852. #define RX_MPDU_INFO_0_RXPT_CLASSIFY_INFO_DETAILS_PKT_SELECTION_FP_1000_OFFSET 0x00000000
  853. #define RX_MPDU_INFO_0_RXPT_CLASSIFY_INFO_DETAILS_PKT_SELECTION_FP_1000_LSB 10
  854. #define RX_MPDU_INFO_0_RXPT_CLASSIFY_INFO_DETAILS_PKT_SELECTION_FP_1000_MASK 0x00000400
  855. /* Description RX_MPDU_INFO_0_RXPT_CLASSIFY_INFO_DETAILS_RXDMA0_SOURCE_RING_SELECTION
  856. Field only valid when for the received frame type the
  857. corresponding pkt_selection_fp_... bit is set
  858. <enum 0 wbm2rxdma_buf_source_ring> The data buffer for
  859. <enum 1 fw2rxdma_buf_source_ring> The data buffer for
  860. this frame shall be sourced by fw2rxdma buffer source ring.
  861. <enum 2 sw2rxdma_buf_source_ring> The data buffer for
  862. this frame shall be sourced by sw2rxdma buffer source ring.
  863. <enum 3 no_buffer_ring> The frame shall not be written
  864. to any data buffer.
  865. <legal all>
  866. */
  867. #define RX_MPDU_INFO_0_RXPT_CLASSIFY_INFO_DETAILS_RXDMA0_SOURCE_RING_SELECTION_OFFSET 0x00000000
  868. #define RX_MPDU_INFO_0_RXPT_CLASSIFY_INFO_DETAILS_RXDMA0_SOURCE_RING_SELECTION_LSB 11
  869. #define RX_MPDU_INFO_0_RXPT_CLASSIFY_INFO_DETAILS_RXDMA0_SOURCE_RING_SELECTION_MASK 0x00001800
  870. /* Description RX_MPDU_INFO_0_RXPT_CLASSIFY_INFO_DETAILS_RXDMA0_DESTINATION_RING_SELECTION
  871. Field only valid when for the received frame type the
  872. corresponding pkt_selection_fp_... bit is set
  873. <enum 0 rxdma_release_ring> RXDMA0 shall push the frame
  874. to the Release ring. Effectively this means the frame needs
  875. to be dropped.
  876. <enum 1 rxdma2fw_ring> RXDMA0 shall push the frame to
  877. the FW ring.
  878. <enum 2 rxdma2sw_ring> RXDMA0 shall push the frame to
  879. the SW ring.
  880. <enum 3 rxdma2reo_ring> RXDMA0 shall push the frame to
  881. the REO entrance ring.
  882. <legal all>
  883. */
  884. #define RX_MPDU_INFO_0_RXPT_CLASSIFY_INFO_DETAILS_RXDMA0_DESTINATION_RING_SELECTION_OFFSET 0x00000000
  885. #define RX_MPDU_INFO_0_RXPT_CLASSIFY_INFO_DETAILS_RXDMA0_DESTINATION_RING_SELECTION_LSB 13
  886. #define RX_MPDU_INFO_0_RXPT_CLASSIFY_INFO_DETAILS_RXDMA0_DESTINATION_RING_SELECTION_MASK 0x00006000
  887. /* Description RX_MPDU_INFO_0_RXPT_CLASSIFY_INFO_DETAILS_RESERVED_0B
  888. <legal 0>
  889. */
  890. #define RX_MPDU_INFO_0_RXPT_CLASSIFY_INFO_DETAILS_RESERVED_0B_OFFSET 0x00000000
  891. #define RX_MPDU_INFO_0_RXPT_CLASSIFY_INFO_DETAILS_RESERVED_0B_LSB 15
  892. #define RX_MPDU_INFO_0_RXPT_CLASSIFY_INFO_DETAILS_RESERVED_0B_MASK 0xffff8000
  893. /* Description RX_MPDU_INFO_1_RX_REO_QUEUE_DESC_ADDR_31_0
  894. In case of ndp or phy_err or AST_based_lookup_valid ==
  895. 0, this field will be set to 0
  896. Address (lower 32 bits) of the REO queue descriptor.
  897. If no Peer entry lookup happened for this frame, the
  898. value wil be set to 0, and the frame shall never be pushed
  899. to REO entrance ring.
  900. <legal all>
  901. */
  902. #define RX_MPDU_INFO_1_RX_REO_QUEUE_DESC_ADDR_31_0_OFFSET 0x00000004
  903. #define RX_MPDU_INFO_1_RX_REO_QUEUE_DESC_ADDR_31_0_LSB 0
  904. #define RX_MPDU_INFO_1_RX_REO_QUEUE_DESC_ADDR_31_0_MASK 0xffffffff
  905. /* Description RX_MPDU_INFO_2_RX_REO_QUEUE_DESC_ADDR_39_32
  906. In case of ndp or phy_err or AST_based_lookup_valid ==
  907. 0, this field will be set to 0
  908. Address (upper 8 bits) of the REO queue descriptor.
  909. If no Peer entry lookup happened for this frame, the
  910. value wil be set to 0, and the frame shall never be pushed
  911. to REO entrance ring.
  912. <legal all>
  913. */
  914. #define RX_MPDU_INFO_2_RX_REO_QUEUE_DESC_ADDR_39_32_OFFSET 0x00000008
  915. #define RX_MPDU_INFO_2_RX_REO_QUEUE_DESC_ADDR_39_32_LSB 0
  916. #define RX_MPDU_INFO_2_RX_REO_QUEUE_DESC_ADDR_39_32_MASK 0x000000ff
  917. /* Description RX_MPDU_INFO_2_RECEIVE_QUEUE_NUMBER
  918. In case of ndp or phy_err or AST_based_lookup_valid ==
  919. 0, this field will be set to 0
  920. Indicates the MPDU queue ID to which this MPDU link
  921. descriptor belongs
  922. Used for tracking and debugging
  923. <legal all>
  924. */
  925. #define RX_MPDU_INFO_2_RECEIVE_QUEUE_NUMBER_OFFSET 0x00000008
  926. #define RX_MPDU_INFO_2_RECEIVE_QUEUE_NUMBER_LSB 8
  927. #define RX_MPDU_INFO_2_RECEIVE_QUEUE_NUMBER_MASK 0x00ffff00
  928. /* Description RX_MPDU_INFO_2_PRE_DELIM_ERR_WARNING
  929. Indicates that a delimiter FCS error was found in
  930. between the Previous MPDU and this MPDU.
  931. Note that this is just a warning, and does not mean that
  932. this MPDU is corrupted in any way. If it is, there will be
  933. other errors indicated such as FCS or decrypt errors
  934. In case of ndp or phy_err, this field will indicate at
  935. least one of delimiters located after the last MPDU in the
  936. previous PPDU has been corrupted.
  937. */
  938. #define RX_MPDU_INFO_2_PRE_DELIM_ERR_WARNING_OFFSET 0x00000008
  939. #define RX_MPDU_INFO_2_PRE_DELIM_ERR_WARNING_LSB 24
  940. #define RX_MPDU_INFO_2_PRE_DELIM_ERR_WARNING_MASK 0x01000000
  941. /* Description RX_MPDU_INFO_2_FIRST_DELIM_ERR
  942. Indicates that the first delimiter had a FCS failure.
  943. Only valid when first_mpdu and first_msdu are set.
  944. */
  945. #define RX_MPDU_INFO_2_FIRST_DELIM_ERR_OFFSET 0x00000008
  946. #define RX_MPDU_INFO_2_FIRST_DELIM_ERR_LSB 25
  947. #define RX_MPDU_INFO_2_FIRST_DELIM_ERR_MASK 0x02000000
  948. /* Description RX_MPDU_INFO_2_RESERVED_2A
  949. <legal 0>
  950. */
  951. #define RX_MPDU_INFO_2_RESERVED_2A_OFFSET 0x00000008
  952. #define RX_MPDU_INFO_2_RESERVED_2A_LSB 26
  953. #define RX_MPDU_INFO_2_RESERVED_2A_MASK 0xfc000000
  954. /* Description RX_MPDU_INFO_3_PN_31_0
  955. WEP: IV = {key_id_octet, pn2, pn1, pn0}. Only pn[23:0]
  956. is valid.
  957. TKIP: IV = {pn5, pn4, pn3, pn2, key_id_octet, pn0,
  958. WEPSeed[1], pn1}. Only pn[47:0] is valid.
  959. AES-CCM: IV = {pn5, pn4, pn3, pn2, key_id_octet, 0x0,
  960. pn1, pn0}. Only pn[47:0] is valid.
  961. WAPI: IV = {key_id_octet, 0x0, pn15, pn14, pn13, pn12,
  962. pn11, pn10, pn9, pn8, pn7, pn6, pn5, pn4, pn3, pn2, pn1,
  963. pn0}. pn[127:0] are valid.
  964. */
  965. #define RX_MPDU_INFO_3_PN_31_0_OFFSET 0x0000000c
  966. #define RX_MPDU_INFO_3_PN_31_0_LSB 0
  967. #define RX_MPDU_INFO_3_PN_31_0_MASK 0xffffffff
  968. /* Description RX_MPDU_INFO_4_PN_63_32
  969. Bits [63:32] of the PN number. See description for
  970. pn_31_0.
  971. */
  972. #define RX_MPDU_INFO_4_PN_63_32_OFFSET 0x00000010
  973. #define RX_MPDU_INFO_4_PN_63_32_LSB 0
  974. #define RX_MPDU_INFO_4_PN_63_32_MASK 0xffffffff
  975. /* Description RX_MPDU_INFO_5_PN_95_64
  976. Bits [95:64] of the PN number. See description for
  977. pn_31_0.
  978. */
  979. #define RX_MPDU_INFO_5_PN_95_64_OFFSET 0x00000014
  980. #define RX_MPDU_INFO_5_PN_95_64_LSB 0
  981. #define RX_MPDU_INFO_5_PN_95_64_MASK 0xffffffff
  982. /* Description RX_MPDU_INFO_6_PN_127_96
  983. Bits [127:96] of the PN number. See description for
  984. pn_31_0.
  985. */
  986. #define RX_MPDU_INFO_6_PN_127_96_OFFSET 0x00000018
  987. #define RX_MPDU_INFO_6_PN_127_96_LSB 0
  988. #define RX_MPDU_INFO_6_PN_127_96_MASK 0xffffffff
  989. /* Description RX_MPDU_INFO_7_EPD_EN
  990. Field only valid when AST_based_lookup_valid == 1.
  991. In case of ndp or phy_err or AST_based_lookup_valid ==
  992. 0, this field will be set to 0
  993. If set to one use EPD instead of LPD
  994. <legal all>
  995. */
  996. #define RX_MPDU_INFO_7_EPD_EN_OFFSET 0x0000001c
  997. #define RX_MPDU_INFO_7_EPD_EN_LSB 0
  998. #define RX_MPDU_INFO_7_EPD_EN_MASK 0x00000001
  999. /* Description RX_MPDU_INFO_7_ALL_FRAMES_SHALL_BE_ENCRYPTED
  1000. In case of ndp or phy_err or AST_based_lookup_valid ==
  1001. 0, this field will be set to 0
  1002. When set, all frames (data only ?) shall be encrypted.
  1003. If not, RX CRYPTO shall set an error flag.
  1004. <legal all>
  1005. */
  1006. #define RX_MPDU_INFO_7_ALL_FRAMES_SHALL_BE_ENCRYPTED_OFFSET 0x0000001c
  1007. #define RX_MPDU_INFO_7_ALL_FRAMES_SHALL_BE_ENCRYPTED_LSB 1
  1008. #define RX_MPDU_INFO_7_ALL_FRAMES_SHALL_BE_ENCRYPTED_MASK 0x00000002
  1009. /* Description RX_MPDU_INFO_7_ENCRYPT_TYPE
  1010. In case of ndp or phy_err or AST_based_lookup_valid ==
  1011. 0, this field will be set to 0
  1012. Indicates type of decrypt cipher used (as defined in the
  1013. peer entry)
  1014. <enum 0 wep_40> WEP 40-bit
  1015. <enum 1 wep_104> WEP 104-bit
  1016. <enum 2 tkip_no_mic> TKIP without MIC
  1017. <enum 3 wep_128> WEP 128-bit
  1018. <enum 4 tkip_with_mic> TKIP with MIC
  1019. <enum 5 wapi> WAPI
  1020. <enum 6 aes_ccmp_128> AES CCMP 128
  1021. <enum 7 no_cipher> No crypto
  1022. <enum 8 aes_ccmp_256> AES CCMP 256
  1023. <enum 9 aes_gcmp_128> AES CCMP 128
  1024. <enum 10 aes_gcmp_256> AES CCMP 256
  1025. <enum 11 wapi_gcm_sm4> WAPI GCM SM4
  1026. <enum 12 wep_varied_width> WEP encryption. As for WEP
  1027. per keyid the key bit width can vary, the key bit width for
  1028. this MPDU will be indicated in field
  1029. wep_key_width_for_variable key
  1030. <legal 0-12>
  1031. */
  1032. #define RX_MPDU_INFO_7_ENCRYPT_TYPE_OFFSET 0x0000001c
  1033. #define RX_MPDU_INFO_7_ENCRYPT_TYPE_LSB 2
  1034. #define RX_MPDU_INFO_7_ENCRYPT_TYPE_MASK 0x0000003c
  1035. /* Description RX_MPDU_INFO_7_WEP_KEY_WIDTH_FOR_VARIABLE_KEY
  1036. Field only valid when key_type is set to
  1037. wep_varied_width.
  1038. This field indicates the size of the wep key for this
  1039. MPDU.
  1040. <enum 0 wep_varied_width_40> WEP 40-bit
  1041. <enum 1 wep_varied_width_104> WEP 104-bit
  1042. <enum 2 wep_varied_width_128> WEP 128-bit
  1043. <legal 0-2>
  1044. */
  1045. #define RX_MPDU_INFO_7_WEP_KEY_WIDTH_FOR_VARIABLE_KEY_OFFSET 0x0000001c
  1046. #define RX_MPDU_INFO_7_WEP_KEY_WIDTH_FOR_VARIABLE_KEY_LSB 6
  1047. #define RX_MPDU_INFO_7_WEP_KEY_WIDTH_FOR_VARIABLE_KEY_MASK 0x000000c0
  1048. /* Description RX_MPDU_INFO_7_MESH_STA
  1049. In case of ndp or phy_err or AST_based_lookup_valid ==
  1050. 0, this field will be set to 0
  1051. When set, this is a Mesh (11s) STA.
  1052. The interpretation of the A-MSDU 'Length' field in the
  1053. MPDU (if any) is decided by the e-numerations below.
  1054. <enum 0 MESH_DISABLE>
  1055. <enum 1 MESH_Q2Q> A-MSDU 'Length' is big endian and
  1056. includes the length of Mesh Control.
  1057. <enum 2 MESH_11S_BE> A-MSDU 'Length' is big endian and
  1058. excludes the length of Mesh Control.
  1059. <enum 3 MESH_11S_LE> A-MSDU 'Length' is little endian
  1060. and excludes the length of Mesh Control. This is
  1061. 802.11s-compliant.
  1062. <legal all>
  1063. */
  1064. #define RX_MPDU_INFO_7_MESH_STA_OFFSET 0x0000001c
  1065. #define RX_MPDU_INFO_7_MESH_STA_LSB 8
  1066. #define RX_MPDU_INFO_7_MESH_STA_MASK 0x00000300
  1067. /* Description RX_MPDU_INFO_7_BSSID_HIT
  1068. In case of ndp or phy_err or AST_based_lookup_valid ==
  1069. 0, this field will be set to 0
  1070. When set, the BSSID of the incoming frame matched one of
  1071. the 8 BSSID register values
  1072. <legal all>
  1073. */
  1074. #define RX_MPDU_INFO_7_BSSID_HIT_OFFSET 0x0000001c
  1075. #define RX_MPDU_INFO_7_BSSID_HIT_LSB 10
  1076. #define RX_MPDU_INFO_7_BSSID_HIT_MASK 0x00000400
  1077. /* Description RX_MPDU_INFO_7_BSSID_NUMBER
  1078. Field only valid when bssid_hit is set.
  1079. This number indicates which one out of the 8 BSSID
  1080. register values matched the incoming frame
  1081. <legal all>
  1082. */
  1083. #define RX_MPDU_INFO_7_BSSID_NUMBER_OFFSET 0x0000001c
  1084. #define RX_MPDU_INFO_7_BSSID_NUMBER_LSB 11
  1085. #define RX_MPDU_INFO_7_BSSID_NUMBER_MASK 0x00007800
  1086. /* Description RX_MPDU_INFO_7_TID
  1087. Field only valid when mpdu_qos_control_valid is set
  1088. The TID field in the QoS control field
  1089. <legal all>
  1090. */
  1091. #define RX_MPDU_INFO_7_TID_OFFSET 0x0000001c
  1092. #define RX_MPDU_INFO_7_TID_LSB 15
  1093. #define RX_MPDU_INFO_7_TID_MASK 0x00078000
  1094. /* Description RX_MPDU_INFO_7_RESERVED_7A
  1095. <legal 0>
  1096. */
  1097. #define RX_MPDU_INFO_7_RESERVED_7A_OFFSET 0x0000001c
  1098. #define RX_MPDU_INFO_7_RESERVED_7A_LSB 19
  1099. #define RX_MPDU_INFO_7_RESERVED_7A_MASK 0xfff80000
  1100. /* Description RX_MPDU_INFO_8_PEER_META_DATA
  1101. In case of ndp or phy_err or AST_based_lookup_valid ==
  1102. 0, this field will be set to 0
  1103. Meta data that SW has programmed in the Peer table entry
  1104. of the transmitting STA.
  1105. <legal all>
  1106. */
  1107. #define RX_MPDU_INFO_8_PEER_META_DATA_OFFSET 0x00000020
  1108. #define RX_MPDU_INFO_8_PEER_META_DATA_LSB 0
  1109. #define RX_MPDU_INFO_8_PEER_META_DATA_MASK 0xffffffff
  1110. /* Description RX_MPDU_INFO_9_RXPCU_MPDU_FILTER_IN_CATEGORY
  1111. Field indicates what the reason was that this MPDU frame
  1112. was allowed to come into the receive path by RXPCU
  1113. <enum 0 rxpcu_filter_pass> This MPDU passed the normal
  1114. frame filter programming of rxpcu
  1115. <enum 1 rxpcu_monitor_client> This MPDU did NOT pass the
  1116. regular frame filter and would have been dropped, were it
  1117. not for the frame fitting into the 'monitor_client'
  1118. category.
  1119. <enum 2 rxpcu_monitor_other> This MPDU did NOT pass the
  1120. regular frame filter and also did not pass the
  1121. rxpcu_monitor_client filter. It would have been dropped
  1122. accept that it did pass the 'monitor_other' category.
  1123. Note: for ndp frame, if it was expected because the
  1124. preceding NDPA was filter_pass, the setting
  1125. rxpcu_filter_pass will be used. This setting will also be
  1126. used for every ndp frame in case Promiscuous mode is
  1127. enabled.
  1128. In case promiscuous is not enabled, and an NDP is not
  1129. preceded by a NPDA filter pass frame, the only other setting
  1130. that could appear here for the NDP is rxpcu_monitor_other.
  1131. (rxpcu has a configuration bit specifically for this
  1132. scenario)
  1133. Note: for
  1134. <legal 0-2>
  1135. */
  1136. #define RX_MPDU_INFO_9_RXPCU_MPDU_FILTER_IN_CATEGORY_OFFSET 0x00000024
  1137. #define RX_MPDU_INFO_9_RXPCU_MPDU_FILTER_IN_CATEGORY_LSB 0
  1138. #define RX_MPDU_INFO_9_RXPCU_MPDU_FILTER_IN_CATEGORY_MASK 0x00000003
  1139. /* Description RX_MPDU_INFO_9_SW_FRAME_GROUP_ID
  1140. SW processes frames based on certain classifications.
  1141. This field indicates to what sw classification this MPDU is
  1142. mapped.
  1143. The classification is given in priority order
  1144. <enum 0 sw_frame_group_NDP_frame> Note: The
  1145. corresponding Rxpcu_Mpdu_filter_in_category can be
  1146. rxpcu_filter_pass or rxpcu_monitor_other
  1147. <enum 1 sw_frame_group_Multicast_data>
  1148. <enum 2 sw_frame_group_Unicast_data>
  1149. <enum 3 sw_frame_group_Null_data > This includes mpdus
  1150. of type Data Null as well as QoS Data Null
  1151. <enum 4 sw_frame_group_mgmt_0000 >
  1152. <enum 5 sw_frame_group_mgmt_0001 >
  1153. <enum 6 sw_frame_group_mgmt_0010 >
  1154. <enum 7 sw_frame_group_mgmt_0011 >
  1155. <enum 8 sw_frame_group_mgmt_0100 >
  1156. <enum 9 sw_frame_group_mgmt_0101 >
  1157. <enum 10 sw_frame_group_mgmt_0110 >
  1158. <enum 11 sw_frame_group_mgmt_0111 >
  1159. <enum 12 sw_frame_group_mgmt_1000 >
  1160. <enum 13 sw_frame_group_mgmt_1001 >
  1161. <enum 14 sw_frame_group_mgmt_1010 >
  1162. <enum 15 sw_frame_group_mgmt_1011 >
  1163. <enum 16 sw_frame_group_mgmt_1100 >
  1164. <enum 17 sw_frame_group_mgmt_1101 >
  1165. <enum 18 sw_frame_group_mgmt_1110 >
  1166. <enum 19 sw_frame_group_mgmt_1111 >
  1167. <enum 20 sw_frame_group_ctrl_0000 >
  1168. <enum 21 sw_frame_group_ctrl_0001 >
  1169. <enum 22 sw_frame_group_ctrl_0010 >
  1170. <enum 23 sw_frame_group_ctrl_0011 >
  1171. <enum 24 sw_frame_group_ctrl_0100 >
  1172. <enum 25 sw_frame_group_ctrl_0101 >
  1173. <enum 26 sw_frame_group_ctrl_0110 >
  1174. <enum 27 sw_frame_group_ctrl_0111 >
  1175. <enum 28 sw_frame_group_ctrl_1000 >
  1176. <enum 29 sw_frame_group_ctrl_1001 >
  1177. <enum 30 sw_frame_group_ctrl_1010 >
  1178. <enum 31 sw_frame_group_ctrl_1011 >
  1179. <enum 32 sw_frame_group_ctrl_1100 >
  1180. <enum 33 sw_frame_group_ctrl_1101 >
  1181. <enum 34 sw_frame_group_ctrl_1110 >
  1182. <enum 35 sw_frame_group_ctrl_1111 >
  1183. <enum 36 sw_frame_group_unsupported> This covers type 3
  1184. and protocol version != 0
  1185. Note: The corresponding Rxpcu_Mpdu_filter_in_category
  1186. can only be rxpcu_monitor_other
  1187. Note: The corresponding Rxpcu_Mpdu_filter_in_category
  1188. can be rxpcu_filter_pass
  1189. <legal 0-37>
  1190. */
  1191. #define RX_MPDU_INFO_9_SW_FRAME_GROUP_ID_OFFSET 0x00000024
  1192. #define RX_MPDU_INFO_9_SW_FRAME_GROUP_ID_LSB 2
  1193. #define RX_MPDU_INFO_9_SW_FRAME_GROUP_ID_MASK 0x000001fc
  1194. /* Description RX_MPDU_INFO_9_NDP_FRAME
  1195. When set, the received frame was an NDP frame, and thus
  1196. there will be no MPDU data.
  1197. <legal all>
  1198. */
  1199. #define RX_MPDU_INFO_9_NDP_FRAME_OFFSET 0x00000024
  1200. #define RX_MPDU_INFO_9_NDP_FRAME_LSB 9
  1201. #define RX_MPDU_INFO_9_NDP_FRAME_MASK 0x00000200
  1202. /* Description RX_MPDU_INFO_9_PHY_ERR
  1203. When set, a PHY error was received before MAC received
  1204. any data, and thus there will be no MPDU data.
  1205. <legal all>
  1206. */
  1207. #define RX_MPDU_INFO_9_PHY_ERR_OFFSET 0x00000024
  1208. #define RX_MPDU_INFO_9_PHY_ERR_LSB 10
  1209. #define RX_MPDU_INFO_9_PHY_ERR_MASK 0x00000400
  1210. /* Description RX_MPDU_INFO_9_PHY_ERR_DURING_MPDU_HEADER
  1211. When set, a PHY error was received before MAC received
  1212. the complete MPDU header which was needed for proper
  1213. decoding
  1214. <legal all>
  1215. */
  1216. #define RX_MPDU_INFO_9_PHY_ERR_DURING_MPDU_HEADER_OFFSET 0x00000024
  1217. #define RX_MPDU_INFO_9_PHY_ERR_DURING_MPDU_HEADER_LSB 11
  1218. #define RX_MPDU_INFO_9_PHY_ERR_DURING_MPDU_HEADER_MASK 0x00000800
  1219. /* Description RX_MPDU_INFO_9_PROTOCOL_VERSION_ERR
  1220. Set when RXPCU detected a version error in the Frame
  1221. control field
  1222. <legal all>
  1223. */
  1224. #define RX_MPDU_INFO_9_PROTOCOL_VERSION_ERR_OFFSET 0x00000024
  1225. #define RX_MPDU_INFO_9_PROTOCOL_VERSION_ERR_LSB 12
  1226. #define RX_MPDU_INFO_9_PROTOCOL_VERSION_ERR_MASK 0x00001000
  1227. /* Description RX_MPDU_INFO_9_AST_BASED_LOOKUP_VALID
  1228. When set, AST based lookup for this frame has found a
  1229. valid result.
  1230. Note that for NDP frame this will never be set
  1231. <legal all>
  1232. */
  1233. #define RX_MPDU_INFO_9_AST_BASED_LOOKUP_VALID_OFFSET 0x00000024
  1234. #define RX_MPDU_INFO_9_AST_BASED_LOOKUP_VALID_LSB 13
  1235. #define RX_MPDU_INFO_9_AST_BASED_LOOKUP_VALID_MASK 0x00002000
  1236. /* Description RX_MPDU_INFO_9_RESERVED_9A
  1237. <legal 0>
  1238. */
  1239. #define RX_MPDU_INFO_9_RESERVED_9A_OFFSET 0x00000024
  1240. #define RX_MPDU_INFO_9_RESERVED_9A_LSB 14
  1241. #define RX_MPDU_INFO_9_RESERVED_9A_MASK 0x0000c000
  1242. /* Description RX_MPDU_INFO_9_PHY_PPDU_ID
  1243. A ppdu counter value that PHY increments for every PPDU
  1244. received. The counter value wraps around
  1245. <legal all>
  1246. */
  1247. #define RX_MPDU_INFO_9_PHY_PPDU_ID_OFFSET 0x00000024
  1248. #define RX_MPDU_INFO_9_PHY_PPDU_ID_LSB 16
  1249. #define RX_MPDU_INFO_9_PHY_PPDU_ID_MASK 0xffff0000
  1250. /* Description RX_MPDU_INFO_10_AST_INDEX
  1251. This field indicates the index of the AST entry
  1252. corresponding to this MPDU. It is provided by the GSE module
  1253. instantiated in RXPCU.
  1254. A value of 0xFFFF indicates an invalid AST index,
  1255. meaning that No AST entry was found or NO AST search was
  1256. performed
  1257. In case of ndp or phy_err, this field will be set to
  1258. 0xFFFF
  1259. <legal all>
  1260. */
  1261. #define RX_MPDU_INFO_10_AST_INDEX_OFFSET 0x00000028
  1262. #define RX_MPDU_INFO_10_AST_INDEX_LSB 0
  1263. #define RX_MPDU_INFO_10_AST_INDEX_MASK 0x0000ffff
  1264. /* Description RX_MPDU_INFO_10_SW_PEER_ID
  1265. In case of ndp or phy_err or AST_based_lookup_valid ==
  1266. 0, this field will be set to 0
  1267. This field indicates a unique peer identifier. It is set
  1268. equal to field 'sw_peer_id' from the AST entry
  1269. <legal all>
  1270. */
  1271. #define RX_MPDU_INFO_10_SW_PEER_ID_OFFSET 0x00000028
  1272. #define RX_MPDU_INFO_10_SW_PEER_ID_LSB 16
  1273. #define RX_MPDU_INFO_10_SW_PEER_ID_MASK 0xffff0000
  1274. /* Description RX_MPDU_INFO_11_MPDU_FRAME_CONTROL_VALID
  1275. When set, the field Mpdu_Frame_control_field has valid
  1276. information
  1277. <legal all>
  1278. */
  1279. #define RX_MPDU_INFO_11_MPDU_FRAME_CONTROL_VALID_OFFSET 0x0000002c
  1280. #define RX_MPDU_INFO_11_MPDU_FRAME_CONTROL_VALID_LSB 0
  1281. #define RX_MPDU_INFO_11_MPDU_FRAME_CONTROL_VALID_MASK 0x00000001
  1282. /* Description RX_MPDU_INFO_11_MPDU_DURATION_VALID
  1283. When set, the field Mpdu_duration_field has valid
  1284. information
  1285. <legal all>
  1286. */
  1287. #define RX_MPDU_INFO_11_MPDU_DURATION_VALID_OFFSET 0x0000002c
  1288. #define RX_MPDU_INFO_11_MPDU_DURATION_VALID_LSB 1
  1289. #define RX_MPDU_INFO_11_MPDU_DURATION_VALID_MASK 0x00000002
  1290. /* Description RX_MPDU_INFO_11_MAC_ADDR_AD1_VALID
  1291. When set, the fields mac_addr_ad1_..... have valid
  1292. information
  1293. <legal all>
  1294. */
  1295. #define RX_MPDU_INFO_11_MAC_ADDR_AD1_VALID_OFFSET 0x0000002c
  1296. #define RX_MPDU_INFO_11_MAC_ADDR_AD1_VALID_LSB 2
  1297. #define RX_MPDU_INFO_11_MAC_ADDR_AD1_VALID_MASK 0x00000004
  1298. /* Description RX_MPDU_INFO_11_MAC_ADDR_AD2_VALID
  1299. When set, the fields mac_addr_ad2_..... have valid
  1300. information
  1301. <legal all>
  1302. */
  1303. #define RX_MPDU_INFO_11_MAC_ADDR_AD2_VALID_OFFSET 0x0000002c
  1304. #define RX_MPDU_INFO_11_MAC_ADDR_AD2_VALID_LSB 3
  1305. #define RX_MPDU_INFO_11_MAC_ADDR_AD2_VALID_MASK 0x00000008
  1306. /* Description RX_MPDU_INFO_11_MAC_ADDR_AD3_VALID
  1307. When set, the fields mac_addr_ad3_..... have valid
  1308. information
  1309. <legal all>
  1310. */
  1311. #define RX_MPDU_INFO_11_MAC_ADDR_AD3_VALID_OFFSET 0x0000002c
  1312. #define RX_MPDU_INFO_11_MAC_ADDR_AD3_VALID_LSB 4
  1313. #define RX_MPDU_INFO_11_MAC_ADDR_AD3_VALID_MASK 0x00000010
  1314. /* Description RX_MPDU_INFO_11_MAC_ADDR_AD4_VALID
  1315. When set, the fields mac_addr_ad4_..... have valid
  1316. information
  1317. <legal all>
  1318. */
  1319. #define RX_MPDU_INFO_11_MAC_ADDR_AD4_VALID_OFFSET 0x0000002c
  1320. #define RX_MPDU_INFO_11_MAC_ADDR_AD4_VALID_LSB 5
  1321. #define RX_MPDU_INFO_11_MAC_ADDR_AD4_VALID_MASK 0x00000020
  1322. /* Description RX_MPDU_INFO_11_MPDU_SEQUENCE_CONTROL_VALID
  1323. When set, the fields mpdu_sequence_control_field and
  1324. mpdu_sequence_number have valid information as well as field
  1325. For MPDUs without a sequence control field, this field
  1326. will not be set.
  1327. <legal all>
  1328. */
  1329. #define RX_MPDU_INFO_11_MPDU_SEQUENCE_CONTROL_VALID_OFFSET 0x0000002c
  1330. #define RX_MPDU_INFO_11_MPDU_SEQUENCE_CONTROL_VALID_LSB 6
  1331. #define RX_MPDU_INFO_11_MPDU_SEQUENCE_CONTROL_VALID_MASK 0x00000040
  1332. /* Description RX_MPDU_INFO_11_MPDU_QOS_CONTROL_VALID
  1333. When set, the field mpdu_qos_control_field has valid
  1334. information
  1335. For MPDUs without a QoS control field, this field will
  1336. not be set.
  1337. <legal all>
  1338. */
  1339. #define RX_MPDU_INFO_11_MPDU_QOS_CONTROL_VALID_OFFSET 0x0000002c
  1340. #define RX_MPDU_INFO_11_MPDU_QOS_CONTROL_VALID_LSB 7
  1341. #define RX_MPDU_INFO_11_MPDU_QOS_CONTROL_VALID_MASK 0x00000080
  1342. /* Description RX_MPDU_INFO_11_MPDU_HT_CONTROL_VALID
  1343. When set, the field mpdu_HT_control_field has valid
  1344. information
  1345. For MPDUs without a HT control field, this field will
  1346. not be set.
  1347. <legal all>
  1348. */
  1349. #define RX_MPDU_INFO_11_MPDU_HT_CONTROL_VALID_OFFSET 0x0000002c
  1350. #define RX_MPDU_INFO_11_MPDU_HT_CONTROL_VALID_LSB 8
  1351. #define RX_MPDU_INFO_11_MPDU_HT_CONTROL_VALID_MASK 0x00000100
  1352. /* Description RX_MPDU_INFO_11_FRAME_ENCRYPTION_INFO_VALID
  1353. When set, the encryption related info fields, like IV
  1354. and PN are valid
  1355. For MPDUs that are not encrypted, this will not be set.
  1356. <legal all>
  1357. */
  1358. #define RX_MPDU_INFO_11_FRAME_ENCRYPTION_INFO_VALID_OFFSET 0x0000002c
  1359. #define RX_MPDU_INFO_11_FRAME_ENCRYPTION_INFO_VALID_LSB 9
  1360. #define RX_MPDU_INFO_11_FRAME_ENCRYPTION_INFO_VALID_MASK 0x00000200
  1361. /* Description RX_MPDU_INFO_11_MPDU_FRAGMENT_NUMBER
  1362. Field only valid when Mpdu_sequence_control_valid is set
  1363. AND Fragment_flag is set
  1364. The fragment number from the 802.11 header
  1365. <legal all>
  1366. */
  1367. #define RX_MPDU_INFO_11_MPDU_FRAGMENT_NUMBER_OFFSET 0x0000002c
  1368. #define RX_MPDU_INFO_11_MPDU_FRAGMENT_NUMBER_LSB 10
  1369. #define RX_MPDU_INFO_11_MPDU_FRAGMENT_NUMBER_MASK 0x00003c00
  1370. /* Description RX_MPDU_INFO_11_MORE_FRAGMENT_FLAG
  1371. The More Fragment bit setting from the MPDU header of
  1372. the received frame
  1373. <legal all>
  1374. */
  1375. #define RX_MPDU_INFO_11_MORE_FRAGMENT_FLAG_OFFSET 0x0000002c
  1376. #define RX_MPDU_INFO_11_MORE_FRAGMENT_FLAG_LSB 14
  1377. #define RX_MPDU_INFO_11_MORE_FRAGMENT_FLAG_MASK 0x00004000
  1378. /* Description RX_MPDU_INFO_11_RESERVED_11A
  1379. <legal 0>
  1380. */
  1381. #define RX_MPDU_INFO_11_RESERVED_11A_OFFSET 0x0000002c
  1382. #define RX_MPDU_INFO_11_RESERVED_11A_LSB 15
  1383. #define RX_MPDU_INFO_11_RESERVED_11A_MASK 0x00008000
  1384. /* Description RX_MPDU_INFO_11_FR_DS
  1385. Field only valid when Mpdu_frame_control_valid is set
  1386. Set if the from DS bit is set in the frame control.
  1387. <legal all>
  1388. */
  1389. #define RX_MPDU_INFO_11_FR_DS_OFFSET 0x0000002c
  1390. #define RX_MPDU_INFO_11_FR_DS_LSB 16
  1391. #define RX_MPDU_INFO_11_FR_DS_MASK 0x00010000
  1392. /* Description RX_MPDU_INFO_11_TO_DS
  1393. Field only valid when Mpdu_frame_control_valid is set
  1394. Set if the to DS bit is set in the frame control.
  1395. <legal all>
  1396. */
  1397. #define RX_MPDU_INFO_11_TO_DS_OFFSET 0x0000002c
  1398. #define RX_MPDU_INFO_11_TO_DS_LSB 17
  1399. #define RX_MPDU_INFO_11_TO_DS_MASK 0x00020000
  1400. /* Description RX_MPDU_INFO_11_ENCRYPTED
  1401. Field only valid when Mpdu_frame_control_valid is set.
  1402. Protected bit from the frame control.
  1403. <legal all>
  1404. */
  1405. #define RX_MPDU_INFO_11_ENCRYPTED_OFFSET 0x0000002c
  1406. #define RX_MPDU_INFO_11_ENCRYPTED_LSB 18
  1407. #define RX_MPDU_INFO_11_ENCRYPTED_MASK 0x00040000
  1408. /* Description RX_MPDU_INFO_11_MPDU_RETRY
  1409. Field only valid when Mpdu_frame_control_valid is set.
  1410. Retry bit from the frame control. Only valid when
  1411. first_msdu is set.
  1412. <legal all>
  1413. */
  1414. #define RX_MPDU_INFO_11_MPDU_RETRY_OFFSET 0x0000002c
  1415. #define RX_MPDU_INFO_11_MPDU_RETRY_LSB 19
  1416. #define RX_MPDU_INFO_11_MPDU_RETRY_MASK 0x00080000
  1417. /* Description RX_MPDU_INFO_11_MPDU_SEQUENCE_NUMBER
  1418. Field only valid when Mpdu_sequence_control_valid is
  1419. set.
  1420. The sequence number from the 802.11 header.
  1421. <legal all>
  1422. */
  1423. #define RX_MPDU_INFO_11_MPDU_SEQUENCE_NUMBER_OFFSET 0x0000002c
  1424. #define RX_MPDU_INFO_11_MPDU_SEQUENCE_NUMBER_LSB 20
  1425. #define RX_MPDU_INFO_11_MPDU_SEQUENCE_NUMBER_MASK 0xfff00000
  1426. /* Description RX_MPDU_INFO_12_KEY_ID_OCTET
  1427. The key ID octet from the IV.
  1428. In case of ndp or phy_err or AST_based_lookup_valid ==
  1429. 0, this field will be set to 0
  1430. <legal all>
  1431. */
  1432. #define RX_MPDU_INFO_12_KEY_ID_OCTET_OFFSET 0x00000030
  1433. #define RX_MPDU_INFO_12_KEY_ID_OCTET_LSB 0
  1434. #define RX_MPDU_INFO_12_KEY_ID_OCTET_MASK 0x000000ff
  1435. /* Description RX_MPDU_INFO_12_NEW_PEER_ENTRY
  1436. In case of ndp or phy_err or AST_based_lookup_valid ==
  1437. 0, this field will be set to 0
  1438. Set if new RX_PEER_ENTRY TLV follows. If clear,
  1439. RX_PEER_ENTRY doesn't follow so RX DECRYPTION module either
  1440. uses old peer entry or not decrypt.
  1441. <legal all>
  1442. */
  1443. #define RX_MPDU_INFO_12_NEW_PEER_ENTRY_OFFSET 0x00000030
  1444. #define RX_MPDU_INFO_12_NEW_PEER_ENTRY_LSB 8
  1445. #define RX_MPDU_INFO_12_NEW_PEER_ENTRY_MASK 0x00000100
  1446. /* Description RX_MPDU_INFO_12_DECRYPT_NEEDED
  1447. In case of ndp or phy_err or AST_based_lookup_valid ==
  1448. 0, this field will be set to 0
  1449. Set if decryption is needed.
  1450. Note:
  1451. When RXPCU sets bit 'ast_index_not_found' and/or
  1452. ast_index_timeout', RXPCU will also ensure that this bit is
  1453. NOT set
  1454. CRYPTO for that reason only needs to evaluate this bit
  1455. and non of the other ones.
  1456. <legal all>
  1457. */
  1458. #define RX_MPDU_INFO_12_DECRYPT_NEEDED_OFFSET 0x00000030
  1459. #define RX_MPDU_INFO_12_DECRYPT_NEEDED_LSB 9
  1460. #define RX_MPDU_INFO_12_DECRYPT_NEEDED_MASK 0x00000200
  1461. /* Description RX_MPDU_INFO_12_DECAP_TYPE
  1462. In case of ndp or phy_err or AST_based_lookup_valid ==
  1463. 0, this field will be set to 0
  1464. Used by the OLE during decapsulation.
  1465. Indicates the decapsulation that HW will perform:
  1466. <enum 0 RAW> No encapsulation
  1467. <enum 1 Native_WiFi>
  1468. <enum 2 Ethernet> Ethernet 2 (DIX) or 802.3 (uses
  1469. SNAP/LLC)
  1470. <enum 3 802_3> Indicate Ethernet
  1471. <legal all>
  1472. */
  1473. #define RX_MPDU_INFO_12_DECAP_TYPE_OFFSET 0x00000030
  1474. #define RX_MPDU_INFO_12_DECAP_TYPE_LSB 10
  1475. #define RX_MPDU_INFO_12_DECAP_TYPE_MASK 0x00000c00
  1476. /* Description RX_MPDU_INFO_12_RX_INSERT_VLAN_C_TAG_PADDING
  1477. In case of ndp or phy_err or AST_based_lookup_valid ==
  1478. 0, this field will be set to 0
  1479. Insert 4 byte of all zeros as VLAN tag if the rx payload
  1480. does not have VLAN. Used during decapsulation.
  1481. <legal all>
  1482. */
  1483. #define RX_MPDU_INFO_12_RX_INSERT_VLAN_C_TAG_PADDING_OFFSET 0x00000030
  1484. #define RX_MPDU_INFO_12_RX_INSERT_VLAN_C_TAG_PADDING_LSB 12
  1485. #define RX_MPDU_INFO_12_RX_INSERT_VLAN_C_TAG_PADDING_MASK 0x00001000
  1486. /* Description RX_MPDU_INFO_12_RX_INSERT_VLAN_S_TAG_PADDING
  1487. In case of ndp or phy_err or AST_based_lookup_valid ==
  1488. 0, this field will be set to 0
  1489. Insert 4 byte of all zeros as double VLAN tag if the rx
  1490. payload does not have VLAN. Used during
  1491. <legal all>
  1492. */
  1493. #define RX_MPDU_INFO_12_RX_INSERT_VLAN_S_TAG_PADDING_OFFSET 0x00000030
  1494. #define RX_MPDU_INFO_12_RX_INSERT_VLAN_S_TAG_PADDING_LSB 13
  1495. #define RX_MPDU_INFO_12_RX_INSERT_VLAN_S_TAG_PADDING_MASK 0x00002000
  1496. /* Description RX_MPDU_INFO_12_STRIP_VLAN_C_TAG_DECAP
  1497. In case of ndp or phy_err or AST_based_lookup_valid ==
  1498. 0, this field will be set to 0
  1499. Strip the VLAN during decapsulation.  Used by the OLE.
  1500. <legal all>
  1501. */
  1502. #define RX_MPDU_INFO_12_STRIP_VLAN_C_TAG_DECAP_OFFSET 0x00000030
  1503. #define RX_MPDU_INFO_12_STRIP_VLAN_C_TAG_DECAP_LSB 14
  1504. #define RX_MPDU_INFO_12_STRIP_VLAN_C_TAG_DECAP_MASK 0x00004000
  1505. /* Description RX_MPDU_INFO_12_STRIP_VLAN_S_TAG_DECAP
  1506. In case of ndp or phy_err or AST_based_lookup_valid ==
  1507. 0, this field will be set to 0
  1508. Strip the double VLAN during decapsulation.  Used by
  1509. the OLE.
  1510. <legal all>
  1511. */
  1512. #define RX_MPDU_INFO_12_STRIP_VLAN_S_TAG_DECAP_OFFSET 0x00000030
  1513. #define RX_MPDU_INFO_12_STRIP_VLAN_S_TAG_DECAP_LSB 15
  1514. #define RX_MPDU_INFO_12_STRIP_VLAN_S_TAG_DECAP_MASK 0x00008000
  1515. /* Description RX_MPDU_INFO_12_PRE_DELIM_COUNT
  1516. The number of delimiters before this MPDU.
  1517. Note that this number is cleared at PPDU start.
  1518. If this MPDU is the first received MPDU in the PPDU and
  1519. this MPDU gets filtered-in, this field will indicate the
  1520. number of delimiters located after the last MPDU in the
  1521. previous PPDU.
  1522. If this MPDU is located after the first received MPDU in
  1523. an PPDU, this field will indicate the number of delimiters
  1524. located between the previous MPDU and this MPDU.
  1525. In case of ndp or phy_err, this field will indicate the
  1526. number of delimiters located after the last MPDU in the
  1527. previous PPDU.
  1528. <legal all>
  1529. */
  1530. #define RX_MPDU_INFO_12_PRE_DELIM_COUNT_OFFSET 0x00000030
  1531. #define RX_MPDU_INFO_12_PRE_DELIM_COUNT_LSB 16
  1532. #define RX_MPDU_INFO_12_PRE_DELIM_COUNT_MASK 0x0fff0000
  1533. /* Description RX_MPDU_INFO_12_AMPDU_FLAG
  1534. When set, received frame was part of an A-MPDU.
  1535. <legal all>
  1536. */
  1537. #define RX_MPDU_INFO_12_AMPDU_FLAG_OFFSET 0x00000030
  1538. #define RX_MPDU_INFO_12_AMPDU_FLAG_LSB 28
  1539. #define RX_MPDU_INFO_12_AMPDU_FLAG_MASK 0x10000000
  1540. /* Description RX_MPDU_INFO_12_BAR_FRAME
  1541. In case of ndp or phy_err or AST_based_lookup_valid ==
  1542. 0, this field will be set to 0
  1543. When set, received frame is a BAR frame
  1544. <legal all>
  1545. */
  1546. #define RX_MPDU_INFO_12_BAR_FRAME_OFFSET 0x00000030
  1547. #define RX_MPDU_INFO_12_BAR_FRAME_LSB 29
  1548. #define RX_MPDU_INFO_12_BAR_FRAME_MASK 0x20000000
  1549. /* Description RX_MPDU_INFO_12_RAW_MPDU
  1550. Consumer: SW
  1551. Producer: RXOLE
  1552. RXPCU sets this field to 0 and RXOLE overwrites it.
  1553. Set to 1 by RXOLE when it has not performed any 802.11
  1554. to Ethernet/Natvie WiFi header conversion on this MPDU.
  1555. <legal all>
  1556. */
  1557. #define RX_MPDU_INFO_12_RAW_MPDU_OFFSET 0x00000030
  1558. #define RX_MPDU_INFO_12_RAW_MPDU_LSB 30
  1559. #define RX_MPDU_INFO_12_RAW_MPDU_MASK 0x40000000
  1560. /* Description RX_MPDU_INFO_12_RESERVED_12
  1561. <legal 0>
  1562. */
  1563. #define RX_MPDU_INFO_12_RESERVED_12_OFFSET 0x00000030
  1564. #define RX_MPDU_INFO_12_RESERVED_12_LSB 31
  1565. #define RX_MPDU_INFO_12_RESERVED_12_MASK 0x80000000
  1566. /* Description RX_MPDU_INFO_13_MPDU_LENGTH
  1567. In case of ndp or phy_err this field will be set to 0
  1568. MPDU length before decapsulation.
  1569. <legal all>
  1570. */
  1571. #define RX_MPDU_INFO_13_MPDU_LENGTH_OFFSET 0x00000034
  1572. #define RX_MPDU_INFO_13_MPDU_LENGTH_LSB 0
  1573. #define RX_MPDU_INFO_13_MPDU_LENGTH_MASK 0x00003fff
  1574. /* Description RX_MPDU_INFO_13_FIRST_MPDU
  1575. See definition in RX attention descriptor
  1576. In case of ndp or phy_err, this field will be set. Note
  1577. however that there will not actually be any data contents in
  1578. the MPDU.
  1579. <legal all>
  1580. */
  1581. #define RX_MPDU_INFO_13_FIRST_MPDU_OFFSET 0x00000034
  1582. #define RX_MPDU_INFO_13_FIRST_MPDU_LSB 14
  1583. #define RX_MPDU_INFO_13_FIRST_MPDU_MASK 0x00004000
  1584. /* Description RX_MPDU_INFO_13_MCAST_BCAST
  1585. In case of ndp or phy_err or Phy_err_during_mpdu_header
  1586. this field will be set to 0
  1587. See definition in RX attention descriptor
  1588. <legal all>
  1589. */
  1590. #define RX_MPDU_INFO_13_MCAST_BCAST_OFFSET 0x00000034
  1591. #define RX_MPDU_INFO_13_MCAST_BCAST_LSB 15
  1592. #define RX_MPDU_INFO_13_MCAST_BCAST_MASK 0x00008000
  1593. /* Description RX_MPDU_INFO_13_AST_INDEX_NOT_FOUND
  1594. In case of ndp or phy_err or Phy_err_during_mpdu_header
  1595. this field will be set to 0
  1596. See definition in RX attention descriptor
  1597. <legal all>
  1598. */
  1599. #define RX_MPDU_INFO_13_AST_INDEX_NOT_FOUND_OFFSET 0x00000034
  1600. #define RX_MPDU_INFO_13_AST_INDEX_NOT_FOUND_LSB 16
  1601. #define RX_MPDU_INFO_13_AST_INDEX_NOT_FOUND_MASK 0x00010000
  1602. /* Description RX_MPDU_INFO_13_AST_INDEX_TIMEOUT
  1603. In case of ndp or phy_err or Phy_err_during_mpdu_header
  1604. this field will be set to 0
  1605. See definition in RX attention descriptor
  1606. <legal all>
  1607. */
  1608. #define RX_MPDU_INFO_13_AST_INDEX_TIMEOUT_OFFSET 0x00000034
  1609. #define RX_MPDU_INFO_13_AST_INDEX_TIMEOUT_LSB 17
  1610. #define RX_MPDU_INFO_13_AST_INDEX_TIMEOUT_MASK 0x00020000
  1611. /* Description RX_MPDU_INFO_13_POWER_MGMT
  1612. In case of ndp or phy_err or Phy_err_during_mpdu_header
  1613. this field will be set to 0
  1614. See definition in RX attention descriptor
  1615. <legal all>
  1616. */
  1617. #define RX_MPDU_INFO_13_POWER_MGMT_OFFSET 0x00000034
  1618. #define RX_MPDU_INFO_13_POWER_MGMT_LSB 18
  1619. #define RX_MPDU_INFO_13_POWER_MGMT_MASK 0x00040000
  1620. /* Description RX_MPDU_INFO_13_NON_QOS
  1621. In case of ndp or phy_err or Phy_err_during_mpdu_header
  1622. this field will be set to 1
  1623. See definition in RX attention descriptor
  1624. <legal all>
  1625. */
  1626. #define RX_MPDU_INFO_13_NON_QOS_OFFSET 0x00000034
  1627. #define RX_MPDU_INFO_13_NON_QOS_LSB 19
  1628. #define RX_MPDU_INFO_13_NON_QOS_MASK 0x00080000
  1629. /* Description RX_MPDU_INFO_13_NULL_DATA
  1630. In case of ndp or phy_err or Phy_err_during_mpdu_header
  1631. this field will be set to 0
  1632. See definition in RX attention descriptor
  1633. <legal all>
  1634. */
  1635. #define RX_MPDU_INFO_13_NULL_DATA_OFFSET 0x00000034
  1636. #define RX_MPDU_INFO_13_NULL_DATA_LSB 20
  1637. #define RX_MPDU_INFO_13_NULL_DATA_MASK 0x00100000
  1638. /* Description RX_MPDU_INFO_13_MGMT_TYPE
  1639. In case of ndp or phy_err or Phy_err_during_mpdu_header
  1640. this field will be set to 0
  1641. See definition in RX attention descriptor
  1642. <legal all>
  1643. */
  1644. #define RX_MPDU_INFO_13_MGMT_TYPE_OFFSET 0x00000034
  1645. #define RX_MPDU_INFO_13_MGMT_TYPE_LSB 21
  1646. #define RX_MPDU_INFO_13_MGMT_TYPE_MASK 0x00200000
  1647. /* Description RX_MPDU_INFO_13_CTRL_TYPE
  1648. In case of ndp or phy_err or Phy_err_during_mpdu_header
  1649. this field will be set to 0
  1650. See definition in RX attention descriptor
  1651. <legal all>
  1652. */
  1653. #define RX_MPDU_INFO_13_CTRL_TYPE_OFFSET 0x00000034
  1654. #define RX_MPDU_INFO_13_CTRL_TYPE_LSB 22
  1655. #define RX_MPDU_INFO_13_CTRL_TYPE_MASK 0x00400000
  1656. /* Description RX_MPDU_INFO_13_MORE_DATA
  1657. In case of ndp or phy_err or Phy_err_during_mpdu_header
  1658. this field will be set to 0
  1659. See definition in RX attention descriptor
  1660. <legal all>
  1661. */
  1662. #define RX_MPDU_INFO_13_MORE_DATA_OFFSET 0x00000034
  1663. #define RX_MPDU_INFO_13_MORE_DATA_LSB 23
  1664. #define RX_MPDU_INFO_13_MORE_DATA_MASK 0x00800000
  1665. /* Description RX_MPDU_INFO_13_EOSP
  1666. In case of ndp or phy_err or Phy_err_during_mpdu_header
  1667. this field will be set to 0
  1668. See definition in RX attention descriptor
  1669. <legal all>
  1670. */
  1671. #define RX_MPDU_INFO_13_EOSP_OFFSET 0x00000034
  1672. #define RX_MPDU_INFO_13_EOSP_LSB 24
  1673. #define RX_MPDU_INFO_13_EOSP_MASK 0x01000000
  1674. /* Description RX_MPDU_INFO_13_FRAGMENT_FLAG
  1675. In case of ndp or phy_err or Phy_err_during_mpdu_header
  1676. this field will be set to 0
  1677. See definition in RX attention descriptor
  1678. <legal all>
  1679. */
  1680. #define RX_MPDU_INFO_13_FRAGMENT_FLAG_OFFSET 0x00000034
  1681. #define RX_MPDU_INFO_13_FRAGMENT_FLAG_LSB 25
  1682. #define RX_MPDU_INFO_13_FRAGMENT_FLAG_MASK 0x02000000
  1683. /* Description RX_MPDU_INFO_13_ORDER
  1684. In case of ndp or phy_err or Phy_err_during_mpdu_header
  1685. this field will be set to 0
  1686. See definition in RX attention descriptor
  1687. <legal all>
  1688. */
  1689. #define RX_MPDU_INFO_13_ORDER_OFFSET 0x00000034
  1690. #define RX_MPDU_INFO_13_ORDER_LSB 26
  1691. #define RX_MPDU_INFO_13_ORDER_MASK 0x04000000
  1692. /* Description RX_MPDU_INFO_13_U_APSD_TRIGGER
  1693. In case of ndp or phy_err or Phy_err_during_mpdu_header
  1694. this field will be set to 0
  1695. See definition in RX attention descriptor
  1696. <legal all>
  1697. */
  1698. #define RX_MPDU_INFO_13_U_APSD_TRIGGER_OFFSET 0x00000034
  1699. #define RX_MPDU_INFO_13_U_APSD_TRIGGER_LSB 27
  1700. #define RX_MPDU_INFO_13_U_APSD_TRIGGER_MASK 0x08000000
  1701. /* Description RX_MPDU_INFO_13_ENCRYPT_REQUIRED
  1702. In case of ndp or phy_err or Phy_err_during_mpdu_header
  1703. this field will be set to 0
  1704. See definition in RX attention descriptor
  1705. <legal all>
  1706. */
  1707. #define RX_MPDU_INFO_13_ENCRYPT_REQUIRED_OFFSET 0x00000034
  1708. #define RX_MPDU_INFO_13_ENCRYPT_REQUIRED_LSB 28
  1709. #define RX_MPDU_INFO_13_ENCRYPT_REQUIRED_MASK 0x10000000
  1710. /* Description RX_MPDU_INFO_13_DIRECTED
  1711. In case of ndp or phy_err or Phy_err_during_mpdu_header
  1712. this field will be set to 0
  1713. See definition in RX attention descriptor
  1714. <legal all>
  1715. */
  1716. #define RX_MPDU_INFO_13_DIRECTED_OFFSET 0x00000034
  1717. #define RX_MPDU_INFO_13_DIRECTED_LSB 29
  1718. #define RX_MPDU_INFO_13_DIRECTED_MASK 0x20000000
  1719. /* Description RX_MPDU_INFO_13_AMSDU_PRESENT
  1720. Field only valid when Mpdu_qos_control_valid is set
  1721. The 'amsdu_present' bit within the QoS control field of
  1722. the MPDU
  1723. <legal all>
  1724. */
  1725. #define RX_MPDU_INFO_13_AMSDU_PRESENT_OFFSET 0x00000034
  1726. #define RX_MPDU_INFO_13_AMSDU_PRESENT_LSB 30
  1727. #define RX_MPDU_INFO_13_AMSDU_PRESENT_MASK 0x40000000
  1728. /* Description RX_MPDU_INFO_13_RESERVED_13
  1729. <legal 0>
  1730. */
  1731. #define RX_MPDU_INFO_13_RESERVED_13_OFFSET 0x00000034
  1732. #define RX_MPDU_INFO_13_RESERVED_13_LSB 31
  1733. #define RX_MPDU_INFO_13_RESERVED_13_MASK 0x80000000
  1734. /* Description RX_MPDU_INFO_14_MPDU_FRAME_CONTROL_FIELD
  1735. Field only valid when Mpdu_frame_control_valid is set
  1736. The frame control field of this received MPDU.
  1737. Field only valid when Ndp_frame and phy_err are NOT set
  1738. Bytes 0 + 1 of the received MPDU
  1739. <legal all>
  1740. */
  1741. #define RX_MPDU_INFO_14_MPDU_FRAME_CONTROL_FIELD_OFFSET 0x00000038
  1742. #define RX_MPDU_INFO_14_MPDU_FRAME_CONTROL_FIELD_LSB 0
  1743. #define RX_MPDU_INFO_14_MPDU_FRAME_CONTROL_FIELD_MASK 0x0000ffff
  1744. /* Description RX_MPDU_INFO_14_MPDU_DURATION_FIELD
  1745. Field only valid when Mpdu_duration_valid is set
  1746. The duration field of this received MPDU.
  1747. <legal all>
  1748. */
  1749. #define RX_MPDU_INFO_14_MPDU_DURATION_FIELD_OFFSET 0x00000038
  1750. #define RX_MPDU_INFO_14_MPDU_DURATION_FIELD_LSB 16
  1751. #define RX_MPDU_INFO_14_MPDU_DURATION_FIELD_MASK 0xffff0000
  1752. /* Description RX_MPDU_INFO_15_MAC_ADDR_AD1_31_0
  1753. Field only valid when mac_addr_ad1_valid is set
  1754. The Least Significant 4 bytes of the Received Frames MAC
  1755. Address AD1
  1756. <legal all>
  1757. */
  1758. #define RX_MPDU_INFO_15_MAC_ADDR_AD1_31_0_OFFSET 0x0000003c
  1759. #define RX_MPDU_INFO_15_MAC_ADDR_AD1_31_0_LSB 0
  1760. #define RX_MPDU_INFO_15_MAC_ADDR_AD1_31_0_MASK 0xffffffff
  1761. /* Description RX_MPDU_INFO_16_MAC_ADDR_AD1_47_32
  1762. Field only valid when mac_addr_ad1_valid is set
  1763. The 2 most significant bytes of the Received Frames MAC
  1764. Address AD1
  1765. <legal all>
  1766. */
  1767. #define RX_MPDU_INFO_16_MAC_ADDR_AD1_47_32_OFFSET 0x00000040
  1768. #define RX_MPDU_INFO_16_MAC_ADDR_AD1_47_32_LSB 0
  1769. #define RX_MPDU_INFO_16_MAC_ADDR_AD1_47_32_MASK 0x0000ffff
  1770. /* Description RX_MPDU_INFO_16_MAC_ADDR_AD2_15_0
  1771. Field only valid when mac_addr_ad2_valid is set
  1772. The Least Significant 2 bytes of the Received Frames MAC
  1773. Address AD2
  1774. <legal all>
  1775. */
  1776. #define RX_MPDU_INFO_16_MAC_ADDR_AD2_15_0_OFFSET 0x00000040
  1777. #define RX_MPDU_INFO_16_MAC_ADDR_AD2_15_0_LSB 16
  1778. #define RX_MPDU_INFO_16_MAC_ADDR_AD2_15_0_MASK 0xffff0000
  1779. /* Description RX_MPDU_INFO_17_MAC_ADDR_AD2_47_16
  1780. Field only valid when mac_addr_ad2_valid is set
  1781. The 4 most significant bytes of the Received Frames MAC
  1782. Address AD2
  1783. <legal all>
  1784. */
  1785. #define RX_MPDU_INFO_17_MAC_ADDR_AD2_47_16_OFFSET 0x00000044
  1786. #define RX_MPDU_INFO_17_MAC_ADDR_AD2_47_16_LSB 0
  1787. #define RX_MPDU_INFO_17_MAC_ADDR_AD2_47_16_MASK 0xffffffff
  1788. /* Description RX_MPDU_INFO_18_MAC_ADDR_AD3_31_0
  1789. Field only valid when mac_addr_ad3_valid is set
  1790. The Least Significant 4 bytes of the Received Frames MAC
  1791. Address AD3
  1792. <legal all>
  1793. */
  1794. #define RX_MPDU_INFO_18_MAC_ADDR_AD3_31_0_OFFSET 0x00000048
  1795. #define RX_MPDU_INFO_18_MAC_ADDR_AD3_31_0_LSB 0
  1796. #define RX_MPDU_INFO_18_MAC_ADDR_AD3_31_0_MASK 0xffffffff
  1797. /* Description RX_MPDU_INFO_19_MAC_ADDR_AD3_47_32
  1798. Field only valid when mac_addr_ad3_valid is set
  1799. The 2 most significant bytes of the Received Frames MAC
  1800. Address AD3
  1801. <legal all>
  1802. */
  1803. #define RX_MPDU_INFO_19_MAC_ADDR_AD3_47_32_OFFSET 0x0000004c
  1804. #define RX_MPDU_INFO_19_MAC_ADDR_AD3_47_32_LSB 0
  1805. #define RX_MPDU_INFO_19_MAC_ADDR_AD3_47_32_MASK 0x0000ffff
  1806. /* Description RX_MPDU_INFO_19_MPDU_SEQUENCE_CONTROL_FIELD
  1807. The sequence control field of the MPDU
  1808. <legal all>
  1809. */
  1810. #define RX_MPDU_INFO_19_MPDU_SEQUENCE_CONTROL_FIELD_OFFSET 0x0000004c
  1811. #define RX_MPDU_INFO_19_MPDU_SEQUENCE_CONTROL_FIELD_LSB 16
  1812. #define RX_MPDU_INFO_19_MPDU_SEQUENCE_CONTROL_FIELD_MASK 0xffff0000
  1813. /* Description RX_MPDU_INFO_20_MAC_ADDR_AD4_31_0
  1814. Field only valid when mac_addr_ad4_valid is set
  1815. The Least Significant 4 bytes of the Received Frames MAC
  1816. Address AD4
  1817. <legal all>
  1818. */
  1819. #define RX_MPDU_INFO_20_MAC_ADDR_AD4_31_0_OFFSET 0x00000050
  1820. #define RX_MPDU_INFO_20_MAC_ADDR_AD4_31_0_LSB 0
  1821. #define RX_MPDU_INFO_20_MAC_ADDR_AD4_31_0_MASK 0xffffffff
  1822. /* Description RX_MPDU_INFO_21_MAC_ADDR_AD4_47_32
  1823. Field only valid when mac_addr_ad4_valid is set
  1824. The 2 most significant bytes of the Received Frames MAC
  1825. Address AD4
  1826. <legal all>
  1827. */
  1828. #define RX_MPDU_INFO_21_MAC_ADDR_AD4_47_32_OFFSET 0x00000054
  1829. #define RX_MPDU_INFO_21_MAC_ADDR_AD4_47_32_LSB 0
  1830. #define RX_MPDU_INFO_21_MAC_ADDR_AD4_47_32_MASK 0x0000ffff
  1831. /* Description RX_MPDU_INFO_21_MPDU_QOS_CONTROL_FIELD
  1832. Field only valid when mpdu_qos_control_valid is set
  1833. The sequence control field of the MPDU
  1834. <legal all>
  1835. */
  1836. #define RX_MPDU_INFO_21_MPDU_QOS_CONTROL_FIELD_OFFSET 0x00000054
  1837. #define RX_MPDU_INFO_21_MPDU_QOS_CONTROL_FIELD_LSB 16
  1838. #define RX_MPDU_INFO_21_MPDU_QOS_CONTROL_FIELD_MASK 0xffff0000
  1839. /* Description RX_MPDU_INFO_22_MPDU_HT_CONTROL_FIELD
  1840. Field only valid when mpdu_qos_control_valid is set
  1841. The HT control field of the MPDU
  1842. <legal all>
  1843. */
  1844. #define RX_MPDU_INFO_22_MPDU_HT_CONTROL_FIELD_OFFSET 0x00000058
  1845. #define RX_MPDU_INFO_22_MPDU_HT_CONTROL_FIELD_LSB 0
  1846. #define RX_MPDU_INFO_22_MPDU_HT_CONTROL_FIELD_MASK 0xffffffff
  1847. #endif // _RX_MPDU_INFO_H_