rx_mpdu_info.h 84 KB

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