rx_ppdu_end_user_stats.h 60 KB

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