rx_ppdu_end_user_stats.h 80 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842
  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_PPDU_END_USER_STATS_H_
  16. #define _RX_PPDU_END_USER_STATS_H_
  17. #if !defined(__ASSEMBLER__)
  18. #endif
  19. #include "rx_rxpcu_classification_overview.h"
  20. #define NUM_OF_DWORDS_RX_PPDU_END_USER_STATS 30
  21. #define NUM_OF_QWORDS_RX_PPDU_END_USER_STATS 15
  22. struct rx_ppdu_end_user_stats {
  23. #ifndef WIFI_BIT_ORDER_BIG_ENDIAN
  24. struct rx_rxpcu_classification_overview rxpcu_classification_details;
  25. uint32_t sta_full_aid : 13, // [12:0]
  26. mcs : 4, // [16:13]
  27. nss : 3, // [19:17]
  28. expected_response_ack_or_ba : 1, // [20:20]
  29. reserved_1a : 11; // [31:21]
  30. uint32_t sw_peer_id : 16, // [15:0]
  31. mpdu_cnt_fcs_err : 11, // [26:16]
  32. sw2rxdma0_buf_source_used : 1, // [27:27]
  33. fw2rxdma_pmac0_buf_source_used : 1, // [28:28]
  34. sw2rxdma1_buf_source_used : 1, // [29:29]
  35. sw2rxdma_exception_buf_source_used : 1, // [30:30]
  36. fw2rxdma_pmac1_buf_source_used : 1; // [31:31]
  37. uint32_t mpdu_cnt_fcs_ok : 11, // [10:0]
  38. frame_control_info_valid : 1, // [11:11]
  39. qos_control_info_valid : 1, // [12:12]
  40. ht_control_info_valid : 1, // [13:13]
  41. data_sequence_control_info_valid : 1, // [14:14]
  42. ht_control_info_null_valid : 1, // [15:15]
  43. rxdma2fw_pmac1_ring_used : 1, // [16:16]
  44. rxdma2reo_ring_used : 1, // [17:17]
  45. rxdma2fw_pmac0_ring_used : 1, // [18:18]
  46. rxdma2sw_ring_used : 1, // [19:19]
  47. rxdma_release_ring_used : 1, // [20:20]
  48. ht_control_field_pkt_type : 4, // [24:21]
  49. rxdma2reo_remote0_ring_used : 1, // [25:25]
  50. rxdma2reo_remote1_ring_used : 1, // [26:26]
  51. reserved_3b : 5; // [31:27]
  52. uint32_t ast_index : 16, // [15:0]
  53. frame_control_field : 16; // [31:16]
  54. uint32_t first_data_seq_ctrl : 16, // [15:0]
  55. qos_control_field : 16; // [31:16]
  56. uint32_t ht_control_field : 32; // [31:0]
  57. uint32_t fcs_ok_bitmap_31_0 : 32; // [31:0]
  58. uint32_t fcs_ok_bitmap_63_32 : 32; // [31:0]
  59. uint32_t udp_msdu_count : 16, // [15:0]
  60. tcp_msdu_count : 16; // [31:16]
  61. uint32_t other_msdu_count : 16, // [15:0]
  62. tcp_ack_msdu_count : 16; // [31:16]
  63. uint32_t sw_response_reference_ptr : 32; // [31:0]
  64. uint32_t received_qos_data_tid_bitmap : 16, // [15:0]
  65. received_qos_data_tid_eosp_bitmap : 16; // [31:16]
  66. uint32_t qosctrl_15_8_tid0 : 8, // [7:0]
  67. qosctrl_15_8_tid1 : 8, // [15:8]
  68. qosctrl_15_8_tid2 : 8, // [23:16]
  69. qosctrl_15_8_tid3 : 8; // [31:24]
  70. uint32_t qosctrl_15_8_tid4 : 8, // [7:0]
  71. qosctrl_15_8_tid5 : 8, // [15:8]
  72. qosctrl_15_8_tid6 : 8, // [23:16]
  73. qosctrl_15_8_tid7 : 8; // [31:24]
  74. uint32_t qosctrl_15_8_tid8 : 8, // [7:0]
  75. qosctrl_15_8_tid9 : 8, // [15:8]
  76. qosctrl_15_8_tid10 : 8, // [23:16]
  77. qosctrl_15_8_tid11 : 8; // [31:24]
  78. uint32_t qosctrl_15_8_tid12 : 8, // [7:0]
  79. qosctrl_15_8_tid13 : 8, // [15:8]
  80. qosctrl_15_8_tid14 : 8, // [23:16]
  81. qosctrl_15_8_tid15 : 8; // [31:24]
  82. uint32_t mpdu_ok_byte_count : 25, // [24:0]
  83. ampdu_delim_ok_count_6_0 : 7; // [31:25]
  84. uint32_t ampdu_delim_err_count : 25, // [24:0]
  85. ampdu_delim_ok_count_13_7 : 7; // [31:25]
  86. uint32_t mpdu_err_byte_count : 25, // [24:0]
  87. ampdu_delim_ok_count_20_14 : 7; // [31:25]
  88. uint32_t non_consecutive_delimiter_err : 16, // [15:0]
  89. retried_msdu_count : 16; // [31:16]
  90. uint32_t ht_control_null_field : 32; // [31:0]
  91. uint32_t sw_response_reference_ptr_ext : 32; // [31:0]
  92. uint32_t corrupted_due_to_fifo_delay : 1, // [0:0]
  93. frame_control_info_null_valid : 1, // [1:1]
  94. frame_control_field_null : 16, // [17:2]
  95. retried_mpdu_count : 11, // [28:18]
  96. reserved_23a : 3; // [31:29]
  97. uint32_t rxpcu_mpdu_filter_in_category : 2, // [1:0]
  98. sw_frame_group_id : 7, // [8:2]
  99. reserved_24a : 4, // [12:9]
  100. frame_control_info_mgmt_ctrl_valid : 1, // [13:13]
  101. mac_addr_ad2_valid : 1, // [14:14]
  102. mcast_bcast : 1, // [15:15]
  103. frame_control_field_mgmt_ctrl : 16; // [31:16]
  104. uint32_t user_ppdu_len : 24, // [23:0]
  105. reserved_25a : 8; // [31:24]
  106. uint32_t mac_addr_ad2_31_0 : 32; // [31:0]
  107. uint32_t mac_addr_ad2_47_32 : 16, // [15:0]
  108. amsdu_msdu_count : 16; // [31:16]
  109. uint32_t non_amsdu_msdu_count : 16, // [15:0]
  110. ucast_msdu_count : 16; // [31:16]
  111. uint32_t bcast_msdu_count : 16, // [15:0]
  112. mcast_bcast_msdu_count : 16; // [31:16]
  113. #else
  114. struct rx_rxpcu_classification_overview rxpcu_classification_details;
  115. uint32_t reserved_1a : 11, // [31:21]
  116. expected_response_ack_or_ba : 1, // [20:20]
  117. nss : 3, // [19:17]
  118. mcs : 4, // [16:13]
  119. sta_full_aid : 13; // [12:0]
  120. uint32_t fw2rxdma_pmac1_buf_source_used : 1, // [31:31]
  121. sw2rxdma_exception_buf_source_used : 1, // [30:30]
  122. sw2rxdma1_buf_source_used : 1, // [29:29]
  123. fw2rxdma_pmac0_buf_source_used : 1, // [28:28]
  124. sw2rxdma0_buf_source_used : 1, // [27:27]
  125. mpdu_cnt_fcs_err : 11, // [26:16]
  126. sw_peer_id : 16; // [15:0]
  127. uint32_t reserved_3b : 5, // [31:27]
  128. rxdma2reo_remote1_ring_used : 1, // [26:26]
  129. rxdma2reo_remote0_ring_used : 1, // [25:25]
  130. ht_control_field_pkt_type : 4, // [24:21]
  131. rxdma_release_ring_used : 1, // [20:20]
  132. rxdma2sw_ring_used : 1, // [19:19]
  133. rxdma2fw_pmac0_ring_used : 1, // [18:18]
  134. rxdma2reo_ring_used : 1, // [17:17]
  135. rxdma2fw_pmac1_ring_used : 1, // [16:16]
  136. ht_control_info_null_valid : 1, // [15:15]
  137. data_sequence_control_info_valid : 1, // [14:14]
  138. ht_control_info_valid : 1, // [13:13]
  139. qos_control_info_valid : 1, // [12:12]
  140. frame_control_info_valid : 1, // [11:11]
  141. mpdu_cnt_fcs_ok : 11; // [10:0]
  142. uint32_t frame_control_field : 16, // [31:16]
  143. ast_index : 16; // [15:0]
  144. uint32_t qos_control_field : 16, // [31:16]
  145. first_data_seq_ctrl : 16; // [15:0]
  146. uint32_t ht_control_field : 32; // [31:0]
  147. uint32_t fcs_ok_bitmap_31_0 : 32; // [31:0]
  148. uint32_t fcs_ok_bitmap_63_32 : 32; // [31:0]
  149. uint32_t tcp_msdu_count : 16, // [31:16]
  150. udp_msdu_count : 16; // [15:0]
  151. uint32_t tcp_ack_msdu_count : 16, // [31:16]
  152. other_msdu_count : 16; // [15:0]
  153. uint32_t sw_response_reference_ptr : 32; // [31:0]
  154. uint32_t received_qos_data_tid_eosp_bitmap : 16, // [31:16]
  155. received_qos_data_tid_bitmap : 16; // [15:0]
  156. uint32_t qosctrl_15_8_tid3 : 8, // [31:24]
  157. qosctrl_15_8_tid2 : 8, // [23:16]
  158. qosctrl_15_8_tid1 : 8, // [15:8]
  159. qosctrl_15_8_tid0 : 8; // [7:0]
  160. uint32_t qosctrl_15_8_tid7 : 8, // [31:24]
  161. qosctrl_15_8_tid6 : 8, // [23:16]
  162. qosctrl_15_8_tid5 : 8, // [15:8]
  163. qosctrl_15_8_tid4 : 8; // [7:0]
  164. uint32_t qosctrl_15_8_tid11 : 8, // [31:24]
  165. qosctrl_15_8_tid10 : 8, // [23:16]
  166. qosctrl_15_8_tid9 : 8, // [15:8]
  167. qosctrl_15_8_tid8 : 8; // [7:0]
  168. uint32_t qosctrl_15_8_tid15 : 8, // [31:24]
  169. qosctrl_15_8_tid14 : 8, // [23:16]
  170. qosctrl_15_8_tid13 : 8, // [15:8]
  171. qosctrl_15_8_tid12 : 8; // [7:0]
  172. uint32_t ampdu_delim_ok_count_6_0 : 7, // [31:25]
  173. mpdu_ok_byte_count : 25; // [24:0]
  174. uint32_t ampdu_delim_ok_count_13_7 : 7, // [31:25]
  175. ampdu_delim_err_count : 25; // [24:0]
  176. uint32_t ampdu_delim_ok_count_20_14 : 7, // [31:25]
  177. mpdu_err_byte_count : 25; // [24:0]
  178. uint32_t retried_msdu_count : 16, // [31:16]
  179. non_consecutive_delimiter_err : 16; // [15:0]
  180. uint32_t ht_control_null_field : 32; // [31:0]
  181. uint32_t sw_response_reference_ptr_ext : 32; // [31:0]
  182. uint32_t reserved_23a : 3, // [31:29]
  183. retried_mpdu_count : 11, // [28:18]
  184. frame_control_field_null : 16, // [17:2]
  185. frame_control_info_null_valid : 1, // [1:1]
  186. corrupted_due_to_fifo_delay : 1; // [0:0]
  187. uint32_t frame_control_field_mgmt_ctrl : 16, // [31:16]
  188. mcast_bcast : 1, // [15:15]
  189. mac_addr_ad2_valid : 1, // [14:14]
  190. frame_control_info_mgmt_ctrl_valid : 1, // [13:13]
  191. reserved_24a : 4, // [12:9]
  192. sw_frame_group_id : 7, // [8:2]
  193. rxpcu_mpdu_filter_in_category : 2; // [1:0]
  194. uint32_t reserved_25a : 8, // [31:24]
  195. user_ppdu_len : 24; // [23:0]
  196. uint32_t mac_addr_ad2_31_0 : 32; // [31:0]
  197. uint32_t amsdu_msdu_count : 16, // [31:16]
  198. mac_addr_ad2_47_32 : 16; // [15:0]
  199. uint32_t ucast_msdu_count : 16, // [31:16]
  200. non_amsdu_msdu_count : 16; // [15:0]
  201. uint32_t mcast_bcast_msdu_count : 16, // [31:16]
  202. bcast_msdu_count : 16; // [15:0]
  203. #endif
  204. };
  205. /* Description RXPCU_CLASSIFICATION_DETAILS
  206. Details related to what RXPCU classification types of MPDUs
  207. have been received
  208. */
  209. /* Description FILTER_PASS_MPDUS
  210. When set, at least one Filter Pass MPDU has been received.
  211. FCS might or might not have been passing.
  212. For MU UL, in TLVs RX_PPDU_END and RX_PPDU_END_STATUS_DONE,
  213. this field is the "OR of all the users.
  214. <legal all>
  215. */
  216. #define RX_PPDU_END_USER_STATS_RXPCU_CLASSIFICATION_DETAILS_FILTER_PASS_MPDUS_OFFSET 0x0000000000000000
  217. #define RX_PPDU_END_USER_STATS_RXPCU_CLASSIFICATION_DETAILS_FILTER_PASS_MPDUS_LSB 0
  218. #define RX_PPDU_END_USER_STATS_RXPCU_CLASSIFICATION_DETAILS_FILTER_PASS_MPDUS_MSB 0
  219. #define RX_PPDU_END_USER_STATS_RXPCU_CLASSIFICATION_DETAILS_FILTER_PASS_MPDUS_MASK 0x0000000000000001
  220. /* Description FILTER_PASS_MPDUS_FCS_OK
  221. When set, at least one Filter Pass MPDU has been received
  222. that has a correct FCS.
  223. For MU UL, in TLVs RX_PPDU_END and RX_PPDU_END_STATUS_DONE,
  224. this field is the "OR of all the users.
  225. <legal all>
  226. */
  227. #define RX_PPDU_END_USER_STATS_RXPCU_CLASSIFICATION_DETAILS_FILTER_PASS_MPDUS_FCS_OK_OFFSET 0x0000000000000000
  228. #define RX_PPDU_END_USER_STATS_RXPCU_CLASSIFICATION_DETAILS_FILTER_PASS_MPDUS_FCS_OK_LSB 1
  229. #define RX_PPDU_END_USER_STATS_RXPCU_CLASSIFICATION_DETAILS_FILTER_PASS_MPDUS_FCS_OK_MSB 1
  230. #define RX_PPDU_END_USER_STATS_RXPCU_CLASSIFICATION_DETAILS_FILTER_PASS_MPDUS_FCS_OK_MASK 0x0000000000000002
  231. /* Description MONITOR_DIRECT_MPDUS
  232. When set, at least one Monitor Direct MPDU has been received.
  233. FCS might or might not have been passing
  234. For MU UL, in TLVs RX_PPDU_END and RX_PPDU_END_STATUS_DONE,
  235. this field is the "OR of all the users.
  236. <legal all>
  237. */
  238. #define RX_PPDU_END_USER_STATS_RXPCU_CLASSIFICATION_DETAILS_MONITOR_DIRECT_MPDUS_OFFSET 0x0000000000000000
  239. #define RX_PPDU_END_USER_STATS_RXPCU_CLASSIFICATION_DETAILS_MONITOR_DIRECT_MPDUS_LSB 2
  240. #define RX_PPDU_END_USER_STATS_RXPCU_CLASSIFICATION_DETAILS_MONITOR_DIRECT_MPDUS_MSB 2
  241. #define RX_PPDU_END_USER_STATS_RXPCU_CLASSIFICATION_DETAILS_MONITOR_DIRECT_MPDUS_MASK 0x0000000000000004
  242. /* Description MONITOR_DIRECT_MPDUS_FCS_OK
  243. When set, at least one Monitor Direct MPDU has been received
  244. that has a correct FCS.
  245. For MU UL, in TLVs RX_PPDU_END and RX_PPDU_END_STATUS_DONE,
  246. this field is the "OR of all the users.
  247. <legal all>
  248. */
  249. #define RX_PPDU_END_USER_STATS_RXPCU_CLASSIFICATION_DETAILS_MONITOR_DIRECT_MPDUS_FCS_OK_OFFSET 0x0000000000000000
  250. #define RX_PPDU_END_USER_STATS_RXPCU_CLASSIFICATION_DETAILS_MONITOR_DIRECT_MPDUS_FCS_OK_LSB 3
  251. #define RX_PPDU_END_USER_STATS_RXPCU_CLASSIFICATION_DETAILS_MONITOR_DIRECT_MPDUS_FCS_OK_MSB 3
  252. #define RX_PPDU_END_USER_STATS_RXPCU_CLASSIFICATION_DETAILS_MONITOR_DIRECT_MPDUS_FCS_OK_MASK 0x0000000000000008
  253. /* Description MONITOR_OTHER_MPDUS
  254. When set, at least one Monitor Direct MPDU has been received.
  255. FCS might or might not have been passing.
  256. For MU UL, in TLVs RX_PPDU_END and RX_PPDU_END_STATUS_DONE,
  257. this field is the "OR of all the users.
  258. <legal all>
  259. */
  260. #define RX_PPDU_END_USER_STATS_RXPCU_CLASSIFICATION_DETAILS_MONITOR_OTHER_MPDUS_OFFSET 0x0000000000000000
  261. #define RX_PPDU_END_USER_STATS_RXPCU_CLASSIFICATION_DETAILS_MONITOR_OTHER_MPDUS_LSB 4
  262. #define RX_PPDU_END_USER_STATS_RXPCU_CLASSIFICATION_DETAILS_MONITOR_OTHER_MPDUS_MSB 4
  263. #define RX_PPDU_END_USER_STATS_RXPCU_CLASSIFICATION_DETAILS_MONITOR_OTHER_MPDUS_MASK 0x0000000000000010
  264. /* Description MONITOR_OTHER_MPDUS_FCS_OK
  265. When set, at least one Monitor Direct MPDU has been received
  266. that has a correct FCS.
  267. For MU UL, in TLVs RX_PPDU_END and RX_PPDU_END_STATUS_DONE,
  268. this field is the "OR of all the users.
  269. <legal all>
  270. */
  271. #define RX_PPDU_END_USER_STATS_RXPCU_CLASSIFICATION_DETAILS_MONITOR_OTHER_MPDUS_FCS_OK_OFFSET 0x0000000000000000
  272. #define RX_PPDU_END_USER_STATS_RXPCU_CLASSIFICATION_DETAILS_MONITOR_OTHER_MPDUS_FCS_OK_LSB 5
  273. #define RX_PPDU_END_USER_STATS_RXPCU_CLASSIFICATION_DETAILS_MONITOR_OTHER_MPDUS_FCS_OK_MSB 5
  274. #define RX_PPDU_END_USER_STATS_RXPCU_CLASSIFICATION_DETAILS_MONITOR_OTHER_MPDUS_FCS_OK_MASK 0x0000000000000020
  275. /* Description PHYRX_ABORT_RECEIVED
  276. When set, PPDU reception was aborted by the PHY
  277. <legal all>
  278. */
  279. #define RX_PPDU_END_USER_STATS_RXPCU_CLASSIFICATION_DETAILS_PHYRX_ABORT_RECEIVED_OFFSET 0x0000000000000000
  280. #define RX_PPDU_END_USER_STATS_RXPCU_CLASSIFICATION_DETAILS_PHYRX_ABORT_RECEIVED_LSB 6
  281. #define RX_PPDU_END_USER_STATS_RXPCU_CLASSIFICATION_DETAILS_PHYRX_ABORT_RECEIVED_MSB 6
  282. #define RX_PPDU_END_USER_STATS_RXPCU_CLASSIFICATION_DETAILS_PHYRX_ABORT_RECEIVED_MASK 0x0000000000000040
  283. /* Description FILTER_PASS_MONITOR_OVRD_MPDUS
  284. When set, at least one 'Filter Pass Monitor Override' MPDU
  285. has been received. FCS might or might not have been passing.
  286. For MU UL, in TLVs RX_PPDU_END and RX_PPDU_END_STATUS_DONE,
  287. this field is the "OR of all the users.
  288. <legal all>
  289. */
  290. #define RX_PPDU_END_USER_STATS_RXPCU_CLASSIFICATION_DETAILS_FILTER_PASS_MONITOR_OVRD_MPDUS_OFFSET 0x0000000000000000
  291. #define RX_PPDU_END_USER_STATS_RXPCU_CLASSIFICATION_DETAILS_FILTER_PASS_MONITOR_OVRD_MPDUS_LSB 7
  292. #define RX_PPDU_END_USER_STATS_RXPCU_CLASSIFICATION_DETAILS_FILTER_PASS_MONITOR_OVRD_MPDUS_MSB 7
  293. #define RX_PPDU_END_USER_STATS_RXPCU_CLASSIFICATION_DETAILS_FILTER_PASS_MONITOR_OVRD_MPDUS_MASK 0x0000000000000080
  294. /* Description FILTER_PASS_MONITOR_OVRD_MPDUS_FCS_OK
  295. When set, at least one 'Filter Pass Monitor Override' MPDU
  296. has been received that has a correct FCS.
  297. For MU UL, in TLVs RX_PPDU_END and RX_PPDU_END_STATUS_DONE,
  298. this field is the "OR of all the users.
  299. <legal all>
  300. */
  301. #define RX_PPDU_END_USER_STATS_RXPCU_CLASSIFICATION_DETAILS_FILTER_PASS_MONITOR_OVRD_MPDUS_FCS_OK_OFFSET 0x0000000000000000
  302. #define RX_PPDU_END_USER_STATS_RXPCU_CLASSIFICATION_DETAILS_FILTER_PASS_MONITOR_OVRD_MPDUS_FCS_OK_LSB 8
  303. #define RX_PPDU_END_USER_STATS_RXPCU_CLASSIFICATION_DETAILS_FILTER_PASS_MONITOR_OVRD_MPDUS_FCS_OK_MSB 8
  304. #define RX_PPDU_END_USER_STATS_RXPCU_CLASSIFICATION_DETAILS_FILTER_PASS_MONITOR_OVRD_MPDUS_FCS_OK_MASK 0x0000000000000100
  305. /* Description RESERVED_0
  306. <legal 0>
  307. */
  308. #define RX_PPDU_END_USER_STATS_RXPCU_CLASSIFICATION_DETAILS_RESERVED_0_OFFSET 0x0000000000000000
  309. #define RX_PPDU_END_USER_STATS_RXPCU_CLASSIFICATION_DETAILS_RESERVED_0_LSB 9
  310. #define RX_PPDU_END_USER_STATS_RXPCU_CLASSIFICATION_DETAILS_RESERVED_0_MSB 15
  311. #define RX_PPDU_END_USER_STATS_RXPCU_CLASSIFICATION_DETAILS_RESERVED_0_MASK 0x000000000000fe00
  312. /* Description PHY_PPDU_ID
  313. A ppdu counter value that PHY increments for every PPDU
  314. received. The counter value wraps around
  315. <legal all>
  316. */
  317. #define RX_PPDU_END_USER_STATS_RXPCU_CLASSIFICATION_DETAILS_PHY_PPDU_ID_OFFSET 0x0000000000000000
  318. #define RX_PPDU_END_USER_STATS_RXPCU_CLASSIFICATION_DETAILS_PHY_PPDU_ID_LSB 16
  319. #define RX_PPDU_END_USER_STATS_RXPCU_CLASSIFICATION_DETAILS_PHY_PPDU_ID_MSB 31
  320. #define RX_PPDU_END_USER_STATS_RXPCU_CLASSIFICATION_DETAILS_PHY_PPDU_ID_MASK 0x00000000ffff0000
  321. /* Description STA_FULL_AID
  322. Consumer: FW
  323. Producer: RXPCU
  324. The full AID of this station.
  325. <legal all>
  326. */
  327. #define RX_PPDU_END_USER_STATS_STA_FULL_AID_OFFSET 0x0000000000000000
  328. #define RX_PPDU_END_USER_STATS_STA_FULL_AID_LSB 32
  329. #define RX_PPDU_END_USER_STATS_STA_FULL_AID_MSB 44
  330. #define RX_PPDU_END_USER_STATS_STA_FULL_AID_MASK 0x00001fff00000000
  331. /* Description MCS
  332. MCS of the received frame
  333. For details, refer to MCS_TYPE description
  334. Note: This is "rate" in case of 11a/11b
  335. <legal all>
  336. */
  337. #define RX_PPDU_END_USER_STATS_MCS_OFFSET 0x0000000000000000
  338. #define RX_PPDU_END_USER_STATS_MCS_LSB 45
  339. #define RX_PPDU_END_USER_STATS_MCS_MSB 48
  340. #define RX_PPDU_END_USER_STATS_MCS_MASK 0x0001e00000000000
  341. /* Description NSS
  342. Number of spatial streams.
  343. NOTE: RXPCU derives this from the 'Mimo_ss_bitmap'
  344. <enum 0 1_spatial_stream>Single spatial stream
  345. <enum 1 2_spatial_streams>2 spatial streams
  346. <enum 2 3_spatial_streams>3 spatial streams
  347. <enum 3 4_spatial_streams>4 spatial streams
  348. <enum 4 5_spatial_streams>5 spatial streams
  349. <enum 5 6_spatial_streams>6 spatial streams
  350. <enum 6 7_spatial_streams>7 spatial streams
  351. <enum 7 8_spatial_streams>8 spatial streams
  352. */
  353. #define RX_PPDU_END_USER_STATS_NSS_OFFSET 0x0000000000000000
  354. #define RX_PPDU_END_USER_STATS_NSS_LSB 49
  355. #define RX_PPDU_END_USER_STATS_NSS_MSB 51
  356. #define RX_PPDU_END_USER_STATS_NSS_MASK 0x000e000000000000
  357. /* Description EXPECTED_RESPONSE_ACK_OR_BA
  358. When set, it indicates an Ack or BA matching 'EXPECTED_RESPONSE'
  359. from TXPCU
  360. */
  361. #define RX_PPDU_END_USER_STATS_EXPECTED_RESPONSE_ACK_OR_BA_OFFSET 0x0000000000000000
  362. #define RX_PPDU_END_USER_STATS_EXPECTED_RESPONSE_ACK_OR_BA_LSB 52
  363. #define RX_PPDU_END_USER_STATS_EXPECTED_RESPONSE_ACK_OR_BA_MSB 52
  364. #define RX_PPDU_END_USER_STATS_EXPECTED_RESPONSE_ACK_OR_BA_MASK 0x0010000000000000
  365. /* Description RESERVED_1A
  366. <legal 0>
  367. */
  368. #define RX_PPDU_END_USER_STATS_RESERVED_1A_OFFSET 0x0000000000000000
  369. #define RX_PPDU_END_USER_STATS_RESERVED_1A_LSB 53
  370. #define RX_PPDU_END_USER_STATS_RESERVED_1A_MSB 63
  371. #define RX_PPDU_END_USER_STATS_RESERVED_1A_MASK 0xffe0000000000000
  372. /* Description SW_PEER_ID
  373. This field indicates a unique peer identifier, set from
  374. the field 'sw_peer_id' in the AST entry corresponding to
  375. this MPDU. It is provided by RXPCU.
  376. A value of 0xFFFF indicates no AST entry was found or no
  377. AST search was performed.
  378. <legal all>
  379. */
  380. #define RX_PPDU_END_USER_STATS_SW_PEER_ID_OFFSET 0x0000000000000008
  381. #define RX_PPDU_END_USER_STATS_SW_PEER_ID_LSB 0
  382. #define RX_PPDU_END_USER_STATS_SW_PEER_ID_MSB 15
  383. #define RX_PPDU_END_USER_STATS_SW_PEER_ID_MASK 0x000000000000ffff
  384. /* Description MPDU_CNT_FCS_ERR
  385. The number of MPDUs received from this STA in this PPDU
  386. with FCS errors
  387. <legal all>
  388. */
  389. #define RX_PPDU_END_USER_STATS_MPDU_CNT_FCS_ERR_OFFSET 0x0000000000000008
  390. #define RX_PPDU_END_USER_STATS_MPDU_CNT_FCS_ERR_LSB 16
  391. #define RX_PPDU_END_USER_STATS_MPDU_CNT_FCS_ERR_MSB 26
  392. #define RX_PPDU_END_USER_STATS_MPDU_CNT_FCS_ERR_MASK 0x0000000007ff0000
  393. /* Description SW2RXDMA0_BUF_SOURCE_USED
  394. Field filled in by RXDMA
  395. When set, RXDMA has used the sw2rxdma0 buffer ring as source
  396. for at least one of the frames in this PPDU.
  397. */
  398. #define RX_PPDU_END_USER_STATS_SW2RXDMA0_BUF_SOURCE_USED_OFFSET 0x0000000000000008
  399. #define RX_PPDU_END_USER_STATS_SW2RXDMA0_BUF_SOURCE_USED_LSB 27
  400. #define RX_PPDU_END_USER_STATS_SW2RXDMA0_BUF_SOURCE_USED_MSB 27
  401. #define RX_PPDU_END_USER_STATS_SW2RXDMA0_BUF_SOURCE_USED_MASK 0x0000000008000000
  402. /* Description FW2RXDMA_PMAC0_BUF_SOURCE_USED
  403. Field filled in by RXDMA
  404. When set, RXDMA has used the fw2rxdma buffer ring for PMAC0
  405. as source for at least one of the frames in this PPDU.
  406. */
  407. #define RX_PPDU_END_USER_STATS_FW2RXDMA_PMAC0_BUF_SOURCE_USED_OFFSET 0x0000000000000008
  408. #define RX_PPDU_END_USER_STATS_FW2RXDMA_PMAC0_BUF_SOURCE_USED_LSB 28
  409. #define RX_PPDU_END_USER_STATS_FW2RXDMA_PMAC0_BUF_SOURCE_USED_MSB 28
  410. #define RX_PPDU_END_USER_STATS_FW2RXDMA_PMAC0_BUF_SOURCE_USED_MASK 0x0000000010000000
  411. /* Description SW2RXDMA1_BUF_SOURCE_USED
  412. Field filled in by RXDMA
  413. When set, RXDMA has used the sw2rxdma1 buffer ring as source
  414. for at least one of the frames in this PPDU.
  415. */
  416. #define RX_PPDU_END_USER_STATS_SW2RXDMA1_BUF_SOURCE_USED_OFFSET 0x0000000000000008
  417. #define RX_PPDU_END_USER_STATS_SW2RXDMA1_BUF_SOURCE_USED_LSB 29
  418. #define RX_PPDU_END_USER_STATS_SW2RXDMA1_BUF_SOURCE_USED_MSB 29
  419. #define RX_PPDU_END_USER_STATS_SW2RXDMA1_BUF_SOURCE_USED_MASK 0x0000000020000000
  420. /* Description SW2RXDMA_EXCEPTION_BUF_SOURCE_USED
  421. Field filled in by RXDMA
  422. When set, RXDMA has used the sw2rxdma_exception buffer ring
  423. as source for at least one of the frames in this PPDU.
  424. */
  425. #define RX_PPDU_END_USER_STATS_SW2RXDMA_EXCEPTION_BUF_SOURCE_USED_OFFSET 0x0000000000000008
  426. #define RX_PPDU_END_USER_STATS_SW2RXDMA_EXCEPTION_BUF_SOURCE_USED_LSB 30
  427. #define RX_PPDU_END_USER_STATS_SW2RXDMA_EXCEPTION_BUF_SOURCE_USED_MSB 30
  428. #define RX_PPDU_END_USER_STATS_SW2RXDMA_EXCEPTION_BUF_SOURCE_USED_MASK 0x0000000040000000
  429. /* Description FW2RXDMA_PMAC1_BUF_SOURCE_USED
  430. Field filled in by RXDMA
  431. When set, RXDMA has used the fw2rxdma buffer ring for PMAC1
  432. as source for at least one of the frames in this PPDU.
  433. */
  434. #define RX_PPDU_END_USER_STATS_FW2RXDMA_PMAC1_BUF_SOURCE_USED_OFFSET 0x0000000000000008
  435. #define RX_PPDU_END_USER_STATS_FW2RXDMA_PMAC1_BUF_SOURCE_USED_LSB 31
  436. #define RX_PPDU_END_USER_STATS_FW2RXDMA_PMAC1_BUF_SOURCE_USED_MSB 31
  437. #define RX_PPDU_END_USER_STATS_FW2RXDMA_PMAC1_BUF_SOURCE_USED_MASK 0x0000000080000000
  438. /* Description MPDU_CNT_FCS_OK
  439. The number of MPDUs received from this STA in this PPDU
  440. with correct FCS
  441. <legal all>
  442. */
  443. #define RX_PPDU_END_USER_STATS_MPDU_CNT_FCS_OK_OFFSET 0x0000000000000008
  444. #define RX_PPDU_END_USER_STATS_MPDU_CNT_FCS_OK_LSB 32
  445. #define RX_PPDU_END_USER_STATS_MPDU_CNT_FCS_OK_MSB 42
  446. #define RX_PPDU_END_USER_STATS_MPDU_CNT_FCS_OK_MASK 0x000007ff00000000
  447. /* Description FRAME_CONTROL_INFO_VALID
  448. When set, the frame_control_info field contains valid information
  449. <legal all>
  450. */
  451. #define RX_PPDU_END_USER_STATS_FRAME_CONTROL_INFO_VALID_OFFSET 0x0000000000000008
  452. #define RX_PPDU_END_USER_STATS_FRAME_CONTROL_INFO_VALID_LSB 43
  453. #define RX_PPDU_END_USER_STATS_FRAME_CONTROL_INFO_VALID_MSB 43
  454. #define RX_PPDU_END_USER_STATS_FRAME_CONTROL_INFO_VALID_MASK 0x0000080000000000
  455. /* Description QOS_CONTROL_INFO_VALID
  456. When set, the QoS_control_info field contains valid information
  457. <legal all>
  458. */
  459. #define RX_PPDU_END_USER_STATS_QOS_CONTROL_INFO_VALID_OFFSET 0x0000000000000008
  460. #define RX_PPDU_END_USER_STATS_QOS_CONTROL_INFO_VALID_LSB 44
  461. #define RX_PPDU_END_USER_STATS_QOS_CONTROL_INFO_VALID_MSB 44
  462. #define RX_PPDU_END_USER_STATS_QOS_CONTROL_INFO_VALID_MASK 0x0000100000000000
  463. /* Description HT_CONTROL_INFO_VALID
  464. When set, the HT_control_field contains valid information
  465. <legal all>
  466. */
  467. #define RX_PPDU_END_USER_STATS_HT_CONTROL_INFO_VALID_OFFSET 0x0000000000000008
  468. #define RX_PPDU_END_USER_STATS_HT_CONTROL_INFO_VALID_LSB 45
  469. #define RX_PPDU_END_USER_STATS_HT_CONTROL_INFO_VALID_MSB 45
  470. #define RX_PPDU_END_USER_STATS_HT_CONTROL_INFO_VALID_MASK 0x0000200000000000
  471. /* Description DATA_SEQUENCE_CONTROL_INFO_VALID
  472. When set, the First_data_seq_ctrl field contains valid information
  473. <legal all>
  474. */
  475. #define RX_PPDU_END_USER_STATS_DATA_SEQUENCE_CONTROL_INFO_VALID_OFFSET 0x0000000000000008
  476. #define RX_PPDU_END_USER_STATS_DATA_SEQUENCE_CONTROL_INFO_VALID_LSB 46
  477. #define RX_PPDU_END_USER_STATS_DATA_SEQUENCE_CONTROL_INFO_VALID_MSB 46
  478. #define RX_PPDU_END_USER_STATS_DATA_SEQUENCE_CONTROL_INFO_VALID_MASK 0x0000400000000000
  479. /* Description HT_CONTROL_INFO_NULL_VALID
  480. When set, the HT_control_NULL_field contains valid information
  481. <legal all>
  482. */
  483. #define RX_PPDU_END_USER_STATS_HT_CONTROL_INFO_NULL_VALID_OFFSET 0x0000000000000008
  484. #define RX_PPDU_END_USER_STATS_HT_CONTROL_INFO_NULL_VALID_LSB 47
  485. #define RX_PPDU_END_USER_STATS_HT_CONTROL_INFO_NULL_VALID_MSB 47
  486. #define RX_PPDU_END_USER_STATS_HT_CONTROL_INFO_NULL_VALID_MASK 0x0000800000000000
  487. /* Description RXDMA2FW_PMAC1_RING_USED
  488. Field filled in by RXDMA
  489. Set when at least one frame during this PPDU got pushed
  490. to this ring by RXDMA
  491. */
  492. #define RX_PPDU_END_USER_STATS_RXDMA2FW_PMAC1_RING_USED_OFFSET 0x0000000000000008
  493. #define RX_PPDU_END_USER_STATS_RXDMA2FW_PMAC1_RING_USED_LSB 48
  494. #define RX_PPDU_END_USER_STATS_RXDMA2FW_PMAC1_RING_USED_MSB 48
  495. #define RX_PPDU_END_USER_STATS_RXDMA2FW_PMAC1_RING_USED_MASK 0x0001000000000000
  496. /* Description RXDMA2REO_RING_USED
  497. Field filled in by RXDMA
  498. Set when at least one frame during this PPDU got pushed
  499. to this ring by RXDMA
  500. */
  501. #define RX_PPDU_END_USER_STATS_RXDMA2REO_RING_USED_OFFSET 0x0000000000000008
  502. #define RX_PPDU_END_USER_STATS_RXDMA2REO_RING_USED_LSB 49
  503. #define RX_PPDU_END_USER_STATS_RXDMA2REO_RING_USED_MSB 49
  504. #define RX_PPDU_END_USER_STATS_RXDMA2REO_RING_USED_MASK 0x0002000000000000
  505. /* Description RXDMA2FW_PMAC0_RING_USED
  506. Field filled in by RXDMA
  507. Set when at least one frame during this PPDU got pushed
  508. to this ring by RXDMA
  509. */
  510. #define RX_PPDU_END_USER_STATS_RXDMA2FW_PMAC0_RING_USED_OFFSET 0x0000000000000008
  511. #define RX_PPDU_END_USER_STATS_RXDMA2FW_PMAC0_RING_USED_LSB 50
  512. #define RX_PPDU_END_USER_STATS_RXDMA2FW_PMAC0_RING_USED_MSB 50
  513. #define RX_PPDU_END_USER_STATS_RXDMA2FW_PMAC0_RING_USED_MASK 0x0004000000000000
  514. /* Description RXDMA2SW_RING_USED
  515. Field filled in by RXDMA
  516. Set when at least one frame during this PPDU got pushed
  517. to this ring by RXDMA
  518. */
  519. #define RX_PPDU_END_USER_STATS_RXDMA2SW_RING_USED_OFFSET 0x0000000000000008
  520. #define RX_PPDU_END_USER_STATS_RXDMA2SW_RING_USED_LSB 51
  521. #define RX_PPDU_END_USER_STATS_RXDMA2SW_RING_USED_MSB 51
  522. #define RX_PPDU_END_USER_STATS_RXDMA2SW_RING_USED_MASK 0x0008000000000000
  523. /* Description RXDMA_RELEASE_RING_USED
  524. Field filled in by RXDMA
  525. Set when at least one frame during this PPDU got pushed
  526. to this ring by RXDMA
  527. */
  528. #define RX_PPDU_END_USER_STATS_RXDMA_RELEASE_RING_USED_OFFSET 0x0000000000000008
  529. #define RX_PPDU_END_USER_STATS_RXDMA_RELEASE_RING_USED_LSB 52
  530. #define RX_PPDU_END_USER_STATS_RXDMA_RELEASE_RING_USED_MSB 52
  531. #define RX_PPDU_END_USER_STATS_RXDMA_RELEASE_RING_USED_MASK 0x0010000000000000
  532. /* Description HT_CONTROL_FIELD_PKT_TYPE
  533. Field only valid when HT_control_info_valid or HT_control_info_NULL_valid
  534. is set.
  535. Indicates what the PHY receive type was for receiving this
  536. frame. Can help determine if the HT_CONTROL field shall
  537. be interpreted as HT/VHT or HE.
  538. NOTE: later on in the 11ax IEEE spec a bit within the HT
  539. control field was introduced that explicitly indicated
  540. how to interpret the HT control field.... As HT, VHT, or
  541. HE.
  542. <enum 0 dot11a>802.11a PPDU type
  543. <enum 1 dot11b>802.11b PPDU type
  544. <enum 2 dot11n_mm>802.11n Mixed Mode PPDU type
  545. <enum 3 dot11ac>802.11ac PPDU type
  546. <enum 4 dot11ax>802.11ax PPDU type
  547. <enum 5 dot11ba>802.11ba (WUR) PPDU type
  548. <enum 6 dot11be>802.11be PPDU type
  549. <enum 7 dot11az>802.11az (ranging) PPDU type
  550. <enum 8 dot11n_gf>802.11n Green Field PPDU type (unsupported
  551. & aborted)
  552. */
  553. #define RX_PPDU_END_USER_STATS_HT_CONTROL_FIELD_PKT_TYPE_OFFSET 0x0000000000000008
  554. #define RX_PPDU_END_USER_STATS_HT_CONTROL_FIELD_PKT_TYPE_LSB 53
  555. #define RX_PPDU_END_USER_STATS_HT_CONTROL_FIELD_PKT_TYPE_MSB 56
  556. #define RX_PPDU_END_USER_STATS_HT_CONTROL_FIELD_PKT_TYPE_MASK 0x01e0000000000000
  557. /* Description RXDMA2REO_REMOTE0_RING_USED
  558. Field filled in by RXDMA
  559. Set when at least one frame during this PPDU got pushed
  560. to this ring by RXDMA
  561. */
  562. #define RX_PPDU_END_USER_STATS_RXDMA2REO_REMOTE0_RING_USED_OFFSET 0x0000000000000008
  563. #define RX_PPDU_END_USER_STATS_RXDMA2REO_REMOTE0_RING_USED_LSB 57
  564. #define RX_PPDU_END_USER_STATS_RXDMA2REO_REMOTE0_RING_USED_MSB 57
  565. #define RX_PPDU_END_USER_STATS_RXDMA2REO_REMOTE0_RING_USED_MASK 0x0200000000000000
  566. /* Description RXDMA2REO_REMOTE1_RING_USED
  567. Field filled in by RXDMA
  568. Set when at least one frame during this PPDU got pushed
  569. to this ring by RXDMA
  570. */
  571. #define RX_PPDU_END_USER_STATS_RXDMA2REO_REMOTE1_RING_USED_OFFSET 0x0000000000000008
  572. #define RX_PPDU_END_USER_STATS_RXDMA2REO_REMOTE1_RING_USED_LSB 58
  573. #define RX_PPDU_END_USER_STATS_RXDMA2REO_REMOTE1_RING_USED_MSB 58
  574. #define RX_PPDU_END_USER_STATS_RXDMA2REO_REMOTE1_RING_USED_MASK 0x0400000000000000
  575. /* Description RESERVED_3B
  576. <legal 0>
  577. */
  578. #define RX_PPDU_END_USER_STATS_RESERVED_3B_OFFSET 0x0000000000000008
  579. #define RX_PPDU_END_USER_STATS_RESERVED_3B_LSB 59
  580. #define RX_PPDU_END_USER_STATS_RESERVED_3B_MSB 63
  581. #define RX_PPDU_END_USER_STATS_RESERVED_3B_MASK 0xf800000000000000
  582. /* Description AST_INDEX
  583. This field indicates the index of the AST entry corresponding
  584. to this MPDU. It is provided by the GSE module instantiated
  585. in RXPCU.
  586. A value of 0xFFFF indicates an invalid AST index, meaning
  587. that No AST entry was found or NO AST search was performed
  588. <legal all>
  589. */
  590. #define RX_PPDU_END_USER_STATS_AST_INDEX_OFFSET 0x0000000000000010
  591. #define RX_PPDU_END_USER_STATS_AST_INDEX_LSB 0
  592. #define RX_PPDU_END_USER_STATS_AST_INDEX_MSB 15
  593. #define RX_PPDU_END_USER_STATS_AST_INDEX_MASK 0x000000000000ffff
  594. /* Description FRAME_CONTROL_FIELD
  595. Field only valid when Frame_control_info_valid is set.
  596. Last successfully received Frame_control field of data frame
  597. (excluding Data NULL/ QoS Null) for this user
  598. Mainly used to track the PM state of the transmitted device
  599. NOTE: only data frame info is needed, as control and management
  600. frames are already routed to the FW.
  601. <legal all>
  602. */
  603. #define RX_PPDU_END_USER_STATS_FRAME_CONTROL_FIELD_OFFSET 0x0000000000000010
  604. #define RX_PPDU_END_USER_STATS_FRAME_CONTROL_FIELD_LSB 16
  605. #define RX_PPDU_END_USER_STATS_FRAME_CONTROL_FIELD_MSB 31
  606. #define RX_PPDU_END_USER_STATS_FRAME_CONTROL_FIELD_MASK 0x00000000ffff0000
  607. /* Description FIRST_DATA_SEQ_CTRL
  608. Field only valid when Data_sequence_control_info_valid is
  609. set.
  610. Sequence control field of the first data frame (excluding
  611. Data NULL or QoS Data null) received for this user with
  612. correct FCS
  613. NOTE: only data frame info is needed, as control and management
  614. frames are already routed to the FW.
  615. <legal all>
  616. */
  617. #define RX_PPDU_END_USER_STATS_FIRST_DATA_SEQ_CTRL_OFFSET 0x0000000000000010
  618. #define RX_PPDU_END_USER_STATS_FIRST_DATA_SEQ_CTRL_LSB 32
  619. #define RX_PPDU_END_USER_STATS_FIRST_DATA_SEQ_CTRL_MSB 47
  620. #define RX_PPDU_END_USER_STATS_FIRST_DATA_SEQ_CTRL_MASK 0x0000ffff00000000
  621. /* Description QOS_CONTROL_FIELD
  622. Field only valid when QoS_control_info_valid is set.
  623. Last successfully received QoS_control field of data frame
  624. (excluding Data NULL/ QoS Null) for this user
  625. Note that in case of multi TID, this field can only reflect
  626. the last properly received MPDU, and thus can not indicate
  627. all potentially different TIDs that had been received earlier.
  628. There are however per TID fields, that will contain among
  629. other things all buffer status info: See
  630. QoSCtrl_15_8_tid???
  631. <legal all>
  632. */
  633. #define RX_PPDU_END_USER_STATS_QOS_CONTROL_FIELD_OFFSET 0x0000000000000010
  634. #define RX_PPDU_END_USER_STATS_QOS_CONTROL_FIELD_LSB 48
  635. #define RX_PPDU_END_USER_STATS_QOS_CONTROL_FIELD_MSB 63
  636. #define RX_PPDU_END_USER_STATS_QOS_CONTROL_FIELD_MASK 0xffff000000000000
  637. /* Description HT_CONTROL_FIELD
  638. Field only valid when HT_control_info_valid is set.
  639. Last successfully received HT_CONTROL/VHT_CONTROL/HE_CONTROL
  640. field of data frames, excluding QoS Null frames for this
  641. user.
  642. NOTE: HT control fields from QoS Null frames are captured
  643. in field HT_control_NULL_field
  644. <legal all>
  645. */
  646. #define RX_PPDU_END_USER_STATS_HT_CONTROL_FIELD_OFFSET 0x0000000000000018
  647. #define RX_PPDU_END_USER_STATS_HT_CONTROL_FIELD_LSB 0
  648. #define RX_PPDU_END_USER_STATS_HT_CONTROL_FIELD_MSB 31
  649. #define RX_PPDU_END_USER_STATS_HT_CONTROL_FIELD_MASK 0x00000000ffffffff
  650. /* Description FCS_OK_BITMAP_31_0
  651. Bitmap indicates in order of received MPDUs, which MPDUs
  652. had an passing FCS or had an error.
  653. 1: FCS OK
  654. 0: FCS error
  655. <legal all>
  656. */
  657. #define RX_PPDU_END_USER_STATS_FCS_OK_BITMAP_31_0_OFFSET 0x0000000000000018
  658. #define RX_PPDU_END_USER_STATS_FCS_OK_BITMAP_31_0_LSB 32
  659. #define RX_PPDU_END_USER_STATS_FCS_OK_BITMAP_31_0_MSB 63
  660. #define RX_PPDU_END_USER_STATS_FCS_OK_BITMAP_31_0_MASK 0xffffffff00000000
  661. /* Description FCS_OK_BITMAP_63_32
  662. Bitmap indicates in order of received MPDUs, which MPDUs
  663. had an passing FCS or had an error.
  664. 1: FCS OK
  665. 0: FCS error
  666. NOTE: for users 0, 1, 2 and 3, additional bitmap info (up
  667. to 256 bitmap window) is provided in RX_PPDU_END_USER_STATS_EXT
  668. TLV
  669. <legal all>
  670. */
  671. #define RX_PPDU_END_USER_STATS_FCS_OK_BITMAP_63_32_OFFSET 0x0000000000000020
  672. #define RX_PPDU_END_USER_STATS_FCS_OK_BITMAP_63_32_LSB 0
  673. #define RX_PPDU_END_USER_STATS_FCS_OK_BITMAP_63_32_MSB 31
  674. #define RX_PPDU_END_USER_STATS_FCS_OK_BITMAP_63_32_MASK 0x00000000ffffffff
  675. /* Description UDP_MSDU_COUNT
  676. Field filled in by RX OLE
  677. Set to 0 by RXPCU
  678. The number of MSDUs that are part of MPDUs without FCS error,
  679. that contain UDP frames.
  680. <legal all>
  681. */
  682. #define RX_PPDU_END_USER_STATS_UDP_MSDU_COUNT_OFFSET 0x0000000000000020
  683. #define RX_PPDU_END_USER_STATS_UDP_MSDU_COUNT_LSB 32
  684. #define RX_PPDU_END_USER_STATS_UDP_MSDU_COUNT_MSB 47
  685. #define RX_PPDU_END_USER_STATS_UDP_MSDU_COUNT_MASK 0x0000ffff00000000
  686. /* Description TCP_MSDU_COUNT
  687. Field filled in by RX OLE
  688. Set to 0 by RXPCU
  689. The number of MSDUs that are part of MPDUs without FCS error,
  690. that contain TCP frames.
  691. (Note: This does NOT include TCP-ACK)
  692. <legal all>
  693. */
  694. #define RX_PPDU_END_USER_STATS_TCP_MSDU_COUNT_OFFSET 0x0000000000000020
  695. #define RX_PPDU_END_USER_STATS_TCP_MSDU_COUNT_LSB 48
  696. #define RX_PPDU_END_USER_STATS_TCP_MSDU_COUNT_MSB 63
  697. #define RX_PPDU_END_USER_STATS_TCP_MSDU_COUNT_MASK 0xffff000000000000
  698. /* Description OTHER_MSDU_COUNT
  699. Field filled in by RX OLE
  700. Set to 0 by RXPCU
  701. The number of MSDUs that are part of MPDUs without FCS error,
  702. that contain neither UDP or TCP frames.
  703. Includes Management and control frames.
  704. <legal all>
  705. */
  706. #define RX_PPDU_END_USER_STATS_OTHER_MSDU_COUNT_OFFSET 0x0000000000000028
  707. #define RX_PPDU_END_USER_STATS_OTHER_MSDU_COUNT_LSB 0
  708. #define RX_PPDU_END_USER_STATS_OTHER_MSDU_COUNT_MSB 15
  709. #define RX_PPDU_END_USER_STATS_OTHER_MSDU_COUNT_MASK 0x000000000000ffff
  710. /* Description TCP_ACK_MSDU_COUNT
  711. Field filled in by RX OLE
  712. Set to 0 by RXPCU
  713. The number of MSDUs that are part of MPDUs without FCS error,
  714. that contain TCP ack frames.
  715. <legal all>
  716. */
  717. #define RX_PPDU_END_USER_STATS_TCP_ACK_MSDU_COUNT_OFFSET 0x0000000000000028
  718. #define RX_PPDU_END_USER_STATS_TCP_ACK_MSDU_COUNT_LSB 16
  719. #define RX_PPDU_END_USER_STATS_TCP_ACK_MSDU_COUNT_MSB 31
  720. #define RX_PPDU_END_USER_STATS_TCP_ACK_MSDU_COUNT_MASK 0x00000000ffff0000
  721. /* Description SW_RESPONSE_REFERENCE_PTR
  722. Pointer that SW uses to refer back to an expected response
  723. reception. Used for Rate adaptation purposes.
  724. When a reception occurs that is not tied to an expected
  725. response, this field is set to 0x0.
  726. Note: further on in this TLV there is also the field: Sw_response_reference_ptr_ext.
  727. <legal all>
  728. */
  729. #define RX_PPDU_END_USER_STATS_SW_RESPONSE_REFERENCE_PTR_OFFSET 0x0000000000000028
  730. #define RX_PPDU_END_USER_STATS_SW_RESPONSE_REFERENCE_PTR_LSB 32
  731. #define RX_PPDU_END_USER_STATS_SW_RESPONSE_REFERENCE_PTR_MSB 63
  732. #define RX_PPDU_END_USER_STATS_SW_RESPONSE_REFERENCE_PTR_MASK 0xffffffff00000000
  733. /* Description RECEIVED_QOS_DATA_TID_BITMAP
  734. Whenever a frame is received that contains a QoS control
  735. field (that includes QoS Data and/or QoS Null), the bit
  736. in this field that corresponds to the received TID shall
  737. be set.
  738. ...Bitmap[0] = TID0
  739. ...Bitmap[1] = TID1
  740. Etc.
  741. <legal all>
  742. */
  743. #define RX_PPDU_END_USER_STATS_RECEIVED_QOS_DATA_TID_BITMAP_OFFSET 0x0000000000000030
  744. #define RX_PPDU_END_USER_STATS_RECEIVED_QOS_DATA_TID_BITMAP_LSB 0
  745. #define RX_PPDU_END_USER_STATS_RECEIVED_QOS_DATA_TID_BITMAP_MSB 15
  746. #define RX_PPDU_END_USER_STATS_RECEIVED_QOS_DATA_TID_BITMAP_MASK 0x000000000000ffff
  747. /* Description RECEIVED_QOS_DATA_TID_EOSP_BITMAP
  748. Field initialized to 0
  749. For every QoS Data frame that is correctly received, the
  750. EOSP bit of that frame is copied over into the corresponding
  751. TID related field.
  752. Note that this implies that the bits here represent the
  753. EOSP bit status for each TID of the last MPDU received for
  754. that TID.
  755. received TID shall be set.
  756. ...eosp_bitmap[0] = eosp of TID0
  757. ...eosp_bitmap[1] = eosp of TID1
  758. Etc.
  759. <legal all>
  760. */
  761. #define RX_PPDU_END_USER_STATS_RECEIVED_QOS_DATA_TID_EOSP_BITMAP_OFFSET 0x0000000000000030
  762. #define RX_PPDU_END_USER_STATS_RECEIVED_QOS_DATA_TID_EOSP_BITMAP_LSB 16
  763. #define RX_PPDU_END_USER_STATS_RECEIVED_QOS_DATA_TID_EOSP_BITMAP_MSB 31
  764. #define RX_PPDU_END_USER_STATS_RECEIVED_QOS_DATA_TID_EOSP_BITMAP_MASK 0x00000000ffff0000
  765. /* Description QOSCTRL_15_8_TID0
  766. Field only valid when Received_qos_data_tid_bitmap[0] is
  767. set
  768. QoS control field bits 15-8 of the last properly received
  769. MPDU with a QoS control field embedded, with TID == 0
  770. */
  771. #define RX_PPDU_END_USER_STATS_QOSCTRL_15_8_TID0_OFFSET 0x0000000000000030
  772. #define RX_PPDU_END_USER_STATS_QOSCTRL_15_8_TID0_LSB 32
  773. #define RX_PPDU_END_USER_STATS_QOSCTRL_15_8_TID0_MSB 39
  774. #define RX_PPDU_END_USER_STATS_QOSCTRL_15_8_TID0_MASK 0x000000ff00000000
  775. /* Description QOSCTRL_15_8_TID1
  776. Field only valid when Received_qos_data_tid_bitmap[1] is
  777. set
  778. QoS control field bits 15-8 of the last properly received
  779. MPDU with a QoS control field embedded, with TID == 1
  780. */
  781. #define RX_PPDU_END_USER_STATS_QOSCTRL_15_8_TID1_OFFSET 0x0000000000000030
  782. #define RX_PPDU_END_USER_STATS_QOSCTRL_15_8_TID1_LSB 40
  783. #define RX_PPDU_END_USER_STATS_QOSCTRL_15_8_TID1_MSB 47
  784. #define RX_PPDU_END_USER_STATS_QOSCTRL_15_8_TID1_MASK 0x0000ff0000000000
  785. /* Description QOSCTRL_15_8_TID2
  786. Field only valid when Received_qos_data_tid_bitmap[2] is
  787. set
  788. QoS control field bits 15-8 of the last properly received
  789. MPDU with a QoS control field embedded, with TID == 2
  790. */
  791. #define RX_PPDU_END_USER_STATS_QOSCTRL_15_8_TID2_OFFSET 0x0000000000000030
  792. #define RX_PPDU_END_USER_STATS_QOSCTRL_15_8_TID2_LSB 48
  793. #define RX_PPDU_END_USER_STATS_QOSCTRL_15_8_TID2_MSB 55
  794. #define RX_PPDU_END_USER_STATS_QOSCTRL_15_8_TID2_MASK 0x00ff000000000000
  795. /* Description QOSCTRL_15_8_TID3
  796. Field only valid when Received_qos_data_tid_bitmap[3] is
  797. set
  798. QoS control field bits 15-8 of the last properly received
  799. MPDU with a QoS control field embedded, with TID == 3
  800. */
  801. #define RX_PPDU_END_USER_STATS_QOSCTRL_15_8_TID3_OFFSET 0x0000000000000030
  802. #define RX_PPDU_END_USER_STATS_QOSCTRL_15_8_TID3_LSB 56
  803. #define RX_PPDU_END_USER_STATS_QOSCTRL_15_8_TID3_MSB 63
  804. #define RX_PPDU_END_USER_STATS_QOSCTRL_15_8_TID3_MASK 0xff00000000000000
  805. /* Description QOSCTRL_15_8_TID4
  806. Field only valid when Received_qos_data_tid_bitmap[4] is
  807. set
  808. QoS control field bits 15-8 of the last properly received
  809. MPDU with a QoS control field embedded, with TID == 4
  810. */
  811. #define RX_PPDU_END_USER_STATS_QOSCTRL_15_8_TID4_OFFSET 0x0000000000000038
  812. #define RX_PPDU_END_USER_STATS_QOSCTRL_15_8_TID4_LSB 0
  813. #define RX_PPDU_END_USER_STATS_QOSCTRL_15_8_TID4_MSB 7
  814. #define RX_PPDU_END_USER_STATS_QOSCTRL_15_8_TID4_MASK 0x00000000000000ff
  815. /* Description QOSCTRL_15_8_TID5
  816. Field only valid when Received_qos_data_tid_bitmap[5] is
  817. set
  818. QoS control field bits 15-8 of the last properly received
  819. MPDU with a QoS control field embedded, with TID == 5
  820. */
  821. #define RX_PPDU_END_USER_STATS_QOSCTRL_15_8_TID5_OFFSET 0x0000000000000038
  822. #define RX_PPDU_END_USER_STATS_QOSCTRL_15_8_TID5_LSB 8
  823. #define RX_PPDU_END_USER_STATS_QOSCTRL_15_8_TID5_MSB 15
  824. #define RX_PPDU_END_USER_STATS_QOSCTRL_15_8_TID5_MASK 0x000000000000ff00
  825. /* Description QOSCTRL_15_8_TID6
  826. Field only valid when Received_qos_data_tid_bitmap[6] is
  827. set
  828. QoS control field bits 15-8 of the last properly received
  829. MPDU with a QoS control field embedded, with TID == 6
  830. */
  831. #define RX_PPDU_END_USER_STATS_QOSCTRL_15_8_TID6_OFFSET 0x0000000000000038
  832. #define RX_PPDU_END_USER_STATS_QOSCTRL_15_8_TID6_LSB 16
  833. #define RX_PPDU_END_USER_STATS_QOSCTRL_15_8_TID6_MSB 23
  834. #define RX_PPDU_END_USER_STATS_QOSCTRL_15_8_TID6_MASK 0x0000000000ff0000
  835. /* Description QOSCTRL_15_8_TID7
  836. Field only valid when Received_qos_data_tid_bitmap[7] is
  837. set
  838. QoS control field bits 15-8 of the last properly received
  839. MPDU with a QoS control field embedded, with TID == 7
  840. */
  841. #define RX_PPDU_END_USER_STATS_QOSCTRL_15_8_TID7_OFFSET 0x0000000000000038
  842. #define RX_PPDU_END_USER_STATS_QOSCTRL_15_8_TID7_LSB 24
  843. #define RX_PPDU_END_USER_STATS_QOSCTRL_15_8_TID7_MSB 31
  844. #define RX_PPDU_END_USER_STATS_QOSCTRL_15_8_TID7_MASK 0x00000000ff000000
  845. /* Description QOSCTRL_15_8_TID8
  846. Field only valid when Received_qos_data_tid_bitmap[8] is
  847. set
  848. QoS control field bits 15-8 of the last properly received
  849. MPDU with a QoS control field embedded, with TID == 8
  850. */
  851. #define RX_PPDU_END_USER_STATS_QOSCTRL_15_8_TID8_OFFSET 0x0000000000000038
  852. #define RX_PPDU_END_USER_STATS_QOSCTRL_15_8_TID8_LSB 32
  853. #define RX_PPDU_END_USER_STATS_QOSCTRL_15_8_TID8_MSB 39
  854. #define RX_PPDU_END_USER_STATS_QOSCTRL_15_8_TID8_MASK 0x000000ff00000000
  855. /* Description QOSCTRL_15_8_TID9
  856. Field only valid when Received_qos_data_tid_bitmap[9] is
  857. set
  858. QoS control field bits 15-8 of the last properly received
  859. MPDU with a QoS control field embedded, with TID == 9
  860. */
  861. #define RX_PPDU_END_USER_STATS_QOSCTRL_15_8_TID9_OFFSET 0x0000000000000038
  862. #define RX_PPDU_END_USER_STATS_QOSCTRL_15_8_TID9_LSB 40
  863. #define RX_PPDU_END_USER_STATS_QOSCTRL_15_8_TID9_MSB 47
  864. #define RX_PPDU_END_USER_STATS_QOSCTRL_15_8_TID9_MASK 0x0000ff0000000000
  865. /* Description QOSCTRL_15_8_TID10
  866. Field only valid when Received_qos_data_tid_bitmap[10] is
  867. set
  868. QoS control field bits 15-8 of the last properly received
  869. MPDU with a QoS control field embedded, with TID == 10
  870. */
  871. #define RX_PPDU_END_USER_STATS_QOSCTRL_15_8_TID10_OFFSET 0x0000000000000038
  872. #define RX_PPDU_END_USER_STATS_QOSCTRL_15_8_TID10_LSB 48
  873. #define RX_PPDU_END_USER_STATS_QOSCTRL_15_8_TID10_MSB 55
  874. #define RX_PPDU_END_USER_STATS_QOSCTRL_15_8_TID10_MASK 0x00ff000000000000
  875. /* Description QOSCTRL_15_8_TID11
  876. Field only valid when Received_qos_data_tid_bitmap[11] is
  877. set
  878. QoS control field bits 15-8 of the last properly received
  879. MPDU with a QoS control field embedded, with TID == 11
  880. */
  881. #define RX_PPDU_END_USER_STATS_QOSCTRL_15_8_TID11_OFFSET 0x0000000000000038
  882. #define RX_PPDU_END_USER_STATS_QOSCTRL_15_8_TID11_LSB 56
  883. #define RX_PPDU_END_USER_STATS_QOSCTRL_15_8_TID11_MSB 63
  884. #define RX_PPDU_END_USER_STATS_QOSCTRL_15_8_TID11_MASK 0xff00000000000000
  885. /* Description QOSCTRL_15_8_TID12
  886. Field only valid when Received_qos_data_tid_bitmap[12] is
  887. set
  888. QoS control field bits 15-8 of the last properly received
  889. MPDU with a QoS control field embedded, with TID == 12
  890. */
  891. #define RX_PPDU_END_USER_STATS_QOSCTRL_15_8_TID12_OFFSET 0x0000000000000040
  892. #define RX_PPDU_END_USER_STATS_QOSCTRL_15_8_TID12_LSB 0
  893. #define RX_PPDU_END_USER_STATS_QOSCTRL_15_8_TID12_MSB 7
  894. #define RX_PPDU_END_USER_STATS_QOSCTRL_15_8_TID12_MASK 0x00000000000000ff
  895. /* Description QOSCTRL_15_8_TID13
  896. Field only valid when Received_qos_data_tid_bitmap[13] is
  897. set
  898. QoS control field bits 15-8 of the last properly received
  899. MPDU with a QoS control field embedded, with TID == 13
  900. */
  901. #define RX_PPDU_END_USER_STATS_QOSCTRL_15_8_TID13_OFFSET 0x0000000000000040
  902. #define RX_PPDU_END_USER_STATS_QOSCTRL_15_8_TID13_LSB 8
  903. #define RX_PPDU_END_USER_STATS_QOSCTRL_15_8_TID13_MSB 15
  904. #define RX_PPDU_END_USER_STATS_QOSCTRL_15_8_TID13_MASK 0x000000000000ff00
  905. /* Description QOSCTRL_15_8_TID14
  906. Field only valid when Received_qos_data_tid_bitmap[14] is
  907. set
  908. QoS control field bits 15-8 of the last properly received
  909. MPDU with a QoS control field embedded, with TID == 14
  910. */
  911. #define RX_PPDU_END_USER_STATS_QOSCTRL_15_8_TID14_OFFSET 0x0000000000000040
  912. #define RX_PPDU_END_USER_STATS_QOSCTRL_15_8_TID14_LSB 16
  913. #define RX_PPDU_END_USER_STATS_QOSCTRL_15_8_TID14_MSB 23
  914. #define RX_PPDU_END_USER_STATS_QOSCTRL_15_8_TID14_MASK 0x0000000000ff0000
  915. /* Description QOSCTRL_15_8_TID15
  916. Field only valid when Received_qos_data_tid_bitmap[15] is
  917. set
  918. QoS control field bits 15-8 of the last properly received
  919. MPDU with a QoS control field embedded, with TID == 15
  920. */
  921. #define RX_PPDU_END_USER_STATS_QOSCTRL_15_8_TID15_OFFSET 0x0000000000000040
  922. #define RX_PPDU_END_USER_STATS_QOSCTRL_15_8_TID15_LSB 24
  923. #define RX_PPDU_END_USER_STATS_QOSCTRL_15_8_TID15_MSB 31
  924. #define RX_PPDU_END_USER_STATS_QOSCTRL_15_8_TID15_MASK 0x00000000ff000000
  925. /* Description MPDU_OK_BYTE_COUNT
  926. The number of bytes received within an MPDU for this user
  927. with correct FCS. This includes the FCS field
  928. NOTE:
  929. The sum of the four fields.....
  930. Mpdu_ok_byte_count +
  931. mpdu_err_byte_count +
  932. (Ampdu_delim_ok_count x 4) + (Ampdu_delim_err_count x 4)
  933. .....is the total number of bytes that were received for
  934. this user from the PHY.
  935. <legal all>
  936. */
  937. #define RX_PPDU_END_USER_STATS_MPDU_OK_BYTE_COUNT_OFFSET 0x0000000000000040
  938. #define RX_PPDU_END_USER_STATS_MPDU_OK_BYTE_COUNT_LSB 32
  939. #define RX_PPDU_END_USER_STATS_MPDU_OK_BYTE_COUNT_MSB 56
  940. #define RX_PPDU_END_USER_STATS_MPDU_OK_BYTE_COUNT_MASK 0x01ffffff00000000
  941. /* Description AMPDU_DELIM_OK_COUNT_6_0
  942. Number of AMPDU delimiter received with correct structure
  943. LSB 7 bits from this counter
  944. Note that this is a delimiter count and not byte count.
  945. To get to the number of bytes occupied by these delimiters,
  946. multiply this number by 4
  947. <legal all>
  948. */
  949. #define RX_PPDU_END_USER_STATS_AMPDU_DELIM_OK_COUNT_6_0_OFFSET 0x0000000000000040
  950. #define RX_PPDU_END_USER_STATS_AMPDU_DELIM_OK_COUNT_6_0_LSB 57
  951. #define RX_PPDU_END_USER_STATS_AMPDU_DELIM_OK_COUNT_6_0_MSB 63
  952. #define RX_PPDU_END_USER_STATS_AMPDU_DELIM_OK_COUNT_6_0_MASK 0xfe00000000000000
  953. /* Description AMPDU_DELIM_ERR_COUNT
  954. The number of MPDU delimiter errors counted for this user.
  955. Note that this is a delimiter count and not byte count.
  956. To get to the number of bytes occupied by these delimiters,
  957. multiply this number by 4
  958. <legal all>
  959. */
  960. #define RX_PPDU_END_USER_STATS_AMPDU_DELIM_ERR_COUNT_OFFSET 0x0000000000000048
  961. #define RX_PPDU_END_USER_STATS_AMPDU_DELIM_ERR_COUNT_LSB 0
  962. #define RX_PPDU_END_USER_STATS_AMPDU_DELIM_ERR_COUNT_MSB 24
  963. #define RX_PPDU_END_USER_STATS_AMPDU_DELIM_ERR_COUNT_MASK 0x0000000001ffffff
  964. /* Description AMPDU_DELIM_OK_COUNT_13_7
  965. Number of AMPDU delimiters received with correct structure
  966. Bits 13-7 from this counter
  967. Note that this is a delimiter count and not byte count.
  968. To get to the number of bytes occupied by these delimiters,
  969. multiply this number by 4
  970. <legal all>
  971. */
  972. #define RX_PPDU_END_USER_STATS_AMPDU_DELIM_OK_COUNT_13_7_OFFSET 0x0000000000000048
  973. #define RX_PPDU_END_USER_STATS_AMPDU_DELIM_OK_COUNT_13_7_LSB 25
  974. #define RX_PPDU_END_USER_STATS_AMPDU_DELIM_OK_COUNT_13_7_MSB 31
  975. #define RX_PPDU_END_USER_STATS_AMPDU_DELIM_OK_COUNT_13_7_MASK 0x00000000fe000000
  976. /* Description MPDU_ERR_BYTE_COUNT
  977. The number of bytes belonging to MPDUs with an FCS error.
  978. This includes the FCS field.
  979. <legal all>
  980. */
  981. #define RX_PPDU_END_USER_STATS_MPDU_ERR_BYTE_COUNT_OFFSET 0x0000000000000048
  982. #define RX_PPDU_END_USER_STATS_MPDU_ERR_BYTE_COUNT_LSB 32
  983. #define RX_PPDU_END_USER_STATS_MPDU_ERR_BYTE_COUNT_MSB 56
  984. #define RX_PPDU_END_USER_STATS_MPDU_ERR_BYTE_COUNT_MASK 0x01ffffff00000000
  985. /* Description AMPDU_DELIM_OK_COUNT_20_14
  986. Number of AMPDU delimiters received with correct structure
  987. Bits 20-14 from this counter
  988. Note that this is a delimiter count and not byte count.
  989. To get to the number of bytes occupied by these delimiters,
  990. multiply this number by 4
  991. <legal all>
  992. */
  993. #define RX_PPDU_END_USER_STATS_AMPDU_DELIM_OK_COUNT_20_14_OFFSET 0x0000000000000048
  994. #define RX_PPDU_END_USER_STATS_AMPDU_DELIM_OK_COUNT_20_14_LSB 57
  995. #define RX_PPDU_END_USER_STATS_AMPDU_DELIM_OK_COUNT_20_14_MSB 63
  996. #define RX_PPDU_END_USER_STATS_AMPDU_DELIM_OK_COUNT_20_14_MASK 0xfe00000000000000
  997. /* Description NON_CONSECUTIVE_DELIMITER_ERR
  998. The number of times an MPDU delimiter error is detected
  999. that is not immediately preceded by another MPDU delimiter
  1000. also with FCS error.
  1001. The counter saturates at 0xFFFF
  1002. <legal all>
  1003. */
  1004. #define RX_PPDU_END_USER_STATS_NON_CONSECUTIVE_DELIMITER_ERR_OFFSET 0x0000000000000050
  1005. #define RX_PPDU_END_USER_STATS_NON_CONSECUTIVE_DELIMITER_ERR_LSB 0
  1006. #define RX_PPDU_END_USER_STATS_NON_CONSECUTIVE_DELIMITER_ERR_MSB 15
  1007. #define RX_PPDU_END_USER_STATS_NON_CONSECUTIVE_DELIMITER_ERR_MASK 0x000000000000ffff
  1008. /* Description RETRIED_MSDU_COUNT
  1009. Field filled in by RX OLE
  1010. Set to 0 by RXPCU
  1011. The number of MSDUs that are part of MPDUs without FCS error,
  1012. that have the retry bit set.
  1013. <legal all>
  1014. */
  1015. #define RX_PPDU_END_USER_STATS_RETRIED_MSDU_COUNT_OFFSET 0x0000000000000050
  1016. #define RX_PPDU_END_USER_STATS_RETRIED_MSDU_COUNT_LSB 16
  1017. #define RX_PPDU_END_USER_STATS_RETRIED_MSDU_COUNT_MSB 31
  1018. #define RX_PPDU_END_USER_STATS_RETRIED_MSDU_COUNT_MASK 0x00000000ffff0000
  1019. /* Description HT_CONTROL_NULL_FIELD
  1020. Field only valid when HT_control_info_NULL_valid is set.
  1021. Last successfully received HT_CONTROL/VHT_CONTROL/HE_CONTROL
  1022. field from QoS Null frame for this user.
  1023. <legal all>
  1024. */
  1025. #define RX_PPDU_END_USER_STATS_HT_CONTROL_NULL_FIELD_OFFSET 0x0000000000000050
  1026. #define RX_PPDU_END_USER_STATS_HT_CONTROL_NULL_FIELD_LSB 32
  1027. #define RX_PPDU_END_USER_STATS_HT_CONTROL_NULL_FIELD_MSB 63
  1028. #define RX_PPDU_END_USER_STATS_HT_CONTROL_NULL_FIELD_MASK 0xffffffff00000000
  1029. /* Description SW_RESPONSE_REFERENCE_PTR_EXT
  1030. Extended Pointer info that SW uses to refer back to an expected
  1031. response transmission. Used for Rate adaptation purposes.
  1032. When a reception occurs that is not tied to an expected
  1033. response, this field is set to 0x0.
  1034. Note: earlier on in this TLV there is also the field: Sw_response_reference_ptr.
  1035. <legal all>
  1036. */
  1037. #define RX_PPDU_END_USER_STATS_SW_RESPONSE_REFERENCE_PTR_EXT_OFFSET 0x0000000000000058
  1038. #define RX_PPDU_END_USER_STATS_SW_RESPONSE_REFERENCE_PTR_EXT_LSB 0
  1039. #define RX_PPDU_END_USER_STATS_SW_RESPONSE_REFERENCE_PTR_EXT_MSB 31
  1040. #define RX_PPDU_END_USER_STATS_SW_RESPONSE_REFERENCE_PTR_EXT_MASK 0x00000000ffffffff
  1041. /* Description CORRUPTED_DUE_TO_FIFO_DELAY
  1042. Set if Rx PCU avoided a hang due to SFM delays by writing
  1043. a corrupted 'RX_PPDU_END_USER_STATS*' and/or 'RX_PPDU_END.'
  1044. */
  1045. #define RX_PPDU_END_USER_STATS_CORRUPTED_DUE_TO_FIFO_DELAY_OFFSET 0x0000000000000058
  1046. #define RX_PPDU_END_USER_STATS_CORRUPTED_DUE_TO_FIFO_DELAY_LSB 32
  1047. #define RX_PPDU_END_USER_STATS_CORRUPTED_DUE_TO_FIFO_DELAY_MSB 32
  1048. #define RX_PPDU_END_USER_STATS_CORRUPTED_DUE_TO_FIFO_DELAY_MASK 0x0000000100000000
  1049. /* Description FRAME_CONTROL_INFO_NULL_VALID
  1050. When set, Frame_control_field_null contains valid information
  1051. <legal all>
  1052. */
  1053. #define RX_PPDU_END_USER_STATS_FRAME_CONTROL_INFO_NULL_VALID_OFFSET 0x0000000000000058
  1054. #define RX_PPDU_END_USER_STATS_FRAME_CONTROL_INFO_NULL_VALID_LSB 33
  1055. #define RX_PPDU_END_USER_STATS_FRAME_CONTROL_INFO_NULL_VALID_MSB 33
  1056. #define RX_PPDU_END_USER_STATS_FRAME_CONTROL_INFO_NULL_VALID_MASK 0x0000000200000000
  1057. /* Description FRAME_CONTROL_FIELD_NULL
  1058. Field only valid when Frame_control_info_null_valid is set.
  1059. Last successfully received Frame_control field of Data Null/QoS
  1060. Null for this user, mainly used to track the PM state of
  1061. the transmitted device
  1062. <legal all>
  1063. */
  1064. #define RX_PPDU_END_USER_STATS_FRAME_CONTROL_FIELD_NULL_OFFSET 0x0000000000000058
  1065. #define RX_PPDU_END_USER_STATS_FRAME_CONTROL_FIELD_NULL_LSB 34
  1066. #define RX_PPDU_END_USER_STATS_FRAME_CONTROL_FIELD_NULL_MSB 49
  1067. #define RX_PPDU_END_USER_STATS_FRAME_CONTROL_FIELD_NULL_MASK 0x0003fffc00000000
  1068. /* Description RETRIED_MPDU_COUNT
  1069. Field filled in by RXPCU
  1070. The number of MPDUs without FCS error, that have the retry
  1071. bit set.
  1072. <legal all>
  1073. */
  1074. #define RX_PPDU_END_USER_STATS_RETRIED_MPDU_COUNT_OFFSET 0x0000000000000058
  1075. #define RX_PPDU_END_USER_STATS_RETRIED_MPDU_COUNT_LSB 50
  1076. #define RX_PPDU_END_USER_STATS_RETRIED_MPDU_COUNT_MSB 60
  1077. #define RX_PPDU_END_USER_STATS_RETRIED_MPDU_COUNT_MASK 0x1ffc000000000000
  1078. /* Description RESERVED_23A
  1079. <legal 0>
  1080. */
  1081. #define RX_PPDU_END_USER_STATS_RESERVED_23A_OFFSET 0x0000000000000058
  1082. #define RX_PPDU_END_USER_STATS_RESERVED_23A_LSB 61
  1083. #define RX_PPDU_END_USER_STATS_RESERVED_23A_MSB 63
  1084. #define RX_PPDU_END_USER_STATS_RESERVED_23A_MASK 0xe000000000000000
  1085. /* Description RXPCU_MPDU_FILTER_IN_CATEGORY
  1086. Field indicates what the reason was that the last successfully
  1087. received MPDU was allowed to come into the receive path
  1088. by RXPCU.
  1089. <enum 0 rxpcu_filter_pass> The last MPDU passed the normal
  1090. frame filter programming of rxpcu
  1091. <enum 1 rxpcu_monitor_client> The last MPDU did NOT pass
  1092. the regular frame filter and would have been dropped, were
  1093. it not for the frame fitting into the 'monitor_client'
  1094. category.
  1095. <enum 2 rxpcu_monitor_other> The last MPDU did NOT pass
  1096. the regular frame filter and also did not pass the rxpcu_monitor_client
  1097. filter. It would have been dropped accept that it did pass
  1098. the 'monitor_other' category.
  1099. <enum 3 rxpcu_filter_pass_monitor_ovrd> The last MPDU passed
  1100. the normal frame filter programming of RXPCU but additionally
  1101. fit into the 'monitor_override_client' category.
  1102. Hamilton and Waikiki did not include this (and any subsequent)
  1103. word.
  1104. <legal 0-3>
  1105. */
  1106. #define RX_PPDU_END_USER_STATS_RXPCU_MPDU_FILTER_IN_CATEGORY_OFFSET 0x0000000000000060
  1107. #define RX_PPDU_END_USER_STATS_RXPCU_MPDU_FILTER_IN_CATEGORY_LSB 0
  1108. #define RX_PPDU_END_USER_STATS_RXPCU_MPDU_FILTER_IN_CATEGORY_MSB 1
  1109. #define RX_PPDU_END_USER_STATS_RXPCU_MPDU_FILTER_IN_CATEGORY_MASK 0x0000000000000003
  1110. /* Description SW_FRAME_GROUP_ID
  1111. SW processes frames based on certain classifications. This
  1112. field indicates to what sw classification the last successfully
  1113. received MPDU is mapped.
  1114. The classification is given in priority order
  1115. <enum 0 sw_frame_group_NDP_frame>
  1116. <enum 1 sw_frame_group_Multicast_data>
  1117. <enum 2 sw_frame_group_Unicast_data>
  1118. <enum 3 sw_frame_group_Null_data > This includes mpdus of
  1119. type Data Null.
  1120. <enum 38 sw_frame_group_QoS_Null_data> This includes QoS
  1121. Null frames except in UL MU or TB PPDUs.
  1122. <enum 39 sw_frame_group_QoS_Null_data_TB> This includes
  1123. QoS Null frames in UL MU or TB PPDUs.
  1124. <enum 4 sw_frame_group_mgmt_0000 >
  1125. <enum 5 sw_frame_group_mgmt_0001 >
  1126. <enum 6 sw_frame_group_mgmt_0010 >
  1127. <enum 7 sw_frame_group_mgmt_0011 >
  1128. <enum 8 sw_frame_group_mgmt_0100 >
  1129. <enum 9 sw_frame_group_mgmt_0101 >
  1130. <enum 10 sw_frame_group_mgmt_0110 >
  1131. <enum 11 sw_frame_group_mgmt_0111 >
  1132. <enum 12 sw_frame_group_mgmt_1000 >
  1133. <enum 13 sw_frame_group_mgmt_1001 >
  1134. <enum 14 sw_frame_group_mgmt_1010 >
  1135. <enum 15 sw_frame_group_mgmt_1011 >
  1136. <enum 16 sw_frame_group_mgmt_1100 >
  1137. <enum 17 sw_frame_group_mgmt_1101 >
  1138. <enum 18 sw_frame_group_mgmt_1110 >
  1139. <enum 19 sw_frame_group_mgmt_1111 >
  1140. <enum 20 sw_frame_group_ctrl_0000 >
  1141. <enum 21 sw_frame_group_ctrl_0001 >
  1142. <enum 22 sw_frame_group_ctrl_0010 >
  1143. <enum 23 sw_frame_group_ctrl_0011 >
  1144. <enum 24 sw_frame_group_ctrl_0100 >
  1145. <enum 25 sw_frame_group_ctrl_0101 >
  1146. <enum 26 sw_frame_group_ctrl_0110 >
  1147. <enum 27 sw_frame_group_ctrl_0111 >
  1148. <enum 28 sw_frame_group_ctrl_1000 >
  1149. <enum 29 sw_frame_group_ctrl_1001 >
  1150. <enum 30 sw_frame_group_ctrl_1010 >
  1151. <enum 31 sw_frame_group_ctrl_1011 >
  1152. <enum 32 sw_frame_group_ctrl_1100 >
  1153. <enum 33 sw_frame_group_ctrl_1101 >
  1154. <enum 34 sw_frame_group_ctrl_1110 >
  1155. <enum 35 sw_frame_group_ctrl_1111 >
  1156. <enum 36 sw_frame_group_unsupported> This covers type 3
  1157. and protocol version != 0
  1158. <enum 37 sw_frame_group_phy_error> PHY reported an error
  1159. <legal 0-39>
  1160. */
  1161. #define RX_PPDU_END_USER_STATS_SW_FRAME_GROUP_ID_OFFSET 0x0000000000000060
  1162. #define RX_PPDU_END_USER_STATS_SW_FRAME_GROUP_ID_LSB 2
  1163. #define RX_PPDU_END_USER_STATS_SW_FRAME_GROUP_ID_MSB 8
  1164. #define RX_PPDU_END_USER_STATS_SW_FRAME_GROUP_ID_MASK 0x00000000000001fc
  1165. /* Description RESERVED_24A
  1166. <legal 0>
  1167. */
  1168. #define RX_PPDU_END_USER_STATS_RESERVED_24A_OFFSET 0x0000000000000060
  1169. #define RX_PPDU_END_USER_STATS_RESERVED_24A_LSB 9
  1170. #define RX_PPDU_END_USER_STATS_RESERVED_24A_MSB 12
  1171. #define RX_PPDU_END_USER_STATS_RESERVED_24A_MASK 0x0000000000001e00
  1172. /* Description FRAME_CONTROL_INFO_MGMT_CTRL_VALID
  1173. When set, Frame_control_field_mgmt_ctrl contains valid information.
  1174. <legal all>
  1175. */
  1176. #define RX_PPDU_END_USER_STATS_FRAME_CONTROL_INFO_MGMT_CTRL_VALID_OFFSET 0x0000000000000060
  1177. #define RX_PPDU_END_USER_STATS_FRAME_CONTROL_INFO_MGMT_CTRL_VALID_LSB 13
  1178. #define RX_PPDU_END_USER_STATS_FRAME_CONTROL_INFO_MGMT_CTRL_VALID_MSB 13
  1179. #define RX_PPDU_END_USER_STATS_FRAME_CONTROL_INFO_MGMT_CTRL_VALID_MASK 0x0000000000002000
  1180. /* Description MAC_ADDR_AD2_VALID
  1181. When set, the fields mac_addr_ad2_... contain valid information.
  1182. <legal all>
  1183. */
  1184. #define RX_PPDU_END_USER_STATS_MAC_ADDR_AD2_VALID_OFFSET 0x0000000000000060
  1185. #define RX_PPDU_END_USER_STATS_MAC_ADDR_AD2_VALID_LSB 14
  1186. #define RX_PPDU_END_USER_STATS_MAC_ADDR_AD2_VALID_MSB 14
  1187. #define RX_PPDU_END_USER_STATS_MAC_ADDR_AD2_VALID_MASK 0x0000000000004000
  1188. /* Description MCAST_BCAST
  1189. Multicast / broadcast indicator
  1190. Only set when the MAC address 1 bit 0 is set indicating
  1191. mcast/bcast and the BSSID matches one of the BSSID registers,
  1192. for the last successfully received MPDU
  1193. <legal all>
  1194. */
  1195. #define RX_PPDU_END_USER_STATS_MCAST_BCAST_OFFSET 0x0000000000000060
  1196. #define RX_PPDU_END_USER_STATS_MCAST_BCAST_LSB 15
  1197. #define RX_PPDU_END_USER_STATS_MCAST_BCAST_MSB 15
  1198. #define RX_PPDU_END_USER_STATS_MCAST_BCAST_MASK 0x0000000000008000
  1199. /* Description FRAME_CONTROL_FIELD_MGMT_CTRL
  1200. Field only valid when Frame_control_info_mgmt_ctrl_valid
  1201. is set
  1202. Last successfully received 'Frame control' field of control
  1203. or management frames for this user, mainly used in Rx monitor
  1204. mode
  1205. <legal all>
  1206. */
  1207. #define RX_PPDU_END_USER_STATS_FRAME_CONTROL_FIELD_MGMT_CTRL_OFFSET 0x0000000000000060
  1208. #define RX_PPDU_END_USER_STATS_FRAME_CONTROL_FIELD_MGMT_CTRL_LSB 16
  1209. #define RX_PPDU_END_USER_STATS_FRAME_CONTROL_FIELD_MGMT_CTRL_MSB 31
  1210. #define RX_PPDU_END_USER_STATS_FRAME_CONTROL_FIELD_MGMT_CTRL_MASK 0x00000000ffff0000
  1211. /* Description USER_PPDU_LEN
  1212. The sum of the mpdu_length fields of all the 'RX_MPDU_START'
  1213. TLVs generated for this user for this PPDU
  1214. */
  1215. #define RX_PPDU_END_USER_STATS_USER_PPDU_LEN_OFFSET 0x0000000000000060
  1216. #define RX_PPDU_END_USER_STATS_USER_PPDU_LEN_LSB 32
  1217. #define RX_PPDU_END_USER_STATS_USER_PPDU_LEN_MSB 55
  1218. #define RX_PPDU_END_USER_STATS_USER_PPDU_LEN_MASK 0x00ffffff00000000
  1219. /* Description RESERVED_25A
  1220. <legal 0>
  1221. */
  1222. #define RX_PPDU_END_USER_STATS_RESERVED_25A_OFFSET 0x0000000000000060
  1223. #define RX_PPDU_END_USER_STATS_RESERVED_25A_LSB 56
  1224. #define RX_PPDU_END_USER_STATS_RESERVED_25A_MSB 63
  1225. #define RX_PPDU_END_USER_STATS_RESERVED_25A_MASK 0xff00000000000000
  1226. /* Description MAC_ADDR_AD2_31_0
  1227. Field only valid when mac_addr_ad2_valid is set
  1228. The least significant 4 bytes of the last successfully received
  1229. frame's MAC Address AD2
  1230. <legal all>
  1231. */
  1232. #define RX_PPDU_END_USER_STATS_MAC_ADDR_AD2_31_0_OFFSET 0x0000000000000068
  1233. #define RX_PPDU_END_USER_STATS_MAC_ADDR_AD2_31_0_LSB 0
  1234. #define RX_PPDU_END_USER_STATS_MAC_ADDR_AD2_31_0_MSB 31
  1235. #define RX_PPDU_END_USER_STATS_MAC_ADDR_AD2_31_0_MASK 0x00000000ffffffff
  1236. /* Description MAC_ADDR_AD2_47_32
  1237. Field only valid when mac_addr_ad2_valid is set
  1238. The 2 most significant bytes of the last successfully received
  1239. frame's MAC Address AD2
  1240. <legal all>
  1241. */
  1242. #define RX_PPDU_END_USER_STATS_MAC_ADDR_AD2_47_32_OFFSET 0x0000000000000068
  1243. #define RX_PPDU_END_USER_STATS_MAC_ADDR_AD2_47_32_LSB 32
  1244. #define RX_PPDU_END_USER_STATS_MAC_ADDR_AD2_47_32_MSB 47
  1245. #define RX_PPDU_END_USER_STATS_MAC_ADDR_AD2_47_32_MASK 0x0000ffff00000000
  1246. /* Description AMSDU_MSDU_COUNT
  1247. Field filled in by RX OLE
  1248. Set to 0 by RXPCU
  1249. The number of MSDUs that are part of A-MSDUs that are part
  1250. of MPDUs without FCS error
  1251. <legal all>
  1252. */
  1253. #define RX_PPDU_END_USER_STATS_AMSDU_MSDU_COUNT_OFFSET 0x0000000000000068
  1254. #define RX_PPDU_END_USER_STATS_AMSDU_MSDU_COUNT_LSB 48
  1255. #define RX_PPDU_END_USER_STATS_AMSDU_MSDU_COUNT_MSB 63
  1256. #define RX_PPDU_END_USER_STATS_AMSDU_MSDU_COUNT_MASK 0xffff000000000000
  1257. /* Description NON_AMSDU_MSDU_COUNT
  1258. Field filled in by RX OLE
  1259. Set to 0 by RXPCU
  1260. The number of MSDUs that are not part of A-MSDUs that are
  1261. part of MPDUs without FCS error
  1262. <legal all>
  1263. */
  1264. #define RX_PPDU_END_USER_STATS_NON_AMSDU_MSDU_COUNT_OFFSET 0x0000000000000070
  1265. #define RX_PPDU_END_USER_STATS_NON_AMSDU_MSDU_COUNT_LSB 0
  1266. #define RX_PPDU_END_USER_STATS_NON_AMSDU_MSDU_COUNT_MSB 15
  1267. #define RX_PPDU_END_USER_STATS_NON_AMSDU_MSDU_COUNT_MASK 0x000000000000ffff
  1268. /* Description UCAST_MSDU_COUNT
  1269. Field filled in by RX OLE
  1270. Set to 0 by RXPCU
  1271. The number of MSDUs that are part of MPDUs without FCS error,
  1272. that are directed to a unicast destination address
  1273. <legal all>
  1274. */
  1275. #define RX_PPDU_END_USER_STATS_UCAST_MSDU_COUNT_OFFSET 0x0000000000000070
  1276. #define RX_PPDU_END_USER_STATS_UCAST_MSDU_COUNT_LSB 16
  1277. #define RX_PPDU_END_USER_STATS_UCAST_MSDU_COUNT_MSB 31
  1278. #define RX_PPDU_END_USER_STATS_UCAST_MSDU_COUNT_MASK 0x00000000ffff0000
  1279. /* Description BCAST_MSDU_COUNT
  1280. Field filled in by RX OLE
  1281. Set to 0 by RXPCU
  1282. The number of MSDUs that are part of MPDUs without FCS error,
  1283. whose destination addresses are broadcast (0xFFFF_FFFF_FFFF)
  1284. <legal all>
  1285. */
  1286. #define RX_PPDU_END_USER_STATS_BCAST_MSDU_COUNT_OFFSET 0x0000000000000070
  1287. #define RX_PPDU_END_USER_STATS_BCAST_MSDU_COUNT_LSB 32
  1288. #define RX_PPDU_END_USER_STATS_BCAST_MSDU_COUNT_MSB 47
  1289. #define RX_PPDU_END_USER_STATS_BCAST_MSDU_COUNT_MASK 0x0000ffff00000000
  1290. /* Description MCAST_BCAST_MSDU_COUNT
  1291. Field filled in by RX OLE
  1292. Set to 0 by RXPCU
  1293. The number of MSDUs that are part of MPDUs without FCS error,
  1294. whose destination addresses are either multicast or broadcast
  1295. <legal all>
  1296. */
  1297. #define RX_PPDU_END_USER_STATS_MCAST_BCAST_MSDU_COUNT_OFFSET 0x0000000000000070
  1298. #define RX_PPDU_END_USER_STATS_MCAST_BCAST_MSDU_COUNT_LSB 48
  1299. #define RX_PPDU_END_USER_STATS_MCAST_BCAST_MSDU_COUNT_MSB 63
  1300. #define RX_PPDU_END_USER_STATS_MCAST_BCAST_MSDU_COUNT_MASK 0xffff000000000000
  1301. #endif // RX_PPDU_END_USER_STATS