rx_mpdu_info.h 75 KB

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