rx_msdu_end.h 116 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842184318441845184618471848184918501851185218531854185518561857185818591860186118621863186418651866186718681869187018711872187318741875187618771878187918801881188218831884188518861887188818891890189118921893189418951896189718981899190019011902190319041905190619071908190919101911191219131914191519161917191819191920192119221923192419251926192719281929193019311932193319341935193619371938193919401941194219431944194519461947194819491950195119521953195419551956195719581959196019611962196319641965196619671968196919701971197219731974197519761977197819791980198119821983198419851986198719881989199019911992199319941995199619971998199920002001200220032004200520062007200820092010201120122013201420152016201720182019202020212022202320242025202620272028202920302031203220332034203520362037203820392040204120422043204420452046204720482049205020512052205320542055205620572058205920602061206220632064206520662067206820692070207120722073207420752076207720782079208020812082208320842085208620872088208920902091209220932094209520962097209820992100210121022103210421052106210721082109211021112112211321142115211621172118211921202121212221232124212521262127212821292130213121322133213421352136213721382139214021412142214321442145214621472148214921502151215221532154215521562157215821592160216121622163216421652166216721682169217021712172217321742175217621772178217921802181218221832184218521862187218821892190219121922193219421952196219721982199220022012202220322042205220622072208220922102211221222132214221522162217221822192220222122222223222422252226222722282229223022312232223322342235223622372238223922402241224222432244224522462247224822492250225122522253225422552256225722582259226022612262226322642265226622672268226922702271227222732274227522762277227822792280228122822283228422852286228722882289229022912292229322942295229622972298229923002301230223032304230523062307230823092310231123122313231423152316231723182319232023212322232323242325232623272328232923302331233223332334233523362337233823392340234123422343234423452346234723482349235023512352235323542355235623572358235923602361236223632364236523662367236823692370237123722373237423752376237723782379238023812382238323842385238623872388238923902391239223932394239523962397239823992400240124022403240424052406240724082409241024112412241324142415241624172418241924202421242224232424242524262427242824292430243124322433243424352436243724382439
  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_MSDU_END_H_
  17. #define _RX_MSDU_END_H_
  18. #if !defined(__ASSEMBLER__)
  19. #endif
  20. #define NUM_OF_DWORDS_RX_MSDU_END 32
  21. #define NUM_OF_QWORDS_RX_MSDU_END 16
  22. struct rx_msdu_end {
  23. #ifndef WIFI_BIT_ORDER_BIG_ENDIAN
  24. uint32_t rxpcu_mpdu_filter_in_category : 2, // [1:0]
  25. sw_frame_group_id : 7, // [8:2]
  26. reserved_0 : 7, // [15:9]
  27. phy_ppdu_id : 16; // [31:16]
  28. uint32_t ip_hdr_chksum : 16, // [15:0]
  29. reported_mpdu_length : 14, // [29:16]
  30. reserved_1a : 2; // [31:30]
  31. uint32_t reserved_2a : 8, // [7:0]
  32. cce_super_rule : 6, // [13:8]
  33. cce_classify_not_done_truncate : 1, // [14:14]
  34. cce_classify_not_done_cce_dis : 1, // [15:15]
  35. cumulative_l3_checksum : 16; // [31:16]
  36. uint32_t rule_indication_31_0 : 32; // [31:0]
  37. uint32_t ipv6_options_crc : 32; // [31:0]
  38. uint32_t da_offset : 6, // [5:0]
  39. sa_offset : 6, // [11:6]
  40. da_offset_valid : 1, // [12:12]
  41. sa_offset_valid : 1, // [13:13]
  42. reserved_5a : 2, // [15:14]
  43. l3_type : 16; // [31:16]
  44. uint32_t rule_indication_63_32 : 32; // [31:0]
  45. uint32_t tcp_seq_number : 32; // [31:0]
  46. uint32_t tcp_ack_number : 32; // [31:0]
  47. uint32_t tcp_flag : 9, // [8:0]
  48. lro_eligible : 1, // [9:9]
  49. reserved_9a : 6, // [15:10]
  50. window_size : 16; // [31:16]
  51. uint32_t sa_sw_peer_id : 16, // [15:0]
  52. sa_idx_timeout : 1, // [16:16]
  53. da_idx_timeout : 1, // [17:17]
  54. to_ds : 1, // [18:18]
  55. tid : 4, // [22:19]
  56. sa_is_valid : 1, // [23:23]
  57. da_is_valid : 1, // [24:24]
  58. da_is_mcbc : 1, // [25:25]
  59. l3_header_padding : 2, // [27:26]
  60. first_msdu : 1, // [28:28]
  61. last_msdu : 1, // [29:29]
  62. fr_ds : 1, // [30:30]
  63. ip_chksum_fail_copy : 1; // [31:31]
  64. uint32_t sa_idx : 16, // [15:0]
  65. da_idx_or_sw_peer_id : 16; // [31:16]
  66. uint32_t msdu_drop : 1, // [0:0]
  67. reo_destination_indication : 5, // [5:1]
  68. flow_idx : 20, // [25:6]
  69. use_ppe : 1, // [26:26]
  70. mesh_sta : 2, // [28:27]
  71. vlan_ctag_stripped : 1, // [29:29]
  72. vlan_stag_stripped : 1, // [30:30]
  73. fragment_flag : 1; // [31:31]
  74. uint32_t fse_metadata : 32; // [31:0]
  75. uint32_t cce_metadata : 16, // [15:0]
  76. tcp_udp_chksum : 16; // [31:16]
  77. uint32_t aggregation_count : 8, // [7:0]
  78. flow_aggregation_continuation : 1, // [8:8]
  79. fisa_timeout : 1, // [9:9]
  80. tcp_udp_chksum_fail_copy : 1, // [10:10]
  81. msdu_limit_error : 1, // [11:11]
  82. flow_idx_timeout : 1, // [12:12]
  83. flow_idx_invalid : 1, // [13:13]
  84. cce_match : 1, // [14:14]
  85. amsdu_parser_error : 1, // [15:15]
  86. cumulative_ip_length : 16; // [31:16]
  87. uint32_t key_id_octet : 8, // [7:0]
  88. reserved_16a : 24; // [31:8]
  89. uint32_t reserved_17a : 6, // [5:0]
  90. service_code : 9, // [14:6]
  91. priority_valid : 1, // [15:15]
  92. intra_bss : 1, // [16:16]
  93. dest_chip_id : 2, // [18:17]
  94. multicast_echo : 1, // [19:19]
  95. wds_learning_event : 1, // [20:20]
  96. wds_roaming_event : 1, // [21:21]
  97. wds_keep_alive_event : 1, // [22:22]
  98. dest_chip_pmac_id : 1, // [23:23]
  99. reserved_17b : 8; // [31:24]
  100. uint32_t msdu_length : 14, // [13:0]
  101. stbc : 1, // [14:14]
  102. ipsec_esp : 1, // [15:15]
  103. l3_offset : 7, // [22:16]
  104. ipsec_ah : 1, // [23:23]
  105. l4_offset : 8; // [31:24]
  106. uint32_t msdu_number : 8, // [7:0]
  107. decap_format : 2, // [9:8]
  108. ipv4_proto : 1, // [10:10]
  109. ipv6_proto : 1, // [11:11]
  110. tcp_proto : 1, // [12:12]
  111. udp_proto : 1, // [13:13]
  112. ip_frag : 1, // [14:14]
  113. tcp_only_ack : 1, // [15:15]
  114. da_is_bcast_mcast : 1, // [16:16]
  115. toeplitz_hash_sel : 2, // [18:17]
  116. ip_fixed_header_valid : 1, // [19:19]
  117. ip_extn_header_valid : 1, // [20:20]
  118. tcp_udp_header_valid : 1, // [21:21]
  119. mesh_control_present : 1, // [22:22]
  120. ldpc : 1, // [23:23]
  121. ip4_protocol_ip6_next_header : 8; // [31:24]
  122. uint32_t vlan_ctag_ci : 16, // [15:0]
  123. vlan_stag_ci : 16; // [31:16]
  124. uint32_t peer_meta_data : 32; // [31:0]
  125. uint32_t user_rssi : 8, // [7:0]
  126. pkt_type : 4, // [11:8]
  127. sgi : 2, // [13:12]
  128. rate_mcs : 4, // [17:14]
  129. receive_bandwidth : 3, // [20:18]
  130. reception_type : 3, // [23:21]
  131. mimo_ss_bitmap : 7, // [30:24]
  132. msdu_done_copy : 1; // [31:31]
  133. uint32_t flow_id_toeplitz : 32; // [31:0]
  134. uint32_t ppdu_start_timestamp_63_32 : 32; // [31:0]
  135. uint32_t sw_phy_meta_data : 32; // [31:0]
  136. uint32_t ppdu_start_timestamp_31_0 : 32; // [31:0]
  137. uint32_t toeplitz_hash_2_or_4 : 32; // [31:0]
  138. uint32_t reserved_28a : 16, // [15:0]
  139. sa_15_0 : 16; // [31:16]
  140. uint32_t sa_47_16 : 32; // [31:0]
  141. uint32_t first_mpdu : 1, // [0:0]
  142. reserved_30a : 1, // [1:1]
  143. mcast_bcast : 1, // [2:2]
  144. ast_index_not_found : 1, // [3:3]
  145. ast_index_timeout : 1, // [4:4]
  146. power_mgmt : 1, // [5:5]
  147. non_qos : 1, // [6:6]
  148. null_data : 1, // [7:7]
  149. mgmt_type : 1, // [8:8]
  150. ctrl_type : 1, // [9:9]
  151. more_data : 1, // [10:10]
  152. eosp : 1, // [11:11]
  153. a_msdu_error : 1, // [12:12]
  154. reserved_30b : 1, // [13:13]
  155. order : 1, // [14:14]
  156. wifi_parser_error : 1, // [15:15]
  157. overflow_err : 1, // [16:16]
  158. msdu_length_err : 1, // [17:17]
  159. tcp_udp_chksum_fail : 1, // [18:18]
  160. ip_chksum_fail : 1, // [19:19]
  161. sa_idx_invalid : 1, // [20:20]
  162. da_idx_invalid : 1, // [21:21]
  163. amsdu_addr_mismatch : 1, // [22:22]
  164. rx_in_tx_decrypt_byp : 1, // [23:23]
  165. encrypt_required : 1, // [24:24]
  166. directed : 1, // [25:25]
  167. buffer_fragment : 1, // [26:26]
  168. mpdu_length_err : 1, // [27:27]
  169. tkip_mic_err : 1, // [28:28]
  170. decrypt_err : 1, // [29:29]
  171. unencrypted_frame_err : 1, // [30:30]
  172. fcs_err : 1; // [31:31]
  173. uint32_t reserved_31a : 10, // [9:0]
  174. decrypt_status_code : 3, // [12:10]
  175. rx_bitmap_not_updated : 1, // [13:13]
  176. reserved_31b : 17, // [30:14]
  177. msdu_done : 1; // [31:31]
  178. #else
  179. uint32_t phy_ppdu_id : 16, // [31:16]
  180. reserved_0 : 7, // [15:9]
  181. sw_frame_group_id : 7, // [8:2]
  182. rxpcu_mpdu_filter_in_category : 2; // [1:0]
  183. uint32_t reserved_1a : 2, // [31:30]
  184. reported_mpdu_length : 14, // [29:16]
  185. ip_hdr_chksum : 16; // [15:0]
  186. uint32_t cumulative_l3_checksum : 16, // [31:16]
  187. cce_classify_not_done_cce_dis : 1, // [15:15]
  188. cce_classify_not_done_truncate : 1, // [14:14]
  189. cce_super_rule : 6, // [13:8]
  190. reserved_2a : 8; // [7:0]
  191. uint32_t rule_indication_31_0 : 32; // [31:0]
  192. uint32_t ipv6_options_crc : 32; // [31:0]
  193. uint32_t l3_type : 16, // [31:16]
  194. reserved_5a : 2, // [15:14]
  195. sa_offset_valid : 1, // [13:13]
  196. da_offset_valid : 1, // [12:12]
  197. sa_offset : 6, // [11:6]
  198. da_offset : 6; // [5:0]
  199. uint32_t rule_indication_63_32 : 32; // [31:0]
  200. uint32_t tcp_seq_number : 32; // [31:0]
  201. uint32_t tcp_ack_number : 32; // [31:0]
  202. uint32_t window_size : 16, // [31:16]
  203. reserved_9a : 6, // [15:10]
  204. lro_eligible : 1, // [9:9]
  205. tcp_flag : 9; // [8:0]
  206. uint32_t ip_chksum_fail_copy : 1, // [31:31]
  207. fr_ds : 1, // [30:30]
  208. last_msdu : 1, // [29:29]
  209. first_msdu : 1, // [28:28]
  210. l3_header_padding : 2, // [27:26]
  211. da_is_mcbc : 1, // [25:25]
  212. da_is_valid : 1, // [24:24]
  213. sa_is_valid : 1, // [23:23]
  214. tid : 4, // [22:19]
  215. to_ds : 1, // [18:18]
  216. da_idx_timeout : 1, // [17:17]
  217. sa_idx_timeout : 1, // [16:16]
  218. sa_sw_peer_id : 16; // [15:0]
  219. uint32_t da_idx_or_sw_peer_id : 16, // [31:16]
  220. sa_idx : 16; // [15:0]
  221. uint32_t fragment_flag : 1, // [31:31]
  222. vlan_stag_stripped : 1, // [30:30]
  223. vlan_ctag_stripped : 1, // [29:29]
  224. mesh_sta : 2, // [28:27]
  225. use_ppe : 1, // [26:26]
  226. flow_idx : 20, // [25:6]
  227. reo_destination_indication : 5, // [5:1]
  228. msdu_drop : 1; // [0:0]
  229. uint32_t fse_metadata : 32; // [31:0]
  230. uint32_t tcp_udp_chksum : 16, // [31:16]
  231. cce_metadata : 16; // [15:0]
  232. uint32_t cumulative_ip_length : 16, // [31:16]
  233. amsdu_parser_error : 1, // [15:15]
  234. cce_match : 1, // [14:14]
  235. flow_idx_invalid : 1, // [13:13]
  236. flow_idx_timeout : 1, // [12:12]
  237. msdu_limit_error : 1, // [11:11]
  238. tcp_udp_chksum_fail_copy : 1, // [10:10]
  239. fisa_timeout : 1, // [9:9]
  240. flow_aggregation_continuation : 1, // [8:8]
  241. aggregation_count : 8; // [7:0]
  242. uint32_t reserved_16a : 24, // [31:8]
  243. key_id_octet : 8; // [7:0]
  244. uint32_t reserved_17b : 8, // [31:24]
  245. dest_chip_pmac_id : 1, // [23:23]
  246. wds_keep_alive_event : 1, // [22:22]
  247. wds_roaming_event : 1, // [21:21]
  248. wds_learning_event : 1, // [20:20]
  249. multicast_echo : 1, // [19:19]
  250. dest_chip_id : 2, // [18:17]
  251. intra_bss : 1, // [16:16]
  252. priority_valid : 1, // [15:15]
  253. service_code : 9, // [14:6]
  254. reserved_17a : 6; // [5:0]
  255. uint32_t l4_offset : 8, // [31:24]
  256. ipsec_ah : 1, // [23:23]
  257. l3_offset : 7, // [22:16]
  258. ipsec_esp : 1, // [15:15]
  259. stbc : 1, // [14:14]
  260. msdu_length : 14; // [13:0]
  261. uint32_t ip4_protocol_ip6_next_header : 8, // [31:24]
  262. ldpc : 1, // [23:23]
  263. mesh_control_present : 1, // [22:22]
  264. tcp_udp_header_valid : 1, // [21:21]
  265. ip_extn_header_valid : 1, // [20:20]
  266. ip_fixed_header_valid : 1, // [19:19]
  267. toeplitz_hash_sel : 2, // [18:17]
  268. da_is_bcast_mcast : 1, // [16:16]
  269. tcp_only_ack : 1, // [15:15]
  270. ip_frag : 1, // [14:14]
  271. udp_proto : 1, // [13:13]
  272. tcp_proto : 1, // [12:12]
  273. ipv6_proto : 1, // [11:11]
  274. ipv4_proto : 1, // [10:10]
  275. decap_format : 2, // [9:8]
  276. msdu_number : 8; // [7:0]
  277. uint32_t vlan_stag_ci : 16, // [31:16]
  278. vlan_ctag_ci : 16; // [15:0]
  279. uint32_t peer_meta_data : 32; // [31:0]
  280. uint32_t msdu_done_copy : 1, // [31:31]
  281. mimo_ss_bitmap : 7, // [30:24]
  282. reception_type : 3, // [23:21]
  283. receive_bandwidth : 3, // [20:18]
  284. rate_mcs : 4, // [17:14]
  285. sgi : 2, // [13:12]
  286. pkt_type : 4, // [11:8]
  287. user_rssi : 8; // [7:0]
  288. uint32_t flow_id_toeplitz : 32; // [31:0]
  289. uint32_t ppdu_start_timestamp_63_32 : 32; // [31:0]
  290. uint32_t sw_phy_meta_data : 32; // [31:0]
  291. uint32_t ppdu_start_timestamp_31_0 : 32; // [31:0]
  292. uint32_t toeplitz_hash_2_or_4 : 32; // [31:0]
  293. uint32_t sa_15_0 : 16, // [31:16]
  294. reserved_28a : 16; // [15:0]
  295. uint32_t sa_47_16 : 32; // [31:0]
  296. uint32_t fcs_err : 1, // [31:31]
  297. unencrypted_frame_err : 1, // [30:30]
  298. decrypt_err : 1, // [29:29]
  299. tkip_mic_err : 1, // [28:28]
  300. mpdu_length_err : 1, // [27:27]
  301. buffer_fragment : 1, // [26:26]
  302. directed : 1, // [25:25]
  303. encrypt_required : 1, // [24:24]
  304. rx_in_tx_decrypt_byp : 1, // [23:23]
  305. amsdu_addr_mismatch : 1, // [22:22]
  306. da_idx_invalid : 1, // [21:21]
  307. sa_idx_invalid : 1, // [20:20]
  308. ip_chksum_fail : 1, // [19:19]
  309. tcp_udp_chksum_fail : 1, // [18:18]
  310. msdu_length_err : 1, // [17:17]
  311. overflow_err : 1, // [16:16]
  312. wifi_parser_error : 1, // [15:15]
  313. order : 1, // [14:14]
  314. reserved_30b : 1, // [13:13]
  315. a_msdu_error : 1, // [12:12]
  316. eosp : 1, // [11:11]
  317. more_data : 1, // [10:10]
  318. ctrl_type : 1, // [9:9]
  319. mgmt_type : 1, // [8:8]
  320. null_data : 1, // [7:7]
  321. non_qos : 1, // [6:6]
  322. power_mgmt : 1, // [5:5]
  323. ast_index_timeout : 1, // [4:4]
  324. ast_index_not_found : 1, // [3:3]
  325. mcast_bcast : 1, // [2:2]
  326. reserved_30a : 1, // [1:1]
  327. first_mpdu : 1; // [0:0]
  328. uint32_t msdu_done : 1, // [31:31]
  329. reserved_31b : 17, // [30:14]
  330. rx_bitmap_not_updated : 1, // [13:13]
  331. decrypt_status_code : 3, // [12:10]
  332. reserved_31a : 10; // [9:0]
  333. #endif
  334. };
  335. /* Description RXPCU_MPDU_FILTER_IN_CATEGORY
  336. Field indicates what the reason was that this MPDU frame
  337. was allowed to come into the receive path by RXPCU
  338. <enum 0 rxpcu_filter_pass> This MPDU passed the normal frame
  339. filter programming of rxpcu
  340. <enum 1 rxpcu_monitor_client> This MPDU did NOT pass the
  341. regular frame filter and would have been dropped, were
  342. it not for the frame fitting into the 'monitor_client' category.
  343. <enum 2 rxpcu_monitor_other> This MPDU did NOT pass the
  344. regular frame filter and also did not pass the rxpcu_monitor_client
  345. filter. It would have been dropped accept that it did pass
  346. the 'monitor_other' category.
  347. <enum 3 rxpcu_filter_pass_monitor_ovrd> This MPDU passed
  348. the normal frame filter programming of RXPCU but additionally
  349. fit into the 'monitor_override_client' category.
  350. <legal 0-3>
  351. */
  352. #define RX_MSDU_END_RXPCU_MPDU_FILTER_IN_CATEGORY_OFFSET 0x0000000000000000
  353. #define RX_MSDU_END_RXPCU_MPDU_FILTER_IN_CATEGORY_LSB 0
  354. #define RX_MSDU_END_RXPCU_MPDU_FILTER_IN_CATEGORY_MSB 1
  355. #define RX_MSDU_END_RXPCU_MPDU_FILTER_IN_CATEGORY_MASK 0x0000000000000003
  356. #define RX_MSDU_END_SW_FRAME_GROUP_ID_OFFSET 0x0000000000000000
  357. #define RX_MSDU_END_SW_FRAME_GROUP_ID_LSB 2
  358. #define RX_MSDU_END_SW_FRAME_GROUP_ID_MSB 8
  359. #define RX_MSDU_END_SW_FRAME_GROUP_ID_MASK 0x00000000000001fc
  360. /* Description RESERVED_0
  361. <legal 0>
  362. */
  363. #define RX_MSDU_END_RESERVED_0_OFFSET 0x0000000000000000
  364. #define RX_MSDU_END_RESERVED_0_LSB 9
  365. #define RX_MSDU_END_RESERVED_0_MSB 15
  366. #define RX_MSDU_END_RESERVED_0_MASK 0x000000000000fe00
  367. /* Description PHY_PPDU_ID
  368. A ppdu counter value that PHY increments for every PPDU
  369. received. The counter value wraps around
  370. <legal all>
  371. */
  372. #define RX_MSDU_END_PHY_PPDU_ID_OFFSET 0x0000000000000000
  373. #define RX_MSDU_END_PHY_PPDU_ID_LSB 16
  374. #define RX_MSDU_END_PHY_PPDU_ID_MSB 31
  375. #define RX_MSDU_END_PHY_PPDU_ID_MASK 0x00000000ffff0000
  376. /* Description IP_HDR_CHKSUM
  377. This can include the IP header checksum or the pseudo header
  378. checksum used by TCP/UDP checksum.
  379. (with the first byte in the MSB and the second byte in the
  380. LSB, i.e. requiring a byte-swap for little-endian FW/SW
  381. w.r.t. the byte order in a packet)
  382. */
  383. #define RX_MSDU_END_IP_HDR_CHKSUM_OFFSET 0x0000000000000000
  384. #define RX_MSDU_END_IP_HDR_CHKSUM_LSB 32
  385. #define RX_MSDU_END_IP_HDR_CHKSUM_MSB 47
  386. #define RX_MSDU_END_IP_HDR_CHKSUM_MASK 0x0000ffff00000000
  387. /* Description REPORTED_MPDU_LENGTH
  388. MPDU length before decapsulation. Only valid when first_msdu
  389. is set. This field is taken directly from the length field
  390. of the A-MPDU delimiter or the preamble length field for
  391. non-A-MPDU frames.
  392. */
  393. #define RX_MSDU_END_REPORTED_MPDU_LENGTH_OFFSET 0x0000000000000000
  394. #define RX_MSDU_END_REPORTED_MPDU_LENGTH_LSB 48
  395. #define RX_MSDU_END_REPORTED_MPDU_LENGTH_MSB 61
  396. #define RX_MSDU_END_REPORTED_MPDU_LENGTH_MASK 0x3fff000000000000
  397. /* Description RESERVED_1A
  398. <legal 0>
  399. */
  400. #define RX_MSDU_END_RESERVED_1A_OFFSET 0x0000000000000000
  401. #define RX_MSDU_END_RESERVED_1A_LSB 62
  402. #define RX_MSDU_END_RESERVED_1A_MSB 63
  403. #define RX_MSDU_END_RESERVED_1A_MASK 0xc000000000000000
  404. #define RX_MSDU_END_RESERVED_2A_OFFSET 0x0000000000000008
  405. #define RX_MSDU_END_RESERVED_2A_LSB 0
  406. #define RX_MSDU_END_RESERVED_2A_MSB 7
  407. #define RX_MSDU_END_RESERVED_2A_MASK 0x00000000000000ff
  408. /* Description CCE_SUPER_RULE
  409. Indicates the super filter rule
  410. */
  411. #define RX_MSDU_END_CCE_SUPER_RULE_OFFSET 0x0000000000000008
  412. #define RX_MSDU_END_CCE_SUPER_RULE_LSB 8
  413. #define RX_MSDU_END_CCE_SUPER_RULE_MSB 13
  414. #define RX_MSDU_END_CCE_SUPER_RULE_MASK 0x0000000000003f00
  415. /* Description CCE_CLASSIFY_NOT_DONE_TRUNCATE
  416. Classification failed due to truncated frame
  417. */
  418. #define RX_MSDU_END_CCE_CLASSIFY_NOT_DONE_TRUNCATE_OFFSET 0x0000000000000008
  419. #define RX_MSDU_END_CCE_CLASSIFY_NOT_DONE_TRUNCATE_LSB 14
  420. #define RX_MSDU_END_CCE_CLASSIFY_NOT_DONE_TRUNCATE_MSB 14
  421. #define RX_MSDU_END_CCE_CLASSIFY_NOT_DONE_TRUNCATE_MASK 0x0000000000004000
  422. /* Description CCE_CLASSIFY_NOT_DONE_CCE_DIS
  423. Classification failed due to CCE global disable
  424. */
  425. #define RX_MSDU_END_CCE_CLASSIFY_NOT_DONE_CCE_DIS_OFFSET 0x0000000000000008
  426. #define RX_MSDU_END_CCE_CLASSIFY_NOT_DONE_CCE_DIS_LSB 15
  427. #define RX_MSDU_END_CCE_CLASSIFY_NOT_DONE_CCE_DIS_MSB 15
  428. #define RX_MSDU_END_CCE_CLASSIFY_NOT_DONE_CCE_DIS_MASK 0x0000000000008000
  429. /* Description CUMULATIVE_L3_CHECKSUM
  430. FISA: IP header checksum including the total MSDU length
  431. that is part of this flow aggregated so far, reported if
  432. 'RXOLE_R0_FISA_CTRL. CHKSUM_CUM_IP_LEN_EN' is set
  433. Set to zero in chips not supporting FISA
  434. <legal all>
  435. */
  436. #define RX_MSDU_END_CUMULATIVE_L3_CHECKSUM_OFFSET 0x0000000000000008
  437. #define RX_MSDU_END_CUMULATIVE_L3_CHECKSUM_LSB 16
  438. #define RX_MSDU_END_CUMULATIVE_L3_CHECKSUM_MSB 31
  439. #define RX_MSDU_END_CUMULATIVE_L3_CHECKSUM_MASK 0x00000000ffff0000
  440. /* Description RULE_INDICATION_31_0
  441. Bitmap indicating which of rules 31-0 have matched
  442. In chips with more than 64 CCE rules, RXOLE
  443. shall have a configuration to report any two rule_indication_*
  444. in 'RX_MSDU_END.'
  445. */
  446. #define RX_MSDU_END_RULE_INDICATION_31_0_OFFSET 0x0000000000000008
  447. #define RX_MSDU_END_RULE_INDICATION_31_0_LSB 32
  448. #define RX_MSDU_END_RULE_INDICATION_31_0_MSB 63
  449. #define RX_MSDU_END_RULE_INDICATION_31_0_MASK 0xffffffff00000000
  450. #define RX_MSDU_END_IPV6_OPTIONS_CRC_OFFSET 0x0000000000000010
  451. #define RX_MSDU_END_IPV6_OPTIONS_CRC_LSB 0
  452. #define RX_MSDU_END_IPV6_OPTIONS_CRC_MSB 31
  453. #define RX_MSDU_END_IPV6_OPTIONS_CRC_MASK 0x00000000ffffffff
  454. /* Description DA_OFFSET
  455. Offset into MSDU buffer for DA
  456. */
  457. #define RX_MSDU_END_DA_OFFSET_OFFSET 0x0000000000000010
  458. #define RX_MSDU_END_DA_OFFSET_LSB 32
  459. #define RX_MSDU_END_DA_OFFSET_MSB 37
  460. #define RX_MSDU_END_DA_OFFSET_MASK 0x0000003f00000000
  461. /* Description SA_OFFSET
  462. Offset into MSDU buffer for SA
  463. */
  464. #define RX_MSDU_END_SA_OFFSET_OFFSET 0x0000000000000010
  465. #define RX_MSDU_END_SA_OFFSET_LSB 38
  466. #define RX_MSDU_END_SA_OFFSET_MSB 43
  467. #define RX_MSDU_END_SA_OFFSET_MASK 0x00000fc000000000
  468. /* Description DA_OFFSET_VALID
  469. da_offset field is valid. This will be set to 0 in case
  470. of a dynamic A-MSDU when DA is compressed
  471. */
  472. #define RX_MSDU_END_DA_OFFSET_VALID_OFFSET 0x0000000000000010
  473. #define RX_MSDU_END_DA_OFFSET_VALID_LSB 44
  474. #define RX_MSDU_END_DA_OFFSET_VALID_MSB 44
  475. #define RX_MSDU_END_DA_OFFSET_VALID_MASK 0x0000100000000000
  476. /* Description SA_OFFSET_VALID
  477. sa_offset field is valid. This will be set to 0 in case
  478. of a dynamic A-MSDU when SA is compressed
  479. */
  480. #define RX_MSDU_END_SA_OFFSET_VALID_OFFSET 0x0000000000000010
  481. #define RX_MSDU_END_SA_OFFSET_VALID_LSB 45
  482. #define RX_MSDU_END_SA_OFFSET_VALID_MSB 45
  483. #define RX_MSDU_END_SA_OFFSET_VALID_MASK 0x0000200000000000
  484. /* Description RESERVED_5A
  485. <legal 0>
  486. */
  487. #define RX_MSDU_END_RESERVED_5A_OFFSET 0x0000000000000010
  488. #define RX_MSDU_END_RESERVED_5A_LSB 46
  489. #define RX_MSDU_END_RESERVED_5A_MSB 47
  490. #define RX_MSDU_END_RESERVED_5A_MASK 0x0000c00000000000
  491. /* Description L3_TYPE
  492. The 16-bit type value indicating the type of L3 later extracted
  493. from LLC/SNAP, set to zero if SNAP is not available
  494. */
  495. #define RX_MSDU_END_L3_TYPE_OFFSET 0x0000000000000010
  496. #define RX_MSDU_END_L3_TYPE_LSB 48
  497. #define RX_MSDU_END_L3_TYPE_MSB 63
  498. #define RX_MSDU_END_L3_TYPE_MASK 0xffff000000000000
  499. /* Description RULE_INDICATION_63_32
  500. Bitmap indicating which of rules 63-32 have matched
  501. In chips with more than 64 CCE rules, RXOLE
  502. shall have a configuration to report any two rule_indication_*
  503. in 'RX_MSDU_END.'
  504. */
  505. #define RX_MSDU_END_RULE_INDICATION_63_32_OFFSET 0x0000000000000018
  506. #define RX_MSDU_END_RULE_INDICATION_63_32_LSB 0
  507. #define RX_MSDU_END_RULE_INDICATION_63_32_MSB 31
  508. #define RX_MSDU_END_RULE_INDICATION_63_32_MASK 0x00000000ffffffff
  509. /* Description TCP_SEQ_NUMBER
  510. TCP sequence number (as a number assembled from a TCP packet
  511. in big-endian order, i.e. requiring a byte-swap for little-endian
  512. FW/SW w.r.t. the byte order in a packet)
  513. If 'RXOLE_R0_MISC_CONFIG. OVERRIDE_MSDU_END_FIELDS'
  514. is set, toeplitz_hash_2_or_4 from 'RX_MSDU_START' will be
  515. reported here:
  516. Controlled by multiple RxOLE registers for TCP/UDP over
  517. IPv4/IPv6 - Either Toeplitz hash computed over 2-tuple IPv4
  518. or IPv6 src/dest addresses is reported; or, Toeplitz hash
  519. computed over 4-tuple IPv4 or IPv6 src/dest addresses and
  520. src/dest ports is reported. The Flow_id_toeplitz hash can
  521. also be reported here. Usually the hash reported here is
  522. the one used for hash-based REO routing (see use_flow_id_toeplitz_clfy
  523. in 'RXPT_CLASSIFY_INFO'). Optionally the 3-tuple Toeplitz
  524. hash over IPv4 or IPv6 src/dest addresses and L4 protocol
  525. can be reported here.
  526. */
  527. #define RX_MSDU_END_TCP_SEQ_NUMBER_OFFSET 0x0000000000000018
  528. #define RX_MSDU_END_TCP_SEQ_NUMBER_LSB 32
  529. #define RX_MSDU_END_TCP_SEQ_NUMBER_MSB 63
  530. #define RX_MSDU_END_TCP_SEQ_NUMBER_MASK 0xffffffff00000000
  531. /* Description TCP_ACK_NUMBER
  532. TCP acknowledge number (as a number assembled from a TCP
  533. packet in big-endian order, i.e. requiring a byte-swap
  534. for little-endian FW/SW w.r.t. the byte order in a packet)
  535. If 'RXOLE_R0_MISC_CONFIG. OVERRIDE_MSDU_END_FIELDS'
  536. is set, flow_id_toeplitz from 'RX_MSDU_START' will be reported
  537. here:
  538. Toeplitz hash of 5-tuple {IP source address, IP destination
  539. address, IP source port, IP destination port, L4 protocol}
  540. in case of non-IPSec. In case of IPSec - Toeplitz hash
  541. of 4-tuple {IP source address, IP destination address, SPI,
  542. L4 protocol}. Optionally the 3-tuple Toeplitz hash over
  543. IPv4 or IPv6 src/dest addresses and L4 protocol can be reported
  544. here.
  545. The relevant Toeplitz key registers are provided in RxOLE's
  546. instance of common parser module. These registers are separate
  547. from the Toeplitz keys used by ASE/FSE modules inside RxOLE.
  548. The actual value will be passed on from common parser module
  549. to RxOLE in one of the WHO_* TLVs.
  550. */
  551. #define RX_MSDU_END_TCP_ACK_NUMBER_OFFSET 0x0000000000000020
  552. #define RX_MSDU_END_TCP_ACK_NUMBER_LSB 0
  553. #define RX_MSDU_END_TCP_ACK_NUMBER_MSB 31
  554. #define RX_MSDU_END_TCP_ACK_NUMBER_MASK 0x00000000ffffffff
  555. /* Description TCP_FLAG
  556. TCP flags
  557. {NS,CWR,ECE,URG,ACK,PSH, RST ,SYN,FIN}(with the NS bit in
  558. bit 8 and the FIN bit in bit 0, i.e. in big-endian order,
  559. i.e. requiring a byte-swap for little-endian FW/SW w.r.t.
  560. the byte order in a packet)
  561. */
  562. #define RX_MSDU_END_TCP_FLAG_OFFSET 0x0000000000000020
  563. #define RX_MSDU_END_TCP_FLAG_LSB 32
  564. #define RX_MSDU_END_TCP_FLAG_MSB 40
  565. #define RX_MSDU_END_TCP_FLAG_MASK 0x000001ff00000000
  566. /* Description LRO_ELIGIBLE
  567. Computed out of TCP and IP fields to indicate that this
  568. MSDU is eligible for LRO
  569. */
  570. #define RX_MSDU_END_LRO_ELIGIBLE_OFFSET 0x0000000000000020
  571. #define RX_MSDU_END_LRO_ELIGIBLE_LSB 41
  572. #define RX_MSDU_END_LRO_ELIGIBLE_MSB 41
  573. #define RX_MSDU_END_LRO_ELIGIBLE_MASK 0x0000020000000000
  574. /* Description RESERVED_9A
  575. NOTE: DO not assign a field... Internally used in RXOLE..
  576. <legal 0>
  577. */
  578. #define RX_MSDU_END_RESERVED_9A_OFFSET 0x0000000000000020
  579. #define RX_MSDU_END_RESERVED_9A_LSB 42
  580. #define RX_MSDU_END_RESERVED_9A_MSB 47
  581. #define RX_MSDU_END_RESERVED_9A_MASK 0x0000fc0000000000
  582. /* Description WINDOW_SIZE
  583. TCP receive window size (as a number assembled from a TCP
  584. packet in big-endian order, i.e. requiring a byte-swap
  585. for little-endian FW/SW w.r.t. the byte order in a packet)
  586. If 'RXOLE_R0_MISC_CONFIG. OVERRIDE_MSDU_END_FIELDS'
  587. is set, msdu_length from 'RX_MSDU_START' will be reported
  588. in the 14 LSBs here:
  589. MSDU length in bytes after decapsulation. This field is
  590. still valid for MPDU frames without A-MSDU. It still represents
  591. MSDU length after decapsulation.
  592. */
  593. #define RX_MSDU_END_WINDOW_SIZE_OFFSET 0x0000000000000020
  594. #define RX_MSDU_END_WINDOW_SIZE_LSB 48
  595. #define RX_MSDU_END_WINDOW_SIZE_MSB 63
  596. #define RX_MSDU_END_WINDOW_SIZE_MASK 0xffff000000000000
  597. /* Description SA_SW_PEER_ID
  598. sw_peer_id from the address search entry corresponding to
  599. the source address of the MSDU
  600. <legal all>
  601. */
  602. #define RX_MSDU_END_SA_SW_PEER_ID_OFFSET 0x0000000000000028
  603. #define RX_MSDU_END_SA_SW_PEER_ID_LSB 0
  604. #define RX_MSDU_END_SA_SW_PEER_ID_MSB 15
  605. #define RX_MSDU_END_SA_SW_PEER_ID_MASK 0x000000000000ffff
  606. /* Description SA_IDX_TIMEOUT
  607. Indicates an unsuccessful MAC source address search due
  608. to the expiring of the search timer.
  609. */
  610. #define RX_MSDU_END_SA_IDX_TIMEOUT_OFFSET 0x0000000000000028
  611. #define RX_MSDU_END_SA_IDX_TIMEOUT_LSB 16
  612. #define RX_MSDU_END_SA_IDX_TIMEOUT_MSB 16
  613. #define RX_MSDU_END_SA_IDX_TIMEOUT_MASK 0x0000000000010000
  614. /* Description DA_IDX_TIMEOUT
  615. Indicates an unsuccessful MAC destination address search
  616. due to the expiring of the search timer.
  617. */
  618. #define RX_MSDU_END_DA_IDX_TIMEOUT_OFFSET 0x0000000000000028
  619. #define RX_MSDU_END_DA_IDX_TIMEOUT_LSB 17
  620. #define RX_MSDU_END_DA_IDX_TIMEOUT_MSB 17
  621. #define RX_MSDU_END_DA_IDX_TIMEOUT_MASK 0x0000000000020000
  622. /* Description TO_DS
  623. Set if the to DS bit is set in the frame control.
  624. RXOLE copies this from the 'Struct RX_MPDU_INFO' in 'RX_MPDU_PCU_START.'
  625. <legal all>
  626. */
  627. #define RX_MSDU_END_TO_DS_OFFSET 0x0000000000000028
  628. #define RX_MSDU_END_TO_DS_LSB 18
  629. #define RX_MSDU_END_TO_DS_MSB 18
  630. #define RX_MSDU_END_TO_DS_MASK 0x0000000000040000
  631. #define RX_MSDU_END_TID_OFFSET 0x0000000000000028
  632. #define RX_MSDU_END_TID_LSB 19
  633. #define RX_MSDU_END_TID_MSB 22
  634. #define RX_MSDU_END_TID_MASK 0x0000000000780000
  635. /* Description SA_IS_VALID
  636. Indicates that OLE found a valid SA entry
  637. */
  638. #define RX_MSDU_END_SA_IS_VALID_OFFSET 0x0000000000000028
  639. #define RX_MSDU_END_SA_IS_VALID_LSB 23
  640. #define RX_MSDU_END_SA_IS_VALID_MSB 23
  641. #define RX_MSDU_END_SA_IS_VALID_MASK 0x0000000000800000
  642. /* Description DA_IS_VALID
  643. Indicates that OLE found a valid DA entry
  644. */
  645. #define RX_MSDU_END_DA_IS_VALID_OFFSET 0x0000000000000028
  646. #define RX_MSDU_END_DA_IS_VALID_LSB 24
  647. #define RX_MSDU_END_DA_IS_VALID_MSB 24
  648. #define RX_MSDU_END_DA_IS_VALID_MASK 0x0000000001000000
  649. /* Description DA_IS_MCBC
  650. Field Only valid if "da_is_valid" is set
  651. Indicates the DA address was a Multicast of Broadcast address.
  652. */
  653. #define RX_MSDU_END_DA_IS_MCBC_OFFSET 0x0000000000000028
  654. #define RX_MSDU_END_DA_IS_MCBC_LSB 25
  655. #define RX_MSDU_END_DA_IS_MCBC_MSB 25
  656. #define RX_MSDU_END_DA_IS_MCBC_MASK 0x0000000002000000
  657. /* Description L3_HEADER_PADDING
  658. Number of bytes padded to make sure that the L3 header
  659. will always start of a Dword boundary
  660. */
  661. #define RX_MSDU_END_L3_HEADER_PADDING_OFFSET 0x0000000000000028
  662. #define RX_MSDU_END_L3_HEADER_PADDING_LSB 26
  663. #define RX_MSDU_END_L3_HEADER_PADDING_MSB 27
  664. #define RX_MSDU_END_L3_HEADER_PADDING_MASK 0x000000000c000000
  665. /* Description FIRST_MSDU
  666. Indicates the first MSDU of A-MSDU. If both first_msdu
  667. and last_msdu are set in the MSDU then this is a non-aggregated
  668. MSDU frame: normal MPDU. Interior MSDU in an A-MSDU shall
  669. have both first_mpdu and last_mpdu bits set to 0.
  670. */
  671. #define RX_MSDU_END_FIRST_MSDU_OFFSET 0x0000000000000028
  672. #define RX_MSDU_END_FIRST_MSDU_LSB 28
  673. #define RX_MSDU_END_FIRST_MSDU_MSB 28
  674. #define RX_MSDU_END_FIRST_MSDU_MASK 0x0000000010000000
  675. /* Description LAST_MSDU
  676. Indicates the last MSDU of the A-MSDU. MPDU end status
  677. is only valid when last_msdu is set.
  678. */
  679. #define RX_MSDU_END_LAST_MSDU_OFFSET 0x0000000000000028
  680. #define RX_MSDU_END_LAST_MSDU_LSB 29
  681. #define RX_MSDU_END_LAST_MSDU_MSB 29
  682. #define RX_MSDU_END_LAST_MSDU_MASK 0x0000000020000000
  683. /* Description FR_DS
  684. Set if the from DS bit is set in the frame control.
  685. RXOLE copies this from the 'Struct RX_MPDU_INFO' in 'RX_MPDU_PCU_START.'
  686. <legal all>
  687. */
  688. #define RX_MSDU_END_FR_DS_OFFSET 0x0000000000000028
  689. #define RX_MSDU_END_FR_DS_LSB 30
  690. #define RX_MSDU_END_FR_DS_MSB 30
  691. #define RX_MSDU_END_FR_DS_MASK 0x0000000040000000
  692. /* Description IP_CHKSUM_FAIL_COPY
  693. If 'RXOLE_R0_MISC_CONFIG. OVERRIDE_MSDU_END_FIELDS' is set,
  694. ip_chksum_fail from 'RX_ATTENTION' will be reported in the
  695. MSB here:
  696. Indicates that the computed checksum (ip_hdr_chksum) did
  697. not match the checksum in the IP header.
  698. */
  699. #define RX_MSDU_END_IP_CHKSUM_FAIL_COPY_OFFSET 0x0000000000000028
  700. #define RX_MSDU_END_IP_CHKSUM_FAIL_COPY_LSB 31
  701. #define RX_MSDU_END_IP_CHKSUM_FAIL_COPY_MSB 31
  702. #define RX_MSDU_END_IP_CHKSUM_FAIL_COPY_MASK 0x0000000080000000
  703. /* Description SA_IDX
  704. The offset in the address table which matches the MAC source
  705. address.
  706. */
  707. #define RX_MSDU_END_SA_IDX_OFFSET 0x0000000000000028
  708. #define RX_MSDU_END_SA_IDX_LSB 32
  709. #define RX_MSDU_END_SA_IDX_MSB 47
  710. #define RX_MSDU_END_SA_IDX_MASK 0x0000ffff00000000
  711. /* Description DA_IDX_OR_SW_PEER_ID
  712. Based on a register configuration in RXOLE, this field will
  713. contain:
  714. The offset in the address table which matches the MAC destination
  715. address
  716. OR:
  717. sw_peer_id from the address search entry corresponding to
  718. the destination address of the MSDU
  719. */
  720. #define RX_MSDU_END_DA_IDX_OR_SW_PEER_ID_OFFSET 0x0000000000000028
  721. #define RX_MSDU_END_DA_IDX_OR_SW_PEER_ID_LSB 48
  722. #define RX_MSDU_END_DA_IDX_OR_SW_PEER_ID_MSB 63
  723. #define RX_MSDU_END_DA_IDX_OR_SW_PEER_ID_MASK 0xffff000000000000
  724. /* Description MSDU_DROP
  725. When set, REO shall drop this MSDU and not forward it to
  726. any other ring...
  727. <legal all>
  728. */
  729. #define RX_MSDU_END_MSDU_DROP_OFFSET 0x0000000000000030
  730. #define RX_MSDU_END_MSDU_DROP_LSB 0
  731. #define RX_MSDU_END_MSDU_DROP_MSB 0
  732. #define RX_MSDU_END_MSDU_DROP_MASK 0x0000000000000001
  733. /* Description REO_DESTINATION_INDICATION
  734. The ID of the REO exit ring where the MSDU frame shall push
  735. after (MPDU level) reordering has finished.
  736. <enum 0 reo_destination_sw0> Reo will push the frame into
  737. the REO2SW0 ring
  738. <enum 1 reo_destination_sw1> Reo will push the frame into
  739. the REO2SW1 ring
  740. <enum 2 reo_destination_sw2> Reo will push the frame into
  741. the REO2SW2 ring
  742. <enum 3 reo_destination_sw3> Reo will push the frame into
  743. the REO2SW3 ring
  744. <enum 4 reo_destination_sw4> Reo will push the frame into
  745. the REO2SW4 ring
  746. <enum 5 reo_destination_release> Reo will push the frame
  747. into the REO_release ring
  748. <enum 6 reo_destination_fw> Reo will push the frame into
  749. the REO2FW ring
  750. <enum 7 reo_destination_sw5> Reo will push the frame into
  751. the REO2SW5 ring (REO remaps this in chips without REO2SW5
  752. ring)
  753. <enum 8 reo_destination_sw6> Reo will push the frame into
  754. the REO2SW6 ring (REO remaps this in chips without REO2SW6
  755. ring)
  756. <enum 9 reo_destination_sw7> Reo will push the frame into
  757. the REO2SW7 ring (REO remaps this in chips without REO2SW7
  758. ring)
  759. <enum 10 reo_destination_sw8> Reo will push the frame into
  760. the REO2SW8 ring (REO remaps this in chips without REO2SW8
  761. ring)
  762. <enum 11 reo_destination_11> REO remaps this
  763. <enum 12 reo_destination_12> REO remaps this <enum 13 reo_destination_13>
  764. REO remaps this
  765. <enum 14 reo_destination_14> REO remaps this
  766. <enum 15 reo_destination_15> REO remaps this
  767. <enum 16 reo_destination_16> REO remaps this
  768. <enum 17 reo_destination_17> REO remaps this
  769. <enum 18 reo_destination_18> REO remaps this
  770. <enum 19 reo_destination_19> REO remaps this
  771. <enum 20 reo_destination_20> REO remaps this
  772. <enum 21 reo_destination_21> REO remaps this
  773. <enum 22 reo_destination_22> REO remaps this
  774. <enum 23 reo_destination_23> REO remaps this
  775. <enum 24 reo_destination_24> REO remaps this
  776. <enum 25 reo_destination_25> REO remaps this
  777. <enum 26 reo_destination_26> REO remaps this
  778. <enum 27 reo_destination_27> REO remaps this
  779. <enum 28 reo_destination_28> REO remaps this
  780. <enum 29 reo_destination_29> REO remaps this
  781. <enum 30 reo_destination_30> REO remaps this
  782. <enum 31 reo_destination_31> REO remaps this
  783. <legal all>
  784. */
  785. #define RX_MSDU_END_REO_DESTINATION_INDICATION_OFFSET 0x0000000000000030
  786. #define RX_MSDU_END_REO_DESTINATION_INDICATION_LSB 1
  787. #define RX_MSDU_END_REO_DESTINATION_INDICATION_MSB 5
  788. #define RX_MSDU_END_REO_DESTINATION_INDICATION_MASK 0x000000000000003e
  789. /* Description FLOW_IDX
  790. Flow table index
  791. <legal all>
  792. */
  793. #define RX_MSDU_END_FLOW_IDX_OFFSET 0x0000000000000030
  794. #define RX_MSDU_END_FLOW_IDX_LSB 6
  795. #define RX_MSDU_END_FLOW_IDX_MSB 25
  796. #define RX_MSDU_END_FLOW_IDX_MASK 0x0000000003ffffc0
  797. /* Description USE_PPE
  798. Indicates to RXDMA to ignore the REO_destination_indication
  799. and use a programmed value corresponding to the REO2PPE
  800. ring
  801. This override to REO2PPE for packets requiring multiple
  802. buffers shall be disabled based on an RXDMA configuration,
  803. as PPE may not support such packets.
  804. <legal all>
  805. */
  806. #define RX_MSDU_END_USE_PPE_OFFSET 0x0000000000000030
  807. #define RX_MSDU_END_USE_PPE_LSB 26
  808. #define RX_MSDU_END_USE_PPE_MSB 26
  809. #define RX_MSDU_END_USE_PPE_MASK 0x0000000004000000
  810. /* Description MESH_STA
  811. When set, this is a Mesh (11s) STA.
  812. The interpretation of the A-MSDU 'Length' field in the MPDU
  813. (if any) is decided by the e-numerations below.
  814. <enum 0 MESH_DISABLE>
  815. <enum 1 MESH_Q2Q> A-MSDU 'Length' is big endian and includes
  816. the length of Mesh Control.
  817. <enum 2 MESH_11S_BE> A-MSDU 'Length' is big endian and excludes
  818. the length of Mesh Control.
  819. <enum 3 MESH_11S_LE> A-MSDU 'Length' is little endian and
  820. excludes the length of Mesh Control. This is 802.11s-compliant.
  821. <legal all>
  822. */
  823. #define RX_MSDU_END_MESH_STA_OFFSET 0x0000000000000030
  824. #define RX_MSDU_END_MESH_STA_LSB 27
  825. #define RX_MSDU_END_MESH_STA_MSB 28
  826. #define RX_MSDU_END_MESH_STA_MASK 0x0000000018000000
  827. /* Description VLAN_CTAG_STRIPPED
  828. Set by RXOLE if it stripped 4-bytes of C-VLAN Tag from the
  829. packet
  830. <legal all>
  831. */
  832. #define RX_MSDU_END_VLAN_CTAG_STRIPPED_OFFSET 0x0000000000000030
  833. #define RX_MSDU_END_VLAN_CTAG_STRIPPED_LSB 29
  834. #define RX_MSDU_END_VLAN_CTAG_STRIPPED_MSB 29
  835. #define RX_MSDU_END_VLAN_CTAG_STRIPPED_MASK 0x0000000020000000
  836. /* Description VLAN_STAG_STRIPPED
  837. Set by RXOLE if it stripped 4-bytes of S-VLAN Tag from the
  838. packet
  839. <legal all>
  840. */
  841. #define RX_MSDU_END_VLAN_STAG_STRIPPED_OFFSET 0x0000000000000030
  842. #define RX_MSDU_END_VLAN_STAG_STRIPPED_LSB 30
  843. #define RX_MSDU_END_VLAN_STAG_STRIPPED_MSB 30
  844. #define RX_MSDU_END_VLAN_STAG_STRIPPED_MASK 0x0000000040000000
  845. /* Description FRAGMENT_FLAG
  846. Indicates that this is an 802.11 fragment frame. This is
  847. set when either the more_frag bit is set in the frame control
  848. or the fragment number is not zero. Only set when first_msdu
  849. is set.
  850. */
  851. #define RX_MSDU_END_FRAGMENT_FLAG_OFFSET 0x0000000000000030
  852. #define RX_MSDU_END_FRAGMENT_FLAG_LSB 31
  853. #define RX_MSDU_END_FRAGMENT_FLAG_MSB 31
  854. #define RX_MSDU_END_FRAGMENT_FLAG_MASK 0x0000000080000000
  855. /* Description FSE_METADATA
  856. FSE related meta data:
  857. <legal all>
  858. */
  859. #define RX_MSDU_END_FSE_METADATA_OFFSET 0x0000000000000030
  860. #define RX_MSDU_END_FSE_METADATA_LSB 32
  861. #define RX_MSDU_END_FSE_METADATA_MSB 63
  862. #define RX_MSDU_END_FSE_METADATA_MASK 0xffffffff00000000
  863. /* Description CCE_METADATA
  864. CCE related meta data:
  865. <legal all>
  866. */
  867. #define RX_MSDU_END_CCE_METADATA_OFFSET 0x0000000000000038
  868. #define RX_MSDU_END_CCE_METADATA_LSB 0
  869. #define RX_MSDU_END_CCE_METADATA_MSB 15
  870. #define RX_MSDU_END_CCE_METADATA_MASK 0x000000000000ffff
  871. #define RX_MSDU_END_TCP_UDP_CHKSUM_OFFSET 0x0000000000000038
  872. #define RX_MSDU_END_TCP_UDP_CHKSUM_LSB 16
  873. #define RX_MSDU_END_TCP_UDP_CHKSUM_MSB 31
  874. #define RX_MSDU_END_TCP_UDP_CHKSUM_MASK 0x00000000ffff0000
  875. /* Description AGGREGATION_COUNT
  876. FISA: Number of MSDU's aggregated so far
  877. Set to zero in chips not supporting FISA
  878. <legal all>
  879. */
  880. #define RX_MSDU_END_AGGREGATION_COUNT_OFFSET 0x0000000000000038
  881. #define RX_MSDU_END_AGGREGATION_COUNT_LSB 32
  882. #define RX_MSDU_END_AGGREGATION_COUNT_MSB 39
  883. #define RX_MSDU_END_AGGREGATION_COUNT_MASK 0x000000ff00000000
  884. /* Description FLOW_AGGREGATION_CONTINUATION
  885. FISA: To indicate that this MSDU can be aggregated with
  886. the previous packet with the same flow id
  887. Set to zero in chips not supporting FISA
  888. <legal all>
  889. */
  890. #define RX_MSDU_END_FLOW_AGGREGATION_CONTINUATION_OFFSET 0x0000000000000038
  891. #define RX_MSDU_END_FLOW_AGGREGATION_CONTINUATION_LSB 40
  892. #define RX_MSDU_END_FLOW_AGGREGATION_CONTINUATION_MSB 40
  893. #define RX_MSDU_END_FLOW_AGGREGATION_CONTINUATION_MASK 0x0000010000000000
  894. /* Description FISA_TIMEOUT
  895. FISA: To indicate that the aggregation has restarted for
  896. this flow due to timeout
  897. Set to zero in chips not supporting FISA
  898. <legal all>
  899. */
  900. #define RX_MSDU_END_FISA_TIMEOUT_OFFSET 0x0000000000000038
  901. #define RX_MSDU_END_FISA_TIMEOUT_LSB 41
  902. #define RX_MSDU_END_FISA_TIMEOUT_MSB 41
  903. #define RX_MSDU_END_FISA_TIMEOUT_MASK 0x0000020000000000
  904. /* Description TCP_UDP_CHKSUM_FAIL_COPY
  905. if 'RXOLE_R0_MISC_CONFIG. OVERRIDE_MSDU_END_FIELDS' is set,
  906. tcp_udp_chksum_fail from 'RX_ATTENTION' will be reported
  907. here:
  908. Indicates that the computed checksum (tcp_udp_chksum) did
  909. not match the checksum in the TCP/UDP header.
  910. */
  911. #define RX_MSDU_END_TCP_UDP_CHKSUM_FAIL_COPY_OFFSET 0x0000000000000038
  912. #define RX_MSDU_END_TCP_UDP_CHKSUM_FAIL_COPY_LSB 42
  913. #define RX_MSDU_END_TCP_UDP_CHKSUM_FAIL_COPY_MSB 42
  914. #define RX_MSDU_END_TCP_UDP_CHKSUM_FAIL_COPY_MASK 0x0000040000000000
  915. /* Description MSDU_LIMIT_ERROR
  916. Indicates that the MSDU threshold was exceeded and thus
  917. all the rest of the MSDUs will not be scattered and will
  918. not be decapsulated but will be DMA'ed in RAW format as
  919. a single MSDU buffer
  920. */
  921. #define RX_MSDU_END_MSDU_LIMIT_ERROR_OFFSET 0x0000000000000038
  922. #define RX_MSDU_END_MSDU_LIMIT_ERROR_LSB 43
  923. #define RX_MSDU_END_MSDU_LIMIT_ERROR_MSB 43
  924. #define RX_MSDU_END_MSDU_LIMIT_ERROR_MASK 0x0000080000000000
  925. /* Description FLOW_IDX_TIMEOUT
  926. Indicates an unsuccessful flow search due to the expiring
  927. of the search timer.
  928. <legal all>
  929. */
  930. #define RX_MSDU_END_FLOW_IDX_TIMEOUT_OFFSET 0x0000000000000038
  931. #define RX_MSDU_END_FLOW_IDX_TIMEOUT_LSB 44
  932. #define RX_MSDU_END_FLOW_IDX_TIMEOUT_MSB 44
  933. #define RX_MSDU_END_FLOW_IDX_TIMEOUT_MASK 0x0000100000000000
  934. /* Description FLOW_IDX_INVALID
  935. flow id is not valid
  936. <legal all>
  937. */
  938. #define RX_MSDU_END_FLOW_IDX_INVALID_OFFSET 0x0000000000000038
  939. #define RX_MSDU_END_FLOW_IDX_INVALID_LSB 45
  940. #define RX_MSDU_END_FLOW_IDX_INVALID_MSB 45
  941. #define RX_MSDU_END_FLOW_IDX_INVALID_MASK 0x0000200000000000
  942. /* Description CCE_MATCH
  943. Indicates that this status has a corresponding MSDU that
  944. requires FW processing. The OLE will have classification
  945. ring mask registers which will indicate the ring(s) for
  946. packets and descriptors which need FW attention.
  947. */
  948. #define RX_MSDU_END_CCE_MATCH_OFFSET 0x0000000000000038
  949. #define RX_MSDU_END_CCE_MATCH_LSB 46
  950. #define RX_MSDU_END_CCE_MATCH_MSB 46
  951. #define RX_MSDU_END_CCE_MATCH_MASK 0x0000400000000000
  952. /* Description AMSDU_PARSER_ERROR
  953. A-MSDU could not be properly de-agregated.
  954. <legal all>
  955. */
  956. #define RX_MSDU_END_AMSDU_PARSER_ERROR_OFFSET 0x0000000000000038
  957. #define RX_MSDU_END_AMSDU_PARSER_ERROR_LSB 47
  958. #define RX_MSDU_END_AMSDU_PARSER_ERROR_MSB 47
  959. #define RX_MSDU_END_AMSDU_PARSER_ERROR_MASK 0x0000800000000000
  960. /* Description CUMULATIVE_IP_LENGTH
  961. FISA: Total MSDU length that is part of this flow aggregated
  962. so far
  963. Set to zero in chips not supporting FISA
  964. <legal all>
  965. */
  966. #define RX_MSDU_END_CUMULATIVE_IP_LENGTH_OFFSET 0x0000000000000038
  967. #define RX_MSDU_END_CUMULATIVE_IP_LENGTH_LSB 48
  968. #define RX_MSDU_END_CUMULATIVE_IP_LENGTH_MSB 63
  969. #define RX_MSDU_END_CUMULATIVE_IP_LENGTH_MASK 0xffff000000000000
  970. /* Description KEY_ID_OCTET
  971. The key ID octet from the IV. Only valid when first_msdu
  972. is set.
  973. */
  974. #define RX_MSDU_END_KEY_ID_OCTET_OFFSET 0x0000000000000040
  975. #define RX_MSDU_END_KEY_ID_OCTET_LSB 0
  976. #define RX_MSDU_END_KEY_ID_OCTET_MSB 7
  977. #define RX_MSDU_END_KEY_ID_OCTET_MASK 0x00000000000000ff
  978. #define RX_MSDU_END_RESERVED_16A_OFFSET 0x0000000000000040
  979. #define RX_MSDU_END_RESERVED_16A_LSB 8
  980. #define RX_MSDU_END_RESERVED_16A_MSB 31
  981. #define RX_MSDU_END_RESERVED_16A_MASK 0x00000000ffffff00
  982. /* Description RESERVED_17A
  983. <legal 0>
  984. */
  985. #define RX_MSDU_END_RESERVED_17A_OFFSET 0x0000000000000040
  986. #define RX_MSDU_END_RESERVED_17A_LSB 32
  987. #define RX_MSDU_END_RESERVED_17A_MSB 37
  988. #define RX_MSDU_END_RESERVED_17A_MASK 0x0000003f00000000
  989. /* Description SERVICE_CODE
  990. Opaque service code between PPE and Wi-Fi
  991. This field gets passed on by REO to PPE in the EDMA descriptor
  992. ('REO_TO_PPE_RING').
  993. <legal all>
  994. */
  995. #define RX_MSDU_END_SERVICE_CODE_OFFSET 0x0000000000000040
  996. #define RX_MSDU_END_SERVICE_CODE_LSB 38
  997. #define RX_MSDU_END_SERVICE_CODE_MSB 46
  998. #define RX_MSDU_END_SERVICE_CODE_MASK 0x00007fc000000000
  999. /* Description PRIORITY_VALID
  1000. This field gets passed on by REO to PPE in the EDMA descriptor
  1001. ('REO_TO_PPE_RING').
  1002. <legal all>
  1003. */
  1004. #define RX_MSDU_END_PRIORITY_VALID_OFFSET 0x0000000000000040
  1005. #define RX_MSDU_END_PRIORITY_VALID_LSB 47
  1006. #define RX_MSDU_END_PRIORITY_VALID_MSB 47
  1007. #define RX_MSDU_END_PRIORITY_VALID_MASK 0x0000800000000000
  1008. /* Description INTRA_BSS
  1009. This packet needs intra-BSS routing by SW as the 'vdev_id'
  1010. for the destination is the same as the 'vdev_id' (from 'RX_MPDU_PCU_START')
  1011. that this MSDU was got in.
  1012. <legal all>
  1013. */
  1014. #define RX_MSDU_END_INTRA_BSS_OFFSET 0x0000000000000040
  1015. #define RX_MSDU_END_INTRA_BSS_LSB 48
  1016. #define RX_MSDU_END_INTRA_BSS_MSB 48
  1017. #define RX_MSDU_END_INTRA_BSS_MASK 0x0001000000000000
  1018. /* Description DEST_CHIP_ID
  1019. If intra_bss is set, copied by RXOLE from 'ADDR_SEARCH_ENTRY'
  1020. to support intra-BSS routing with multi-chip multi-link
  1021. operation.
  1022. This indicates into which chip's TCL the packet should be
  1023. queued.
  1024. <legal all>
  1025. */
  1026. #define RX_MSDU_END_DEST_CHIP_ID_OFFSET 0x0000000000000040
  1027. #define RX_MSDU_END_DEST_CHIP_ID_LSB 49
  1028. #define RX_MSDU_END_DEST_CHIP_ID_MSB 50
  1029. #define RX_MSDU_END_DEST_CHIP_ID_MASK 0x0006000000000000
  1030. /* Description MULTICAST_ECHO
  1031. If set, this packet is a multicast echo, i.e. the DA is
  1032. multicast and Rx OLE SA search with mcast_echo_check = 1
  1033. passed. RXDMA should release such packets to WBM.
  1034. <legal all>
  1035. */
  1036. #define RX_MSDU_END_MULTICAST_ECHO_OFFSET 0x0000000000000040
  1037. #define RX_MSDU_END_MULTICAST_ECHO_LSB 51
  1038. #define RX_MSDU_END_MULTICAST_ECHO_MSB 51
  1039. #define RX_MSDU_END_MULTICAST_ECHO_MASK 0x0008000000000000
  1040. /* Description WDS_LEARNING_EVENT
  1041. If set, this packet has an SA search failure with WDS learning
  1042. enabled for the peer. RXOLE should route this TLV to the
  1043. RXDMA0 status ring to notify FW.
  1044. <legal all>
  1045. */
  1046. #define RX_MSDU_END_WDS_LEARNING_EVENT_OFFSET 0x0000000000000040
  1047. #define RX_MSDU_END_WDS_LEARNING_EVENT_LSB 52
  1048. #define RX_MSDU_END_WDS_LEARNING_EVENT_MSB 52
  1049. #define RX_MSDU_END_WDS_LEARNING_EVENT_MASK 0x0010000000000000
  1050. /* Description WDS_ROAMING_EVENT
  1051. If set, this packet's SA 'Sw_peer_id' mismatches the 'Sw_peer_id'
  1052. of the peer through which the packet was got, indicating
  1053. the SA node has roamed. RXOLE should route this TLV to
  1054. the RXDMA0 status ring to notify FW.
  1055. <legal all>
  1056. */
  1057. #define RX_MSDU_END_WDS_ROAMING_EVENT_OFFSET 0x0000000000000040
  1058. #define RX_MSDU_END_WDS_ROAMING_EVENT_LSB 53
  1059. #define RX_MSDU_END_WDS_ROAMING_EVENT_MSB 53
  1060. #define RX_MSDU_END_WDS_ROAMING_EVENT_MASK 0x0020000000000000
  1061. /* Description WDS_KEEP_ALIVE_EVENT
  1062. If set, the AST timestamp for this packet's SA is older
  1063. than the current timestamp by more than a threshold programmed
  1064. in RXOLE. RXOLE should route this TLV to the RXDMA0 status
  1065. ring to notify FW to keep the AST entry for the SA alive.
  1066. <legal all>
  1067. */
  1068. #define RX_MSDU_END_WDS_KEEP_ALIVE_EVENT_OFFSET 0x0000000000000040
  1069. #define RX_MSDU_END_WDS_KEEP_ALIVE_EVENT_LSB 54
  1070. #define RX_MSDU_END_WDS_KEEP_ALIVE_EVENT_MSB 54
  1071. #define RX_MSDU_END_WDS_KEEP_ALIVE_EVENT_MASK 0x0040000000000000
  1072. /* Description DEST_CHIP_PMAC_ID
  1073. If intra_bss is set, copied by RXOLE from 'ADDR_SEARCH_ENTRY'
  1074. to support intra-BSS routing with multi-chip multi-link
  1075. operation.
  1076. This indicates into which link/'vdev' the packet should
  1077. be queued in TCL.
  1078. <legal all>
  1079. */
  1080. #define RX_MSDU_END_DEST_CHIP_PMAC_ID_OFFSET 0x0000000000000040
  1081. #define RX_MSDU_END_DEST_CHIP_PMAC_ID_LSB 55
  1082. #define RX_MSDU_END_DEST_CHIP_PMAC_ID_MSB 55
  1083. #define RX_MSDU_END_DEST_CHIP_PMAC_ID_MASK 0x0080000000000000
  1084. /* Description RESERVED_17B
  1085. <legal 0>
  1086. */
  1087. #define RX_MSDU_END_RESERVED_17B_OFFSET 0x0000000000000040
  1088. #define RX_MSDU_END_RESERVED_17B_LSB 56
  1089. #define RX_MSDU_END_RESERVED_17B_MSB 63
  1090. #define RX_MSDU_END_RESERVED_17B_MASK 0xff00000000000000
  1091. /* Description MSDU_LENGTH
  1092. MSDU length in bytes after decapsulation.
  1093. This field is still valid for MPDU frames without A-MSDU.
  1094. It still represents MSDU length after decapsulation
  1095. */
  1096. #define RX_MSDU_END_MSDU_LENGTH_OFFSET 0x0000000000000048
  1097. #define RX_MSDU_END_MSDU_LENGTH_LSB 0
  1098. #define RX_MSDU_END_MSDU_LENGTH_MSB 13
  1099. #define RX_MSDU_END_MSDU_LENGTH_MASK 0x0000000000003fff
  1100. /* Description STBC
  1101. When set, use STBC transmission rates
  1102. */
  1103. #define RX_MSDU_END_STBC_OFFSET 0x0000000000000048
  1104. #define RX_MSDU_END_STBC_LSB 14
  1105. #define RX_MSDU_END_STBC_MSB 14
  1106. #define RX_MSDU_END_STBC_MASK 0x0000000000004000
  1107. /* Description IPSEC_ESP
  1108. Set if IPv4/v6 packet is using IPsec ESP
  1109. */
  1110. #define RX_MSDU_END_IPSEC_ESP_OFFSET 0x0000000000000048
  1111. #define RX_MSDU_END_IPSEC_ESP_LSB 15
  1112. #define RX_MSDU_END_IPSEC_ESP_MSB 15
  1113. #define RX_MSDU_END_IPSEC_ESP_MASK 0x0000000000008000
  1114. /* Description L3_OFFSET
  1115. Depending upon mode bit, this field either indicates the
  1116. L3 offset in bytes from the start of the RX_HEADER or the
  1117. IP offset in bytes from the start of the packet after decapsulation.
  1118. The latter is only valid if ipv4_proto or ipv6_proto is
  1119. set.
  1120. */
  1121. #define RX_MSDU_END_L3_OFFSET_OFFSET 0x0000000000000048
  1122. #define RX_MSDU_END_L3_OFFSET_LSB 16
  1123. #define RX_MSDU_END_L3_OFFSET_MSB 22
  1124. #define RX_MSDU_END_L3_OFFSET_MASK 0x00000000007f0000
  1125. /* Description IPSEC_AH
  1126. Set if IPv4/v6 packet is using IPsec AH
  1127. */
  1128. #define RX_MSDU_END_IPSEC_AH_OFFSET 0x0000000000000048
  1129. #define RX_MSDU_END_IPSEC_AH_LSB 23
  1130. #define RX_MSDU_END_IPSEC_AH_MSB 23
  1131. #define RX_MSDU_END_IPSEC_AH_MASK 0x0000000000800000
  1132. /* Description L4_OFFSET
  1133. Depending upon mode bit, this field either indicates the
  1134. L4 offset nin bytes from the start of RX_HEADER(only valid
  1135. if either ipv4_proto or ipv6_proto is set to 1) or indicates
  1136. the offset in bytes to the start of TCP or UDP header from
  1137. the start of the IP header after decapsulation(Only valid
  1138. if tcp_proto or udp_proto is set). The value 0 indicates
  1139. that the offset is longer than 127 bytes.
  1140. */
  1141. #define RX_MSDU_END_L4_OFFSET_OFFSET 0x0000000000000048
  1142. #define RX_MSDU_END_L4_OFFSET_LSB 24
  1143. #define RX_MSDU_END_L4_OFFSET_MSB 31
  1144. #define RX_MSDU_END_L4_OFFSET_MASK 0x00000000ff000000
  1145. /* Description MSDU_NUMBER
  1146. Indicates the MSDU number within a MPDU. This value is
  1147. reset to zero at the start of each MPDU. If the number
  1148. of MSDU exceeds 255 this number will wrap using modulo 256.
  1149. */
  1150. #define RX_MSDU_END_MSDU_NUMBER_OFFSET 0x0000000000000048
  1151. #define RX_MSDU_END_MSDU_NUMBER_LSB 32
  1152. #define RX_MSDU_END_MSDU_NUMBER_MSB 39
  1153. #define RX_MSDU_END_MSDU_NUMBER_MASK 0x000000ff00000000
  1154. /* Description DECAP_FORMAT
  1155. Indicates the format after decapsulation:
  1156. <enum 0 RAW> No encapsulation
  1157. <enum 1 Native_WiFi>
  1158. <enum 2 Ethernet> Ethernet 2 (DIX) or 802.3 (uses SNAP/LLC)
  1159. <enum 3 802_3> Indicate Ethernet
  1160. <legal all>
  1161. */
  1162. #define RX_MSDU_END_DECAP_FORMAT_OFFSET 0x0000000000000048
  1163. #define RX_MSDU_END_DECAP_FORMAT_LSB 40
  1164. #define RX_MSDU_END_DECAP_FORMAT_MSB 41
  1165. #define RX_MSDU_END_DECAP_FORMAT_MASK 0x0000030000000000
  1166. /* Description IPV4_PROTO
  1167. Set if L2 layer indicates IPv4 protocol.
  1168. */
  1169. #define RX_MSDU_END_IPV4_PROTO_OFFSET 0x0000000000000048
  1170. #define RX_MSDU_END_IPV4_PROTO_LSB 42
  1171. #define RX_MSDU_END_IPV4_PROTO_MSB 42
  1172. #define RX_MSDU_END_IPV4_PROTO_MASK 0x0000040000000000
  1173. /* Description IPV6_PROTO
  1174. Set if L2 layer indicates IPv6 protocol.
  1175. */
  1176. #define RX_MSDU_END_IPV6_PROTO_OFFSET 0x0000000000000048
  1177. #define RX_MSDU_END_IPV6_PROTO_LSB 43
  1178. #define RX_MSDU_END_IPV6_PROTO_MSB 43
  1179. #define RX_MSDU_END_IPV6_PROTO_MASK 0x0000080000000000
  1180. /* Description TCP_PROTO
  1181. Set if the ipv4_proto or ipv6_proto are set and the IP protocol
  1182. indicates TCP.
  1183. */
  1184. #define RX_MSDU_END_TCP_PROTO_OFFSET 0x0000000000000048
  1185. #define RX_MSDU_END_TCP_PROTO_LSB 44
  1186. #define RX_MSDU_END_TCP_PROTO_MSB 44
  1187. #define RX_MSDU_END_TCP_PROTO_MASK 0x0000100000000000
  1188. /* Description UDP_PROTO
  1189. Set if the ipv4_proto or ipv6_proto are set and the IP protocol
  1190. indicates UDP.
  1191. */
  1192. #define RX_MSDU_END_UDP_PROTO_OFFSET 0x0000000000000048
  1193. #define RX_MSDU_END_UDP_PROTO_LSB 45
  1194. #define RX_MSDU_END_UDP_PROTO_MSB 45
  1195. #define RX_MSDU_END_UDP_PROTO_MASK 0x0000200000000000
  1196. /* Description IP_FRAG
  1197. Indicates that either the IP More frag bit is set or IP
  1198. frag number is non-zero. If set indicates that this is
  1199. a fragmented IP packet.
  1200. */
  1201. #define RX_MSDU_END_IP_FRAG_OFFSET 0x0000000000000048
  1202. #define RX_MSDU_END_IP_FRAG_LSB 46
  1203. #define RX_MSDU_END_IP_FRAG_MSB 46
  1204. #define RX_MSDU_END_IP_FRAG_MASK 0x0000400000000000
  1205. /* Description TCP_ONLY_ACK
  1206. Set if only the TCP Ack bit is set in the TCP flags and
  1207. if the TCP payload is 0.
  1208. */
  1209. #define RX_MSDU_END_TCP_ONLY_ACK_OFFSET 0x0000000000000048
  1210. #define RX_MSDU_END_TCP_ONLY_ACK_LSB 47
  1211. #define RX_MSDU_END_TCP_ONLY_ACK_MSB 47
  1212. #define RX_MSDU_END_TCP_ONLY_ACK_MASK 0x0000800000000000
  1213. /* Description DA_IS_BCAST_MCAST
  1214. The destination address is broadcast or multicast.
  1215. */
  1216. #define RX_MSDU_END_DA_IS_BCAST_MCAST_OFFSET 0x0000000000000048
  1217. #define RX_MSDU_END_DA_IS_BCAST_MCAST_LSB 48
  1218. #define RX_MSDU_END_DA_IS_BCAST_MCAST_MSB 48
  1219. #define RX_MSDU_END_DA_IS_BCAST_MCAST_MASK 0x0001000000000000
  1220. /* Description TOEPLITZ_HASH_SEL
  1221. Actual choosen Hash.
  1222. 0 -> Toeplitz hash of 2-tuple (IP source address, IP destination
  1223. address)1 -> Toeplitz hash of 4-tuple (IP source address,
  1224. IP destination address, L4 (TCP/UDP) source port, L4 (TCP/UDP)
  1225. destination port)
  1226. 2 -> Toeplitz of flow_id
  1227. 3 -> "Zero" is used
  1228. <legal all>
  1229. */
  1230. #define RX_MSDU_END_TOEPLITZ_HASH_SEL_OFFSET 0x0000000000000048
  1231. #define RX_MSDU_END_TOEPLITZ_HASH_SEL_LSB 49
  1232. #define RX_MSDU_END_TOEPLITZ_HASH_SEL_MSB 50
  1233. #define RX_MSDU_END_TOEPLITZ_HASH_SEL_MASK 0x0006000000000000
  1234. /* Description IP_FIXED_HEADER_VALID
  1235. Fixed 20-byte IPv4 header or 40-byte IPv6 header parsed
  1236. fully within first 256 bytes of the packet
  1237. */
  1238. #define RX_MSDU_END_IP_FIXED_HEADER_VALID_OFFSET 0x0000000000000048
  1239. #define RX_MSDU_END_IP_FIXED_HEADER_VALID_LSB 51
  1240. #define RX_MSDU_END_IP_FIXED_HEADER_VALID_MSB 51
  1241. #define RX_MSDU_END_IP_FIXED_HEADER_VALID_MASK 0x0008000000000000
  1242. /* Description IP_EXTN_HEADER_VALID
  1243. IPv6/IPv6 header, including IPv4 options and recognizable
  1244. extension headers parsed fully within first 256 bytes of
  1245. the packet
  1246. */
  1247. #define RX_MSDU_END_IP_EXTN_HEADER_VALID_OFFSET 0x0000000000000048
  1248. #define RX_MSDU_END_IP_EXTN_HEADER_VALID_LSB 52
  1249. #define RX_MSDU_END_IP_EXTN_HEADER_VALID_MSB 52
  1250. #define RX_MSDU_END_IP_EXTN_HEADER_VALID_MASK 0x0010000000000000
  1251. /* Description TCP_UDP_HEADER_VALID
  1252. Fixed 20-byte TCP (excluding TCP options) or 8-byte UDP
  1253. header parsed fully within first 256 bytes of the packet
  1254. */
  1255. #define RX_MSDU_END_TCP_UDP_HEADER_VALID_OFFSET 0x0000000000000048
  1256. #define RX_MSDU_END_TCP_UDP_HEADER_VALID_LSB 53
  1257. #define RX_MSDU_END_TCP_UDP_HEADER_VALID_MSB 53
  1258. #define RX_MSDU_END_TCP_UDP_HEADER_VALID_MASK 0x0020000000000000
  1259. /* Description MESH_CONTROL_PRESENT
  1260. When set, this MSDU includes the 'Mesh Control' field
  1261. <legal all>
  1262. */
  1263. #define RX_MSDU_END_MESH_CONTROL_PRESENT_OFFSET 0x0000000000000048
  1264. #define RX_MSDU_END_MESH_CONTROL_PRESENT_LSB 54
  1265. #define RX_MSDU_END_MESH_CONTROL_PRESENT_MSB 54
  1266. #define RX_MSDU_END_MESH_CONTROL_PRESENT_MASK 0x0040000000000000
  1267. /* Description LDPC
  1268. When set, indicates that LDPC coding was used.
  1269. <legal all>
  1270. */
  1271. #define RX_MSDU_END_LDPC_OFFSET 0x0000000000000048
  1272. #define RX_MSDU_END_LDPC_LSB 55
  1273. #define RX_MSDU_END_LDPC_MSB 55
  1274. #define RX_MSDU_END_LDPC_MASK 0x0080000000000000
  1275. /* Description IP4_PROTOCOL_IP6_NEXT_HEADER
  1276. For IPv4 this is the 8 bit protocol field (when ipv4_proto
  1277. is set). For IPv6 this is the 8 bit next_header field (when
  1278. ipv6_proto is set).
  1279. */
  1280. #define RX_MSDU_END_IP4_PROTOCOL_IP6_NEXT_HEADER_OFFSET 0x0000000000000048
  1281. #define RX_MSDU_END_IP4_PROTOCOL_IP6_NEXT_HEADER_LSB 56
  1282. #define RX_MSDU_END_IP4_PROTOCOL_IP6_NEXT_HEADER_MSB 63
  1283. #define RX_MSDU_END_IP4_PROTOCOL_IP6_NEXT_HEADER_MASK 0xff00000000000000
  1284. #define RX_MSDU_END_VLAN_CTAG_CI_OFFSET 0x0000000000000050
  1285. #define RX_MSDU_END_VLAN_CTAG_CI_LSB 0
  1286. #define RX_MSDU_END_VLAN_CTAG_CI_MSB 15
  1287. #define RX_MSDU_END_VLAN_CTAG_CI_MASK 0x000000000000ffff
  1288. #define RX_MSDU_END_VLAN_STAG_CI_OFFSET 0x0000000000000050
  1289. #define RX_MSDU_END_VLAN_STAG_CI_LSB 16
  1290. #define RX_MSDU_END_VLAN_STAG_CI_MSB 31
  1291. #define RX_MSDU_END_VLAN_STAG_CI_MASK 0x00000000ffff0000
  1292. #define RX_MSDU_END_PEER_META_DATA_OFFSET 0x0000000000000050
  1293. #define RX_MSDU_END_PEER_META_DATA_LSB 32
  1294. #define RX_MSDU_END_PEER_META_DATA_MSB 63
  1295. #define RX_MSDU_END_PEER_META_DATA_MASK 0xffffffff00000000
  1296. /* Description USER_RSSI
  1297. RSSI for this user
  1298. <legal all>
  1299. */
  1300. #define RX_MSDU_END_USER_RSSI_OFFSET 0x0000000000000058
  1301. #define RX_MSDU_END_USER_RSSI_LSB 0
  1302. #define RX_MSDU_END_USER_RSSI_MSB 7
  1303. #define RX_MSDU_END_USER_RSSI_MASK 0x00000000000000ff
  1304. /* Description PKT_TYPE
  1305. Packet type:
  1306. <enum 0 dot11a>802.11a PPDU type
  1307. <enum 1 dot11b>802.11b PPDU type
  1308. <enum 2 dot11n_mm>802.11n Mixed Mode PPDU type
  1309. <enum 3 dot11ac>802.11ac PPDU type
  1310. <enum 4 dot11ax>802.11ax PPDU type
  1311. <enum 5 dot11ba>802.11ba (WUR) PPDU type
  1312. <enum 6 dot11be>802.11be PPDU type
  1313. <enum 7 dot11az>802.11az (ranging) PPDU type
  1314. <enum 8 dot11n_gf>802.11n Green Field PPDU type (unsupported
  1315. & aborted)
  1316. */
  1317. #define RX_MSDU_END_PKT_TYPE_OFFSET 0x0000000000000058
  1318. #define RX_MSDU_END_PKT_TYPE_LSB 8
  1319. #define RX_MSDU_END_PKT_TYPE_MSB 11
  1320. #define RX_MSDU_END_PKT_TYPE_MASK 0x0000000000000f00
  1321. /* Description SGI
  1322. Field only valid when pkt type is HT, VHT or HE.
  1323. <enum 0 0_8_us_sgi > Legacy normal GI. Can also be used
  1324. for HE
  1325. <enum 1 0_4_us_sgi > Legacy short GI. Can also be used
  1326. for HE
  1327. <enum 2 1_6_us_sgi > HE related GI
  1328. <enum 3 3_2_us_sgi > HE related GI
  1329. <legal 0 - 3>
  1330. */
  1331. #define RX_MSDU_END_SGI_OFFSET 0x0000000000000058
  1332. #define RX_MSDU_END_SGI_LSB 12
  1333. #define RX_MSDU_END_SGI_MSB 13
  1334. #define RX_MSDU_END_SGI_MASK 0x0000000000003000
  1335. /* Description RATE_MCS
  1336. For details, refer to MCS_TYPE description
  1337. Note: This is "rate" in case of 11a/11b
  1338. <legal all>
  1339. */
  1340. #define RX_MSDU_END_RATE_MCS_OFFSET 0x0000000000000058
  1341. #define RX_MSDU_END_RATE_MCS_LSB 14
  1342. #define RX_MSDU_END_RATE_MCS_MSB 17
  1343. #define RX_MSDU_END_RATE_MCS_MASK 0x000000000003c000
  1344. /* Description RECEIVE_BANDWIDTH
  1345. Full receive Bandwidth
  1346. <enum 0 20_mhz>20 Mhz BW
  1347. <enum 1 40_mhz>40 Mhz BW
  1348. <enum 2 80_mhz>80 Mhz BW
  1349. <enum 3 160_mhz>160 Mhz BW
  1350. <enum 4 320_mhz>320 Mhz BW
  1351. <enum 5 240_mhz>240 Mhz BW
  1352. */
  1353. #define RX_MSDU_END_RECEIVE_BANDWIDTH_OFFSET 0x0000000000000058
  1354. #define RX_MSDU_END_RECEIVE_BANDWIDTH_LSB 18
  1355. #define RX_MSDU_END_RECEIVE_BANDWIDTH_MSB 20
  1356. #define RX_MSDU_END_RECEIVE_BANDWIDTH_MASK 0x00000000001c0000
  1357. #define RX_MSDU_END_RECEPTION_TYPE_OFFSET 0x0000000000000058
  1358. #define RX_MSDU_END_RECEPTION_TYPE_LSB 21
  1359. #define RX_MSDU_END_RECEPTION_TYPE_MSB 23
  1360. #define RX_MSDU_END_RECEPTION_TYPE_MASK 0x0000000000e00000
  1361. /* Description MIMO_SS_BITMAP
  1362. Field only valid when Reception_type for the MPDU from this
  1363. STA is some form of MIMO reception
  1364. Bitmap, with each bit indicating if the related spatial
  1365. stream is used for this STA
  1366. LSB related to SS 0
  1367. 0: spatial stream not used for this reception
  1368. 1: spatial stream used for this reception
  1369. Note: Only 7 bits are reported here to accommodate field
  1370. 'msdu_done_copy.'
  1371. <legal all>
  1372. */
  1373. #define RX_MSDU_END_MIMO_SS_BITMAP_OFFSET 0x0000000000000058
  1374. #define RX_MSDU_END_MIMO_SS_BITMAP_LSB 24
  1375. #define RX_MSDU_END_MIMO_SS_BITMAP_MSB 30
  1376. #define RX_MSDU_END_MIMO_SS_BITMAP_MASK 0x000000007f000000
  1377. /* Description MSDU_DONE_COPY
  1378. If set indicates that the RX packet data, RX header data,
  1379. RX PPDU start descriptor, RX MPDU start/end descriptor,
  1380. RX MSDU start/end descriptors and RX Attention descriptor
  1381. are all valid.
  1382. <legal 1>
  1383. */
  1384. #define RX_MSDU_END_MSDU_DONE_COPY_OFFSET 0x0000000000000058
  1385. #define RX_MSDU_END_MSDU_DONE_COPY_LSB 31
  1386. #define RX_MSDU_END_MSDU_DONE_COPY_MSB 31
  1387. #define RX_MSDU_END_MSDU_DONE_COPY_MASK 0x0000000080000000
  1388. #define RX_MSDU_END_FLOW_ID_TOEPLITZ_OFFSET 0x0000000000000058
  1389. #define RX_MSDU_END_FLOW_ID_TOEPLITZ_LSB 32
  1390. #define RX_MSDU_END_FLOW_ID_TOEPLITZ_MSB 63
  1391. #define RX_MSDU_END_FLOW_ID_TOEPLITZ_MASK 0xffffffff00000000
  1392. /* Description PPDU_START_TIMESTAMP_63_32
  1393. Timestamp that indicates when the PPDU that contained this
  1394. MPDU started on the medium, upper 32 bits
  1395. <legal all>
  1396. */
  1397. #define RX_MSDU_END_PPDU_START_TIMESTAMP_63_32_OFFSET 0x0000000000000060
  1398. #define RX_MSDU_END_PPDU_START_TIMESTAMP_63_32_LSB 0
  1399. #define RX_MSDU_END_PPDU_START_TIMESTAMP_63_32_MSB 31
  1400. #define RX_MSDU_END_PPDU_START_TIMESTAMP_63_32_MASK 0x00000000ffffffff
  1401. /* Description SW_PHY_META_DATA
  1402. SW programmed Meta data provided by the PHY.
  1403. Can be used for SW to indicate the channel the device is
  1404. on.
  1405. <legal all>
  1406. */
  1407. #define RX_MSDU_END_SW_PHY_META_DATA_OFFSET 0x0000000000000060
  1408. #define RX_MSDU_END_SW_PHY_META_DATA_LSB 32
  1409. #define RX_MSDU_END_SW_PHY_META_DATA_MSB 63
  1410. #define RX_MSDU_END_SW_PHY_META_DATA_MASK 0xffffffff00000000
  1411. #define RX_MSDU_END_PPDU_START_TIMESTAMP_31_0_OFFSET 0x0000000000000068
  1412. #define RX_MSDU_END_PPDU_START_TIMESTAMP_31_0_LSB 0
  1413. #define RX_MSDU_END_PPDU_START_TIMESTAMP_31_0_MSB 31
  1414. #define RX_MSDU_END_PPDU_START_TIMESTAMP_31_0_MASK 0x00000000ffffffff
  1415. /* Description TOEPLITZ_HASH_2_OR_4
  1416. Controlled by multiple RxOLE registers for TCP/UDP over
  1417. IPv4/IPv6 - Either, Toeplitz hash computed over 2-tuple
  1418. IPv4 or IPv6 src/dest addresses is reported; or, Toeplitz
  1419. hash computed over 4-tuple IPv4 or IPv6 src/dest addresses
  1420. and src/dest ports is reported. The Flow_id_toeplitz hash
  1421. can also be reported here. Usually the hash reported here
  1422. is the one used for hash-based REO routing (see use_flow_id_toeplitz_clfy
  1423. in 'RXPT_CLASSIFY_INFO').
  1424. Optionally the 3-tuple Toeplitz hash over IPv4
  1425. or IPv6 src/dest addresses and L4 protocol can be reported
  1426. */
  1427. #define RX_MSDU_END_TOEPLITZ_HASH_2_OR_4_OFFSET 0x0000000000000068
  1428. #define RX_MSDU_END_TOEPLITZ_HASH_2_OR_4_LSB 32
  1429. #define RX_MSDU_END_TOEPLITZ_HASH_2_OR_4_MSB 63
  1430. #define RX_MSDU_END_TOEPLITZ_HASH_2_OR_4_MASK 0xffffffff00000000
  1431. /* Description RESERVED_28A
  1432. <legal 0>
  1433. */
  1434. #define RX_MSDU_END_RESERVED_28A_OFFSET 0x0000000000000070
  1435. #define RX_MSDU_END_RESERVED_28A_LSB 0
  1436. #define RX_MSDU_END_RESERVED_28A_MSB 15
  1437. #define RX_MSDU_END_RESERVED_28A_MASK 0x000000000000ffff
  1438. /* Description SA_15_0
  1439. Source MAC address bits [15:0] (with the fifth byte in the
  1440. MSB and the last byte in the LSB, i.e. requiring a byte-swap
  1441. for little-endian FW)
  1442. */
  1443. #define RX_MSDU_END_SA_15_0_OFFSET 0x0000000000000070
  1444. #define RX_MSDU_END_SA_15_0_LSB 16
  1445. #define RX_MSDU_END_SA_15_0_MSB 31
  1446. #define RX_MSDU_END_SA_15_0_MASK 0x00000000ffff0000
  1447. /* Description SA_47_16
  1448. Source MAC address bits [47:16] (with the first byte in
  1449. the MSB and the fourth byte in the LSB, i.e. requiring a
  1450. byte-swap for little-endian FW)
  1451. */
  1452. #define RX_MSDU_END_SA_47_16_OFFSET 0x0000000000000070
  1453. #define RX_MSDU_END_SA_47_16_LSB 32
  1454. #define RX_MSDU_END_SA_47_16_MSB 63
  1455. #define RX_MSDU_END_SA_47_16_MASK 0xffffffff00000000
  1456. #define RX_MSDU_END_FIRST_MPDU_OFFSET 0x0000000000000078
  1457. #define RX_MSDU_END_FIRST_MPDU_LSB 0
  1458. #define RX_MSDU_END_FIRST_MPDU_MSB 0
  1459. #define RX_MSDU_END_FIRST_MPDU_MASK 0x0000000000000001
  1460. /* Description RESERVED_30A
  1461. <legal 0>
  1462. */
  1463. #define RX_MSDU_END_RESERVED_30A_OFFSET 0x0000000000000078
  1464. #define RX_MSDU_END_RESERVED_30A_LSB 1
  1465. #define RX_MSDU_END_RESERVED_30A_MSB 1
  1466. #define RX_MSDU_END_RESERVED_30A_MASK 0x0000000000000002
  1467. /* Description MCAST_BCAST
  1468. Multicast / broadcast indicator. Only set when the MAC
  1469. address 1 bit 0 is set indicating mcast/bcast and the BSSID
  1470. matches one of the 4 BSSID registers. Only set when first_msdu
  1471. is set.
  1472. */
  1473. #define RX_MSDU_END_MCAST_BCAST_OFFSET 0x0000000000000078
  1474. #define RX_MSDU_END_MCAST_BCAST_LSB 2
  1475. #define RX_MSDU_END_MCAST_BCAST_MSB 2
  1476. #define RX_MSDU_END_MCAST_BCAST_MASK 0x0000000000000004
  1477. /* Description AST_INDEX_NOT_FOUND
  1478. Only valid when first_msdu is set.
  1479. Indicates no AST matching entries within the the max search
  1480. count.
  1481. */
  1482. #define RX_MSDU_END_AST_INDEX_NOT_FOUND_OFFSET 0x0000000000000078
  1483. #define RX_MSDU_END_AST_INDEX_NOT_FOUND_LSB 3
  1484. #define RX_MSDU_END_AST_INDEX_NOT_FOUND_MSB 3
  1485. #define RX_MSDU_END_AST_INDEX_NOT_FOUND_MASK 0x0000000000000008
  1486. /* Description AST_INDEX_TIMEOUT
  1487. Only valid when first_msdu is set.
  1488. Indicates an unsuccessful search in the address seach table
  1489. due to timeout.
  1490. */
  1491. #define RX_MSDU_END_AST_INDEX_TIMEOUT_OFFSET 0x0000000000000078
  1492. #define RX_MSDU_END_AST_INDEX_TIMEOUT_LSB 4
  1493. #define RX_MSDU_END_AST_INDEX_TIMEOUT_MSB 4
  1494. #define RX_MSDU_END_AST_INDEX_TIMEOUT_MASK 0x0000000000000010
  1495. /* Description POWER_MGMT
  1496. Power management bit set in the 802.11 header. Only set
  1497. when first_msdu is set.
  1498. */
  1499. #define RX_MSDU_END_POWER_MGMT_OFFSET 0x0000000000000078
  1500. #define RX_MSDU_END_POWER_MGMT_LSB 5
  1501. #define RX_MSDU_END_POWER_MGMT_MSB 5
  1502. #define RX_MSDU_END_POWER_MGMT_MASK 0x0000000000000020
  1503. /* Description NON_QOS
  1504. Set if packet is not a non-QoS data frame. Only set when
  1505. first_msdu is set.
  1506. */
  1507. #define RX_MSDU_END_NON_QOS_OFFSET 0x0000000000000078
  1508. #define RX_MSDU_END_NON_QOS_LSB 6
  1509. #define RX_MSDU_END_NON_QOS_MSB 6
  1510. #define RX_MSDU_END_NON_QOS_MASK 0x0000000000000040
  1511. /* Description NULL_DATA
  1512. Set if frame type indicates either null data or QoS null
  1513. data format. Only set when first_msdu is set.
  1514. */
  1515. #define RX_MSDU_END_NULL_DATA_OFFSET 0x0000000000000078
  1516. #define RX_MSDU_END_NULL_DATA_LSB 7
  1517. #define RX_MSDU_END_NULL_DATA_MSB 7
  1518. #define RX_MSDU_END_NULL_DATA_MASK 0x0000000000000080
  1519. /* Description MGMT_TYPE
  1520. Set if packet is a management packet. Only set when first_msdu
  1521. is set.
  1522. */
  1523. #define RX_MSDU_END_MGMT_TYPE_OFFSET 0x0000000000000078
  1524. #define RX_MSDU_END_MGMT_TYPE_LSB 8
  1525. #define RX_MSDU_END_MGMT_TYPE_MSB 8
  1526. #define RX_MSDU_END_MGMT_TYPE_MASK 0x0000000000000100
  1527. /* Description CTRL_TYPE
  1528. Set if packet is a control packet. Only set when first_msdu
  1529. is set.
  1530. */
  1531. #define RX_MSDU_END_CTRL_TYPE_OFFSET 0x0000000000000078
  1532. #define RX_MSDU_END_CTRL_TYPE_LSB 9
  1533. #define RX_MSDU_END_CTRL_TYPE_MSB 9
  1534. #define RX_MSDU_END_CTRL_TYPE_MASK 0x0000000000000200
  1535. /* Description MORE_DATA
  1536. Set if more bit in frame control is set. Only set when
  1537. first_msdu is set.
  1538. */
  1539. #define RX_MSDU_END_MORE_DATA_OFFSET 0x0000000000000078
  1540. #define RX_MSDU_END_MORE_DATA_LSB 10
  1541. #define RX_MSDU_END_MORE_DATA_MSB 10
  1542. #define RX_MSDU_END_MORE_DATA_MASK 0x0000000000000400
  1543. /* Description EOSP
  1544. Set if the EOSP (end of service period) bit in the QoS control
  1545. field is set. Only set when first_msdu is set.
  1546. */
  1547. #define RX_MSDU_END_EOSP_OFFSET 0x0000000000000078
  1548. #define RX_MSDU_END_EOSP_LSB 11
  1549. #define RX_MSDU_END_EOSP_MSB 11
  1550. #define RX_MSDU_END_EOSP_MASK 0x0000000000000800
  1551. /* Description A_MSDU_ERROR
  1552. Set if number of MSDUs in A-MSDU is above a threshold or
  1553. if the size of the MSDU is invalid. This receive buffer
  1554. will contain all of the remainder of the MSDUs in this
  1555. MPDU without decapsulation.
  1556. */
  1557. #define RX_MSDU_END_A_MSDU_ERROR_OFFSET 0x0000000000000078
  1558. #define RX_MSDU_END_A_MSDU_ERROR_LSB 12
  1559. #define RX_MSDU_END_A_MSDU_ERROR_MSB 12
  1560. #define RX_MSDU_END_A_MSDU_ERROR_MASK 0x0000000000001000
  1561. #define RX_MSDU_END_RESERVED_30B_OFFSET 0x0000000000000078
  1562. #define RX_MSDU_END_RESERVED_30B_LSB 13
  1563. #define RX_MSDU_END_RESERVED_30B_MSB 13
  1564. #define RX_MSDU_END_RESERVED_30B_MASK 0x0000000000002000
  1565. /* Description ORDER
  1566. Set if the order bit in the frame control is set. Only
  1567. set when first_msdu is set.
  1568. */
  1569. #define RX_MSDU_END_ORDER_OFFSET 0x0000000000000078
  1570. #define RX_MSDU_END_ORDER_LSB 14
  1571. #define RX_MSDU_END_ORDER_MSB 14
  1572. #define RX_MSDU_END_ORDER_MASK 0x0000000000004000
  1573. /* Description WIFI_PARSER_ERROR
  1574. Indicates that the WiFi frame has one of the following errors
  1575. o has less than minimum allowed bytes as per standard
  1576. o has incomplete VLAN LLC/SNAP (only for non A-MSDUs)
  1577. <legal all>
  1578. */
  1579. #define RX_MSDU_END_WIFI_PARSER_ERROR_OFFSET 0x0000000000000078
  1580. #define RX_MSDU_END_WIFI_PARSER_ERROR_LSB 15
  1581. #define RX_MSDU_END_WIFI_PARSER_ERROR_MSB 15
  1582. #define RX_MSDU_END_WIFI_PARSER_ERROR_MASK 0x0000000000008000
  1583. /* Description OVERFLOW_ERR
  1584. RXPCU Receive FIFO ran out of space to receive the full
  1585. MPDU. Therefor this MPDU is terminated early and is thus
  1586. corrupted.
  1587. This MPDU will not be ACKed.
  1588. RXPCU might still be able to correctly receive the following
  1589. MPDUs in the PPDU if enough fifo space became available
  1590. in time
  1591. */
  1592. #define RX_MSDU_END_OVERFLOW_ERR_OFFSET 0x0000000000000078
  1593. #define RX_MSDU_END_OVERFLOW_ERR_LSB 16
  1594. #define RX_MSDU_END_OVERFLOW_ERR_MSB 16
  1595. #define RX_MSDU_END_OVERFLOW_ERR_MASK 0x0000000000010000
  1596. /* Description MSDU_LENGTH_ERR
  1597. Indicates that the MSDU length from the 802.3 encapsulated
  1598. length field extends beyond the MPDU boundary or if the
  1599. length is less than 14 bytes.
  1600. Merged with original "other_msdu_err": Indicates that the
  1601. MSDU threshold was exceeded and thus all the rest of the
  1602. MSDUs will not be scattered and will not be decasulated
  1603. but will be DMA'ed in RAW format as a single MSDU buffer
  1604. */
  1605. #define RX_MSDU_END_MSDU_LENGTH_ERR_OFFSET 0x0000000000000078
  1606. #define RX_MSDU_END_MSDU_LENGTH_ERR_LSB 17
  1607. #define RX_MSDU_END_MSDU_LENGTH_ERR_MSB 17
  1608. #define RX_MSDU_END_MSDU_LENGTH_ERR_MASK 0x0000000000020000
  1609. /* Description TCP_UDP_CHKSUM_FAIL
  1610. Indicates that the computed checksum (tcp_udp_chksum in 'RX_MSDU_END')
  1611. did not match the checksum in the TCP/UDP header.
  1612. */
  1613. #define RX_MSDU_END_TCP_UDP_CHKSUM_FAIL_OFFSET 0x0000000000000078
  1614. #define RX_MSDU_END_TCP_UDP_CHKSUM_FAIL_LSB 18
  1615. #define RX_MSDU_END_TCP_UDP_CHKSUM_FAIL_MSB 18
  1616. #define RX_MSDU_END_TCP_UDP_CHKSUM_FAIL_MASK 0x0000000000040000
  1617. /* Description IP_CHKSUM_FAIL
  1618. Indicates that the computed checksum (ip_hdr_chksum in 'RX_MSDU_END')
  1619. did not match the checksum in the IP header.
  1620. */
  1621. #define RX_MSDU_END_IP_CHKSUM_FAIL_OFFSET 0x0000000000000078
  1622. #define RX_MSDU_END_IP_CHKSUM_FAIL_LSB 19
  1623. #define RX_MSDU_END_IP_CHKSUM_FAIL_MSB 19
  1624. #define RX_MSDU_END_IP_CHKSUM_FAIL_MASK 0x0000000000080000
  1625. /* Description SA_IDX_INVALID
  1626. Indicates no matching entry was found in the address search
  1627. table for the source MAC address.
  1628. */
  1629. #define RX_MSDU_END_SA_IDX_INVALID_OFFSET 0x0000000000000078
  1630. #define RX_MSDU_END_SA_IDX_INVALID_LSB 20
  1631. #define RX_MSDU_END_SA_IDX_INVALID_MSB 20
  1632. #define RX_MSDU_END_SA_IDX_INVALID_MASK 0x0000000000100000
  1633. /* Description DA_IDX_INVALID
  1634. Indicates no matching entry was found in the address search
  1635. table for the destination MAC address.
  1636. */
  1637. #define RX_MSDU_END_DA_IDX_INVALID_OFFSET 0x0000000000000078
  1638. #define RX_MSDU_END_DA_IDX_INVALID_LSB 21
  1639. #define RX_MSDU_END_DA_IDX_INVALID_MSB 21
  1640. #define RX_MSDU_END_DA_IDX_INVALID_MASK 0x0000000000200000
  1641. /* Description AMSDU_ADDR_MISMATCH
  1642. Indicates that an A-MSDU with 'from DS = 0' had an SA mismatching
  1643. TA or an A-MDU with 'to DS = 0' had a DA mismatching RA
  1644. */
  1645. #define RX_MSDU_END_AMSDU_ADDR_MISMATCH_OFFSET 0x0000000000000078
  1646. #define RX_MSDU_END_AMSDU_ADDR_MISMATCH_LSB 22
  1647. #define RX_MSDU_END_AMSDU_ADDR_MISMATCH_MSB 22
  1648. #define RX_MSDU_END_AMSDU_ADDR_MISMATCH_MASK 0x0000000000400000
  1649. /* Description RX_IN_TX_DECRYPT_BYP
  1650. Indicates that RX packet is not decrypted as Crypto is busy
  1651. with TX packet processing.
  1652. */
  1653. #define RX_MSDU_END_RX_IN_TX_DECRYPT_BYP_OFFSET 0x0000000000000078
  1654. #define RX_MSDU_END_RX_IN_TX_DECRYPT_BYP_LSB 23
  1655. #define RX_MSDU_END_RX_IN_TX_DECRYPT_BYP_MSB 23
  1656. #define RX_MSDU_END_RX_IN_TX_DECRYPT_BYP_MASK 0x0000000000800000
  1657. /* Description ENCRYPT_REQUIRED
  1658. Indicates that this data type frame is not encrypted even
  1659. if the policy for this MPDU requires encryption as indicated
  1660. in the peer entry key type.
  1661. */
  1662. #define RX_MSDU_END_ENCRYPT_REQUIRED_OFFSET 0x0000000000000078
  1663. #define RX_MSDU_END_ENCRYPT_REQUIRED_LSB 24
  1664. #define RX_MSDU_END_ENCRYPT_REQUIRED_MSB 24
  1665. #define RX_MSDU_END_ENCRYPT_REQUIRED_MASK 0x0000000001000000
  1666. /* Description DIRECTED
  1667. MPDU is a directed packet which means that the RA matched
  1668. our STA addresses. In proxySTA it means that the TA matched
  1669. an entry in our address search table with the corresponding
  1670. "no_ack" bit is the address search entry cleared.
  1671. */
  1672. #define RX_MSDU_END_DIRECTED_OFFSET 0x0000000000000078
  1673. #define RX_MSDU_END_DIRECTED_LSB 25
  1674. #define RX_MSDU_END_DIRECTED_MSB 25
  1675. #define RX_MSDU_END_DIRECTED_MASK 0x0000000002000000
  1676. /* Description BUFFER_FRAGMENT
  1677. Indicates that at least one of the rx buffers has been fragmented.
  1678. If set the FW should look at the rx_frag_info descriptor
  1679. described below.
  1680. */
  1681. #define RX_MSDU_END_BUFFER_FRAGMENT_OFFSET 0x0000000000000078
  1682. #define RX_MSDU_END_BUFFER_FRAGMENT_LSB 26
  1683. #define RX_MSDU_END_BUFFER_FRAGMENT_MSB 26
  1684. #define RX_MSDU_END_BUFFER_FRAGMENT_MASK 0x0000000004000000
  1685. /* Description MPDU_LENGTH_ERR
  1686. Indicates that the MPDU was pre-maturely terminated resulting
  1687. in a truncated MPDU. Don't trust the MPDU length field.
  1688. */
  1689. #define RX_MSDU_END_MPDU_LENGTH_ERR_OFFSET 0x0000000000000078
  1690. #define RX_MSDU_END_MPDU_LENGTH_ERR_LSB 27
  1691. #define RX_MSDU_END_MPDU_LENGTH_ERR_MSB 27
  1692. #define RX_MSDU_END_MPDU_LENGTH_ERR_MASK 0x0000000008000000
  1693. /* Description TKIP_MIC_ERR
  1694. Indicates that the MPDU Michael integrity check failed
  1695. */
  1696. #define RX_MSDU_END_TKIP_MIC_ERR_OFFSET 0x0000000000000078
  1697. #define RX_MSDU_END_TKIP_MIC_ERR_LSB 28
  1698. #define RX_MSDU_END_TKIP_MIC_ERR_MSB 28
  1699. #define RX_MSDU_END_TKIP_MIC_ERR_MASK 0x0000000010000000
  1700. /* Description DECRYPT_ERR
  1701. Indicates that the MPDU decrypt integrity check failed or
  1702. CRYPTO received an encrypted frame, but did not get a valid
  1703. corresponding key id in the peer entry.
  1704. */
  1705. #define RX_MSDU_END_DECRYPT_ERR_OFFSET 0x0000000000000078
  1706. #define RX_MSDU_END_DECRYPT_ERR_LSB 29
  1707. #define RX_MSDU_END_DECRYPT_ERR_MSB 29
  1708. #define RX_MSDU_END_DECRYPT_ERR_MASK 0x0000000020000000
  1709. /* Description UNENCRYPTED_FRAME_ERR
  1710. Copied here by RX OLE from the RX_MPDU_END TLV
  1711. */
  1712. #define RX_MSDU_END_UNENCRYPTED_FRAME_ERR_OFFSET 0x0000000000000078
  1713. #define RX_MSDU_END_UNENCRYPTED_FRAME_ERR_LSB 30
  1714. #define RX_MSDU_END_UNENCRYPTED_FRAME_ERR_MSB 30
  1715. #define RX_MSDU_END_UNENCRYPTED_FRAME_ERR_MASK 0x0000000040000000
  1716. /* Description FCS_ERR
  1717. Indicates that the MPDU FCS check failed
  1718. */
  1719. #define RX_MSDU_END_FCS_ERR_OFFSET 0x0000000000000078
  1720. #define RX_MSDU_END_FCS_ERR_LSB 31
  1721. #define RX_MSDU_END_FCS_ERR_MSB 31
  1722. #define RX_MSDU_END_FCS_ERR_MASK 0x0000000080000000
  1723. /* Description RESERVED_31A
  1724. <legal 0>
  1725. */
  1726. #define RX_MSDU_END_RESERVED_31A_OFFSET 0x0000000000000078
  1727. #define RX_MSDU_END_RESERVED_31A_LSB 32
  1728. #define RX_MSDU_END_RESERVED_31A_MSB 41
  1729. #define RX_MSDU_END_RESERVED_31A_MASK 0x000003ff00000000
  1730. /* Description DECRYPT_STATUS_CODE
  1731. Field provides insight into the decryption performed
  1732. <enum 0 decrypt_ok> Frame had protection enabled and decrypted
  1733. properly
  1734. <enum 1 decrypt_unprotected_frame > Frame is unprotected
  1735. and hence bypassed
  1736. <enum 2 decrypt_data_err > Frame has protection enabled
  1737. and could not be properly d ecrypted due to MIC/ICV mismatch
  1738. etc.
  1739. <enum 3 decrypt_key_invalid > Frame has protection enabled
  1740. but the key that was required to decrypt this frame was
  1741. not valid
  1742. <enum 4 decrypt_peer_entry_invalid > Frame has protection
  1743. enabled but the key that was required to decrypt this frame
  1744. was not valid
  1745. <enum 5 decrypt_other > Reserved for other indications
  1746. <legal 0 - 5>
  1747. */
  1748. #define RX_MSDU_END_DECRYPT_STATUS_CODE_OFFSET 0x0000000000000078
  1749. #define RX_MSDU_END_DECRYPT_STATUS_CODE_LSB 42
  1750. #define RX_MSDU_END_DECRYPT_STATUS_CODE_MSB 44
  1751. #define RX_MSDU_END_DECRYPT_STATUS_CODE_MASK 0x00001c0000000000
  1752. /* Description RX_BITMAP_NOT_UPDATED
  1753. Frame is received, but RXPCU could not update the receive
  1754. bitmap due to (temporary) fifo contraints.
  1755. <legal all>
  1756. */
  1757. #define RX_MSDU_END_RX_BITMAP_NOT_UPDATED_OFFSET 0x0000000000000078
  1758. #define RX_MSDU_END_RX_BITMAP_NOT_UPDATED_LSB 45
  1759. #define RX_MSDU_END_RX_BITMAP_NOT_UPDATED_MSB 45
  1760. #define RX_MSDU_END_RX_BITMAP_NOT_UPDATED_MASK 0x0000200000000000
  1761. /* Description RESERVED_31B
  1762. <legal 0>
  1763. */
  1764. #define RX_MSDU_END_RESERVED_31B_OFFSET 0x0000000000000078
  1765. #define RX_MSDU_END_RESERVED_31B_LSB 46
  1766. #define RX_MSDU_END_RESERVED_31B_MSB 62
  1767. #define RX_MSDU_END_RESERVED_31B_MASK 0x7fffc00000000000
  1768. #define RX_MSDU_END_MSDU_DONE_OFFSET 0x0000000000000078
  1769. #define RX_MSDU_END_MSDU_DONE_LSB 63
  1770. #define RX_MSDU_END_MSDU_DONE_MSB 63
  1771. #define RX_MSDU_END_MSDU_DONE_MASK 0x8000000000000000
  1772. #endif // RX_MSDU_END