1  /*
2   * Copyright (c) 2018 The Linux Foundation. All rights reserved.
3   *
4   * Permission to use, copy, modify, and/or distribute this software for
5   * any purpose with or without fee is hereby granted, provided that the
6   * above copyright notice and this permission notice appear in all
7   * copies.
8   *
9   * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL
10   * WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED
11   * WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE
12   * AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL
13   * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
14   * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
15   * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
16   * PERFORMANCE OF THIS SOFTWARE.
17   */
18  
19  #ifndef _RX_PPDU_END_USER_STATS_H_
20  #define _RX_PPDU_END_USER_STATS_H_
21  #if !defined(__ASSEMBLER__)
22  #endif
23  
24  #include "rx_rxpcu_classification_overview.h"
25  
26  // ################ START SUMMARY #################
27  //
28  //	Dword	Fields
29  //	0	struct rx_rxpcu_classification_overview rxpcu_classification_details;
30  //	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]
31  //	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]
32  //	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]
33  //	4	ast_index[15:0], frame_control_field[31:16]
34  //	5	first_data_seq_ctrl[15:0], qos_control_field[31:16]
35  //	6	ht_control_field[31:0]
36  //	7	fcs_ok_bitmap_31_0[31:0]
37  //	8	fcs_ok_bitmap_63_32[31:0]
38  //	9	udp_msdu_count[15:0], tcp_msdu_count[31:16]
39  //	10	other_msdu_count[15:0], tcp_ack_msdu_count[31:16]
40  //	11	sw_response_reference_ptr[31:0]
41  //	12	received_qos_data_tid_bitmap[15:0], received_qos_data_tid_eosp_bitmap[31:16]
42  //	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]
43  //	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]
44  //	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]
45  //	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]
46  //	17	mpdu_ok_byte_count[24:0], ampdu_delim_ok_count_6_0[31:25]
47  //	18	ampdu_delim_err_count[24:0], ampdu_delim_ok_count_13_7[31:25]
48  //	19	mpdu_err_byte_count[24:0], ampdu_delim_ok_count_20_14[31:25]
49  //	20	non_consecutive_delimiter_err[15:0], reserved_20a[31:16]
50  //	21	ht_control_null_field[31:0]
51  //	22	sw_response_reference_ptr_ext[31:0]
52  //
53  // ################ END SUMMARY #################
54  
55  #define NUM_OF_DWORDS_RX_PPDU_END_USER_STATS 23
56  
57  struct rx_ppdu_end_user_stats {
58      struct            rx_rxpcu_classification_overview                       rxpcu_classification_details;
59               uint32_t sta_full_aid                    : 13, //[12:0]
60                        mcs                             :  4, //[16:13]
61                        nss                             :  3, //[19:17]
62                        ofdma_info_valid                :  1, //[20]
63                        dl_ofdma_ru_start_index         :  7, //[27:21]
64                        reserved_1a                     :  4; //[31:28]
65               uint32_t dl_ofdma_ru_width               :  7, //[6:0]
66                        reserved_2a                     :  1, //[7]
67                        user_receive_quality            :  8, //[15:8]
68                        mpdu_cnt_fcs_err                : 10, //[25:16]
69                        wbm2rxdma_buf_source_used       :  1, //[26]
70                        fw2rxdma_buf_source_used        :  1, //[27]
71                        sw2rxdma_buf_source_used        :  1, //[28]
72                        reserved_2b                     :  3; //[31:29]
73               uint32_t mpdu_cnt_fcs_ok                 :  9, //[8:0]
74                        frame_control_info_valid        :  1, //[9]
75                        qos_control_info_valid          :  1, //[10]
76                        ht_control_info_valid           :  1, //[11]
77                        data_sequence_control_info_valid:  1, //[12]
78                        ht_control_info_null_valid      :  1, //[13]
79                        reserved_3a                     :  2, //[15:14]
80                        rxdma2reo_ring_used             :  1, //[16]
81                        rxdma2fw_ring_used              :  1, //[17]
82                        rxdma2sw_ring_used              :  1, //[18]
83                        rxdma_release_ring_used         :  1, //[19]
84                        ht_control_field_pkt_type       :  4, //[23:20]
85                        reserved_3b                     :  8; //[31:24]
86               uint32_t ast_index                       : 16, //[15:0]
87                        frame_control_field             : 16; //[31:16]
88               uint32_t first_data_seq_ctrl             : 16, //[15:0]
89                        qos_control_field               : 16; //[31:16]
90               uint32_t ht_control_field                : 32; //[31:0]
91               uint32_t fcs_ok_bitmap_31_0              : 32; //[31:0]
92               uint32_t fcs_ok_bitmap_63_32             : 32; //[31:0]
93               uint32_t udp_msdu_count                  : 16, //[15:0]
94                        tcp_msdu_count                  : 16; //[31:16]
95               uint32_t other_msdu_count                : 16, //[15:0]
96                        tcp_ack_msdu_count              : 16; //[31:16]
97               uint32_t sw_response_reference_ptr       : 32; //[31:0]
98               uint32_t received_qos_data_tid_bitmap    : 16, //[15:0]
99                        received_qos_data_tid_eosp_bitmap: 16; //[31:16]
100               uint32_t qosctrl_15_8_tid0               :  8, //[7:0]
101                        qosctrl_15_8_tid1               :  8, //[15:8]
102                        qosctrl_15_8_tid2               :  8, //[23:16]
103                        qosctrl_15_8_tid3               :  8; //[31:24]
104               uint32_t qosctrl_15_8_tid4               :  8, //[7:0]
105                        qosctrl_15_8_tid5               :  8, //[15:8]
106                        qosctrl_15_8_tid6               :  8, //[23:16]
107                        qosctrl_15_8_tid7               :  8; //[31:24]
108               uint32_t qosctrl_15_8_tid8               :  8, //[7:0]
109                        qosctrl_15_8_tid9               :  8, //[15:8]
110                        qosctrl_15_8_tid10              :  8, //[23:16]
111                        qosctrl_15_8_tid11              :  8; //[31:24]
112               uint32_t qosctrl_15_8_tid12              :  8, //[7:0]
113                        qosctrl_15_8_tid13              :  8, //[15:8]
114                        qosctrl_15_8_tid14              :  8, //[23:16]
115                        qosctrl_15_8_tid15              :  8; //[31:24]
116               uint32_t mpdu_ok_byte_count              : 25, //[24:0]
117                        ampdu_delim_ok_count_6_0        :  7; //[31:25]
118               uint32_t ampdu_delim_err_count           : 25, //[24:0]
119                        ampdu_delim_ok_count_13_7       :  7; //[31:25]
120               uint32_t mpdu_err_byte_count             : 25, //[24:0]
121                        ampdu_delim_ok_count_20_14      :  7; //[31:25]
122               uint32_t non_consecutive_delimiter_err   : 16, //[15:0]
123                        reserved_20a                    : 16; //[31:16]
124               uint32_t ht_control_null_field           : 32; //[31:0]
125               uint32_t sw_response_reference_ptr_ext   : 32; //[31:0]
126  };
127  
128  /*
129  
130  struct rx_rxpcu_classification_overview rxpcu_classification_details
131  
132  			Details related to what RXPCU classification types of
133  			MPDUs have been received
134  
135  sta_full_aid
136  
137  			Consumer: FW
138  
139  			Producer: RXPCU
140  
141  
142  
143  			The full AID of this station.
144  
145  
146  
147  			<legal all>
148  
149  mcs
150  
151  			MCS of the received frame
152  
153  
154  
155  			For details, refer to  MCS_TYPE description
156  
157  			Note: This is rate in case of 11a/11b
158  
159  
160  
161  			<legal all>
162  
163  nss
164  
165  			Number of spatial streams.
166  
167  
168  
169  			NOTE: RXPCU derives this from the 'Mimo_ss_bitmap'
170  
171  
172  
173  			<enum 0 1_spatial_stream>Single spatial stream
174  
175  			<enum 1 2_spatial_streams>2 spatial streams
176  
177  			<enum 2 3_spatial_streams>3 spatial streams
178  
179  			<enum 3 4_spatial_streams>4 spatial streams
180  
181  			<enum 4 5_spatial_streams>5 spatial streams
182  
183  			<enum 5 6_spatial_streams>6 spatial streams
184  
185  			<enum 6 7_spatial_streams>7 spatial streams
186  
187  			<enum 7 8_spatial_streams>8 spatial streams
188  
189  ofdma_info_valid
190  
191  			When set, ofdma RU related info in the following fields
192  			is valid
193  
194  			<legal all>
195  
196  dl_ofdma_ru_start_index
197  
198  			Field only valid when Ofdma_info_valid is set
199  
200  
201  
202  			RU index number to which User is assigned
203  
204  			RU numbering is over the entire BW, starting from 0
205  
206  			<legal 0-73>
207  
208  reserved_1a
209  
210  			<legal 0>
211  
212  dl_ofdma_ru_width
213  
214  			The size of the RU for this user.
215  
216  			In units of 1 (26 tone) RU
217  
218  			<legal 1-74>
219  
220  reserved_2a
221  
222  			<legal 0>
223  
224  user_receive_quality
225  
226  			RSSI / EVM for this user ???
227  
228  
229  
230  			Details TBD
231  
232  			<legal all>
233  
234  mpdu_cnt_fcs_err
235  
236  			The number of MPDUs received from this STA in this PPDU
237  			with FCS errors
238  
239  			<legal all>
240  
241  wbm2rxdma_buf_source_used
242  
243  			Field filled in by RXDMA
244  
245  
246  
247  			When set, RXDMA has used the wbm2rxdma_buf ring as
248  			source for at least one of the frames in this PPDU.
249  
250  fw2rxdma_buf_source_used
251  
252  			Field filled in by RXDMA
253  
254  
255  
256  			When set, RXDMA has used the fw2rxdma_buf ring as source
257  			for at least one of the frames in this PPDU.
258  
259  sw2rxdma_buf_source_used
260  
261  			Field filled in by RXDMA
262  
263  
264  
265  			When set, RXDMA has used the sw2rxdma_buf ring as source
266  			for at least one of the frames in this PPDU.
267  
268  reserved_2b
269  
270  			<legal 0>
271  
272  mpdu_cnt_fcs_ok
273  
274  			The number of MPDUs received from this STA in this PPDU
275  			with correct FCS
276  
277  			<legal all>
278  
279  frame_control_info_valid
280  
281  			When set, the frame_control_info field contains valid
282  			information
283  
284  			<legal all>
285  
286  qos_control_info_valid
287  
288  			When set, the QoS_control_info field contains valid
289  			information
290  
291  			<legal all>
292  
293  ht_control_info_valid
294  
295  			When set, the HT_control_field contains valid
296  			information
297  
298  			<legal all>
299  
300  data_sequence_control_info_valid
301  
302  			When set, the First_data_seq_ctrl field contains valid
303  			information
304  
305  			<legal all>
306  
307  ht_control_info_null_valid
308  
309  			When set, the HT_control_NULL_field contains valid
310  			information
311  
312  			<legal all>
313  
314  reserved_3a
315  
316  			<legal 0>
317  
318  rxdma2reo_ring_used
319  
320  			Field filled in by RXDMA
321  
322  
323  
324  			Set when at least one frame during this PPDU got pushed
325  			to this ring by RXDMA
326  
327  rxdma2fw_ring_used
328  
329  			Field filled in by RXDMA
330  
331  
332  
333  			Set when at least one frame during this PPDU got pushed
334  			to this ring by RXDMA
335  
336  rxdma2sw_ring_used
337  
338  			Field filled in by RXDMA
339  
340  
341  
342  			Set when at least one frame during this PPDU got pushed
343  			to this ring by RXDMA
344  
345  rxdma_release_ring_used
346  
347  			Field filled in by RXDMA
348  
349  
350  
351  			Set when at least one frame during this PPDU got pushed
352  			to this ring by RXDMA
353  
354  ht_control_field_pkt_type
355  
356  			Field only valid when HT_control_info_valid or
357  			HT_control_info_NULL_valid    is set.
358  
359  
360  
361  			Indicates what the PHY receive type was for receiving
362  			this frame. Can help determine if the HT_CONTROL field shall
363  			be interpreted as HT/VHT or HE.
364  
365  
366  
367  			NOTE: later on in the 11ax IEEE spec a bit within the HT
368  			control field was introduced that explicitly indicated how
369  			to interpret the HT control field.... As HT, VHT, or HE.
370  
371  
372  
373  			<enum 0 dot11a>802.11a PPDU type
374  
375  			<enum 1 dot11b>802.11b PPDU type
376  
377  			<enum 2 dot11n_mm>802.11n Mixed Mode PPDU type
378  
379  			<enum 3 dot11ac>802.11ac PPDU type
380  
381  			<enum 4 dot11ax>802.11ax PPDU type
382  
383  reserved_3b
384  
385  			<legal 0>
386  
387  ast_index
388  
389  			This field indicates the index of the AST entry
390  			corresponding to this MPDU. It is provided by the GSE module
391  			instantiated in RXPCU.
392  
393  			A value of 0xFFFF indicates an invalid AST index,
394  			meaning that No AST entry was found or NO AST search was
395  			performed
396  
397  			<legal all>
398  
399  frame_control_field
400  
401  			Field only valid when Frame_control_info_valid is set.
402  
403  
404  
405  			Last successfully received Frame_control field of data
406  			frame (excluding Data NULL/ QoS Null) for this user
407  
408  			Mainly used to track the PM state of the transmitted
409  			device
410  
411  
412  
413  			NOTE: only data frame info is needed, as control and
414  			management frames are already routed to the FW.
415  
416  			<legal all>
417  
418  first_data_seq_ctrl
419  
420  			Field only valid when Data_sequence_control_info_valid
421  			is set.
422  
423  
424  
425  			Sequence control field of the first data frame
426  			(excluding Data NULL or QoS Data null) received for this
427  			user with correct FCS
428  
429  
430  
431  			NOTE: only data frame info is needed, as control and
432  			management frames are already routed to the FW.
433  
434  			<legal all>
435  
436  qos_control_field
437  
438  			Field only valid when QoS_control_info_valid is set.
439  
440  
441  
442  			Last successfully received QoS_control field of data
443  			frame (excluding Data NULL/ QoS Null) for this user
444  
445  
446  
447  			Note that in case of multi TID, this field can only
448  			reflect the last properly received MPDU, and thus can not
449  			indicate all potentially different TIDs that had been
450  			received earlier.
451  
452  
453  
454  			There are however per TID fields, that will contain
455  			among other things all buffer status info: See
456  
457  			QoSCtrl_15_8_tid???
458  
459  			<legal all>
460  
461  ht_control_field
462  
463  			Field only valid when HT_control_info_valid is set.
464  
465  
466  
467  			Last successfully received
468  			HT_CONTROL/VHT_CONTROL/HE_CONTROL  field of data frames,
469  			excluding QoS Null frames for this user.
470  
471  
472  
473  			NOTE: HT control fields  from QoS Null frames are
474  			captured in field HT_control_NULL_field
475  
476  			<legal all>
477  
478  fcs_ok_bitmap_31_0
479  
480  			Bitmap indicates in order of received MPDUs, which MPDUs
481  			had an passing FCS or had an error.
482  
483  			1: FCS OK
484  
485  			0: FCS error
486  
487  			<legal all>
488  
489  fcs_ok_bitmap_63_32
490  
491  			Bitmap indicates in order of received MPDUs, which MPDUs
492  			had an passing FCS or had an error.
493  
494  			1: FCS OK
495  
496  			0: FCS error
497  
498  
499  
500  			NOTE: for users 0, 1, 2 and 3, additional bitmap info
501  			(up to 256 bitmap window) is provided in
502  			RX_PPDU_END_USER_STATS_EXT TLV
503  
504  			<legal all>
505  
506  udp_msdu_count
507  
508  			Field filled in by RX OLE
509  
510  			Set to 0 by RXPCU
511  
512  
513  
514  			The number of MSDUs that are part of MPDUs without FCS
515  			error, that contain UDP frames.
516  
517  			<legal all>
518  
519  tcp_msdu_count
520  
521  			Field filled in by RX OLE
522  
523  			Set to 0 by RXPCU
524  
525  
526  
527  			The number of MSDUs that are part of MPDUs without FCS
528  			error, that contain TCP frames.
529  
530  
531  
532  			(Note: This does NOT include TCP-ACK)
533  
534  			<legal all>
535  
536  other_msdu_count
537  
538  			Field filled in by RX OLE
539  
540  			Set to 0 by RXPCU
541  
542  
543  
544  			The number of MSDUs that are part of MPDUs without FCS
545  			error, that contain neither UDP or TCP frames.
546  
547  
548  
549  			Includes Management and control frames.
550  
551  
552  
553  			<legal all>
554  
555  tcp_ack_msdu_count
556  
557  			Field filled in by RX OLE
558  
559  			Set to 0 by RXPCU
560  
561  
562  
563  			The number of MSDUs that are part of MPDUs without FCS
564  			error, that contain TCP ack frames.
565  
566  			<legal all>
567  
568  sw_response_reference_ptr
569  
570  			Pointer that SW uses to refer back to an expected
571  			response reception. Used for Rate adaptation purposes.
572  
573  			When a reception occurs that is not tied to an expected
574  			response, this field is set to 0x0.
575  
576  
577  
578  			Note: further on in this TLV there is also the field:
579  			Sw_response_reference_ptr_ext.
580  
581  			<legal all>
582  
583  received_qos_data_tid_bitmap
584  
585  			Whenever a frame is received that contains a QoS control
586  			field (that includes QoS Data and/or QoS Null), the bit in
587  			this field that corresponds to the received TID shall be
588  			set.
589  
590  			...Bitmap[0] = TID0
591  
592  			...Bitmap[1] = TID1
593  
594  			Etc.
595  
596  			<legal all>
597  
598  received_qos_data_tid_eosp_bitmap
599  
600  			Field initialized to 0
601  
602  			For every QoS Data frame that is correctly received, the
603  			EOSP bit of that frame is copied over into the corresponding
604  			TID related field.
605  
606  			Note that this implies that the bits here represent the
607  			EOSP bit status for each TID of the last MPDU received for
608  			that TID.
609  
610  
611  
612  			received TID shall be set.
613  
614  			...eosp_bitmap[0] = eosp of TID0
615  
616  			...eosp_bitmap[1] = eosp of TID1
617  
618  			Etc.
619  
620  			<legal all>
621  
622  qosctrl_15_8_tid0
623  
624  			Field only valid when Received_qos_data_tid_bitmap[0] is
625  			set
626  
627  
628  
629  			QoS control field bits 15-8 of the last properly
630  			received MPDU with a QoS control field embedded, with  TID
631  			== 0
632  
633  qosctrl_15_8_tid1
634  
635  			Field only valid when Received_qos_data_tid_bitmap[1] is
636  			set
637  
638  
639  
640  			QoS control field bits 15-8 of the last properly
641  			received MPDU with a QoS control field embedded, with  TID
642  			== 1
643  
644  qosctrl_15_8_tid2
645  
646  			Field only valid when Received_qos_data_tid_bitmap[2] is
647  			set
648  
649  
650  
651  			QoS control field bits 15-8 of the last properly
652  			received MPDU with a QoS control field embedded, with  TID
653  			== 2
654  
655  qosctrl_15_8_tid3
656  
657  			Field only valid when Received_qos_data_tid_bitmap[3] is
658  			set
659  
660  
661  
662  			QoS control field bits 15-8 of the last properly
663  			received MPDU with a QoS control field embedded, with  TID
664  			== 3
665  
666  qosctrl_15_8_tid4
667  
668  			Field only valid when Received_qos_data_tid_bitmap[4] is
669  			set
670  
671  
672  
673  			QoS control field bits 15-8 of the last properly
674  			received MPDU with a QoS control field embedded, with  TID
675  			== 4
676  
677  qosctrl_15_8_tid5
678  
679  			Field only valid when Received_qos_data_tid_bitmap[5] is
680  			set
681  
682  
683  
684  			QoS control field bits 15-8 of the last properly
685  			received MPDU with a QoS control field embedded, with  TID
686  			== 5
687  
688  qosctrl_15_8_tid6
689  
690  			Field only valid when Received_qos_data_tid_bitmap[6] is
691  			set
692  
693  
694  
695  			QoS control field bits 15-8 of the last properly
696  			received MPDU with a QoS control field embedded, with  TID
697  			== 6
698  
699  qosctrl_15_8_tid7
700  
701  			Field only valid when Received_qos_data_tid_bitmap[7] is
702  			set
703  
704  
705  
706  			QoS control field bits 15-8 of the last properly
707  			received MPDU with a QoS control field embedded, with  TID
708  			== 7
709  
710  qosctrl_15_8_tid8
711  
712  			Field only valid when Received_qos_data_tid_bitmap[8] is
713  			set
714  
715  
716  
717  			QoS control field bits 15-8 of the last properly
718  			received MPDU with a QoS control field embedded, with  TID
719  			== 8
720  
721  qosctrl_15_8_tid9
722  
723  			Field only valid when Received_qos_data_tid_bitmap[9] is
724  			set
725  
726  
727  
728  			QoS control field bits 15-8 of the last properly
729  			received MPDU with a QoS control field embedded, with  TID
730  			== 9
731  
732  qosctrl_15_8_tid10
733  
734  			Field only valid when Received_qos_data_tid_bitmap[10]
735  			is set
736  
737  
738  
739  			QoS control field bits 15-8 of the last properly
740  			received MPDU with a QoS control field embedded, with  TID
741  			== 10
742  
743  qosctrl_15_8_tid11
744  
745  			Field only valid when Received_qos_data_tid_bitmap[11]
746  			is set
747  
748  
749  
750  			QoS control field bits 15-8 of the last properly
751  			received MPDU with a QoS control field embedded, with  TID
752  			== 11
753  
754  qosctrl_15_8_tid12
755  
756  			Field only valid when Received_qos_data_tid_bitmap[12]
757  			is set
758  
759  
760  
761  			QoS control field bits 15-8 of the last properly
762  			received MPDU with a QoS control field embedded, with  TID
763  			== 12
764  
765  qosctrl_15_8_tid13
766  
767  			Field only valid when Received_qos_data_tid_bitmap[13]
768  			is set
769  
770  
771  
772  			QoS control field bits 15-8 of the last properly
773  			received MPDU with a QoS control field embedded, with  TID
774  			== 13
775  
776  qosctrl_15_8_tid14
777  
778  			Field only valid when Received_qos_data_tid_bitmap[14]
779  			is set
780  
781  
782  
783  			QoS control field bits 15-8 of the last properly
784  			received MPDU with a QoS control field embedded, with  TID
785  			== 14
786  
787  qosctrl_15_8_tid15
788  
789  			Field only valid when Received_qos_data_tid_bitmap[15]
790  			is set
791  
792  
793  
794  			QoS control field bits 15-8 of the last properly
795  			received MPDU with a QoS control field embedded, with  TID
796  			== 15
797  
798  mpdu_ok_byte_count
799  
800  			The number of bytes received within an MPDU for this
801  			user with correct FCS. This includes the FCS field
802  
803  
804  
805  			NOTE:
806  
807  			The sum of the four fields.....
808  
809  			Mpdu_ok_byte_count +
810  
811  			mpdu_err_byte_count +
812  
813  
814  			.....is the total number of bytes that were received for
815  			this user from the PHY.
816  
817  
818  
819  			<legal all>
820  
821  ampdu_delim_ok_count_6_0
822  
823  			Number of AMPDU delimiter received with correct
824  			structure
825  
826  			LSB 7 bits from this counter
827  
828  
829  
830  			Note that this is a delimiter count and not byte count.
831  			To get to the number of bytes occupied by these delimiters,
832  			multiply this number by 4
833  
834  
835  
836  			<legal all>
837  
838  ampdu_delim_err_count
839  
840  			The number of MPDU delimiter errors counted for this
841  			user.
842  
843  
844  
845  			Note that this is a delimiter count and not byte count.
846  			To get to the number of bytes occupied by these delimiters,
847  			multiply this number by 4
848  
849  			<legal all>
850  
851  ampdu_delim_ok_count_13_7
852  
853  			Number of AMPDU delimiters received with correct
854  			structure
855  
856  			Bits 13-7 from this counter
857  
858  
859  
860  			Note that this is a delimiter count and not byte count.
861  			To get to the number of bytes occupied by these delimiters,
862  			multiply this number by 4
863  
864  			<legal all>
865  
866  mpdu_err_byte_count
867  
868  			The number of bytes belonging to MPDUs with an FCS
869  			error. This includes the FCS field.
870  
871  
872  
873  			<legal all>
874  
875  ampdu_delim_ok_count_20_14
876  
877  			Number of AMPDU delimiters received with correct
878  			structure
879  
880  			Bits 20-14 from this counter
881  
882  
883  
884  			Note that this is a delimiter count and not byte count.
885  			To get to the number of bytes occupied by these delimiters,
886  			multiply this number by 4
887  
888  
889  
890  			<legal all>
891  
892  non_consecutive_delimiter_err
893  
894  			The number of times an MPDU delimiter error is detected
895  			that is not immediately preceded by another MPDU delimiter
896  			also with FCS error.
897  
898  
899  
900  			The counter saturates at 0xFFFF
901  
902  
903  
904  			<legal all>
905  
906  reserved_20a
907  
908  			<legal 0>
909  
910  ht_control_null_field
911  
912  
913  
914  
915  			Last successfully received
916  			HT_CONTROL/VHT_CONTROL/HE_CONTROL  field from QoS Null frame
917  			for this user.
918  
919  			<legal all>
920  
921  sw_response_reference_ptr_ext
922  
923  			Extended Pointer info that SW uses to refer back to an
924  			expected response transmission. Used for Rate adaptation
925  			purposes.
926  
927  			When a reception occurs that is not tied to an expected
928  			response, this field is set to 0x0.
929  
930  
931  
932  			Note: earlier on in this TLV there is also the field:
933  			Sw_response_reference_ptr.
934  
935  			<legal all>
936  */
937  
938  #define RX_PPDU_END_USER_STATS_0_RX_RXPCU_CLASSIFICATION_OVERVIEW_RXPCU_CLASSIFICATION_DETAILS_OFFSET 0x00000000
939  #define RX_PPDU_END_USER_STATS_0_RX_RXPCU_CLASSIFICATION_OVERVIEW_RXPCU_CLASSIFICATION_DETAILS_LSB 0
940  #define RX_PPDU_END_USER_STATS_0_RX_RXPCU_CLASSIFICATION_OVERVIEW_RXPCU_CLASSIFICATION_DETAILS_MASK 0xffffffff
941  
942  /* Description		RX_PPDU_END_USER_STATS_1_STA_FULL_AID
943  
944  			Consumer: FW
945  
946  			Producer: RXPCU
947  
948  
949  
950  			The full AID of this station.
951  
952  
953  
954  			<legal all>
955  */
956  #define RX_PPDU_END_USER_STATS_1_STA_FULL_AID_OFFSET                 0x00000004
957  #define RX_PPDU_END_USER_STATS_1_STA_FULL_AID_LSB                    0
958  #define RX_PPDU_END_USER_STATS_1_STA_FULL_AID_MASK                   0x00001fff
959  
960  /* Description		RX_PPDU_END_USER_STATS_1_MCS
961  
962  			MCS of the received frame
963  
964  
965  
966  			For details, refer to  MCS_TYPE description
967  
968  			Note: This is rate in case of 11a/11b
969  
970  
971  
972  			<legal all>
973  */
974  #define RX_PPDU_END_USER_STATS_1_MCS_OFFSET                          0x00000004
975  #define RX_PPDU_END_USER_STATS_1_MCS_LSB                             13
976  #define RX_PPDU_END_USER_STATS_1_MCS_MASK                            0x0001e000
977  
978  /* Description		RX_PPDU_END_USER_STATS_1_NSS
979  
980  			Number of spatial streams.
981  
982  
983  
984  			NOTE: RXPCU derives this from the 'Mimo_ss_bitmap'
985  
986  
987  
988  			<enum 0 1_spatial_stream>Single spatial stream
989  
990  			<enum 1 2_spatial_streams>2 spatial streams
991  
992  			<enum 2 3_spatial_streams>3 spatial streams
993  
994  			<enum 3 4_spatial_streams>4 spatial streams
995  
996  			<enum 4 5_spatial_streams>5 spatial streams
997  
998  			<enum 5 6_spatial_streams>6 spatial streams
999  
1000  			<enum 6 7_spatial_streams>7 spatial streams
1001  
1002  			<enum 7 8_spatial_streams>8 spatial streams
1003  */
1004  #define RX_PPDU_END_USER_STATS_1_NSS_OFFSET                          0x00000004
1005  #define RX_PPDU_END_USER_STATS_1_NSS_LSB                             17
1006  #define RX_PPDU_END_USER_STATS_1_NSS_MASK                            0x000e0000
1007  
1008  /* Description		RX_PPDU_END_USER_STATS_1_OFDMA_INFO_VALID
1009  
1010  			When set, ofdma RU related info in the following fields
1011  			is valid
1012  
1013  			<legal all>
1014  */
1015  #define RX_PPDU_END_USER_STATS_1_OFDMA_INFO_VALID_OFFSET             0x00000004
1016  #define RX_PPDU_END_USER_STATS_1_OFDMA_INFO_VALID_LSB                20
1017  #define RX_PPDU_END_USER_STATS_1_OFDMA_INFO_VALID_MASK               0x00100000
1018  
1019  /* Description		RX_PPDU_END_USER_STATS_1_DL_OFDMA_RU_START_INDEX
1020  
1021  			Field only valid when Ofdma_info_valid is set
1022  
1023  
1024  
1025  			RU index number to which User is assigned
1026  
1027  			RU numbering is over the entire BW, starting from 0
1028  
1029  			<legal 0-73>
1030  */
1031  #define RX_PPDU_END_USER_STATS_1_DL_OFDMA_RU_START_INDEX_OFFSET      0x00000004
1032  #define RX_PPDU_END_USER_STATS_1_DL_OFDMA_RU_START_INDEX_LSB         21
1033  #define RX_PPDU_END_USER_STATS_1_DL_OFDMA_RU_START_INDEX_MASK        0x0fe00000
1034  
1035  /* Description		RX_PPDU_END_USER_STATS_1_RESERVED_1A
1036  
1037  			<legal 0>
1038  */
1039  #define RX_PPDU_END_USER_STATS_1_RESERVED_1A_OFFSET                  0x00000004
1040  #define RX_PPDU_END_USER_STATS_1_RESERVED_1A_LSB                     28
1041  #define RX_PPDU_END_USER_STATS_1_RESERVED_1A_MASK                    0xf0000000
1042  
1043  /* Description		RX_PPDU_END_USER_STATS_2_DL_OFDMA_RU_WIDTH
1044  
1045  			The size of the RU for this user.
1046  
1047  			In units of 1 (26 tone) RU
1048  
1049  			<legal 1-74>
1050  */
1051  #define RX_PPDU_END_USER_STATS_2_DL_OFDMA_RU_WIDTH_OFFSET            0x00000008
1052  #define RX_PPDU_END_USER_STATS_2_DL_OFDMA_RU_WIDTH_LSB               0
1053  #define RX_PPDU_END_USER_STATS_2_DL_OFDMA_RU_WIDTH_MASK              0x0000007f
1054  
1055  /* Description		RX_PPDU_END_USER_STATS_2_RESERVED_2A
1056  
1057  			<legal 0>
1058  */
1059  #define RX_PPDU_END_USER_STATS_2_RESERVED_2A_OFFSET                  0x00000008
1060  #define RX_PPDU_END_USER_STATS_2_RESERVED_2A_LSB                     7
1061  #define RX_PPDU_END_USER_STATS_2_RESERVED_2A_MASK                    0x00000080
1062  
1063  /* Description		RX_PPDU_END_USER_STATS_2_USER_RECEIVE_QUALITY
1064  
1065  			RSSI / EVM for this user ???
1066  
1067  
1068  
1069  			Details TBD
1070  
1071  			<legal all>
1072  */
1073  #define RX_PPDU_END_USER_STATS_2_USER_RECEIVE_QUALITY_OFFSET         0x00000008
1074  #define RX_PPDU_END_USER_STATS_2_USER_RECEIVE_QUALITY_LSB            8
1075  #define RX_PPDU_END_USER_STATS_2_USER_RECEIVE_QUALITY_MASK           0x0000ff00
1076  
1077  /* Description		RX_PPDU_END_USER_STATS_2_MPDU_CNT_FCS_ERR
1078  
1079  			The number of MPDUs received from this STA in this PPDU
1080  			with FCS errors
1081  
1082  			<legal all>
1083  */
1084  #define RX_PPDU_END_USER_STATS_2_MPDU_CNT_FCS_ERR_OFFSET             0x00000008
1085  #define RX_PPDU_END_USER_STATS_2_MPDU_CNT_FCS_ERR_LSB                16
1086  #define RX_PPDU_END_USER_STATS_2_MPDU_CNT_FCS_ERR_MASK               0x03ff0000
1087  
1088  /* Description		RX_PPDU_END_USER_STATS_2_WBM2RXDMA_BUF_SOURCE_USED
1089  
1090  			Field filled in by RXDMA
1091  
1092  
1093  
1094  			When set, RXDMA has used the wbm2rxdma_buf ring as
1095  			source for at least one of the frames in this PPDU.
1096  */
1097  #define RX_PPDU_END_USER_STATS_2_WBM2RXDMA_BUF_SOURCE_USED_OFFSET    0x00000008
1098  #define RX_PPDU_END_USER_STATS_2_WBM2RXDMA_BUF_SOURCE_USED_LSB       26
1099  #define RX_PPDU_END_USER_STATS_2_WBM2RXDMA_BUF_SOURCE_USED_MASK      0x04000000
1100  
1101  /* Description		RX_PPDU_END_USER_STATS_2_FW2RXDMA_BUF_SOURCE_USED
1102  
1103  			Field filled in by RXDMA
1104  
1105  
1106  
1107  			When set, RXDMA has used the fw2rxdma_buf ring as source
1108  			for at least one of the frames in this PPDU.
1109  */
1110  #define RX_PPDU_END_USER_STATS_2_FW2RXDMA_BUF_SOURCE_USED_OFFSET     0x00000008
1111  #define RX_PPDU_END_USER_STATS_2_FW2RXDMA_BUF_SOURCE_USED_LSB        27
1112  #define RX_PPDU_END_USER_STATS_2_FW2RXDMA_BUF_SOURCE_USED_MASK       0x08000000
1113  
1114  /* Description		RX_PPDU_END_USER_STATS_2_SW2RXDMA_BUF_SOURCE_USED
1115  
1116  			Field filled in by RXDMA
1117  
1118  
1119  
1120  			When set, RXDMA has used the sw2rxdma_buf ring as source
1121  			for at least one of the frames in this PPDU.
1122  */
1123  #define RX_PPDU_END_USER_STATS_2_SW2RXDMA_BUF_SOURCE_USED_OFFSET     0x00000008
1124  #define RX_PPDU_END_USER_STATS_2_SW2RXDMA_BUF_SOURCE_USED_LSB        28
1125  #define RX_PPDU_END_USER_STATS_2_SW2RXDMA_BUF_SOURCE_USED_MASK       0x10000000
1126  
1127  /* Description		RX_PPDU_END_USER_STATS_2_RESERVED_2B
1128  
1129  			<legal 0>
1130  */
1131  #define RX_PPDU_END_USER_STATS_2_RESERVED_2B_OFFSET                  0x00000008
1132  #define RX_PPDU_END_USER_STATS_2_RESERVED_2B_LSB                     29
1133  #define RX_PPDU_END_USER_STATS_2_RESERVED_2B_MASK                    0xe0000000
1134  
1135  /* Description		RX_PPDU_END_USER_STATS_3_MPDU_CNT_FCS_OK
1136  
1137  			The number of MPDUs received from this STA in this PPDU
1138  			with correct FCS
1139  
1140  			<legal all>
1141  */
1142  #define RX_PPDU_END_USER_STATS_3_MPDU_CNT_FCS_OK_OFFSET              0x0000000c
1143  #define RX_PPDU_END_USER_STATS_3_MPDU_CNT_FCS_OK_LSB                 0
1144  #define RX_PPDU_END_USER_STATS_3_MPDU_CNT_FCS_OK_MASK                0x000001ff
1145  
1146  /* Description		RX_PPDU_END_USER_STATS_3_FRAME_CONTROL_INFO_VALID
1147  
1148  			When set, the frame_control_info field contains valid
1149  			information
1150  
1151  			<legal all>
1152  */
1153  #define RX_PPDU_END_USER_STATS_3_FRAME_CONTROL_INFO_VALID_OFFSET     0x0000000c
1154  #define RX_PPDU_END_USER_STATS_3_FRAME_CONTROL_INFO_VALID_LSB        9
1155  #define RX_PPDU_END_USER_STATS_3_FRAME_CONTROL_INFO_VALID_MASK       0x00000200
1156  
1157  /* Description		RX_PPDU_END_USER_STATS_3_QOS_CONTROL_INFO_VALID
1158  
1159  			When set, the QoS_control_info field contains valid
1160  			information
1161  
1162  			<legal all>
1163  */
1164  #define RX_PPDU_END_USER_STATS_3_QOS_CONTROL_INFO_VALID_OFFSET       0x0000000c
1165  #define RX_PPDU_END_USER_STATS_3_QOS_CONTROL_INFO_VALID_LSB          10
1166  #define RX_PPDU_END_USER_STATS_3_QOS_CONTROL_INFO_VALID_MASK         0x00000400
1167  
1168  /* Description		RX_PPDU_END_USER_STATS_3_HT_CONTROL_INFO_VALID
1169  
1170  			When set, the HT_control_field contains valid
1171  			information
1172  
1173  			<legal all>
1174  */
1175  #define RX_PPDU_END_USER_STATS_3_HT_CONTROL_INFO_VALID_OFFSET        0x0000000c
1176  #define RX_PPDU_END_USER_STATS_3_HT_CONTROL_INFO_VALID_LSB           11
1177  #define RX_PPDU_END_USER_STATS_3_HT_CONTROL_INFO_VALID_MASK          0x00000800
1178  
1179  /* Description		RX_PPDU_END_USER_STATS_3_DATA_SEQUENCE_CONTROL_INFO_VALID
1180  
1181  			When set, the First_data_seq_ctrl field contains valid
1182  			information
1183  
1184  			<legal all>
1185  */
1186  #define RX_PPDU_END_USER_STATS_3_DATA_SEQUENCE_CONTROL_INFO_VALID_OFFSET 0x0000000c
1187  #define RX_PPDU_END_USER_STATS_3_DATA_SEQUENCE_CONTROL_INFO_VALID_LSB 12
1188  #define RX_PPDU_END_USER_STATS_3_DATA_SEQUENCE_CONTROL_INFO_VALID_MASK 0x00001000
1189  
1190  /* Description		RX_PPDU_END_USER_STATS_3_HT_CONTROL_INFO_NULL_VALID
1191  
1192  			When set, the HT_control_NULL_field contains valid
1193  			information
1194  
1195  			<legal all>
1196  */
1197  #define RX_PPDU_END_USER_STATS_3_HT_CONTROL_INFO_NULL_VALID_OFFSET   0x0000000c
1198  #define RX_PPDU_END_USER_STATS_3_HT_CONTROL_INFO_NULL_VALID_LSB      13
1199  #define RX_PPDU_END_USER_STATS_3_HT_CONTROL_INFO_NULL_VALID_MASK     0x00002000
1200  
1201  /* Description		RX_PPDU_END_USER_STATS_3_RESERVED_3A
1202  
1203  			<legal 0>
1204  */
1205  #define RX_PPDU_END_USER_STATS_3_RESERVED_3A_OFFSET                  0x0000000c
1206  #define RX_PPDU_END_USER_STATS_3_RESERVED_3A_LSB                     14
1207  #define RX_PPDU_END_USER_STATS_3_RESERVED_3A_MASK                    0x0000c000
1208  
1209  /* Description		RX_PPDU_END_USER_STATS_3_RXDMA2REO_RING_USED
1210  
1211  			Field filled in by RXDMA
1212  
1213  
1214  
1215  			Set when at least one frame during this PPDU got pushed
1216  			to this ring by RXDMA
1217  */
1218  #define RX_PPDU_END_USER_STATS_3_RXDMA2REO_RING_USED_OFFSET          0x0000000c
1219  #define RX_PPDU_END_USER_STATS_3_RXDMA2REO_RING_USED_LSB             16
1220  #define RX_PPDU_END_USER_STATS_3_RXDMA2REO_RING_USED_MASK            0x00010000
1221  
1222  /* Description		RX_PPDU_END_USER_STATS_3_RXDMA2FW_RING_USED
1223  
1224  			Field filled in by RXDMA
1225  
1226  
1227  
1228  			Set when at least one frame during this PPDU got pushed
1229  			to this ring by RXDMA
1230  */
1231  #define RX_PPDU_END_USER_STATS_3_RXDMA2FW_RING_USED_OFFSET           0x0000000c
1232  #define RX_PPDU_END_USER_STATS_3_RXDMA2FW_RING_USED_LSB              17
1233  #define RX_PPDU_END_USER_STATS_3_RXDMA2FW_RING_USED_MASK             0x00020000
1234  
1235  /* Description		RX_PPDU_END_USER_STATS_3_RXDMA2SW_RING_USED
1236  
1237  			Field filled in by RXDMA
1238  
1239  
1240  
1241  			Set when at least one frame during this PPDU got pushed
1242  			to this ring by RXDMA
1243  */
1244  #define RX_PPDU_END_USER_STATS_3_RXDMA2SW_RING_USED_OFFSET           0x0000000c
1245  #define RX_PPDU_END_USER_STATS_3_RXDMA2SW_RING_USED_LSB              18
1246  #define RX_PPDU_END_USER_STATS_3_RXDMA2SW_RING_USED_MASK             0x00040000
1247  
1248  /* Description		RX_PPDU_END_USER_STATS_3_RXDMA_RELEASE_RING_USED
1249  
1250  			Field filled in by RXDMA
1251  
1252  
1253  
1254  			Set when at least one frame during this PPDU got pushed
1255  			to this ring by RXDMA
1256  */
1257  #define RX_PPDU_END_USER_STATS_3_RXDMA_RELEASE_RING_USED_OFFSET      0x0000000c
1258  #define RX_PPDU_END_USER_STATS_3_RXDMA_RELEASE_RING_USED_LSB         19
1259  #define RX_PPDU_END_USER_STATS_3_RXDMA_RELEASE_RING_USED_MASK        0x00080000
1260  
1261  /* Description		RX_PPDU_END_USER_STATS_3_HT_CONTROL_FIELD_PKT_TYPE
1262  
1263  			Field only valid when HT_control_info_valid or
1264  			HT_control_info_NULL_valid    is set.
1265  
1266  
1267  
1268  			Indicates what the PHY receive type was for receiving
1269  			this frame. Can help determine if the HT_CONTROL field shall
1270  			be interpreted as HT/VHT or HE.
1271  
1272  
1273  
1274  			NOTE: later on in the 11ax IEEE spec a bit within the HT
1275  			control field was introduced that explicitly indicated how
1276  			to interpret the HT control field.... As HT, VHT, or HE.
1277  
1278  
1279  
1280  			<enum 0 dot11a>802.11a PPDU type
1281  
1282  			<enum 1 dot11b>802.11b PPDU type
1283  
1284  			<enum 2 dot11n_mm>802.11n Mixed Mode PPDU type
1285  
1286  			<enum 3 dot11ac>802.11ac PPDU type
1287  
1288  			<enum 4 dot11ax>802.11ax PPDU type
1289  */
1290  #define RX_PPDU_END_USER_STATS_3_HT_CONTROL_FIELD_PKT_TYPE_OFFSET    0x0000000c
1291  #define RX_PPDU_END_USER_STATS_3_HT_CONTROL_FIELD_PKT_TYPE_LSB       20
1292  #define RX_PPDU_END_USER_STATS_3_HT_CONTROL_FIELD_PKT_TYPE_MASK      0x00f00000
1293  
1294  /* Description		RX_PPDU_END_USER_STATS_3_RESERVED_3B
1295  
1296  			<legal 0>
1297  */
1298  #define RX_PPDU_END_USER_STATS_3_RESERVED_3B_OFFSET                  0x0000000c
1299  #define RX_PPDU_END_USER_STATS_3_RESERVED_3B_LSB                     24
1300  #define RX_PPDU_END_USER_STATS_3_RESERVED_3B_MASK                    0xff000000
1301  
1302  /* Description		RX_PPDU_END_USER_STATS_4_AST_INDEX
1303  
1304  			This field indicates the index of the AST entry
1305  			corresponding to this MPDU. It is provided by the GSE module
1306  			instantiated in RXPCU.
1307  
1308  			A value of 0xFFFF indicates an invalid AST index,
1309  			meaning that No AST entry was found or NO AST search was
1310  			performed
1311  
1312  			<legal all>
1313  */
1314  #define RX_PPDU_END_USER_STATS_4_AST_INDEX_OFFSET                    0x00000010
1315  #define RX_PPDU_END_USER_STATS_4_AST_INDEX_LSB                       0
1316  #define RX_PPDU_END_USER_STATS_4_AST_INDEX_MASK                      0x0000ffff
1317  
1318  /* Description		RX_PPDU_END_USER_STATS_4_FRAME_CONTROL_FIELD
1319  
1320  			Field only valid when Frame_control_info_valid is set.
1321  
1322  
1323  
1324  			Last successfully received Frame_control field of data
1325  			frame (excluding Data NULL/ QoS Null) for this user
1326  
1327  			Mainly used to track the PM state of the transmitted
1328  			device
1329  
1330  
1331  
1332  			NOTE: only data frame info is needed, as control and
1333  			management frames are already routed to the FW.
1334  
1335  			<legal all>
1336  */
1337  #define RX_PPDU_END_USER_STATS_4_FRAME_CONTROL_FIELD_OFFSET          0x00000010
1338  #define RX_PPDU_END_USER_STATS_4_FRAME_CONTROL_FIELD_LSB             16
1339  #define RX_PPDU_END_USER_STATS_4_FRAME_CONTROL_FIELD_MASK            0xffff0000
1340  
1341  /* Description		RX_PPDU_END_USER_STATS_5_FIRST_DATA_SEQ_CTRL
1342  
1343  			Field only valid when Data_sequence_control_info_valid
1344  			is set.
1345  
1346  
1347  
1348  			Sequence control field of the first data frame
1349  			(excluding Data NULL or QoS Data null) received for this
1350  			user with correct FCS
1351  
1352  
1353  
1354  			NOTE: only data frame info is needed, as control and
1355  			management frames are already routed to the FW.
1356  
1357  			<legal all>
1358  */
1359  #define RX_PPDU_END_USER_STATS_5_FIRST_DATA_SEQ_CTRL_OFFSET          0x00000014
1360  #define RX_PPDU_END_USER_STATS_5_FIRST_DATA_SEQ_CTRL_LSB             0
1361  #define RX_PPDU_END_USER_STATS_5_FIRST_DATA_SEQ_CTRL_MASK            0x0000ffff
1362  
1363  /* Description		RX_PPDU_END_USER_STATS_5_QOS_CONTROL_FIELD
1364  
1365  			Field only valid when QoS_control_info_valid is set.
1366  
1367  
1368  
1369  			Last successfully received QoS_control field of data
1370  			frame (excluding Data NULL/ QoS Null) for this user
1371  
1372  
1373  
1374  			Note that in case of multi TID, this field can only
1375  			reflect the last properly received MPDU, and thus can not
1376  			indicate all potentially different TIDs that had been
1377  			received earlier.
1378  
1379  
1380  
1381  			There are however per TID fields, that will contain
1382  			among other things all buffer status info: See
1383  
1384  			QoSCtrl_15_8_tid???
1385  
1386  			<legal all>
1387  */
1388  #define RX_PPDU_END_USER_STATS_5_QOS_CONTROL_FIELD_OFFSET            0x00000014
1389  #define RX_PPDU_END_USER_STATS_5_QOS_CONTROL_FIELD_LSB               16
1390  #define RX_PPDU_END_USER_STATS_5_QOS_CONTROL_FIELD_MASK              0xffff0000
1391  
1392  /* Description		RX_PPDU_END_USER_STATS_6_HT_CONTROL_FIELD
1393  
1394  			Field only valid when HT_control_info_valid is set.
1395  
1396  
1397  
1398  			Last successfully received
1399  			HT_CONTROL/VHT_CONTROL/HE_CONTROL  field of data frames,
1400  			excluding QoS Null frames for this user.
1401  
1402  
1403  
1404  			NOTE: HT control fields  from QoS Null frames are
1405  			captured in field HT_control_NULL_field
1406  
1407  			<legal all>
1408  */
1409  #define RX_PPDU_END_USER_STATS_6_HT_CONTROL_FIELD_OFFSET             0x00000018
1410  #define RX_PPDU_END_USER_STATS_6_HT_CONTROL_FIELD_LSB                0
1411  #define RX_PPDU_END_USER_STATS_6_HT_CONTROL_FIELD_MASK               0xffffffff
1412  
1413  /* Description		RX_PPDU_END_USER_STATS_7_FCS_OK_BITMAP_31_0
1414  
1415  			Bitmap indicates in order of received MPDUs, which MPDUs
1416  			had an passing FCS or had an error.
1417  
1418  			1: FCS OK
1419  
1420  			0: FCS error
1421  
1422  			<legal all>
1423  */
1424  #define RX_PPDU_END_USER_STATS_7_FCS_OK_BITMAP_31_0_OFFSET           0x0000001c
1425  #define RX_PPDU_END_USER_STATS_7_FCS_OK_BITMAP_31_0_LSB              0
1426  #define RX_PPDU_END_USER_STATS_7_FCS_OK_BITMAP_31_0_MASK             0xffffffff
1427  
1428  /* Description		RX_PPDU_END_USER_STATS_8_FCS_OK_BITMAP_63_32
1429  
1430  			Bitmap indicates in order of received MPDUs, which MPDUs
1431  			had an passing FCS or had an error.
1432  
1433  			1: FCS OK
1434  
1435  			0: FCS error
1436  
1437  
1438  
1439  			NOTE: for users 0, 1, 2 and 3, additional bitmap info
1440  			(up to 256 bitmap window) is provided in
1441  			RX_PPDU_END_USER_STATS_EXT TLV
1442  
1443  			<legal all>
1444  */
1445  #define RX_PPDU_END_USER_STATS_8_FCS_OK_BITMAP_63_32_OFFSET          0x00000020
1446  #define RX_PPDU_END_USER_STATS_8_FCS_OK_BITMAP_63_32_LSB             0
1447  #define RX_PPDU_END_USER_STATS_8_FCS_OK_BITMAP_63_32_MASK            0xffffffff
1448  
1449  /* Description		RX_PPDU_END_USER_STATS_9_UDP_MSDU_COUNT
1450  
1451  			Field filled in by RX OLE
1452  
1453  			Set to 0 by RXPCU
1454  
1455  
1456  
1457  			The number of MSDUs that are part of MPDUs without FCS
1458  			error, that contain UDP frames.
1459  
1460  			<legal all>
1461  */
1462  #define RX_PPDU_END_USER_STATS_9_UDP_MSDU_COUNT_OFFSET               0x00000024
1463  #define RX_PPDU_END_USER_STATS_9_UDP_MSDU_COUNT_LSB                  0
1464  #define RX_PPDU_END_USER_STATS_9_UDP_MSDU_COUNT_MASK                 0x0000ffff
1465  
1466  /* Description		RX_PPDU_END_USER_STATS_9_TCP_MSDU_COUNT
1467  
1468  			Field filled in by RX OLE
1469  
1470  			Set to 0 by RXPCU
1471  
1472  
1473  
1474  			The number of MSDUs that are part of MPDUs without FCS
1475  			error, that contain TCP frames.
1476  
1477  
1478  
1479  			(Note: This does NOT include TCP-ACK)
1480  
1481  			<legal all>
1482  */
1483  #define RX_PPDU_END_USER_STATS_9_TCP_MSDU_COUNT_OFFSET               0x00000024
1484  #define RX_PPDU_END_USER_STATS_9_TCP_MSDU_COUNT_LSB                  16
1485  #define RX_PPDU_END_USER_STATS_9_TCP_MSDU_COUNT_MASK                 0xffff0000
1486  
1487  /* Description		RX_PPDU_END_USER_STATS_10_OTHER_MSDU_COUNT
1488  
1489  			Field filled in by RX OLE
1490  
1491  			Set to 0 by RXPCU
1492  
1493  
1494  
1495  			The number of MSDUs that are part of MPDUs without FCS
1496  			error, that contain neither UDP or TCP frames.
1497  
1498  
1499  
1500  			Includes Management and control frames.
1501  
1502  
1503  
1504  			<legal all>
1505  */
1506  #define RX_PPDU_END_USER_STATS_10_OTHER_MSDU_COUNT_OFFSET            0x00000028
1507  #define RX_PPDU_END_USER_STATS_10_OTHER_MSDU_COUNT_LSB               0
1508  #define RX_PPDU_END_USER_STATS_10_OTHER_MSDU_COUNT_MASK              0x0000ffff
1509  
1510  /* Description		RX_PPDU_END_USER_STATS_10_TCP_ACK_MSDU_COUNT
1511  
1512  			Field filled in by RX OLE
1513  
1514  			Set to 0 by RXPCU
1515  
1516  
1517  
1518  			The number of MSDUs that are part of MPDUs without FCS
1519  			error, that contain TCP ack frames.
1520  
1521  			<legal all>
1522  */
1523  #define RX_PPDU_END_USER_STATS_10_TCP_ACK_MSDU_COUNT_OFFSET          0x00000028
1524  #define RX_PPDU_END_USER_STATS_10_TCP_ACK_MSDU_COUNT_LSB             16
1525  #define RX_PPDU_END_USER_STATS_10_TCP_ACK_MSDU_COUNT_MASK            0xffff0000
1526  
1527  /* Description		RX_PPDU_END_USER_STATS_11_SW_RESPONSE_REFERENCE_PTR
1528  
1529  			Pointer that SW uses to refer back to an expected
1530  			response reception. Used for Rate adaptation purposes.
1531  
1532  			When a reception occurs that is not tied to an expected
1533  			response, this field is set to 0x0.
1534  
1535  
1536  
1537  			Note: further on in this TLV there is also the field:
1538  			Sw_response_reference_ptr_ext.
1539  
1540  			<legal all>
1541  */
1542  #define RX_PPDU_END_USER_STATS_11_SW_RESPONSE_REFERENCE_PTR_OFFSET   0x0000002c
1543  #define RX_PPDU_END_USER_STATS_11_SW_RESPONSE_REFERENCE_PTR_LSB      0
1544  #define RX_PPDU_END_USER_STATS_11_SW_RESPONSE_REFERENCE_PTR_MASK     0xffffffff
1545  
1546  /* Description		RX_PPDU_END_USER_STATS_12_RECEIVED_QOS_DATA_TID_BITMAP
1547  
1548  			Whenever a frame is received that contains a QoS control
1549  			field (that includes QoS Data and/or QoS Null), the bit in
1550  			this field that corresponds to the received TID shall be
1551  			set.
1552  
1553  			...Bitmap[0] = TID0
1554  
1555  			...Bitmap[1] = TID1
1556  
1557  			Etc.
1558  
1559  			<legal all>
1560  */
1561  #define RX_PPDU_END_USER_STATS_12_RECEIVED_QOS_DATA_TID_BITMAP_OFFSET 0x00000030
1562  #define RX_PPDU_END_USER_STATS_12_RECEIVED_QOS_DATA_TID_BITMAP_LSB   0
1563  #define RX_PPDU_END_USER_STATS_12_RECEIVED_QOS_DATA_TID_BITMAP_MASK  0x0000ffff
1564  
1565  /* Description		RX_PPDU_END_USER_STATS_12_RECEIVED_QOS_DATA_TID_EOSP_BITMAP
1566  
1567  			Field initialized to 0
1568  
1569  			For every QoS Data frame that is correctly received, the
1570  			EOSP bit of that frame is copied over into the corresponding
1571  			TID related field.
1572  
1573  			Note that this implies that the bits here represent the
1574  			EOSP bit status for each TID of the last MPDU received for
1575  			that TID.
1576  
1577  
1578  
1579  			received TID shall be set.
1580  
1581  			...eosp_bitmap[0] = eosp of TID0
1582  
1583  			...eosp_bitmap[1] = eosp of TID1
1584  
1585  			Etc.
1586  
1587  			<legal all>
1588  */
1589  #define RX_PPDU_END_USER_STATS_12_RECEIVED_QOS_DATA_TID_EOSP_BITMAP_OFFSET 0x00000030
1590  #define RX_PPDU_END_USER_STATS_12_RECEIVED_QOS_DATA_TID_EOSP_BITMAP_LSB 16
1591  #define RX_PPDU_END_USER_STATS_12_RECEIVED_QOS_DATA_TID_EOSP_BITMAP_MASK 0xffff0000
1592  
1593  /* Description		RX_PPDU_END_USER_STATS_13_QOSCTRL_15_8_TID0
1594  
1595  			Field only valid when Received_qos_data_tid_bitmap[0] is
1596  			set
1597  
1598  
1599  
1600  			QoS control field bits 15-8 of the last properly
1601  			received MPDU with a QoS control field embedded, with  TID
1602  			== 0
1603  */
1604  #define RX_PPDU_END_USER_STATS_13_QOSCTRL_15_8_TID0_OFFSET           0x00000034
1605  #define RX_PPDU_END_USER_STATS_13_QOSCTRL_15_8_TID0_LSB              0
1606  #define RX_PPDU_END_USER_STATS_13_QOSCTRL_15_8_TID0_MASK             0x000000ff
1607  
1608  /* Description		RX_PPDU_END_USER_STATS_13_QOSCTRL_15_8_TID1
1609  
1610  			Field only valid when Received_qos_data_tid_bitmap[1] is
1611  			set
1612  
1613  
1614  
1615  			QoS control field bits 15-8 of the last properly
1616  			received MPDU with a QoS control field embedded, with  TID
1617  			== 1
1618  */
1619  #define RX_PPDU_END_USER_STATS_13_QOSCTRL_15_8_TID1_OFFSET           0x00000034
1620  #define RX_PPDU_END_USER_STATS_13_QOSCTRL_15_8_TID1_LSB              8
1621  #define RX_PPDU_END_USER_STATS_13_QOSCTRL_15_8_TID1_MASK             0x0000ff00
1622  
1623  /* Description		RX_PPDU_END_USER_STATS_13_QOSCTRL_15_8_TID2
1624  
1625  			Field only valid when Received_qos_data_tid_bitmap[2] is
1626  			set
1627  
1628  
1629  
1630  			QoS control field bits 15-8 of the last properly
1631  			received MPDU with a QoS control field embedded, with  TID
1632  			== 2
1633  */
1634  #define RX_PPDU_END_USER_STATS_13_QOSCTRL_15_8_TID2_OFFSET           0x00000034
1635  #define RX_PPDU_END_USER_STATS_13_QOSCTRL_15_8_TID2_LSB              16
1636  #define RX_PPDU_END_USER_STATS_13_QOSCTRL_15_8_TID2_MASK             0x00ff0000
1637  
1638  /* Description		RX_PPDU_END_USER_STATS_13_QOSCTRL_15_8_TID3
1639  
1640  			Field only valid when Received_qos_data_tid_bitmap[3] is
1641  			set
1642  
1643  
1644  
1645  			QoS control field bits 15-8 of the last properly
1646  			received MPDU with a QoS control field embedded, with  TID
1647  			== 3
1648  */
1649  #define RX_PPDU_END_USER_STATS_13_QOSCTRL_15_8_TID3_OFFSET           0x00000034
1650  #define RX_PPDU_END_USER_STATS_13_QOSCTRL_15_8_TID3_LSB              24
1651  #define RX_PPDU_END_USER_STATS_13_QOSCTRL_15_8_TID3_MASK             0xff000000
1652  
1653  /* Description		RX_PPDU_END_USER_STATS_14_QOSCTRL_15_8_TID4
1654  
1655  			Field only valid when Received_qos_data_tid_bitmap[4] is
1656  			set
1657  
1658  
1659  
1660  			QoS control field bits 15-8 of the last properly
1661  			received MPDU with a QoS control field embedded, with  TID
1662  			== 4
1663  */
1664  #define RX_PPDU_END_USER_STATS_14_QOSCTRL_15_8_TID4_OFFSET           0x00000038
1665  #define RX_PPDU_END_USER_STATS_14_QOSCTRL_15_8_TID4_LSB              0
1666  #define RX_PPDU_END_USER_STATS_14_QOSCTRL_15_8_TID4_MASK             0x000000ff
1667  
1668  /* Description		RX_PPDU_END_USER_STATS_14_QOSCTRL_15_8_TID5
1669  
1670  			Field only valid when Received_qos_data_tid_bitmap[5] is
1671  			set
1672  
1673  
1674  
1675  			QoS control field bits 15-8 of the last properly
1676  			received MPDU with a QoS control field embedded, with  TID
1677  			== 5
1678  */
1679  #define RX_PPDU_END_USER_STATS_14_QOSCTRL_15_8_TID5_OFFSET           0x00000038
1680  #define RX_PPDU_END_USER_STATS_14_QOSCTRL_15_8_TID5_LSB              8
1681  #define RX_PPDU_END_USER_STATS_14_QOSCTRL_15_8_TID5_MASK             0x0000ff00
1682  
1683  /* Description		RX_PPDU_END_USER_STATS_14_QOSCTRL_15_8_TID6
1684  
1685  			Field only valid when Received_qos_data_tid_bitmap[6] is
1686  			set
1687  
1688  
1689  
1690  			QoS control field bits 15-8 of the last properly
1691  			received MPDU with a QoS control field embedded, with  TID
1692  			== 6
1693  */
1694  #define RX_PPDU_END_USER_STATS_14_QOSCTRL_15_8_TID6_OFFSET           0x00000038
1695  #define RX_PPDU_END_USER_STATS_14_QOSCTRL_15_8_TID6_LSB              16
1696  #define RX_PPDU_END_USER_STATS_14_QOSCTRL_15_8_TID6_MASK             0x00ff0000
1697  
1698  /* Description		RX_PPDU_END_USER_STATS_14_QOSCTRL_15_8_TID7
1699  
1700  			Field only valid when Received_qos_data_tid_bitmap[7] is
1701  			set
1702  
1703  
1704  
1705  			QoS control field bits 15-8 of the last properly
1706  			received MPDU with a QoS control field embedded, with  TID
1707  			== 7
1708  */
1709  #define RX_PPDU_END_USER_STATS_14_QOSCTRL_15_8_TID7_OFFSET           0x00000038
1710  #define RX_PPDU_END_USER_STATS_14_QOSCTRL_15_8_TID7_LSB              24
1711  #define RX_PPDU_END_USER_STATS_14_QOSCTRL_15_8_TID7_MASK             0xff000000
1712  
1713  /* Description		RX_PPDU_END_USER_STATS_15_QOSCTRL_15_8_TID8
1714  
1715  			Field only valid when Received_qos_data_tid_bitmap[8] is
1716  			set
1717  
1718  
1719  
1720  			QoS control field bits 15-8 of the last properly
1721  			received MPDU with a QoS control field embedded, with  TID
1722  			== 8
1723  */
1724  #define RX_PPDU_END_USER_STATS_15_QOSCTRL_15_8_TID8_OFFSET           0x0000003c
1725  #define RX_PPDU_END_USER_STATS_15_QOSCTRL_15_8_TID8_LSB              0
1726  #define RX_PPDU_END_USER_STATS_15_QOSCTRL_15_8_TID8_MASK             0x000000ff
1727  
1728  /* Description		RX_PPDU_END_USER_STATS_15_QOSCTRL_15_8_TID9
1729  
1730  			Field only valid when Received_qos_data_tid_bitmap[9] is
1731  			set
1732  
1733  
1734  
1735  			QoS control field bits 15-8 of the last properly
1736  			received MPDU with a QoS control field embedded, with  TID
1737  			== 9
1738  */
1739  #define RX_PPDU_END_USER_STATS_15_QOSCTRL_15_8_TID9_OFFSET           0x0000003c
1740  #define RX_PPDU_END_USER_STATS_15_QOSCTRL_15_8_TID9_LSB              8
1741  #define RX_PPDU_END_USER_STATS_15_QOSCTRL_15_8_TID9_MASK             0x0000ff00
1742  
1743  /* Description		RX_PPDU_END_USER_STATS_15_QOSCTRL_15_8_TID10
1744  
1745  			Field only valid when Received_qos_data_tid_bitmap[10]
1746  			is set
1747  
1748  
1749  
1750  			QoS control field bits 15-8 of the last properly
1751  			received MPDU with a QoS control field embedded, with  TID
1752  			== 10
1753  */
1754  #define RX_PPDU_END_USER_STATS_15_QOSCTRL_15_8_TID10_OFFSET          0x0000003c
1755  #define RX_PPDU_END_USER_STATS_15_QOSCTRL_15_8_TID10_LSB             16
1756  #define RX_PPDU_END_USER_STATS_15_QOSCTRL_15_8_TID10_MASK            0x00ff0000
1757  
1758  /* Description		RX_PPDU_END_USER_STATS_15_QOSCTRL_15_8_TID11
1759  
1760  			Field only valid when Received_qos_data_tid_bitmap[11]
1761  			is set
1762  
1763  
1764  
1765  			QoS control field bits 15-8 of the last properly
1766  			received MPDU with a QoS control field embedded, with  TID
1767  			== 11
1768  */
1769  #define RX_PPDU_END_USER_STATS_15_QOSCTRL_15_8_TID11_OFFSET          0x0000003c
1770  #define RX_PPDU_END_USER_STATS_15_QOSCTRL_15_8_TID11_LSB             24
1771  #define RX_PPDU_END_USER_STATS_15_QOSCTRL_15_8_TID11_MASK            0xff000000
1772  
1773  /* Description		RX_PPDU_END_USER_STATS_16_QOSCTRL_15_8_TID12
1774  
1775  			Field only valid when Received_qos_data_tid_bitmap[12]
1776  			is set
1777  
1778  
1779  
1780  			QoS control field bits 15-8 of the last properly
1781  			received MPDU with a QoS control field embedded, with  TID
1782  			== 12
1783  */
1784  #define RX_PPDU_END_USER_STATS_16_QOSCTRL_15_8_TID12_OFFSET          0x00000040
1785  #define RX_PPDU_END_USER_STATS_16_QOSCTRL_15_8_TID12_LSB             0
1786  #define RX_PPDU_END_USER_STATS_16_QOSCTRL_15_8_TID12_MASK            0x000000ff
1787  
1788  /* Description		RX_PPDU_END_USER_STATS_16_QOSCTRL_15_8_TID13
1789  
1790  			Field only valid when Received_qos_data_tid_bitmap[13]
1791  			is set
1792  
1793  
1794  
1795  			QoS control field bits 15-8 of the last properly
1796  			received MPDU with a QoS control field embedded, with  TID
1797  			== 13
1798  */
1799  #define RX_PPDU_END_USER_STATS_16_QOSCTRL_15_8_TID13_OFFSET          0x00000040
1800  #define RX_PPDU_END_USER_STATS_16_QOSCTRL_15_8_TID13_LSB             8
1801  #define RX_PPDU_END_USER_STATS_16_QOSCTRL_15_8_TID13_MASK            0x0000ff00
1802  
1803  /* Description		RX_PPDU_END_USER_STATS_16_QOSCTRL_15_8_TID14
1804  
1805  			Field only valid when Received_qos_data_tid_bitmap[14]
1806  			is set
1807  
1808  
1809  
1810  			QoS control field bits 15-8 of the last properly
1811  			received MPDU with a QoS control field embedded, with  TID
1812  			== 14
1813  */
1814  #define RX_PPDU_END_USER_STATS_16_QOSCTRL_15_8_TID14_OFFSET          0x00000040
1815  #define RX_PPDU_END_USER_STATS_16_QOSCTRL_15_8_TID14_LSB             16
1816  #define RX_PPDU_END_USER_STATS_16_QOSCTRL_15_8_TID14_MASK            0x00ff0000
1817  
1818  /* Description		RX_PPDU_END_USER_STATS_16_QOSCTRL_15_8_TID15
1819  
1820  			Field only valid when Received_qos_data_tid_bitmap[15]
1821  			is set
1822  
1823  
1824  
1825  			QoS control field bits 15-8 of the last properly
1826  			received MPDU with a QoS control field embedded, with  TID
1827  			== 15
1828  */
1829  #define RX_PPDU_END_USER_STATS_16_QOSCTRL_15_8_TID15_OFFSET          0x00000040
1830  #define RX_PPDU_END_USER_STATS_16_QOSCTRL_15_8_TID15_LSB             24
1831  #define RX_PPDU_END_USER_STATS_16_QOSCTRL_15_8_TID15_MASK            0xff000000
1832  
1833  /* Description		RX_PPDU_END_USER_STATS_17_MPDU_OK_BYTE_COUNT
1834  
1835  			The number of bytes received within an MPDU for this
1836  			user with correct FCS. This includes the FCS field
1837  
1838  
1839  
1840  			NOTE:
1841  
1842  			The sum of the four fields.....
1843  
1844  			Mpdu_ok_byte_count +
1845  
1846  			mpdu_err_byte_count +
1847  
1848  
1849  			.....is the total number of bytes that were received for
1850  			this user from the PHY.
1851  
1852  
1853  
1854  			<legal all>
1855  */
1856  #define RX_PPDU_END_USER_STATS_17_MPDU_OK_BYTE_COUNT_OFFSET          0x00000044
1857  #define RX_PPDU_END_USER_STATS_17_MPDU_OK_BYTE_COUNT_LSB             0
1858  #define RX_PPDU_END_USER_STATS_17_MPDU_OK_BYTE_COUNT_MASK            0x01ffffff
1859  
1860  /* Description		RX_PPDU_END_USER_STATS_17_AMPDU_DELIM_OK_COUNT_6_0
1861  
1862  			Number of AMPDU delimiter received with correct
1863  			structure
1864  
1865  			LSB 7 bits from this counter
1866  
1867  
1868  
1869  			Note that this is a delimiter count and not byte count.
1870  			To get to the number of bytes occupied by these delimiters,
1871  			multiply this number by 4
1872  
1873  
1874  
1875  			<legal all>
1876  */
1877  #define RX_PPDU_END_USER_STATS_17_AMPDU_DELIM_OK_COUNT_6_0_OFFSET    0x00000044
1878  #define RX_PPDU_END_USER_STATS_17_AMPDU_DELIM_OK_COUNT_6_0_LSB       25
1879  #define RX_PPDU_END_USER_STATS_17_AMPDU_DELIM_OK_COUNT_6_0_MASK      0xfe000000
1880  
1881  /* Description		RX_PPDU_END_USER_STATS_18_AMPDU_DELIM_ERR_COUNT
1882  
1883  			The number of MPDU delimiter errors counted for this
1884  			user.
1885  
1886  
1887  
1888  			Note that this is a delimiter count and not byte count.
1889  			To get to the number of bytes occupied by these delimiters,
1890  			multiply this number by 4
1891  
1892  			<legal all>
1893  */
1894  #define RX_PPDU_END_USER_STATS_18_AMPDU_DELIM_ERR_COUNT_OFFSET       0x00000048
1895  #define RX_PPDU_END_USER_STATS_18_AMPDU_DELIM_ERR_COUNT_LSB          0
1896  #define RX_PPDU_END_USER_STATS_18_AMPDU_DELIM_ERR_COUNT_MASK         0x01ffffff
1897  
1898  /* Description		RX_PPDU_END_USER_STATS_18_AMPDU_DELIM_OK_COUNT_13_7
1899  
1900  			Number of AMPDU delimiters received with correct
1901  			structure
1902  
1903  			Bits 13-7 from this counter
1904  
1905  
1906  
1907  			Note that this is a delimiter count and not byte count.
1908  			To get to the number of bytes occupied by these delimiters,
1909  			multiply this number by 4
1910  
1911  			<legal all>
1912  */
1913  #define RX_PPDU_END_USER_STATS_18_AMPDU_DELIM_OK_COUNT_13_7_OFFSET   0x00000048
1914  #define RX_PPDU_END_USER_STATS_18_AMPDU_DELIM_OK_COUNT_13_7_LSB      25
1915  #define RX_PPDU_END_USER_STATS_18_AMPDU_DELIM_OK_COUNT_13_7_MASK     0xfe000000
1916  
1917  /* Description		RX_PPDU_END_USER_STATS_19_MPDU_ERR_BYTE_COUNT
1918  
1919  			The number of bytes belonging to MPDUs with an FCS
1920  			error. This includes the FCS field.
1921  
1922  
1923  
1924  			<legal all>
1925  */
1926  #define RX_PPDU_END_USER_STATS_19_MPDU_ERR_BYTE_COUNT_OFFSET         0x0000004c
1927  #define RX_PPDU_END_USER_STATS_19_MPDU_ERR_BYTE_COUNT_LSB            0
1928  #define RX_PPDU_END_USER_STATS_19_MPDU_ERR_BYTE_COUNT_MASK           0x01ffffff
1929  
1930  /* Description		RX_PPDU_END_USER_STATS_19_AMPDU_DELIM_OK_COUNT_20_14
1931  
1932  			Number of AMPDU delimiters received with correct
1933  			structure
1934  
1935  			Bits 20-14 from this counter
1936  
1937  
1938  
1939  			Note that this is a delimiter count and not byte count.
1940  			To get to the number of bytes occupied by these delimiters,
1941  			multiply this number by 4
1942  
1943  
1944  
1945  			<legal all>
1946  */
1947  #define RX_PPDU_END_USER_STATS_19_AMPDU_DELIM_OK_COUNT_20_14_OFFSET  0x0000004c
1948  #define RX_PPDU_END_USER_STATS_19_AMPDU_DELIM_OK_COUNT_20_14_LSB     25
1949  #define RX_PPDU_END_USER_STATS_19_AMPDU_DELIM_OK_COUNT_20_14_MASK    0xfe000000
1950  
1951  /* Description		RX_PPDU_END_USER_STATS_20_NON_CONSECUTIVE_DELIMITER_ERR
1952  
1953  			The number of times an MPDU delimiter error is detected
1954  			that is not immediately preceded by another MPDU delimiter
1955  			also with FCS error.
1956  
1957  
1958  
1959  			The counter saturates at 0xFFFF
1960  
1961  
1962  
1963  			<legal all>
1964  */
1965  #define RX_PPDU_END_USER_STATS_20_NON_CONSECUTIVE_DELIMITER_ERR_OFFSET 0x00000050
1966  #define RX_PPDU_END_USER_STATS_20_NON_CONSECUTIVE_DELIMITER_ERR_LSB  0
1967  #define RX_PPDU_END_USER_STATS_20_NON_CONSECUTIVE_DELIMITER_ERR_MASK 0x0000ffff
1968  
1969  /* Description		RX_PPDU_END_USER_STATS_20_RESERVED_20A
1970  
1971  			<legal 0>
1972  */
1973  #define RX_PPDU_END_USER_STATS_20_RESERVED_20A_OFFSET                0x00000050
1974  #define RX_PPDU_END_USER_STATS_20_RESERVED_20A_LSB                   16
1975  #define RX_PPDU_END_USER_STATS_20_RESERVED_20A_MASK                  0xffff0000
1976  
1977  /* Description		RX_PPDU_END_USER_STATS_21_HT_CONTROL_NULL_FIELD
1978  
1979  
1980  
1981  
1982  			Last successfully received
1983  			HT_CONTROL/VHT_CONTROL/HE_CONTROL  field from QoS Null frame
1984  			for this user.
1985  
1986  			<legal all>
1987  */
1988  #define RX_PPDU_END_USER_STATS_21_HT_CONTROL_NULL_FIELD_OFFSET       0x00000054
1989  #define RX_PPDU_END_USER_STATS_21_HT_CONTROL_NULL_FIELD_LSB          0
1990  #define RX_PPDU_END_USER_STATS_21_HT_CONTROL_NULL_FIELD_MASK         0xffffffff
1991  
1992  /* Description		RX_PPDU_END_USER_STATS_22_SW_RESPONSE_REFERENCE_PTR_EXT
1993  
1994  			Extended Pointer info that SW uses to refer back to an
1995  			expected response transmission. Used for Rate adaptation
1996  			purposes.
1997  
1998  			When a reception occurs that is not tied to an expected
1999  			response, this field is set to 0x0.
2000  
2001  
2002  
2003  			Note: earlier on in this TLV there is also the field:
2004  			Sw_response_reference_ptr.
2005  
2006  			<legal all>
2007  */
2008  #define RX_PPDU_END_USER_STATS_22_SW_RESPONSE_REFERENCE_PTR_EXT_OFFSET 0x00000058
2009  #define RX_PPDU_END_USER_STATS_22_SW_RESPONSE_REFERENCE_PTR_EXT_LSB  0
2010  #define RX_PPDU_END_USER_STATS_22_SW_RESPONSE_REFERENCE_PTR_EXT_MASK 0xffffffff
2011  
2012  
2013  #endif // _RX_PPDU_END_USER_STATS_H_
2014