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