| /* |
| * Copyright (c) 2020 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], ofdma_info_valid[20], dl_ofdma_ru_start_index[27:21], reserved_1a[31:28] |
| // 2 dl_ofdma_ru_width[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], ht_control_info_null_valid[13], reserved_3a[15:14], 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] |
| // 17 mpdu_ok_byte_count[24:0], ampdu_delim_ok_count_6_0[31:25] |
| // 18 ampdu_delim_err_count[24:0], ampdu_delim_ok_count_13_7[31:25] |
| // 19 mpdu_err_byte_count[24:0], ampdu_delim_ok_count_20_14[31:25] |
| // 20 non_consecutive_delimiter_err[15:0], reserved_20a[31:16] |
| // 21 ht_control_null_field[31:0] |
| // 22 sw_response_reference_ptr_ext[31:0] |
| // |
| // ################ END SUMMARY ################# |
| |
| #define NUM_OF_DWORDS_RX_PPDU_END_USER_STATS 23 |
| |
| 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] |
| ofdma_info_valid : 1, //[20] |
| dl_ofdma_ru_start_index : 7, //[27:21] |
| reserved_1a : 4; //[31:28] |
| uint32_t dl_ofdma_ru_width : 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] |
| ht_control_info_null_valid : 1, //[13] |
| reserved_3a : 2, //[15:14] |
| 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] |
| uint32_t mpdu_ok_byte_count : 25, //[24:0] |
| ampdu_delim_ok_count_6_0 : 7; //[31:25] |
| uint32_t ampdu_delim_err_count : 25, //[24:0] |
| ampdu_delim_ok_count_13_7 : 7; //[31:25] |
| uint32_t mpdu_err_byte_count : 25, //[24:0] |
| ampdu_delim_ok_count_20_14 : 7; //[31:25] |
| uint32_t non_consecutive_delimiter_err : 16, //[15:0] |
| reserved_20a : 16; //[31:16] |
| uint32_t ht_control_null_field : 32; //[31:0] |
| uint32_t sw_response_reference_ptr_ext : 32; //[31:0] |
| }; |
| |
| /* |
| |
| 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. |
| |
| |
| |
| <legal all> |
| |
| mcs |
| |
| MCS of the received frame |
| |
| |
| |
| For details, refer to MCS_TYPE description |
| |
| Note: This is rate in case of 11a/11b |
| |
| |
| |
| <legal all> |
| |
| nss |
| |
| Number of spatial streams. |
| |
| |
| |
| NOTE: RXPCU derives this from the 'Mimo_ss_bitmap' |
| |
| |
| |
| <enum 0 1_spatial_stream>Single spatial stream |
| |
| <enum 1 2_spatial_streams>2 spatial streams |
| |
| <enum 2 3_spatial_streams>3 spatial streams |
| |
| <enum 3 4_spatial_streams>4 spatial streams |
| |
| <enum 4 5_spatial_streams>5 spatial streams |
| |
| <enum 5 6_spatial_streams>6 spatial streams |
| |
| <enum 6 7_spatial_streams>7 spatial streams |
| |
| <enum 7 8_spatial_streams>8 spatial streams |
| |
| ofdma_info_valid |
| |
| When set, ofdma RU related info in the following fields |
| is valid |
| |
| <legal all> |
| |
| dl_ofdma_ru_start_index |
| |
| Field only valid when Ofdma_info_valid is set |
| |
| |
| |
| RU index number to which User is assigned |
| |
| RU numbering is over the entire BW, starting from 0 |
| |
| <legal 0-73> |
| |
| reserved_1a |
| |
| <legal 0> |
| |
| dl_ofdma_ru_width |
| |
| The size of the RU for this user. |
| |
| In units of 1 (26 tone) RU |
| |
| <legal 1-74> |
| |
| reserved_2a |
| |
| <legal 0> |
| |
| user_receive_quality |
| |
| DO NOT USE |
| |
| |
| |
| Field not populated by MAC HW |
| |
| <legal all> |
| |
| mpdu_cnt_fcs_err |
| |
| The number of MPDUs received from this STA in this PPDU |
| with FCS errors |
| |
| <legal all> |
| |
| 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 |
| |
| <legal 0> |
| |
| mpdu_cnt_fcs_ok |
| |
| The number of MPDUs received from this STA in this PPDU |
| with correct FCS |
| |
| <legal all> |
| |
| frame_control_info_valid |
| |
| When set, the frame_control_info field contains valid |
| information |
| |
| <legal all> |
| |
| qos_control_info_valid |
| |
| When set, the QoS_control_info field contains valid |
| information |
| |
| <legal all> |
| |
| ht_control_info_valid |
| |
| When set, the HT_control_field contains valid |
| information |
| |
| <legal all> |
| |
| data_sequence_control_info_valid |
| |
| When set, the First_data_seq_ctrl field contains valid |
| information |
| |
| <legal all> |
| |
| ht_control_info_null_valid |
| |
| When set, the HT_control_NULL_field contains valid |
| information |
| |
| <legal all> |
| |
| reserved_3a |
| |
| <legal 0> |
| |
| 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 or |
| HT_control_info_NULL_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. |
| |
| |
| |
| NOTE: later on in the 11ax IEEE spec a bit within the HT |
| control field was introduced that explicitly indicated how |
| to interpret the HT control field.... As HT, VHT, or HE. |
| |
| |
| |
| <enum 0 dot11a>802.11a PPDU type |
| |
| <enum 1 dot11b>802.11b PPDU type |
| |
| <enum 2 dot11n_mm>802.11n Mixed Mode PPDU type |
| |
| <enum 3 dot11ac>802.11ac PPDU type |
| |
| <enum 4 dot11ax>802.11ax PPDU type |
| |
| <enum 5 dot11ba>802.11ba (WUR) PPDU type |
| |
| reserved_3b |
| |
| <legal 0> |
| |
| 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 |
| |
| <legal all> |
| |
| 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. |
| |
| <legal all> |
| |
| 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. |
| |
| <legal all> |
| |
| 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??? |
| |
| <legal all> |
| |
| 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 QoS Null frames for this user. |
| |
| |
| |
| NOTE: HT control fields from QoS Null frames are |
| captured in field HT_control_NULL_field |
| |
| <legal all> |
| |
| 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 |
| |
| <legal all> |
| |
| 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 |
| |
| <legal all> |
| |
| 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. |
| |
| <legal all> |
| |
| 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) |
| |
| <legal all> |
| |
| 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. |
| |
| |
| |
| <legal all> |
| |
| 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. |
| |
| <legal all> |
| |
| sw_response_reference_ptr |
| |
| Pointer that SW uses to refer back to an expected |
| response reception. Used for Rate adaptation purposes. |
| |
| When a reception occurs that is not tied to an expected |
| response, this field is set to 0x0. |
| |
| |
| |
| Note: further on in this TLV there is also the field: |
| Sw_response_reference_ptr_ext. |
| |
| <legal all> |
| |
| received_qos_data_tid_bitmap |
| |
| Whenever a frame is received that contains a QoS control |
| field (that includes QoS Data and/or QoS Null), the bit in |
| this field that corresponds to the received TID shall be |
| set. |
| |
| ...Bitmap[0] = TID0 |
| |
| ...Bitmap[1] = TID1 |
| |
| Etc. |
| |
| <legal all> |
| |
| 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. |
| |
| <legal all> |
| |
| 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 a QoS control field embedded, with TID |
| == 0 |
| |
| 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 a QoS control field embedded, with TID |
| == 1 |
| |
| 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 a QoS control field embedded, with TID |
| == 2 |
| |
| 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 a QoS control field embedded, with TID |
| == 3 |
| |
| 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 a QoS control field embedded, with TID |
| == 4 |
| |
| 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 a QoS control field embedded, with TID |
| == 5 |
| |
| 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 a QoS control field embedded, with TID |
| == 6 |
| |
| 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 a QoS control field embedded, with TID |
| == 7 |
| |
| 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 a QoS control field embedded, with TID |
| == 8 |
| |
| 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 a QoS control field embedded, with TID |
| == 9 |
| |
| 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 a QoS control field embedded, with TID |
| == 10 |
| |
| 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 a QoS control field embedded, with TID |
| == 11 |
| |
| 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 a QoS control field embedded, with TID |
| == 12 |
| |
| 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 a QoS control field embedded, with TID |
| == 13 |
| |
| 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 a QoS control field embedded, with TID |
| == 14 |
| |
| 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 a QoS control field embedded, with TID |
| == 15 |
| |
| mpdu_ok_byte_count |
| |
| The number of bytes received within an MPDU for this |
| user with correct FCS. This includes the FCS field |
| |
| |
| |
| NOTE: |
| |
| The sum of the four fields..... |
| |
| Mpdu_ok_byte_count + |
| |
| mpdu_err_byte_count + |
| |
| |
| .....is the total number of bytes that were received for |
| this user from the PHY. |
| |
| |
| |
| <legal all> |
| |
| ampdu_delim_ok_count_6_0 |
| |
| Number of AMPDU delimiter received with correct |
| structure |
| |
| LSB 7 bits from this counter |
| |
| |
| |
| Note that this is a delimiter count and not byte count. |
| To get to the number of bytes occupied by these delimiters, |
| multiply this number by 4 |
| |
| |
| |
| <legal all> |
| |
| ampdu_delim_err_count |
| |
| The number of MPDU delimiter errors counted for this |
| user. |
| |
| |
| |
| Note that this is a delimiter count and not byte count. |
| To get to the number of bytes occupied by these delimiters, |
| multiply this number by 4 |
| |
| <legal all> |
| |
| ampdu_delim_ok_count_13_7 |
| |
| Number of AMPDU delimiters received with correct |
| structure |
| |
| Bits 13-7 from this counter |
| |
| |
| |
| Note that this is a delimiter count and not byte count. |
| To get to the number of bytes occupied by these delimiters, |
| multiply this number by 4 |
| |
| <legal all> |
| |
| mpdu_err_byte_count |
| |
| The number of bytes belonging to MPDUs with an FCS |
| error. This includes the FCS field. |
| |
| |
| |
| <legal all> |
| |
| ampdu_delim_ok_count_20_14 |
| |
| Number of AMPDU delimiters received with correct |
| structure |
| |
| Bits 20-14 from this counter |
| |
| |
| |
| Note that this is a delimiter count and not byte count. |
| To get to the number of bytes occupied by these delimiters, |
| multiply this number by 4 |
| |
| |
| |
| <legal all> |
| |
| non_consecutive_delimiter_err |
| |
| The number of times an MPDU delimiter error is detected |
| that is not immediately preceded by another MPDU delimiter |
| also with FCS error. |
| |
| |
| |
| The counter saturates at 0xFFFF |
| |
| |
| |
| <legal all> |
| |
| reserved_20a |
| |
| <legal 0> |
| |
| ht_control_null_field |
| |
| |
| |
| |
| Last successfully received |
| HT_CONTROL/VHT_CONTROL/HE_CONTROL field from QoS Null frame |
| for this user. |
| |
| <legal all> |
| |
| sw_response_reference_ptr_ext |
| |
| Extended Pointer info that SW uses to refer back to an |
| expected response transmission. Used for Rate adaptation |
| purposes. |
| |
| When a reception occurs that is not tied to an expected |
| response, this field is set to 0x0. |
| |
| |
| |
| Note: earlier on in this TLV there is also the field: |
| Sw_response_reference_ptr. |
| |
| <legal all> |
| */ |
| |
| |
| /* EXTERNAL REFERENCE : struct rx_rxpcu_classification_overview rxpcu_classification_details */ |
| |
| |
| /* Description RX_PPDU_END_USER_STATS_0_RXPCU_CLASSIFICATION_DETAILS_FILTER_PASS_MPDUS |
| |
| When set, at least one Filter Pass MPDU has been |
| received. FCS might or might not have been passing. |
| |
| |
| |
| For MU UL, in TLVs RX_PPDU_END and |
| RX_PPDU_END_STATUS_DONE, this field is the OR of all the |
| users. |
| |
| <legal all> |
| */ |
| #define RX_PPDU_END_USER_STATS_0_RXPCU_CLASSIFICATION_DETAILS_FILTER_PASS_MPDUS_OFFSET 0x00000000 |
| #define RX_PPDU_END_USER_STATS_0_RXPCU_CLASSIFICATION_DETAILS_FILTER_PASS_MPDUS_LSB 0 |
| #define RX_PPDU_END_USER_STATS_0_RXPCU_CLASSIFICATION_DETAILS_FILTER_PASS_MPDUS_MASK 0x00000001 |
| |
| /* Description RX_PPDU_END_USER_STATS_0_RXPCU_CLASSIFICATION_DETAILS_FILTER_PASS_MPDUS_FCS_OK |
| |
| When set, at least one Filter Pass MPDU has been |
| received that has a correct FCS. |
| |
| |
| |
| For MU UL, in TLVs RX_PPDU_END and |
| RX_PPDU_END_STATUS_DONE, this field is the OR of all the |
| users. |
| |
| |
| |
| <legal all> |
| */ |
| #define RX_PPDU_END_USER_STATS_0_RXPCU_CLASSIFICATION_DETAILS_FILTER_PASS_MPDUS_FCS_OK_OFFSET 0x00000000 |
| #define RX_PPDU_END_USER_STATS_0_RXPCU_CLASSIFICATION_DETAILS_FILTER_PASS_MPDUS_FCS_OK_LSB 1 |
| #define RX_PPDU_END_USER_STATS_0_RXPCU_CLASSIFICATION_DETAILS_FILTER_PASS_MPDUS_FCS_OK_MASK 0x00000002 |
| |
| /* Description RX_PPDU_END_USER_STATS_0_RXPCU_CLASSIFICATION_DETAILS_MONITOR_DIRECT_MPDUS |
| |
| When set, at least one Monitor Direct MPDU has been |
| received. FCS might or might not have been passing |
| |
| |
| |
| For MU UL, in TLVs RX_PPDU_END and |
| RX_PPDU_END_STATUS_DONE, this field is the OR of all the |
| users. |
| |
| <legal all> |
| */ |
| #define RX_PPDU_END_USER_STATS_0_RXPCU_CLASSIFICATION_DETAILS_MONITOR_DIRECT_MPDUS_OFFSET 0x00000000 |
| #define RX_PPDU_END_USER_STATS_0_RXPCU_CLASSIFICATION_DETAILS_MONITOR_DIRECT_MPDUS_LSB 2 |
| #define RX_PPDU_END_USER_STATS_0_RXPCU_CLASSIFICATION_DETAILS_MONITOR_DIRECT_MPDUS_MASK 0x00000004 |
| |
| /* Description RX_PPDU_END_USER_STATS_0_RXPCU_CLASSIFICATION_DETAILS_MONITOR_DIRECT_MPDUS_FCS_OK |
| |
| When set, at least one Monitor Direct MPDU has been |
| received that has a correct FCS. |
| |
| |
| |
| For MU UL, in TLVs RX_PPDU_END and |
| RX_PPDU_END_STATUS_DONE, this field is the OR of all the |
| users. |
| |
| |
| |
| <legal all> |
| */ |
| #define RX_PPDU_END_USER_STATS_0_RXPCU_CLASSIFICATION_DETAILS_MONITOR_DIRECT_MPDUS_FCS_OK_OFFSET 0x00000000 |
| #define RX_PPDU_END_USER_STATS_0_RXPCU_CLASSIFICATION_DETAILS_MONITOR_DIRECT_MPDUS_FCS_OK_LSB 3 |
| #define RX_PPDU_END_USER_STATS_0_RXPCU_CLASSIFICATION_DETAILS_MONITOR_DIRECT_MPDUS_FCS_OK_MASK 0x00000008 |
| |
| /* Description RX_PPDU_END_USER_STATS_0_RXPCU_CLASSIFICATION_DETAILS_MONITOR_OTHER_MPDUS |
| |
| When set, at least one Monitor Direct MPDU has been |
| received. FCS might or might not have been passing. |
| |
| |
| |
| For MU UL, in TLVs RX_PPDU_END and |
| RX_PPDU_END_STATUS_DONE, this field is the OR of all the |
| users. |
| |
| <legal all> |
| */ |
| #define RX_PPDU_END_USER_STATS_0_RXPCU_CLASSIFICATION_DETAILS_MONITOR_OTHER_MPDUS_OFFSET 0x00000000 |
| #define RX_PPDU_END_USER_STATS_0_RXPCU_CLASSIFICATION_DETAILS_MONITOR_OTHER_MPDUS_LSB 4 |
| #define RX_PPDU_END_USER_STATS_0_RXPCU_CLASSIFICATION_DETAILS_MONITOR_OTHER_MPDUS_MASK 0x00000010 |
| |
| /* Description RX_PPDU_END_USER_STATS_0_RXPCU_CLASSIFICATION_DETAILS_MONITOR_OTHER_MPDUS_FCS_OK |
| |
| When set, at least one Monitor Direct MPDU has been |
| received that has a correct FCS. |
| |
| |
| |
| For MU UL, in TLVs RX_PPDU_END and |
| RX_PPDU_END_STATUS_DONE, this field is the OR of all the |
| users. |
| |
| <legal all> |
| */ |
| #define RX_PPDU_END_USER_STATS_0_RXPCU_CLASSIFICATION_DETAILS_MONITOR_OTHER_MPDUS_FCS_OK_OFFSET 0x00000000 |
| #define RX_PPDU_END_USER_STATS_0_RXPCU_CLASSIFICATION_DETAILS_MONITOR_OTHER_MPDUS_FCS_OK_LSB 5 |
| #define RX_PPDU_END_USER_STATS_0_RXPCU_CLASSIFICATION_DETAILS_MONITOR_OTHER_MPDUS_FCS_OK_MASK 0x00000020 |
| |
| /* Description RX_PPDU_END_USER_STATS_0_RXPCU_CLASSIFICATION_DETAILS_PHYRX_ABORT_RECEIVED |
| |
| When set, PPDU reception was aborted by the PHY |
| |
| <legal all> |
| */ |
| #define RX_PPDU_END_USER_STATS_0_RXPCU_CLASSIFICATION_DETAILS_PHYRX_ABORT_RECEIVED_OFFSET 0x00000000 |
| #define RX_PPDU_END_USER_STATS_0_RXPCU_CLASSIFICATION_DETAILS_PHYRX_ABORT_RECEIVED_LSB 6 |
| #define RX_PPDU_END_USER_STATS_0_RXPCU_CLASSIFICATION_DETAILS_PHYRX_ABORT_RECEIVED_MASK 0x00000040 |
| |
| /* Description RX_PPDU_END_USER_STATS_0_RXPCU_CLASSIFICATION_DETAILS_RESERVED_0 |
| |
| <legal 0> |
| */ |
| #define RX_PPDU_END_USER_STATS_0_RXPCU_CLASSIFICATION_DETAILS_RESERVED_0_OFFSET 0x00000000 |
| #define RX_PPDU_END_USER_STATS_0_RXPCU_CLASSIFICATION_DETAILS_RESERVED_0_LSB 7 |
| #define RX_PPDU_END_USER_STATS_0_RXPCU_CLASSIFICATION_DETAILS_RESERVED_0_MASK 0x0000ff80 |
| |
| /* Description RX_PPDU_END_USER_STATS_0_RXPCU_CLASSIFICATION_DETAILS_PHY_PPDU_ID |
| |
| A ppdu counter value that PHY increments for every PPDU |
| received. The counter value wraps around |
| |
| <legal all> |
| */ |
| #define RX_PPDU_END_USER_STATS_0_RXPCU_CLASSIFICATION_DETAILS_PHY_PPDU_ID_OFFSET 0x00000000 |
| #define RX_PPDU_END_USER_STATS_0_RXPCU_CLASSIFICATION_DETAILS_PHY_PPDU_ID_LSB 16 |
| #define RX_PPDU_END_USER_STATS_0_RXPCU_CLASSIFICATION_DETAILS_PHY_PPDU_ID_MASK 0xffff0000 |
| |
| /* Description RX_PPDU_END_USER_STATS_1_STA_FULL_AID |
| |
| Consumer: FW |
| |
| Producer: RXPCU |
| |
| |
| |
| The full AID of this station. |
| |
| |
| |
| <legal all> |
| */ |
| #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 |
| |
| Note: This is rate in case of 11a/11b |
| |
| |
| |
| <legal all> |
| */ |
| #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. |
| |
| |
| |
| NOTE: RXPCU derives this from the 'Mimo_ss_bitmap' |
| |
| |
| |
| <enum 0 1_spatial_stream>Single spatial stream |
| |
| <enum 1 2_spatial_streams>2 spatial streams |
| |
| <enum 2 3_spatial_streams>3 spatial streams |
| |
| <enum 3 4_spatial_streams>4 spatial streams |
| |
| <enum 4 5_spatial_streams>5 spatial streams |
| |
| <enum 5 6_spatial_streams>6 spatial streams |
| |
| <enum 6 7_spatial_streams>7 spatial streams |
| |
| <enum 7 8_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_OFDMA_INFO_VALID |
| |
| When set, ofdma RU related info in the following fields |
| is valid |
| |
| <legal all> |
| */ |
| #define RX_PPDU_END_USER_STATS_1_OFDMA_INFO_VALID_OFFSET 0x00000004 |
| #define RX_PPDU_END_USER_STATS_1_OFDMA_INFO_VALID_LSB 20 |
| #define RX_PPDU_END_USER_STATS_1_OFDMA_INFO_VALID_MASK 0x00100000 |
| |
| /* Description RX_PPDU_END_USER_STATS_1_DL_OFDMA_RU_START_INDEX |
| |
| Field only valid when Ofdma_info_valid is set |
| |
| |
| |
| RU index number to which User is assigned |
| |
| RU numbering is over the entire BW, starting from 0 |
| |
| <legal 0-73> |
| */ |
| #define RX_PPDU_END_USER_STATS_1_DL_OFDMA_RU_START_INDEX_OFFSET 0x00000004 |
| #define RX_PPDU_END_USER_STATS_1_DL_OFDMA_RU_START_INDEX_LSB 21 |
| #define RX_PPDU_END_USER_STATS_1_DL_OFDMA_RU_START_INDEX_MASK 0x0fe00000 |
| |
| /* Description RX_PPDU_END_USER_STATS_1_RESERVED_1A |
| |
| <legal 0> |
| */ |
| #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_DL_OFDMA_RU_WIDTH |
| |
| The size of the RU for this user. |
| |
| In units of 1 (26 tone) RU |
| |
| <legal 1-74> |
| */ |
| #define RX_PPDU_END_USER_STATS_2_DL_OFDMA_RU_WIDTH_OFFSET 0x00000008 |
| #define RX_PPDU_END_USER_STATS_2_DL_OFDMA_RU_WIDTH_LSB 0 |
| #define RX_PPDU_END_USER_STATS_2_DL_OFDMA_RU_WIDTH_MASK 0x0000007f |
| |
| /* Description RX_PPDU_END_USER_STATS_2_RESERVED_2A |
| |
| <legal 0> |
| */ |
| #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 |
| |
| DO NOT USE |
| |
| |
| |
| Field not populated by MAC HW |
| |
| <legal all> |
| */ |
| #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 |
| |
| <legal all> |
| */ |
| #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 |
| |
| <legal 0> |
| */ |
| #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 |
| |
| <legal all> |
| */ |
| #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 |
| |
| <legal all> |
| */ |
| #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 |
| |
| <legal all> |
| */ |
| #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_field contains valid |
| information |
| |
| <legal all> |
| */ |
| #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 |
| |
| <legal all> |
| */ |
| #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_HT_CONTROL_INFO_NULL_VALID |
| |
| When set, the HT_control_NULL_field contains valid |
| information |
| |
| <legal all> |
| */ |
| #define RX_PPDU_END_USER_STATS_3_HT_CONTROL_INFO_NULL_VALID_OFFSET 0x0000000c |
| #define RX_PPDU_END_USER_STATS_3_HT_CONTROL_INFO_NULL_VALID_LSB 13 |
| #define RX_PPDU_END_USER_STATS_3_HT_CONTROL_INFO_NULL_VALID_MASK 0x00002000 |
| |
| /* Description RX_PPDU_END_USER_STATS_3_RESERVED_3A |
| |
| <legal 0> |
| */ |
| #define RX_PPDU_END_USER_STATS_3_RESERVED_3A_OFFSET 0x0000000c |
| #define RX_PPDU_END_USER_STATS_3_RESERVED_3A_LSB 14 |
| #define RX_PPDU_END_USER_STATS_3_RESERVED_3A_MASK 0x0000c000 |
| |
| /* 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 or |
| HT_control_info_NULL_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. |
| |
| |
| |
| NOTE: later on in the 11ax IEEE spec a bit within the HT |
| control field was introduced that explicitly indicated how |
| to interpret the HT control field.... As HT, VHT, or HE. |
| |
| |
| |
| <enum 0 dot11a>802.11a PPDU type |
| |
| <enum 1 dot11b>802.11b PPDU type |
| |
| <enum 2 dot11n_mm>802.11n Mixed Mode PPDU type |
| |
| <enum 3 dot11ac>802.11ac PPDU type |
| |
| <enum 4 dot11ax>802.11ax PPDU type |
| |
| <enum 5 dot11ba>802.11ba (WUR) 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 |
| |
| <legal 0> |
| */ |
| #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 |
| |
| <legal all> |
| */ |
| #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. |
| |
| <legal all> |
| */ |
| #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. |
| |
| <legal all> |
| */ |
| #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??? |
| |
| <legal all> |
| */ |
| #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 QoS Null frames for this user. |
| |
| |
| |
| NOTE: HT control fields from QoS Null frames are |
| captured in field HT_control_NULL_field |
| |
| <legal all> |
| */ |
| #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 |
| |
| <legal all> |
| */ |
| #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 |
| |
| <legal all> |
| */ |
| #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. |
| |
| <legal all> |
| */ |
| #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) |
| |
| <legal all> |
| */ |
| #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. |
| |
| |
| |
| <legal all> |
| */ |
| #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. |
| |
| <legal all> |
| */ |
| #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 occurs that is not tied to an expected |
| response, this field is set to 0x0. |
| |
| |
| |
| Note: further on in this TLV there is also the field: |
| Sw_response_reference_ptr_ext. |
| |
| <legal all> |
| */ |
| #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 frame is received that contains a QoS control |
| field (that includes QoS Data and/or QoS Null), the bit in |
| this field that corresponds to the received TID shall be |
| set. |
| |
| ...Bitmap[0] = TID0 |
| |
| ...Bitmap[1] = TID1 |
| |
| Etc. |
| |
| <legal all> |
| */ |
| #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. |
| |
| <legal all> |
| */ |
| #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 a QoS control field embedded, with TID |
| == 0 |
| */ |
| #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 a QoS control field embedded, with TID |
| == 1 |
| */ |
| #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 a QoS control field embedded, with TID |
| == 2 |
| */ |
| #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 a QoS control field embedded, with TID |
| == 3 |
| */ |
| #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 a QoS control field embedded, with TID |
| == 4 |
| */ |
| #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 a QoS control field embedded, with TID |
| == 5 |
| */ |
| #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 a QoS control field embedded, with TID |
| == 6 |
| */ |
| #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 a QoS control field embedded, with TID |
| == 7 |
| */ |
| #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 a QoS control field embedded, with TID |
| == 8 |
| */ |
| #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 a QoS control field embedded, with TID |
| == 9 |
| */ |
| #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 a QoS control field embedded, with TID |
| == 10 |
| */ |
| #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 a QoS control field embedded, with TID |
| == 11 |
| */ |
| #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 a QoS control field embedded, with TID |
| == 12 |
| */ |
| #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 a QoS control field embedded, with TID |
| == 13 |
| */ |
| #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 a QoS control field embedded, with TID |
| == 14 |
| */ |
| #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 a QoS control field embedded, with TID |
| == 15 |
| */ |
| #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 |
| |
| /* Description RX_PPDU_END_USER_STATS_17_MPDU_OK_BYTE_COUNT |
| |
| The number of bytes received within an MPDU for this |
| user with correct FCS. This includes the FCS field |
| |
| |
| |
| NOTE: |
| |
| The sum of the four fields..... |
| |
| Mpdu_ok_byte_count + |
| |
| mpdu_err_byte_count + |
| |
| |
| .....is the total number of bytes that were received for |
| this user from the PHY. |
| |
| |
| |
| <legal all> |
| */ |
| #define RX_PPDU_END_USER_STATS_17_MPDU_OK_BYTE_COUNT_OFFSET 0x00000044 |
| #define RX_PPDU_END_USER_STATS_17_MPDU_OK_BYTE_COUNT_LSB 0 |
| #define RX_PPDU_END_USER_STATS_17_MPDU_OK_BYTE_COUNT_MASK 0x01ffffff |
| |
| /* Description RX_PPDU_END_USER_STATS_17_AMPDU_DELIM_OK_COUNT_6_0 |
| |
| Number of AMPDU delimiter received with correct |
| structure |
| |
| LSB 7 bits from this counter |
| |
| |
| |
| Note that this is a delimiter count and not byte count. |
| To get to the number of bytes occupied by these delimiters, |
| multiply this number by 4 |
| |
| |
| |
| <legal all> |
| */ |
| #define RX_PPDU_END_USER_STATS_17_AMPDU_DELIM_OK_COUNT_6_0_OFFSET 0x00000044 |
| #define RX_PPDU_END_USER_STATS_17_AMPDU_DELIM_OK_COUNT_6_0_LSB 25 |
| #define RX_PPDU_END_USER_STATS_17_AMPDU_DELIM_OK_COUNT_6_0_MASK 0xfe000000 |
| |
| /* Description RX_PPDU_END_USER_STATS_18_AMPDU_DELIM_ERR_COUNT |
| |
| The number of MPDU delimiter errors counted for this |
| user. |
| |
| |
| |
| Note that this is a delimiter count and not byte count. |
| To get to the number of bytes occupied by these delimiters, |
| multiply this number by 4 |
| |
| <legal all> |
| */ |
| #define RX_PPDU_END_USER_STATS_18_AMPDU_DELIM_ERR_COUNT_OFFSET 0x00000048 |
| #define RX_PPDU_END_USER_STATS_18_AMPDU_DELIM_ERR_COUNT_LSB 0 |
| #define RX_PPDU_END_USER_STATS_18_AMPDU_DELIM_ERR_COUNT_MASK 0x01ffffff |
| |
| /* Description RX_PPDU_END_USER_STATS_18_AMPDU_DELIM_OK_COUNT_13_7 |
| |
| Number of AMPDU delimiters received with correct |
| structure |
| |
| Bits 13-7 from this counter |
| |
| |
| |
| Note that this is a delimiter count and not byte count. |
| To get to the number of bytes occupied by these delimiters, |
| multiply this number by 4 |
| |
| <legal all> |
| */ |
| #define RX_PPDU_END_USER_STATS_18_AMPDU_DELIM_OK_COUNT_13_7_OFFSET 0x00000048 |
| #define RX_PPDU_END_USER_STATS_18_AMPDU_DELIM_OK_COUNT_13_7_LSB 25 |
| #define RX_PPDU_END_USER_STATS_18_AMPDU_DELIM_OK_COUNT_13_7_MASK 0xfe000000 |
| |
| /* Description RX_PPDU_END_USER_STATS_19_MPDU_ERR_BYTE_COUNT |
| |
| The number of bytes belonging to MPDUs with an FCS |
| error. This includes the FCS field. |
| |
| |
| |
| <legal all> |
| */ |
| #define RX_PPDU_END_USER_STATS_19_MPDU_ERR_BYTE_COUNT_OFFSET 0x0000004c |
| #define RX_PPDU_END_USER_STATS_19_MPDU_ERR_BYTE_COUNT_LSB 0 |
| #define RX_PPDU_END_USER_STATS_19_MPDU_ERR_BYTE_COUNT_MASK 0x01ffffff |
| |
| /* Description RX_PPDU_END_USER_STATS_19_AMPDU_DELIM_OK_COUNT_20_14 |
| |
| Number of AMPDU delimiters received with correct |
| structure |
| |
| Bits 20-14 from this counter |
| |
| |
| |
| Note that this is a delimiter count and not byte count. |
| To get to the number of bytes occupied by these delimiters, |
| multiply this number by 4 |
| |
| |
| |
| <legal all> |
| */ |
| #define RX_PPDU_END_USER_STATS_19_AMPDU_DELIM_OK_COUNT_20_14_OFFSET 0x0000004c |
| #define RX_PPDU_END_USER_STATS_19_AMPDU_DELIM_OK_COUNT_20_14_LSB 25 |
| #define RX_PPDU_END_USER_STATS_19_AMPDU_DELIM_OK_COUNT_20_14_MASK 0xfe000000 |
| |
| /* Description RX_PPDU_END_USER_STATS_20_NON_CONSECUTIVE_DELIMITER_ERR |
| |
| The number of times an MPDU delimiter error is detected |
| that is not immediately preceded by another MPDU delimiter |
| also with FCS error. |
| |
| |
| |
| The counter saturates at 0xFFFF |
| |
| |
| |
| <legal all> |
| */ |
| #define RX_PPDU_END_USER_STATS_20_NON_CONSECUTIVE_DELIMITER_ERR_OFFSET 0x00000050 |
| #define RX_PPDU_END_USER_STATS_20_NON_CONSECUTIVE_DELIMITER_ERR_LSB 0 |
| #define RX_PPDU_END_USER_STATS_20_NON_CONSECUTIVE_DELIMITER_ERR_MASK 0x0000ffff |
| |
| /* Description RX_PPDU_END_USER_STATS_20_RESERVED_20A |
| |
| <legal 0> |
| */ |
| #define RX_PPDU_END_USER_STATS_20_RESERVED_20A_OFFSET 0x00000050 |
| #define RX_PPDU_END_USER_STATS_20_RESERVED_20A_LSB 16 |
| #define RX_PPDU_END_USER_STATS_20_RESERVED_20A_MASK 0xffff0000 |
| |
| /* Description RX_PPDU_END_USER_STATS_21_HT_CONTROL_NULL_FIELD |
| |
| |
| |
| |
| Last successfully received |
| HT_CONTROL/VHT_CONTROL/HE_CONTROL field from QoS Null frame |
| for this user. |
| |
| <legal all> |
| */ |
| #define RX_PPDU_END_USER_STATS_21_HT_CONTROL_NULL_FIELD_OFFSET 0x00000054 |
| #define RX_PPDU_END_USER_STATS_21_HT_CONTROL_NULL_FIELD_LSB 0 |
| #define RX_PPDU_END_USER_STATS_21_HT_CONTROL_NULL_FIELD_MASK 0xffffffff |
| |
| /* Description RX_PPDU_END_USER_STATS_22_SW_RESPONSE_REFERENCE_PTR_EXT |
| |
| Extended Pointer info that SW uses to refer back to an |
| expected response transmission. Used for Rate adaptation |
| purposes. |
| |
| When a reception occurs that is not tied to an expected |
| response, this field is set to 0x0. |
| |
| |
| |
| Note: earlier on in this TLV there is also the field: |
| Sw_response_reference_ptr. |
| |
| <legal all> |
| */ |
| #define RX_PPDU_END_USER_STATS_22_SW_RESPONSE_REFERENCE_PTR_EXT_OFFSET 0x00000058 |
| #define RX_PPDU_END_USER_STATS_22_SW_RESPONSE_REFERENCE_PTR_EXT_LSB 0 |
| #define RX_PPDU_END_USER_STATS_22_SW_RESPONSE_REFERENCE_PTR_EXT_MASK 0xffffffff |
| |
| |
| #endif // _RX_PPDU_END_USER_STATS_H_ |