rx_mpdu_info.h 100 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842184318441845184618471848184918501851185218531854185518561857185818591860186118621863186418651866186718681869187018711872187318741875187618771878187918801881188218831884188518861887188818891890189118921893189418951896189718981899190019011902190319041905190619071908190919101911191219131914191519161917191819191920192119221923192419251926192719281929193019311932193319341935193619371938193919401941194219431944194519461947194819491950195119521953195419551956195719581959196019611962196319641965196619671968196919701971197219731974197519761977197819791980198119821983198419851986198719881989199019911992199319941995199619971998199920002001200220032004200520062007200820092010201120122013201420152016201720182019202020212022202320242025202620272028202920302031203220332034203520362037203820392040204120422043204420452046204720482049205020512052205320542055205620572058205920602061206220632064206520662067206820692070207120722073207420752076207720782079208020812082208320842085208620872088208920902091209220932094209520962097209820992100210121022103210421052106210721082109211021112112211321142115211621172118211921202121212221232124212521262127212821292130213121322133213421352136213721382139214021412142214321442145214621472148214921502151215221532154215521562157215821592160216121622163216421652166216721682169217021712172217321742175217621772178217921802181218221832184218521862187218821892190219121922193219421952196219721982199220022012202220322042205220622072208220922102211221222132214221522162217221822192220222122222223222422252226222722282229223022312232223322342235223622372238223922402241224222432244224522462247224822492250225122522253225422552256225722582259226022612262226322642265226622672268226922702271227222732274227522762277227822792280228122822283228422852286228722882289229022912292229322942295229622972298229923002301230223032304230523062307230823092310231123122313231423152316231723182319232023212322232323242325232623272328232923302331233223332334233523362337233823392340234123422343234423452346234723482349235023512352235323542355235623572358235923602361236223632364236523662367236823692370237123722373237423752376237723782379238023812382238323842385238623872388238923902391239223932394239523962397239823992400240124022403240424052406240724082409241024112412241324142415
  1. /*
  2. * Copyright (c) 2023 Qualcomm Innovation Center, Inc. All rights reserved.
  3. *
  4. * Permission to use, copy, modify, and/or distribute this software for any
  5. * purpose with or without fee is hereby granted, provided that the above
  6. * copyright notice and this permission notice appear in all copies.
  7. *
  8. * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
  9. * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
  10. * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
  11. * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
  12. * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
  13. * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
  14. * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
  15. */
  16. #ifndef _RX_MPDU_INFO_H_
  17. #define _RX_MPDU_INFO_H_
  18. #if !defined(__ASSEMBLER__)
  19. #endif
  20. #include "rxpt_classify_info.h"
  21. #define NUM_OF_DWORDS_RX_MPDU_INFO 30
  22. struct rx_mpdu_info {
  23. #ifndef WIFI_BIT_ORDER_BIG_ENDIAN
  24. struct rxpt_classify_info rxpt_classify_info_details;
  25. uint32_t rx_reo_queue_desc_addr_31_0 : 32; // [31:0]
  26. uint32_t rx_reo_queue_desc_addr_39_32 : 8, // [7:0]
  27. receive_queue_number : 16, // [23:8]
  28. pre_delim_err_warning : 1, // [24:24]
  29. first_delim_err : 1, // [25:25]
  30. reserved_2a : 6; // [31:26]
  31. uint32_t pn_31_0 : 32; // [31:0]
  32. uint32_t pn_63_32 : 32; // [31:0]
  33. uint32_t pn_95_64 : 32; // [31:0]
  34. uint32_t pn_127_96 : 32; // [31:0]
  35. uint32_t epd_en : 1, // [0:0]
  36. all_frames_shall_be_encrypted : 1, // [1:1]
  37. encrypt_type : 4, // [5:2]
  38. wep_key_width_for_variable_key : 2, // [7:6]
  39. mesh_sta : 2, // [9:8]
  40. bssid_hit : 1, // [10:10]
  41. bssid_number : 4, // [14:11]
  42. tid : 4, // [18:15]
  43. reserved_7a : 13; // [31:19]
  44. uint32_t peer_meta_data : 32; // [31:0]
  45. uint32_t rxpcu_mpdu_filter_in_category : 2, // [1:0]
  46. sw_frame_group_id : 7, // [8:2]
  47. ndp_frame : 1, // [9:9]
  48. phy_err : 1, // [10:10]
  49. phy_err_during_mpdu_header : 1, // [11:11]
  50. protocol_version_err : 1, // [12:12]
  51. ast_based_lookup_valid : 1, // [13:13]
  52. ranging : 1, // [14:14]
  53. reserved_9a : 1, // [15:15]
  54. phy_ppdu_id : 16; // [31:16]
  55. uint32_t ast_index : 16, // [15:0]
  56. sw_peer_id : 16; // [31:16]
  57. uint32_t mpdu_frame_control_valid : 1, // [0:0]
  58. mpdu_duration_valid : 1, // [1:1]
  59. mac_addr_ad1_valid : 1, // [2:2]
  60. mac_addr_ad2_valid : 1, // [3:3]
  61. mac_addr_ad3_valid : 1, // [4:4]
  62. mac_addr_ad4_valid : 1, // [5:5]
  63. mpdu_sequence_control_valid : 1, // [6:6]
  64. mpdu_qos_control_valid : 1, // [7:7]
  65. mpdu_ht_control_valid : 1, // [8:8]
  66. frame_encryption_info_valid : 1, // [9:9]
  67. mpdu_fragment_number : 4, // [13:10]
  68. more_fragment_flag : 1, // [14:14]
  69. reserved_11a : 1, // [15:15]
  70. fr_ds : 1, // [16:16]
  71. to_ds : 1, // [17:17]
  72. encrypted : 1, // [18:18]
  73. mpdu_retry : 1, // [19:19]
  74. mpdu_sequence_number : 12; // [31:20]
  75. uint32_t key_id_octet : 8, // [7:0]
  76. new_peer_entry : 1, // [8:8]
  77. decrypt_needed : 1, // [9:9]
  78. decap_type : 2, // [11:10]
  79. rx_insert_vlan_c_tag_padding : 1, // [12:12]
  80. rx_insert_vlan_s_tag_padding : 1, // [13:13]
  81. strip_vlan_c_tag_decap : 1, // [14:14]
  82. strip_vlan_s_tag_decap : 1, // [15:15]
  83. pre_delim_count : 12, // [27:16]
  84. ampdu_flag : 1, // [28:28]
  85. bar_frame : 1, // [29:29]
  86. raw_mpdu : 1, // [30:30]
  87. reserved_12 : 1; // [31:31]
  88. uint32_t mpdu_length : 14, // [13:0]
  89. first_mpdu : 1, // [14:14]
  90. mcast_bcast : 1, // [15:15]
  91. ast_index_not_found : 1, // [16:16]
  92. ast_index_timeout : 1, // [17:17]
  93. power_mgmt : 1, // [18:18]
  94. non_qos : 1, // [19:19]
  95. null_data : 1, // [20:20]
  96. mgmt_type : 1, // [21:21]
  97. ctrl_type : 1, // [22:22]
  98. more_data : 1, // [23:23]
  99. eosp : 1, // [24:24]
  100. fragment_flag : 1, // [25:25]
  101. order : 1, // [26:26]
  102. u_apsd_trigger : 1, // [27:27]
  103. encrypt_required : 1, // [28:28]
  104. directed : 1, // [29:29]
  105. amsdu_present : 1, // [30:30]
  106. reserved_13 : 1; // [31:31]
  107. uint32_t mpdu_frame_control_field : 16, // [15:0]
  108. mpdu_duration_field : 16; // [31:16]
  109. uint32_t mac_addr_ad1_31_0 : 32; // [31:0]
  110. uint32_t mac_addr_ad1_47_32 : 16, // [15:0]
  111. mac_addr_ad2_15_0 : 16; // [31:16]
  112. uint32_t mac_addr_ad2_47_16 : 32; // [31:0]
  113. uint32_t mac_addr_ad3_31_0 : 32; // [31:0]
  114. uint32_t mac_addr_ad3_47_32 : 16, // [15:0]
  115. mpdu_sequence_control_field : 16; // [31:16]
  116. uint32_t mac_addr_ad4_31_0 : 32; // [31:0]
  117. uint32_t mac_addr_ad4_47_32 : 16, // [15:0]
  118. mpdu_qos_control_field : 16; // [31:16]
  119. uint32_t mpdu_ht_control_field : 32; // [31:0]
  120. uint32_t vdev_id : 8, // [7:0]
  121. service_code : 9, // [16:8]
  122. priority_valid : 1, // [17:17]
  123. src_info : 12, // [29:18]
  124. reserved_23a : 1, // [30:30]
  125. multi_link_addr_ad1_ad2_valid : 1; // [31:31]
  126. uint32_t multi_link_addr_ad1_31_0 : 32; // [31:0]
  127. uint32_t multi_link_addr_ad1_47_32 : 16, // [15:0]
  128. multi_link_addr_ad2_15_0 : 16; // [31:16]
  129. uint32_t multi_link_addr_ad2_47_16 : 32; // [31:0]
  130. uint32_t authorized_to_send_wds : 1, // [0:0]
  131. reserved_27a : 31; // [31:1]
  132. uint32_t reserved_28a : 32; // [31:0]
  133. uint32_t reserved_29a : 32; // [31:0]
  134. #else
  135. struct rxpt_classify_info rxpt_classify_info_details;
  136. uint32_t rx_reo_queue_desc_addr_31_0 : 32; // [31:0]
  137. uint32_t reserved_2a : 6, // [31:26]
  138. first_delim_err : 1, // [25:25]
  139. pre_delim_err_warning : 1, // [24:24]
  140. receive_queue_number : 16, // [23:8]
  141. rx_reo_queue_desc_addr_39_32 : 8; // [7:0]
  142. uint32_t pn_31_0 : 32; // [31:0]
  143. uint32_t pn_63_32 : 32; // [31:0]
  144. uint32_t pn_95_64 : 32; // [31:0]
  145. uint32_t pn_127_96 : 32; // [31:0]
  146. uint32_t reserved_7a : 13, // [31:19]
  147. tid : 4, // [18:15]
  148. bssid_number : 4, // [14:11]
  149. bssid_hit : 1, // [10:10]
  150. mesh_sta : 2, // [9:8]
  151. wep_key_width_for_variable_key : 2, // [7:6]
  152. encrypt_type : 4, // [5:2]
  153. all_frames_shall_be_encrypted : 1, // [1:1]
  154. epd_en : 1; // [0:0]
  155. uint32_t peer_meta_data : 32; // [31:0]
  156. uint32_t phy_ppdu_id : 16, // [31:16]
  157. reserved_9a : 1, // [15:15]
  158. ranging : 1, // [14:14]
  159. ast_based_lookup_valid : 1, // [13:13]
  160. protocol_version_err : 1, // [12:12]
  161. phy_err_during_mpdu_header : 1, // [11:11]
  162. phy_err : 1, // [10:10]
  163. ndp_frame : 1, // [9:9]
  164. sw_frame_group_id : 7, // [8:2]
  165. rxpcu_mpdu_filter_in_category : 2; // [1:0]
  166. uint32_t sw_peer_id : 16, // [31:16]
  167. ast_index : 16; // [15:0]
  168. uint32_t mpdu_sequence_number : 12, // [31:20]
  169. mpdu_retry : 1, // [19:19]
  170. encrypted : 1, // [18:18]
  171. to_ds : 1, // [17:17]
  172. fr_ds : 1, // [16:16]
  173. reserved_11a : 1, // [15:15]
  174. more_fragment_flag : 1, // [14:14]
  175. mpdu_fragment_number : 4, // [13:10]
  176. frame_encryption_info_valid : 1, // [9:9]
  177. mpdu_ht_control_valid : 1, // [8:8]
  178. mpdu_qos_control_valid : 1, // [7:7]
  179. mpdu_sequence_control_valid : 1, // [6:6]
  180. mac_addr_ad4_valid : 1, // [5:5]
  181. mac_addr_ad3_valid : 1, // [4:4]
  182. mac_addr_ad2_valid : 1, // [3:3]
  183. mac_addr_ad1_valid : 1, // [2:2]
  184. mpdu_duration_valid : 1, // [1:1]
  185. mpdu_frame_control_valid : 1; // [0:0]
  186. uint32_t reserved_12 : 1, // [31:31]
  187. raw_mpdu : 1, // [30:30]
  188. bar_frame : 1, // [29:29]
  189. ampdu_flag : 1, // [28:28]
  190. pre_delim_count : 12, // [27:16]
  191. strip_vlan_s_tag_decap : 1, // [15:15]
  192. strip_vlan_c_tag_decap : 1, // [14:14]
  193. rx_insert_vlan_s_tag_padding : 1, // [13:13]
  194. rx_insert_vlan_c_tag_padding : 1, // [12:12]
  195. decap_type : 2, // [11:10]
  196. decrypt_needed : 1, // [9:9]
  197. new_peer_entry : 1, // [8:8]
  198. key_id_octet : 8; // [7:0]
  199. uint32_t reserved_13 : 1, // [31:31]
  200. amsdu_present : 1, // [30:30]
  201. directed : 1, // [29:29]
  202. encrypt_required : 1, // [28:28]
  203. u_apsd_trigger : 1, // [27:27]
  204. order : 1, // [26:26]
  205. fragment_flag : 1, // [25:25]
  206. eosp : 1, // [24:24]
  207. more_data : 1, // [23:23]
  208. ctrl_type : 1, // [22:22]
  209. mgmt_type : 1, // [21:21]
  210. null_data : 1, // [20:20]
  211. non_qos : 1, // [19:19]
  212. power_mgmt : 1, // [18:18]
  213. ast_index_timeout : 1, // [17:17]
  214. ast_index_not_found : 1, // [16:16]
  215. mcast_bcast : 1, // [15:15]
  216. first_mpdu : 1, // [14:14]
  217. mpdu_length : 14; // [13:0]
  218. uint32_t mpdu_duration_field : 16, // [31:16]
  219. mpdu_frame_control_field : 16; // [15:0]
  220. uint32_t mac_addr_ad1_31_0 : 32; // [31:0]
  221. uint32_t mac_addr_ad2_15_0 : 16, // [31:16]
  222. mac_addr_ad1_47_32 : 16; // [15:0]
  223. uint32_t mac_addr_ad2_47_16 : 32; // [31:0]
  224. uint32_t mac_addr_ad3_31_0 : 32; // [31:0]
  225. uint32_t mpdu_sequence_control_field : 16, // [31:16]
  226. mac_addr_ad3_47_32 : 16; // [15:0]
  227. uint32_t mac_addr_ad4_31_0 : 32; // [31:0]
  228. uint32_t mpdu_qos_control_field : 16, // [31:16]
  229. mac_addr_ad4_47_32 : 16; // [15:0]
  230. uint32_t mpdu_ht_control_field : 32; // [31:0]
  231. uint32_t multi_link_addr_ad1_ad2_valid : 1, // [31:31]
  232. reserved_23a : 1, // [30:30]
  233. src_info : 12, // [29:18]
  234. priority_valid : 1, // [17:17]
  235. service_code : 9, // [16:8]
  236. vdev_id : 8; // [7:0]
  237. uint32_t multi_link_addr_ad1_31_0 : 32; // [31:0]
  238. uint32_t multi_link_addr_ad2_15_0 : 16, // [31:16]
  239. multi_link_addr_ad1_47_32 : 16; // [15:0]
  240. uint32_t multi_link_addr_ad2_47_16 : 32; // [31:0]
  241. uint32_t reserved_27a : 31, // [31:1]
  242. authorized_to_send_wds : 1; // [0:0]
  243. uint32_t reserved_28a : 32; // [31:0]
  244. uint32_t reserved_29a : 32; // [31:0]
  245. #endif
  246. };
  247. /* Description RXPT_CLASSIFY_INFO_DETAILS
  248. In case of ndp or phy_err or AST_based_lookup_valid == 0,
  249. this field will be set to 0
  250. RXOLE related classification info
  251. <legal all
  252. */
  253. /* Description REO_DESTINATION_INDICATION
  254. The ID of the REO exit ring where the MSDU frame shall push
  255. after (MPDU level) reordering has finished.
  256. <enum 0 reo_destination_sw0> Reo will push the frame into
  257. the REO2SW0 ring
  258. <enum 1 reo_destination_sw1> Reo will push the frame into
  259. the REO2SW1 ring
  260. <enum 2 reo_destination_sw2> Reo will push the frame into
  261. the REO2SW2 ring
  262. <enum 3 reo_destination_sw3> Reo will push the frame into
  263. the REO2SW3 ring
  264. <enum 4 reo_destination_sw4> Reo will push the frame into
  265. the REO2SW4 ring
  266. <enum 5 reo_destination_release> Reo will push the frame
  267. into the REO_release ring
  268. <enum 6 reo_destination_fw> Reo will push the frame into
  269. the REO2FW ring
  270. <enum 7 reo_destination_sw5> Reo will push the frame into
  271. the REO2SW5 ring (REO remaps this in chips without REO2SW5
  272. ring)
  273. <enum 8 reo_destination_sw6> Reo will push the frame into
  274. the REO2SW6 ring (REO remaps this in chips without REO2SW6
  275. ring)
  276. <enum 9 reo_destination_sw7> Reo will push the frame into
  277. the REO2SW7 ring (REO remaps this in chips without REO2SW7
  278. ring)
  279. <enum 10 reo_destination_sw8> Reo will push the frame into
  280. the REO2SW8 ring (REO remaps this in chips without REO2SW8
  281. ring)
  282. <enum 11 reo_destination_11> REO remaps this
  283. <enum 12 reo_destination_12> REO remaps this <enum 13 reo_destination_13>
  284. REO remaps this
  285. <enum 14 reo_destination_14> REO remaps this
  286. <enum 15 reo_destination_15> REO remaps this
  287. <enum 16 reo_destination_16> REO remaps this
  288. <enum 17 reo_destination_17> REO remaps this
  289. <enum 18 reo_destination_18> REO remaps this
  290. <enum 19 reo_destination_19> REO remaps this
  291. <enum 20 reo_destination_20> REO remaps this
  292. <enum 21 reo_destination_21> REO remaps this
  293. <enum 22 reo_destination_22> REO remaps this
  294. <enum 23 reo_destination_23> REO remaps this
  295. <enum 24 reo_destination_24> REO remaps this
  296. <enum 25 reo_destination_25> REO remaps this
  297. <enum 26 reo_destination_26> REO remaps this
  298. <enum 27 reo_destination_27> REO remaps this
  299. <enum 28 reo_destination_28> REO remaps this
  300. <enum 29 reo_destination_29> REO remaps this
  301. <enum 30 reo_destination_30> REO remaps this
  302. <enum 31 reo_destination_31> REO remaps this
  303. <legal all>
  304. */
  305. #define RX_MPDU_INFO_RXPT_CLASSIFY_INFO_DETAILS_REO_DESTINATION_INDICATION_OFFSET 0x00000000
  306. #define RX_MPDU_INFO_RXPT_CLASSIFY_INFO_DETAILS_REO_DESTINATION_INDICATION_LSB 0
  307. #define RX_MPDU_INFO_RXPT_CLASSIFY_INFO_DETAILS_REO_DESTINATION_INDICATION_MSB 4
  308. #define RX_MPDU_INFO_RXPT_CLASSIFY_INFO_DETAILS_REO_DESTINATION_INDICATION_MASK 0x0000001f
  309. /* Description LMAC_PEER_ID_MSB
  310. If use_flow_id_toeplitz_clfy is set and lmac_peer_id_'sb
  311. is 2'b00, Rx OLE uses a REO desination indicati'n of {1'b1,
  312. hash[3:0]} using the chosen Toeplitz hash from Common Parser
  313. if flow search fails.
  314. If use_flow_id_toeplitz_clfy is set and lmac_peer_id_msb
  315. 's not 2'b00, Rx OLE uses a REO desination indication of
  316. {lmac_peer_id_msb, hash[2:0]} using the chosen Toeplitz
  317. hash from Common Parser if flow search fails.
  318. <legal all>
  319. */
  320. #define RX_MPDU_INFO_RXPT_CLASSIFY_INFO_DETAILS_LMAC_PEER_ID_MSB_OFFSET 0x00000000
  321. #define RX_MPDU_INFO_RXPT_CLASSIFY_INFO_DETAILS_LMAC_PEER_ID_MSB_LSB 5
  322. #define RX_MPDU_INFO_RXPT_CLASSIFY_INFO_DETAILS_LMAC_PEER_ID_MSB_MSB 6
  323. #define RX_MPDU_INFO_RXPT_CLASSIFY_INFO_DETAILS_LMAC_PEER_ID_MSB_MASK 0x00000060
  324. /* Description USE_FLOW_ID_TOEPLITZ_CLFY
  325. Indication to Rx OLE to enable REO destination routing based
  326. on the chosen Toeplitz hash from Common Parser, in case
  327. flow search fails
  328. <legal all>
  329. */
  330. #define RX_MPDU_INFO_RXPT_CLASSIFY_INFO_DETAILS_USE_FLOW_ID_TOEPLITZ_CLFY_OFFSET 0x00000000
  331. #define RX_MPDU_INFO_RXPT_CLASSIFY_INFO_DETAILS_USE_FLOW_ID_TOEPLITZ_CLFY_LSB 7
  332. #define RX_MPDU_INFO_RXPT_CLASSIFY_INFO_DETAILS_USE_FLOW_ID_TOEPLITZ_CLFY_MSB 7
  333. #define RX_MPDU_INFO_RXPT_CLASSIFY_INFO_DETAILS_USE_FLOW_ID_TOEPLITZ_CLFY_MASK 0x00000080
  334. /* Description PKT_SELECTION_FP_UCAST_DATA
  335. Filter pass Unicast data frame (matching rxpcu_filter_pass
  336. and sw_frame_group_Unicast_data) routing selection
  337. TODO: What about 'rxpcu_filter_pass_monior_ovrd'?
  338. 1'b0: source and destination rings are selected from the
  339. RxOLE register settings for the packet type
  340. 1'b1: source ring and destination ring is selected from
  341. the rxdma0_source_ring_selection and rxdma0_destination_ring_selection
  342. fields in this STRUCT
  343. <legal all>
  344. */
  345. #define RX_MPDU_INFO_RXPT_CLASSIFY_INFO_DETAILS_PKT_SELECTION_FP_UCAST_DATA_OFFSET 0x00000000
  346. #define RX_MPDU_INFO_RXPT_CLASSIFY_INFO_DETAILS_PKT_SELECTION_FP_UCAST_DATA_LSB 8
  347. #define RX_MPDU_INFO_RXPT_CLASSIFY_INFO_DETAILS_PKT_SELECTION_FP_UCAST_DATA_MSB 8
  348. #define RX_MPDU_INFO_RXPT_CLASSIFY_INFO_DETAILS_PKT_SELECTION_FP_UCAST_DATA_MASK 0x00000100
  349. /* Description PKT_SELECTION_FP_MCAST_DATA
  350. Filter pass Multicast data frame (matching rxpcu_filter_pass
  351. and sw_frame_group_Multicast_data) routing selection
  352. TODO: What about 'rxpcu_filter_pass_monior_ovrd'?
  353. 1'b0: source and destination rings are selected from the
  354. RxOLE register settings for the packet type
  355. 1'b1: source ring and destination ring is selected from
  356. the rxdma0_source_ring_selection and rxdma0_destination_ring_selection
  357. fields in this STRUCT
  358. <legal all>
  359. */
  360. #define RX_MPDU_INFO_RXPT_CLASSIFY_INFO_DETAILS_PKT_SELECTION_FP_MCAST_DATA_OFFSET 0x00000000
  361. #define RX_MPDU_INFO_RXPT_CLASSIFY_INFO_DETAILS_PKT_SELECTION_FP_MCAST_DATA_LSB 9
  362. #define RX_MPDU_INFO_RXPT_CLASSIFY_INFO_DETAILS_PKT_SELECTION_FP_MCAST_DATA_MSB 9
  363. #define RX_MPDU_INFO_RXPT_CLASSIFY_INFO_DETAILS_PKT_SELECTION_FP_MCAST_DATA_MASK 0x00000200
  364. /* Description PKT_SELECTION_FP_1000
  365. Filter pass BAR frame (matching rxpcu_filter_pass and sw_frame_group_ctrl_1000)
  366. routing selection
  367. TODO: What about 'rxpcu_filter_pass_monior_ovrd'?
  368. 1'b0: source and destination rings are selected from the
  369. RxOLE register settings for the packet type
  370. 1'b1: source ring and destination ring is selected from
  371. the rxdma0_source_ring_selection and rxdma0_destination_ring_selection
  372. fields in this STRUCT
  373. <legal all>
  374. */
  375. #define RX_MPDU_INFO_RXPT_CLASSIFY_INFO_DETAILS_PKT_SELECTION_FP_1000_OFFSET 0x00000000
  376. #define RX_MPDU_INFO_RXPT_CLASSIFY_INFO_DETAILS_PKT_SELECTION_FP_1000_LSB 10
  377. #define RX_MPDU_INFO_RXPT_CLASSIFY_INFO_DETAILS_PKT_SELECTION_FP_1000_MSB 10
  378. #define RX_MPDU_INFO_RXPT_CLASSIFY_INFO_DETAILS_PKT_SELECTION_FP_1000_MASK 0x00000400
  379. /* Description RXDMA0_SOURCE_RING_SELECTION
  380. Field only valid when for the received frame type the corresponding
  381. pkt_selection_fp_... bit is set
  382. <enum 0 sw2rxdma0_0_buf_source_ring> The data buffer for
  383. this frame shall be sourced by sw2rxdma0 buffer source
  384. ring.
  385. <enum 1 fw2rxdma0_pmac0_buf_source_ring> The data buffer
  386. for this frame shall be sourced by fw2rxdma buffer source
  387. ring for PMAC0.
  388. <enum 2 sw2rxdma0_1_buf_source_ring> The data buffer for
  389. this frame shall be sourced by sw2rxdma1 buffer source
  390. ring.
  391. <enum 3 no_buffer_rxdma0_ring> The frame shall not be written
  392. to any data buffer.
  393. <enum 4 sw2rxdma0_exception_buf_source_ring> The data buffer
  394. for this frame shall be sourced by sw2rxdma_exception buffer
  395. source ring.
  396. <enum 5 fw2rxdma0_pmac1_buf_source_ring> The data buffer
  397. for this frame shall be sourced by fw2rxdma buffer source
  398. ring for PMAC1.
  399. <legal 0-5>
  400. */
  401. #define RX_MPDU_INFO_RXPT_CLASSIFY_INFO_DETAILS_RXDMA0_SOURCE_RING_SELECTION_OFFSET 0x00000000
  402. #define RX_MPDU_INFO_RXPT_CLASSIFY_INFO_DETAILS_RXDMA0_SOURCE_RING_SELECTION_LSB 11
  403. #define RX_MPDU_INFO_RXPT_CLASSIFY_INFO_DETAILS_RXDMA0_SOURCE_RING_SELECTION_MSB 13
  404. #define RX_MPDU_INFO_RXPT_CLASSIFY_INFO_DETAILS_RXDMA0_SOURCE_RING_SELECTION_MASK 0x00003800
  405. /* Description RXDMA0_DESTINATION_RING_SELECTION
  406. Field only valid when for the received frame type the corresponding
  407. pkt_selection_fp_... bit is set
  408. <enum 0 rxdma_release_ring> RXDMA0 shall push the frame
  409. to the Release ring. Effectively this means the frame needs
  410. to be dropped.
  411. <enum 1 rxdma2fw_pmac0_ring> RXDMA0 shall push the frame
  412. to the FW ring for PMAC0.
  413. <enum 2 rxdma2sw_ring> RXDMA0 shall push the frame to the
  414. SW ring.
  415. <enum 3 rxdma2reo_ring> RXDMA0 shall push the frame to
  416. the REO entrance ring.
  417. <enum 4 rxdma2fw_pmac1_ring> RXDMA0 shall push the frame
  418. to the FW ring for PMAC1.
  419. <enum 5 rxdma2reo_remote0_ring> RXDMA0 shall push the frame
  420. to the first MLO REO entrance ring.
  421. <enum 6 rxdma2reo_remote1_ring> RXDMA0 shall push the frame
  422. to the second MLO REO entrance ring.
  423. <legal 0-6>
  424. */
  425. #define RX_MPDU_INFO_RXPT_CLASSIFY_INFO_DETAILS_RXDMA0_DESTINATION_RING_SELECTION_OFFSET 0x00000000
  426. #define RX_MPDU_INFO_RXPT_CLASSIFY_INFO_DETAILS_RXDMA0_DESTINATION_RING_SELECTION_LSB 14
  427. #define RX_MPDU_INFO_RXPT_CLASSIFY_INFO_DETAILS_RXDMA0_DESTINATION_RING_SELECTION_MSB 16
  428. #define RX_MPDU_INFO_RXPT_CLASSIFY_INFO_DETAILS_RXDMA0_DESTINATION_RING_SELECTION_MASK 0x0001c000
  429. /* Description MCAST_ECHO_DROP_ENABLE
  430. If set, for multicast packets, multicast echo check (i.e.
  431. SA search with mcast_echo_check = 1) shall be performed
  432. by RXOLE, and any multicast echo packets should be indicated
  433. to RXDMA for release to WBM
  434. <legal all>
  435. */
  436. #define RX_MPDU_INFO_RXPT_CLASSIFY_INFO_DETAILS_MCAST_ECHO_DROP_ENABLE_OFFSET 0x00000000
  437. #define RX_MPDU_INFO_RXPT_CLASSIFY_INFO_DETAILS_MCAST_ECHO_DROP_ENABLE_LSB 17
  438. #define RX_MPDU_INFO_RXPT_CLASSIFY_INFO_DETAILS_MCAST_ECHO_DROP_ENABLE_MSB 17
  439. #define RX_MPDU_INFO_RXPT_CLASSIFY_INFO_DETAILS_MCAST_ECHO_DROP_ENABLE_MASK 0x00020000
  440. /* Description WDS_LEARNING_DETECT_EN
  441. If set, WDS learning detection based on SA search and notification
  442. to FW (using RXDMA0 status ring) is enabled and the "timestamp"
  443. field in address search failure cache-only entry should
  444. be used to avoid multiple WDS learning notifications.
  445. <legal all>
  446. */
  447. #define RX_MPDU_INFO_RXPT_CLASSIFY_INFO_DETAILS_WDS_LEARNING_DETECT_EN_OFFSET 0x00000000
  448. #define RX_MPDU_INFO_RXPT_CLASSIFY_INFO_DETAILS_WDS_LEARNING_DETECT_EN_LSB 18
  449. #define RX_MPDU_INFO_RXPT_CLASSIFY_INFO_DETAILS_WDS_LEARNING_DETECT_EN_MSB 18
  450. #define RX_MPDU_INFO_RXPT_CLASSIFY_INFO_DETAILS_WDS_LEARNING_DETECT_EN_MASK 0x00040000
  451. /* Description INTRABSS_CHECK_EN
  452. If set, intra-BSS routing detection is enabled
  453. <legal all>
  454. */
  455. #define RX_MPDU_INFO_RXPT_CLASSIFY_INFO_DETAILS_INTRABSS_CHECK_EN_OFFSET 0x00000000
  456. #define RX_MPDU_INFO_RXPT_CLASSIFY_INFO_DETAILS_INTRABSS_CHECK_EN_LSB 19
  457. #define RX_MPDU_INFO_RXPT_CLASSIFY_INFO_DETAILS_INTRABSS_CHECK_EN_MSB 19
  458. #define RX_MPDU_INFO_RXPT_CLASSIFY_INFO_DETAILS_INTRABSS_CHECK_EN_MASK 0x00080000
  459. /* Description USE_PPE
  460. Indicates to RXDMA to ignore the REO_destination_indication
  461. and use a programmed value corresponding to the REO2PPE
  462. ring
  463. This override to REO2PPE for packets requiring multiple
  464. buffers shall be disabled based on an RXDMA configuration,
  465. as PPE may not support such packets.
  466. <legal all>
  467. */
  468. #define RX_MPDU_INFO_RXPT_CLASSIFY_INFO_DETAILS_USE_PPE_OFFSET 0x00000000
  469. #define RX_MPDU_INFO_RXPT_CLASSIFY_INFO_DETAILS_USE_PPE_LSB 20
  470. #define RX_MPDU_INFO_RXPT_CLASSIFY_INFO_DETAILS_USE_PPE_MSB 20
  471. #define RX_MPDU_INFO_RXPT_CLASSIFY_INFO_DETAILS_USE_PPE_MASK 0x00100000
  472. /* Description PPE_ROUTING_ENABLE
  473. Global enable/disable bit for routing to PPE, used to disable
  474. PPE routing even if RXOLE CCE or flow search indicate 'Use_PPE'
  475. This is set by SW for peers which are being handled by a
  476. host SW/accelerator subsystem that also handles packet
  477. buffer management for WiFi-to-PPE routing.
  478. This is cleared by SW for peers which are being handled
  479. by a different subsystem, completely disabling WiFi-to-PPE
  480. routing for such peers.
  481. <legal all>
  482. */
  483. #define RX_MPDU_INFO_RXPT_CLASSIFY_INFO_DETAILS_PPE_ROUTING_ENABLE_OFFSET 0x00000000
  484. #define RX_MPDU_INFO_RXPT_CLASSIFY_INFO_DETAILS_PPE_ROUTING_ENABLE_LSB 21
  485. #define RX_MPDU_INFO_RXPT_CLASSIFY_INFO_DETAILS_PPE_ROUTING_ENABLE_MSB 21
  486. #define RX_MPDU_INFO_RXPT_CLASSIFY_INFO_DETAILS_PPE_ROUTING_ENABLE_MASK 0x00200000
  487. /* Description RESERVED_0B
  488. <legal 0>
  489. */
  490. #define RX_MPDU_INFO_RXPT_CLASSIFY_INFO_DETAILS_RESERVED_0B_OFFSET 0x00000000
  491. #define RX_MPDU_INFO_RXPT_CLASSIFY_INFO_DETAILS_RESERVED_0B_LSB 22
  492. #define RX_MPDU_INFO_RXPT_CLASSIFY_INFO_DETAILS_RESERVED_0B_MSB 31
  493. #define RX_MPDU_INFO_RXPT_CLASSIFY_INFO_DETAILS_RESERVED_0B_MASK 0xffc00000
  494. /* Description RX_REO_QUEUE_DESC_ADDR_31_0
  495. In case of ndp or phy_err or AST_based_lookup_valid == 0,
  496. this field will be set to 0
  497. Address (lower 32 bits) of the REO queue descriptor.
  498. If no Peer entry lookup happened for this frame, the value
  499. wil be set to 0, and the frame shall never be pushed to
  500. REO entrance ring.
  501. <legal all>
  502. */
  503. #define RX_MPDU_INFO_RX_REO_QUEUE_DESC_ADDR_31_0_OFFSET 0x00000004
  504. #define RX_MPDU_INFO_RX_REO_QUEUE_DESC_ADDR_31_0_LSB 0
  505. #define RX_MPDU_INFO_RX_REO_QUEUE_DESC_ADDR_31_0_MSB 31
  506. #define RX_MPDU_INFO_RX_REO_QUEUE_DESC_ADDR_31_0_MASK 0xffffffff
  507. /* Description RX_REO_QUEUE_DESC_ADDR_39_32
  508. In case of ndp or phy_err or AST_based_lookup_valid == 0,
  509. this field will be set to 0
  510. Address (upper 8 bits) of the REO queue descriptor.
  511. If no Peer entry lookup happened for this frame, the value
  512. wil be set to 0, and the frame shall never be pushed to
  513. REO entrance ring.
  514. <legal all>
  515. */
  516. #define RX_MPDU_INFO_RX_REO_QUEUE_DESC_ADDR_39_32_OFFSET 0x00000008
  517. #define RX_MPDU_INFO_RX_REO_QUEUE_DESC_ADDR_39_32_LSB 0
  518. #define RX_MPDU_INFO_RX_REO_QUEUE_DESC_ADDR_39_32_MSB 7
  519. #define RX_MPDU_INFO_RX_REO_QUEUE_DESC_ADDR_39_32_MASK 0x000000ff
  520. /* Description RECEIVE_QUEUE_NUMBER
  521. In case of ndp or phy_err or AST_based_lookup_valid == 0,
  522. this field will be set to 0
  523. Indicates the MPDU queue ID to which this MPDU link descriptor
  524. belongs
  525. Used for tracking and debugging
  526. <legal all>
  527. */
  528. #define RX_MPDU_INFO_RECEIVE_QUEUE_NUMBER_OFFSET 0x00000008
  529. #define RX_MPDU_INFO_RECEIVE_QUEUE_NUMBER_LSB 8
  530. #define RX_MPDU_INFO_RECEIVE_QUEUE_NUMBER_MSB 23
  531. #define RX_MPDU_INFO_RECEIVE_QUEUE_NUMBER_MASK 0x00ffff00
  532. /* Description PRE_DELIM_ERR_WARNING
  533. Indicates that a delimiter FCS error was found in between
  534. the Previous MPDU and this MPDU.
  535. Note that this is just a warning, and does not mean that
  536. this MPDU is corrupted in any way. If it is, there will
  537. be other errors indicated such as FCS or decrypt errors
  538. In case of ndp or phy_err, this field will indicate at least
  539. one of delimiters located after the last MPDU in the previous
  540. PPDU has been corrupted.
  541. */
  542. #define RX_MPDU_INFO_PRE_DELIM_ERR_WARNING_OFFSET 0x00000008
  543. #define RX_MPDU_INFO_PRE_DELIM_ERR_WARNING_LSB 24
  544. #define RX_MPDU_INFO_PRE_DELIM_ERR_WARNING_MSB 24
  545. #define RX_MPDU_INFO_PRE_DELIM_ERR_WARNING_MASK 0x01000000
  546. /* Description FIRST_DELIM_ERR
  547. Indicates that the first delimiter had a FCS failure. Only
  548. valid when first_mpdu and first_msdu are set.
  549. In case of ndp or phy_err, this field will never be set.
  550. */
  551. #define RX_MPDU_INFO_FIRST_DELIM_ERR_OFFSET 0x00000008
  552. #define RX_MPDU_INFO_FIRST_DELIM_ERR_LSB 25
  553. #define RX_MPDU_INFO_FIRST_DELIM_ERR_MSB 25
  554. #define RX_MPDU_INFO_FIRST_DELIM_ERR_MASK 0x02000000
  555. /* Description RESERVED_2A
  556. <legal 0>
  557. */
  558. #define RX_MPDU_INFO_RESERVED_2A_OFFSET 0x00000008
  559. #define RX_MPDU_INFO_RESERVED_2A_LSB 26
  560. #define RX_MPDU_INFO_RESERVED_2A_MSB 31
  561. #define RX_MPDU_INFO_RESERVED_2A_MASK 0xfc000000
  562. /* Description PN_31_0
  563. Field only valid when Frame_encryption_info_valid is set
  564. Bits [31:0] of the PN number extracted from the IV field
  565. WEP: IV = {key_id_octet, pn2, pn1, pn0}. Only pn[23:0]
  566. is valid.
  567. TKIP: IV = {pn5, pn4, pn3, pn2, key_id_octet, pn0, WEPSeed[1],
  568. pn1}. Only pn[47:0] is valid.
  569. AES-CCM: IV = {pn5, pn4, pn3, pn2, key_id_octet, 0x0, pn1,
  570. pn0}. Only pn[47:0] is valid.
  571. WAPI: IV = {key_id_octet, 0x0, pn15, pn14, pn13, pn12, pn11,
  572. pn10, pn9, pn8, pn7, pn6, pn5, pn4, pn3, pn2, pn1, pn0}.
  573. pn[127:0] are valid.
  574. In case of ndp or phy_err, this field will never be set.
  575. */
  576. #define RX_MPDU_INFO_PN_31_0_OFFSET 0x0000000c
  577. #define RX_MPDU_INFO_PN_31_0_LSB 0
  578. #define RX_MPDU_INFO_PN_31_0_MSB 31
  579. #define RX_MPDU_INFO_PN_31_0_MASK 0xffffffff
  580. /* Description PN_63_32
  581. Field only valid when Frame_encryption_info_valid is set
  582. Bits [63:32] of the PN number. See description for pn_31_0.
  583. In case of ndp or phy_err, this field will never be set.
  584. */
  585. #define RX_MPDU_INFO_PN_63_32_OFFSET 0x00000010
  586. #define RX_MPDU_INFO_PN_63_32_LSB 0
  587. #define RX_MPDU_INFO_PN_63_32_MSB 31
  588. #define RX_MPDU_INFO_PN_63_32_MASK 0xffffffff
  589. /* Description PN_95_64
  590. Field only valid when Frame_encryption_info_valid is set
  591. Bits [95:64] of the PN number. See description for pn_31_0.
  592. In case of ndp or phy_err, this field will never be set.
  593. */
  594. #define RX_MPDU_INFO_PN_95_64_OFFSET 0x00000014
  595. #define RX_MPDU_INFO_PN_95_64_LSB 0
  596. #define RX_MPDU_INFO_PN_95_64_MSB 31
  597. #define RX_MPDU_INFO_PN_95_64_MASK 0xffffffff
  598. /* Description PN_127_96
  599. Field only valid when Frame_encryption_info_valid is set
  600. Bits [127:96] of the PN number. See description for pn_31_0.
  601. In case of ndp or phy_err, this field will never be set.
  602. */
  603. #define RX_MPDU_INFO_PN_127_96_OFFSET 0x00000018
  604. #define RX_MPDU_INFO_PN_127_96_LSB 0
  605. #define RX_MPDU_INFO_PN_127_96_MSB 31
  606. #define RX_MPDU_INFO_PN_127_96_MASK 0xffffffff
  607. /* Description EPD_EN
  608. Field only valid when AST_based_lookup_valid == 1.
  609. In case of ndp or phy_err or AST_based_lookup_valid == 0,
  610. this field will be set to 0
  611. If set to one use EPD instead of LPD
  612. In case of ndp or phy_err, this field will never be set.
  613. <legal all>
  614. */
  615. #define RX_MPDU_INFO_EPD_EN_OFFSET 0x0000001c
  616. #define RX_MPDU_INFO_EPD_EN_LSB 0
  617. #define RX_MPDU_INFO_EPD_EN_MSB 0
  618. #define RX_MPDU_INFO_EPD_EN_MASK 0x00000001
  619. /* Description ALL_FRAMES_SHALL_BE_ENCRYPTED
  620. In case of ndp or phy_err or AST_based_lookup_valid == 0,
  621. this field will be set to 0
  622. When set, all frames (data only ?) shall be encrypted. If
  623. not, RX CRYPTO shall set an error flag.
  624. <legal all>
  625. */
  626. #define RX_MPDU_INFO_ALL_FRAMES_SHALL_BE_ENCRYPTED_OFFSET 0x0000001c
  627. #define RX_MPDU_INFO_ALL_FRAMES_SHALL_BE_ENCRYPTED_LSB 1
  628. #define RX_MPDU_INFO_ALL_FRAMES_SHALL_BE_ENCRYPTED_MSB 1
  629. #define RX_MPDU_INFO_ALL_FRAMES_SHALL_BE_ENCRYPTED_MASK 0x00000002
  630. /* Description ENCRYPT_TYPE
  631. In case of ndp or phy_err or AST_based_lookup_valid == 0,
  632. this field will be set to 0
  633. Indicates type of decrypt cipher used (as defined in the
  634. peer entry)
  635. <enum 0 wep_40> WEP 40-bit
  636. <enum 1 wep_104> WEP 104-bit
  637. <enum 2 tkip_no_mic> TKIP without MIC
  638. <enum 3 wep_128> WEP 128-bit
  639. <enum 4 tkip_with_mic> TKIP with MIC
  640. <enum 5 wapi> WAPI
  641. <enum 6 aes_ccmp_128> AES CCMP 128
  642. <enum 7 no_cipher> No crypto
  643. <enum 8 aes_ccmp_256> AES CCMP 256
  644. <enum 9 aes_gcmp_128> AES CCMP 128
  645. <enum 10 aes_gcmp_256> AES CCMP 256
  646. <enum 11 wapi_gcm_sm4> WAPI GCM SM4
  647. <enum 12 wep_varied_width> WEP encryption. As for WEP per
  648. keyid the key bit width can vary, the key bit width for
  649. this MPDU will be indicated in field wep_key_width_for_variable
  650. key
  651. <legal 0-12>
  652. */
  653. #define RX_MPDU_INFO_ENCRYPT_TYPE_OFFSET 0x0000001c
  654. #define RX_MPDU_INFO_ENCRYPT_TYPE_LSB 2
  655. #define RX_MPDU_INFO_ENCRYPT_TYPE_MSB 5
  656. #define RX_MPDU_INFO_ENCRYPT_TYPE_MASK 0x0000003c
  657. /* Description WEP_KEY_WIDTH_FOR_VARIABLE_KEY
  658. Field only valid when key_type is set to wep_varied_width.
  659. This field indicates the size of the wep key for this MPDU.
  660. <enum 0 wep_varied_width_40> WEP 40-bit
  661. <enum 1 wep_varied_width_104> WEP 104-bit
  662. <enum 2 wep_varied_width_128> WEP 128-bit
  663. <legal 0-2>
  664. */
  665. #define RX_MPDU_INFO_WEP_KEY_WIDTH_FOR_VARIABLE_KEY_OFFSET 0x0000001c
  666. #define RX_MPDU_INFO_WEP_KEY_WIDTH_FOR_VARIABLE_KEY_LSB 6
  667. #define RX_MPDU_INFO_WEP_KEY_WIDTH_FOR_VARIABLE_KEY_MSB 7
  668. #define RX_MPDU_INFO_WEP_KEY_WIDTH_FOR_VARIABLE_KEY_MASK 0x000000c0
  669. /* Description MESH_STA
  670. In case of ndp or phy_err or AST_based_lookup_valid == 0,
  671. this field will be set to 0
  672. When set, this is a Mesh (11s) STA.
  673. The interpretation of the A-MSDU 'Length' field in the MPDU
  674. (if any) is decided by the e-numerations below.
  675. <enum 0 MESH_DISABLE>
  676. <enum 1 MESH_Q2Q> A-MSDU 'Length' is big endian and includes
  677. the length of Mesh Control.
  678. <enum 2 MESH_11S_BE> A-MSDU 'Length' is big endian and excludes
  679. the length of Mesh Control.
  680. <enum 3 MESH_11S_LE> A-MSDU 'Length' is little endian and
  681. excludes the length of Mesh Control. This is 802.11s-compliant.
  682. <legal all>
  683. */
  684. #define RX_MPDU_INFO_MESH_STA_OFFSET 0x0000001c
  685. #define RX_MPDU_INFO_MESH_STA_LSB 8
  686. #define RX_MPDU_INFO_MESH_STA_MSB 9
  687. #define RX_MPDU_INFO_MESH_STA_MASK 0x00000300
  688. /* Description BSSID_HIT
  689. In case of ndp or phy_err or AST_based_lookup_valid == 0,
  690. this field will be set to 0
  691. When set, the BSSID of the incoming frame matched one of
  692. the 8 BSSID register values
  693. <legal all>
  694. */
  695. #define RX_MPDU_INFO_BSSID_HIT_OFFSET 0x0000001c
  696. #define RX_MPDU_INFO_BSSID_HIT_LSB 10
  697. #define RX_MPDU_INFO_BSSID_HIT_MSB 10
  698. #define RX_MPDU_INFO_BSSID_HIT_MASK 0x00000400
  699. /* Description BSSID_NUMBER
  700. Field only valid when bssid_hit is set.
  701. This number indicates which one out of the 8 BSSID register
  702. values matched the incoming frame
  703. <legal all>
  704. */
  705. #define RX_MPDU_INFO_BSSID_NUMBER_OFFSET 0x0000001c
  706. #define RX_MPDU_INFO_BSSID_NUMBER_LSB 11
  707. #define RX_MPDU_INFO_BSSID_NUMBER_MSB 14
  708. #define RX_MPDU_INFO_BSSID_NUMBER_MASK 0x00007800
  709. /* Description TID
  710. Field only valid when mpdu_qos_control_valid is set
  711. The TID field in the QoS control field
  712. <legal all>
  713. */
  714. #define RX_MPDU_INFO_TID_OFFSET 0x0000001c
  715. #define RX_MPDU_INFO_TID_LSB 15
  716. #define RX_MPDU_INFO_TID_MSB 18
  717. #define RX_MPDU_INFO_TID_MASK 0x00078000
  718. /* Description RESERVED_7A
  719. <legal 0>
  720. */
  721. #define RX_MPDU_INFO_RESERVED_7A_OFFSET 0x0000001c
  722. #define RX_MPDU_INFO_RESERVED_7A_LSB 19
  723. #define RX_MPDU_INFO_RESERVED_7A_MSB 31
  724. #define RX_MPDU_INFO_RESERVED_7A_MASK 0xfff80000
  725. /* Description PEER_META_DATA
  726. In case of ndp or phy_err or AST_based_lookup_valid == 0,
  727. this field will be set to 0
  728. Meta data that SW has programmed in the Peer table entry
  729. of the transmitting STA.
  730. <legal all>
  731. */
  732. #define RX_MPDU_INFO_PEER_META_DATA_OFFSET 0x00000020
  733. #define RX_MPDU_INFO_PEER_META_DATA_LSB 0
  734. #define RX_MPDU_INFO_PEER_META_DATA_MSB 31
  735. #define RX_MPDU_INFO_PEER_META_DATA_MASK 0xffffffff
  736. /* Description RXPCU_MPDU_FILTER_IN_CATEGORY
  737. Field indicates what the reason was that this MPDU frame
  738. was allowed to come into the receive path by RXPCU
  739. <enum 0 rxpcu_filter_pass> This MPDU passed the normal frame
  740. filter programming of rxpcu
  741. <enum 1 rxpcu_monitor_client> This MPDU did NOT pass the
  742. regular frame filter and would have been dropped, were
  743. it not for the frame fitting into the 'monitor_client' category.
  744. <enum 2 rxpcu_monitor_other> This MPDU did NOT pass the
  745. regular frame filter and also did not pass the rxpcu_monitor_client
  746. filter. It would have been dropped accept that it did pass
  747. the 'monitor_other' category.
  748. <enum 3 rxpcu_filter_pass_monitor_ovrd> This MPDU passed
  749. the normal frame filter programming of RXPCU but additionally
  750. fit into the 'monitor_override_client' category.
  751. Note: for ndp frame, if it was expected because the preceding
  752. NDPA was filter_pass, the setting rxpcu_filter_pass will
  753. be used. This setting will also be used for every ndp frame
  754. in case Promiscuous mode is enabled.
  755. In case promiscuous is not enabled, and an NDP is not preceded
  756. by a NPDA filter pass frame, the only other setting that
  757. could appear here for the NDP is rxpcu_monitor_other.
  758. (rxpcu has a configuration bit specifically for this scenario)
  759. Note: for
  760. <legal 0-3>
  761. */
  762. #define RX_MPDU_INFO_RXPCU_MPDU_FILTER_IN_CATEGORY_OFFSET 0x00000024
  763. #define RX_MPDU_INFO_RXPCU_MPDU_FILTER_IN_CATEGORY_LSB 0
  764. #define RX_MPDU_INFO_RXPCU_MPDU_FILTER_IN_CATEGORY_MSB 1
  765. #define RX_MPDU_INFO_RXPCU_MPDU_FILTER_IN_CATEGORY_MASK 0x00000003
  766. /* Description SW_FRAME_GROUP_ID
  767. SW processes frames based on certain classifications. This
  768. field indicates to what sw classification this MPDU is
  769. mapped.
  770. The classification is given in priority order
  771. <enum 0 sw_frame_group_NDP_frame> Note: The corresponding
  772. Rxpcu_Mpdu_filter_in_category can be rxpcu_filter_pass
  773. or rxpcu_monitor_other
  774. <enum 1 sw_frame_group_Multicast_data>
  775. <enum 2 sw_frame_group_Unicast_data>
  776. <enum 3 sw_frame_group_Null_data > This includes mpdus of
  777. type Data Null.
  778. <enum 38 sw_frame_group_QoS_Null_data> This includes QoS
  779. Null frames except in UL MU or TB PPDUs.
  780. <enum 39 sw_frame_group_QoS_Null_data_TB> This includes
  781. QoS Null frames in UL MU or TB PPDUs.
  782. <enum 4 sw_frame_group_mgmt_0000 >
  783. <enum 5 sw_frame_group_mgmt_0001 >
  784. <enum 6 sw_frame_group_mgmt_0010 >
  785. <enum 7 sw_frame_group_mgmt_0011 >
  786. <enum 8 sw_frame_group_mgmt_0100 >
  787. <enum 9 sw_frame_group_mgmt_0101 >
  788. <enum 10 sw_frame_group_mgmt_0110 >
  789. <enum 11 sw_frame_group_mgmt_0111 >
  790. <enum 12 sw_frame_group_mgmt_1000 >
  791. <enum 13 sw_frame_group_mgmt_1001 >
  792. <enum 14 sw_frame_group_mgmt_1010 >
  793. <enum 15 sw_frame_group_mgmt_1011 >
  794. <enum 16 sw_frame_group_mgmt_1100 >
  795. <enum 17 sw_frame_group_mgmt_1101 >
  796. <enum 18 sw_frame_group_mgmt_1110 >
  797. <enum 19 sw_frame_group_mgmt_1111 >
  798. <enum 20 sw_frame_group_ctrl_0000 >
  799. <enum 21 sw_frame_group_ctrl_0001 >
  800. <enum 22 sw_frame_group_ctrl_0010 >
  801. <enum 23 sw_frame_group_ctrl_0011 >
  802. <enum 24 sw_frame_group_ctrl_0100 >
  803. <enum 25 sw_frame_group_ctrl_0101 >
  804. <enum 26 sw_frame_group_ctrl_0110 >
  805. <enum 27 sw_frame_group_ctrl_0111 >
  806. <enum 28 sw_frame_group_ctrl_1000 >
  807. <enum 29 sw_frame_group_ctrl_1001 >
  808. <enum 30 sw_frame_group_ctrl_1010 >
  809. <enum 31 sw_frame_group_ctrl_1011 >
  810. <enum 32 sw_frame_group_ctrl_1100 >
  811. <enum 33 sw_frame_group_ctrl_1101 >
  812. <enum 34 sw_frame_group_ctrl_1110 >
  813. <enum 35 sw_frame_group_ctrl_1111 >
  814. <enum 36 sw_frame_group_unsupported> This covers type 3
  815. and protocol version != 0
  816. Note: The corresponding Rxpcu_Mpdu_filter_in_category can
  817. only be rxpcu_monitor_other
  818. <enum 37 sw_frame_group_phy_error> PHY reported an error
  819. Note: The corresponding Rxpcu_Mpdu_filter_in_category can
  820. be rxpcu_filter_pass
  821. <legal 0-39>
  822. */
  823. #define RX_MPDU_INFO_SW_FRAME_GROUP_ID_OFFSET 0x00000024
  824. #define RX_MPDU_INFO_SW_FRAME_GROUP_ID_LSB 2
  825. #define RX_MPDU_INFO_SW_FRAME_GROUP_ID_MSB 8
  826. #define RX_MPDU_INFO_SW_FRAME_GROUP_ID_MASK 0x000001fc
  827. /* Description NDP_FRAME
  828. When set, the received frame was an NDP frame, and thus
  829. there will be no MPDU data.
  830. TODO: Should this be extended to 2-bit e-num?
  831. <legal all>
  832. */
  833. #define RX_MPDU_INFO_NDP_FRAME_OFFSET 0x00000024
  834. #define RX_MPDU_INFO_NDP_FRAME_LSB 9
  835. #define RX_MPDU_INFO_NDP_FRAME_MSB 9
  836. #define RX_MPDU_INFO_NDP_FRAME_MASK 0x00000200
  837. /* Description PHY_ERR
  838. When set, a PHY error was received before MAC received any
  839. data, and thus there will be no MPDU data.
  840. <legal all>
  841. */
  842. #define RX_MPDU_INFO_PHY_ERR_OFFSET 0x00000024
  843. #define RX_MPDU_INFO_PHY_ERR_LSB 10
  844. #define RX_MPDU_INFO_PHY_ERR_MSB 10
  845. #define RX_MPDU_INFO_PHY_ERR_MASK 0x00000400
  846. /* Description PHY_ERR_DURING_MPDU_HEADER
  847. When set, a PHY error was received before MAC received the
  848. complete MPDU header which was needed for proper decoding
  849. <legal all>
  850. */
  851. #define RX_MPDU_INFO_PHY_ERR_DURING_MPDU_HEADER_OFFSET 0x00000024
  852. #define RX_MPDU_INFO_PHY_ERR_DURING_MPDU_HEADER_LSB 11
  853. #define RX_MPDU_INFO_PHY_ERR_DURING_MPDU_HEADER_MSB 11
  854. #define RX_MPDU_INFO_PHY_ERR_DURING_MPDU_HEADER_MASK 0x00000800
  855. /* Description PROTOCOL_VERSION_ERR
  856. Set when RXPCU detected a version error in the Frame control
  857. field
  858. <legal all>
  859. */
  860. #define RX_MPDU_INFO_PROTOCOL_VERSION_ERR_OFFSET 0x00000024
  861. #define RX_MPDU_INFO_PROTOCOL_VERSION_ERR_LSB 12
  862. #define RX_MPDU_INFO_PROTOCOL_VERSION_ERR_MSB 12
  863. #define RX_MPDU_INFO_PROTOCOL_VERSION_ERR_MASK 0x00001000
  864. /* Description AST_BASED_LOOKUP_VALID
  865. When set, AST based lookup for this frame has found a valid
  866. result.
  867. Note that for NDP frame this will never be set
  868. <legal all>
  869. */
  870. #define RX_MPDU_INFO_AST_BASED_LOOKUP_VALID_OFFSET 0x00000024
  871. #define RX_MPDU_INFO_AST_BASED_LOOKUP_VALID_LSB 13
  872. #define RX_MPDU_INFO_AST_BASED_LOOKUP_VALID_MSB 13
  873. #define RX_MPDU_INFO_AST_BASED_LOOKUP_VALID_MASK 0x00002000
  874. /* Description RANGING
  875. When set, a ranging NDPA or a ranging NDP was received.
  876. This field is only for FW visibility. HW is not expected
  877. to take any action on this.
  878. <legal all>
  879. */
  880. #define RX_MPDU_INFO_RANGING_OFFSET 0x00000024
  881. #define RX_MPDU_INFO_RANGING_LSB 14
  882. #define RX_MPDU_INFO_RANGING_MSB 14
  883. #define RX_MPDU_INFO_RANGING_MASK 0x00004000
  884. /* Description RESERVED_9A
  885. <legal 0>
  886. */
  887. #define RX_MPDU_INFO_RESERVED_9A_OFFSET 0x00000024
  888. #define RX_MPDU_INFO_RESERVED_9A_LSB 15
  889. #define RX_MPDU_INFO_RESERVED_9A_MSB 15
  890. #define RX_MPDU_INFO_RESERVED_9A_MASK 0x00008000
  891. /* Description PHY_PPDU_ID
  892. A ppdu counter value that PHY increments for every PPDU
  893. received. The counter value wraps around
  894. <legal all>
  895. */
  896. #define RX_MPDU_INFO_PHY_PPDU_ID_OFFSET 0x00000024
  897. #define RX_MPDU_INFO_PHY_PPDU_ID_LSB 16
  898. #define RX_MPDU_INFO_PHY_PPDU_ID_MSB 31
  899. #define RX_MPDU_INFO_PHY_PPDU_ID_MASK 0xffff0000
  900. /* Description AST_INDEX
  901. This field indicates the index of the AST entry corresponding
  902. to this MPDU. It is provided by the GSE module instantiated
  903. in RXPCU.
  904. A value of 0xFFFF indicates an invalid AST index, meaning
  905. that No AST entry was found or NO AST search was performed
  906. In case of ndp or phy_err, this field will be set to 0xFFFF
  907. <legal all>
  908. */
  909. #define RX_MPDU_INFO_AST_INDEX_OFFSET 0x00000028
  910. #define RX_MPDU_INFO_AST_INDEX_LSB 0
  911. #define RX_MPDU_INFO_AST_INDEX_MSB 15
  912. #define RX_MPDU_INFO_AST_INDEX_MASK 0x0000ffff
  913. /* Description SW_PEER_ID
  914. In case of ndp or phy_err or AST_based_lookup_valid == 0,
  915. this field will be set to 0
  916. This field indicates a unique peer identifier. It is set
  917. equal to field 'sw_peer_id' from the AST entry
  918. <legal all>
  919. */
  920. #define RX_MPDU_INFO_SW_PEER_ID_OFFSET 0x00000028
  921. #define RX_MPDU_INFO_SW_PEER_ID_LSB 16
  922. #define RX_MPDU_INFO_SW_PEER_ID_MSB 31
  923. #define RX_MPDU_INFO_SW_PEER_ID_MASK 0xffff0000
  924. /* Description MPDU_FRAME_CONTROL_VALID
  925. When set, the field Mpdu_Frame_control_field has valid information
  926. In case of ndp or phy_err, this field will never be set.
  927. <legal all>
  928. */
  929. #define RX_MPDU_INFO_MPDU_FRAME_CONTROL_VALID_OFFSET 0x0000002c
  930. #define RX_MPDU_INFO_MPDU_FRAME_CONTROL_VALID_LSB 0
  931. #define RX_MPDU_INFO_MPDU_FRAME_CONTROL_VALID_MSB 0
  932. #define RX_MPDU_INFO_MPDU_FRAME_CONTROL_VALID_MASK 0x00000001
  933. /* Description MPDU_DURATION_VALID
  934. When set, the field Mpdu_duration_field has valid information
  935. In case of ndp or phy_err, this field will never be set.
  936. <legal all>
  937. */
  938. #define RX_MPDU_INFO_MPDU_DURATION_VALID_OFFSET 0x0000002c
  939. #define RX_MPDU_INFO_MPDU_DURATION_VALID_LSB 1
  940. #define RX_MPDU_INFO_MPDU_DURATION_VALID_MSB 1
  941. #define RX_MPDU_INFO_MPDU_DURATION_VALID_MASK 0x00000002
  942. /* Description MAC_ADDR_AD1_VALID
  943. When set, the fields mac_addr_ad1_..... have valid information
  944. In case of ndp or phy_err, this field will never be set.
  945. <legal all>
  946. */
  947. #define RX_MPDU_INFO_MAC_ADDR_AD1_VALID_OFFSET 0x0000002c
  948. #define RX_MPDU_INFO_MAC_ADDR_AD1_VALID_LSB 2
  949. #define RX_MPDU_INFO_MAC_ADDR_AD1_VALID_MSB 2
  950. #define RX_MPDU_INFO_MAC_ADDR_AD1_VALID_MASK 0x00000004
  951. /* Description MAC_ADDR_AD2_VALID
  952. When set, the fields mac_addr_ad2_..... have valid information
  953. For MPDUs without Address 2, this field will not be set.
  954. In case of ndp or phy_err, this field will never be set.
  955. <legal all>
  956. */
  957. #define RX_MPDU_INFO_MAC_ADDR_AD2_VALID_OFFSET 0x0000002c
  958. #define RX_MPDU_INFO_MAC_ADDR_AD2_VALID_LSB 3
  959. #define RX_MPDU_INFO_MAC_ADDR_AD2_VALID_MSB 3
  960. #define RX_MPDU_INFO_MAC_ADDR_AD2_VALID_MASK 0x00000008
  961. /* Description MAC_ADDR_AD3_VALID
  962. When set, the fields mac_addr_ad3_..... have valid information
  963. For MPDUs without Address 3, this field will not be set.
  964. In case of ndp or phy_err, this field will never be set.
  965. <legal all>
  966. */
  967. #define RX_MPDU_INFO_MAC_ADDR_AD3_VALID_OFFSET 0x0000002c
  968. #define RX_MPDU_INFO_MAC_ADDR_AD3_VALID_LSB 4
  969. #define RX_MPDU_INFO_MAC_ADDR_AD3_VALID_MSB 4
  970. #define RX_MPDU_INFO_MAC_ADDR_AD3_VALID_MASK 0x00000010
  971. /* Description MAC_ADDR_AD4_VALID
  972. When set, the fields mac_addr_ad4_..... have valid information
  973. For MPDUs without Address 4, this field will not be set.
  974. In case of ndp or phy_err, this field will never be set.
  975. <legal all>
  976. */
  977. #define RX_MPDU_INFO_MAC_ADDR_AD4_VALID_OFFSET 0x0000002c
  978. #define RX_MPDU_INFO_MAC_ADDR_AD4_VALID_LSB 5
  979. #define RX_MPDU_INFO_MAC_ADDR_AD4_VALID_MSB 5
  980. #define RX_MPDU_INFO_MAC_ADDR_AD4_VALID_MASK 0x00000020
  981. /* Description MPDU_SEQUENCE_CONTROL_VALID
  982. When set, the fields mpdu_sequence_control_field and mpdu_sequence_number
  983. have valid information as well as field
  984. For MPDUs without a sequence control field, this field will
  985. not be set.
  986. In case of ndp or phy_err, this field will never be set.
  987. <legal all>
  988. */
  989. #define RX_MPDU_INFO_MPDU_SEQUENCE_CONTROL_VALID_OFFSET 0x0000002c
  990. #define RX_MPDU_INFO_MPDU_SEQUENCE_CONTROL_VALID_LSB 6
  991. #define RX_MPDU_INFO_MPDU_SEQUENCE_CONTROL_VALID_MSB 6
  992. #define RX_MPDU_INFO_MPDU_SEQUENCE_CONTROL_VALID_MASK 0x00000040
  993. /* Description MPDU_QOS_CONTROL_VALID
  994. When set, the field mpdu_qos_control_field has valid information
  995. For MPDUs without a QoS control field, this field will not
  996. be set.
  997. In case of ndp or phy_err, this field will never be set.
  998. <legal all>
  999. */
  1000. #define RX_MPDU_INFO_MPDU_QOS_CONTROL_VALID_OFFSET 0x0000002c
  1001. #define RX_MPDU_INFO_MPDU_QOS_CONTROL_VALID_LSB 7
  1002. #define RX_MPDU_INFO_MPDU_QOS_CONTROL_VALID_MSB 7
  1003. #define RX_MPDU_INFO_MPDU_QOS_CONTROL_VALID_MASK 0x00000080
  1004. /* Description MPDU_HT_CONTROL_VALID
  1005. When set, the field mpdu_HT_control_field has valid information
  1006. For MPDUs without a HT control field, this field will not
  1007. be set.
  1008. In case of ndp or phy_err, this field will never be set.
  1009. <legal all>
  1010. */
  1011. #define RX_MPDU_INFO_MPDU_HT_CONTROL_VALID_OFFSET 0x0000002c
  1012. #define RX_MPDU_INFO_MPDU_HT_CONTROL_VALID_LSB 8
  1013. #define RX_MPDU_INFO_MPDU_HT_CONTROL_VALID_MSB 8
  1014. #define RX_MPDU_INFO_MPDU_HT_CONTROL_VALID_MASK 0x00000100
  1015. /* Description FRAME_ENCRYPTION_INFO_VALID
  1016. When set, the encryption related info fields, like IV and
  1017. PN are valid
  1018. For MPDUs that are not encrypted, this will not be set.
  1019. In case of ndp or phy_err, this field will never be set.
  1020. <legal all>
  1021. */
  1022. #define RX_MPDU_INFO_FRAME_ENCRYPTION_INFO_VALID_OFFSET 0x0000002c
  1023. #define RX_MPDU_INFO_FRAME_ENCRYPTION_INFO_VALID_LSB 9
  1024. #define RX_MPDU_INFO_FRAME_ENCRYPTION_INFO_VALID_MSB 9
  1025. #define RX_MPDU_INFO_FRAME_ENCRYPTION_INFO_VALID_MASK 0x00000200
  1026. /* Description MPDU_FRAGMENT_NUMBER
  1027. Field only valid when Mpdu_sequence_control_valid is set
  1028. AND Fragment_flag is set
  1029. The fragment number from the 802.11 header
  1030. <legal all>
  1031. */
  1032. #define RX_MPDU_INFO_MPDU_FRAGMENT_NUMBER_OFFSET 0x0000002c
  1033. #define RX_MPDU_INFO_MPDU_FRAGMENT_NUMBER_LSB 10
  1034. #define RX_MPDU_INFO_MPDU_FRAGMENT_NUMBER_MSB 13
  1035. #define RX_MPDU_INFO_MPDU_FRAGMENT_NUMBER_MASK 0x00003c00
  1036. /* Description MORE_FRAGMENT_FLAG
  1037. The More Fragment bit setting from the MPDU header of the
  1038. received frame
  1039. <legal all>
  1040. */
  1041. #define RX_MPDU_INFO_MORE_FRAGMENT_FLAG_OFFSET 0x0000002c
  1042. #define RX_MPDU_INFO_MORE_FRAGMENT_FLAG_LSB 14
  1043. #define RX_MPDU_INFO_MORE_FRAGMENT_FLAG_MSB 14
  1044. #define RX_MPDU_INFO_MORE_FRAGMENT_FLAG_MASK 0x00004000
  1045. /* Description RESERVED_11A
  1046. <legal 0>
  1047. */
  1048. #define RX_MPDU_INFO_RESERVED_11A_OFFSET 0x0000002c
  1049. #define RX_MPDU_INFO_RESERVED_11A_LSB 15
  1050. #define RX_MPDU_INFO_RESERVED_11A_MSB 15
  1051. #define RX_MPDU_INFO_RESERVED_11A_MASK 0x00008000
  1052. /* Description FR_DS
  1053. Field only valid when Mpdu_frame_control_valid is set
  1054. Set if the from DS bit is set in the frame control.
  1055. <legal all>
  1056. */
  1057. #define RX_MPDU_INFO_FR_DS_OFFSET 0x0000002c
  1058. #define RX_MPDU_INFO_FR_DS_LSB 16
  1059. #define RX_MPDU_INFO_FR_DS_MSB 16
  1060. #define RX_MPDU_INFO_FR_DS_MASK 0x00010000
  1061. /* Description TO_DS
  1062. Field only valid when Mpdu_frame_control_valid is set
  1063. Set if the to DS bit is set in the frame control.
  1064. <legal all>
  1065. */
  1066. #define RX_MPDU_INFO_TO_DS_OFFSET 0x0000002c
  1067. #define RX_MPDU_INFO_TO_DS_LSB 17
  1068. #define RX_MPDU_INFO_TO_DS_MSB 17
  1069. #define RX_MPDU_INFO_TO_DS_MASK 0x00020000
  1070. /* Description ENCRYPTED
  1071. Field only valid when Mpdu_frame_control_valid is set.
  1072. Protected bit from the frame control.
  1073. <legal all>
  1074. */
  1075. #define RX_MPDU_INFO_ENCRYPTED_OFFSET 0x0000002c
  1076. #define RX_MPDU_INFO_ENCRYPTED_LSB 18
  1077. #define RX_MPDU_INFO_ENCRYPTED_MSB 18
  1078. #define RX_MPDU_INFO_ENCRYPTED_MASK 0x00040000
  1079. /* Description MPDU_RETRY
  1080. Field only valid when Mpdu_frame_control_valid is set.
  1081. Retry bit from the frame control. Only valid when first_msdu
  1082. is set.
  1083. <legal all>
  1084. */
  1085. #define RX_MPDU_INFO_MPDU_RETRY_OFFSET 0x0000002c
  1086. #define RX_MPDU_INFO_MPDU_RETRY_LSB 19
  1087. #define RX_MPDU_INFO_MPDU_RETRY_MSB 19
  1088. #define RX_MPDU_INFO_MPDU_RETRY_MASK 0x00080000
  1089. /* Description MPDU_SEQUENCE_NUMBER
  1090. Field only valid when Mpdu_sequence_control_valid is set.
  1091. The sequence number from the 802.11 header.
  1092. <legal all>
  1093. */
  1094. #define RX_MPDU_INFO_MPDU_SEQUENCE_NUMBER_OFFSET 0x0000002c
  1095. #define RX_MPDU_INFO_MPDU_SEQUENCE_NUMBER_LSB 20
  1096. #define RX_MPDU_INFO_MPDU_SEQUENCE_NUMBER_MSB 31
  1097. #define RX_MPDU_INFO_MPDU_SEQUENCE_NUMBER_MASK 0xfff00000
  1098. /* Description KEY_ID_OCTET
  1099. Field only valid when Frame_encryption_info_valid is set
  1100. The key ID octet from the IV.
  1101. In case of ndp or phy_err or AST_based_lookup_valid == 0,
  1102. this field will be set to 0
  1103. <legal all>
  1104. */
  1105. #define RX_MPDU_INFO_KEY_ID_OCTET_OFFSET 0x00000030
  1106. #define RX_MPDU_INFO_KEY_ID_OCTET_LSB 0
  1107. #define RX_MPDU_INFO_KEY_ID_OCTET_MSB 7
  1108. #define RX_MPDU_INFO_KEY_ID_OCTET_MASK 0x000000ff
  1109. /* Description NEW_PEER_ENTRY
  1110. In case of ndp or phy_err or AST_based_lookup_valid == 0,
  1111. this field will be set to 0
  1112. Set if new RX_PEER_ENTRY TLV follows. If clear, RX_PEER_ENTRY
  1113. doesn't follow so RX DECRYPTION module either uses old
  1114. peer entry or not decrypt.
  1115. <legal all>
  1116. */
  1117. #define RX_MPDU_INFO_NEW_PEER_ENTRY_OFFSET 0x00000030
  1118. #define RX_MPDU_INFO_NEW_PEER_ENTRY_LSB 8
  1119. #define RX_MPDU_INFO_NEW_PEER_ENTRY_MSB 8
  1120. #define RX_MPDU_INFO_NEW_PEER_ENTRY_MASK 0x00000100
  1121. /* Description DECRYPT_NEEDED
  1122. In case of ndp or phy_err or AST_based_lookup_valid == 0,
  1123. this field will be set to 0
  1124. Set if decryption is needed.
  1125. Note:
  1126. When RXPCU sets bit 'ast_index_not_found' and/or ast_index_timeout',
  1127. RXPCU will also ensure that this bit is NOT set
  1128. CRYPTO for that reason only needs to evaluate this bit and
  1129. non of the other ones.
  1130. <legal all>
  1131. */
  1132. #define RX_MPDU_INFO_DECRYPT_NEEDED_OFFSET 0x00000030
  1133. #define RX_MPDU_INFO_DECRYPT_NEEDED_LSB 9
  1134. #define RX_MPDU_INFO_DECRYPT_NEEDED_MSB 9
  1135. #define RX_MPDU_INFO_DECRYPT_NEEDED_MASK 0x00000200
  1136. /* Description DECAP_TYPE
  1137. In case of ndp or phy_err or AST_based_lookup_valid == 0,
  1138. this field will be set to 0
  1139. Used by the OLE during decapsulation.
  1140. Indicates the decapsulation that HW will perform:
  1141. <enum 0 RAW> No encapsulation
  1142. <enum 1 Native_WiFi>
  1143. <enum 2 Ethernet> Ethernet 2 (DIX) or 802.3 (uses SNAP/LLC)
  1144. <enum 3 802_3> Indicate Ethernet
  1145. <legal all>
  1146. */
  1147. #define RX_MPDU_INFO_DECAP_TYPE_OFFSET 0x00000030
  1148. #define RX_MPDU_INFO_DECAP_TYPE_LSB 10
  1149. #define RX_MPDU_INFO_DECAP_TYPE_MSB 11
  1150. #define RX_MPDU_INFO_DECAP_TYPE_MASK 0x00000c00
  1151. /* Description RX_INSERT_VLAN_C_TAG_PADDING
  1152. In case of ndp or phy_err or AST_based_lookup_valid == 0,
  1153. this field will be set to 0
  1154. Insert 4 byte of all zeros as VLAN tag if the rx payload
  1155. does not have VLAN. Used during decapsulation.
  1156. <legal all>
  1157. */
  1158. #define RX_MPDU_INFO_RX_INSERT_VLAN_C_TAG_PADDING_OFFSET 0x00000030
  1159. #define RX_MPDU_INFO_RX_INSERT_VLAN_C_TAG_PADDING_LSB 12
  1160. #define RX_MPDU_INFO_RX_INSERT_VLAN_C_TAG_PADDING_MSB 12
  1161. #define RX_MPDU_INFO_RX_INSERT_VLAN_C_TAG_PADDING_MASK 0x00001000
  1162. /* Description RX_INSERT_VLAN_S_TAG_PADDING
  1163. In case of ndp or phy_err or AST_based_lookup_valid == 0,
  1164. this field will be set to 0
  1165. Insert 4 byte of all zeros as double VLAN tag if the rx
  1166. payload does not have VLAN. Used during
  1167. <legal all>
  1168. */
  1169. #define RX_MPDU_INFO_RX_INSERT_VLAN_S_TAG_PADDING_OFFSET 0x00000030
  1170. #define RX_MPDU_INFO_RX_INSERT_VLAN_S_TAG_PADDING_LSB 13
  1171. #define RX_MPDU_INFO_RX_INSERT_VLAN_S_TAG_PADDING_MSB 13
  1172. #define RX_MPDU_INFO_RX_INSERT_VLAN_S_TAG_PADDING_MASK 0x00002000
  1173. /* Description STRIP_VLAN_C_TAG_DECAP
  1174. In case of ndp or phy_err or AST_based_lookup_valid == 0,
  1175. this field will be set to 0
  1176. Strip the VLAN during decapsulation. Used by the OLE.
  1177. <legal all>
  1178. */
  1179. #define RX_MPDU_INFO_STRIP_VLAN_C_TAG_DECAP_OFFSET 0x00000030
  1180. #define RX_MPDU_INFO_STRIP_VLAN_C_TAG_DECAP_LSB 14
  1181. #define RX_MPDU_INFO_STRIP_VLAN_C_TAG_DECAP_MSB 14
  1182. #define RX_MPDU_INFO_STRIP_VLAN_C_TAG_DECAP_MASK 0x00004000
  1183. /* Description STRIP_VLAN_S_TAG_DECAP
  1184. In case of ndp or phy_err or AST_based_lookup_valid == 0,
  1185. this field will be set to 0
  1186. Strip the double VLAN during decapsulation. Used by the
  1187. OLE.
  1188. <legal all>
  1189. */
  1190. #define RX_MPDU_INFO_STRIP_VLAN_S_TAG_DECAP_OFFSET 0x00000030
  1191. #define RX_MPDU_INFO_STRIP_VLAN_S_TAG_DECAP_LSB 15
  1192. #define RX_MPDU_INFO_STRIP_VLAN_S_TAG_DECAP_MSB 15
  1193. #define RX_MPDU_INFO_STRIP_VLAN_S_TAG_DECAP_MASK 0x00008000
  1194. /* Description PRE_DELIM_COUNT
  1195. The number of delimiters before this MPDU.
  1196. Note that this number is cleared at PPDU start.
  1197. If this MPDU is the first received MPDU in the PPDU and
  1198. this MPDU gets filtered-in, this field will indicate the
  1199. number of delimiters located after the last MPDU in the
  1200. previous PPDU.
  1201. If this MPDU is located after the first received MPDU in
  1202. an PPDU, this field will indicate the number of delimiters
  1203. located between the previous MPDU and this MPDU.
  1204. In case of ndp or phy_err, this field will indicate the
  1205. number of delimiters located after the last MPDU in the
  1206. previous PPDU.
  1207. <legal all>
  1208. */
  1209. #define RX_MPDU_INFO_PRE_DELIM_COUNT_OFFSET 0x00000030
  1210. #define RX_MPDU_INFO_PRE_DELIM_COUNT_LSB 16
  1211. #define RX_MPDU_INFO_PRE_DELIM_COUNT_MSB 27
  1212. #define RX_MPDU_INFO_PRE_DELIM_COUNT_MASK 0x0fff0000
  1213. /* Description AMPDU_FLAG
  1214. When set, received frame was part of an A-MPDU.
  1215. In case of ndp or phy_err, this field will never be set.
  1216. <legal all>
  1217. */
  1218. #define RX_MPDU_INFO_AMPDU_FLAG_OFFSET 0x00000030
  1219. #define RX_MPDU_INFO_AMPDU_FLAG_LSB 28
  1220. #define RX_MPDU_INFO_AMPDU_FLAG_MSB 28
  1221. #define RX_MPDU_INFO_AMPDU_FLAG_MASK 0x10000000
  1222. /* Description BAR_FRAME
  1223. In case of ndp or phy_err or AST_based_lookup_valid == 0,
  1224. this field will be set to 0
  1225. When set, received frame is a BAR frame
  1226. <legal all>
  1227. */
  1228. #define RX_MPDU_INFO_BAR_FRAME_OFFSET 0x00000030
  1229. #define RX_MPDU_INFO_BAR_FRAME_LSB 29
  1230. #define RX_MPDU_INFO_BAR_FRAME_MSB 29
  1231. #define RX_MPDU_INFO_BAR_FRAME_MASK 0x20000000
  1232. /* Description RAW_MPDU
  1233. Consumer: SW
  1234. Producer: RXOLE
  1235. RXPCU sets this field to 0 and RXOLE overwrites it.
  1236. Set to 1 by RXOLE when it has not performed any 802.11 to
  1237. Ethernet/Natvie WiFi header conversion on this MPDU.
  1238. <legal all>
  1239. */
  1240. #define RX_MPDU_INFO_RAW_MPDU_OFFSET 0x00000030
  1241. #define RX_MPDU_INFO_RAW_MPDU_LSB 30
  1242. #define RX_MPDU_INFO_RAW_MPDU_MSB 30
  1243. #define RX_MPDU_INFO_RAW_MPDU_MASK 0x40000000
  1244. /* Description RESERVED_12
  1245. <legal 0>
  1246. */
  1247. #define RX_MPDU_INFO_RESERVED_12_OFFSET 0x00000030
  1248. #define RX_MPDU_INFO_RESERVED_12_LSB 31
  1249. #define RX_MPDU_INFO_RESERVED_12_MSB 31
  1250. #define RX_MPDU_INFO_RESERVED_12_MASK 0x80000000
  1251. /* Description MPDU_LENGTH
  1252. In case of ndp or phy_err this field will be set to 0
  1253. MPDU length before decapsulation.
  1254. <legal all>
  1255. */
  1256. #define RX_MPDU_INFO_MPDU_LENGTH_OFFSET 0x00000034
  1257. #define RX_MPDU_INFO_MPDU_LENGTH_LSB 0
  1258. #define RX_MPDU_INFO_MPDU_LENGTH_MSB 13
  1259. #define RX_MPDU_INFO_MPDU_LENGTH_MASK 0x00003fff
  1260. /* Description FIRST_MPDU
  1261. See definition in RX attention descriptor
  1262. In case of ndp or phy_err, this field will be set. Note
  1263. however that there will not actually be any data contents
  1264. in the MPDU.
  1265. <legal all>
  1266. */
  1267. #define RX_MPDU_INFO_FIRST_MPDU_OFFSET 0x00000034
  1268. #define RX_MPDU_INFO_FIRST_MPDU_LSB 14
  1269. #define RX_MPDU_INFO_FIRST_MPDU_MSB 14
  1270. #define RX_MPDU_INFO_FIRST_MPDU_MASK 0x00004000
  1271. /* Description MCAST_BCAST
  1272. In case of ndp or phy_err or Phy_err_during_mpdu_header
  1273. this field will be set to 0
  1274. See definition in RX attention descriptor
  1275. <legal all>
  1276. */
  1277. #define RX_MPDU_INFO_MCAST_BCAST_OFFSET 0x00000034
  1278. #define RX_MPDU_INFO_MCAST_BCAST_LSB 15
  1279. #define RX_MPDU_INFO_MCAST_BCAST_MSB 15
  1280. #define RX_MPDU_INFO_MCAST_BCAST_MASK 0x00008000
  1281. /* Description AST_INDEX_NOT_FOUND
  1282. In case of ndp or phy_err or Phy_err_during_mpdu_header
  1283. this field will be set to 0
  1284. See definition in RX attention descriptor
  1285. <legal all>
  1286. */
  1287. #define RX_MPDU_INFO_AST_INDEX_NOT_FOUND_OFFSET 0x00000034
  1288. #define RX_MPDU_INFO_AST_INDEX_NOT_FOUND_LSB 16
  1289. #define RX_MPDU_INFO_AST_INDEX_NOT_FOUND_MSB 16
  1290. #define RX_MPDU_INFO_AST_INDEX_NOT_FOUND_MASK 0x00010000
  1291. /* Description AST_INDEX_TIMEOUT
  1292. In case of ndp or phy_err or Phy_err_during_mpdu_header
  1293. this field will be set to 0
  1294. See definition in RX attention descriptor
  1295. <legal all>
  1296. */
  1297. #define RX_MPDU_INFO_AST_INDEX_TIMEOUT_OFFSET 0x00000034
  1298. #define RX_MPDU_INFO_AST_INDEX_TIMEOUT_LSB 17
  1299. #define RX_MPDU_INFO_AST_INDEX_TIMEOUT_MSB 17
  1300. #define RX_MPDU_INFO_AST_INDEX_TIMEOUT_MASK 0x00020000
  1301. /* Description POWER_MGMT
  1302. In case of ndp or phy_err or Phy_err_during_mpdu_header
  1303. this field will be set to 0
  1304. See definition in RX attention descriptor
  1305. <legal all>
  1306. */
  1307. #define RX_MPDU_INFO_POWER_MGMT_OFFSET 0x00000034
  1308. #define RX_MPDU_INFO_POWER_MGMT_LSB 18
  1309. #define RX_MPDU_INFO_POWER_MGMT_MSB 18
  1310. #define RX_MPDU_INFO_POWER_MGMT_MASK 0x00040000
  1311. /* Description NON_QOS
  1312. In case of ndp or phy_err or Phy_err_during_mpdu_header
  1313. this field will be set to 1
  1314. See definition in RX attention descriptor
  1315. <legal all>
  1316. */
  1317. #define RX_MPDU_INFO_NON_QOS_OFFSET 0x00000034
  1318. #define RX_MPDU_INFO_NON_QOS_LSB 19
  1319. #define RX_MPDU_INFO_NON_QOS_MSB 19
  1320. #define RX_MPDU_INFO_NON_QOS_MASK 0x00080000
  1321. /* Description NULL_DATA
  1322. In case of ndp or phy_err or Phy_err_during_mpdu_header
  1323. this field will be set to 0
  1324. See definition in RX attention descriptor
  1325. <legal all>
  1326. */
  1327. #define RX_MPDU_INFO_NULL_DATA_OFFSET 0x00000034
  1328. #define RX_MPDU_INFO_NULL_DATA_LSB 20
  1329. #define RX_MPDU_INFO_NULL_DATA_MSB 20
  1330. #define RX_MPDU_INFO_NULL_DATA_MASK 0x00100000
  1331. /* Description MGMT_TYPE
  1332. In case of ndp or phy_err or Phy_err_during_mpdu_header
  1333. this field will be set to 0
  1334. See definition in RX attention descriptor
  1335. <legal all>
  1336. */
  1337. #define RX_MPDU_INFO_MGMT_TYPE_OFFSET 0x00000034
  1338. #define RX_MPDU_INFO_MGMT_TYPE_LSB 21
  1339. #define RX_MPDU_INFO_MGMT_TYPE_MSB 21
  1340. #define RX_MPDU_INFO_MGMT_TYPE_MASK 0x00200000
  1341. /* Description CTRL_TYPE
  1342. In case of ndp or phy_err or Phy_err_during_mpdu_header
  1343. this field will be set to 0
  1344. See definition in RX attention descriptor
  1345. <legal all>
  1346. */
  1347. #define RX_MPDU_INFO_CTRL_TYPE_OFFSET 0x00000034
  1348. #define RX_MPDU_INFO_CTRL_TYPE_LSB 22
  1349. #define RX_MPDU_INFO_CTRL_TYPE_MSB 22
  1350. #define RX_MPDU_INFO_CTRL_TYPE_MASK 0x00400000
  1351. /* Description MORE_DATA
  1352. In case of ndp or phy_err or Phy_err_during_mpdu_header
  1353. this field will be set to 0
  1354. See definition in RX attention descriptor
  1355. <legal all>
  1356. */
  1357. #define RX_MPDU_INFO_MORE_DATA_OFFSET 0x00000034
  1358. #define RX_MPDU_INFO_MORE_DATA_LSB 23
  1359. #define RX_MPDU_INFO_MORE_DATA_MSB 23
  1360. #define RX_MPDU_INFO_MORE_DATA_MASK 0x00800000
  1361. /* Description EOSP
  1362. In case of ndp or phy_err or Phy_err_during_mpdu_header
  1363. this field will be set to 0
  1364. See definition in RX attention descriptor
  1365. <legal all>
  1366. */
  1367. #define RX_MPDU_INFO_EOSP_OFFSET 0x00000034
  1368. #define RX_MPDU_INFO_EOSP_LSB 24
  1369. #define RX_MPDU_INFO_EOSP_MSB 24
  1370. #define RX_MPDU_INFO_EOSP_MASK 0x01000000
  1371. /* Description FRAGMENT_FLAG
  1372. In case of ndp or phy_err or Phy_err_during_mpdu_header
  1373. this field will be set to 0
  1374. See definition in RX attention descriptor
  1375. <legal all>
  1376. */
  1377. #define RX_MPDU_INFO_FRAGMENT_FLAG_OFFSET 0x00000034
  1378. #define RX_MPDU_INFO_FRAGMENT_FLAG_LSB 25
  1379. #define RX_MPDU_INFO_FRAGMENT_FLAG_MSB 25
  1380. #define RX_MPDU_INFO_FRAGMENT_FLAG_MASK 0x02000000
  1381. /* Description ORDER
  1382. In case of ndp or phy_err or Phy_err_during_mpdu_header
  1383. this field will be set to 0
  1384. See definition in RX attention descriptor
  1385. <legal all>
  1386. */
  1387. #define RX_MPDU_INFO_ORDER_OFFSET 0x00000034
  1388. #define RX_MPDU_INFO_ORDER_LSB 26
  1389. #define RX_MPDU_INFO_ORDER_MSB 26
  1390. #define RX_MPDU_INFO_ORDER_MASK 0x04000000
  1391. /* Description U_APSD_TRIGGER
  1392. In case of ndp or phy_err or Phy_err_during_mpdu_header
  1393. this field will be set to 0
  1394. See definition in RX attention descriptor
  1395. <legal all>
  1396. */
  1397. #define RX_MPDU_INFO_U_APSD_TRIGGER_OFFSET 0x00000034
  1398. #define RX_MPDU_INFO_U_APSD_TRIGGER_LSB 27
  1399. #define RX_MPDU_INFO_U_APSD_TRIGGER_MSB 27
  1400. #define RX_MPDU_INFO_U_APSD_TRIGGER_MASK 0x08000000
  1401. /* Description ENCRYPT_REQUIRED
  1402. In case of ndp or phy_err or Phy_err_during_mpdu_header
  1403. this field will be set to 0
  1404. See definition in RX attention descriptor
  1405. <legal all>
  1406. */
  1407. #define RX_MPDU_INFO_ENCRYPT_REQUIRED_OFFSET 0x00000034
  1408. #define RX_MPDU_INFO_ENCRYPT_REQUIRED_LSB 28
  1409. #define RX_MPDU_INFO_ENCRYPT_REQUIRED_MSB 28
  1410. #define RX_MPDU_INFO_ENCRYPT_REQUIRED_MASK 0x10000000
  1411. /* Description DIRECTED
  1412. In case of ndp or phy_err or Phy_err_during_mpdu_header
  1413. this field will be set to 0
  1414. See definition in RX attention descriptor
  1415. <legal all>
  1416. */
  1417. #define RX_MPDU_INFO_DIRECTED_OFFSET 0x00000034
  1418. #define RX_MPDU_INFO_DIRECTED_LSB 29
  1419. #define RX_MPDU_INFO_DIRECTED_MSB 29
  1420. #define RX_MPDU_INFO_DIRECTED_MASK 0x20000000
  1421. /* Description AMSDU_PRESENT
  1422. Field only valid when Mpdu_qos_control_valid is set
  1423. The 'amsdu_present' bit within the QoS control field of
  1424. the MPDU
  1425. <legal all>
  1426. */
  1427. #define RX_MPDU_INFO_AMSDU_PRESENT_OFFSET 0x00000034
  1428. #define RX_MPDU_INFO_AMSDU_PRESENT_LSB 30
  1429. #define RX_MPDU_INFO_AMSDU_PRESENT_MSB 30
  1430. #define RX_MPDU_INFO_AMSDU_PRESENT_MASK 0x40000000
  1431. /* Description RESERVED_13
  1432. Field only valid when Mpdu_qos_control_valid is set
  1433. This indicates whether the 'Ack policy' field within the
  1434. QoS control field of the MPDU indicates 'no-Ack.'
  1435. <legal all>
  1436. */
  1437. #define RX_MPDU_INFO_RESERVED_13_OFFSET 0x00000034
  1438. #define RX_MPDU_INFO_RESERVED_13_LSB 31
  1439. #define RX_MPDU_INFO_RESERVED_13_MSB 31
  1440. #define RX_MPDU_INFO_RESERVED_13_MASK 0x80000000
  1441. /* Description MPDU_FRAME_CONTROL_FIELD
  1442. Field only valid when Mpdu_frame_control_valid is set
  1443. The frame control field of this received MPDU.
  1444. Field only valid when Ndp_frame and phy_err are NOT set
  1445. Bytes 0 + 1 of the received MPDU
  1446. <legal all>
  1447. */
  1448. #define RX_MPDU_INFO_MPDU_FRAME_CONTROL_FIELD_OFFSET 0x00000038
  1449. #define RX_MPDU_INFO_MPDU_FRAME_CONTROL_FIELD_LSB 0
  1450. #define RX_MPDU_INFO_MPDU_FRAME_CONTROL_FIELD_MSB 15
  1451. #define RX_MPDU_INFO_MPDU_FRAME_CONTROL_FIELD_MASK 0x0000ffff
  1452. /* Description MPDU_DURATION_FIELD
  1453. Field only valid when Mpdu_duration_valid is set
  1454. The duration field of this received MPDU.
  1455. <legal all>
  1456. */
  1457. #define RX_MPDU_INFO_MPDU_DURATION_FIELD_OFFSET 0x00000038
  1458. #define RX_MPDU_INFO_MPDU_DURATION_FIELD_LSB 16
  1459. #define RX_MPDU_INFO_MPDU_DURATION_FIELD_MSB 31
  1460. #define RX_MPDU_INFO_MPDU_DURATION_FIELD_MASK 0xffff0000
  1461. /* Description MAC_ADDR_AD1_31_0
  1462. Field only valid when mac_addr_ad1_valid is set
  1463. The Least Significant 4 bytes of the Received Frames MAC
  1464. Address AD1
  1465. <legal all>
  1466. */
  1467. #define RX_MPDU_INFO_MAC_ADDR_AD1_31_0_OFFSET 0x0000003c
  1468. #define RX_MPDU_INFO_MAC_ADDR_AD1_31_0_LSB 0
  1469. #define RX_MPDU_INFO_MAC_ADDR_AD1_31_0_MSB 31
  1470. #define RX_MPDU_INFO_MAC_ADDR_AD1_31_0_MASK 0xffffffff
  1471. /* Description MAC_ADDR_AD1_47_32
  1472. Field only valid when mac_addr_ad1_valid is set
  1473. The 2 most significant bytes of the Received Frames MAC
  1474. Address AD1
  1475. <legal all>
  1476. */
  1477. #define RX_MPDU_INFO_MAC_ADDR_AD1_47_32_OFFSET 0x00000040
  1478. #define RX_MPDU_INFO_MAC_ADDR_AD1_47_32_LSB 0
  1479. #define RX_MPDU_INFO_MAC_ADDR_AD1_47_32_MSB 15
  1480. #define RX_MPDU_INFO_MAC_ADDR_AD1_47_32_MASK 0x0000ffff
  1481. /* Description MAC_ADDR_AD2_15_0
  1482. Field only valid when mac_addr_ad2_valid is set
  1483. The Least Significant 2 bytes of the Received Frames MAC
  1484. Address AD2
  1485. <legal all>
  1486. */
  1487. #define RX_MPDU_INFO_MAC_ADDR_AD2_15_0_OFFSET 0x00000040
  1488. #define RX_MPDU_INFO_MAC_ADDR_AD2_15_0_LSB 16
  1489. #define RX_MPDU_INFO_MAC_ADDR_AD2_15_0_MSB 31
  1490. #define RX_MPDU_INFO_MAC_ADDR_AD2_15_0_MASK 0xffff0000
  1491. /* Description MAC_ADDR_AD2_47_16
  1492. Field only valid when mac_addr_ad2_valid is set
  1493. The 4 most significant bytes of the Received Frames MAC
  1494. Address AD2
  1495. <legal all>
  1496. */
  1497. #define RX_MPDU_INFO_MAC_ADDR_AD2_47_16_OFFSET 0x00000044
  1498. #define RX_MPDU_INFO_MAC_ADDR_AD2_47_16_LSB 0
  1499. #define RX_MPDU_INFO_MAC_ADDR_AD2_47_16_MSB 31
  1500. #define RX_MPDU_INFO_MAC_ADDR_AD2_47_16_MASK 0xffffffff
  1501. /* Description MAC_ADDR_AD3_31_0
  1502. Field only valid when mac_addr_ad3_valid is set
  1503. The Least Significant 4 bytes of the Received Frames MAC
  1504. Address AD3
  1505. <legal all>
  1506. */
  1507. #define RX_MPDU_INFO_MAC_ADDR_AD3_31_0_OFFSET 0x00000048
  1508. #define RX_MPDU_INFO_MAC_ADDR_AD3_31_0_LSB 0
  1509. #define RX_MPDU_INFO_MAC_ADDR_AD3_31_0_MSB 31
  1510. #define RX_MPDU_INFO_MAC_ADDR_AD3_31_0_MASK 0xffffffff
  1511. /* Description MAC_ADDR_AD3_47_32
  1512. Field only valid when mac_addr_ad3_valid is set
  1513. The 2 most significant bytes of the Received Frames MAC
  1514. Address AD3
  1515. <legal all>
  1516. */
  1517. #define RX_MPDU_INFO_MAC_ADDR_AD3_47_32_OFFSET 0x0000004c
  1518. #define RX_MPDU_INFO_MAC_ADDR_AD3_47_32_LSB 0
  1519. #define RX_MPDU_INFO_MAC_ADDR_AD3_47_32_MSB 15
  1520. #define RX_MPDU_INFO_MAC_ADDR_AD3_47_32_MASK 0x0000ffff
  1521. /* Description MPDU_SEQUENCE_CONTROL_FIELD
  1522. Field only valid when mpdu_sequence_control_valid is set
  1523. The sequence control field of the MPDU
  1524. <legal all>
  1525. */
  1526. #define RX_MPDU_INFO_MPDU_SEQUENCE_CONTROL_FIELD_OFFSET 0x0000004c
  1527. #define RX_MPDU_INFO_MPDU_SEQUENCE_CONTROL_FIELD_LSB 16
  1528. #define RX_MPDU_INFO_MPDU_SEQUENCE_CONTROL_FIELD_MSB 31
  1529. #define RX_MPDU_INFO_MPDU_SEQUENCE_CONTROL_FIELD_MASK 0xffff0000
  1530. /* Description MAC_ADDR_AD4_31_0
  1531. Field only valid when mac_addr_ad4_valid is set
  1532. The Least Significant 4 bytes of the Received Frames MAC
  1533. Address AD4
  1534. <legal all>
  1535. */
  1536. #define RX_MPDU_INFO_MAC_ADDR_AD4_31_0_OFFSET 0x00000050
  1537. #define RX_MPDU_INFO_MAC_ADDR_AD4_31_0_LSB 0
  1538. #define RX_MPDU_INFO_MAC_ADDR_AD4_31_0_MSB 31
  1539. #define RX_MPDU_INFO_MAC_ADDR_AD4_31_0_MASK 0xffffffff
  1540. /* Description MAC_ADDR_AD4_47_32
  1541. Field only valid when mac_addr_ad4_valid is set
  1542. The 2 most significant bytes of the Received Frames MAC
  1543. Address AD4
  1544. <legal all>
  1545. */
  1546. #define RX_MPDU_INFO_MAC_ADDR_AD4_47_32_OFFSET 0x00000054
  1547. #define RX_MPDU_INFO_MAC_ADDR_AD4_47_32_LSB 0
  1548. #define RX_MPDU_INFO_MAC_ADDR_AD4_47_32_MSB 15
  1549. #define RX_MPDU_INFO_MAC_ADDR_AD4_47_32_MASK 0x0000ffff
  1550. /* Description MPDU_QOS_CONTROL_FIELD
  1551. Field only valid when mpdu_qos_control_valid is set
  1552. The sequence control field of the MPDU
  1553. <legal all>
  1554. */
  1555. #define RX_MPDU_INFO_MPDU_QOS_CONTROL_FIELD_OFFSET 0x00000054
  1556. #define RX_MPDU_INFO_MPDU_QOS_CONTROL_FIELD_LSB 16
  1557. #define RX_MPDU_INFO_MPDU_QOS_CONTROL_FIELD_MSB 31
  1558. #define RX_MPDU_INFO_MPDU_QOS_CONTROL_FIELD_MASK 0xffff0000
  1559. /* Description MPDU_HT_CONTROL_FIELD
  1560. Field only valid when mpdu_qos_control_valid is set
  1561. The HT control field of the MPDU
  1562. <legal all>
  1563. */
  1564. #define RX_MPDU_INFO_MPDU_HT_CONTROL_FIELD_OFFSET 0x00000058
  1565. #define RX_MPDU_INFO_MPDU_HT_CONTROL_FIELD_LSB 0
  1566. #define RX_MPDU_INFO_MPDU_HT_CONTROL_FIELD_MSB 31
  1567. #define RX_MPDU_INFO_MPDU_HT_CONTROL_FIELD_MASK 0xffffffff
  1568. /* Description VDEV_ID
  1569. Consumer: RXOLE
  1570. Producer: FW
  1571. Virtual device associated with this peer
  1572. RXOLE uses this to determine intra-BSS routing.
  1573. <legal all>
  1574. */
  1575. #define RX_MPDU_INFO_VDEV_ID_OFFSET 0x0000005c
  1576. #define RX_MPDU_INFO_VDEV_ID_LSB 0
  1577. #define RX_MPDU_INFO_VDEV_ID_MSB 7
  1578. #define RX_MPDU_INFO_VDEV_ID_MASK 0x000000ff
  1579. /* Description SERVICE_CODE
  1580. Opaque service code between PPE and Wi-Fi
  1581. This field gets passed on by REO to PPE in the EDMA descriptor
  1582. ('REO_TO_PPE_RING').
  1583. <legal all>
  1584. */
  1585. #define RX_MPDU_INFO_SERVICE_CODE_OFFSET 0x0000005c
  1586. #define RX_MPDU_INFO_SERVICE_CODE_LSB 8
  1587. #define RX_MPDU_INFO_SERVICE_CODE_MSB 16
  1588. #define RX_MPDU_INFO_SERVICE_CODE_MASK 0x0001ff00
  1589. /* Description PRIORITY_VALID
  1590. This field gets passed on by REO to PPE in the EDMA descriptor
  1591. ('REO_TO_PPE_RING').
  1592. <legal all>
  1593. */
  1594. #define RX_MPDU_INFO_PRIORITY_VALID_OFFSET 0x0000005c
  1595. #define RX_MPDU_INFO_PRIORITY_VALID_LSB 17
  1596. #define RX_MPDU_INFO_PRIORITY_VALID_MSB 17
  1597. #define RX_MPDU_INFO_PRIORITY_VALID_MASK 0x00020000
  1598. /* Description SRC_INFO
  1599. Source (virtual) device/interface info. associated with
  1600. this peer
  1601. This field gets passed on by REO to PPE in the EDMA descriptor
  1602. ('REO_TO_PPE_RING').
  1603. <legal all>
  1604. */
  1605. #define RX_MPDU_INFO_SRC_INFO_OFFSET 0x0000005c
  1606. #define RX_MPDU_INFO_SRC_INFO_LSB 18
  1607. #define RX_MPDU_INFO_SRC_INFO_MSB 29
  1608. #define RX_MPDU_INFO_SRC_INFO_MASK 0x3ffc0000
  1609. /* Description RESERVED_23A
  1610. <legal 0>
  1611. */
  1612. #define RX_MPDU_INFO_RESERVED_23A_OFFSET 0x0000005c
  1613. #define RX_MPDU_INFO_RESERVED_23A_LSB 30
  1614. #define RX_MPDU_INFO_RESERVED_23A_MSB 30
  1615. #define RX_MPDU_INFO_RESERVED_23A_MASK 0x40000000
  1616. /* Description MULTI_LINK_ADDR_AD1_AD2_VALID
  1617. If set, Rx OLE shall convert Address1 and Address2 of received
  1618. data frames to multi-link addresses during decapsulation
  1619. to Ethernet or Native WiFi
  1620. <legal all>
  1621. */
  1622. #define RX_MPDU_INFO_MULTI_LINK_ADDR_AD1_AD2_VALID_OFFSET 0x0000005c
  1623. #define RX_MPDU_INFO_MULTI_LINK_ADDR_AD1_AD2_VALID_LSB 31
  1624. #define RX_MPDU_INFO_MULTI_LINK_ADDR_AD1_AD2_VALID_MSB 31
  1625. #define RX_MPDU_INFO_MULTI_LINK_ADDR_AD1_AD2_VALID_MASK 0x80000000
  1626. /* Description MULTI_LINK_ADDR_AD1_31_0
  1627. Field only valid if Multi_link_addr_ad1_ad2_valid is set
  1628. Multi-link receiver address (address1), bits [31:0]
  1629. */
  1630. #define RX_MPDU_INFO_MULTI_LINK_ADDR_AD1_31_0_OFFSET 0x00000060
  1631. #define RX_MPDU_INFO_MULTI_LINK_ADDR_AD1_31_0_LSB 0
  1632. #define RX_MPDU_INFO_MULTI_LINK_ADDR_AD1_31_0_MSB 31
  1633. #define RX_MPDU_INFO_MULTI_LINK_ADDR_AD1_31_0_MASK 0xffffffff
  1634. /* Description MULTI_LINK_ADDR_AD1_47_32
  1635. Field only valid if Multi_link_addr_ad1_ad2_valid is set
  1636. Multi-link receiver address (address1), bits [47:32]
  1637. */
  1638. #define RX_MPDU_INFO_MULTI_LINK_ADDR_AD1_47_32_OFFSET 0x00000064
  1639. #define RX_MPDU_INFO_MULTI_LINK_ADDR_AD1_47_32_LSB 0
  1640. #define RX_MPDU_INFO_MULTI_LINK_ADDR_AD1_47_32_MSB 15
  1641. #define RX_MPDU_INFO_MULTI_LINK_ADDR_AD1_47_32_MASK 0x0000ffff
  1642. /* Description MULTI_LINK_ADDR_AD2_15_0
  1643. Field only valid if Multi_link_addr_ad1_ad2_valid is set
  1644. Multi-link transmitter address (address2), bits [15:0]
  1645. */
  1646. #define RX_MPDU_INFO_MULTI_LINK_ADDR_AD2_15_0_OFFSET 0x00000064
  1647. #define RX_MPDU_INFO_MULTI_LINK_ADDR_AD2_15_0_LSB 16
  1648. #define RX_MPDU_INFO_MULTI_LINK_ADDR_AD2_15_0_MSB 31
  1649. #define RX_MPDU_INFO_MULTI_LINK_ADDR_AD2_15_0_MASK 0xffff0000
  1650. /* Description MULTI_LINK_ADDR_AD2_47_16
  1651. Field only valid if Multi_link_addr_ad1_ad2_valid is set
  1652. Multi-link transmitter address (address2), bits [47:16]
  1653. */
  1654. #define RX_MPDU_INFO_MULTI_LINK_ADDR_AD2_47_16_OFFSET 0x00000068
  1655. #define RX_MPDU_INFO_MULTI_LINK_ADDR_AD2_47_16_LSB 0
  1656. #define RX_MPDU_INFO_MULTI_LINK_ADDR_AD2_47_16_MSB 31
  1657. #define RX_MPDU_INFO_MULTI_LINK_ADDR_AD2_47_16_MASK 0xffffffff
  1658. /* Description AUTHORIZED_TO_SEND_WDS
  1659. If not set, RXDMA shall perform error-routing for WDS packets
  1660. as the sender is not authorized and might misuse WDS frame
  1661. format to inject packets with arbitrary DA/SA.
  1662. <legal all>
  1663. */
  1664. #define RX_MPDU_INFO_AUTHORIZED_TO_SEND_WDS_OFFSET 0x0000006c
  1665. #define RX_MPDU_INFO_AUTHORIZED_TO_SEND_WDS_LSB 0
  1666. #define RX_MPDU_INFO_AUTHORIZED_TO_SEND_WDS_MSB 0
  1667. #define RX_MPDU_INFO_AUTHORIZED_TO_SEND_WDS_MASK 0x00000001
  1668. /* Description RESERVED_27A
  1669. Bit 1: disallow_mcbc_da_in_unicast_mpdu:
  1670. If set, RX OLE shall disallow multicast/broadcast DA in
  1671. A-MSDU subframes in case of ToDS=0 MPDUs. This may be enabled
  1672. for TDLS peers.
  1673. <legal 0-1>
  1674. */
  1675. #define RX_MPDU_INFO_RESERVED_27A_OFFSET 0x0000006c
  1676. #define RX_MPDU_INFO_RESERVED_27A_LSB 1
  1677. #define RX_MPDU_INFO_RESERVED_27A_MSB 31
  1678. #define RX_MPDU_INFO_RESERVED_27A_MASK 0xfffffffe
  1679. /* Description RESERVED_28A
  1680. <legal 0>
  1681. */
  1682. #define RX_MPDU_INFO_RESERVED_28A_OFFSET 0x00000070
  1683. #define RX_MPDU_INFO_RESERVED_28A_LSB 0
  1684. #define RX_MPDU_INFO_RESERVED_28A_MSB 31
  1685. #define RX_MPDU_INFO_RESERVED_28A_MASK 0xffffffff
  1686. /* Description RESERVED_29A
  1687. <legal 0>
  1688. */
  1689. #define RX_MPDU_INFO_RESERVED_29A_OFFSET 0x00000074
  1690. #define RX_MPDU_INFO_RESERVED_29A_LSB 0
  1691. #define RX_MPDU_INFO_RESERVED_29A_MSB 31
  1692. #define RX_MPDU_INFO_RESERVED_29A_MASK 0xffffffff
  1693. #endif // RX_MPDU_INFO