rx_mpdu_info.h 100 KB

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