rx_mpdu_info.h 77 KB

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