/* * Copyright (c) 2016-2017 The Linux Foundation. All rights reserved. * * Permission to use, copy, modify, and/or distribute this software for * any purpose with or without fee is hereby granted, provided that the * above copyright notice and this permission notice appear in all * copies. * * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL * WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE * AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR * PERFORMANCE OF THIS SOFTWARE. */ // DO NOT EDIT! This file is automatically generated // These definitions are tied to a particular hardware layout #ifndef _RX_PPDU_END_USER_STATS_H_ #define _RX_PPDU_END_USER_STATS_H_ #if !defined(__ASSEMBLER__) #endif #include "rx_rxpcu_classification_overview.h" // ################ START SUMMARY ################# // // Dword Fields // 0 struct rx_rxpcu_classification_overview rxpcu_classification_details; // 1 sta_full_aid[12:0], mcs[16:13], nss[19:17], odma_info_valid[20], ofdma_low_ru_index[27:21], reserved_1a[31:28] // 2 ofdma_high_ru_index[6:0], reserved_2a[7], user_receive_quality[15:8], mpdu_cnt_fcs_err[25:16], wbm2rxdma_buf_source_used[26], fw2rxdma_buf_source_used[27], sw2rxdma_buf_source_used[28], reserved_2b[31:29] // 3 mpdu_cnt_fcs_ok[8:0], frame_control_info_valid[9], qos_control_info_valid[10], ht_control_info_valid[11], data_sequence_control_info_valid[12], reserved_3a[15:13], rxdma2reo_ring_used[16], rxdma2fw_ring_used[17], rxdma2sw_ring_used[18], rxdma_release_ring_used[19], ht_control_field_pkt_type[23:20], reserved_3b[31:24] // 4 ast_index[15:0], frame_control_field[31:16] // 5 first_data_seq_ctrl[15:0], qos_control_field[31:16] // 6 ht_control_field[31:0] // 7 fcs_ok_bitmap_31_0[31:0] // 8 fcs_ok_bitmap_63_32[31:0] // 9 udp_msdu_count[15:0], tcp_msdu_count[31:16] // 10 other_msdu_count[15:0], tcp_ack_msdu_count[31:16] // 11 sw_response_reference_ptr[31:0] // 12 received_qos_data_tid_bitmap[15:0], received_qos_data_tid_eosp_bitmap[31:16] // 13 qosctrl_15_8_tid0[7:0], qosctrl_15_8_tid1[15:8], qosctrl_15_8_tid2[23:16], qosctrl_15_8_tid3[31:24] // 14 qosctrl_15_8_tid4[7:0], qosctrl_15_8_tid5[15:8], qosctrl_15_8_tid6[23:16], qosctrl_15_8_tid7[31:24] // 15 qosctrl_15_8_tid8[7:0], qosctrl_15_8_tid9[15:8], qosctrl_15_8_tid10[23:16], qosctrl_15_8_tid11[31:24] // 16 qosctrl_15_8_tid12[7:0], qosctrl_15_8_tid13[15:8], qosctrl_15_8_tid14[23:16], qosctrl_15_8_tid15[31:24] // // ################ END SUMMARY ################# #define NUM_OF_DWORDS_RX_PPDU_END_USER_STATS 17 struct rx_ppdu_end_user_stats { struct rx_rxpcu_classification_overview rxpcu_classification_details; uint32_t sta_full_aid : 13, //[12:0] mcs : 4, //[16:13] nss : 3, //[19:17] odma_info_valid : 1, //[20] ofdma_low_ru_index : 7, //[27:21] reserved_1a : 4; //[31:28] uint32_t ofdma_high_ru_index : 7, //[6:0] reserved_2a : 1, //[7] user_receive_quality : 8, //[15:8] mpdu_cnt_fcs_err : 10, //[25:16] wbm2rxdma_buf_source_used : 1, //[26] fw2rxdma_buf_source_used : 1, //[27] sw2rxdma_buf_source_used : 1, //[28] reserved_2b : 3; //[31:29] uint32_t mpdu_cnt_fcs_ok : 9, //[8:0] frame_control_info_valid : 1, //[9] qos_control_info_valid : 1, //[10] ht_control_info_valid : 1, //[11] data_sequence_control_info_valid: 1, //[12] reserved_3a : 3, //[15:13] rxdma2reo_ring_used : 1, //[16] rxdma2fw_ring_used : 1, //[17] rxdma2sw_ring_used : 1, //[18] rxdma_release_ring_used : 1, //[19] ht_control_field_pkt_type : 4, //[23:20] reserved_3b : 8; //[31:24] uint32_t ast_index : 16, //[15:0] frame_control_field : 16; //[31:16] uint32_t first_data_seq_ctrl : 16, //[15:0] qos_control_field : 16; //[31:16] uint32_t ht_control_field : 32; //[31:0] uint32_t fcs_ok_bitmap_31_0 : 32; //[31:0] uint32_t fcs_ok_bitmap_63_32 : 32; //[31:0] uint32_t udp_msdu_count : 16, //[15:0] tcp_msdu_count : 16; //[31:16] uint32_t other_msdu_count : 16, //[15:0] tcp_ack_msdu_count : 16; //[31:16] uint32_t sw_response_reference_ptr : 32; //[31:0] uint32_t received_qos_data_tid_bitmap : 16, //[15:0] received_qos_data_tid_eosp_bitmap: 16; //[31:16] uint32_t qosctrl_15_8_tid0 : 8, //[7:0] qosctrl_15_8_tid1 : 8, //[15:8] qosctrl_15_8_tid2 : 8, //[23:16] qosctrl_15_8_tid3 : 8; //[31:24] uint32_t qosctrl_15_8_tid4 : 8, //[7:0] qosctrl_15_8_tid5 : 8, //[15:8] qosctrl_15_8_tid6 : 8, //[23:16] qosctrl_15_8_tid7 : 8; //[31:24] uint32_t qosctrl_15_8_tid8 : 8, //[7:0] qosctrl_15_8_tid9 : 8, //[15:8] qosctrl_15_8_tid10 : 8, //[23:16] qosctrl_15_8_tid11 : 8; //[31:24] uint32_t qosctrl_15_8_tid12 : 8, //[7:0] qosctrl_15_8_tid13 : 8, //[15:8] qosctrl_15_8_tid14 : 8, //[23:16] qosctrl_15_8_tid15 : 8; //[31:24] }; /* struct rx_rxpcu_classification_overview rxpcu_classification_details Details related to what RXPCU classification types of MPDUs have been received sta_full_aid Consumer: FW Producer: RXPCU The full AID of this station. mcs MCS of the received frame For details, refer to MCS_TYPE description nss Number of spatial streams. Single spatial stream 2 spatial streams 3 spatial streams 4 spatial streams 5 spatial streams 6 spatial streams 7 spatial streams 8 spatial streams odma_info_valid When set, ofdma RU related info in the following fields is valid ofdma_low_ru_index The index of the lowerest RU used by this STA. reserved_1a ofdma_high_ru_index The index of the highest RU used by this STA. reserved_2a user_receive_quality RSSI / EVM for this user ??? Details TBD mpdu_cnt_fcs_err The number of MPDUs received from this STA in this PPDU with FCS errors wbm2rxdma_buf_source_used Field filled in by RXDMA When set, RXDMA has used the wbm2rxdma_buf ring as source for at least one of the frames in this PPDU. fw2rxdma_buf_source_used Field filled in by RXDMA When set, RXDMA has used the fw2rxdma_buf ring as source for at least one of the frames in this PPDU. sw2rxdma_buf_source_used Field filled in by RXDMA When set, RXDMA has used the sw2rxdma_buf ring as source for at least one of the frames in this PPDU. reserved_2b mpdu_cnt_fcs_ok The number of MPDUs received from this STA in this PPDU with correct FCS frame_control_info_valid When set, the frame_control_info field contains valid information qos_control_info_valid When set, the QoS_control_info field contains valid information ht_control_info_valid When set, the HT_control_info field contains valid information data_sequence_control_info_valid When set, the First_data_seq_ctrl field contains valid information reserved_3a rxdma2reo_ring_used Field filled in by RXDMA Set when at least one frame during this PPDU got pushed to this ring by RXDMA rxdma2fw_ring_used Field filled in by RXDMA Set when at least one frame during this PPDU got pushed to this ring by RXDMA rxdma2sw_ring_used Field filled in by RXDMA Set when at least one frame during this PPDU got pushed to this ring by RXDMA rxdma_release_ring_used Field filled in by RXDMA Set when at least one frame during this PPDU got pushed to this ring by RXDMA ht_control_field_pkt_type Field only valid when HT_control_info_valid is set. Indicates what the PHY receive type was for receiving this frame. Can help determine if the HT_CONTROL field shall be interpreted as HT/VHT or HE. 802.11a PPDU type 802.11b PPDU type 802.11n Mixed Mode PPDU type 802.11ac PPDU type 802.11ax PPDU type reserved_3b ast_index This field indicates the index of the AST entry corresponding to this MPDU. It is provided by the GSE module instantiated in RXPCU. A value of 0xFFFF indicates an invalid AST index, meaning that No AST entry was found or NO AST search was performed frame_control_field Field only valid when Frame_control_info_valid is set. Last successfully received Frame_control field of data frame (excluding Data NULL/ QoS Null) for this user Mainly used to track the PM state of the transmitted device NOTE: only data frame info is needed, as control and management frames are already routed to the FW. first_data_seq_ctrl Field only valid when Data_sequence_control_info_valid is set. Sequence control field of the first data frame (excluding Data NULL or QoS Data null) received for this user with correct FCS NOTE: only data frame info is needed, as control and management frames are already routed to the FW. qos_control_field Field only valid when QoS_control_info_valid is set. Last successfully received QoS_control field of data frame (excluding Data NULL/ QoS Null) for this user Note that in case of multi TID, this field can only reflect the last properly received MPDU, and thus can not indicate all potentially different TIDs that had been received earlier. There are however per TID fields, that will contain among other things all buffer status info: See QoSCtrl_15_8_tid??? ht_control_field Field only valid when HT_control_info_valid is set. Last successfully received HT_CONTROL/VHT_CONTROL/HE_CONTROL field of data frames, excluding Data NULL/ QoS Null, for this user. Data NULL/ QoS Null are excluded here because these frames are always already routed to the FW by RXDMA. See field HT_control_field_pkt_type in case pkt_type influences if this fields interpretation as HT/VHT/HE CONTROL fcs_ok_bitmap_31_0 Bitmap indicates in order of received MPDUs, which MPDUs had an passing FCS or had an error. 1: FCS OK 0: FCS error fcs_ok_bitmap_63_32 Bitmap indicates in order of received MPDUs, which MPDUs had an passing FCS or had an error. 1: FCS OK 0: FCS error NOTE: for users 0, 1, 2 and 3, additional bitmap info (up to 256 bitmap window) is provided in RX_PPDU_END_USER_STATS_EXT TLV udp_msdu_count Field filled in by RX OLE Set to 0 by RXPCU The number of MSDUs that are part of MPDUs without FCS error, that contain UDP frames. tcp_msdu_count Field filled in by RX OLE Set to 0 by RXPCU The number of MSDUs that are part of MPDUs without FCS error, that contain TCP frames. (Note: This does NOT include TCP-ACK) other_msdu_count Field filled in by RX OLE Set to 0 by RXPCU The number of MSDUs that are part of MPDUs without FCS error, that contain neither UDP or TCP frames. Includes Management and control frames. tcp_ack_msdu_count Field filled in by RX OLE Set to 0 by RXPCU The number of MSDUs that are part of MPDUs without FCS error, that contain TCP ack frames. sw_response_reference_ptr Pointer that SW uses to refer back to an expected response reception. Used for Rate adaptation purposes. When a reception occurrs that is not tied to an expected response, this field is set to 0x0 received_qos_data_tid_bitmap Whenever a QoS Data frame is received, the bit in this field that corresponds to the received TID shall be set. ...Bitmap[0] = TID0 ...Bitmap[1] = TID1 Etc. received_qos_data_tid_eosp_bitmap Field initialized to 0 For every QoS Data frame that is correctly received, the EOSP bit of that frame is copied over into the corresponding TID related field. Note that this implies that the bits here represent the EOSP bit status for each TID of the last MPDU received for that TID. received TID shall be set. ...eosp_bitmap[0] = eosp of TID0 ...eosp_bitmap[1] = eosp of TID1 Etc. qosctrl_15_8_tid0 Field only valid when Received_qos_data_tid_bitmap[0] is set QoS control field bits 15-8 of the last properly received MPDU with TID0 qosctrl_15_8_tid1 Field only valid when Received_qos_data_tid_bitmap[1] is set QoS control field bits 15-8 of the last properly received MPDU with TID1 qosctrl_15_8_tid2 Field only valid when Received_qos_data_tid_bitmap[2] is set QoS control field bits 15-8 of the last properly received MPDU with TID2 qosctrl_15_8_tid3 Field only valid when Received_qos_data_tid_bitmap[3] is set QoS control field bits 15-8 of the last properly received MPDU with TID3 qosctrl_15_8_tid4 Field only valid when Received_qos_data_tid_bitmap[4] is set QoS control field bits 15-8 of the last properly received MPDU with TID4 qosctrl_15_8_tid5 Field only valid when Received_qos_data_tid_bitmap[5] is set QoS control field bits 15-8 of the last properly received MPDU with TID5 qosctrl_15_8_tid6 Field only valid when Received_qos_data_tid_bitmap[6] is set QoS control field bits 15-8 of the last properly received MPDU with TID6 qosctrl_15_8_tid7 Field only valid when Received_qos_data_tid_bitmap[7] is set QoS control field bits 15-8 of the last properly received MPDU with TID7 qosctrl_15_8_tid8 Field only valid when Received_qos_data_tid_bitmap[8] is set QoS control field bits 15-8 of the last properly received MPDU with TID8 qosctrl_15_8_tid9 Field only valid when Received_qos_data_tid_bitmap[9] is set QoS control field bits 15-8 of the last properly received MPDU with TID9 qosctrl_15_8_tid10 Field only valid when Received_qos_data_tid_bitmap[10] is set QoS control field bits 15-8 of the last properly received MPDU with TID10 qosctrl_15_8_tid11 Field only valid when Received_qos_data_tid_bitmap[11] is set QoS control field bits 15-8 of the last properly received MPDU with TID11 qosctrl_15_8_tid12 Field only valid when Received_qos_data_tid_bitmap[12] is set QoS control field bits 15-8 of the last properly received MPDU with TID12 qosctrl_15_8_tid13 Field only valid when Received_qos_data_tid_bitmap[13] is set QoS control field bits 15-8 of the last properly received MPDU with TID13 qosctrl_15_8_tid14 Field only valid when Received_qos_data_tid_bitmap[14] is set QoS control field bits 15-8 of the last properly received MPDU with TID14 qosctrl_15_8_tid15 Field only valid when Received_qos_data_tid_bitmap[15] is set QoS control field bits 15-8 of the last properly received MPDU with TID15 */ #define RX_PPDU_END_USER_STATS_0_RX_RXPCU_CLASSIFICATION_OVERVIEW_RXPCU_CLASSIFICATION_DETAILS_OFFSET 0x00000000 #define RX_PPDU_END_USER_STATS_0_RX_RXPCU_CLASSIFICATION_OVERVIEW_RXPCU_CLASSIFICATION_DETAILS_LSB 24 #define RX_PPDU_END_USER_STATS_0_RX_RXPCU_CLASSIFICATION_OVERVIEW_RXPCU_CLASSIFICATION_DETAILS_MASK 0xffffffff /* Description RX_PPDU_END_USER_STATS_1_STA_FULL_AID Consumer: FW Producer: RXPCU The full AID of this station. */ #define RX_PPDU_END_USER_STATS_1_STA_FULL_AID_OFFSET 0x00000004 #define RX_PPDU_END_USER_STATS_1_STA_FULL_AID_LSB 0 #define RX_PPDU_END_USER_STATS_1_STA_FULL_AID_MASK 0x00001fff /* Description RX_PPDU_END_USER_STATS_1_MCS MCS of the received frame For details, refer to MCS_TYPE description */ #define RX_PPDU_END_USER_STATS_1_MCS_OFFSET 0x00000004 #define RX_PPDU_END_USER_STATS_1_MCS_LSB 13 #define RX_PPDU_END_USER_STATS_1_MCS_MASK 0x0001e000 /* Description RX_PPDU_END_USER_STATS_1_NSS Number of spatial streams. Single spatial stream 2 spatial streams 3 spatial streams 4 spatial streams 5 spatial streams 6 spatial streams 7 spatial streams 8 spatial streams */ #define RX_PPDU_END_USER_STATS_1_NSS_OFFSET 0x00000004 #define RX_PPDU_END_USER_STATS_1_NSS_LSB 17 #define RX_PPDU_END_USER_STATS_1_NSS_MASK 0x000e0000 /* Description RX_PPDU_END_USER_STATS_1_ODMA_INFO_VALID When set, ofdma RU related info in the following fields is valid */ #define RX_PPDU_END_USER_STATS_1_ODMA_INFO_VALID_OFFSET 0x00000004 #define RX_PPDU_END_USER_STATS_1_ODMA_INFO_VALID_LSB 20 #define RX_PPDU_END_USER_STATS_1_ODMA_INFO_VALID_MASK 0x00100000 /* Description RX_PPDU_END_USER_STATS_1_OFDMA_LOW_RU_INDEX The index of the lowerest RU used by this STA. */ #define RX_PPDU_END_USER_STATS_1_OFDMA_LOW_RU_INDEX_OFFSET 0x00000004 #define RX_PPDU_END_USER_STATS_1_OFDMA_LOW_RU_INDEX_LSB 21 #define RX_PPDU_END_USER_STATS_1_OFDMA_LOW_RU_INDEX_MASK 0x0fe00000 /* Description RX_PPDU_END_USER_STATS_1_RESERVED_1A */ #define RX_PPDU_END_USER_STATS_1_RESERVED_1A_OFFSET 0x00000004 #define RX_PPDU_END_USER_STATS_1_RESERVED_1A_LSB 28 #define RX_PPDU_END_USER_STATS_1_RESERVED_1A_MASK 0xf0000000 /* Description RX_PPDU_END_USER_STATS_2_OFDMA_HIGH_RU_INDEX The index of the highest RU used by this STA. */ #define RX_PPDU_END_USER_STATS_2_OFDMA_HIGH_RU_INDEX_OFFSET 0x00000008 #define RX_PPDU_END_USER_STATS_2_OFDMA_HIGH_RU_INDEX_LSB 0 #define RX_PPDU_END_USER_STATS_2_OFDMA_HIGH_RU_INDEX_MASK 0x0000007f /* Description RX_PPDU_END_USER_STATS_2_RESERVED_2A */ #define RX_PPDU_END_USER_STATS_2_RESERVED_2A_OFFSET 0x00000008 #define RX_PPDU_END_USER_STATS_2_RESERVED_2A_LSB 7 #define RX_PPDU_END_USER_STATS_2_RESERVED_2A_MASK 0x00000080 /* Description RX_PPDU_END_USER_STATS_2_USER_RECEIVE_QUALITY RSSI / EVM for this user ??? Details TBD */ #define RX_PPDU_END_USER_STATS_2_USER_RECEIVE_QUALITY_OFFSET 0x00000008 #define RX_PPDU_END_USER_STATS_2_USER_RECEIVE_QUALITY_LSB 8 #define RX_PPDU_END_USER_STATS_2_USER_RECEIVE_QUALITY_MASK 0x0000ff00 /* Description RX_PPDU_END_USER_STATS_2_MPDU_CNT_FCS_ERR The number of MPDUs received from this STA in this PPDU with FCS errors */ #define RX_PPDU_END_USER_STATS_2_MPDU_CNT_FCS_ERR_OFFSET 0x00000008 #define RX_PPDU_END_USER_STATS_2_MPDU_CNT_FCS_ERR_LSB 16 #define RX_PPDU_END_USER_STATS_2_MPDU_CNT_FCS_ERR_MASK 0x03ff0000 /* Description RX_PPDU_END_USER_STATS_2_WBM2RXDMA_BUF_SOURCE_USED Field filled in by RXDMA When set, RXDMA has used the wbm2rxdma_buf ring as source for at least one of the frames in this PPDU. */ #define RX_PPDU_END_USER_STATS_2_WBM2RXDMA_BUF_SOURCE_USED_OFFSET 0x00000008 #define RX_PPDU_END_USER_STATS_2_WBM2RXDMA_BUF_SOURCE_USED_LSB 26 #define RX_PPDU_END_USER_STATS_2_WBM2RXDMA_BUF_SOURCE_USED_MASK 0x04000000 /* Description RX_PPDU_END_USER_STATS_2_FW2RXDMA_BUF_SOURCE_USED Field filled in by RXDMA When set, RXDMA has used the fw2rxdma_buf ring as source for at least one of the frames in this PPDU. */ #define RX_PPDU_END_USER_STATS_2_FW2RXDMA_BUF_SOURCE_USED_OFFSET 0x00000008 #define RX_PPDU_END_USER_STATS_2_FW2RXDMA_BUF_SOURCE_USED_LSB 27 #define RX_PPDU_END_USER_STATS_2_FW2RXDMA_BUF_SOURCE_USED_MASK 0x08000000 /* Description RX_PPDU_END_USER_STATS_2_SW2RXDMA_BUF_SOURCE_USED Field filled in by RXDMA When set, RXDMA has used the sw2rxdma_buf ring as source for at least one of the frames in this PPDU. */ #define RX_PPDU_END_USER_STATS_2_SW2RXDMA_BUF_SOURCE_USED_OFFSET 0x00000008 #define RX_PPDU_END_USER_STATS_2_SW2RXDMA_BUF_SOURCE_USED_LSB 28 #define RX_PPDU_END_USER_STATS_2_SW2RXDMA_BUF_SOURCE_USED_MASK 0x10000000 /* Description RX_PPDU_END_USER_STATS_2_RESERVED_2B */ #define RX_PPDU_END_USER_STATS_2_RESERVED_2B_OFFSET 0x00000008 #define RX_PPDU_END_USER_STATS_2_RESERVED_2B_LSB 29 #define RX_PPDU_END_USER_STATS_2_RESERVED_2B_MASK 0xe0000000 /* Description RX_PPDU_END_USER_STATS_3_MPDU_CNT_FCS_OK The number of MPDUs received from this STA in this PPDU with correct FCS */ #define RX_PPDU_END_USER_STATS_3_MPDU_CNT_FCS_OK_OFFSET 0x0000000c #define RX_PPDU_END_USER_STATS_3_MPDU_CNT_FCS_OK_LSB 0 #define RX_PPDU_END_USER_STATS_3_MPDU_CNT_FCS_OK_MASK 0x000001ff /* Description RX_PPDU_END_USER_STATS_3_FRAME_CONTROL_INFO_VALID When set, the frame_control_info field contains valid information */ #define RX_PPDU_END_USER_STATS_3_FRAME_CONTROL_INFO_VALID_OFFSET 0x0000000c #define RX_PPDU_END_USER_STATS_3_FRAME_CONTROL_INFO_VALID_LSB 9 #define RX_PPDU_END_USER_STATS_3_FRAME_CONTROL_INFO_VALID_MASK 0x00000200 /* Description RX_PPDU_END_USER_STATS_3_QOS_CONTROL_INFO_VALID When set, the QoS_control_info field contains valid information */ #define RX_PPDU_END_USER_STATS_3_QOS_CONTROL_INFO_VALID_OFFSET 0x0000000c #define RX_PPDU_END_USER_STATS_3_QOS_CONTROL_INFO_VALID_LSB 10 #define RX_PPDU_END_USER_STATS_3_QOS_CONTROL_INFO_VALID_MASK 0x00000400 /* Description RX_PPDU_END_USER_STATS_3_HT_CONTROL_INFO_VALID When set, the HT_control_info field contains valid information */ #define RX_PPDU_END_USER_STATS_3_HT_CONTROL_INFO_VALID_OFFSET 0x0000000c #define RX_PPDU_END_USER_STATS_3_HT_CONTROL_INFO_VALID_LSB 11 #define RX_PPDU_END_USER_STATS_3_HT_CONTROL_INFO_VALID_MASK 0x00000800 /* Description RX_PPDU_END_USER_STATS_3_DATA_SEQUENCE_CONTROL_INFO_VALID When set, the First_data_seq_ctrl field contains valid information */ #define RX_PPDU_END_USER_STATS_3_DATA_SEQUENCE_CONTROL_INFO_VALID_OFFSET 0x0000000c #define RX_PPDU_END_USER_STATS_3_DATA_SEQUENCE_CONTROL_INFO_VALID_LSB 12 #define RX_PPDU_END_USER_STATS_3_DATA_SEQUENCE_CONTROL_INFO_VALID_MASK 0x00001000 /* Description RX_PPDU_END_USER_STATS_3_RESERVED_3A */ #define RX_PPDU_END_USER_STATS_3_RESERVED_3A_OFFSET 0x0000000c #define RX_PPDU_END_USER_STATS_3_RESERVED_3A_LSB 13 #define RX_PPDU_END_USER_STATS_3_RESERVED_3A_MASK 0x0000e000 /* Description RX_PPDU_END_USER_STATS_3_RXDMA2REO_RING_USED Field filled in by RXDMA Set when at least one frame during this PPDU got pushed to this ring by RXDMA */ #define RX_PPDU_END_USER_STATS_3_RXDMA2REO_RING_USED_OFFSET 0x0000000c #define RX_PPDU_END_USER_STATS_3_RXDMA2REO_RING_USED_LSB 16 #define RX_PPDU_END_USER_STATS_3_RXDMA2REO_RING_USED_MASK 0x00010000 /* Description RX_PPDU_END_USER_STATS_3_RXDMA2FW_RING_USED Field filled in by RXDMA Set when at least one frame during this PPDU got pushed to this ring by RXDMA */ #define RX_PPDU_END_USER_STATS_3_RXDMA2FW_RING_USED_OFFSET 0x0000000c #define RX_PPDU_END_USER_STATS_3_RXDMA2FW_RING_USED_LSB 17 #define RX_PPDU_END_USER_STATS_3_RXDMA2FW_RING_USED_MASK 0x00020000 /* Description RX_PPDU_END_USER_STATS_3_RXDMA2SW_RING_USED Field filled in by RXDMA Set when at least one frame during this PPDU got pushed to this ring by RXDMA */ #define RX_PPDU_END_USER_STATS_3_RXDMA2SW_RING_USED_OFFSET 0x0000000c #define RX_PPDU_END_USER_STATS_3_RXDMA2SW_RING_USED_LSB 18 #define RX_PPDU_END_USER_STATS_3_RXDMA2SW_RING_USED_MASK 0x00040000 /* Description RX_PPDU_END_USER_STATS_3_RXDMA_RELEASE_RING_USED Field filled in by RXDMA Set when at least one frame during this PPDU got pushed to this ring by RXDMA */ #define RX_PPDU_END_USER_STATS_3_RXDMA_RELEASE_RING_USED_OFFSET 0x0000000c #define RX_PPDU_END_USER_STATS_3_RXDMA_RELEASE_RING_USED_LSB 19 #define RX_PPDU_END_USER_STATS_3_RXDMA_RELEASE_RING_USED_MASK 0x00080000 /* Description RX_PPDU_END_USER_STATS_3_HT_CONTROL_FIELD_PKT_TYPE Field only valid when HT_control_info_valid is set. Indicates what the PHY receive type was for receiving this frame. Can help determine if the HT_CONTROL field shall be interpreted as HT/VHT or HE. 802.11a PPDU type 802.11b PPDU type 802.11n Mixed Mode PPDU type 802.11ac PPDU type 802.11ax PPDU type */ #define RX_PPDU_END_USER_STATS_3_HT_CONTROL_FIELD_PKT_TYPE_OFFSET 0x0000000c #define RX_PPDU_END_USER_STATS_3_HT_CONTROL_FIELD_PKT_TYPE_LSB 20 #define RX_PPDU_END_USER_STATS_3_HT_CONTROL_FIELD_PKT_TYPE_MASK 0x00f00000 /* Description RX_PPDU_END_USER_STATS_3_RESERVED_3B */ #define RX_PPDU_END_USER_STATS_3_RESERVED_3B_OFFSET 0x0000000c #define RX_PPDU_END_USER_STATS_3_RESERVED_3B_LSB 24 #define RX_PPDU_END_USER_STATS_3_RESERVED_3B_MASK 0xff000000 /* Description RX_PPDU_END_USER_STATS_4_AST_INDEX This field indicates the index of the AST entry corresponding to this MPDU. It is provided by the GSE module instantiated in RXPCU. A value of 0xFFFF indicates an invalid AST index, meaning that No AST entry was found or NO AST search was performed */ #define RX_PPDU_END_USER_STATS_4_AST_INDEX_OFFSET 0x00000010 #define RX_PPDU_END_USER_STATS_4_AST_INDEX_LSB 0 #define RX_PPDU_END_USER_STATS_4_AST_INDEX_MASK 0x0000ffff /* Description RX_PPDU_END_USER_STATS_4_FRAME_CONTROL_FIELD Field only valid when Frame_control_info_valid is set. Last successfully received Frame_control field of data frame (excluding Data NULL/ QoS Null) for this user Mainly used to track the PM state of the transmitted device NOTE: only data frame info is needed, as control and management frames are already routed to the FW. */ #define RX_PPDU_END_USER_STATS_4_FRAME_CONTROL_FIELD_OFFSET 0x00000010 #define RX_PPDU_END_USER_STATS_4_FRAME_CONTROL_FIELD_LSB 16 #define RX_PPDU_END_USER_STATS_4_FRAME_CONTROL_FIELD_MASK 0xffff0000 /* Description RX_PPDU_END_USER_STATS_5_FIRST_DATA_SEQ_CTRL Field only valid when Data_sequence_control_info_valid is set. Sequence control field of the first data frame (excluding Data NULL or QoS Data null) received for this user with correct FCS NOTE: only data frame info is needed, as control and management frames are already routed to the FW. */ #define RX_PPDU_END_USER_STATS_5_FIRST_DATA_SEQ_CTRL_OFFSET 0x00000014 #define RX_PPDU_END_USER_STATS_5_FIRST_DATA_SEQ_CTRL_LSB 0 #define RX_PPDU_END_USER_STATS_5_FIRST_DATA_SEQ_CTRL_MASK 0x0000ffff /* Description RX_PPDU_END_USER_STATS_5_QOS_CONTROL_FIELD Field only valid when QoS_control_info_valid is set. Last successfully received QoS_control field of data frame (excluding Data NULL/ QoS Null) for this user Note that in case of multi TID, this field can only reflect the last properly received MPDU, and thus can not indicate all potentially different TIDs that had been received earlier. There are however per TID fields, that will contain among other things all buffer status info: See QoSCtrl_15_8_tid??? */ #define RX_PPDU_END_USER_STATS_5_QOS_CONTROL_FIELD_OFFSET 0x00000014 #define RX_PPDU_END_USER_STATS_5_QOS_CONTROL_FIELD_LSB 16 #define RX_PPDU_END_USER_STATS_5_QOS_CONTROL_FIELD_MASK 0xffff0000 /* Description RX_PPDU_END_USER_STATS_6_HT_CONTROL_FIELD Field only valid when HT_control_info_valid is set. Last successfully received HT_CONTROL/VHT_CONTROL/HE_CONTROL field of data frames, excluding Data NULL/ QoS Null, for this user. Data NULL/ QoS Null are excluded here because these frames are always already routed to the FW by RXDMA. See field HT_control_field_pkt_type in case pkt_type influences if this fields interpretation as HT/VHT/HE CONTROL */ #define RX_PPDU_END_USER_STATS_6_HT_CONTROL_FIELD_OFFSET 0x00000018 #define RX_PPDU_END_USER_STATS_6_HT_CONTROL_FIELD_LSB 0 #define RX_PPDU_END_USER_STATS_6_HT_CONTROL_FIELD_MASK 0xffffffff /* Description RX_PPDU_END_USER_STATS_7_FCS_OK_BITMAP_31_0 Bitmap indicates in order of received MPDUs, which MPDUs had an passing FCS or had an error. 1: FCS OK 0: FCS error */ #define RX_PPDU_END_USER_STATS_7_FCS_OK_BITMAP_31_0_OFFSET 0x0000001c #define RX_PPDU_END_USER_STATS_7_FCS_OK_BITMAP_31_0_LSB 0 #define RX_PPDU_END_USER_STATS_7_FCS_OK_BITMAP_31_0_MASK 0xffffffff /* Description RX_PPDU_END_USER_STATS_8_FCS_OK_BITMAP_63_32 Bitmap indicates in order of received MPDUs, which MPDUs had an passing FCS or had an error. 1: FCS OK 0: FCS error NOTE: for users 0, 1, 2 and 3, additional bitmap info (up to 256 bitmap window) is provided in RX_PPDU_END_USER_STATS_EXT TLV */ #define RX_PPDU_END_USER_STATS_8_FCS_OK_BITMAP_63_32_OFFSET 0x00000020 #define RX_PPDU_END_USER_STATS_8_FCS_OK_BITMAP_63_32_LSB 0 #define RX_PPDU_END_USER_STATS_8_FCS_OK_BITMAP_63_32_MASK 0xffffffff /* Description RX_PPDU_END_USER_STATS_9_UDP_MSDU_COUNT Field filled in by RX OLE Set to 0 by RXPCU The number of MSDUs that are part of MPDUs without FCS error, that contain UDP frames. */ #define RX_PPDU_END_USER_STATS_9_UDP_MSDU_COUNT_OFFSET 0x00000024 #define RX_PPDU_END_USER_STATS_9_UDP_MSDU_COUNT_LSB 0 #define RX_PPDU_END_USER_STATS_9_UDP_MSDU_COUNT_MASK 0x0000ffff /* Description RX_PPDU_END_USER_STATS_9_TCP_MSDU_COUNT Field filled in by RX OLE Set to 0 by RXPCU The number of MSDUs that are part of MPDUs without FCS error, that contain TCP frames. (Note: This does NOT include TCP-ACK) */ #define RX_PPDU_END_USER_STATS_9_TCP_MSDU_COUNT_OFFSET 0x00000024 #define RX_PPDU_END_USER_STATS_9_TCP_MSDU_COUNT_LSB 16 #define RX_PPDU_END_USER_STATS_9_TCP_MSDU_COUNT_MASK 0xffff0000 /* Description RX_PPDU_END_USER_STATS_10_OTHER_MSDU_COUNT Field filled in by RX OLE Set to 0 by RXPCU The number of MSDUs that are part of MPDUs without FCS error, that contain neither UDP or TCP frames. Includes Management and control frames. */ #define RX_PPDU_END_USER_STATS_10_OTHER_MSDU_COUNT_OFFSET 0x00000028 #define RX_PPDU_END_USER_STATS_10_OTHER_MSDU_COUNT_LSB 0 #define RX_PPDU_END_USER_STATS_10_OTHER_MSDU_COUNT_MASK 0x0000ffff /* Description RX_PPDU_END_USER_STATS_10_TCP_ACK_MSDU_COUNT Field filled in by RX OLE Set to 0 by RXPCU The number of MSDUs that are part of MPDUs without FCS error, that contain TCP ack frames. */ #define RX_PPDU_END_USER_STATS_10_TCP_ACK_MSDU_COUNT_OFFSET 0x00000028 #define RX_PPDU_END_USER_STATS_10_TCP_ACK_MSDU_COUNT_LSB 16 #define RX_PPDU_END_USER_STATS_10_TCP_ACK_MSDU_COUNT_MASK 0xffff0000 /* Description RX_PPDU_END_USER_STATS_11_SW_RESPONSE_REFERENCE_PTR Pointer that SW uses to refer back to an expected response reception. Used for Rate adaptation purposes. When a reception occurrs that is not tied to an expected response, this field is set to 0x0 */ #define RX_PPDU_END_USER_STATS_11_SW_RESPONSE_REFERENCE_PTR_OFFSET 0x0000002c #define RX_PPDU_END_USER_STATS_11_SW_RESPONSE_REFERENCE_PTR_LSB 0 #define RX_PPDU_END_USER_STATS_11_SW_RESPONSE_REFERENCE_PTR_MASK 0xffffffff /* Description RX_PPDU_END_USER_STATS_12_RECEIVED_QOS_DATA_TID_BITMAP Whenever a QoS Data frame is received, the bit in this field that corresponds to the received TID shall be set. ...Bitmap[0] = TID0 ...Bitmap[1] = TID1 Etc. */ #define RX_PPDU_END_USER_STATS_12_RECEIVED_QOS_DATA_TID_BITMAP_OFFSET 0x00000030 #define RX_PPDU_END_USER_STATS_12_RECEIVED_QOS_DATA_TID_BITMAP_LSB 0 #define RX_PPDU_END_USER_STATS_12_RECEIVED_QOS_DATA_TID_BITMAP_MASK 0x0000ffff /* Description RX_PPDU_END_USER_STATS_12_RECEIVED_QOS_DATA_TID_EOSP_BITMAP Field initialized to 0 For every QoS Data frame that is correctly received, the EOSP bit of that frame is copied over into the corresponding TID related field. Note that this implies that the bits here represent the EOSP bit status for each TID of the last MPDU received for that TID. received TID shall be set. ...eosp_bitmap[0] = eosp of TID0 ...eosp_bitmap[1] = eosp of TID1 Etc. */ #define RX_PPDU_END_USER_STATS_12_RECEIVED_QOS_DATA_TID_EOSP_BITMAP_OFFSET 0x00000030 #define RX_PPDU_END_USER_STATS_12_RECEIVED_QOS_DATA_TID_EOSP_BITMAP_LSB 16 #define RX_PPDU_END_USER_STATS_12_RECEIVED_QOS_DATA_TID_EOSP_BITMAP_MASK 0xffff0000 /* Description RX_PPDU_END_USER_STATS_13_QOSCTRL_15_8_TID0 Field only valid when Received_qos_data_tid_bitmap[0] is set QoS control field bits 15-8 of the last properly received MPDU with TID0 */ #define RX_PPDU_END_USER_STATS_13_QOSCTRL_15_8_TID0_OFFSET 0x00000034 #define RX_PPDU_END_USER_STATS_13_QOSCTRL_15_8_TID0_LSB 0 #define RX_PPDU_END_USER_STATS_13_QOSCTRL_15_8_TID0_MASK 0x000000ff /* Description RX_PPDU_END_USER_STATS_13_QOSCTRL_15_8_TID1 Field only valid when Received_qos_data_tid_bitmap[1] is set QoS control field bits 15-8 of the last properly received MPDU with TID1 */ #define RX_PPDU_END_USER_STATS_13_QOSCTRL_15_8_TID1_OFFSET 0x00000034 #define RX_PPDU_END_USER_STATS_13_QOSCTRL_15_8_TID1_LSB 8 #define RX_PPDU_END_USER_STATS_13_QOSCTRL_15_8_TID1_MASK 0x0000ff00 /* Description RX_PPDU_END_USER_STATS_13_QOSCTRL_15_8_TID2 Field only valid when Received_qos_data_tid_bitmap[2] is set QoS control field bits 15-8 of the last properly received MPDU with TID2 */ #define RX_PPDU_END_USER_STATS_13_QOSCTRL_15_8_TID2_OFFSET 0x00000034 #define RX_PPDU_END_USER_STATS_13_QOSCTRL_15_8_TID2_LSB 16 #define RX_PPDU_END_USER_STATS_13_QOSCTRL_15_8_TID2_MASK 0x00ff0000 /* Description RX_PPDU_END_USER_STATS_13_QOSCTRL_15_8_TID3 Field only valid when Received_qos_data_tid_bitmap[3] is set QoS control field bits 15-8 of the last properly received MPDU with TID3 */ #define RX_PPDU_END_USER_STATS_13_QOSCTRL_15_8_TID3_OFFSET 0x00000034 #define RX_PPDU_END_USER_STATS_13_QOSCTRL_15_8_TID3_LSB 24 #define RX_PPDU_END_USER_STATS_13_QOSCTRL_15_8_TID3_MASK 0xff000000 /* Description RX_PPDU_END_USER_STATS_14_QOSCTRL_15_8_TID4 Field only valid when Received_qos_data_tid_bitmap[4] is set QoS control field bits 15-8 of the last properly received MPDU with TID4 */ #define RX_PPDU_END_USER_STATS_14_QOSCTRL_15_8_TID4_OFFSET 0x00000038 #define RX_PPDU_END_USER_STATS_14_QOSCTRL_15_8_TID4_LSB 0 #define RX_PPDU_END_USER_STATS_14_QOSCTRL_15_8_TID4_MASK 0x000000ff /* Description RX_PPDU_END_USER_STATS_14_QOSCTRL_15_8_TID5 Field only valid when Received_qos_data_tid_bitmap[5] is set QoS control field bits 15-8 of the last properly received MPDU with TID5 */ #define RX_PPDU_END_USER_STATS_14_QOSCTRL_15_8_TID5_OFFSET 0x00000038 #define RX_PPDU_END_USER_STATS_14_QOSCTRL_15_8_TID5_LSB 8 #define RX_PPDU_END_USER_STATS_14_QOSCTRL_15_8_TID5_MASK 0x0000ff00 /* Description RX_PPDU_END_USER_STATS_14_QOSCTRL_15_8_TID6 Field only valid when Received_qos_data_tid_bitmap[6] is set QoS control field bits 15-8 of the last properly received MPDU with TID6 */ #define RX_PPDU_END_USER_STATS_14_QOSCTRL_15_8_TID6_OFFSET 0x00000038 #define RX_PPDU_END_USER_STATS_14_QOSCTRL_15_8_TID6_LSB 16 #define RX_PPDU_END_USER_STATS_14_QOSCTRL_15_8_TID6_MASK 0x00ff0000 /* Description RX_PPDU_END_USER_STATS_14_QOSCTRL_15_8_TID7 Field only valid when Received_qos_data_tid_bitmap[7] is set QoS control field bits 15-8 of the last properly received MPDU with TID7 */ #define RX_PPDU_END_USER_STATS_14_QOSCTRL_15_8_TID7_OFFSET 0x00000038 #define RX_PPDU_END_USER_STATS_14_QOSCTRL_15_8_TID7_LSB 24 #define RX_PPDU_END_USER_STATS_14_QOSCTRL_15_8_TID7_MASK 0xff000000 /* Description RX_PPDU_END_USER_STATS_15_QOSCTRL_15_8_TID8 Field only valid when Received_qos_data_tid_bitmap[8] is set QoS control field bits 15-8 of the last properly received MPDU with TID8 */ #define RX_PPDU_END_USER_STATS_15_QOSCTRL_15_8_TID8_OFFSET 0x0000003c #define RX_PPDU_END_USER_STATS_15_QOSCTRL_15_8_TID8_LSB 0 #define RX_PPDU_END_USER_STATS_15_QOSCTRL_15_8_TID8_MASK 0x000000ff /* Description RX_PPDU_END_USER_STATS_15_QOSCTRL_15_8_TID9 Field only valid when Received_qos_data_tid_bitmap[9] is set QoS control field bits 15-8 of the last properly received MPDU with TID9 */ #define RX_PPDU_END_USER_STATS_15_QOSCTRL_15_8_TID9_OFFSET 0x0000003c #define RX_PPDU_END_USER_STATS_15_QOSCTRL_15_8_TID9_LSB 8 #define RX_PPDU_END_USER_STATS_15_QOSCTRL_15_8_TID9_MASK 0x0000ff00 /* Description RX_PPDU_END_USER_STATS_15_QOSCTRL_15_8_TID10 Field only valid when Received_qos_data_tid_bitmap[10] is set QoS control field bits 15-8 of the last properly received MPDU with TID10 */ #define RX_PPDU_END_USER_STATS_15_QOSCTRL_15_8_TID10_OFFSET 0x0000003c #define RX_PPDU_END_USER_STATS_15_QOSCTRL_15_8_TID10_LSB 16 #define RX_PPDU_END_USER_STATS_15_QOSCTRL_15_8_TID10_MASK 0x00ff0000 /* Description RX_PPDU_END_USER_STATS_15_QOSCTRL_15_8_TID11 Field only valid when Received_qos_data_tid_bitmap[11] is set QoS control field bits 15-8 of the last properly received MPDU with TID11 */ #define RX_PPDU_END_USER_STATS_15_QOSCTRL_15_8_TID11_OFFSET 0x0000003c #define RX_PPDU_END_USER_STATS_15_QOSCTRL_15_8_TID11_LSB 24 #define RX_PPDU_END_USER_STATS_15_QOSCTRL_15_8_TID11_MASK 0xff000000 /* Description RX_PPDU_END_USER_STATS_16_QOSCTRL_15_8_TID12 Field only valid when Received_qos_data_tid_bitmap[12] is set QoS control field bits 15-8 of the last properly received MPDU with TID12 */ #define RX_PPDU_END_USER_STATS_16_QOSCTRL_15_8_TID12_OFFSET 0x00000040 #define RX_PPDU_END_USER_STATS_16_QOSCTRL_15_8_TID12_LSB 0 #define RX_PPDU_END_USER_STATS_16_QOSCTRL_15_8_TID12_MASK 0x000000ff /* Description RX_PPDU_END_USER_STATS_16_QOSCTRL_15_8_TID13 Field only valid when Received_qos_data_tid_bitmap[13] is set QoS control field bits 15-8 of the last properly received MPDU with TID13 */ #define RX_PPDU_END_USER_STATS_16_QOSCTRL_15_8_TID13_OFFSET 0x00000040 #define RX_PPDU_END_USER_STATS_16_QOSCTRL_15_8_TID13_LSB 8 #define RX_PPDU_END_USER_STATS_16_QOSCTRL_15_8_TID13_MASK 0x0000ff00 /* Description RX_PPDU_END_USER_STATS_16_QOSCTRL_15_8_TID14 Field only valid when Received_qos_data_tid_bitmap[14] is set QoS control field bits 15-8 of the last properly received MPDU with TID14 */ #define RX_PPDU_END_USER_STATS_16_QOSCTRL_15_8_TID14_OFFSET 0x00000040 #define RX_PPDU_END_USER_STATS_16_QOSCTRL_15_8_TID14_LSB 16 #define RX_PPDU_END_USER_STATS_16_QOSCTRL_15_8_TID14_MASK 0x00ff0000 /* Description RX_PPDU_END_USER_STATS_16_QOSCTRL_15_8_TID15 Field only valid when Received_qos_data_tid_bitmap[15] is set QoS control field bits 15-8 of the last properly received MPDU with TID15 */ #define RX_PPDU_END_USER_STATS_16_QOSCTRL_15_8_TID15_OFFSET 0x00000040 #define RX_PPDU_END_USER_STATS_16_QOSCTRL_15_8_TID15_LSB 24 #define RX_PPDU_END_USER_STATS_16_QOSCTRL_15_8_TID15_MASK 0xff000000 #endif // _RX_PPDU_END_USER_STATS_H_