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