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