xref: /wlan-driver/fw-api/hw/qcn6432/rx_ppdu_end_user_stats.h (revision 5113495b16420b49004c444715d2daae2066e7dc)
1*5113495bSYour Name /*
2*5113495bSYour Name  * Copyright (c) 2023 Qualcomm Innovation Center, Inc. All rights reserved.
3*5113495bSYour Name  *
4*5113495bSYour Name  * Permission to use, copy, modify, and/or distribute this software for any
5*5113495bSYour Name  * purpose with or without fee is hereby granted, provided that the above
6*5113495bSYour Name  * copyright notice and this permission notice appear in all copies.
7*5113495bSYour Name  *
8*5113495bSYour Name  * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
9*5113495bSYour Name  * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
10*5113495bSYour Name  * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
11*5113495bSYour Name  * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
12*5113495bSYour Name  * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
13*5113495bSYour Name  * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
14*5113495bSYour Name  * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
15*5113495bSYour Name  */
16*5113495bSYour Name 
17*5113495bSYour Name #ifndef _RX_PPDU_END_USER_STATS_H_
18*5113495bSYour Name #define _RX_PPDU_END_USER_STATS_H_
19*5113495bSYour Name #if !defined(__ASSEMBLER__)
20*5113495bSYour Name #endif
21*5113495bSYour Name 
22*5113495bSYour Name #include "rx_rxpcu_classification_overview.h"
23*5113495bSYour Name #define NUM_OF_DWORDS_RX_PPDU_END_USER_STATS 30
24*5113495bSYour Name 
25*5113495bSYour Name #define NUM_OF_QWORDS_RX_PPDU_END_USER_STATS 15
26*5113495bSYour Name 
27*5113495bSYour Name 
28*5113495bSYour Name struct rx_ppdu_end_user_stats {
29*5113495bSYour Name #ifndef WIFI_BIT_ORDER_BIG_ENDIAN
30*5113495bSYour Name              struct   rx_rxpcu_classification_overview                          rxpcu_classification_details;
31*5113495bSYour Name              uint32_t sta_full_aid                                            : 13, // [12:0]
32*5113495bSYour Name                       mcs                                                     :  4, // [16:13]
33*5113495bSYour Name                       nss                                                     :  3, // [19:17]
34*5113495bSYour Name                       expected_response_ack_or_ba                             :  1, // [20:20]
35*5113495bSYour Name                       reserved_1a                                             : 11; // [31:21]
36*5113495bSYour Name              uint32_t sw_peer_id                                              : 16, // [15:0]
37*5113495bSYour Name                       mpdu_cnt_fcs_err                                        : 11, // [26:16]
38*5113495bSYour Name                       sw2rxdma0_buf_source_used                               :  1, // [27:27]
39*5113495bSYour Name                       fw2rxdma_pmac0_buf_source_used                          :  1, // [28:28]
40*5113495bSYour Name                       sw2rxdma1_buf_source_used                               :  1, // [29:29]
41*5113495bSYour Name                       sw2rxdma_exception_buf_source_used                      :  1, // [30:30]
42*5113495bSYour Name                       fw2rxdma_pmac1_buf_source_used                          :  1; // [31:31]
43*5113495bSYour Name              uint32_t mpdu_cnt_fcs_ok                                         : 11, // [10:0]
44*5113495bSYour Name                       frame_control_info_valid                                :  1, // [11:11]
45*5113495bSYour Name                       qos_control_info_valid                                  :  1, // [12:12]
46*5113495bSYour Name                       ht_control_info_valid                                   :  1, // [13:13]
47*5113495bSYour Name                       data_sequence_control_info_valid                        :  1, // [14:14]
48*5113495bSYour Name                       ht_control_info_null_valid                              :  1, // [15:15]
49*5113495bSYour Name                       rxdma2fw_pmac1_ring_used                                :  1, // [16:16]
50*5113495bSYour Name                       rxdma2reo_ring_used                                     :  1, // [17:17]
51*5113495bSYour Name                       rxdma2fw_pmac0_ring_used                                :  1, // [18:18]
52*5113495bSYour Name                       rxdma2sw_ring_used                                      :  1, // [19:19]
53*5113495bSYour Name                       rxdma_release_ring_used                                 :  1, // [20:20]
54*5113495bSYour Name                       ht_control_field_pkt_type                               :  4, // [24:21]
55*5113495bSYour Name                       rxdma2reo_remote0_ring_used                             :  1, // [25:25]
56*5113495bSYour Name                       rxdma2reo_remote1_ring_used                             :  1, // [26:26]
57*5113495bSYour Name                       reserved_3b                                             :  5; // [31:27]
58*5113495bSYour Name              uint32_t ast_index                                               : 16, // [15:0]
59*5113495bSYour Name                       frame_control_field                                     : 16; // [31:16]
60*5113495bSYour Name              uint32_t first_data_seq_ctrl                                     : 16, // [15:0]
61*5113495bSYour Name                       qos_control_field                                       : 16; // [31:16]
62*5113495bSYour Name              uint32_t ht_control_field                                        : 32; // [31:0]
63*5113495bSYour Name              uint32_t fcs_ok_bitmap_31_0                                      : 32; // [31:0]
64*5113495bSYour Name              uint32_t fcs_ok_bitmap_63_32                                     : 32; // [31:0]
65*5113495bSYour Name              uint32_t udp_msdu_count                                          : 16, // [15:0]
66*5113495bSYour Name                       tcp_msdu_count                                          : 16; // [31:16]
67*5113495bSYour Name              uint32_t other_msdu_count                                        : 16, // [15:0]
68*5113495bSYour Name                       tcp_ack_msdu_count                                      : 16; // [31:16]
69*5113495bSYour Name              uint32_t sw_response_reference_ptr                               : 32; // [31:0]
70*5113495bSYour Name              uint32_t received_qos_data_tid_bitmap                            : 16, // [15:0]
71*5113495bSYour Name                       received_qos_data_tid_eosp_bitmap                       : 16; // [31:16]
72*5113495bSYour Name              uint32_t qosctrl_15_8_tid0                                       :  8, // [7:0]
73*5113495bSYour Name                       qosctrl_15_8_tid1                                       :  8, // [15:8]
74*5113495bSYour Name                       qosctrl_15_8_tid2                                       :  8, // [23:16]
75*5113495bSYour Name                       qosctrl_15_8_tid3                                       :  8; // [31:24]
76*5113495bSYour Name              uint32_t qosctrl_15_8_tid4                                       :  8, // [7:0]
77*5113495bSYour Name                       qosctrl_15_8_tid5                                       :  8, // [15:8]
78*5113495bSYour Name                       qosctrl_15_8_tid6                                       :  8, // [23:16]
79*5113495bSYour Name                       qosctrl_15_8_tid7                                       :  8; // [31:24]
80*5113495bSYour Name              uint32_t qosctrl_15_8_tid8                                       :  8, // [7:0]
81*5113495bSYour Name                       qosctrl_15_8_tid9                                       :  8, // [15:8]
82*5113495bSYour Name                       qosctrl_15_8_tid10                                      :  8, // [23:16]
83*5113495bSYour Name                       qosctrl_15_8_tid11                                      :  8; // [31:24]
84*5113495bSYour Name              uint32_t qosctrl_15_8_tid12                                      :  8, // [7:0]
85*5113495bSYour Name                       qosctrl_15_8_tid13                                      :  8, // [15:8]
86*5113495bSYour Name                       qosctrl_15_8_tid14                                      :  8, // [23:16]
87*5113495bSYour Name                       qosctrl_15_8_tid15                                      :  8; // [31:24]
88*5113495bSYour Name              uint32_t mpdu_ok_byte_count                                      : 25, // [24:0]
89*5113495bSYour Name                       ampdu_delim_ok_count_6_0                                :  7; // [31:25]
90*5113495bSYour Name              uint32_t ampdu_delim_err_count                                   : 25, // [24:0]
91*5113495bSYour Name                       ampdu_delim_ok_count_13_7                               :  7; // [31:25]
92*5113495bSYour Name              uint32_t mpdu_err_byte_count                                     : 25, // [24:0]
93*5113495bSYour Name                       ampdu_delim_ok_count_20_14                              :  7; // [31:25]
94*5113495bSYour Name              uint32_t non_consecutive_delimiter_err                           : 16, // [15:0]
95*5113495bSYour Name                       retried_msdu_count                                      : 16; // [31:16]
96*5113495bSYour Name              uint32_t ht_control_null_field                                   : 32; // [31:0]
97*5113495bSYour Name              uint32_t sw_response_reference_ptr_ext                           : 32; // [31:0]
98*5113495bSYour Name              uint32_t corrupted_due_to_fifo_delay                             :  1, // [0:0]
99*5113495bSYour Name                       frame_control_info_null_valid                           :  1, // [1:1]
100*5113495bSYour Name                       frame_control_field_null                                : 16, // [17:2]
101*5113495bSYour Name                       retried_mpdu_count                                      : 11, // [28:18]
102*5113495bSYour Name                       reserved_23a                                            :  3; // [31:29]
103*5113495bSYour Name              uint32_t rxpcu_mpdu_filter_in_category                           :  2, // [1:0]
104*5113495bSYour Name                       sw_frame_group_id                                       :  7, // [8:2]
105*5113495bSYour Name                       reserved_24a                                            :  4, // [12:9]
106*5113495bSYour Name                       frame_control_info_mgmt_ctrl_valid                      :  1, // [13:13]
107*5113495bSYour Name                       mac_addr_ad2_valid                                      :  1, // [14:14]
108*5113495bSYour Name                       mcast_bcast                                             :  1, // [15:15]
109*5113495bSYour Name                       frame_control_field_mgmt_ctrl                           : 16; // [31:16]
110*5113495bSYour Name              uint32_t user_ppdu_len                                           : 24, // [23:0]
111*5113495bSYour Name                       reserved_25a                                            :  8; // [31:24]
112*5113495bSYour Name              uint32_t mac_addr_ad2_31_0                                       : 32; // [31:0]
113*5113495bSYour Name              uint32_t mac_addr_ad2_47_32                                      : 16, // [15:0]
114*5113495bSYour Name                       amsdu_msdu_count                                        : 16; // [31:16]
115*5113495bSYour Name              uint32_t non_amsdu_msdu_count                                    : 16, // [15:0]
116*5113495bSYour Name                       ucast_msdu_count                                        : 16; // [31:16]
117*5113495bSYour Name              uint32_t bcast_msdu_count                                        : 16, // [15:0]
118*5113495bSYour Name                       mcast_bcast_msdu_count                                  : 16; // [31:16]
119*5113495bSYour Name #else
120*5113495bSYour Name              struct   rx_rxpcu_classification_overview                          rxpcu_classification_details;
121*5113495bSYour Name              uint32_t reserved_1a                                             : 11, // [31:21]
122*5113495bSYour Name                       expected_response_ack_or_ba                             :  1, // [20:20]
123*5113495bSYour Name                       nss                                                     :  3, // [19:17]
124*5113495bSYour Name                       mcs                                                     :  4, // [16:13]
125*5113495bSYour Name                       sta_full_aid                                            : 13; // [12:0]
126*5113495bSYour Name              uint32_t fw2rxdma_pmac1_buf_source_used                          :  1, // [31:31]
127*5113495bSYour Name                       sw2rxdma_exception_buf_source_used                      :  1, // [30:30]
128*5113495bSYour Name                       sw2rxdma1_buf_source_used                               :  1, // [29:29]
129*5113495bSYour Name                       fw2rxdma_pmac0_buf_source_used                          :  1, // [28:28]
130*5113495bSYour Name                       sw2rxdma0_buf_source_used                               :  1, // [27:27]
131*5113495bSYour Name                       mpdu_cnt_fcs_err                                        : 11, // [26:16]
132*5113495bSYour Name                       sw_peer_id                                              : 16; // [15:0]
133*5113495bSYour Name              uint32_t reserved_3b                                             :  5, // [31:27]
134*5113495bSYour Name                       rxdma2reo_remote1_ring_used                             :  1, // [26:26]
135*5113495bSYour Name                       rxdma2reo_remote0_ring_used                             :  1, // [25:25]
136*5113495bSYour Name                       ht_control_field_pkt_type                               :  4, // [24:21]
137*5113495bSYour Name                       rxdma_release_ring_used                                 :  1, // [20:20]
138*5113495bSYour Name                       rxdma2sw_ring_used                                      :  1, // [19:19]
139*5113495bSYour Name                       rxdma2fw_pmac0_ring_used                                :  1, // [18:18]
140*5113495bSYour Name                       rxdma2reo_ring_used                                     :  1, // [17:17]
141*5113495bSYour Name                       rxdma2fw_pmac1_ring_used                                :  1, // [16:16]
142*5113495bSYour Name                       ht_control_info_null_valid                              :  1, // [15:15]
143*5113495bSYour Name                       data_sequence_control_info_valid                        :  1, // [14:14]
144*5113495bSYour Name                       ht_control_info_valid                                   :  1, // [13:13]
145*5113495bSYour Name                       qos_control_info_valid                                  :  1, // [12:12]
146*5113495bSYour Name                       frame_control_info_valid                                :  1, // [11:11]
147*5113495bSYour Name                       mpdu_cnt_fcs_ok                                         : 11; // [10:0]
148*5113495bSYour Name              uint32_t frame_control_field                                     : 16, // [31:16]
149*5113495bSYour Name                       ast_index                                               : 16; // [15:0]
150*5113495bSYour Name              uint32_t qos_control_field                                       : 16, // [31:16]
151*5113495bSYour Name                       first_data_seq_ctrl                                     : 16; // [15:0]
152*5113495bSYour Name              uint32_t ht_control_field                                        : 32; // [31:0]
153*5113495bSYour Name              uint32_t fcs_ok_bitmap_31_0                                      : 32; // [31:0]
154*5113495bSYour Name              uint32_t fcs_ok_bitmap_63_32                                     : 32; // [31:0]
155*5113495bSYour Name              uint32_t tcp_msdu_count                                          : 16, // [31:16]
156*5113495bSYour Name                       udp_msdu_count                                          : 16; // [15:0]
157*5113495bSYour Name              uint32_t tcp_ack_msdu_count                                      : 16, // [31:16]
158*5113495bSYour Name                       other_msdu_count                                        : 16; // [15:0]
159*5113495bSYour Name              uint32_t sw_response_reference_ptr                               : 32; // [31:0]
160*5113495bSYour Name              uint32_t received_qos_data_tid_eosp_bitmap                       : 16, // [31:16]
161*5113495bSYour Name                       received_qos_data_tid_bitmap                            : 16; // [15:0]
162*5113495bSYour Name              uint32_t qosctrl_15_8_tid3                                       :  8, // [31:24]
163*5113495bSYour Name                       qosctrl_15_8_tid2                                       :  8, // [23:16]
164*5113495bSYour Name                       qosctrl_15_8_tid1                                       :  8, // [15:8]
165*5113495bSYour Name                       qosctrl_15_8_tid0                                       :  8; // [7:0]
166*5113495bSYour Name              uint32_t qosctrl_15_8_tid7                                       :  8, // [31:24]
167*5113495bSYour Name                       qosctrl_15_8_tid6                                       :  8, // [23:16]
168*5113495bSYour Name                       qosctrl_15_8_tid5                                       :  8, // [15:8]
169*5113495bSYour Name                       qosctrl_15_8_tid4                                       :  8; // [7:0]
170*5113495bSYour Name              uint32_t qosctrl_15_8_tid11                                      :  8, // [31:24]
171*5113495bSYour Name                       qosctrl_15_8_tid10                                      :  8, // [23:16]
172*5113495bSYour Name                       qosctrl_15_8_tid9                                       :  8, // [15:8]
173*5113495bSYour Name                       qosctrl_15_8_tid8                                       :  8; // [7:0]
174*5113495bSYour Name              uint32_t qosctrl_15_8_tid15                                      :  8, // [31:24]
175*5113495bSYour Name                       qosctrl_15_8_tid14                                      :  8, // [23:16]
176*5113495bSYour Name                       qosctrl_15_8_tid13                                      :  8, // [15:8]
177*5113495bSYour Name                       qosctrl_15_8_tid12                                      :  8; // [7:0]
178*5113495bSYour Name              uint32_t ampdu_delim_ok_count_6_0                                :  7, // [31:25]
179*5113495bSYour Name                       mpdu_ok_byte_count                                      : 25; // [24:0]
180*5113495bSYour Name              uint32_t ampdu_delim_ok_count_13_7                               :  7, // [31:25]
181*5113495bSYour Name                       ampdu_delim_err_count                                   : 25; // [24:0]
182*5113495bSYour Name              uint32_t ampdu_delim_ok_count_20_14                              :  7, // [31:25]
183*5113495bSYour Name                       mpdu_err_byte_count                                     : 25; // [24:0]
184*5113495bSYour Name              uint32_t retried_msdu_count                                      : 16, // [31:16]
185*5113495bSYour Name                       non_consecutive_delimiter_err                           : 16; // [15:0]
186*5113495bSYour Name              uint32_t ht_control_null_field                                   : 32; // [31:0]
187*5113495bSYour Name              uint32_t sw_response_reference_ptr_ext                           : 32; // [31:0]
188*5113495bSYour Name              uint32_t reserved_23a                                            :  3, // [31:29]
189*5113495bSYour Name                       retried_mpdu_count                                      : 11, // [28:18]
190*5113495bSYour Name                       frame_control_field_null                                : 16, // [17:2]
191*5113495bSYour Name                       frame_control_info_null_valid                           :  1, // [1:1]
192*5113495bSYour Name                       corrupted_due_to_fifo_delay                             :  1; // [0:0]
193*5113495bSYour Name              uint32_t frame_control_field_mgmt_ctrl                           : 16, // [31:16]
194*5113495bSYour Name                       mcast_bcast                                             :  1, // [15:15]
195*5113495bSYour Name                       mac_addr_ad2_valid                                      :  1, // [14:14]
196*5113495bSYour Name                       frame_control_info_mgmt_ctrl_valid                      :  1, // [13:13]
197*5113495bSYour Name                       reserved_24a                                            :  4, // [12:9]
198*5113495bSYour Name                       sw_frame_group_id                                       :  7, // [8:2]
199*5113495bSYour Name                       rxpcu_mpdu_filter_in_category                           :  2; // [1:0]
200*5113495bSYour Name              uint32_t reserved_25a                                            :  8, // [31:24]
201*5113495bSYour Name                       user_ppdu_len                                           : 24; // [23:0]
202*5113495bSYour Name              uint32_t mac_addr_ad2_31_0                                       : 32; // [31:0]
203*5113495bSYour Name              uint32_t amsdu_msdu_count                                        : 16, // [31:16]
204*5113495bSYour Name                       mac_addr_ad2_47_32                                      : 16; // [15:0]
205*5113495bSYour Name              uint32_t ucast_msdu_count                                        : 16, // [31:16]
206*5113495bSYour Name                       non_amsdu_msdu_count                                    : 16; // [15:0]
207*5113495bSYour Name              uint32_t mcast_bcast_msdu_count                                  : 16, // [31:16]
208*5113495bSYour Name                       bcast_msdu_count                                        : 16; // [15:0]
209*5113495bSYour Name #endif
210*5113495bSYour Name };
211*5113495bSYour Name 
212*5113495bSYour Name 
213*5113495bSYour Name /* Description		RXPCU_CLASSIFICATION_DETAILS
214*5113495bSYour Name 
215*5113495bSYour Name 			Details related to what RXPCU classification types of MPDUs
216*5113495bSYour Name 			 have been received
217*5113495bSYour Name */
218*5113495bSYour Name 
219*5113495bSYour Name 
220*5113495bSYour Name /* Description		FILTER_PASS_MPDUS
221*5113495bSYour Name 
222*5113495bSYour Name 			When set, at least one Filter Pass MPDU has been received.
223*5113495bSYour Name 			FCS might or might not have been passing.
224*5113495bSYour Name 
225*5113495bSYour Name 			For MU UL, in  TLVs RX_PPDU_END and RX_PPDU_END_STATUS_DONE,
226*5113495bSYour Name 			this field is the "OR of all the users.
227*5113495bSYour Name 			<legal all>
228*5113495bSYour Name */
229*5113495bSYour Name 
230*5113495bSYour Name #define RX_PPDU_END_USER_STATS_RXPCU_CLASSIFICATION_DETAILS_FILTER_PASS_MPDUS_OFFSET 0x0000000000000000
231*5113495bSYour Name #define RX_PPDU_END_USER_STATS_RXPCU_CLASSIFICATION_DETAILS_FILTER_PASS_MPDUS_LSB   0
232*5113495bSYour Name #define RX_PPDU_END_USER_STATS_RXPCU_CLASSIFICATION_DETAILS_FILTER_PASS_MPDUS_MSB   0
233*5113495bSYour Name #define RX_PPDU_END_USER_STATS_RXPCU_CLASSIFICATION_DETAILS_FILTER_PASS_MPDUS_MASK  0x0000000000000001
234*5113495bSYour Name 
235*5113495bSYour Name 
236*5113495bSYour Name /* Description		FILTER_PASS_MPDUS_FCS_OK
237*5113495bSYour Name 
238*5113495bSYour Name 			When set, at least one Filter Pass MPDU has been received
239*5113495bSYour Name 			 that has a correct FCS.
240*5113495bSYour Name 
241*5113495bSYour Name 			For MU UL, in  TLVs RX_PPDU_END and RX_PPDU_END_STATUS_DONE,
242*5113495bSYour Name 			this field is the "OR of all the users.
243*5113495bSYour Name 
244*5113495bSYour Name 			<legal all>
245*5113495bSYour Name */
246*5113495bSYour Name 
247*5113495bSYour Name #define RX_PPDU_END_USER_STATS_RXPCU_CLASSIFICATION_DETAILS_FILTER_PASS_MPDUS_FCS_OK_OFFSET 0x0000000000000000
248*5113495bSYour Name #define RX_PPDU_END_USER_STATS_RXPCU_CLASSIFICATION_DETAILS_FILTER_PASS_MPDUS_FCS_OK_LSB 1
249*5113495bSYour Name #define RX_PPDU_END_USER_STATS_RXPCU_CLASSIFICATION_DETAILS_FILTER_PASS_MPDUS_FCS_OK_MSB 1
250*5113495bSYour Name #define RX_PPDU_END_USER_STATS_RXPCU_CLASSIFICATION_DETAILS_FILTER_PASS_MPDUS_FCS_OK_MASK 0x0000000000000002
251*5113495bSYour Name 
252*5113495bSYour Name 
253*5113495bSYour Name /* Description		MONITOR_DIRECT_MPDUS
254*5113495bSYour Name 
255*5113495bSYour Name 			When set, at least one Monitor Direct MPDU has been received.
256*5113495bSYour Name 			FCS might or might not have been passing
257*5113495bSYour Name 
258*5113495bSYour Name 			For MU UL, in  TLVs RX_PPDU_END and RX_PPDU_END_STATUS_DONE,
259*5113495bSYour Name 			this field is the "OR of all the users.
260*5113495bSYour Name 			<legal all>
261*5113495bSYour Name */
262*5113495bSYour Name 
263*5113495bSYour Name #define RX_PPDU_END_USER_STATS_RXPCU_CLASSIFICATION_DETAILS_MONITOR_DIRECT_MPDUS_OFFSET 0x0000000000000000
264*5113495bSYour Name #define RX_PPDU_END_USER_STATS_RXPCU_CLASSIFICATION_DETAILS_MONITOR_DIRECT_MPDUS_LSB 2
265*5113495bSYour Name #define RX_PPDU_END_USER_STATS_RXPCU_CLASSIFICATION_DETAILS_MONITOR_DIRECT_MPDUS_MSB 2
266*5113495bSYour Name #define RX_PPDU_END_USER_STATS_RXPCU_CLASSIFICATION_DETAILS_MONITOR_DIRECT_MPDUS_MASK 0x0000000000000004
267*5113495bSYour Name 
268*5113495bSYour Name 
269*5113495bSYour Name /* Description		MONITOR_DIRECT_MPDUS_FCS_OK
270*5113495bSYour Name 
271*5113495bSYour Name 			When set, at least one Monitor Direct MPDU has been received
272*5113495bSYour Name 			 that has a correct FCS.
273*5113495bSYour Name 
274*5113495bSYour Name 			For MU UL, in  TLVs RX_PPDU_END and RX_PPDU_END_STATUS_DONE,
275*5113495bSYour Name 			this field is the "OR of all the users.
276*5113495bSYour Name 
277*5113495bSYour Name 			<legal all>
278*5113495bSYour Name */
279*5113495bSYour Name 
280*5113495bSYour Name #define RX_PPDU_END_USER_STATS_RXPCU_CLASSIFICATION_DETAILS_MONITOR_DIRECT_MPDUS_FCS_OK_OFFSET 0x0000000000000000
281*5113495bSYour Name #define RX_PPDU_END_USER_STATS_RXPCU_CLASSIFICATION_DETAILS_MONITOR_DIRECT_MPDUS_FCS_OK_LSB 3
282*5113495bSYour Name #define RX_PPDU_END_USER_STATS_RXPCU_CLASSIFICATION_DETAILS_MONITOR_DIRECT_MPDUS_FCS_OK_MSB 3
283*5113495bSYour Name #define RX_PPDU_END_USER_STATS_RXPCU_CLASSIFICATION_DETAILS_MONITOR_DIRECT_MPDUS_FCS_OK_MASK 0x0000000000000008
284*5113495bSYour Name 
285*5113495bSYour Name 
286*5113495bSYour Name /* Description		MONITOR_OTHER_MPDUS
287*5113495bSYour Name 
288*5113495bSYour Name 			When set, at least one Monitor Direct MPDU has been received.
289*5113495bSYour Name 			FCS might or might not have been passing.
290*5113495bSYour Name 
291*5113495bSYour Name 			For MU UL, in  TLVs RX_PPDU_END and RX_PPDU_END_STATUS_DONE,
292*5113495bSYour Name 			this field is the "OR of all the users.
293*5113495bSYour Name 			<legal all>
294*5113495bSYour Name */
295*5113495bSYour Name 
296*5113495bSYour Name #define RX_PPDU_END_USER_STATS_RXPCU_CLASSIFICATION_DETAILS_MONITOR_OTHER_MPDUS_OFFSET 0x0000000000000000
297*5113495bSYour Name #define RX_PPDU_END_USER_STATS_RXPCU_CLASSIFICATION_DETAILS_MONITOR_OTHER_MPDUS_LSB 4
298*5113495bSYour Name #define RX_PPDU_END_USER_STATS_RXPCU_CLASSIFICATION_DETAILS_MONITOR_OTHER_MPDUS_MSB 4
299*5113495bSYour Name #define RX_PPDU_END_USER_STATS_RXPCU_CLASSIFICATION_DETAILS_MONITOR_OTHER_MPDUS_MASK 0x0000000000000010
300*5113495bSYour Name 
301*5113495bSYour Name 
302*5113495bSYour Name /* Description		MONITOR_OTHER_MPDUS_FCS_OK
303*5113495bSYour Name 
304*5113495bSYour Name 			When set, at least one Monitor Direct MPDU has been received
305*5113495bSYour Name 			 that has a correct FCS.
306*5113495bSYour Name 
307*5113495bSYour Name 			For MU UL, in  TLVs RX_PPDU_END and RX_PPDU_END_STATUS_DONE,
308*5113495bSYour Name 			this field is the "OR of all the users.
309*5113495bSYour Name 			<legal all>
310*5113495bSYour Name */
311*5113495bSYour Name 
312*5113495bSYour Name #define RX_PPDU_END_USER_STATS_RXPCU_CLASSIFICATION_DETAILS_MONITOR_OTHER_MPDUS_FCS_OK_OFFSET 0x0000000000000000
313*5113495bSYour Name #define RX_PPDU_END_USER_STATS_RXPCU_CLASSIFICATION_DETAILS_MONITOR_OTHER_MPDUS_FCS_OK_LSB 5
314*5113495bSYour Name #define RX_PPDU_END_USER_STATS_RXPCU_CLASSIFICATION_DETAILS_MONITOR_OTHER_MPDUS_FCS_OK_MSB 5
315*5113495bSYour Name #define RX_PPDU_END_USER_STATS_RXPCU_CLASSIFICATION_DETAILS_MONITOR_OTHER_MPDUS_FCS_OK_MASK 0x0000000000000020
316*5113495bSYour Name 
317*5113495bSYour Name 
318*5113495bSYour Name /* Description		PHYRX_ABORT_RECEIVED
319*5113495bSYour Name 
320*5113495bSYour Name 			When set, PPDU reception was aborted by the PHY
321*5113495bSYour Name 			<legal all>
322*5113495bSYour Name */
323*5113495bSYour Name 
324*5113495bSYour Name #define RX_PPDU_END_USER_STATS_RXPCU_CLASSIFICATION_DETAILS_PHYRX_ABORT_RECEIVED_OFFSET 0x0000000000000000
325*5113495bSYour Name #define RX_PPDU_END_USER_STATS_RXPCU_CLASSIFICATION_DETAILS_PHYRX_ABORT_RECEIVED_LSB 6
326*5113495bSYour Name #define RX_PPDU_END_USER_STATS_RXPCU_CLASSIFICATION_DETAILS_PHYRX_ABORT_RECEIVED_MSB 6
327*5113495bSYour Name #define RX_PPDU_END_USER_STATS_RXPCU_CLASSIFICATION_DETAILS_PHYRX_ABORT_RECEIVED_MASK 0x0000000000000040
328*5113495bSYour Name 
329*5113495bSYour Name 
330*5113495bSYour Name /* Description		FILTER_PASS_MONITOR_OVRD_MPDUS
331*5113495bSYour Name 
332*5113495bSYour Name 			When set, at least one 'Filter Pass Monitor Override' MPDU
333*5113495bSYour Name 			 has been received. FCS might or might not have been passing.
334*5113495bSYour Name 
335*5113495bSYour Name 
336*5113495bSYour Name 			For MU UL, in  TLVs RX_PPDU_END and RX_PPDU_END_STATUS_DONE,
337*5113495bSYour Name 			this field is the "OR of all the users.
338*5113495bSYour Name 			<legal all>
339*5113495bSYour Name */
340*5113495bSYour Name 
341*5113495bSYour Name #define RX_PPDU_END_USER_STATS_RXPCU_CLASSIFICATION_DETAILS_FILTER_PASS_MONITOR_OVRD_MPDUS_OFFSET 0x0000000000000000
342*5113495bSYour Name #define RX_PPDU_END_USER_STATS_RXPCU_CLASSIFICATION_DETAILS_FILTER_PASS_MONITOR_OVRD_MPDUS_LSB 7
343*5113495bSYour Name #define RX_PPDU_END_USER_STATS_RXPCU_CLASSIFICATION_DETAILS_FILTER_PASS_MONITOR_OVRD_MPDUS_MSB 7
344*5113495bSYour Name #define RX_PPDU_END_USER_STATS_RXPCU_CLASSIFICATION_DETAILS_FILTER_PASS_MONITOR_OVRD_MPDUS_MASK 0x0000000000000080
345*5113495bSYour Name 
346*5113495bSYour Name 
347*5113495bSYour Name /* Description		FILTER_PASS_MONITOR_OVRD_MPDUS_FCS_OK
348*5113495bSYour Name 
349*5113495bSYour Name 			When set, at least one 'Filter Pass Monitor Override' MPDU
350*5113495bSYour Name 			 has been received that has a correct FCS.
351*5113495bSYour Name 
352*5113495bSYour Name 			For MU UL, in  TLVs RX_PPDU_END and RX_PPDU_END_STATUS_DONE,
353*5113495bSYour Name 			this field is the "OR of all the users.
354*5113495bSYour Name 
355*5113495bSYour Name 			<legal all>
356*5113495bSYour Name */
357*5113495bSYour Name 
358*5113495bSYour Name #define RX_PPDU_END_USER_STATS_RXPCU_CLASSIFICATION_DETAILS_FILTER_PASS_MONITOR_OVRD_MPDUS_FCS_OK_OFFSET 0x0000000000000000
359*5113495bSYour Name #define RX_PPDU_END_USER_STATS_RXPCU_CLASSIFICATION_DETAILS_FILTER_PASS_MONITOR_OVRD_MPDUS_FCS_OK_LSB 8
360*5113495bSYour Name #define RX_PPDU_END_USER_STATS_RXPCU_CLASSIFICATION_DETAILS_FILTER_PASS_MONITOR_OVRD_MPDUS_FCS_OK_MSB 8
361*5113495bSYour Name #define RX_PPDU_END_USER_STATS_RXPCU_CLASSIFICATION_DETAILS_FILTER_PASS_MONITOR_OVRD_MPDUS_FCS_OK_MASK 0x0000000000000100
362*5113495bSYour Name 
363*5113495bSYour Name 
364*5113495bSYour Name /* Description		RESERVED_0
365*5113495bSYour Name 
366*5113495bSYour Name 			<legal 0>
367*5113495bSYour Name */
368*5113495bSYour Name 
369*5113495bSYour Name #define RX_PPDU_END_USER_STATS_RXPCU_CLASSIFICATION_DETAILS_RESERVED_0_OFFSET       0x0000000000000000
370*5113495bSYour Name #define RX_PPDU_END_USER_STATS_RXPCU_CLASSIFICATION_DETAILS_RESERVED_0_LSB          9
371*5113495bSYour Name #define RX_PPDU_END_USER_STATS_RXPCU_CLASSIFICATION_DETAILS_RESERVED_0_MSB          15
372*5113495bSYour Name #define RX_PPDU_END_USER_STATS_RXPCU_CLASSIFICATION_DETAILS_RESERVED_0_MASK         0x000000000000fe00
373*5113495bSYour Name 
374*5113495bSYour Name 
375*5113495bSYour Name /* Description		PHY_PPDU_ID
376*5113495bSYour Name 
377*5113495bSYour Name 			A ppdu counter value that PHY increments for every PPDU
378*5113495bSYour Name 			received. The counter value wraps around
379*5113495bSYour Name 			<legal all>
380*5113495bSYour Name */
381*5113495bSYour Name 
382*5113495bSYour Name #define RX_PPDU_END_USER_STATS_RXPCU_CLASSIFICATION_DETAILS_PHY_PPDU_ID_OFFSET      0x0000000000000000
383*5113495bSYour Name #define RX_PPDU_END_USER_STATS_RXPCU_CLASSIFICATION_DETAILS_PHY_PPDU_ID_LSB         16
384*5113495bSYour Name #define RX_PPDU_END_USER_STATS_RXPCU_CLASSIFICATION_DETAILS_PHY_PPDU_ID_MSB         31
385*5113495bSYour Name #define RX_PPDU_END_USER_STATS_RXPCU_CLASSIFICATION_DETAILS_PHY_PPDU_ID_MASK        0x00000000ffff0000
386*5113495bSYour Name 
387*5113495bSYour Name 
388*5113495bSYour Name /* Description		STA_FULL_AID
389*5113495bSYour Name 
390*5113495bSYour Name 			Consumer: FW
391*5113495bSYour Name 			Producer: RXPCU
392*5113495bSYour Name 
393*5113495bSYour Name 			The full AID of this station.
394*5113495bSYour Name 
395*5113495bSYour Name 			<legal all>
396*5113495bSYour Name */
397*5113495bSYour Name 
398*5113495bSYour Name #define RX_PPDU_END_USER_STATS_STA_FULL_AID_OFFSET                                  0x0000000000000000
399*5113495bSYour Name #define RX_PPDU_END_USER_STATS_STA_FULL_AID_LSB                                     32
400*5113495bSYour Name #define RX_PPDU_END_USER_STATS_STA_FULL_AID_MSB                                     44
401*5113495bSYour Name #define RX_PPDU_END_USER_STATS_STA_FULL_AID_MASK                                    0x00001fff00000000
402*5113495bSYour Name 
403*5113495bSYour Name 
404*5113495bSYour Name /* Description		MCS
405*5113495bSYour Name 
406*5113495bSYour Name 			MCS of the received frame
407*5113495bSYour Name 
408*5113495bSYour Name 			For details, refer to  MCS_TYPE description
409*5113495bSYour Name 			Note: This is "rate" in case of 11a/11b
410*5113495bSYour Name 
411*5113495bSYour Name 			<legal all>
412*5113495bSYour Name */
413*5113495bSYour Name 
414*5113495bSYour Name #define RX_PPDU_END_USER_STATS_MCS_OFFSET                                           0x0000000000000000
415*5113495bSYour Name #define RX_PPDU_END_USER_STATS_MCS_LSB                                              45
416*5113495bSYour Name #define RX_PPDU_END_USER_STATS_MCS_MSB                                              48
417*5113495bSYour Name #define RX_PPDU_END_USER_STATS_MCS_MASK                                             0x0001e00000000000
418*5113495bSYour Name 
419*5113495bSYour Name 
420*5113495bSYour Name /* Description		NSS
421*5113495bSYour Name 
422*5113495bSYour Name 			Number of spatial streams.
423*5113495bSYour Name 
424*5113495bSYour Name 			NOTE: RXPCU derives this from the 'Mimo_ss_bitmap'
425*5113495bSYour Name 
426*5113495bSYour Name 			<enum 0 1_spatial_stream>Single spatial stream
427*5113495bSYour Name 			<enum 1 2_spatial_streams>2 spatial streams
428*5113495bSYour Name 			<enum 2 3_spatial_streams>3 spatial streams
429*5113495bSYour Name 			<enum 3 4_spatial_streams>4 spatial streams
430*5113495bSYour Name 			<enum 4 5_spatial_streams>5 spatial streams
431*5113495bSYour Name 			<enum 5 6_spatial_streams>6 spatial streams
432*5113495bSYour Name 			<enum 6 7_spatial_streams>7 spatial streams
433*5113495bSYour Name 			<enum 7 8_spatial_streams>8 spatial streams
434*5113495bSYour Name */
435*5113495bSYour Name 
436*5113495bSYour Name #define RX_PPDU_END_USER_STATS_NSS_OFFSET                                           0x0000000000000000
437*5113495bSYour Name #define RX_PPDU_END_USER_STATS_NSS_LSB                                              49
438*5113495bSYour Name #define RX_PPDU_END_USER_STATS_NSS_MSB                                              51
439*5113495bSYour Name #define RX_PPDU_END_USER_STATS_NSS_MASK                                             0x000e000000000000
440*5113495bSYour Name 
441*5113495bSYour Name 
442*5113495bSYour Name /* Description		EXPECTED_RESPONSE_ACK_OR_BA
443*5113495bSYour Name 
444*5113495bSYour Name 			When set, it indicates an Ack or BA matching 'EXPECTED_RESPONSE'
445*5113495bSYour Name 			from TXPCU
446*5113495bSYour Name */
447*5113495bSYour Name 
448*5113495bSYour Name #define RX_PPDU_END_USER_STATS_EXPECTED_RESPONSE_ACK_OR_BA_OFFSET                   0x0000000000000000
449*5113495bSYour Name #define RX_PPDU_END_USER_STATS_EXPECTED_RESPONSE_ACK_OR_BA_LSB                      52
450*5113495bSYour Name #define RX_PPDU_END_USER_STATS_EXPECTED_RESPONSE_ACK_OR_BA_MSB                      52
451*5113495bSYour Name #define RX_PPDU_END_USER_STATS_EXPECTED_RESPONSE_ACK_OR_BA_MASK                     0x0010000000000000
452*5113495bSYour Name 
453*5113495bSYour Name 
454*5113495bSYour Name /* Description		RESERVED_1A
455*5113495bSYour Name 
456*5113495bSYour Name 			<legal 0>
457*5113495bSYour Name */
458*5113495bSYour Name 
459*5113495bSYour Name #define RX_PPDU_END_USER_STATS_RESERVED_1A_OFFSET                                   0x0000000000000000
460*5113495bSYour Name #define RX_PPDU_END_USER_STATS_RESERVED_1A_LSB                                      53
461*5113495bSYour Name #define RX_PPDU_END_USER_STATS_RESERVED_1A_MSB                                      63
462*5113495bSYour Name #define RX_PPDU_END_USER_STATS_RESERVED_1A_MASK                                     0xffe0000000000000
463*5113495bSYour Name 
464*5113495bSYour Name 
465*5113495bSYour Name /* Description		SW_PEER_ID
466*5113495bSYour Name 
467*5113495bSYour Name 			This field indicates a unique peer identifier, set from
468*5113495bSYour Name 			the field 'sw_peer_id' in the AST entry corresponding to
469*5113495bSYour Name 			 this MPDU. It is provided by RXPCU.
470*5113495bSYour Name 			A value of 0xFFFF indicates no AST entry was found or no
471*5113495bSYour Name 			 AST search was performed.
472*5113495bSYour Name 			<legal all>
473*5113495bSYour Name */
474*5113495bSYour Name 
475*5113495bSYour Name #define RX_PPDU_END_USER_STATS_SW_PEER_ID_OFFSET                                    0x0000000000000008
476*5113495bSYour Name #define RX_PPDU_END_USER_STATS_SW_PEER_ID_LSB                                       0
477*5113495bSYour Name #define RX_PPDU_END_USER_STATS_SW_PEER_ID_MSB                                       15
478*5113495bSYour Name #define RX_PPDU_END_USER_STATS_SW_PEER_ID_MASK                                      0x000000000000ffff
479*5113495bSYour Name 
480*5113495bSYour Name 
481*5113495bSYour Name /* Description		MPDU_CNT_FCS_ERR
482*5113495bSYour Name 
483*5113495bSYour Name 			The number of MPDUs received from this STA in this PPDU
484*5113495bSYour Name 			with FCS errors
485*5113495bSYour Name 			<legal all>
486*5113495bSYour Name */
487*5113495bSYour Name 
488*5113495bSYour Name #define RX_PPDU_END_USER_STATS_MPDU_CNT_FCS_ERR_OFFSET                              0x0000000000000008
489*5113495bSYour Name #define RX_PPDU_END_USER_STATS_MPDU_CNT_FCS_ERR_LSB                                 16
490*5113495bSYour Name #define RX_PPDU_END_USER_STATS_MPDU_CNT_FCS_ERR_MSB                                 26
491*5113495bSYour Name #define RX_PPDU_END_USER_STATS_MPDU_CNT_FCS_ERR_MASK                                0x0000000007ff0000
492*5113495bSYour Name 
493*5113495bSYour Name 
494*5113495bSYour Name /* Description		SW2RXDMA0_BUF_SOURCE_USED
495*5113495bSYour Name 
496*5113495bSYour Name 			Field filled in by RXDMA
497*5113495bSYour Name 
498*5113495bSYour Name 			When set, RXDMA has used the sw2rxdma0 buffer ring as source
499*5113495bSYour Name 			 for at least one of the frames in this PPDU.
500*5113495bSYour Name */
501*5113495bSYour Name 
502*5113495bSYour Name #define RX_PPDU_END_USER_STATS_SW2RXDMA0_BUF_SOURCE_USED_OFFSET                     0x0000000000000008
503*5113495bSYour Name #define RX_PPDU_END_USER_STATS_SW2RXDMA0_BUF_SOURCE_USED_LSB                        27
504*5113495bSYour Name #define RX_PPDU_END_USER_STATS_SW2RXDMA0_BUF_SOURCE_USED_MSB                        27
505*5113495bSYour Name #define RX_PPDU_END_USER_STATS_SW2RXDMA0_BUF_SOURCE_USED_MASK                       0x0000000008000000
506*5113495bSYour Name 
507*5113495bSYour Name 
508*5113495bSYour Name /* Description		FW2RXDMA_PMAC0_BUF_SOURCE_USED
509*5113495bSYour Name 
510*5113495bSYour Name 			Field filled in by RXDMA
511*5113495bSYour Name 
512*5113495bSYour Name 			When set, RXDMA has used the fw2rxdma buffer ring for PMAC0
513*5113495bSYour Name 			 as source for at least one of the frames in this PPDU.
514*5113495bSYour Name */
515*5113495bSYour Name 
516*5113495bSYour Name #define RX_PPDU_END_USER_STATS_FW2RXDMA_PMAC0_BUF_SOURCE_USED_OFFSET                0x0000000000000008
517*5113495bSYour Name #define RX_PPDU_END_USER_STATS_FW2RXDMA_PMAC0_BUF_SOURCE_USED_LSB                   28
518*5113495bSYour Name #define RX_PPDU_END_USER_STATS_FW2RXDMA_PMAC0_BUF_SOURCE_USED_MSB                   28
519*5113495bSYour Name #define RX_PPDU_END_USER_STATS_FW2RXDMA_PMAC0_BUF_SOURCE_USED_MASK                  0x0000000010000000
520*5113495bSYour Name 
521*5113495bSYour Name 
522*5113495bSYour Name /* Description		SW2RXDMA1_BUF_SOURCE_USED
523*5113495bSYour Name 
524*5113495bSYour Name 			Field filled in by RXDMA
525*5113495bSYour Name 
526*5113495bSYour Name 			When set, RXDMA has used the sw2rxdma1 buffer ring as source
527*5113495bSYour Name 			 for at least one of the frames in this PPDU.
528*5113495bSYour Name */
529*5113495bSYour Name 
530*5113495bSYour Name #define RX_PPDU_END_USER_STATS_SW2RXDMA1_BUF_SOURCE_USED_OFFSET                     0x0000000000000008
531*5113495bSYour Name #define RX_PPDU_END_USER_STATS_SW2RXDMA1_BUF_SOURCE_USED_LSB                        29
532*5113495bSYour Name #define RX_PPDU_END_USER_STATS_SW2RXDMA1_BUF_SOURCE_USED_MSB                        29
533*5113495bSYour Name #define RX_PPDU_END_USER_STATS_SW2RXDMA1_BUF_SOURCE_USED_MASK                       0x0000000020000000
534*5113495bSYour Name 
535*5113495bSYour Name 
536*5113495bSYour Name /* Description		SW2RXDMA_EXCEPTION_BUF_SOURCE_USED
537*5113495bSYour Name 
538*5113495bSYour Name 			Field filled in by RXDMA
539*5113495bSYour Name 
540*5113495bSYour Name 			When set, RXDMA has used the sw2rxdma_exception buffer ring
541*5113495bSYour Name 			 as source for at least one of the frames in this PPDU.
542*5113495bSYour Name */
543*5113495bSYour Name 
544*5113495bSYour Name #define RX_PPDU_END_USER_STATS_SW2RXDMA_EXCEPTION_BUF_SOURCE_USED_OFFSET            0x0000000000000008
545*5113495bSYour Name #define RX_PPDU_END_USER_STATS_SW2RXDMA_EXCEPTION_BUF_SOURCE_USED_LSB               30
546*5113495bSYour Name #define RX_PPDU_END_USER_STATS_SW2RXDMA_EXCEPTION_BUF_SOURCE_USED_MSB               30
547*5113495bSYour Name #define RX_PPDU_END_USER_STATS_SW2RXDMA_EXCEPTION_BUF_SOURCE_USED_MASK              0x0000000040000000
548*5113495bSYour Name 
549*5113495bSYour Name 
550*5113495bSYour Name /* Description		FW2RXDMA_PMAC1_BUF_SOURCE_USED
551*5113495bSYour Name 
552*5113495bSYour Name 			Field filled in by RXDMA
553*5113495bSYour Name 
554*5113495bSYour Name 			When set, RXDMA has used the fw2rxdma buffer ring for PMAC1
555*5113495bSYour Name 			 as source for at least one of the frames in this PPDU.
556*5113495bSYour Name */
557*5113495bSYour Name 
558*5113495bSYour Name #define RX_PPDU_END_USER_STATS_FW2RXDMA_PMAC1_BUF_SOURCE_USED_OFFSET                0x0000000000000008
559*5113495bSYour Name #define RX_PPDU_END_USER_STATS_FW2RXDMA_PMAC1_BUF_SOURCE_USED_LSB                   31
560*5113495bSYour Name #define RX_PPDU_END_USER_STATS_FW2RXDMA_PMAC1_BUF_SOURCE_USED_MSB                   31
561*5113495bSYour Name #define RX_PPDU_END_USER_STATS_FW2RXDMA_PMAC1_BUF_SOURCE_USED_MASK                  0x0000000080000000
562*5113495bSYour Name 
563*5113495bSYour Name 
564*5113495bSYour Name /* Description		MPDU_CNT_FCS_OK
565*5113495bSYour Name 
566*5113495bSYour Name 			The number of MPDUs received from this STA in this PPDU
567*5113495bSYour Name 			with correct FCS
568*5113495bSYour Name 			<legal all>
569*5113495bSYour Name */
570*5113495bSYour Name 
571*5113495bSYour Name #define RX_PPDU_END_USER_STATS_MPDU_CNT_FCS_OK_OFFSET                               0x0000000000000008
572*5113495bSYour Name #define RX_PPDU_END_USER_STATS_MPDU_CNT_FCS_OK_LSB                                  32
573*5113495bSYour Name #define RX_PPDU_END_USER_STATS_MPDU_CNT_FCS_OK_MSB                                  42
574*5113495bSYour Name #define RX_PPDU_END_USER_STATS_MPDU_CNT_FCS_OK_MASK                                 0x000007ff00000000
575*5113495bSYour Name 
576*5113495bSYour Name 
577*5113495bSYour Name /* Description		FRAME_CONTROL_INFO_VALID
578*5113495bSYour Name 
579*5113495bSYour Name 			When set, the frame_control_info field contains valid information
580*5113495bSYour Name 
581*5113495bSYour Name 			<legal all>
582*5113495bSYour Name */
583*5113495bSYour Name 
584*5113495bSYour Name #define RX_PPDU_END_USER_STATS_FRAME_CONTROL_INFO_VALID_OFFSET                      0x0000000000000008
585*5113495bSYour Name #define RX_PPDU_END_USER_STATS_FRAME_CONTROL_INFO_VALID_LSB                         43
586*5113495bSYour Name #define RX_PPDU_END_USER_STATS_FRAME_CONTROL_INFO_VALID_MSB                         43
587*5113495bSYour Name #define RX_PPDU_END_USER_STATS_FRAME_CONTROL_INFO_VALID_MASK                        0x0000080000000000
588*5113495bSYour Name 
589*5113495bSYour Name 
590*5113495bSYour Name /* Description		QOS_CONTROL_INFO_VALID
591*5113495bSYour Name 
592*5113495bSYour Name 			When set, the QoS_control_info field contains valid information
593*5113495bSYour Name 
594*5113495bSYour Name 			<legal all>
595*5113495bSYour Name */
596*5113495bSYour Name 
597*5113495bSYour Name #define RX_PPDU_END_USER_STATS_QOS_CONTROL_INFO_VALID_OFFSET                        0x0000000000000008
598*5113495bSYour Name #define RX_PPDU_END_USER_STATS_QOS_CONTROL_INFO_VALID_LSB                           44
599*5113495bSYour Name #define RX_PPDU_END_USER_STATS_QOS_CONTROL_INFO_VALID_MSB                           44
600*5113495bSYour Name #define RX_PPDU_END_USER_STATS_QOS_CONTROL_INFO_VALID_MASK                          0x0000100000000000
601*5113495bSYour Name 
602*5113495bSYour Name 
603*5113495bSYour Name /* Description		HT_CONTROL_INFO_VALID
604*5113495bSYour Name 
605*5113495bSYour Name 			When set, the HT_control_field contains valid information
606*5113495bSYour Name 
607*5113495bSYour Name 			<legal all>
608*5113495bSYour Name */
609*5113495bSYour Name 
610*5113495bSYour Name #define RX_PPDU_END_USER_STATS_HT_CONTROL_INFO_VALID_OFFSET                         0x0000000000000008
611*5113495bSYour Name #define RX_PPDU_END_USER_STATS_HT_CONTROL_INFO_VALID_LSB                            45
612*5113495bSYour Name #define RX_PPDU_END_USER_STATS_HT_CONTROL_INFO_VALID_MSB                            45
613*5113495bSYour Name #define RX_PPDU_END_USER_STATS_HT_CONTROL_INFO_VALID_MASK                           0x0000200000000000
614*5113495bSYour Name 
615*5113495bSYour Name 
616*5113495bSYour Name /* Description		DATA_SEQUENCE_CONTROL_INFO_VALID
617*5113495bSYour Name 
618*5113495bSYour Name 			When set, the First_data_seq_ctrl field contains valid information
619*5113495bSYour Name 
620*5113495bSYour Name 			<legal all>
621*5113495bSYour Name */
622*5113495bSYour Name 
623*5113495bSYour Name #define RX_PPDU_END_USER_STATS_DATA_SEQUENCE_CONTROL_INFO_VALID_OFFSET              0x0000000000000008
624*5113495bSYour Name #define RX_PPDU_END_USER_STATS_DATA_SEQUENCE_CONTROL_INFO_VALID_LSB                 46
625*5113495bSYour Name #define RX_PPDU_END_USER_STATS_DATA_SEQUENCE_CONTROL_INFO_VALID_MSB                 46
626*5113495bSYour Name #define RX_PPDU_END_USER_STATS_DATA_SEQUENCE_CONTROL_INFO_VALID_MASK                0x0000400000000000
627*5113495bSYour Name 
628*5113495bSYour Name 
629*5113495bSYour Name /* Description		HT_CONTROL_INFO_NULL_VALID
630*5113495bSYour Name 
631*5113495bSYour Name 			When set, the HT_control_NULL_field contains valid information
632*5113495bSYour Name 
633*5113495bSYour Name 			<legal all>
634*5113495bSYour Name */
635*5113495bSYour Name 
636*5113495bSYour Name #define RX_PPDU_END_USER_STATS_HT_CONTROL_INFO_NULL_VALID_OFFSET                    0x0000000000000008
637*5113495bSYour Name #define RX_PPDU_END_USER_STATS_HT_CONTROL_INFO_NULL_VALID_LSB                       47
638*5113495bSYour Name #define RX_PPDU_END_USER_STATS_HT_CONTROL_INFO_NULL_VALID_MSB                       47
639*5113495bSYour Name #define RX_PPDU_END_USER_STATS_HT_CONTROL_INFO_NULL_VALID_MASK                      0x0000800000000000
640*5113495bSYour Name 
641*5113495bSYour Name 
642*5113495bSYour Name /* Description		RXDMA2FW_PMAC1_RING_USED
643*5113495bSYour Name 
644*5113495bSYour Name 			Field filled in by RXDMA
645*5113495bSYour Name 
646*5113495bSYour Name 			Set when at least one frame during this PPDU got pushed
647*5113495bSYour Name 			to this ring by RXDMA
648*5113495bSYour Name */
649*5113495bSYour Name 
650*5113495bSYour Name #define RX_PPDU_END_USER_STATS_RXDMA2FW_PMAC1_RING_USED_OFFSET                      0x0000000000000008
651*5113495bSYour Name #define RX_PPDU_END_USER_STATS_RXDMA2FW_PMAC1_RING_USED_LSB                         48
652*5113495bSYour Name #define RX_PPDU_END_USER_STATS_RXDMA2FW_PMAC1_RING_USED_MSB                         48
653*5113495bSYour Name #define RX_PPDU_END_USER_STATS_RXDMA2FW_PMAC1_RING_USED_MASK                        0x0001000000000000
654*5113495bSYour Name 
655*5113495bSYour Name 
656*5113495bSYour Name /* Description		RXDMA2REO_RING_USED
657*5113495bSYour Name 
658*5113495bSYour Name 			Field filled in by RXDMA
659*5113495bSYour Name 
660*5113495bSYour Name 			Set when at least one frame during this PPDU got pushed
661*5113495bSYour Name 			to this ring by RXDMA
662*5113495bSYour Name */
663*5113495bSYour Name 
664*5113495bSYour Name #define RX_PPDU_END_USER_STATS_RXDMA2REO_RING_USED_OFFSET                           0x0000000000000008
665*5113495bSYour Name #define RX_PPDU_END_USER_STATS_RXDMA2REO_RING_USED_LSB                              49
666*5113495bSYour Name #define RX_PPDU_END_USER_STATS_RXDMA2REO_RING_USED_MSB                              49
667*5113495bSYour Name #define RX_PPDU_END_USER_STATS_RXDMA2REO_RING_USED_MASK                             0x0002000000000000
668*5113495bSYour Name 
669*5113495bSYour Name 
670*5113495bSYour Name /* Description		RXDMA2FW_PMAC0_RING_USED
671*5113495bSYour Name 
672*5113495bSYour Name 			Field filled in by RXDMA
673*5113495bSYour Name 
674*5113495bSYour Name 			Set when at least one frame during this PPDU got pushed
675*5113495bSYour Name 			to this ring by RXDMA
676*5113495bSYour Name */
677*5113495bSYour Name 
678*5113495bSYour Name #define RX_PPDU_END_USER_STATS_RXDMA2FW_PMAC0_RING_USED_OFFSET                      0x0000000000000008
679*5113495bSYour Name #define RX_PPDU_END_USER_STATS_RXDMA2FW_PMAC0_RING_USED_LSB                         50
680*5113495bSYour Name #define RX_PPDU_END_USER_STATS_RXDMA2FW_PMAC0_RING_USED_MSB                         50
681*5113495bSYour Name #define RX_PPDU_END_USER_STATS_RXDMA2FW_PMAC0_RING_USED_MASK                        0x0004000000000000
682*5113495bSYour Name 
683*5113495bSYour Name 
684*5113495bSYour Name /* Description		RXDMA2SW_RING_USED
685*5113495bSYour Name 
686*5113495bSYour Name 			Field filled in by RXDMA
687*5113495bSYour Name 
688*5113495bSYour Name 			Set when at least one frame during this PPDU got pushed
689*5113495bSYour Name 			to this ring by RXDMA
690*5113495bSYour Name */
691*5113495bSYour Name 
692*5113495bSYour Name #define RX_PPDU_END_USER_STATS_RXDMA2SW_RING_USED_OFFSET                            0x0000000000000008
693*5113495bSYour Name #define RX_PPDU_END_USER_STATS_RXDMA2SW_RING_USED_LSB                               51
694*5113495bSYour Name #define RX_PPDU_END_USER_STATS_RXDMA2SW_RING_USED_MSB                               51
695*5113495bSYour Name #define RX_PPDU_END_USER_STATS_RXDMA2SW_RING_USED_MASK                              0x0008000000000000
696*5113495bSYour Name 
697*5113495bSYour Name 
698*5113495bSYour Name /* Description		RXDMA_RELEASE_RING_USED
699*5113495bSYour Name 
700*5113495bSYour Name 			Field filled in by RXDMA
701*5113495bSYour Name 
702*5113495bSYour Name 			Set when at least one frame during this PPDU got pushed
703*5113495bSYour Name 			to this ring by RXDMA
704*5113495bSYour Name */
705*5113495bSYour Name 
706*5113495bSYour Name #define RX_PPDU_END_USER_STATS_RXDMA_RELEASE_RING_USED_OFFSET                       0x0000000000000008
707*5113495bSYour Name #define RX_PPDU_END_USER_STATS_RXDMA_RELEASE_RING_USED_LSB                          52
708*5113495bSYour Name #define RX_PPDU_END_USER_STATS_RXDMA_RELEASE_RING_USED_MSB                          52
709*5113495bSYour Name #define RX_PPDU_END_USER_STATS_RXDMA_RELEASE_RING_USED_MASK                         0x0010000000000000
710*5113495bSYour Name 
711*5113495bSYour Name 
712*5113495bSYour Name /* Description		HT_CONTROL_FIELD_PKT_TYPE
713*5113495bSYour Name 
714*5113495bSYour Name 			Field only valid when HT_control_info_valid or HT_control_info_NULL_valid
715*5113495bSYour Name 			    is set.
716*5113495bSYour Name 
717*5113495bSYour Name 			Indicates what the PHY receive type was for receiving this
718*5113495bSYour Name 			 frame. Can help determine if the HT_CONTROL field shall
719*5113495bSYour Name 			 be interpreted as HT/VHT or HE.
720*5113495bSYour Name 
721*5113495bSYour Name 			NOTE: later on in the 11ax IEEE spec a bit within the HT
722*5113495bSYour Name 			 control field was introduced that explicitly indicated
723*5113495bSYour Name 			how to interpret the HT control field.... As HT, VHT, or
724*5113495bSYour Name 			 HE.
725*5113495bSYour Name 
726*5113495bSYour Name 			<enum 0 dot11a>802.11a PPDU type
727*5113495bSYour Name 			<enum 1 dot11b>802.11b PPDU type
728*5113495bSYour Name 			<enum 2 dot11n_mm>802.11n Mixed Mode PPDU type
729*5113495bSYour Name 			<enum 3 dot11ac>802.11ac PPDU type
730*5113495bSYour Name 			<enum 4 dot11ax>802.11ax PPDU type
731*5113495bSYour Name 			<enum 5 dot11ba>802.11ba (WUR) PPDU type
732*5113495bSYour Name 			<enum 6 dot11be>802.11be PPDU type
733*5113495bSYour Name 			<enum 7 dot11az>802.11az (ranging) PPDU type
734*5113495bSYour Name 			<enum 8 dot11n_gf>802.11n Green Field PPDU type (unsupported
735*5113495bSYour Name 			 & aborted)
736*5113495bSYour Name */
737*5113495bSYour Name 
738*5113495bSYour Name #define RX_PPDU_END_USER_STATS_HT_CONTROL_FIELD_PKT_TYPE_OFFSET                     0x0000000000000008
739*5113495bSYour Name #define RX_PPDU_END_USER_STATS_HT_CONTROL_FIELD_PKT_TYPE_LSB                        53
740*5113495bSYour Name #define RX_PPDU_END_USER_STATS_HT_CONTROL_FIELD_PKT_TYPE_MSB                        56
741*5113495bSYour Name #define RX_PPDU_END_USER_STATS_HT_CONTROL_FIELD_PKT_TYPE_MASK                       0x01e0000000000000
742*5113495bSYour Name 
743*5113495bSYour Name 
744*5113495bSYour Name /* Description		RXDMA2REO_REMOTE0_RING_USED
745*5113495bSYour Name 
746*5113495bSYour Name 			Field filled in by RXDMA
747*5113495bSYour Name 
748*5113495bSYour Name 			Set when at least one frame during this PPDU got pushed
749*5113495bSYour Name 			to this ring by RXDMA
750*5113495bSYour Name */
751*5113495bSYour Name 
752*5113495bSYour Name #define RX_PPDU_END_USER_STATS_RXDMA2REO_REMOTE0_RING_USED_OFFSET                   0x0000000000000008
753*5113495bSYour Name #define RX_PPDU_END_USER_STATS_RXDMA2REO_REMOTE0_RING_USED_LSB                      57
754*5113495bSYour Name #define RX_PPDU_END_USER_STATS_RXDMA2REO_REMOTE0_RING_USED_MSB                      57
755*5113495bSYour Name #define RX_PPDU_END_USER_STATS_RXDMA2REO_REMOTE0_RING_USED_MASK                     0x0200000000000000
756*5113495bSYour Name 
757*5113495bSYour Name 
758*5113495bSYour Name /* Description		RXDMA2REO_REMOTE1_RING_USED
759*5113495bSYour Name 
760*5113495bSYour Name 			Field filled in by RXDMA
761*5113495bSYour Name 
762*5113495bSYour Name 			Set when at least one frame during this PPDU got pushed
763*5113495bSYour Name 			to this ring by RXDMA
764*5113495bSYour Name */
765*5113495bSYour Name 
766*5113495bSYour Name #define RX_PPDU_END_USER_STATS_RXDMA2REO_REMOTE1_RING_USED_OFFSET                   0x0000000000000008
767*5113495bSYour Name #define RX_PPDU_END_USER_STATS_RXDMA2REO_REMOTE1_RING_USED_LSB                      58
768*5113495bSYour Name #define RX_PPDU_END_USER_STATS_RXDMA2REO_REMOTE1_RING_USED_MSB                      58
769*5113495bSYour Name #define RX_PPDU_END_USER_STATS_RXDMA2REO_REMOTE1_RING_USED_MASK                     0x0400000000000000
770*5113495bSYour Name 
771*5113495bSYour Name 
772*5113495bSYour Name /* Description		RESERVED_3B
773*5113495bSYour Name 
774*5113495bSYour Name 			<legal 0>
775*5113495bSYour Name */
776*5113495bSYour Name 
777*5113495bSYour Name #define RX_PPDU_END_USER_STATS_RESERVED_3B_OFFSET                                   0x0000000000000008
778*5113495bSYour Name #define RX_PPDU_END_USER_STATS_RESERVED_3B_LSB                                      59
779*5113495bSYour Name #define RX_PPDU_END_USER_STATS_RESERVED_3B_MSB                                      63
780*5113495bSYour Name #define RX_PPDU_END_USER_STATS_RESERVED_3B_MASK                                     0xf800000000000000
781*5113495bSYour Name 
782*5113495bSYour Name 
783*5113495bSYour Name /* Description		AST_INDEX
784*5113495bSYour Name 
785*5113495bSYour Name 			This field indicates the index of the AST entry corresponding
786*5113495bSYour Name 			 to this MPDU. It is provided by the GSE module instantiated
787*5113495bSYour Name 			 in RXPCU.
788*5113495bSYour Name 			A value of 0xFFFF indicates an invalid AST index, meaning
789*5113495bSYour Name 			 that No AST entry was found or NO AST search was performed
790*5113495bSYour Name 
791*5113495bSYour Name 			<legal all>
792*5113495bSYour Name */
793*5113495bSYour Name 
794*5113495bSYour Name #define RX_PPDU_END_USER_STATS_AST_INDEX_OFFSET                                     0x0000000000000010
795*5113495bSYour Name #define RX_PPDU_END_USER_STATS_AST_INDEX_LSB                                        0
796*5113495bSYour Name #define RX_PPDU_END_USER_STATS_AST_INDEX_MSB                                        15
797*5113495bSYour Name #define RX_PPDU_END_USER_STATS_AST_INDEX_MASK                                       0x000000000000ffff
798*5113495bSYour Name 
799*5113495bSYour Name 
800*5113495bSYour Name /* Description		FRAME_CONTROL_FIELD
801*5113495bSYour Name 
802*5113495bSYour Name 			Field only valid when Frame_control_info_valid is set.
803*5113495bSYour Name 
804*5113495bSYour Name 			Last successfully received Frame_control field of data frame
805*5113495bSYour Name 			 (excluding Data NULL/ QoS Null) for this user
806*5113495bSYour Name 			Mainly used to track the PM state of the transmitted device
807*5113495bSYour Name 
808*5113495bSYour Name 
809*5113495bSYour Name 			NOTE: only data frame info is needed, as control and management
810*5113495bSYour Name 			 frames are already routed to the FW.
811*5113495bSYour Name 			<legal all>
812*5113495bSYour Name */
813*5113495bSYour Name 
814*5113495bSYour Name #define RX_PPDU_END_USER_STATS_FRAME_CONTROL_FIELD_OFFSET                           0x0000000000000010
815*5113495bSYour Name #define RX_PPDU_END_USER_STATS_FRAME_CONTROL_FIELD_LSB                              16
816*5113495bSYour Name #define RX_PPDU_END_USER_STATS_FRAME_CONTROL_FIELD_MSB                              31
817*5113495bSYour Name #define RX_PPDU_END_USER_STATS_FRAME_CONTROL_FIELD_MASK                             0x00000000ffff0000
818*5113495bSYour Name 
819*5113495bSYour Name 
820*5113495bSYour Name /* Description		FIRST_DATA_SEQ_CTRL
821*5113495bSYour Name 
822*5113495bSYour Name 			Field only valid when Data_sequence_control_info_valid is
823*5113495bSYour Name 			 set.
824*5113495bSYour Name 
825*5113495bSYour Name 			Sequence control field of the first data frame (excluding
826*5113495bSYour Name 			 Data NULL or QoS Data null) received for this user with
827*5113495bSYour Name 			 correct FCS
828*5113495bSYour Name 
829*5113495bSYour Name 			NOTE: only data frame info is needed, as control and management
830*5113495bSYour Name 			 frames are already routed to the FW.
831*5113495bSYour Name 			<legal all>
832*5113495bSYour Name */
833*5113495bSYour Name 
834*5113495bSYour Name #define RX_PPDU_END_USER_STATS_FIRST_DATA_SEQ_CTRL_OFFSET                           0x0000000000000010
835*5113495bSYour Name #define RX_PPDU_END_USER_STATS_FIRST_DATA_SEQ_CTRL_LSB                              32
836*5113495bSYour Name #define RX_PPDU_END_USER_STATS_FIRST_DATA_SEQ_CTRL_MSB                              47
837*5113495bSYour Name #define RX_PPDU_END_USER_STATS_FIRST_DATA_SEQ_CTRL_MASK                             0x0000ffff00000000
838*5113495bSYour Name 
839*5113495bSYour Name 
840*5113495bSYour Name /* Description		QOS_CONTROL_FIELD
841*5113495bSYour Name 
842*5113495bSYour Name 			Field only valid when QoS_control_info_valid is set.
843*5113495bSYour Name 
844*5113495bSYour Name 			Last successfully received QoS_control field of data frame
845*5113495bSYour Name 			 (excluding Data NULL/ QoS Null) for this user
846*5113495bSYour Name 
847*5113495bSYour Name 			Note that in case of multi TID, this field can only reflect
848*5113495bSYour Name 			 the last properly received MPDU, and thus can not indicate
849*5113495bSYour Name 			 all potentially different TIDs that had been received earlier.
850*5113495bSYour Name 
851*5113495bSYour Name 
852*5113495bSYour Name 			There are however per TID fields, that will contain among
853*5113495bSYour Name 			 other things all buffer status info: See
854*5113495bSYour Name 			QoSCtrl_15_8_tid???
855*5113495bSYour Name 			<legal all>
856*5113495bSYour Name */
857*5113495bSYour Name 
858*5113495bSYour Name #define RX_PPDU_END_USER_STATS_QOS_CONTROL_FIELD_OFFSET                             0x0000000000000010
859*5113495bSYour Name #define RX_PPDU_END_USER_STATS_QOS_CONTROL_FIELD_LSB                                48
860*5113495bSYour Name #define RX_PPDU_END_USER_STATS_QOS_CONTROL_FIELD_MSB                                63
861*5113495bSYour Name #define RX_PPDU_END_USER_STATS_QOS_CONTROL_FIELD_MASK                               0xffff000000000000
862*5113495bSYour Name 
863*5113495bSYour Name 
864*5113495bSYour Name /* Description		HT_CONTROL_FIELD
865*5113495bSYour Name 
866*5113495bSYour Name 			Field only valid when HT_control_info_valid is set.
867*5113495bSYour Name 
868*5113495bSYour Name 			Last successfully received HT_CONTROL/VHT_CONTROL/HE_CONTROL
869*5113495bSYour Name 			  field of data frames, excluding QoS Null frames for this
870*5113495bSYour Name 			 user.
871*5113495bSYour Name 
872*5113495bSYour Name 			NOTE: HT control fields  from QoS Null frames are captured
873*5113495bSYour Name 			 in field HT_control_NULL_field
874*5113495bSYour Name 			<legal all>
875*5113495bSYour Name */
876*5113495bSYour Name 
877*5113495bSYour Name #define RX_PPDU_END_USER_STATS_HT_CONTROL_FIELD_OFFSET                              0x0000000000000018
878*5113495bSYour Name #define RX_PPDU_END_USER_STATS_HT_CONTROL_FIELD_LSB                                 0
879*5113495bSYour Name #define RX_PPDU_END_USER_STATS_HT_CONTROL_FIELD_MSB                                 31
880*5113495bSYour Name #define RX_PPDU_END_USER_STATS_HT_CONTROL_FIELD_MASK                                0x00000000ffffffff
881*5113495bSYour Name 
882*5113495bSYour Name 
883*5113495bSYour Name /* Description		FCS_OK_BITMAP_31_0
884*5113495bSYour Name 
885*5113495bSYour Name 			Bitmap indicates in order of received MPDUs, which MPDUs
886*5113495bSYour Name 			 had an passing FCS or had an error.
887*5113495bSYour Name 			1: FCS OK
888*5113495bSYour Name 			0: FCS error
889*5113495bSYour Name 			<legal all>
890*5113495bSYour Name */
891*5113495bSYour Name 
892*5113495bSYour Name #define RX_PPDU_END_USER_STATS_FCS_OK_BITMAP_31_0_OFFSET                            0x0000000000000018
893*5113495bSYour Name #define RX_PPDU_END_USER_STATS_FCS_OK_BITMAP_31_0_LSB                               32
894*5113495bSYour Name #define RX_PPDU_END_USER_STATS_FCS_OK_BITMAP_31_0_MSB                               63
895*5113495bSYour Name #define RX_PPDU_END_USER_STATS_FCS_OK_BITMAP_31_0_MASK                              0xffffffff00000000
896*5113495bSYour Name 
897*5113495bSYour Name 
898*5113495bSYour Name /* Description		FCS_OK_BITMAP_63_32
899*5113495bSYour Name 
900*5113495bSYour Name 			Bitmap indicates in order of received MPDUs, which MPDUs
901*5113495bSYour Name 			 had an passing FCS or had an error.
902*5113495bSYour Name 			1: FCS OK
903*5113495bSYour Name 			0: FCS error
904*5113495bSYour Name 
905*5113495bSYour Name 			NOTE: for users 0, 1, 2 and 3, additional bitmap info (up
906*5113495bSYour Name 			 to 256 bitmap window) is provided in RX_PPDU_END_USER_STATS_EXT
907*5113495bSYour Name 			 TLV
908*5113495bSYour Name 			<legal all>
909*5113495bSYour Name */
910*5113495bSYour Name 
911*5113495bSYour Name #define RX_PPDU_END_USER_STATS_FCS_OK_BITMAP_63_32_OFFSET                           0x0000000000000020
912*5113495bSYour Name #define RX_PPDU_END_USER_STATS_FCS_OK_BITMAP_63_32_LSB                              0
913*5113495bSYour Name #define RX_PPDU_END_USER_STATS_FCS_OK_BITMAP_63_32_MSB                              31
914*5113495bSYour Name #define RX_PPDU_END_USER_STATS_FCS_OK_BITMAP_63_32_MASK                             0x00000000ffffffff
915*5113495bSYour Name 
916*5113495bSYour Name 
917*5113495bSYour Name /* Description		UDP_MSDU_COUNT
918*5113495bSYour Name 
919*5113495bSYour Name 			Field filled in by RX OLE
920*5113495bSYour Name 			Set to 0 by RXPCU
921*5113495bSYour Name 
922*5113495bSYour Name 			The number of MSDUs that are part of MPDUs without FCS error,
923*5113495bSYour Name 			that contain UDP frames.
924*5113495bSYour Name 			<legal all>
925*5113495bSYour Name */
926*5113495bSYour Name 
927*5113495bSYour Name #define RX_PPDU_END_USER_STATS_UDP_MSDU_COUNT_OFFSET                                0x0000000000000020
928*5113495bSYour Name #define RX_PPDU_END_USER_STATS_UDP_MSDU_COUNT_LSB                                   32
929*5113495bSYour Name #define RX_PPDU_END_USER_STATS_UDP_MSDU_COUNT_MSB                                   47
930*5113495bSYour Name #define RX_PPDU_END_USER_STATS_UDP_MSDU_COUNT_MASK                                  0x0000ffff00000000
931*5113495bSYour Name 
932*5113495bSYour Name 
933*5113495bSYour Name /* Description		TCP_MSDU_COUNT
934*5113495bSYour Name 
935*5113495bSYour Name 			Field filled in by RX OLE
936*5113495bSYour Name 			Set to 0 by RXPCU
937*5113495bSYour Name 
938*5113495bSYour Name 			The number of MSDUs that are part of MPDUs without FCS error,
939*5113495bSYour Name 			that contain TCP frames.
940*5113495bSYour Name 
941*5113495bSYour Name 			(Note: This does NOT include TCP-ACK)
942*5113495bSYour Name 			<legal all>
943*5113495bSYour Name */
944*5113495bSYour Name 
945*5113495bSYour Name #define RX_PPDU_END_USER_STATS_TCP_MSDU_COUNT_OFFSET                                0x0000000000000020
946*5113495bSYour Name #define RX_PPDU_END_USER_STATS_TCP_MSDU_COUNT_LSB                                   48
947*5113495bSYour Name #define RX_PPDU_END_USER_STATS_TCP_MSDU_COUNT_MSB                                   63
948*5113495bSYour Name #define RX_PPDU_END_USER_STATS_TCP_MSDU_COUNT_MASK                                  0xffff000000000000
949*5113495bSYour Name 
950*5113495bSYour Name 
951*5113495bSYour Name /* Description		OTHER_MSDU_COUNT
952*5113495bSYour Name 
953*5113495bSYour Name 			Field filled in by RX OLE
954*5113495bSYour Name 			Set to 0 by RXPCU
955*5113495bSYour Name 
956*5113495bSYour Name 			The number of MSDUs that are part of MPDUs without FCS error,
957*5113495bSYour Name 			that contain neither UDP or TCP frames.
958*5113495bSYour Name 
959*5113495bSYour Name 			Includes Management and control frames.
960*5113495bSYour Name 
961*5113495bSYour Name 			<legal all>
962*5113495bSYour Name */
963*5113495bSYour Name 
964*5113495bSYour Name #define RX_PPDU_END_USER_STATS_OTHER_MSDU_COUNT_OFFSET                              0x0000000000000028
965*5113495bSYour Name #define RX_PPDU_END_USER_STATS_OTHER_MSDU_COUNT_LSB                                 0
966*5113495bSYour Name #define RX_PPDU_END_USER_STATS_OTHER_MSDU_COUNT_MSB                                 15
967*5113495bSYour Name #define RX_PPDU_END_USER_STATS_OTHER_MSDU_COUNT_MASK                                0x000000000000ffff
968*5113495bSYour Name 
969*5113495bSYour Name 
970*5113495bSYour Name /* Description		TCP_ACK_MSDU_COUNT
971*5113495bSYour Name 
972*5113495bSYour Name 			Field filled in by RX OLE
973*5113495bSYour Name 			Set to 0 by RXPCU
974*5113495bSYour Name 
975*5113495bSYour Name 			The number of MSDUs that are part of MPDUs without FCS error,
976*5113495bSYour Name 			that contain TCP ack frames.
977*5113495bSYour Name 			<legal all>
978*5113495bSYour Name */
979*5113495bSYour Name 
980*5113495bSYour Name #define RX_PPDU_END_USER_STATS_TCP_ACK_MSDU_COUNT_OFFSET                            0x0000000000000028
981*5113495bSYour Name #define RX_PPDU_END_USER_STATS_TCP_ACK_MSDU_COUNT_LSB                               16
982*5113495bSYour Name #define RX_PPDU_END_USER_STATS_TCP_ACK_MSDU_COUNT_MSB                               31
983*5113495bSYour Name #define RX_PPDU_END_USER_STATS_TCP_ACK_MSDU_COUNT_MASK                              0x00000000ffff0000
984*5113495bSYour Name 
985*5113495bSYour Name 
986*5113495bSYour Name /* Description		SW_RESPONSE_REFERENCE_PTR
987*5113495bSYour Name 
988*5113495bSYour Name 			Pointer that SW uses to refer back to an expected response
989*5113495bSYour Name 			 reception. Used for Rate adaptation purposes.
990*5113495bSYour Name 			When a reception occurs that is not tied to an expected
991*5113495bSYour Name 			response, this field is set to 0x0.
992*5113495bSYour Name 
993*5113495bSYour Name 			Note: further on in this TLV there is also the field: Sw_response_reference_ptr_ext.
994*5113495bSYour Name 
995*5113495bSYour Name 			<legal all>
996*5113495bSYour Name */
997*5113495bSYour Name 
998*5113495bSYour Name #define RX_PPDU_END_USER_STATS_SW_RESPONSE_REFERENCE_PTR_OFFSET                     0x0000000000000028
999*5113495bSYour Name #define RX_PPDU_END_USER_STATS_SW_RESPONSE_REFERENCE_PTR_LSB                        32
1000*5113495bSYour Name #define RX_PPDU_END_USER_STATS_SW_RESPONSE_REFERENCE_PTR_MSB                        63
1001*5113495bSYour Name #define RX_PPDU_END_USER_STATS_SW_RESPONSE_REFERENCE_PTR_MASK                       0xffffffff00000000
1002*5113495bSYour Name 
1003*5113495bSYour Name 
1004*5113495bSYour Name /* Description		RECEIVED_QOS_DATA_TID_BITMAP
1005*5113495bSYour Name 
1006*5113495bSYour Name 			Whenever a frame is received that contains a QoS control
1007*5113495bSYour Name 			 field (that includes QoS Data and/or QoS Null), the bit
1008*5113495bSYour Name 			 in this field that corresponds to the received TID shall
1009*5113495bSYour Name 			 be set.
1010*5113495bSYour Name 			...Bitmap[0] = TID0
1011*5113495bSYour Name 			...Bitmap[1] = TID1
1012*5113495bSYour Name 			Etc.
1013*5113495bSYour Name 			<legal all>
1014*5113495bSYour Name */
1015*5113495bSYour Name 
1016*5113495bSYour Name #define RX_PPDU_END_USER_STATS_RECEIVED_QOS_DATA_TID_BITMAP_OFFSET                  0x0000000000000030
1017*5113495bSYour Name #define RX_PPDU_END_USER_STATS_RECEIVED_QOS_DATA_TID_BITMAP_LSB                     0
1018*5113495bSYour Name #define RX_PPDU_END_USER_STATS_RECEIVED_QOS_DATA_TID_BITMAP_MSB                     15
1019*5113495bSYour Name #define RX_PPDU_END_USER_STATS_RECEIVED_QOS_DATA_TID_BITMAP_MASK                    0x000000000000ffff
1020*5113495bSYour Name 
1021*5113495bSYour Name 
1022*5113495bSYour Name /* Description		RECEIVED_QOS_DATA_TID_EOSP_BITMAP
1023*5113495bSYour Name 
1024*5113495bSYour Name 			Field initialized to 0
1025*5113495bSYour Name 			For every QoS Data frame that is correctly received, the
1026*5113495bSYour Name 			 EOSP bit of that frame is copied over into the corresponding
1027*5113495bSYour Name 			 TID related field.
1028*5113495bSYour Name 			Note that this implies that the bits here represent the
1029*5113495bSYour Name 			EOSP bit status for each TID of the last MPDU received for
1030*5113495bSYour Name 			 that TID.
1031*5113495bSYour Name 
1032*5113495bSYour Name 			received TID shall be set.
1033*5113495bSYour Name 			...eosp_bitmap[0] = eosp of TID0
1034*5113495bSYour Name 			...eosp_bitmap[1] = eosp of TID1
1035*5113495bSYour Name 			Etc.
1036*5113495bSYour Name 			<legal all>
1037*5113495bSYour Name */
1038*5113495bSYour Name 
1039*5113495bSYour Name #define RX_PPDU_END_USER_STATS_RECEIVED_QOS_DATA_TID_EOSP_BITMAP_OFFSET             0x0000000000000030
1040*5113495bSYour Name #define RX_PPDU_END_USER_STATS_RECEIVED_QOS_DATA_TID_EOSP_BITMAP_LSB                16
1041*5113495bSYour Name #define RX_PPDU_END_USER_STATS_RECEIVED_QOS_DATA_TID_EOSP_BITMAP_MSB                31
1042*5113495bSYour Name #define RX_PPDU_END_USER_STATS_RECEIVED_QOS_DATA_TID_EOSP_BITMAP_MASK               0x00000000ffff0000
1043*5113495bSYour Name 
1044*5113495bSYour Name 
1045*5113495bSYour Name /* Description		QOSCTRL_15_8_TID0
1046*5113495bSYour Name 
1047*5113495bSYour Name 			Field only valid when Received_qos_data_tid_bitmap[0] is
1048*5113495bSYour Name 			 set
1049*5113495bSYour Name 
1050*5113495bSYour Name 			QoS control field bits 15-8 of the last properly received
1051*5113495bSYour Name 			 MPDU with a QoS control field embedded, with  TID == 0
1052*5113495bSYour Name */
1053*5113495bSYour Name 
1054*5113495bSYour Name #define RX_PPDU_END_USER_STATS_QOSCTRL_15_8_TID0_OFFSET                             0x0000000000000030
1055*5113495bSYour Name #define RX_PPDU_END_USER_STATS_QOSCTRL_15_8_TID0_LSB                                32
1056*5113495bSYour Name #define RX_PPDU_END_USER_STATS_QOSCTRL_15_8_TID0_MSB                                39
1057*5113495bSYour Name #define RX_PPDU_END_USER_STATS_QOSCTRL_15_8_TID0_MASK                               0x000000ff00000000
1058*5113495bSYour Name 
1059*5113495bSYour Name 
1060*5113495bSYour Name /* Description		QOSCTRL_15_8_TID1
1061*5113495bSYour Name 
1062*5113495bSYour Name 			Field only valid when Received_qos_data_tid_bitmap[1] is
1063*5113495bSYour Name 			 set
1064*5113495bSYour Name 
1065*5113495bSYour Name 			QoS control field bits 15-8 of the last properly received
1066*5113495bSYour Name 			 MPDU with a QoS control field embedded, with  TID == 1
1067*5113495bSYour Name */
1068*5113495bSYour Name 
1069*5113495bSYour Name #define RX_PPDU_END_USER_STATS_QOSCTRL_15_8_TID1_OFFSET                             0x0000000000000030
1070*5113495bSYour Name #define RX_PPDU_END_USER_STATS_QOSCTRL_15_8_TID1_LSB                                40
1071*5113495bSYour Name #define RX_PPDU_END_USER_STATS_QOSCTRL_15_8_TID1_MSB                                47
1072*5113495bSYour Name #define RX_PPDU_END_USER_STATS_QOSCTRL_15_8_TID1_MASK                               0x0000ff0000000000
1073*5113495bSYour Name 
1074*5113495bSYour Name 
1075*5113495bSYour Name /* Description		QOSCTRL_15_8_TID2
1076*5113495bSYour Name 
1077*5113495bSYour Name 			Field only valid when Received_qos_data_tid_bitmap[2] is
1078*5113495bSYour Name 			 set
1079*5113495bSYour Name 
1080*5113495bSYour Name 			QoS control field bits 15-8 of the last properly received
1081*5113495bSYour Name 			 MPDU with a QoS control field embedded, with  TID == 2
1082*5113495bSYour Name */
1083*5113495bSYour Name 
1084*5113495bSYour Name #define RX_PPDU_END_USER_STATS_QOSCTRL_15_8_TID2_OFFSET                             0x0000000000000030
1085*5113495bSYour Name #define RX_PPDU_END_USER_STATS_QOSCTRL_15_8_TID2_LSB                                48
1086*5113495bSYour Name #define RX_PPDU_END_USER_STATS_QOSCTRL_15_8_TID2_MSB                                55
1087*5113495bSYour Name #define RX_PPDU_END_USER_STATS_QOSCTRL_15_8_TID2_MASK                               0x00ff000000000000
1088*5113495bSYour Name 
1089*5113495bSYour Name 
1090*5113495bSYour Name /* Description		QOSCTRL_15_8_TID3
1091*5113495bSYour Name 
1092*5113495bSYour Name 			Field only valid when Received_qos_data_tid_bitmap[3] is
1093*5113495bSYour Name 			 set
1094*5113495bSYour Name 
1095*5113495bSYour Name 			QoS control field bits 15-8 of the last properly received
1096*5113495bSYour Name 			 MPDU with a QoS control field embedded, with  TID == 3
1097*5113495bSYour Name */
1098*5113495bSYour Name 
1099*5113495bSYour Name #define RX_PPDU_END_USER_STATS_QOSCTRL_15_8_TID3_OFFSET                             0x0000000000000030
1100*5113495bSYour Name #define RX_PPDU_END_USER_STATS_QOSCTRL_15_8_TID3_LSB                                56
1101*5113495bSYour Name #define RX_PPDU_END_USER_STATS_QOSCTRL_15_8_TID3_MSB                                63
1102*5113495bSYour Name #define RX_PPDU_END_USER_STATS_QOSCTRL_15_8_TID3_MASK                               0xff00000000000000
1103*5113495bSYour Name 
1104*5113495bSYour Name 
1105*5113495bSYour Name /* Description		QOSCTRL_15_8_TID4
1106*5113495bSYour Name 
1107*5113495bSYour Name 			Field only valid when Received_qos_data_tid_bitmap[4] is
1108*5113495bSYour Name 			 set
1109*5113495bSYour Name 
1110*5113495bSYour Name 			QoS control field bits 15-8 of the last properly received
1111*5113495bSYour Name 			 MPDU with a QoS control field embedded, with  TID == 4
1112*5113495bSYour Name */
1113*5113495bSYour Name 
1114*5113495bSYour Name #define RX_PPDU_END_USER_STATS_QOSCTRL_15_8_TID4_OFFSET                             0x0000000000000038
1115*5113495bSYour Name #define RX_PPDU_END_USER_STATS_QOSCTRL_15_8_TID4_LSB                                0
1116*5113495bSYour Name #define RX_PPDU_END_USER_STATS_QOSCTRL_15_8_TID4_MSB                                7
1117*5113495bSYour Name #define RX_PPDU_END_USER_STATS_QOSCTRL_15_8_TID4_MASK                               0x00000000000000ff
1118*5113495bSYour Name 
1119*5113495bSYour Name 
1120*5113495bSYour Name /* Description		QOSCTRL_15_8_TID5
1121*5113495bSYour Name 
1122*5113495bSYour Name 			Field only valid when Received_qos_data_tid_bitmap[5] is
1123*5113495bSYour Name 			 set
1124*5113495bSYour Name 
1125*5113495bSYour Name 			QoS control field bits 15-8 of the last properly received
1126*5113495bSYour Name 			 MPDU with a QoS control field embedded, with  TID == 5
1127*5113495bSYour Name */
1128*5113495bSYour Name 
1129*5113495bSYour Name #define RX_PPDU_END_USER_STATS_QOSCTRL_15_8_TID5_OFFSET                             0x0000000000000038
1130*5113495bSYour Name #define RX_PPDU_END_USER_STATS_QOSCTRL_15_8_TID5_LSB                                8
1131*5113495bSYour Name #define RX_PPDU_END_USER_STATS_QOSCTRL_15_8_TID5_MSB                                15
1132*5113495bSYour Name #define RX_PPDU_END_USER_STATS_QOSCTRL_15_8_TID5_MASK                               0x000000000000ff00
1133*5113495bSYour Name 
1134*5113495bSYour Name 
1135*5113495bSYour Name /* Description		QOSCTRL_15_8_TID6
1136*5113495bSYour Name 
1137*5113495bSYour Name 			Field only valid when Received_qos_data_tid_bitmap[6] is
1138*5113495bSYour Name 			 set
1139*5113495bSYour Name 
1140*5113495bSYour Name 			QoS control field bits 15-8 of the last properly received
1141*5113495bSYour Name 			 MPDU with a QoS control field embedded, with  TID == 6
1142*5113495bSYour Name */
1143*5113495bSYour Name 
1144*5113495bSYour Name #define RX_PPDU_END_USER_STATS_QOSCTRL_15_8_TID6_OFFSET                             0x0000000000000038
1145*5113495bSYour Name #define RX_PPDU_END_USER_STATS_QOSCTRL_15_8_TID6_LSB                                16
1146*5113495bSYour Name #define RX_PPDU_END_USER_STATS_QOSCTRL_15_8_TID6_MSB                                23
1147*5113495bSYour Name #define RX_PPDU_END_USER_STATS_QOSCTRL_15_8_TID6_MASK                               0x0000000000ff0000
1148*5113495bSYour Name 
1149*5113495bSYour Name 
1150*5113495bSYour Name /* Description		QOSCTRL_15_8_TID7
1151*5113495bSYour Name 
1152*5113495bSYour Name 			Field only valid when Received_qos_data_tid_bitmap[7] is
1153*5113495bSYour Name 			 set
1154*5113495bSYour Name 
1155*5113495bSYour Name 			QoS control field bits 15-8 of the last properly received
1156*5113495bSYour Name 			 MPDU with a QoS control field embedded, with  TID == 7
1157*5113495bSYour Name */
1158*5113495bSYour Name 
1159*5113495bSYour Name #define RX_PPDU_END_USER_STATS_QOSCTRL_15_8_TID7_OFFSET                             0x0000000000000038
1160*5113495bSYour Name #define RX_PPDU_END_USER_STATS_QOSCTRL_15_8_TID7_LSB                                24
1161*5113495bSYour Name #define RX_PPDU_END_USER_STATS_QOSCTRL_15_8_TID7_MSB                                31
1162*5113495bSYour Name #define RX_PPDU_END_USER_STATS_QOSCTRL_15_8_TID7_MASK                               0x00000000ff000000
1163*5113495bSYour Name 
1164*5113495bSYour Name 
1165*5113495bSYour Name /* Description		QOSCTRL_15_8_TID8
1166*5113495bSYour Name 
1167*5113495bSYour Name 			Field only valid when Received_qos_data_tid_bitmap[8] is
1168*5113495bSYour Name 			 set
1169*5113495bSYour Name 
1170*5113495bSYour Name 			QoS control field bits 15-8 of the last properly received
1171*5113495bSYour Name 			 MPDU with a QoS control field embedded, with  TID == 8
1172*5113495bSYour Name */
1173*5113495bSYour Name 
1174*5113495bSYour Name #define RX_PPDU_END_USER_STATS_QOSCTRL_15_8_TID8_OFFSET                             0x0000000000000038
1175*5113495bSYour Name #define RX_PPDU_END_USER_STATS_QOSCTRL_15_8_TID8_LSB                                32
1176*5113495bSYour Name #define RX_PPDU_END_USER_STATS_QOSCTRL_15_8_TID8_MSB                                39
1177*5113495bSYour Name #define RX_PPDU_END_USER_STATS_QOSCTRL_15_8_TID8_MASK                               0x000000ff00000000
1178*5113495bSYour Name 
1179*5113495bSYour Name 
1180*5113495bSYour Name /* Description		QOSCTRL_15_8_TID9
1181*5113495bSYour Name 
1182*5113495bSYour Name 			Field only valid when Received_qos_data_tid_bitmap[9] is
1183*5113495bSYour Name 			 set
1184*5113495bSYour Name 
1185*5113495bSYour Name 			QoS control field bits 15-8 of the last properly received
1186*5113495bSYour Name 			 MPDU with a QoS control field embedded, with  TID == 9
1187*5113495bSYour Name */
1188*5113495bSYour Name 
1189*5113495bSYour Name #define RX_PPDU_END_USER_STATS_QOSCTRL_15_8_TID9_OFFSET                             0x0000000000000038
1190*5113495bSYour Name #define RX_PPDU_END_USER_STATS_QOSCTRL_15_8_TID9_LSB                                40
1191*5113495bSYour Name #define RX_PPDU_END_USER_STATS_QOSCTRL_15_8_TID9_MSB                                47
1192*5113495bSYour Name #define RX_PPDU_END_USER_STATS_QOSCTRL_15_8_TID9_MASK                               0x0000ff0000000000
1193*5113495bSYour Name 
1194*5113495bSYour Name 
1195*5113495bSYour Name /* Description		QOSCTRL_15_8_TID10
1196*5113495bSYour Name 
1197*5113495bSYour Name 			Field only valid when Received_qos_data_tid_bitmap[10] is
1198*5113495bSYour Name 			 set
1199*5113495bSYour Name 
1200*5113495bSYour Name 			QoS control field bits 15-8 of the last properly received
1201*5113495bSYour Name 			 MPDU with a QoS control field embedded, with  TID == 10
1202*5113495bSYour Name 
1203*5113495bSYour Name */
1204*5113495bSYour Name 
1205*5113495bSYour Name #define RX_PPDU_END_USER_STATS_QOSCTRL_15_8_TID10_OFFSET                            0x0000000000000038
1206*5113495bSYour Name #define RX_PPDU_END_USER_STATS_QOSCTRL_15_8_TID10_LSB                               48
1207*5113495bSYour Name #define RX_PPDU_END_USER_STATS_QOSCTRL_15_8_TID10_MSB                               55
1208*5113495bSYour Name #define RX_PPDU_END_USER_STATS_QOSCTRL_15_8_TID10_MASK                              0x00ff000000000000
1209*5113495bSYour Name 
1210*5113495bSYour Name 
1211*5113495bSYour Name /* Description		QOSCTRL_15_8_TID11
1212*5113495bSYour Name 
1213*5113495bSYour Name 			Field only valid when Received_qos_data_tid_bitmap[11] is
1214*5113495bSYour Name 			 set
1215*5113495bSYour Name 
1216*5113495bSYour Name 			QoS control field bits 15-8 of the last properly received
1217*5113495bSYour Name 			 MPDU with a QoS control field embedded, with  TID == 11
1218*5113495bSYour Name 
1219*5113495bSYour Name */
1220*5113495bSYour Name 
1221*5113495bSYour Name #define RX_PPDU_END_USER_STATS_QOSCTRL_15_8_TID11_OFFSET                            0x0000000000000038
1222*5113495bSYour Name #define RX_PPDU_END_USER_STATS_QOSCTRL_15_8_TID11_LSB                               56
1223*5113495bSYour Name #define RX_PPDU_END_USER_STATS_QOSCTRL_15_8_TID11_MSB                               63
1224*5113495bSYour Name #define RX_PPDU_END_USER_STATS_QOSCTRL_15_8_TID11_MASK                              0xff00000000000000
1225*5113495bSYour Name 
1226*5113495bSYour Name 
1227*5113495bSYour Name /* Description		QOSCTRL_15_8_TID12
1228*5113495bSYour Name 
1229*5113495bSYour Name 			Field only valid when Received_qos_data_tid_bitmap[12] is
1230*5113495bSYour Name 			 set
1231*5113495bSYour Name 
1232*5113495bSYour Name 			QoS control field bits 15-8 of the last properly received
1233*5113495bSYour Name 			 MPDU with a QoS control field embedded, with  TID == 12
1234*5113495bSYour Name 
1235*5113495bSYour Name */
1236*5113495bSYour Name 
1237*5113495bSYour Name #define RX_PPDU_END_USER_STATS_QOSCTRL_15_8_TID12_OFFSET                            0x0000000000000040
1238*5113495bSYour Name #define RX_PPDU_END_USER_STATS_QOSCTRL_15_8_TID12_LSB                               0
1239*5113495bSYour Name #define RX_PPDU_END_USER_STATS_QOSCTRL_15_8_TID12_MSB                               7
1240*5113495bSYour Name #define RX_PPDU_END_USER_STATS_QOSCTRL_15_8_TID12_MASK                              0x00000000000000ff
1241*5113495bSYour Name 
1242*5113495bSYour Name 
1243*5113495bSYour Name /* Description		QOSCTRL_15_8_TID13
1244*5113495bSYour Name 
1245*5113495bSYour Name 			Field only valid when Received_qos_data_tid_bitmap[13] is
1246*5113495bSYour Name 			 set
1247*5113495bSYour Name 
1248*5113495bSYour Name 			QoS control field bits 15-8 of the last properly received
1249*5113495bSYour Name 			 MPDU with a QoS control field embedded, with  TID == 13
1250*5113495bSYour Name 
1251*5113495bSYour Name */
1252*5113495bSYour Name 
1253*5113495bSYour Name #define RX_PPDU_END_USER_STATS_QOSCTRL_15_8_TID13_OFFSET                            0x0000000000000040
1254*5113495bSYour Name #define RX_PPDU_END_USER_STATS_QOSCTRL_15_8_TID13_LSB                               8
1255*5113495bSYour Name #define RX_PPDU_END_USER_STATS_QOSCTRL_15_8_TID13_MSB                               15
1256*5113495bSYour Name #define RX_PPDU_END_USER_STATS_QOSCTRL_15_8_TID13_MASK                              0x000000000000ff00
1257*5113495bSYour Name 
1258*5113495bSYour Name 
1259*5113495bSYour Name /* Description		QOSCTRL_15_8_TID14
1260*5113495bSYour Name 
1261*5113495bSYour Name 			Field only valid when Received_qos_data_tid_bitmap[14] is
1262*5113495bSYour Name 			 set
1263*5113495bSYour Name 
1264*5113495bSYour Name 			QoS control field bits 15-8 of the last properly received
1265*5113495bSYour Name 			 MPDU with a QoS control field embedded, with  TID == 14
1266*5113495bSYour Name 
1267*5113495bSYour Name */
1268*5113495bSYour Name 
1269*5113495bSYour Name #define RX_PPDU_END_USER_STATS_QOSCTRL_15_8_TID14_OFFSET                            0x0000000000000040
1270*5113495bSYour Name #define RX_PPDU_END_USER_STATS_QOSCTRL_15_8_TID14_LSB                               16
1271*5113495bSYour Name #define RX_PPDU_END_USER_STATS_QOSCTRL_15_8_TID14_MSB                               23
1272*5113495bSYour Name #define RX_PPDU_END_USER_STATS_QOSCTRL_15_8_TID14_MASK                              0x0000000000ff0000
1273*5113495bSYour Name 
1274*5113495bSYour Name 
1275*5113495bSYour Name /* Description		QOSCTRL_15_8_TID15
1276*5113495bSYour Name 
1277*5113495bSYour Name 			Field only valid when Received_qos_data_tid_bitmap[15] is
1278*5113495bSYour Name 			 set
1279*5113495bSYour Name 
1280*5113495bSYour Name 			QoS control field bits 15-8 of the last properly received
1281*5113495bSYour Name 			 MPDU with a QoS control field embedded, with  TID == 15
1282*5113495bSYour Name 
1283*5113495bSYour Name */
1284*5113495bSYour Name 
1285*5113495bSYour Name #define RX_PPDU_END_USER_STATS_QOSCTRL_15_8_TID15_OFFSET                            0x0000000000000040
1286*5113495bSYour Name #define RX_PPDU_END_USER_STATS_QOSCTRL_15_8_TID15_LSB                               24
1287*5113495bSYour Name #define RX_PPDU_END_USER_STATS_QOSCTRL_15_8_TID15_MSB                               31
1288*5113495bSYour Name #define RX_PPDU_END_USER_STATS_QOSCTRL_15_8_TID15_MASK                              0x00000000ff000000
1289*5113495bSYour Name 
1290*5113495bSYour Name 
1291*5113495bSYour Name /* Description		MPDU_OK_BYTE_COUNT
1292*5113495bSYour Name 
1293*5113495bSYour Name 			The number of bytes received within an MPDU for this user
1294*5113495bSYour Name 			 with correct FCS. This includes the FCS field
1295*5113495bSYour Name 
1296*5113495bSYour Name 			NOTE:
1297*5113495bSYour Name 			The sum of the four fields.....
1298*5113495bSYour Name 			Mpdu_ok_byte_count +
1299*5113495bSYour Name 			mpdu_err_byte_count +
1300*5113495bSYour Name 			(Ampdu_delim_ok_count x 4) + (Ampdu_delim_err_count x 4)
1301*5113495bSYour Name 
1302*5113495bSYour Name 			.....is the total number of bytes that were received for
1303*5113495bSYour Name 			 this user from the PHY.
1304*5113495bSYour Name 
1305*5113495bSYour Name 			<legal all>
1306*5113495bSYour Name */
1307*5113495bSYour Name 
1308*5113495bSYour Name #define RX_PPDU_END_USER_STATS_MPDU_OK_BYTE_COUNT_OFFSET                            0x0000000000000040
1309*5113495bSYour Name #define RX_PPDU_END_USER_STATS_MPDU_OK_BYTE_COUNT_LSB                               32
1310*5113495bSYour Name #define RX_PPDU_END_USER_STATS_MPDU_OK_BYTE_COUNT_MSB                               56
1311*5113495bSYour Name #define RX_PPDU_END_USER_STATS_MPDU_OK_BYTE_COUNT_MASK                              0x01ffffff00000000
1312*5113495bSYour Name 
1313*5113495bSYour Name 
1314*5113495bSYour Name /* Description		AMPDU_DELIM_OK_COUNT_6_0
1315*5113495bSYour Name 
1316*5113495bSYour Name 			Number of AMPDU delimiter received with correct structure
1317*5113495bSYour Name 
1318*5113495bSYour Name 			LSB 7 bits from this counter
1319*5113495bSYour Name 
1320*5113495bSYour Name 			Note that this is a delimiter count and not byte count.
1321*5113495bSYour Name 			To get to the number of bytes occupied by these delimiters,
1322*5113495bSYour Name 			multiply this number by 4
1323*5113495bSYour Name 
1324*5113495bSYour Name 			<legal all>
1325*5113495bSYour Name */
1326*5113495bSYour Name 
1327*5113495bSYour Name #define RX_PPDU_END_USER_STATS_AMPDU_DELIM_OK_COUNT_6_0_OFFSET                      0x0000000000000040
1328*5113495bSYour Name #define RX_PPDU_END_USER_STATS_AMPDU_DELIM_OK_COUNT_6_0_LSB                         57
1329*5113495bSYour Name #define RX_PPDU_END_USER_STATS_AMPDU_DELIM_OK_COUNT_6_0_MSB                         63
1330*5113495bSYour Name #define RX_PPDU_END_USER_STATS_AMPDU_DELIM_OK_COUNT_6_0_MASK                        0xfe00000000000000
1331*5113495bSYour Name 
1332*5113495bSYour Name 
1333*5113495bSYour Name /* Description		AMPDU_DELIM_ERR_COUNT
1334*5113495bSYour Name 
1335*5113495bSYour Name 			The number of MPDU delimiter errors counted for this user.
1336*5113495bSYour Name 
1337*5113495bSYour Name 
1338*5113495bSYour Name 			Note that this is a delimiter count and not byte count.
1339*5113495bSYour Name 			To get to the number of bytes occupied by these delimiters,
1340*5113495bSYour Name 			multiply this number by 4
1341*5113495bSYour Name 			<legal all>
1342*5113495bSYour Name */
1343*5113495bSYour Name 
1344*5113495bSYour Name #define RX_PPDU_END_USER_STATS_AMPDU_DELIM_ERR_COUNT_OFFSET                         0x0000000000000048
1345*5113495bSYour Name #define RX_PPDU_END_USER_STATS_AMPDU_DELIM_ERR_COUNT_LSB                            0
1346*5113495bSYour Name #define RX_PPDU_END_USER_STATS_AMPDU_DELIM_ERR_COUNT_MSB                            24
1347*5113495bSYour Name #define RX_PPDU_END_USER_STATS_AMPDU_DELIM_ERR_COUNT_MASK                           0x0000000001ffffff
1348*5113495bSYour Name 
1349*5113495bSYour Name 
1350*5113495bSYour Name /* Description		AMPDU_DELIM_OK_COUNT_13_7
1351*5113495bSYour Name 
1352*5113495bSYour Name 			Number of AMPDU delimiters received with correct structure
1353*5113495bSYour Name 
1354*5113495bSYour Name 			Bits 13-7 from this counter
1355*5113495bSYour Name 
1356*5113495bSYour Name 			Note that this is a delimiter count and not byte count.
1357*5113495bSYour Name 			To get to the number of bytes occupied by these delimiters,
1358*5113495bSYour Name 			multiply this number by 4
1359*5113495bSYour Name 			<legal all>
1360*5113495bSYour Name */
1361*5113495bSYour Name 
1362*5113495bSYour Name #define RX_PPDU_END_USER_STATS_AMPDU_DELIM_OK_COUNT_13_7_OFFSET                     0x0000000000000048
1363*5113495bSYour Name #define RX_PPDU_END_USER_STATS_AMPDU_DELIM_OK_COUNT_13_7_LSB                        25
1364*5113495bSYour Name #define RX_PPDU_END_USER_STATS_AMPDU_DELIM_OK_COUNT_13_7_MSB                        31
1365*5113495bSYour Name #define RX_PPDU_END_USER_STATS_AMPDU_DELIM_OK_COUNT_13_7_MASK                       0x00000000fe000000
1366*5113495bSYour Name 
1367*5113495bSYour Name 
1368*5113495bSYour Name /* Description		MPDU_ERR_BYTE_COUNT
1369*5113495bSYour Name 
1370*5113495bSYour Name 			The number of bytes belonging to MPDUs with an FCS error.
1371*5113495bSYour Name 			This includes the FCS field.
1372*5113495bSYour Name 
1373*5113495bSYour Name 			<legal all>
1374*5113495bSYour Name */
1375*5113495bSYour Name 
1376*5113495bSYour Name #define RX_PPDU_END_USER_STATS_MPDU_ERR_BYTE_COUNT_OFFSET                           0x0000000000000048
1377*5113495bSYour Name #define RX_PPDU_END_USER_STATS_MPDU_ERR_BYTE_COUNT_LSB                              32
1378*5113495bSYour Name #define RX_PPDU_END_USER_STATS_MPDU_ERR_BYTE_COUNT_MSB                              56
1379*5113495bSYour Name #define RX_PPDU_END_USER_STATS_MPDU_ERR_BYTE_COUNT_MASK                             0x01ffffff00000000
1380*5113495bSYour Name 
1381*5113495bSYour Name 
1382*5113495bSYour Name /* Description		AMPDU_DELIM_OK_COUNT_20_14
1383*5113495bSYour Name 
1384*5113495bSYour Name 			Number of AMPDU delimiters received with correct structure
1385*5113495bSYour Name 
1386*5113495bSYour Name 			Bits 20-14 from this counter
1387*5113495bSYour Name 
1388*5113495bSYour Name 			Note that this is a delimiter count and not byte count.
1389*5113495bSYour Name 			To get to the number of bytes occupied by these delimiters,
1390*5113495bSYour Name 			multiply this number by 4
1391*5113495bSYour Name 
1392*5113495bSYour Name 			<legal all>
1393*5113495bSYour Name */
1394*5113495bSYour Name 
1395*5113495bSYour Name #define RX_PPDU_END_USER_STATS_AMPDU_DELIM_OK_COUNT_20_14_OFFSET                    0x0000000000000048
1396*5113495bSYour Name #define RX_PPDU_END_USER_STATS_AMPDU_DELIM_OK_COUNT_20_14_LSB                       57
1397*5113495bSYour Name #define RX_PPDU_END_USER_STATS_AMPDU_DELIM_OK_COUNT_20_14_MSB                       63
1398*5113495bSYour Name #define RX_PPDU_END_USER_STATS_AMPDU_DELIM_OK_COUNT_20_14_MASK                      0xfe00000000000000
1399*5113495bSYour Name 
1400*5113495bSYour Name 
1401*5113495bSYour Name /* Description		NON_CONSECUTIVE_DELIMITER_ERR
1402*5113495bSYour Name 
1403*5113495bSYour Name 			The number of times an MPDU delimiter error is detected
1404*5113495bSYour Name 			that is not immediately preceded by another MPDU delimiter
1405*5113495bSYour Name 			 also with FCS error.
1406*5113495bSYour Name 
1407*5113495bSYour Name 			The counter saturates at 0xFFFF
1408*5113495bSYour Name 
1409*5113495bSYour Name 			<legal all>
1410*5113495bSYour Name */
1411*5113495bSYour Name 
1412*5113495bSYour Name #define RX_PPDU_END_USER_STATS_NON_CONSECUTIVE_DELIMITER_ERR_OFFSET                 0x0000000000000050
1413*5113495bSYour Name #define RX_PPDU_END_USER_STATS_NON_CONSECUTIVE_DELIMITER_ERR_LSB                    0
1414*5113495bSYour Name #define RX_PPDU_END_USER_STATS_NON_CONSECUTIVE_DELIMITER_ERR_MSB                    15
1415*5113495bSYour Name #define RX_PPDU_END_USER_STATS_NON_CONSECUTIVE_DELIMITER_ERR_MASK                   0x000000000000ffff
1416*5113495bSYour Name 
1417*5113495bSYour Name 
1418*5113495bSYour Name /* Description		RETRIED_MSDU_COUNT
1419*5113495bSYour Name 
1420*5113495bSYour Name 			Field filled in by RX OLE
1421*5113495bSYour Name 			Set to 0 by RXPCU
1422*5113495bSYour Name 
1423*5113495bSYour Name 			The number of MSDUs that are part of MPDUs without FCS error,
1424*5113495bSYour Name 			that have the retry bit set.
1425*5113495bSYour Name 			<legal all>
1426*5113495bSYour Name */
1427*5113495bSYour Name 
1428*5113495bSYour Name #define RX_PPDU_END_USER_STATS_RETRIED_MSDU_COUNT_OFFSET                            0x0000000000000050
1429*5113495bSYour Name #define RX_PPDU_END_USER_STATS_RETRIED_MSDU_COUNT_LSB                               16
1430*5113495bSYour Name #define RX_PPDU_END_USER_STATS_RETRIED_MSDU_COUNT_MSB                               31
1431*5113495bSYour Name #define RX_PPDU_END_USER_STATS_RETRIED_MSDU_COUNT_MASK                              0x00000000ffff0000
1432*5113495bSYour Name 
1433*5113495bSYour Name 
1434*5113495bSYour Name /* Description		HT_CONTROL_NULL_FIELD
1435*5113495bSYour Name 
1436*5113495bSYour Name 			Field only valid when HT_control_info_NULL_valid is set.
1437*5113495bSYour Name 
1438*5113495bSYour Name 
1439*5113495bSYour Name 			Last successfully received HT_CONTROL/VHT_CONTROL/HE_CONTROL
1440*5113495bSYour Name 			  field from QoS Null frame for this user.
1441*5113495bSYour Name 			<legal all>
1442*5113495bSYour Name */
1443*5113495bSYour Name 
1444*5113495bSYour Name #define RX_PPDU_END_USER_STATS_HT_CONTROL_NULL_FIELD_OFFSET                         0x0000000000000050
1445*5113495bSYour Name #define RX_PPDU_END_USER_STATS_HT_CONTROL_NULL_FIELD_LSB                            32
1446*5113495bSYour Name #define RX_PPDU_END_USER_STATS_HT_CONTROL_NULL_FIELD_MSB                            63
1447*5113495bSYour Name #define RX_PPDU_END_USER_STATS_HT_CONTROL_NULL_FIELD_MASK                           0xffffffff00000000
1448*5113495bSYour Name 
1449*5113495bSYour Name 
1450*5113495bSYour Name /* Description		SW_RESPONSE_REFERENCE_PTR_EXT
1451*5113495bSYour Name 
1452*5113495bSYour Name 			Extended Pointer info that SW uses to refer back to an expected
1453*5113495bSYour Name 			 response transmission. Used for Rate adaptation purposes.
1454*5113495bSYour Name 
1455*5113495bSYour Name 			When a reception occurs that is not tied to an expected
1456*5113495bSYour Name 			response, this field is set to 0x0.
1457*5113495bSYour Name 
1458*5113495bSYour Name 			Note: earlier on in this TLV there is also the field: Sw_response_reference_ptr.
1459*5113495bSYour Name 
1460*5113495bSYour Name 			<legal all>
1461*5113495bSYour Name */
1462*5113495bSYour Name 
1463*5113495bSYour Name #define RX_PPDU_END_USER_STATS_SW_RESPONSE_REFERENCE_PTR_EXT_OFFSET                 0x0000000000000058
1464*5113495bSYour Name #define RX_PPDU_END_USER_STATS_SW_RESPONSE_REFERENCE_PTR_EXT_LSB                    0
1465*5113495bSYour Name #define RX_PPDU_END_USER_STATS_SW_RESPONSE_REFERENCE_PTR_EXT_MSB                    31
1466*5113495bSYour Name #define RX_PPDU_END_USER_STATS_SW_RESPONSE_REFERENCE_PTR_EXT_MASK                   0x00000000ffffffff
1467*5113495bSYour Name 
1468*5113495bSYour Name 
1469*5113495bSYour Name /* Description		CORRUPTED_DUE_TO_FIFO_DELAY
1470*5113495bSYour Name 
1471*5113495bSYour Name 			Set if Rx PCU avoided a hang due to SFM delays by writing
1472*5113495bSYour Name 			 a corrupted 'RX_PPDU_END_USER_STATS*' and/or 'RX_PPDU_END.'
1473*5113495bSYour Name 
1474*5113495bSYour Name */
1475*5113495bSYour Name 
1476*5113495bSYour Name #define RX_PPDU_END_USER_STATS_CORRUPTED_DUE_TO_FIFO_DELAY_OFFSET                   0x0000000000000058
1477*5113495bSYour Name #define RX_PPDU_END_USER_STATS_CORRUPTED_DUE_TO_FIFO_DELAY_LSB                      32
1478*5113495bSYour Name #define RX_PPDU_END_USER_STATS_CORRUPTED_DUE_TO_FIFO_DELAY_MSB                      32
1479*5113495bSYour Name #define RX_PPDU_END_USER_STATS_CORRUPTED_DUE_TO_FIFO_DELAY_MASK                     0x0000000100000000
1480*5113495bSYour Name 
1481*5113495bSYour Name 
1482*5113495bSYour Name /* Description		FRAME_CONTROL_INFO_NULL_VALID
1483*5113495bSYour Name 
1484*5113495bSYour Name 			When set, Frame_control_field_null contains valid information
1485*5113495bSYour Name 
1486*5113495bSYour Name 			<legal all>
1487*5113495bSYour Name */
1488*5113495bSYour Name 
1489*5113495bSYour Name #define RX_PPDU_END_USER_STATS_FRAME_CONTROL_INFO_NULL_VALID_OFFSET                 0x0000000000000058
1490*5113495bSYour Name #define RX_PPDU_END_USER_STATS_FRAME_CONTROL_INFO_NULL_VALID_LSB                    33
1491*5113495bSYour Name #define RX_PPDU_END_USER_STATS_FRAME_CONTROL_INFO_NULL_VALID_MSB                    33
1492*5113495bSYour Name #define RX_PPDU_END_USER_STATS_FRAME_CONTROL_INFO_NULL_VALID_MASK                   0x0000000200000000
1493*5113495bSYour Name 
1494*5113495bSYour Name 
1495*5113495bSYour Name /* Description		FRAME_CONTROL_FIELD_NULL
1496*5113495bSYour Name 
1497*5113495bSYour Name 			Field only valid when Frame_control_info_null_valid is set.
1498*5113495bSYour Name 
1499*5113495bSYour Name 
1500*5113495bSYour Name 			Last successfully received Frame_control field of Data Null/QoS
1501*5113495bSYour Name 			 Null for this user, mainly used to track the PM state of
1502*5113495bSYour Name 			 the transmitted device
1503*5113495bSYour Name 			<legal all>
1504*5113495bSYour Name */
1505*5113495bSYour Name 
1506*5113495bSYour Name #define RX_PPDU_END_USER_STATS_FRAME_CONTROL_FIELD_NULL_OFFSET                      0x0000000000000058
1507*5113495bSYour Name #define RX_PPDU_END_USER_STATS_FRAME_CONTROL_FIELD_NULL_LSB                         34
1508*5113495bSYour Name #define RX_PPDU_END_USER_STATS_FRAME_CONTROL_FIELD_NULL_MSB                         49
1509*5113495bSYour Name #define RX_PPDU_END_USER_STATS_FRAME_CONTROL_FIELD_NULL_MASK                        0x0003fffc00000000
1510*5113495bSYour Name 
1511*5113495bSYour Name 
1512*5113495bSYour Name /* Description		RETRIED_MPDU_COUNT
1513*5113495bSYour Name 
1514*5113495bSYour Name 			Field filled in by RXPCU
1515*5113495bSYour Name 
1516*5113495bSYour Name 			The number of MPDUs without FCS error, that have the retry
1517*5113495bSYour Name 			 bit set.
1518*5113495bSYour Name 			<legal all>
1519*5113495bSYour Name */
1520*5113495bSYour Name 
1521*5113495bSYour Name #define RX_PPDU_END_USER_STATS_RETRIED_MPDU_COUNT_OFFSET                            0x0000000000000058
1522*5113495bSYour Name #define RX_PPDU_END_USER_STATS_RETRIED_MPDU_COUNT_LSB                               50
1523*5113495bSYour Name #define RX_PPDU_END_USER_STATS_RETRIED_MPDU_COUNT_MSB                               60
1524*5113495bSYour Name #define RX_PPDU_END_USER_STATS_RETRIED_MPDU_COUNT_MASK                              0x1ffc000000000000
1525*5113495bSYour Name 
1526*5113495bSYour Name 
1527*5113495bSYour Name /* Description		RESERVED_23A
1528*5113495bSYour Name 
1529*5113495bSYour Name 			<legal 0>
1530*5113495bSYour Name */
1531*5113495bSYour Name 
1532*5113495bSYour Name #define RX_PPDU_END_USER_STATS_RESERVED_23A_OFFSET                                  0x0000000000000058
1533*5113495bSYour Name #define RX_PPDU_END_USER_STATS_RESERVED_23A_LSB                                     61
1534*5113495bSYour Name #define RX_PPDU_END_USER_STATS_RESERVED_23A_MSB                                     63
1535*5113495bSYour Name #define RX_PPDU_END_USER_STATS_RESERVED_23A_MASK                                    0xe000000000000000
1536*5113495bSYour Name 
1537*5113495bSYour Name 
1538*5113495bSYour Name /* Description		RXPCU_MPDU_FILTER_IN_CATEGORY
1539*5113495bSYour Name 
1540*5113495bSYour Name 			Field indicates what the reason was that the last successfully
1541*5113495bSYour Name 			 received MPDU was allowed to come into the receive path
1542*5113495bSYour Name 			 by RXPCU.
1543*5113495bSYour Name 			<enum 0 rxpcu_filter_pass> The last MPDU passed the normal
1544*5113495bSYour Name 			 frame filter programming of rxpcu
1545*5113495bSYour Name 			<enum 1 rxpcu_monitor_client> The last MPDU did NOT pass
1546*5113495bSYour Name 			 the regular frame filter and would have been dropped, were
1547*5113495bSYour Name 			 it not for the frame fitting into the 'monitor_client'
1548*5113495bSYour Name 			category.
1549*5113495bSYour Name 			<enum 2 rxpcu_monitor_other> The last MPDU did NOT pass
1550*5113495bSYour Name 			the regular frame filter and also did not pass the rxpcu_monitor_client
1551*5113495bSYour Name 			 filter. It would have been dropped accept that it did pass
1552*5113495bSYour Name 			 the 'monitor_other' category.
1553*5113495bSYour Name 			<enum 3 rxpcu_filter_pass_monitor_ovrd> The last MPDU passed
1554*5113495bSYour Name 			 the normal frame filter programming of RXPCU but additionally
1555*5113495bSYour Name 			 fit into the 'monitor_override_client' category.
1556*5113495bSYour Name 
1557*5113495bSYour Name 			<legal 0-3>
1558*5113495bSYour Name */
1559*5113495bSYour Name 
1560*5113495bSYour Name #define RX_PPDU_END_USER_STATS_RXPCU_MPDU_FILTER_IN_CATEGORY_OFFSET                 0x0000000000000060
1561*5113495bSYour Name #define RX_PPDU_END_USER_STATS_RXPCU_MPDU_FILTER_IN_CATEGORY_LSB                    0
1562*5113495bSYour Name #define RX_PPDU_END_USER_STATS_RXPCU_MPDU_FILTER_IN_CATEGORY_MSB                    1
1563*5113495bSYour Name #define RX_PPDU_END_USER_STATS_RXPCU_MPDU_FILTER_IN_CATEGORY_MASK                   0x0000000000000003
1564*5113495bSYour Name 
1565*5113495bSYour Name 
1566*5113495bSYour Name /* Description		SW_FRAME_GROUP_ID
1567*5113495bSYour Name 
1568*5113495bSYour Name 			SW processes frames based on certain classifications. This
1569*5113495bSYour Name 			 field indicates to what sw classification the last successfully
1570*5113495bSYour Name 			 received MPDU is mapped.
1571*5113495bSYour Name 			The classification is given in priority order
1572*5113495bSYour Name 
1573*5113495bSYour Name 			<enum 0 sw_frame_group_NDP_frame>
1574*5113495bSYour Name 
1575*5113495bSYour Name 			<enum 1 sw_frame_group_Multicast_data>
1576*5113495bSYour Name 			<enum 2 sw_frame_group_Unicast_data>
1577*5113495bSYour Name 			<enum 3 sw_frame_group_Null_data > This includes mpdus of
1578*5113495bSYour Name 			 type Data Null.
1579*5113495bSYour Name 			<enum 38 sw_frame_group_QoS_Null_data> This includes QoS
1580*5113495bSYour Name 			 Null frames except in UL MU or TB PPDUs.
1581*5113495bSYour Name 			<enum 39 sw_frame_group_QoS_Null_data_TB> This includes
1582*5113495bSYour Name 			QoS Null frames in UL MU or TB PPDUs.
1583*5113495bSYour Name 
1584*5113495bSYour Name 			<enum 4 sw_frame_group_mgmt_0000 >
1585*5113495bSYour Name 			<enum 5 sw_frame_group_mgmt_0001 >
1586*5113495bSYour Name 			<enum 6 sw_frame_group_mgmt_0010 >
1587*5113495bSYour Name 			<enum 7 sw_frame_group_mgmt_0011 >
1588*5113495bSYour Name 			<enum 8 sw_frame_group_mgmt_0100 >
1589*5113495bSYour Name 			<enum 9 sw_frame_group_mgmt_0101 >
1590*5113495bSYour Name 			<enum 10 sw_frame_group_mgmt_0110 >
1591*5113495bSYour Name 			<enum 11 sw_frame_group_mgmt_0111 >
1592*5113495bSYour Name 			<enum 12 sw_frame_group_mgmt_1000 >
1593*5113495bSYour Name 			<enum 13 sw_frame_group_mgmt_1001 >
1594*5113495bSYour Name 			<enum 14 sw_frame_group_mgmt_1010 >
1595*5113495bSYour Name 			<enum 15 sw_frame_group_mgmt_1011 >
1596*5113495bSYour Name 			<enum 16 sw_frame_group_mgmt_1100 >
1597*5113495bSYour Name 			<enum 17 sw_frame_group_mgmt_1101 >
1598*5113495bSYour Name 			<enum 18 sw_frame_group_mgmt_1110 >
1599*5113495bSYour Name 			<enum 19 sw_frame_group_mgmt_1111 >
1600*5113495bSYour Name 
1601*5113495bSYour Name 			<enum 20 sw_frame_group_ctrl_0000 >
1602*5113495bSYour Name 			<enum 21 sw_frame_group_ctrl_0001 >
1603*5113495bSYour Name 			<enum 22 sw_frame_group_ctrl_0010 >
1604*5113495bSYour Name 			<enum 23 sw_frame_group_ctrl_0011 >
1605*5113495bSYour Name 			<enum 24 sw_frame_group_ctrl_0100 >
1606*5113495bSYour Name 			<enum 25 sw_frame_group_ctrl_0101 >
1607*5113495bSYour Name 			<enum 26 sw_frame_group_ctrl_0110 >
1608*5113495bSYour Name 			<enum 27 sw_frame_group_ctrl_0111 >
1609*5113495bSYour Name 			<enum 28 sw_frame_group_ctrl_1000 >
1610*5113495bSYour Name 			<enum 29 sw_frame_group_ctrl_1001 >
1611*5113495bSYour Name 			<enum 30 sw_frame_group_ctrl_1010 >
1612*5113495bSYour Name 			<enum 31 sw_frame_group_ctrl_1011 >
1613*5113495bSYour Name 			<enum 32 sw_frame_group_ctrl_1100 >
1614*5113495bSYour Name 			<enum 33 sw_frame_group_ctrl_1101 >
1615*5113495bSYour Name 			<enum 34 sw_frame_group_ctrl_1110 >
1616*5113495bSYour Name 			<enum 35 sw_frame_group_ctrl_1111 >
1617*5113495bSYour Name 
1618*5113495bSYour Name 			<enum 36 sw_frame_group_unsupported> This covers type 3
1619*5113495bSYour Name 			and protocol version != 0
1620*5113495bSYour Name 
1621*5113495bSYour Name 			<enum 37 sw_frame_group_phy_error> PHY reported an error
1622*5113495bSYour Name 
1623*5113495bSYour Name 
1624*5113495bSYour Name 			<legal 0-39>
1625*5113495bSYour Name */
1626*5113495bSYour Name 
1627*5113495bSYour Name #define RX_PPDU_END_USER_STATS_SW_FRAME_GROUP_ID_OFFSET                             0x0000000000000060
1628*5113495bSYour Name #define RX_PPDU_END_USER_STATS_SW_FRAME_GROUP_ID_LSB                                2
1629*5113495bSYour Name #define RX_PPDU_END_USER_STATS_SW_FRAME_GROUP_ID_MSB                                8
1630*5113495bSYour Name #define RX_PPDU_END_USER_STATS_SW_FRAME_GROUP_ID_MASK                               0x00000000000001fc
1631*5113495bSYour Name 
1632*5113495bSYour Name 
1633*5113495bSYour Name /* Description		RESERVED_24A
1634*5113495bSYour Name 
1635*5113495bSYour Name 			<legal 0>
1636*5113495bSYour Name */
1637*5113495bSYour Name 
1638*5113495bSYour Name #define RX_PPDU_END_USER_STATS_RESERVED_24A_OFFSET                                  0x0000000000000060
1639*5113495bSYour Name #define RX_PPDU_END_USER_STATS_RESERVED_24A_LSB                                     9
1640*5113495bSYour Name #define RX_PPDU_END_USER_STATS_RESERVED_24A_MSB                                     12
1641*5113495bSYour Name #define RX_PPDU_END_USER_STATS_RESERVED_24A_MASK                                    0x0000000000001e00
1642*5113495bSYour Name 
1643*5113495bSYour Name 
1644*5113495bSYour Name /* Description		FRAME_CONTROL_INFO_MGMT_CTRL_VALID
1645*5113495bSYour Name 
1646*5113495bSYour Name 			When set, Frame_control_field_mgmt_ctrl contains valid information.
1647*5113495bSYour Name 
1648*5113495bSYour Name 			<legal all>
1649*5113495bSYour Name */
1650*5113495bSYour Name 
1651*5113495bSYour Name #define RX_PPDU_END_USER_STATS_FRAME_CONTROL_INFO_MGMT_CTRL_VALID_OFFSET            0x0000000000000060
1652*5113495bSYour Name #define RX_PPDU_END_USER_STATS_FRAME_CONTROL_INFO_MGMT_CTRL_VALID_LSB               13
1653*5113495bSYour Name #define RX_PPDU_END_USER_STATS_FRAME_CONTROL_INFO_MGMT_CTRL_VALID_MSB               13
1654*5113495bSYour Name #define RX_PPDU_END_USER_STATS_FRAME_CONTROL_INFO_MGMT_CTRL_VALID_MASK              0x0000000000002000
1655*5113495bSYour Name 
1656*5113495bSYour Name 
1657*5113495bSYour Name /* Description		MAC_ADDR_AD2_VALID
1658*5113495bSYour Name 
1659*5113495bSYour Name 			When set, the fields mac_addr_ad2_... contain valid information.
1660*5113495bSYour Name 
1661*5113495bSYour Name 			<legal all>
1662*5113495bSYour Name */
1663*5113495bSYour Name 
1664*5113495bSYour Name #define RX_PPDU_END_USER_STATS_MAC_ADDR_AD2_VALID_OFFSET                            0x0000000000000060
1665*5113495bSYour Name #define RX_PPDU_END_USER_STATS_MAC_ADDR_AD2_VALID_LSB                               14
1666*5113495bSYour Name #define RX_PPDU_END_USER_STATS_MAC_ADDR_AD2_VALID_MSB                               14
1667*5113495bSYour Name #define RX_PPDU_END_USER_STATS_MAC_ADDR_AD2_VALID_MASK                              0x0000000000004000
1668*5113495bSYour Name 
1669*5113495bSYour Name 
1670*5113495bSYour Name /* Description		MCAST_BCAST
1671*5113495bSYour Name 
1672*5113495bSYour Name 			Multicast / broadcast indicator
1673*5113495bSYour Name 
1674*5113495bSYour Name 			Only set when the MAC address 1 bit 0 is set indicating
1675*5113495bSYour Name 			mcast/bcast and the BSSID matches one of the BSSID registers,
1676*5113495bSYour Name 			for the last successfully received MPDU
1677*5113495bSYour Name 			<legal all>
1678*5113495bSYour Name */
1679*5113495bSYour Name 
1680*5113495bSYour Name #define RX_PPDU_END_USER_STATS_MCAST_BCAST_OFFSET                                   0x0000000000000060
1681*5113495bSYour Name #define RX_PPDU_END_USER_STATS_MCAST_BCAST_LSB                                      15
1682*5113495bSYour Name #define RX_PPDU_END_USER_STATS_MCAST_BCAST_MSB                                      15
1683*5113495bSYour Name #define RX_PPDU_END_USER_STATS_MCAST_BCAST_MASK                                     0x0000000000008000
1684*5113495bSYour Name 
1685*5113495bSYour Name 
1686*5113495bSYour Name /* Description		FRAME_CONTROL_FIELD_MGMT_CTRL
1687*5113495bSYour Name 
1688*5113495bSYour Name 			Field only valid when Frame_control_info_mgmt_ctrl_valid
1689*5113495bSYour Name 			 is set
1690*5113495bSYour Name 
1691*5113495bSYour Name 			Last successfully received 'Frame control' field of control
1692*5113495bSYour Name 			 or management frames for this user, mainly used in Rx monitor
1693*5113495bSYour Name 			 mode
1694*5113495bSYour Name 			<legal all>
1695*5113495bSYour Name */
1696*5113495bSYour Name 
1697*5113495bSYour Name #define RX_PPDU_END_USER_STATS_FRAME_CONTROL_FIELD_MGMT_CTRL_OFFSET                 0x0000000000000060
1698*5113495bSYour Name #define RX_PPDU_END_USER_STATS_FRAME_CONTROL_FIELD_MGMT_CTRL_LSB                    16
1699*5113495bSYour Name #define RX_PPDU_END_USER_STATS_FRAME_CONTROL_FIELD_MGMT_CTRL_MSB                    31
1700*5113495bSYour Name #define RX_PPDU_END_USER_STATS_FRAME_CONTROL_FIELD_MGMT_CTRL_MASK                   0x00000000ffff0000
1701*5113495bSYour Name 
1702*5113495bSYour Name 
1703*5113495bSYour Name /* Description		USER_PPDU_LEN
1704*5113495bSYour Name 
1705*5113495bSYour Name 			The sum of the mpdu_length fields of all the 'RX_MPDU_START'
1706*5113495bSYour Name 			TLVs generated for this user  for this PPDU
1707*5113495bSYour Name */
1708*5113495bSYour Name 
1709*5113495bSYour Name #define RX_PPDU_END_USER_STATS_USER_PPDU_LEN_OFFSET                                 0x0000000000000060
1710*5113495bSYour Name #define RX_PPDU_END_USER_STATS_USER_PPDU_LEN_LSB                                    32
1711*5113495bSYour Name #define RX_PPDU_END_USER_STATS_USER_PPDU_LEN_MSB                                    55
1712*5113495bSYour Name #define RX_PPDU_END_USER_STATS_USER_PPDU_LEN_MASK                                   0x00ffffff00000000
1713*5113495bSYour Name 
1714*5113495bSYour Name 
1715*5113495bSYour Name /* Description		RESERVED_25A
1716*5113495bSYour Name 
1717*5113495bSYour Name 			<legal 0>
1718*5113495bSYour Name */
1719*5113495bSYour Name 
1720*5113495bSYour Name #define RX_PPDU_END_USER_STATS_RESERVED_25A_OFFSET                                  0x0000000000000060
1721*5113495bSYour Name #define RX_PPDU_END_USER_STATS_RESERVED_25A_LSB                                     56
1722*5113495bSYour Name #define RX_PPDU_END_USER_STATS_RESERVED_25A_MSB                                     63
1723*5113495bSYour Name #define RX_PPDU_END_USER_STATS_RESERVED_25A_MASK                                    0xff00000000000000
1724*5113495bSYour Name 
1725*5113495bSYour Name 
1726*5113495bSYour Name /* Description		MAC_ADDR_AD2_31_0
1727*5113495bSYour Name 
1728*5113495bSYour Name 			Field only valid when mac_addr_ad2_valid is set
1729*5113495bSYour Name 
1730*5113495bSYour Name 			The least significant 4 bytes of the last successfully received
1731*5113495bSYour Name 			 frame's MAC Address AD2
1732*5113495bSYour Name 			<legal all>
1733*5113495bSYour Name */
1734*5113495bSYour Name 
1735*5113495bSYour Name #define RX_PPDU_END_USER_STATS_MAC_ADDR_AD2_31_0_OFFSET                             0x0000000000000068
1736*5113495bSYour Name #define RX_PPDU_END_USER_STATS_MAC_ADDR_AD2_31_0_LSB                                0
1737*5113495bSYour Name #define RX_PPDU_END_USER_STATS_MAC_ADDR_AD2_31_0_MSB                                31
1738*5113495bSYour Name #define RX_PPDU_END_USER_STATS_MAC_ADDR_AD2_31_0_MASK                               0x00000000ffffffff
1739*5113495bSYour Name 
1740*5113495bSYour Name 
1741*5113495bSYour Name /* Description		MAC_ADDR_AD2_47_32
1742*5113495bSYour Name 
1743*5113495bSYour Name 			Field only valid when mac_addr_ad2_valid is set
1744*5113495bSYour Name 
1745*5113495bSYour Name 			The 2 most significant bytes of the last successfully received
1746*5113495bSYour Name 			 frame's MAC Address AD2
1747*5113495bSYour Name 			<legal all>
1748*5113495bSYour Name */
1749*5113495bSYour Name 
1750*5113495bSYour Name #define RX_PPDU_END_USER_STATS_MAC_ADDR_AD2_47_32_OFFSET                            0x0000000000000068
1751*5113495bSYour Name #define RX_PPDU_END_USER_STATS_MAC_ADDR_AD2_47_32_LSB                               32
1752*5113495bSYour Name #define RX_PPDU_END_USER_STATS_MAC_ADDR_AD2_47_32_MSB                               47
1753*5113495bSYour Name #define RX_PPDU_END_USER_STATS_MAC_ADDR_AD2_47_32_MASK                              0x0000ffff00000000
1754*5113495bSYour Name 
1755*5113495bSYour Name 
1756*5113495bSYour Name /* Description		AMSDU_MSDU_COUNT
1757*5113495bSYour Name 
1758*5113495bSYour Name 			Field filled in by RX OLE
1759*5113495bSYour Name 			Set to 0 by RXPCU
1760*5113495bSYour Name 
1761*5113495bSYour Name 			The number of MSDUs that are part of A-MSDUs that are part
1762*5113495bSYour Name 			 of MPDUs without FCS error
1763*5113495bSYour Name 			<legal all>
1764*5113495bSYour Name */
1765*5113495bSYour Name 
1766*5113495bSYour Name #define RX_PPDU_END_USER_STATS_AMSDU_MSDU_COUNT_OFFSET                              0x0000000000000068
1767*5113495bSYour Name #define RX_PPDU_END_USER_STATS_AMSDU_MSDU_COUNT_LSB                                 48
1768*5113495bSYour Name #define RX_PPDU_END_USER_STATS_AMSDU_MSDU_COUNT_MSB                                 63
1769*5113495bSYour Name #define RX_PPDU_END_USER_STATS_AMSDU_MSDU_COUNT_MASK                                0xffff000000000000
1770*5113495bSYour Name 
1771*5113495bSYour Name 
1772*5113495bSYour Name /* Description		NON_AMSDU_MSDU_COUNT
1773*5113495bSYour Name 
1774*5113495bSYour Name 			Field filled in by RX OLE
1775*5113495bSYour Name 			Set to 0 by RXPCU
1776*5113495bSYour Name 
1777*5113495bSYour Name 			The number of MSDUs that are not part of A-MSDUs that are
1778*5113495bSYour Name 			 part of MPDUs without FCS error
1779*5113495bSYour Name 			<legal all>
1780*5113495bSYour Name */
1781*5113495bSYour Name 
1782*5113495bSYour Name #define RX_PPDU_END_USER_STATS_NON_AMSDU_MSDU_COUNT_OFFSET                          0x0000000000000070
1783*5113495bSYour Name #define RX_PPDU_END_USER_STATS_NON_AMSDU_MSDU_COUNT_LSB                             0
1784*5113495bSYour Name #define RX_PPDU_END_USER_STATS_NON_AMSDU_MSDU_COUNT_MSB                             15
1785*5113495bSYour Name #define RX_PPDU_END_USER_STATS_NON_AMSDU_MSDU_COUNT_MASK                            0x000000000000ffff
1786*5113495bSYour Name 
1787*5113495bSYour Name 
1788*5113495bSYour Name /* Description		UCAST_MSDU_COUNT
1789*5113495bSYour Name 
1790*5113495bSYour Name 			Field filled in by RX OLE
1791*5113495bSYour Name 			Set to 0 by RXPCU
1792*5113495bSYour Name 
1793*5113495bSYour Name 			The number of MSDUs that are part of MPDUs without FCS error,
1794*5113495bSYour Name 			that are directed to a unicast destination address
1795*5113495bSYour Name 			<legal all>
1796*5113495bSYour Name */
1797*5113495bSYour Name 
1798*5113495bSYour Name #define RX_PPDU_END_USER_STATS_UCAST_MSDU_COUNT_OFFSET                              0x0000000000000070
1799*5113495bSYour Name #define RX_PPDU_END_USER_STATS_UCAST_MSDU_COUNT_LSB                                 16
1800*5113495bSYour Name #define RX_PPDU_END_USER_STATS_UCAST_MSDU_COUNT_MSB                                 31
1801*5113495bSYour Name #define RX_PPDU_END_USER_STATS_UCAST_MSDU_COUNT_MASK                                0x00000000ffff0000
1802*5113495bSYour Name 
1803*5113495bSYour Name 
1804*5113495bSYour Name /* Description		BCAST_MSDU_COUNT
1805*5113495bSYour Name 
1806*5113495bSYour Name 			Field filled in by RX OLE
1807*5113495bSYour Name 			Set to 0 by RXPCU
1808*5113495bSYour Name 
1809*5113495bSYour Name 			The number of MSDUs that are part of MPDUs without FCS error,
1810*5113495bSYour Name 			whose destination addresses are broadcast (0xFFFF_FFFF_FFFF)
1811*5113495bSYour Name 
1812*5113495bSYour Name 			<legal all>
1813*5113495bSYour Name */
1814*5113495bSYour Name 
1815*5113495bSYour Name #define RX_PPDU_END_USER_STATS_BCAST_MSDU_COUNT_OFFSET                              0x0000000000000070
1816*5113495bSYour Name #define RX_PPDU_END_USER_STATS_BCAST_MSDU_COUNT_LSB                                 32
1817*5113495bSYour Name #define RX_PPDU_END_USER_STATS_BCAST_MSDU_COUNT_MSB                                 47
1818*5113495bSYour Name #define RX_PPDU_END_USER_STATS_BCAST_MSDU_COUNT_MASK                                0x0000ffff00000000
1819*5113495bSYour Name 
1820*5113495bSYour Name 
1821*5113495bSYour Name /* Description		MCAST_BCAST_MSDU_COUNT
1822*5113495bSYour Name 
1823*5113495bSYour Name 			Field filled in by RX OLE
1824*5113495bSYour Name 			Set to 0 by RXPCU
1825*5113495bSYour Name 
1826*5113495bSYour Name 			The number of MSDUs that are part of MPDUs without FCS error,
1827*5113495bSYour Name 			whose destination addresses are either multicast or broadcast
1828*5113495bSYour Name 
1829*5113495bSYour Name 			<legal all>
1830*5113495bSYour Name */
1831*5113495bSYour Name 
1832*5113495bSYour Name #define RX_PPDU_END_USER_STATS_MCAST_BCAST_MSDU_COUNT_OFFSET                        0x0000000000000070
1833*5113495bSYour Name #define RX_PPDU_END_USER_STATS_MCAST_BCAST_MSDU_COUNT_LSB                           48
1834*5113495bSYour Name #define RX_PPDU_END_USER_STATS_MCAST_BCAST_MSDU_COUNT_MSB                           63
1835*5113495bSYour Name #define RX_PPDU_END_USER_STATS_MCAST_BCAST_MSDU_COUNT_MASK                          0xffff000000000000
1836*5113495bSYour Name 
1837*5113495bSYour Name 
1838*5113495bSYour Name 
1839*5113495bSYour Name #endif   // RX_PPDU_END_USER_STATS
1840