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