xref: /wlan-driver/fw-api/hw/qca6490/v1/rx_ppdu_end_user_stats.h (revision 5113495b16420b49004c444715d2daae2066e7dc)
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