rx_ppdu_end_user_stats.h 61 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729173017311732173317341735173617371738173917401741174217431744174517461747174817491750175117521753175417551756175717581759176017611762176317641765176617671768176917701771177217731774177517761777177817791780178117821783178417851786178717881789179017911792179317941795179617971798179918001801180218031804180518061807180818091810181118121813181418151816181718181819182018211822182318241825182618271828182918301831183218331834183518361837183818391840184118421843184418451846184718481849185018511852185318541855185618571858185918601861186218631864186518661867186818691870187118721873187418751876187718781879188018811882188318841885188618871888188918901891189218931894189518961897189818991900190119021903190419051906190719081909191019111912191319141915191619171918191919201921192219231924192519261927192819291930193119321933193419351936193719381939194019411942194319441945194619471948194919501951195219531954195519561957195819591960196119621963196419651966196719681969197019711972197319741975197619771978197919801981198219831984198519861987198819891990199119921993199419951996199719981999200020012002200320042005200620072008200920102011201220132014201520162017201820192020202120222023202420252026202720282029203020312032203320342035203620372038203920402041204220432044204520462047204820492050205120522053205420552056205720582059206020612062206320642065206620672068206920702071207220732074207520762077207820792080208120822083208420852086208720882089209020912092209320942095209620972098209921002101210221032104210521062107210821092110211121122113211421152116211721182119212021212122212321242125212621272128212921302131213221332134213521362137213821392140214121422143214421452146214721482149215021512152
  1. /*
  2. * Copyright (c) 2021 The Linux Foundation. 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. // $ATH_LICENSE_HW_HDR_C$
  17. //
  18. // DO NOT EDIT! This file is automatically generated
  19. // These definitions are tied to a particular hardware layout
  20. #ifndef _RX_PPDU_END_USER_STATS_H_
  21. #define _RX_PPDU_END_USER_STATS_H_
  22. #if !defined(__ASSEMBLER__)
  23. #endif
  24. #include "rx_rxpcu_classification_overview.h"
  25. // ################ START SUMMARY #################
  26. //
  27. // Dword Fields
  28. // 0 struct rx_rxpcu_classification_overview rxpcu_classification_details;
  29. // 1 sta_full_aid[12:0], mcs[16:13], nss[19:17], ofdma_info_valid[20], dl_ofdma_ru_start_index[27:21], reserved_1a[31:28]
  30. // 2 dl_ofdma_ru_width[6:0], reserved_2a[7], user_receive_quality[15:8], mpdu_cnt_fcs_err[25:16], wbm2rxdma_buf_source_used[26], fw2rxdma_buf_source_used[27], sw2rxdma_buf_source_used[28], reserved_2b[31:29]
  31. // 3 mpdu_cnt_fcs_ok[8:0], frame_control_info_valid[9], qos_control_info_valid[10], ht_control_info_valid[11], data_sequence_control_info_valid[12], ht_control_info_null_valid[13], reserved_3a[15:14], rxdma2reo_ring_used[16], rxdma2fw_ring_used[17], rxdma2sw_ring_used[18], rxdma_release_ring_used[19], ht_control_field_pkt_type[23:20], reserved_3b[31:24]
  32. // 4 ast_index[15:0], frame_control_field[31:16]
  33. // 5 first_data_seq_ctrl[15:0], qos_control_field[31:16]
  34. // 6 ht_control_field[31:0]
  35. // 7 fcs_ok_bitmap_31_0[31:0]
  36. // 8 fcs_ok_bitmap_63_32[31:0]
  37. // 9 udp_msdu_count[15:0], tcp_msdu_count[31:16]
  38. // 10 other_msdu_count[15:0], tcp_ack_msdu_count[31:16]
  39. // 11 sw_response_reference_ptr[31:0]
  40. // 12 received_qos_data_tid_bitmap[15:0], received_qos_data_tid_eosp_bitmap[31:16]
  41. // 13 qosctrl_15_8_tid0[7:0], qosctrl_15_8_tid1[15:8], qosctrl_15_8_tid2[23:16], qosctrl_15_8_tid3[31:24]
  42. // 14 qosctrl_15_8_tid4[7:0], qosctrl_15_8_tid5[15:8], qosctrl_15_8_tid6[23:16], qosctrl_15_8_tid7[31:24]
  43. // 15 qosctrl_15_8_tid8[7:0], qosctrl_15_8_tid9[15:8], qosctrl_15_8_tid10[23:16], qosctrl_15_8_tid11[31:24]
  44. // 16 qosctrl_15_8_tid12[7:0], qosctrl_15_8_tid13[15:8], qosctrl_15_8_tid14[23:16], qosctrl_15_8_tid15[31:24]
  45. // 17 mpdu_ok_byte_count[24:0], ampdu_delim_ok_count_6_0[31:25]
  46. // 18 ampdu_delim_err_count[24:0], ampdu_delim_ok_count_13_7[31:25]
  47. // 19 mpdu_err_byte_count[24:0], ampdu_delim_ok_count_20_14[31:25]
  48. // 20 non_consecutive_delimiter_err[15:0], reserved_20a[31:16]
  49. // 21 ht_control_null_field[31:0]
  50. // 22 sw_response_reference_ptr_ext[31:0]
  51. //
  52. // ################ END SUMMARY #################
  53. #define NUM_OF_DWORDS_RX_PPDU_END_USER_STATS 23
  54. struct rx_ppdu_end_user_stats {
  55. struct rx_rxpcu_classification_overview rxpcu_classification_details;
  56. uint32_t sta_full_aid : 13, //[12:0]
  57. mcs : 4, //[16:13]
  58. nss : 3, //[19:17]
  59. ofdma_info_valid : 1, //[20]
  60. dl_ofdma_ru_start_index : 7, //[27:21]
  61. reserved_1a : 4; //[31:28]
  62. uint32_t dl_ofdma_ru_width : 7, //[6:0]
  63. reserved_2a : 1, //[7]
  64. user_receive_quality : 8, //[15:8]
  65. mpdu_cnt_fcs_err : 10, //[25:16]
  66. wbm2rxdma_buf_source_used : 1, //[26]
  67. fw2rxdma_buf_source_used : 1, //[27]
  68. sw2rxdma_buf_source_used : 1, //[28]
  69. reserved_2b : 3; //[31:29]
  70. uint32_t mpdu_cnt_fcs_ok : 9, //[8:0]
  71. frame_control_info_valid : 1, //[9]
  72. qos_control_info_valid : 1, //[10]
  73. ht_control_info_valid : 1, //[11]
  74. data_sequence_control_info_valid: 1, //[12]
  75. ht_control_info_null_valid : 1, //[13]
  76. reserved_3a : 2, //[15:14]
  77. rxdma2reo_ring_used : 1, //[16]
  78. rxdma2fw_ring_used : 1, //[17]
  79. rxdma2sw_ring_used : 1, //[18]
  80. rxdma_release_ring_used : 1, //[19]
  81. ht_control_field_pkt_type : 4, //[23:20]
  82. reserved_3b : 8; //[31:24]
  83. uint32_t ast_index : 16, //[15:0]
  84. frame_control_field : 16; //[31:16]
  85. uint32_t first_data_seq_ctrl : 16, //[15:0]
  86. qos_control_field : 16; //[31:16]
  87. uint32_t ht_control_field : 32; //[31:0]
  88. uint32_t fcs_ok_bitmap_31_0 : 32; //[31:0]
  89. uint32_t fcs_ok_bitmap_63_32 : 32; //[31:0]
  90. uint32_t udp_msdu_count : 16, //[15:0]
  91. tcp_msdu_count : 16; //[31:16]
  92. uint32_t other_msdu_count : 16, //[15:0]
  93. tcp_ack_msdu_count : 16; //[31:16]
  94. uint32_t sw_response_reference_ptr : 32; //[31:0]
  95. uint32_t received_qos_data_tid_bitmap : 16, //[15:0]
  96. received_qos_data_tid_eosp_bitmap: 16; //[31:16]
  97. uint32_t qosctrl_15_8_tid0 : 8, //[7:0]
  98. qosctrl_15_8_tid1 : 8, //[15:8]
  99. qosctrl_15_8_tid2 : 8, //[23:16]
  100. qosctrl_15_8_tid3 : 8; //[31:24]
  101. uint32_t qosctrl_15_8_tid4 : 8, //[7:0]
  102. qosctrl_15_8_tid5 : 8, //[15:8]
  103. qosctrl_15_8_tid6 : 8, //[23:16]
  104. qosctrl_15_8_tid7 : 8; //[31:24]
  105. uint32_t qosctrl_15_8_tid8 : 8, //[7:0]
  106. qosctrl_15_8_tid9 : 8, //[15:8]
  107. qosctrl_15_8_tid10 : 8, //[23:16]
  108. qosctrl_15_8_tid11 : 8; //[31:24]
  109. uint32_t qosctrl_15_8_tid12 : 8, //[7:0]
  110. qosctrl_15_8_tid13 : 8, //[15:8]
  111. qosctrl_15_8_tid14 : 8, //[23:16]
  112. qosctrl_15_8_tid15 : 8; //[31:24]
  113. uint32_t mpdu_ok_byte_count : 25, //[24:0]
  114. ampdu_delim_ok_count_6_0 : 7; //[31:25]
  115. uint32_t ampdu_delim_err_count : 25, //[24:0]
  116. ampdu_delim_ok_count_13_7 : 7; //[31:25]
  117. uint32_t mpdu_err_byte_count : 25, //[24:0]
  118. ampdu_delim_ok_count_20_14 : 7; //[31:25]
  119. uint32_t non_consecutive_delimiter_err : 16, //[15:0]
  120. reserved_20a : 16; //[31:16]
  121. uint32_t ht_control_null_field : 32; //[31:0]
  122. uint32_t sw_response_reference_ptr_ext : 32; //[31:0]
  123. };
  124. /*
  125. struct rx_rxpcu_classification_overview rxpcu_classification_details
  126. Details related to what RXPCU classification types of
  127. MPDUs have been received
  128. sta_full_aid
  129. Consumer: FW
  130. Producer: RXPCU
  131. The full AID of this station.
  132. <legal all>
  133. mcs
  134. MCS of the received frame
  135. For details, refer to MCS_TYPE description
  136. Note: This is rate in case of 11a/11b
  137. <legal all>
  138. nss
  139. Number of spatial streams.
  140. NOTE: RXPCU derives this from the 'Mimo_ss_bitmap'
  141. <enum 0 1_spatial_stream>Single spatial stream
  142. <enum 1 2_spatial_streams>2 spatial streams
  143. <enum 2 3_spatial_streams>3 spatial streams
  144. <enum 3 4_spatial_streams>4 spatial streams
  145. <enum 4 5_spatial_streams>5 spatial streams
  146. <enum 5 6_spatial_streams>6 spatial streams
  147. <enum 6 7_spatial_streams>7 spatial streams
  148. <enum 7 8_spatial_streams>8 spatial streams
  149. ofdma_info_valid
  150. When set, ofdma RU related info in the following fields
  151. is valid
  152. <legal all>
  153. dl_ofdma_ru_start_index
  154. Field only valid when Ofdma_info_valid is set
  155. RU index number to which User is assigned
  156. RU numbering is over the entire BW, starting from 0
  157. <legal 0-73>
  158. reserved_1a
  159. <legal 0>
  160. dl_ofdma_ru_width
  161. The size of the RU for this user.
  162. In units of 1 (26 tone) RU
  163. <legal 1-74>
  164. reserved_2a
  165. <legal 0>
  166. user_receive_quality
  167. RSSI / EVM for this user ???
  168. Details TBD
  169. <legal all>
  170. mpdu_cnt_fcs_err
  171. The number of MPDUs received from this STA in this PPDU
  172. with FCS errors
  173. <legal all>
  174. wbm2rxdma_buf_source_used
  175. Field filled in by RXDMA
  176. When set, RXDMA has used the wbm2rxdma_buf ring as
  177. source for at least one of the frames in this PPDU.
  178. fw2rxdma_buf_source_used
  179. Field filled in by RXDMA
  180. When set, RXDMA has used the fw2rxdma_buf ring as source
  181. for at least one of the frames in this PPDU.
  182. sw2rxdma_buf_source_used
  183. Field filled in by RXDMA
  184. When set, RXDMA has used the sw2rxdma_buf ring as source
  185. for at least one of the frames in this PPDU.
  186. reserved_2b
  187. <legal 0>
  188. mpdu_cnt_fcs_ok
  189. The number of MPDUs received from this STA in this PPDU
  190. with correct FCS
  191. <legal all>
  192. frame_control_info_valid
  193. When set, the frame_control_info field contains valid
  194. information
  195. <legal all>
  196. qos_control_info_valid
  197. When set, the QoS_control_info field contains valid
  198. information
  199. <legal all>
  200. ht_control_info_valid
  201. When set, the HT_control_field contains valid
  202. information
  203. <legal all>
  204. data_sequence_control_info_valid
  205. When set, the First_data_seq_ctrl field contains valid
  206. information
  207. <legal all>
  208. ht_control_info_null_valid
  209. When set, the HT_control_NULL_field contains valid
  210. information
  211. <legal all>
  212. reserved_3a
  213. <legal 0>
  214. rxdma2reo_ring_used
  215. Field filled in by RXDMA
  216. Set when at least one frame during this PPDU got pushed
  217. to this ring by RXDMA
  218. rxdma2fw_ring_used
  219. Field filled in by RXDMA
  220. Set when at least one frame during this PPDU got pushed
  221. to this ring by RXDMA
  222. rxdma2sw_ring_used
  223. Field filled in by RXDMA
  224. Set when at least one frame during this PPDU got pushed
  225. to this ring by RXDMA
  226. rxdma_release_ring_used
  227. Field filled in by RXDMA
  228. Set when at least one frame during this PPDU got pushed
  229. to this ring by RXDMA
  230. ht_control_field_pkt_type
  231. Field only valid when HT_control_info_valid or
  232. HT_control_info_NULL_valid is set.
  233. Indicates what the PHY receive type was for receiving
  234. this frame. Can help determine if the HT_CONTROL field shall
  235. be interpreted as HT/VHT or HE.
  236. NOTE: later on in the 11ax IEEE spec a bit within the HT
  237. control field was introduced that explicitly indicated how
  238. to interpret the HT control field.... As HT, VHT, or HE.
  239. <enum 0 dot11a>802.11a PPDU type
  240. <enum 1 dot11b>802.11b PPDU type
  241. <enum 2 dot11n_mm>802.11n Mixed Mode PPDU type
  242. <enum 3 dot11ac>802.11ac PPDU type
  243. <enum 4 dot11ax>802.11ax PPDU type
  244. reserved_3b
  245. <legal 0>
  246. ast_index
  247. This field indicates the index of the AST entry
  248. corresponding to this MPDU. It is provided by the GSE module
  249. instantiated in RXPCU.
  250. A value of 0xFFFF indicates an invalid AST index,
  251. meaning that No AST entry was found or NO AST search was
  252. performed
  253. <legal all>
  254. frame_control_field
  255. Field only valid when Frame_control_info_valid is set.
  256. Last successfully received Frame_control field of data
  257. frame (excluding Data NULL/ QoS Null) for this user
  258. Mainly used to track the PM state of the transmitted
  259. device
  260. NOTE: only data frame info is needed, as control and
  261. management frames are already routed to the FW.
  262. <legal all>
  263. first_data_seq_ctrl
  264. Field only valid when Data_sequence_control_info_valid
  265. is set.
  266. Sequence control field of the first data frame
  267. (excluding Data NULL or QoS Data null) received for this
  268. user with correct FCS
  269. NOTE: only data frame info is needed, as control and
  270. management frames are already routed to the FW.
  271. <legal all>
  272. qos_control_field
  273. Field only valid when QoS_control_info_valid is set.
  274. Last successfully received QoS_control field of data
  275. frame (excluding Data NULL/ QoS Null) for this user
  276. Note that in case of multi TID, this field can only
  277. reflect the last properly received MPDU, and thus can not
  278. indicate all potentially different TIDs that had been
  279. received earlier.
  280. There are however per TID fields, that will contain
  281. among other things all buffer status info: See
  282. QoSCtrl_15_8_tid???
  283. <legal all>
  284. ht_control_field
  285. Field only valid when HT_control_info_valid is set.
  286. Last successfully received
  287. HT_CONTROL/VHT_CONTROL/HE_CONTROL field of data frames,
  288. excluding QoS Null frames for this user.
  289. NOTE: HT control fields from QoS Null frames are
  290. captured in field HT_control_NULL_field
  291. <legal all>
  292. fcs_ok_bitmap_31_0
  293. Bitmap indicates in order of received MPDUs, which MPDUs
  294. had an passing FCS or had an error.
  295. 1: FCS OK
  296. 0: FCS error
  297. <legal all>
  298. fcs_ok_bitmap_63_32
  299. Bitmap indicates in order of received MPDUs, which MPDUs
  300. had an passing FCS or had an error.
  301. 1: FCS OK
  302. 0: FCS error
  303. NOTE: for users 0, 1, 2 and 3, additional bitmap info
  304. (up to 256 bitmap window) is provided in
  305. RX_PPDU_END_USER_STATS_EXT TLV
  306. <legal all>
  307. udp_msdu_count
  308. Field filled in by RX OLE
  309. Set to 0 by RXPCU
  310. The number of MSDUs that are part of MPDUs without FCS
  311. error, that contain UDP frames.
  312. <legal all>
  313. tcp_msdu_count
  314. Field filled in by RX OLE
  315. Set to 0 by RXPCU
  316. The number of MSDUs that are part of MPDUs without FCS
  317. error, that contain TCP frames.
  318. (Note: This does NOT include TCP-ACK)
  319. <legal all>
  320. other_msdu_count
  321. Field filled in by RX OLE
  322. Set to 0 by RXPCU
  323. The number of MSDUs that are part of MPDUs without FCS
  324. error, that contain neither UDP or TCP frames.
  325. Includes Management and control frames.
  326. <legal all>
  327. tcp_ack_msdu_count
  328. Field filled in by RX OLE
  329. Set to 0 by RXPCU
  330. The number of MSDUs that are part of MPDUs without FCS
  331. error, that contain TCP ack frames.
  332. <legal all>
  333. sw_response_reference_ptr
  334. Pointer that SW uses to refer back to an expected
  335. response reception. Used for Rate adaptation purposes.
  336. When a reception occurrs that is not tied to an expected
  337. response, this field is set to 0x0
  338. Note: further on in this TLV there is also the field:
  339. Sw_response_reference_ptr
  340. <legal all>
  341. received_qos_data_tid_bitmap
  342. Whenever a frame is received that contains a QoS control
  343. field (that includes QoS Data and/or QoS Null), the bit in
  344. this field that corresponds to the received TID shall be
  345. set.
  346. ...Bitmap[0] = TID0
  347. ...Bitmap[1] = TID1
  348. Etc.
  349. <legal all>
  350. received_qos_data_tid_eosp_bitmap
  351. Field initialized to 0
  352. For every QoS Data frame that is correctly received, the
  353. EOSP bit of that frame is copied over into the corresponding
  354. TID related field.
  355. Note that this implies that the bits here represent the
  356. EOSP bit status for each TID of the last MPDU received for
  357. that TID.
  358. received TID shall be set.
  359. ...eosp_bitmap[0] = eosp of TID0
  360. ...eosp_bitmap[1] = eosp of TID1
  361. Etc.
  362. <legal all>
  363. qosctrl_15_8_tid0
  364. Field only valid when Received_qos_data_tid_bitmap[0] is
  365. set
  366. QoS control field bits 15-8 of the last properly
  367. received MPDU with a QoS control field embedded, with TID
  368. == 0
  369. qosctrl_15_8_tid1
  370. Field only valid when Received_qos_data_tid_bitmap[1] is
  371. set
  372. QoS control field bits 15-8 of the last properly
  373. received MPDU with a QoS control field embedded, with TID
  374. == 1
  375. qosctrl_15_8_tid2
  376. Field only valid when Received_qos_data_tid_bitmap[2] is
  377. set
  378. QoS control field bits 15-8 of the last properly
  379. received MPDU with a QoS control field embedded, with TID
  380. == 2
  381. qosctrl_15_8_tid3
  382. Field only valid when Received_qos_data_tid_bitmap[3] is
  383. set
  384. QoS control field bits 15-8 of the last properly
  385. received MPDU with a QoS control field embedded, with TID
  386. == 3
  387. qosctrl_15_8_tid4
  388. Field only valid when Received_qos_data_tid_bitmap[4] is
  389. set
  390. QoS control field bits 15-8 of the last properly
  391. received MPDU with a QoS control field embedded, with TID
  392. == 4
  393. qosctrl_15_8_tid5
  394. Field only valid when Received_qos_data_tid_bitmap[5] is
  395. set
  396. QoS control field bits 15-8 of the last properly
  397. received MPDU with a QoS control field embedded, with TID
  398. == 5
  399. qosctrl_15_8_tid6
  400. Field only valid when Received_qos_data_tid_bitmap[6] is
  401. set
  402. QoS control field bits 15-8 of the last properly
  403. received MPDU with a QoS control field embedded, with TID
  404. == 6
  405. qosctrl_15_8_tid7
  406. Field only valid when Received_qos_data_tid_bitmap[7] is
  407. set
  408. QoS control field bits 15-8 of the last properly
  409. received MPDU with a QoS control field embedded, with TID
  410. == 7
  411. qosctrl_15_8_tid8
  412. Field only valid when Received_qos_data_tid_bitmap[8] is
  413. set
  414. QoS control field bits 15-8 of the last properly
  415. received MPDU with a QoS control field embedded, with TID
  416. == 8
  417. qosctrl_15_8_tid9
  418. Field only valid when Received_qos_data_tid_bitmap[9] is
  419. set
  420. QoS control field bits 15-8 of the last properly
  421. received MPDU with a QoS control field embedded, with TID
  422. == 9
  423. qosctrl_15_8_tid10
  424. Field only valid when Received_qos_data_tid_bitmap[10]
  425. is set
  426. QoS control field bits 15-8 of the last properly
  427. received MPDU with a QoS control field embedded, with TID
  428. == 10
  429. qosctrl_15_8_tid11
  430. Field only valid when Received_qos_data_tid_bitmap[11]
  431. is set
  432. QoS control field bits 15-8 of the last properly
  433. received MPDU with a QoS control field embedded, with TID
  434. == 11
  435. qosctrl_15_8_tid12
  436. Field only valid when Received_qos_data_tid_bitmap[12]
  437. is set
  438. QoS control field bits 15-8 of the last properly
  439. received MPDU with a QoS control field embedded, with TID
  440. == 12
  441. qosctrl_15_8_tid13
  442. Field only valid when Received_qos_data_tid_bitmap[13]
  443. is set
  444. QoS control field bits 15-8 of the last properly
  445. received MPDU with a QoS control field embedded, with TID
  446. == 13
  447. qosctrl_15_8_tid14
  448. Field only valid when Received_qos_data_tid_bitmap[14]
  449. is set
  450. QoS control field bits 15-8 of the last properly
  451. received MPDU with a QoS control field embedded, with TID
  452. == 14
  453. qosctrl_15_8_tid15
  454. Field only valid when Received_qos_data_tid_bitmap[15]
  455. is set
  456. QoS control field bits 15-8 of the last properly
  457. received MPDU with a QoS control field embedded, with TID
  458. == 15
  459. mpdu_ok_byte_count
  460. The number of bytes received within an MPDU for this
  461. user with correct FCS. This includes the FCS field
  462. NOTE:
  463. The sum of the four fields.....
  464. Mpdu_ok_byte_count +
  465. mpdu_err_byte_count +
  466. .....is the total number of bytes that were received for
  467. this user from the PHY.
  468. <legal all>
  469. ampdu_delim_ok_count_6_0
  470. Number of AMPDU delimiter received with correct
  471. structure
  472. LSB 7 bits from this counter
  473. Note that this is a delimiter count and not byte count.
  474. To get to the number of bytes occupied by these delimiters,
  475. multiply this number by 4
  476. <legal all>
  477. ampdu_delim_err_count
  478. The number of MPDU delimiter errors counted for this
  479. user.
  480. Note that this is a delimiter count and not byte count.
  481. To get to the number of bytes occupied by these delimiters,
  482. multiply this number by 4
  483. <legal all>
  484. ampdu_delim_ok_count_13_7
  485. Number of AMPDU delimiters received with correct
  486. structure
  487. Bits 13-7 from this counter
  488. Note that this is a delimiter count and not byte count.
  489. To get to the number of bytes occupied by these delimiters,
  490. multiply this number by 4
  491. <legal all>
  492. mpdu_err_byte_count
  493. The number of bytes belonging to MPDUs with an FCS
  494. error. This includes the FCS field.
  495. <legal all>
  496. ampdu_delim_ok_count_20_14
  497. Number of AMPDU delimiters received with correct
  498. structure
  499. Bits 20-14 from this counter
  500. Note that this is a delimiter count and not byte count.
  501. To get to the number of bytes occupied by these delimiters,
  502. multiply this number by 4
  503. <legal all>
  504. non_consecutive_delimiter_err
  505. The number of times an MPDU delimiter error is detected
  506. that is not immediately preceded by another MPDU delimiter
  507. also with FCS error.
  508. The counter saturates at 0xFFFF
  509. <legal all>
  510. reserved_20a
  511. <legal 0>
  512. ht_control_null_field
  513. Last successfully received
  514. HT_CONTROL/VHT_CONTROL/HE_CONTROL field from QoS Null frame
  515. for this user.
  516. <legal all>
  517. sw_response_reference_ptr_ext
  518. Extended Pointer that SW uses to refer back to an
  519. expected response reception. Used for Rate adaptation
  520. purposes.
  521. When a reception occurrs that is not tied to an expected
  522. response, this field is set to 0x0
  523. Note: earlier on in this TLV there is also the field:
  524. Sw_response_reference_ptr
  525. <legal all>
  526. */
  527. /* EXTERNAL REFERENCE : struct rx_rxpcu_classification_overview rxpcu_classification_details */
  528. /* Description RX_PPDU_END_USER_STATS_0_RXPCU_CLASSIFICATION_DETAILS_FILTER_PASS_MPDUS
  529. When set, at least one Filter Pass MPDU has been
  530. received. FCS might or might not have been passing.
  531. For MU UL, in TLVs RX_PPDU_END and
  532. RX_PPDU_END_STATUS_DONE, this field is the OR of all the
  533. users.
  534. <legal all>
  535. */
  536. #define RX_PPDU_END_USER_STATS_0_RXPCU_CLASSIFICATION_DETAILS_FILTER_PASS_MPDUS_OFFSET 0x00000000
  537. #define RX_PPDU_END_USER_STATS_0_RXPCU_CLASSIFICATION_DETAILS_FILTER_PASS_MPDUS_LSB 0
  538. #define RX_PPDU_END_USER_STATS_0_RXPCU_CLASSIFICATION_DETAILS_FILTER_PASS_MPDUS_MASK 0x00000001
  539. /* Description RX_PPDU_END_USER_STATS_0_RXPCU_CLASSIFICATION_DETAILS_FILTER_PASS_MPDUS_FCS_OK
  540. When set, at least one Filter Pass MPDU has been
  541. received that has a correct FCS.
  542. For MU UL, in TLVs RX_PPDU_END and
  543. RX_PPDU_END_STATUS_DONE, this field is the OR of all the
  544. users.
  545. <legal all>
  546. */
  547. #define RX_PPDU_END_USER_STATS_0_RXPCU_CLASSIFICATION_DETAILS_FILTER_PASS_MPDUS_FCS_OK_OFFSET 0x00000000
  548. #define RX_PPDU_END_USER_STATS_0_RXPCU_CLASSIFICATION_DETAILS_FILTER_PASS_MPDUS_FCS_OK_LSB 1
  549. #define RX_PPDU_END_USER_STATS_0_RXPCU_CLASSIFICATION_DETAILS_FILTER_PASS_MPDUS_FCS_OK_MASK 0x00000002
  550. /* Description RX_PPDU_END_USER_STATS_0_RXPCU_CLASSIFICATION_DETAILS_MONITOR_DIRECT_MPDUS
  551. When set, at least one Monitor Direct MPDU has been
  552. received. FCS might or might not have been passing
  553. For MU UL, in TLVs RX_PPDU_END and
  554. RX_PPDU_END_STATUS_DONE, this field is the OR of all the
  555. users.
  556. <legal all>
  557. */
  558. #define RX_PPDU_END_USER_STATS_0_RXPCU_CLASSIFICATION_DETAILS_MONITOR_DIRECT_MPDUS_OFFSET 0x00000000
  559. #define RX_PPDU_END_USER_STATS_0_RXPCU_CLASSIFICATION_DETAILS_MONITOR_DIRECT_MPDUS_LSB 2
  560. #define RX_PPDU_END_USER_STATS_0_RXPCU_CLASSIFICATION_DETAILS_MONITOR_DIRECT_MPDUS_MASK 0x00000004
  561. /* Description RX_PPDU_END_USER_STATS_0_RXPCU_CLASSIFICATION_DETAILS_MONITOR_DIRECT_MPDUS_FCS_OK
  562. When set, at least one Monitor Direct MPDU has been
  563. received that has a correct FCS.
  564. For MU UL, in TLVs RX_PPDU_END and
  565. RX_PPDU_END_STATUS_DONE, this field is the OR of all the
  566. users.
  567. <legal all>
  568. */
  569. #define RX_PPDU_END_USER_STATS_0_RXPCU_CLASSIFICATION_DETAILS_MONITOR_DIRECT_MPDUS_FCS_OK_OFFSET 0x00000000
  570. #define RX_PPDU_END_USER_STATS_0_RXPCU_CLASSIFICATION_DETAILS_MONITOR_DIRECT_MPDUS_FCS_OK_LSB 3
  571. #define RX_PPDU_END_USER_STATS_0_RXPCU_CLASSIFICATION_DETAILS_MONITOR_DIRECT_MPDUS_FCS_OK_MASK 0x00000008
  572. /* Description RX_PPDU_END_USER_STATS_0_RXPCU_CLASSIFICATION_DETAILS_MONITOR_OTHER_MPDUS
  573. When set, at least one Monitor Direct MPDU has been
  574. received. FCS might or might not have been passing.
  575. For MU UL, in TLVs RX_PPDU_END and
  576. RX_PPDU_END_STATUS_DONE, this field is the OR of all the
  577. users.
  578. <legal all>
  579. */
  580. #define RX_PPDU_END_USER_STATS_0_RXPCU_CLASSIFICATION_DETAILS_MONITOR_OTHER_MPDUS_OFFSET 0x00000000
  581. #define RX_PPDU_END_USER_STATS_0_RXPCU_CLASSIFICATION_DETAILS_MONITOR_OTHER_MPDUS_LSB 4
  582. #define RX_PPDU_END_USER_STATS_0_RXPCU_CLASSIFICATION_DETAILS_MONITOR_OTHER_MPDUS_MASK 0x00000010
  583. /* Description RX_PPDU_END_USER_STATS_0_RXPCU_CLASSIFICATION_DETAILS_MONITOR_OTHER_MPDUS_FCS_OK
  584. When set, at least one Monitor Direct MPDU has been
  585. received that has a correct FCS.
  586. For MU UL, in TLVs RX_PPDU_END and
  587. RX_PPDU_END_STATUS_DONE, this field is the OR of all the
  588. users.
  589. <legal all>
  590. */
  591. #define RX_PPDU_END_USER_STATS_0_RXPCU_CLASSIFICATION_DETAILS_MONITOR_OTHER_MPDUS_FCS_OK_OFFSET 0x00000000
  592. #define RX_PPDU_END_USER_STATS_0_RXPCU_CLASSIFICATION_DETAILS_MONITOR_OTHER_MPDUS_FCS_OK_LSB 5
  593. #define RX_PPDU_END_USER_STATS_0_RXPCU_CLASSIFICATION_DETAILS_MONITOR_OTHER_MPDUS_FCS_OK_MASK 0x00000020
  594. /* Description RX_PPDU_END_USER_STATS_0_RXPCU_CLASSIFICATION_DETAILS_PHYRX_ABORT_RECEIVED
  595. When set, PPDU reception was aborted by the PHY
  596. <legal all>
  597. */
  598. #define RX_PPDU_END_USER_STATS_0_RXPCU_CLASSIFICATION_DETAILS_PHYRX_ABORT_RECEIVED_OFFSET 0x00000000
  599. #define RX_PPDU_END_USER_STATS_0_RXPCU_CLASSIFICATION_DETAILS_PHYRX_ABORT_RECEIVED_LSB 6
  600. #define RX_PPDU_END_USER_STATS_0_RXPCU_CLASSIFICATION_DETAILS_PHYRX_ABORT_RECEIVED_MASK 0x00000040
  601. /* Description RX_PPDU_END_USER_STATS_0_RXPCU_CLASSIFICATION_DETAILS_RESERVED_0
  602. <legal 0>
  603. */
  604. #define RX_PPDU_END_USER_STATS_0_RXPCU_CLASSIFICATION_DETAILS_RESERVED_0_OFFSET 0x00000000
  605. #define RX_PPDU_END_USER_STATS_0_RXPCU_CLASSIFICATION_DETAILS_RESERVED_0_LSB 7
  606. #define RX_PPDU_END_USER_STATS_0_RXPCU_CLASSIFICATION_DETAILS_RESERVED_0_MASK 0x0000ff80
  607. /* Description RX_PPDU_END_USER_STATS_0_RXPCU_CLASSIFICATION_DETAILS_PHY_PPDU_ID
  608. A ppdu counter value that PHY increments for every PPDU
  609. received. The counter value wraps around
  610. <legal all>
  611. */
  612. #define RX_PPDU_END_USER_STATS_0_RXPCU_CLASSIFICATION_DETAILS_PHY_PPDU_ID_OFFSET 0x00000000
  613. #define RX_PPDU_END_USER_STATS_0_RXPCU_CLASSIFICATION_DETAILS_PHY_PPDU_ID_LSB 16
  614. #define RX_PPDU_END_USER_STATS_0_RXPCU_CLASSIFICATION_DETAILS_PHY_PPDU_ID_MASK 0xffff0000
  615. /* Description RX_PPDU_END_USER_STATS_1_STA_FULL_AID
  616. Consumer: FW
  617. Producer: RXPCU
  618. The full AID of this station.
  619. <legal all>
  620. */
  621. #define RX_PPDU_END_USER_STATS_1_STA_FULL_AID_OFFSET 0x00000004
  622. #define RX_PPDU_END_USER_STATS_1_STA_FULL_AID_LSB 0
  623. #define RX_PPDU_END_USER_STATS_1_STA_FULL_AID_MASK 0x00001fff
  624. /* Description RX_PPDU_END_USER_STATS_1_MCS
  625. MCS of the received frame
  626. For details, refer to MCS_TYPE description
  627. Note: This is rate in case of 11a/11b
  628. <legal all>
  629. */
  630. #define RX_PPDU_END_USER_STATS_1_MCS_OFFSET 0x00000004
  631. #define RX_PPDU_END_USER_STATS_1_MCS_LSB 13
  632. #define RX_PPDU_END_USER_STATS_1_MCS_MASK 0x0001e000
  633. /* Description RX_PPDU_END_USER_STATS_1_NSS
  634. Number of spatial streams.
  635. NOTE: RXPCU derives this from the 'Mimo_ss_bitmap'
  636. <enum 0 1_spatial_stream>Single spatial stream
  637. <enum 1 2_spatial_streams>2 spatial streams
  638. <enum 2 3_spatial_streams>3 spatial streams
  639. <enum 3 4_spatial_streams>4 spatial streams
  640. <enum 4 5_spatial_streams>5 spatial streams
  641. <enum 5 6_spatial_streams>6 spatial streams
  642. <enum 6 7_spatial_streams>7 spatial streams
  643. <enum 7 8_spatial_streams>8 spatial streams
  644. */
  645. #define RX_PPDU_END_USER_STATS_1_NSS_OFFSET 0x00000004
  646. #define RX_PPDU_END_USER_STATS_1_NSS_LSB 17
  647. #define RX_PPDU_END_USER_STATS_1_NSS_MASK 0x000e0000
  648. /* Description RX_PPDU_END_USER_STATS_1_OFDMA_INFO_VALID
  649. When set, ofdma RU related info in the following fields
  650. is valid
  651. <legal all>
  652. */
  653. #define RX_PPDU_END_USER_STATS_1_OFDMA_INFO_VALID_OFFSET 0x00000004
  654. #define RX_PPDU_END_USER_STATS_1_OFDMA_INFO_VALID_LSB 20
  655. #define RX_PPDU_END_USER_STATS_1_OFDMA_INFO_VALID_MASK 0x00100000
  656. /* Description RX_PPDU_END_USER_STATS_1_DL_OFDMA_RU_START_INDEX
  657. Field only valid when Ofdma_info_valid is set
  658. RU index number to which User is assigned
  659. RU numbering is over the entire BW, starting from 0
  660. <legal 0-73>
  661. */
  662. #define RX_PPDU_END_USER_STATS_1_DL_OFDMA_RU_START_INDEX_OFFSET 0x00000004
  663. #define RX_PPDU_END_USER_STATS_1_DL_OFDMA_RU_START_INDEX_LSB 21
  664. #define RX_PPDU_END_USER_STATS_1_DL_OFDMA_RU_START_INDEX_MASK 0x0fe00000
  665. /* Description RX_PPDU_END_USER_STATS_1_RESERVED_1A
  666. <legal 0>
  667. */
  668. #define RX_PPDU_END_USER_STATS_1_RESERVED_1A_OFFSET 0x00000004
  669. #define RX_PPDU_END_USER_STATS_1_RESERVED_1A_LSB 28
  670. #define RX_PPDU_END_USER_STATS_1_RESERVED_1A_MASK 0xf0000000
  671. /* Description RX_PPDU_END_USER_STATS_2_DL_OFDMA_RU_WIDTH
  672. The size of the RU for this user.
  673. In units of 1 (26 tone) RU
  674. <legal 1-74>
  675. */
  676. #define RX_PPDU_END_USER_STATS_2_DL_OFDMA_RU_WIDTH_OFFSET 0x00000008
  677. #define RX_PPDU_END_USER_STATS_2_DL_OFDMA_RU_WIDTH_LSB 0
  678. #define RX_PPDU_END_USER_STATS_2_DL_OFDMA_RU_WIDTH_MASK 0x0000007f
  679. /* Description RX_PPDU_END_USER_STATS_2_RESERVED_2A
  680. <legal 0>
  681. */
  682. #define RX_PPDU_END_USER_STATS_2_RESERVED_2A_OFFSET 0x00000008
  683. #define RX_PPDU_END_USER_STATS_2_RESERVED_2A_LSB 7
  684. #define RX_PPDU_END_USER_STATS_2_RESERVED_2A_MASK 0x00000080
  685. /* Description RX_PPDU_END_USER_STATS_2_USER_RECEIVE_QUALITY
  686. RSSI / EVM for this user ???
  687. Details TBD
  688. <legal all>
  689. */
  690. #define RX_PPDU_END_USER_STATS_2_USER_RECEIVE_QUALITY_OFFSET 0x00000008
  691. #define RX_PPDU_END_USER_STATS_2_USER_RECEIVE_QUALITY_LSB 8
  692. #define RX_PPDU_END_USER_STATS_2_USER_RECEIVE_QUALITY_MASK 0x0000ff00
  693. /* Description RX_PPDU_END_USER_STATS_2_MPDU_CNT_FCS_ERR
  694. The number of MPDUs received from this STA in this PPDU
  695. with FCS errors
  696. <legal all>
  697. */
  698. #define RX_PPDU_END_USER_STATS_2_MPDU_CNT_FCS_ERR_OFFSET 0x00000008
  699. #define RX_PPDU_END_USER_STATS_2_MPDU_CNT_FCS_ERR_LSB 16
  700. #define RX_PPDU_END_USER_STATS_2_MPDU_CNT_FCS_ERR_MASK 0x03ff0000
  701. /* Description RX_PPDU_END_USER_STATS_2_WBM2RXDMA_BUF_SOURCE_USED
  702. Field filled in by RXDMA
  703. When set, RXDMA has used the wbm2rxdma_buf ring as
  704. source for at least one of the frames in this PPDU.
  705. */
  706. #define RX_PPDU_END_USER_STATS_2_WBM2RXDMA_BUF_SOURCE_USED_OFFSET 0x00000008
  707. #define RX_PPDU_END_USER_STATS_2_WBM2RXDMA_BUF_SOURCE_USED_LSB 26
  708. #define RX_PPDU_END_USER_STATS_2_WBM2RXDMA_BUF_SOURCE_USED_MASK 0x04000000
  709. /* Description RX_PPDU_END_USER_STATS_2_FW2RXDMA_BUF_SOURCE_USED
  710. Field filled in by RXDMA
  711. When set, RXDMA has used the fw2rxdma_buf ring as source
  712. for at least one of the frames in this PPDU.
  713. */
  714. #define RX_PPDU_END_USER_STATS_2_FW2RXDMA_BUF_SOURCE_USED_OFFSET 0x00000008
  715. #define RX_PPDU_END_USER_STATS_2_FW2RXDMA_BUF_SOURCE_USED_LSB 27
  716. #define RX_PPDU_END_USER_STATS_2_FW2RXDMA_BUF_SOURCE_USED_MASK 0x08000000
  717. /* Description RX_PPDU_END_USER_STATS_2_SW2RXDMA_BUF_SOURCE_USED
  718. Field filled in by RXDMA
  719. When set, RXDMA has used the sw2rxdma_buf ring as source
  720. for at least one of the frames in this PPDU.
  721. */
  722. #define RX_PPDU_END_USER_STATS_2_SW2RXDMA_BUF_SOURCE_USED_OFFSET 0x00000008
  723. #define RX_PPDU_END_USER_STATS_2_SW2RXDMA_BUF_SOURCE_USED_LSB 28
  724. #define RX_PPDU_END_USER_STATS_2_SW2RXDMA_BUF_SOURCE_USED_MASK 0x10000000
  725. /* Description RX_PPDU_END_USER_STATS_2_RESERVED_2B
  726. <legal 0>
  727. */
  728. #define RX_PPDU_END_USER_STATS_2_RESERVED_2B_OFFSET 0x00000008
  729. #define RX_PPDU_END_USER_STATS_2_RESERVED_2B_LSB 29
  730. #define RX_PPDU_END_USER_STATS_2_RESERVED_2B_MASK 0xe0000000
  731. /* Description RX_PPDU_END_USER_STATS_3_MPDU_CNT_FCS_OK
  732. The number of MPDUs received from this STA in this PPDU
  733. with correct FCS
  734. <legal all>
  735. */
  736. #define RX_PPDU_END_USER_STATS_3_MPDU_CNT_FCS_OK_OFFSET 0x0000000c
  737. #define RX_PPDU_END_USER_STATS_3_MPDU_CNT_FCS_OK_LSB 0
  738. #define RX_PPDU_END_USER_STATS_3_MPDU_CNT_FCS_OK_MASK 0x000001ff
  739. /* Description RX_PPDU_END_USER_STATS_3_FRAME_CONTROL_INFO_VALID
  740. When set, the frame_control_info field contains valid
  741. information
  742. <legal all>
  743. */
  744. #define RX_PPDU_END_USER_STATS_3_FRAME_CONTROL_INFO_VALID_OFFSET 0x0000000c
  745. #define RX_PPDU_END_USER_STATS_3_FRAME_CONTROL_INFO_VALID_LSB 9
  746. #define RX_PPDU_END_USER_STATS_3_FRAME_CONTROL_INFO_VALID_MASK 0x00000200
  747. /* Description RX_PPDU_END_USER_STATS_3_QOS_CONTROL_INFO_VALID
  748. When set, the QoS_control_info field contains valid
  749. information
  750. <legal all>
  751. */
  752. #define RX_PPDU_END_USER_STATS_3_QOS_CONTROL_INFO_VALID_OFFSET 0x0000000c
  753. #define RX_PPDU_END_USER_STATS_3_QOS_CONTROL_INFO_VALID_LSB 10
  754. #define RX_PPDU_END_USER_STATS_3_QOS_CONTROL_INFO_VALID_MASK 0x00000400
  755. /* Description RX_PPDU_END_USER_STATS_3_HT_CONTROL_INFO_VALID
  756. When set, the HT_control_field contains valid
  757. information
  758. <legal all>
  759. */
  760. #define RX_PPDU_END_USER_STATS_3_HT_CONTROL_INFO_VALID_OFFSET 0x0000000c
  761. #define RX_PPDU_END_USER_STATS_3_HT_CONTROL_INFO_VALID_LSB 11
  762. #define RX_PPDU_END_USER_STATS_3_HT_CONTROL_INFO_VALID_MASK 0x00000800
  763. /* Description RX_PPDU_END_USER_STATS_3_DATA_SEQUENCE_CONTROL_INFO_VALID
  764. When set, the First_data_seq_ctrl field contains valid
  765. information
  766. <legal all>
  767. */
  768. #define RX_PPDU_END_USER_STATS_3_DATA_SEQUENCE_CONTROL_INFO_VALID_OFFSET 0x0000000c
  769. #define RX_PPDU_END_USER_STATS_3_DATA_SEQUENCE_CONTROL_INFO_VALID_LSB 12
  770. #define RX_PPDU_END_USER_STATS_3_DATA_SEQUENCE_CONTROL_INFO_VALID_MASK 0x00001000
  771. /* Description RX_PPDU_END_USER_STATS_3_HT_CONTROL_INFO_NULL_VALID
  772. When set, the HT_control_NULL_field contains valid
  773. information
  774. <legal all>
  775. */
  776. #define RX_PPDU_END_USER_STATS_3_HT_CONTROL_INFO_NULL_VALID_OFFSET 0x0000000c
  777. #define RX_PPDU_END_USER_STATS_3_HT_CONTROL_INFO_NULL_VALID_LSB 13
  778. #define RX_PPDU_END_USER_STATS_3_HT_CONTROL_INFO_NULL_VALID_MASK 0x00002000
  779. /* Description RX_PPDU_END_USER_STATS_3_RESERVED_3A
  780. <legal 0>
  781. */
  782. #define RX_PPDU_END_USER_STATS_3_RESERVED_3A_OFFSET 0x0000000c
  783. #define RX_PPDU_END_USER_STATS_3_RESERVED_3A_LSB 14
  784. #define RX_PPDU_END_USER_STATS_3_RESERVED_3A_MASK 0x0000c000
  785. /* Description RX_PPDU_END_USER_STATS_3_RXDMA2REO_RING_USED
  786. Field filled in by RXDMA
  787. Set when at least one frame during this PPDU got pushed
  788. to this ring by RXDMA
  789. */
  790. #define RX_PPDU_END_USER_STATS_3_RXDMA2REO_RING_USED_OFFSET 0x0000000c
  791. #define RX_PPDU_END_USER_STATS_3_RXDMA2REO_RING_USED_LSB 16
  792. #define RX_PPDU_END_USER_STATS_3_RXDMA2REO_RING_USED_MASK 0x00010000
  793. /* Description RX_PPDU_END_USER_STATS_3_RXDMA2FW_RING_USED
  794. Field filled in by RXDMA
  795. Set when at least one frame during this PPDU got pushed
  796. to this ring by RXDMA
  797. */
  798. #define RX_PPDU_END_USER_STATS_3_RXDMA2FW_RING_USED_OFFSET 0x0000000c
  799. #define RX_PPDU_END_USER_STATS_3_RXDMA2FW_RING_USED_LSB 17
  800. #define RX_PPDU_END_USER_STATS_3_RXDMA2FW_RING_USED_MASK 0x00020000
  801. /* Description RX_PPDU_END_USER_STATS_3_RXDMA2SW_RING_USED
  802. Field filled in by RXDMA
  803. Set when at least one frame during this PPDU got pushed
  804. to this ring by RXDMA
  805. */
  806. #define RX_PPDU_END_USER_STATS_3_RXDMA2SW_RING_USED_OFFSET 0x0000000c
  807. #define RX_PPDU_END_USER_STATS_3_RXDMA2SW_RING_USED_LSB 18
  808. #define RX_PPDU_END_USER_STATS_3_RXDMA2SW_RING_USED_MASK 0x00040000
  809. /* Description RX_PPDU_END_USER_STATS_3_RXDMA_RELEASE_RING_USED
  810. Field filled in by RXDMA
  811. Set when at least one frame during this PPDU got pushed
  812. to this ring by RXDMA
  813. */
  814. #define RX_PPDU_END_USER_STATS_3_RXDMA_RELEASE_RING_USED_OFFSET 0x0000000c
  815. #define RX_PPDU_END_USER_STATS_3_RXDMA_RELEASE_RING_USED_LSB 19
  816. #define RX_PPDU_END_USER_STATS_3_RXDMA_RELEASE_RING_USED_MASK 0x00080000
  817. /* Description RX_PPDU_END_USER_STATS_3_HT_CONTROL_FIELD_PKT_TYPE
  818. Field only valid when HT_control_info_valid or
  819. HT_control_info_NULL_valid is set.
  820. Indicates what the PHY receive type was for receiving
  821. this frame. Can help determine if the HT_CONTROL field shall
  822. be interpreted as HT/VHT or HE.
  823. NOTE: later on in the 11ax IEEE spec a bit within the HT
  824. control field was introduced that explicitly indicated how
  825. to interpret the HT control field.... As HT, VHT, or HE.
  826. <enum 0 dot11a>802.11a PPDU type
  827. <enum 1 dot11b>802.11b PPDU type
  828. <enum 2 dot11n_mm>802.11n Mixed Mode PPDU type
  829. <enum 3 dot11ac>802.11ac PPDU type
  830. <enum 4 dot11ax>802.11ax PPDU type
  831. */
  832. #define RX_PPDU_END_USER_STATS_3_HT_CONTROL_FIELD_PKT_TYPE_OFFSET 0x0000000c
  833. #define RX_PPDU_END_USER_STATS_3_HT_CONTROL_FIELD_PKT_TYPE_LSB 20
  834. #define RX_PPDU_END_USER_STATS_3_HT_CONTROL_FIELD_PKT_TYPE_MASK 0x00f00000
  835. /* Description RX_PPDU_END_USER_STATS_3_RESERVED_3B
  836. <legal 0>
  837. */
  838. #define RX_PPDU_END_USER_STATS_3_RESERVED_3B_OFFSET 0x0000000c
  839. #define RX_PPDU_END_USER_STATS_3_RESERVED_3B_LSB 24
  840. #define RX_PPDU_END_USER_STATS_3_RESERVED_3B_MASK 0xff000000
  841. /* Description RX_PPDU_END_USER_STATS_4_AST_INDEX
  842. This field indicates the index of the AST entry
  843. corresponding to this MPDU. It is provided by the GSE module
  844. instantiated in RXPCU.
  845. A value of 0xFFFF indicates an invalid AST index,
  846. meaning that No AST entry was found or NO AST search was
  847. performed
  848. <legal all>
  849. */
  850. #define RX_PPDU_END_USER_STATS_4_AST_INDEX_OFFSET 0x00000010
  851. #define RX_PPDU_END_USER_STATS_4_AST_INDEX_LSB 0
  852. #define RX_PPDU_END_USER_STATS_4_AST_INDEX_MASK 0x0000ffff
  853. /* Description RX_PPDU_END_USER_STATS_4_FRAME_CONTROL_FIELD
  854. Field only valid when Frame_control_info_valid is set.
  855. Last successfully received Frame_control field of data
  856. frame (excluding Data NULL/ QoS Null) for this user
  857. Mainly used to track the PM state of the transmitted
  858. device
  859. NOTE: only data frame info is needed, as control and
  860. management frames are already routed to the FW.
  861. <legal all>
  862. */
  863. #define RX_PPDU_END_USER_STATS_4_FRAME_CONTROL_FIELD_OFFSET 0x00000010
  864. #define RX_PPDU_END_USER_STATS_4_FRAME_CONTROL_FIELD_LSB 16
  865. #define RX_PPDU_END_USER_STATS_4_FRAME_CONTROL_FIELD_MASK 0xffff0000
  866. /* Description RX_PPDU_END_USER_STATS_5_FIRST_DATA_SEQ_CTRL
  867. Field only valid when Data_sequence_control_info_valid
  868. is set.
  869. Sequence control field of the first data frame
  870. (excluding Data NULL or QoS Data null) received for this
  871. user with correct FCS
  872. NOTE: only data frame info is needed, as control and
  873. management frames are already routed to the FW.
  874. <legal all>
  875. */
  876. #define RX_PPDU_END_USER_STATS_5_FIRST_DATA_SEQ_CTRL_OFFSET 0x00000014
  877. #define RX_PPDU_END_USER_STATS_5_FIRST_DATA_SEQ_CTRL_LSB 0
  878. #define RX_PPDU_END_USER_STATS_5_FIRST_DATA_SEQ_CTRL_MASK 0x0000ffff
  879. /* Description RX_PPDU_END_USER_STATS_5_QOS_CONTROL_FIELD
  880. Field only valid when QoS_control_info_valid is set.
  881. Last successfully received QoS_control field of data
  882. frame (excluding Data NULL/ QoS Null) for this user
  883. Note that in case of multi TID, this field can only
  884. reflect the last properly received MPDU, and thus can not
  885. indicate all potentially different TIDs that had been
  886. received earlier.
  887. There are however per TID fields, that will contain
  888. among other things all buffer status info: See
  889. QoSCtrl_15_8_tid???
  890. <legal all>
  891. */
  892. #define RX_PPDU_END_USER_STATS_5_QOS_CONTROL_FIELD_OFFSET 0x00000014
  893. #define RX_PPDU_END_USER_STATS_5_QOS_CONTROL_FIELD_LSB 16
  894. #define RX_PPDU_END_USER_STATS_5_QOS_CONTROL_FIELD_MASK 0xffff0000
  895. /* Description RX_PPDU_END_USER_STATS_6_HT_CONTROL_FIELD
  896. Field only valid when HT_control_info_valid is set.
  897. Last successfully received
  898. HT_CONTROL/VHT_CONTROL/HE_CONTROL field of data frames,
  899. excluding QoS Null frames for this user.
  900. NOTE: HT control fields from QoS Null frames are
  901. captured in field HT_control_NULL_field
  902. <legal all>
  903. */
  904. #define RX_PPDU_END_USER_STATS_6_HT_CONTROL_FIELD_OFFSET 0x00000018
  905. #define RX_PPDU_END_USER_STATS_6_HT_CONTROL_FIELD_LSB 0
  906. #define RX_PPDU_END_USER_STATS_6_HT_CONTROL_FIELD_MASK 0xffffffff
  907. /* Description RX_PPDU_END_USER_STATS_7_FCS_OK_BITMAP_31_0
  908. Bitmap indicates in order of received MPDUs, which MPDUs
  909. had an passing FCS or had an error.
  910. 1: FCS OK
  911. 0: FCS error
  912. <legal all>
  913. */
  914. #define RX_PPDU_END_USER_STATS_7_FCS_OK_BITMAP_31_0_OFFSET 0x0000001c
  915. #define RX_PPDU_END_USER_STATS_7_FCS_OK_BITMAP_31_0_LSB 0
  916. #define RX_PPDU_END_USER_STATS_7_FCS_OK_BITMAP_31_0_MASK 0xffffffff
  917. /* Description RX_PPDU_END_USER_STATS_8_FCS_OK_BITMAP_63_32
  918. Bitmap indicates in order of received MPDUs, which MPDUs
  919. had an passing FCS or had an error.
  920. 1: FCS OK
  921. 0: FCS error
  922. NOTE: for users 0, 1, 2 and 3, additional bitmap info
  923. (up to 256 bitmap window) is provided in
  924. RX_PPDU_END_USER_STATS_EXT TLV
  925. <legal all>
  926. */
  927. #define RX_PPDU_END_USER_STATS_8_FCS_OK_BITMAP_63_32_OFFSET 0x00000020
  928. #define RX_PPDU_END_USER_STATS_8_FCS_OK_BITMAP_63_32_LSB 0
  929. #define RX_PPDU_END_USER_STATS_8_FCS_OK_BITMAP_63_32_MASK 0xffffffff
  930. /* Description RX_PPDU_END_USER_STATS_9_UDP_MSDU_COUNT
  931. Field filled in by RX OLE
  932. Set to 0 by RXPCU
  933. The number of MSDUs that are part of MPDUs without FCS
  934. error, that contain UDP frames.
  935. <legal all>
  936. */
  937. #define RX_PPDU_END_USER_STATS_9_UDP_MSDU_COUNT_OFFSET 0x00000024
  938. #define RX_PPDU_END_USER_STATS_9_UDP_MSDU_COUNT_LSB 0
  939. #define RX_PPDU_END_USER_STATS_9_UDP_MSDU_COUNT_MASK 0x0000ffff
  940. /* Description RX_PPDU_END_USER_STATS_9_TCP_MSDU_COUNT
  941. Field filled in by RX OLE
  942. Set to 0 by RXPCU
  943. The number of MSDUs that are part of MPDUs without FCS
  944. error, that contain TCP frames.
  945. (Note: This does NOT include TCP-ACK)
  946. <legal all>
  947. */
  948. #define RX_PPDU_END_USER_STATS_9_TCP_MSDU_COUNT_OFFSET 0x00000024
  949. #define RX_PPDU_END_USER_STATS_9_TCP_MSDU_COUNT_LSB 16
  950. #define RX_PPDU_END_USER_STATS_9_TCP_MSDU_COUNT_MASK 0xffff0000
  951. /* Description RX_PPDU_END_USER_STATS_10_OTHER_MSDU_COUNT
  952. Field filled in by RX OLE
  953. Set to 0 by RXPCU
  954. The number of MSDUs that are part of MPDUs without FCS
  955. error, that contain neither UDP or TCP frames.
  956. Includes Management and control frames.
  957. <legal all>
  958. */
  959. #define RX_PPDU_END_USER_STATS_10_OTHER_MSDU_COUNT_OFFSET 0x00000028
  960. #define RX_PPDU_END_USER_STATS_10_OTHER_MSDU_COUNT_LSB 0
  961. #define RX_PPDU_END_USER_STATS_10_OTHER_MSDU_COUNT_MASK 0x0000ffff
  962. /* Description RX_PPDU_END_USER_STATS_10_TCP_ACK_MSDU_COUNT
  963. Field filled in by RX OLE
  964. Set to 0 by RXPCU
  965. The number of MSDUs that are part of MPDUs without FCS
  966. error, that contain TCP ack frames.
  967. <legal all>
  968. */
  969. #define RX_PPDU_END_USER_STATS_10_TCP_ACK_MSDU_COUNT_OFFSET 0x00000028
  970. #define RX_PPDU_END_USER_STATS_10_TCP_ACK_MSDU_COUNT_LSB 16
  971. #define RX_PPDU_END_USER_STATS_10_TCP_ACK_MSDU_COUNT_MASK 0xffff0000
  972. /* Description RX_PPDU_END_USER_STATS_11_SW_RESPONSE_REFERENCE_PTR
  973. Pointer that SW uses to refer back to an expected
  974. response reception. Used for Rate adaptation purposes.
  975. When a reception occurrs that is not tied to an expected
  976. response, this field is set to 0x0
  977. Note: further on in this TLV there is also the field:
  978. Sw_response_reference_ptr
  979. <legal all>
  980. */
  981. #define RX_PPDU_END_USER_STATS_11_SW_RESPONSE_REFERENCE_PTR_OFFSET 0x0000002c
  982. #define RX_PPDU_END_USER_STATS_11_SW_RESPONSE_REFERENCE_PTR_LSB 0
  983. #define RX_PPDU_END_USER_STATS_11_SW_RESPONSE_REFERENCE_PTR_MASK 0xffffffff
  984. /* Description RX_PPDU_END_USER_STATS_12_RECEIVED_QOS_DATA_TID_BITMAP
  985. Whenever a frame is received that contains a QoS control
  986. field (that includes QoS Data and/or QoS Null), the bit in
  987. this field that corresponds to the received TID shall be
  988. set.
  989. ...Bitmap[0] = TID0
  990. ...Bitmap[1] = TID1
  991. Etc.
  992. <legal all>
  993. */
  994. #define RX_PPDU_END_USER_STATS_12_RECEIVED_QOS_DATA_TID_BITMAP_OFFSET 0x00000030
  995. #define RX_PPDU_END_USER_STATS_12_RECEIVED_QOS_DATA_TID_BITMAP_LSB 0
  996. #define RX_PPDU_END_USER_STATS_12_RECEIVED_QOS_DATA_TID_BITMAP_MASK 0x0000ffff
  997. /* Description RX_PPDU_END_USER_STATS_12_RECEIVED_QOS_DATA_TID_EOSP_BITMAP
  998. Field initialized to 0
  999. For every QoS Data frame that is correctly received, the
  1000. EOSP bit of that frame is copied over into the corresponding
  1001. TID related field.
  1002. Note that this implies that the bits here represent the
  1003. EOSP bit status for each TID of the last MPDU received for
  1004. that TID.
  1005. received TID shall be set.
  1006. ...eosp_bitmap[0] = eosp of TID0
  1007. ...eosp_bitmap[1] = eosp of TID1
  1008. Etc.
  1009. <legal all>
  1010. */
  1011. #define RX_PPDU_END_USER_STATS_12_RECEIVED_QOS_DATA_TID_EOSP_BITMAP_OFFSET 0x00000030
  1012. #define RX_PPDU_END_USER_STATS_12_RECEIVED_QOS_DATA_TID_EOSP_BITMAP_LSB 16
  1013. #define RX_PPDU_END_USER_STATS_12_RECEIVED_QOS_DATA_TID_EOSP_BITMAP_MASK 0xffff0000
  1014. /* Description RX_PPDU_END_USER_STATS_13_QOSCTRL_15_8_TID0
  1015. Field only valid when Received_qos_data_tid_bitmap[0] is
  1016. set
  1017. QoS control field bits 15-8 of the last properly
  1018. received MPDU with a QoS control field embedded, with TID
  1019. == 0
  1020. */
  1021. #define RX_PPDU_END_USER_STATS_13_QOSCTRL_15_8_TID0_OFFSET 0x00000034
  1022. #define RX_PPDU_END_USER_STATS_13_QOSCTRL_15_8_TID0_LSB 0
  1023. #define RX_PPDU_END_USER_STATS_13_QOSCTRL_15_8_TID0_MASK 0x000000ff
  1024. /* Description RX_PPDU_END_USER_STATS_13_QOSCTRL_15_8_TID1
  1025. Field only valid when Received_qos_data_tid_bitmap[1] is
  1026. set
  1027. QoS control field bits 15-8 of the last properly
  1028. received MPDU with a QoS control field embedded, with TID
  1029. == 1
  1030. */
  1031. #define RX_PPDU_END_USER_STATS_13_QOSCTRL_15_8_TID1_OFFSET 0x00000034
  1032. #define RX_PPDU_END_USER_STATS_13_QOSCTRL_15_8_TID1_LSB 8
  1033. #define RX_PPDU_END_USER_STATS_13_QOSCTRL_15_8_TID1_MASK 0x0000ff00
  1034. /* Description RX_PPDU_END_USER_STATS_13_QOSCTRL_15_8_TID2
  1035. Field only valid when Received_qos_data_tid_bitmap[2] is
  1036. set
  1037. QoS control field bits 15-8 of the last properly
  1038. received MPDU with a QoS control field embedded, with TID
  1039. == 2
  1040. */
  1041. #define RX_PPDU_END_USER_STATS_13_QOSCTRL_15_8_TID2_OFFSET 0x00000034
  1042. #define RX_PPDU_END_USER_STATS_13_QOSCTRL_15_8_TID2_LSB 16
  1043. #define RX_PPDU_END_USER_STATS_13_QOSCTRL_15_8_TID2_MASK 0x00ff0000
  1044. /* Description RX_PPDU_END_USER_STATS_13_QOSCTRL_15_8_TID3
  1045. Field only valid when Received_qos_data_tid_bitmap[3] is
  1046. set
  1047. QoS control field bits 15-8 of the last properly
  1048. received MPDU with a QoS control field embedded, with TID
  1049. == 3
  1050. */
  1051. #define RX_PPDU_END_USER_STATS_13_QOSCTRL_15_8_TID3_OFFSET 0x00000034
  1052. #define RX_PPDU_END_USER_STATS_13_QOSCTRL_15_8_TID3_LSB 24
  1053. #define RX_PPDU_END_USER_STATS_13_QOSCTRL_15_8_TID3_MASK 0xff000000
  1054. /* Description RX_PPDU_END_USER_STATS_14_QOSCTRL_15_8_TID4
  1055. Field only valid when Received_qos_data_tid_bitmap[4] is
  1056. set
  1057. QoS control field bits 15-8 of the last properly
  1058. received MPDU with a QoS control field embedded, with TID
  1059. == 4
  1060. */
  1061. #define RX_PPDU_END_USER_STATS_14_QOSCTRL_15_8_TID4_OFFSET 0x00000038
  1062. #define RX_PPDU_END_USER_STATS_14_QOSCTRL_15_8_TID4_LSB 0
  1063. #define RX_PPDU_END_USER_STATS_14_QOSCTRL_15_8_TID4_MASK 0x000000ff
  1064. /* Description RX_PPDU_END_USER_STATS_14_QOSCTRL_15_8_TID5
  1065. Field only valid when Received_qos_data_tid_bitmap[5] is
  1066. set
  1067. QoS control field bits 15-8 of the last properly
  1068. received MPDU with a QoS control field embedded, with TID
  1069. == 5
  1070. */
  1071. #define RX_PPDU_END_USER_STATS_14_QOSCTRL_15_8_TID5_OFFSET 0x00000038
  1072. #define RX_PPDU_END_USER_STATS_14_QOSCTRL_15_8_TID5_LSB 8
  1073. #define RX_PPDU_END_USER_STATS_14_QOSCTRL_15_8_TID5_MASK 0x0000ff00
  1074. /* Description RX_PPDU_END_USER_STATS_14_QOSCTRL_15_8_TID6
  1075. Field only valid when Received_qos_data_tid_bitmap[6] is
  1076. set
  1077. QoS control field bits 15-8 of the last properly
  1078. received MPDU with a QoS control field embedded, with TID
  1079. == 6
  1080. */
  1081. #define RX_PPDU_END_USER_STATS_14_QOSCTRL_15_8_TID6_OFFSET 0x00000038
  1082. #define RX_PPDU_END_USER_STATS_14_QOSCTRL_15_8_TID6_LSB 16
  1083. #define RX_PPDU_END_USER_STATS_14_QOSCTRL_15_8_TID6_MASK 0x00ff0000
  1084. /* Description RX_PPDU_END_USER_STATS_14_QOSCTRL_15_8_TID7
  1085. Field only valid when Received_qos_data_tid_bitmap[7] is
  1086. set
  1087. QoS control field bits 15-8 of the last properly
  1088. received MPDU with a QoS control field embedded, with TID
  1089. == 7
  1090. */
  1091. #define RX_PPDU_END_USER_STATS_14_QOSCTRL_15_8_TID7_OFFSET 0x00000038
  1092. #define RX_PPDU_END_USER_STATS_14_QOSCTRL_15_8_TID7_LSB 24
  1093. #define RX_PPDU_END_USER_STATS_14_QOSCTRL_15_8_TID7_MASK 0xff000000
  1094. /* Description RX_PPDU_END_USER_STATS_15_QOSCTRL_15_8_TID8
  1095. Field only valid when Received_qos_data_tid_bitmap[8] is
  1096. set
  1097. QoS control field bits 15-8 of the last properly
  1098. received MPDU with a QoS control field embedded, with TID
  1099. == 8
  1100. */
  1101. #define RX_PPDU_END_USER_STATS_15_QOSCTRL_15_8_TID8_OFFSET 0x0000003c
  1102. #define RX_PPDU_END_USER_STATS_15_QOSCTRL_15_8_TID8_LSB 0
  1103. #define RX_PPDU_END_USER_STATS_15_QOSCTRL_15_8_TID8_MASK 0x000000ff
  1104. /* Description RX_PPDU_END_USER_STATS_15_QOSCTRL_15_8_TID9
  1105. Field only valid when Received_qos_data_tid_bitmap[9] is
  1106. set
  1107. QoS control field bits 15-8 of the last properly
  1108. received MPDU with a QoS control field embedded, with TID
  1109. == 9
  1110. */
  1111. #define RX_PPDU_END_USER_STATS_15_QOSCTRL_15_8_TID9_OFFSET 0x0000003c
  1112. #define RX_PPDU_END_USER_STATS_15_QOSCTRL_15_8_TID9_LSB 8
  1113. #define RX_PPDU_END_USER_STATS_15_QOSCTRL_15_8_TID9_MASK 0x0000ff00
  1114. /* Description RX_PPDU_END_USER_STATS_15_QOSCTRL_15_8_TID10
  1115. Field only valid when Received_qos_data_tid_bitmap[10]
  1116. is set
  1117. QoS control field bits 15-8 of the last properly
  1118. received MPDU with a QoS control field embedded, with TID
  1119. == 10
  1120. */
  1121. #define RX_PPDU_END_USER_STATS_15_QOSCTRL_15_8_TID10_OFFSET 0x0000003c
  1122. #define RX_PPDU_END_USER_STATS_15_QOSCTRL_15_8_TID10_LSB 16
  1123. #define RX_PPDU_END_USER_STATS_15_QOSCTRL_15_8_TID10_MASK 0x00ff0000
  1124. /* Description RX_PPDU_END_USER_STATS_15_QOSCTRL_15_8_TID11
  1125. Field only valid when Received_qos_data_tid_bitmap[11]
  1126. is set
  1127. QoS control field bits 15-8 of the last properly
  1128. received MPDU with a QoS control field embedded, with TID
  1129. == 11
  1130. */
  1131. #define RX_PPDU_END_USER_STATS_15_QOSCTRL_15_8_TID11_OFFSET 0x0000003c
  1132. #define RX_PPDU_END_USER_STATS_15_QOSCTRL_15_8_TID11_LSB 24
  1133. #define RX_PPDU_END_USER_STATS_15_QOSCTRL_15_8_TID11_MASK 0xff000000
  1134. /* Description RX_PPDU_END_USER_STATS_16_QOSCTRL_15_8_TID12
  1135. Field only valid when Received_qos_data_tid_bitmap[12]
  1136. is set
  1137. QoS control field bits 15-8 of the last properly
  1138. received MPDU with a QoS control field embedded, with TID
  1139. == 12
  1140. */
  1141. #define RX_PPDU_END_USER_STATS_16_QOSCTRL_15_8_TID12_OFFSET 0x00000040
  1142. #define RX_PPDU_END_USER_STATS_16_QOSCTRL_15_8_TID12_LSB 0
  1143. #define RX_PPDU_END_USER_STATS_16_QOSCTRL_15_8_TID12_MASK 0x000000ff
  1144. /* Description RX_PPDU_END_USER_STATS_16_QOSCTRL_15_8_TID13
  1145. Field only valid when Received_qos_data_tid_bitmap[13]
  1146. is set
  1147. QoS control field bits 15-8 of the last properly
  1148. received MPDU with a QoS control field embedded, with TID
  1149. == 13
  1150. */
  1151. #define RX_PPDU_END_USER_STATS_16_QOSCTRL_15_8_TID13_OFFSET 0x00000040
  1152. #define RX_PPDU_END_USER_STATS_16_QOSCTRL_15_8_TID13_LSB 8
  1153. #define RX_PPDU_END_USER_STATS_16_QOSCTRL_15_8_TID13_MASK 0x0000ff00
  1154. /* Description RX_PPDU_END_USER_STATS_16_QOSCTRL_15_8_TID14
  1155. Field only valid when Received_qos_data_tid_bitmap[14]
  1156. is set
  1157. QoS control field bits 15-8 of the last properly
  1158. received MPDU with a QoS control field embedded, with TID
  1159. == 14
  1160. */
  1161. #define RX_PPDU_END_USER_STATS_16_QOSCTRL_15_8_TID14_OFFSET 0x00000040
  1162. #define RX_PPDU_END_USER_STATS_16_QOSCTRL_15_8_TID14_LSB 16
  1163. #define RX_PPDU_END_USER_STATS_16_QOSCTRL_15_8_TID14_MASK 0x00ff0000
  1164. /* Description RX_PPDU_END_USER_STATS_16_QOSCTRL_15_8_TID15
  1165. Field only valid when Received_qos_data_tid_bitmap[15]
  1166. is set
  1167. QoS control field bits 15-8 of the last properly
  1168. received MPDU with a QoS control field embedded, with TID
  1169. == 15
  1170. */
  1171. #define RX_PPDU_END_USER_STATS_16_QOSCTRL_15_8_TID15_OFFSET 0x00000040
  1172. #define RX_PPDU_END_USER_STATS_16_QOSCTRL_15_8_TID15_LSB 24
  1173. #define RX_PPDU_END_USER_STATS_16_QOSCTRL_15_8_TID15_MASK 0xff000000
  1174. /* Description RX_PPDU_END_USER_STATS_17_MPDU_OK_BYTE_COUNT
  1175. The number of bytes received within an MPDU for this
  1176. user with correct FCS. This includes the FCS field
  1177. NOTE:
  1178. The sum of the four fields.....
  1179. Mpdu_ok_byte_count +
  1180. mpdu_err_byte_count +
  1181. .....is the total number of bytes that were received for
  1182. this user from the PHY.
  1183. <legal all>
  1184. */
  1185. #define RX_PPDU_END_USER_STATS_17_MPDU_OK_BYTE_COUNT_OFFSET 0x00000044
  1186. #define RX_PPDU_END_USER_STATS_17_MPDU_OK_BYTE_COUNT_LSB 0
  1187. #define RX_PPDU_END_USER_STATS_17_MPDU_OK_BYTE_COUNT_MASK 0x01ffffff
  1188. /* Description RX_PPDU_END_USER_STATS_17_AMPDU_DELIM_OK_COUNT_6_0
  1189. Number of AMPDU delimiter received with correct
  1190. structure
  1191. LSB 7 bits from this counter
  1192. Note that this is a delimiter count and not byte count.
  1193. To get to the number of bytes occupied by these delimiters,
  1194. multiply this number by 4
  1195. <legal all>
  1196. */
  1197. #define RX_PPDU_END_USER_STATS_17_AMPDU_DELIM_OK_COUNT_6_0_OFFSET 0x00000044
  1198. #define RX_PPDU_END_USER_STATS_17_AMPDU_DELIM_OK_COUNT_6_0_LSB 25
  1199. #define RX_PPDU_END_USER_STATS_17_AMPDU_DELIM_OK_COUNT_6_0_MASK 0xfe000000
  1200. /* Description RX_PPDU_END_USER_STATS_18_AMPDU_DELIM_ERR_COUNT
  1201. The number of MPDU delimiter errors counted for this
  1202. user.
  1203. Note that this is a delimiter count and not byte count.
  1204. To get to the number of bytes occupied by these delimiters,
  1205. multiply this number by 4
  1206. <legal all>
  1207. */
  1208. #define RX_PPDU_END_USER_STATS_18_AMPDU_DELIM_ERR_COUNT_OFFSET 0x00000048
  1209. #define RX_PPDU_END_USER_STATS_18_AMPDU_DELIM_ERR_COUNT_LSB 0
  1210. #define RX_PPDU_END_USER_STATS_18_AMPDU_DELIM_ERR_COUNT_MASK 0x01ffffff
  1211. /* Description RX_PPDU_END_USER_STATS_18_AMPDU_DELIM_OK_COUNT_13_7
  1212. Number of AMPDU delimiters received with correct
  1213. structure
  1214. Bits 13-7 from this counter
  1215. Note that this is a delimiter count and not byte count.
  1216. To get to the number of bytes occupied by these delimiters,
  1217. multiply this number by 4
  1218. <legal all>
  1219. */
  1220. #define RX_PPDU_END_USER_STATS_18_AMPDU_DELIM_OK_COUNT_13_7_OFFSET 0x00000048
  1221. #define RX_PPDU_END_USER_STATS_18_AMPDU_DELIM_OK_COUNT_13_7_LSB 25
  1222. #define RX_PPDU_END_USER_STATS_18_AMPDU_DELIM_OK_COUNT_13_7_MASK 0xfe000000
  1223. /* Description RX_PPDU_END_USER_STATS_19_MPDU_ERR_BYTE_COUNT
  1224. The number of bytes belonging to MPDUs with an FCS
  1225. error. This includes the FCS field.
  1226. <legal all>
  1227. */
  1228. #define RX_PPDU_END_USER_STATS_19_MPDU_ERR_BYTE_COUNT_OFFSET 0x0000004c
  1229. #define RX_PPDU_END_USER_STATS_19_MPDU_ERR_BYTE_COUNT_LSB 0
  1230. #define RX_PPDU_END_USER_STATS_19_MPDU_ERR_BYTE_COUNT_MASK 0x01ffffff
  1231. /* Description RX_PPDU_END_USER_STATS_19_AMPDU_DELIM_OK_COUNT_20_14
  1232. Number of AMPDU delimiters received with correct
  1233. structure
  1234. Bits 20-14 from this counter
  1235. Note that this is a delimiter count and not byte count.
  1236. To get to the number of bytes occupied by these delimiters,
  1237. multiply this number by 4
  1238. <legal all>
  1239. */
  1240. #define RX_PPDU_END_USER_STATS_19_AMPDU_DELIM_OK_COUNT_20_14_OFFSET 0x0000004c
  1241. #define RX_PPDU_END_USER_STATS_19_AMPDU_DELIM_OK_COUNT_20_14_LSB 25
  1242. #define RX_PPDU_END_USER_STATS_19_AMPDU_DELIM_OK_COUNT_20_14_MASK 0xfe000000
  1243. /* Description RX_PPDU_END_USER_STATS_20_NON_CONSECUTIVE_DELIMITER_ERR
  1244. The number of times an MPDU delimiter error is detected
  1245. that is not immediately preceded by another MPDU delimiter
  1246. also with FCS error.
  1247. The counter saturates at 0xFFFF
  1248. <legal all>
  1249. */
  1250. #define RX_PPDU_END_USER_STATS_20_NON_CONSECUTIVE_DELIMITER_ERR_OFFSET 0x00000050
  1251. #define RX_PPDU_END_USER_STATS_20_NON_CONSECUTIVE_DELIMITER_ERR_LSB 0
  1252. #define RX_PPDU_END_USER_STATS_20_NON_CONSECUTIVE_DELIMITER_ERR_MASK 0x0000ffff
  1253. /* Description RX_PPDU_END_USER_STATS_20_RESERVED_20A
  1254. <legal 0>
  1255. */
  1256. #define RX_PPDU_END_USER_STATS_20_RESERVED_20A_OFFSET 0x00000050
  1257. #define RX_PPDU_END_USER_STATS_20_RESERVED_20A_LSB 16
  1258. #define RX_PPDU_END_USER_STATS_20_RESERVED_20A_MASK 0xffff0000
  1259. /* Description RX_PPDU_END_USER_STATS_21_HT_CONTROL_NULL_FIELD
  1260. Last successfully received
  1261. HT_CONTROL/VHT_CONTROL/HE_CONTROL field from QoS Null frame
  1262. for this user.
  1263. <legal all>
  1264. */
  1265. #define RX_PPDU_END_USER_STATS_21_HT_CONTROL_NULL_FIELD_OFFSET 0x00000054
  1266. #define RX_PPDU_END_USER_STATS_21_HT_CONTROL_NULL_FIELD_LSB 0
  1267. #define RX_PPDU_END_USER_STATS_21_HT_CONTROL_NULL_FIELD_MASK 0xffffffff
  1268. /* Description RX_PPDU_END_USER_STATS_22_SW_RESPONSE_REFERENCE_PTR_EXT
  1269. Extended Pointer that SW uses to refer back to an
  1270. expected response reception. Used for Rate adaptation
  1271. purposes.
  1272. When a reception occurrs that is not tied to an expected
  1273. response, this field is set to 0x0
  1274. Note: earlier on in this TLV there is also the field:
  1275. Sw_response_reference_ptr
  1276. <legal all>
  1277. */
  1278. #define RX_PPDU_END_USER_STATS_22_SW_RESPONSE_REFERENCE_PTR_EXT_OFFSET 0x00000058
  1279. #define RX_PPDU_END_USER_STATS_22_SW_RESPONSE_REFERENCE_PTR_EXT_LSB 0
  1280. #define RX_PPDU_END_USER_STATS_22_SW_RESPONSE_REFERENCE_PTR_EXT_MASK 0xffffffff
  1281. #endif // _RX_PPDU_END_USER_STATS_H_