Loading fw/htt.h +3 −0 Original line number Diff line number Diff line Loading @@ -654,6 +654,9 @@ typedef enum { HTT_STATS_SOC_TXRX_STATS_COMMON_TAG = 125, /* htt_t2h_soc_txrx_stats_common_tlv */ HTT_STATS_VDEV_TXRX_STATS_HW_STATS_TAG = 126, /* htt_t2h_vdev_txrx_stats_hw_stats_tlv */ HTT_STATS_VDEV_RTT_INIT_STATS_TAG = 127, /* htt_vdev_rtt_init_stats_tlv */ HTT_STATS_PER_RATE_STATS_TAG = 128, /* htt_tx_rate_stats_per_tlv */ HTT_STATS_MU_PPDU_DIST_TAG = 129, /* htt_pdev_mu_ppdu_dist_tlv */ HTT_STATS_TX_PDEV_MUMIMO_GRP_STATS_TAG = 130, /* htt_tx_pdev_mumimo_grp_stats_tlv */ HTT_STATS_MAX_TAG, } htt_tlv_tag_t; Loading fw/htt_stats.h +171 −2 Original line number Diff line number Diff line Loading @@ -343,7 +343,7 @@ enum htt_dbg_ext_stats_type { * PARAMS: * - No Params * RESP MSG: * - htt_tx_pdev_rate_txbf_stats_t * - htt_tx_pdev_txbf_rate_stats_t */ HTT_DBG_EXT_STATS_PDEV_TX_RATE_TXBF = 31, Loading Loading @@ -403,6 +403,14 @@ enum htt_dbg_ext_stats_type { HTT_DBG_EXT_VDEV_RTT_INITIATOR_STATS = 39, /* HTT_DBG_EXT_PDEV_PER_STATS * PARAMS: * - No Params * RESP MSG: * - htt_tx_pdev_per_stats_t */ HTT_DBG_EXT_PDEV_PER_STATS = 40, /* keep this last */ HTT_DBG_NUM_EXT_STATS = 256, Loading Loading @@ -633,7 +641,7 @@ typedef struct { A_UINT32 next_seq_cancel; /* Num of times fes offset was misaligned */ A_UINT32 fes_offsets_err_cnt; /* Num of times peer blacklisted for MU-MIMO transmission */ /* Num of times peer denylisted for MU-MIMO transmission */ A_UINT32 num_mu_peer_blacklisted; /* Num of times mu_ofdma seq posted */ A_UINT32 mu_ofdma_seq_posted; Loading @@ -659,6 +667,10 @@ typedef struct { * 3 -> Tx Abort Module */ A_UINT32 last_suspend_reason; /* Num of dynamic mimo ps dlmumimo sequences posted */ A_UINT32 num_dyn_mimo_ps_dlmumimo_sequences; /* Num of times su bf sequences are denylisted */ A_UINT32 num_su_txbf_denylisted; } htt_tx_pdev_stats_cmn_tlv; #define HTT_TX_PDEV_STATS_URRN_TLV_SZ(_num_elems) (sizeof(A_UINT32) * (_num_elems)) Loading Loading @@ -705,6 +717,49 @@ typedef struct { A_UINT32 num_data_ppdus_ax_su_txbf; } htt_tx_pdev_stats_tx_ppdu_stats_tlv_v; typedef enum { HTT_TX_WAL_ISR_SCHED_SUCCESS, HTT_TX_WAL_ISR_SCHED_FILTER, HTT_TX_WAL_ISR_SCHED_RESP_TIMEOUT, HTT_TX_WAL_ISR_SCHED_RATES_EXHAUSTED, HTT_TX_WAL_ISR_SCHED_DATA_EXHAUSTED, HTT_TX_WAL_ISR_SCHED_SEQ_ABORT, HTT_TX_WAL_ISR_SCHED_NOTIFY_FRAME_ENCOUNTERED, HTT_TX_WAL_ISR_SCHED_COMPLETION, HTT_TX_WAL_ISR_SCHED_IN_PROGRESS, } htt_tx_wal_tx_isr_sched_status; /* [0]- nr4 , [1]- nr8 */ #define HTT_STATS_NUM_NR_BINS 2 /* Termination status stated in htt_tx_wal_tx_isr_sched_status */ #define HTT_STATS_MAX_NUM_SCHED_STATUS 9 #define HTT_STATS_MAX_NUM_MU_PPDU_PER_BURST 10 #define HTT_STATS_MAX_NUM_SCHED_STATUS_WORDS \ (HTT_STATS_NUM_NR_BINS * HTT_STATS_MAX_NUM_SCHED_STATUS) #define HTT_STATS_MAX_NUM_MU_PPDU_PER_BURST_WORDS \ (HTT_STATS_NUM_NR_BINS * HTT_STATS_MAX_NUM_MU_PPDU_PER_BURST) typedef enum { HTT_STATS_HWMODE_AC = 0, HTT_STATS_HWMODE_AX = 1, HTT_STATS_HWMODE_BE = 2, } htt_stats_hw_mode; typedef struct { htt_tlv_hdr_t tlv_hdr; A_UINT32 hw_mode; /* HTT_STATS_HWMODE_xx */ A_UINT32 mu_mimo_num_seq_term_status[HTT_STATS_MAX_NUM_SCHED_STATUS_WORDS]; A_UINT32 mu_mimo_num_ppdu_completed_per_burst[HTT_STATS_MAX_NUM_MU_PPDU_PER_BURST_WORDS]; A_UINT32 mu_mimo_num_seq_posted[HTT_STATS_NUM_NR_BINS]; A_UINT32 mu_mimo_num_ppdu_posted_per_burst[HTT_STATS_MAX_NUM_MU_PPDU_PER_BURST_WORDS]; } htt_pdev_mu_ppdu_dist_tlv_v; #define HTT_TX_PDEV_STATS_TRIED_MPDU_CNT_HIST_TLV_SZ(_num_elems) (sizeof(A_UINT32) * (_num_elems)) /* NOTE: Variable length TLV, use length spec to infer array size . * Loading Loading @@ -742,6 +797,7 @@ typedef struct { * - HTT_STATS_TX_PDEV_TX_PPDU_STATS_TAG * - HTT_STATS_TX_PDEV_TRIED_MPDU_CNT_HIST_TAG * - HTT_STATS_PDEV_CTRL_PATH_TX_STATS_TAG * - HTT_STATS_MU_PPDU_DIST_TAG */ /* NOTE: * This structure is for documentation, and cannot be safely used directly. Loading @@ -757,6 +813,7 @@ typedef struct _htt_tx_pdev_stats { htt_tx_pdev_stats_tx_ppdu_stats_tlv_v tx_su_tlv; htt_tx_pdev_stats_tried_mpdu_cnt_hist_tlv_v tried_mpdu_cnt_hist_tlv; htt_pdev_ctrl_path_tx_stats_tlv_v ctrl_path_tx_tlv; htt_pdev_mu_ppdu_dist_tlv_v mu_ppdu_dist_tlv; } htt_tx_pdev_stats_t; /* == SOC ERROR STATS == */ Loading Loading @@ -1760,10 +1817,36 @@ typedef enum { HTT_TX_SELFGEN_SCH_TSFLAG_ERROR_STATS_VALID = 8 } htt_tx_selfgen_sch_tsflag_error_stats; typedef enum { HTT_TX_MUMIMO_GRP_VALID, HTT_TX_MUMIMO_GRP_INVALID_NUM_MU_USERS_EXCEEDED_MU_MAX_USERS, HTT_TX_MUMIMO_GRP_INVALID_SCHED_ALGO_NOT_MU_COMPATIBLE_GID, HTT_TX_MUMIMO_GRP_INVALID_NON_PRIMARY_GRP, HTT_TX_MUMIMO_GRP_INVALID_ZERO_CANDIDATES, HTT_TX_MUMIMO_GRP_INVALID_MORE_CANDIDATES, HTT_TX_MUMIMO_GRP_INVALID_GROUP_SIZE_EXCEED_NSS, HTT_TX_MUMIMO_GRP_INVALID_GROUP_INELIGIBLE, HTT_TX_MUMIMO_GRP_INVALID, HTT_TX_MUMIMO_GRP_INVALID_GROUP_EFF_MU_TPUT_OMBPS, HTT_TX_MUMIMO_GRP_INVALID_MAX_REASON_CODE, } htt_tx_mumimo_grp_invalid_reason_code_stats; #define HTT_TX_PDEV_STATS_NUM_AC_MUMIMO_USER_STATS 4 #define HTT_TX_PDEV_STATS_NUM_AX_MUMIMO_USER_STATS 8 #define HTT_TX_PDEV_STATS_NUM_OFDMA_USER_STATS 74 #define HTT_TX_PDEV_STATS_NUM_UL_MUMIMO_USER_STATS 8 #define HTT_STATS_MAX_MUMIMO_GRP_SZ 8 /* * Each bin represents a 300 mbps throughput * [0] - 0-300mbps; [1] - 300-600mbps [2] - 600-900mbps; [3] - 900-1200mbps; [4] - 1200-1500mbps * [5] - 1500-1800mbps; [6] - 1800-2100mbps; [7] - 2100-2400mbps; [8] - 2400-2700mbps; [9] - >=2700mbps */ #define HTT_STATS_MUMIMO_TPUT_NUM_BINS 10 #define HTT_STATS_MAX_INVALID_REASON_CODE \ HTT_TX_MUMIMO_GRP_INVALID_MAX_REASON_CODE /* Reasons stated in htt_tx_mumimo_grp_invalid_reason_code_stats */ #define HTT_TX_NUM_MUMIMO_GRP_INVALID_WORDS \ (HTT_STATS_MAX_MUMIMO_GRP_SZ * HTT_STATS_MAX_INVALID_REASON_CODE) typedef struct { htt_tlv_hdr_t tlv_hdr; Loading Loading @@ -2116,6 +2199,28 @@ typedef struct { A_UINT32 ax_mu_mimo_sch_posted_per_grp_sz[HTT_TX_PDEV_STATS_NUM_AX_MUMIMO_USER_STATS]; } htt_tx_pdev_mu_mimo_sch_stats_tlv; typedef struct { htt_tlv_hdr_t tlv_hdr; A_UINT32 dl_mumimo_grp_best_grp_size[HTT_STATS_MAX_MUMIMO_GRP_SZ]; A_UINT32 dl_mumimo_grp_best_num_usrs[HTT_TX_PDEV_STATS_NUM_AX_MUMIMO_USER_STATS]; A_UINT32 dl_mumimo_grp_eligible[HTT_STATS_MAX_MUMIMO_GRP_SZ]; A_UINT32 dl_mumimo_grp_ineligible[HTT_STATS_MAX_MUMIMO_GRP_SZ]; A_UINT32 dl_mumimo_grp_invalid[HTT_TX_NUM_MUMIMO_GRP_INVALID_WORDS]; A_UINT32 dl_mumimo_grp_tputs[HTT_STATS_MUMIMO_TPUT_NUM_BINS]; A_UINT32 ul_mumimo_grp_best_grp_size[HTT_STATS_MAX_MUMIMO_GRP_SZ]; A_UINT32 ul_mumimo_grp_best_num_usrs[HTT_TX_PDEV_STATS_NUM_AX_MUMIMO_USER_STATS]; A_UINT32 ul_mumimo_grp_tputs[HTT_STATS_MUMIMO_TPUT_NUM_BINS]; } htt_tx_pdev_mumimo_grp_stats_tlv; typedef struct { htt_tlv_hdr_t tlv_hdr; A_UINT32 mu_mimo_sch_posted; /* Number of MU MIMO schedules posted to HW */ Loading Loading @@ -2233,6 +2338,7 @@ typedef struct { * it can also hold MU-OFDMA stats. */ htt_tx_pdev_mpdu_stats_tlv mu_mimo_mpdu_stats_tlv[1]; /* WAL_TX_STATS_MAX_NUM_USERS */ htt_tx_pdev_mumimo_grp_stats_tlv mumimo_grp_stats_tlv; } htt_tx_pdev_mu_mimo_stats_t; /* == TX SCHED STATS == */ Loading Loading @@ -4640,6 +4746,34 @@ typedef struct { * ... where max_bw == 4 for 160mhz */ A_UINT32 sounding[HTT_TX_NUM_OF_SOUNDING_STATS_WORDS]; /* cv upload handler stats */ A_UINT32 cv_nc_mismatch_err; A_UINT32 cv_fcs_err; A_UINT32 cv_frag_idx_mismatch; A_UINT32 cv_invalid_peer_id; A_UINT32 cv_no_txbf_setup; A_UINT32 cv_expiry_in_update; A_UINT32 cv_pkt_bw_exceed; A_UINT32 cv_dma_not_done_err; A_UINT32 cv_update_failed; /* cv query stats */ A_UINT32 cv_total_query; A_UINT32 cv_total_pattern_query; A_UINT32 cv_total_bw_query; A_UINT32 cv_invalid_bw_coding; A_UINT32 cv_forced_sounding; A_UINT32 cv_standalone_sounding; A_UINT32 cv_nc_mismatch; A_UINT32 cv_fb_type_mismatch; A_UINT32 cv_ofdma_bw_mismatch; A_UINT32 cv_bw_mismatch; A_UINT32 cv_pattern_mismatch; A_UINT32 cv_preamble_mismatch; A_UINT32 cv_nr_mismatch; A_UINT32 cv_in_use_cnt_exceeded; A_UINT32 cv_found; A_UINT32 cv_not_found; } htt_tx_sounding_stats_tlv; /* STATS_TYPE : HTT_DBG_EXT_STATS_TX_SOUNDING_INFO Loading Loading @@ -5035,6 +5169,37 @@ typedef struct { A_UINT32 reduced_tx_su_ol_bw[HTT_TX_TXBF_RATE_STATS_NUM_REDUCED_CHAN_TYPES][HTT_TX_TXBF_RATE_STATS_NUM_BW_COUNTERS]; } htt_tx_pdev_txbf_rate_stats_tlv; typedef enum { HTT_STATS_RC_MODE_DLSU = 0, HTT_STATS_RC_MODE_DLMUMIMO = 1, } htt_stats_rc_mode; typedef struct { A_UINT32 ppdus_tried; A_UINT32 ppdus_ack_failed; A_UINT32 mpdus_tried; A_UINT32 mpdus_failed; } htt_tx_rate_stats_t; typedef struct { htt_tlv_hdr_t tlv_hdr; A_UINT32 rc_mode; /* HTT_STATS_RC_MODE_XX */ A_UINT32 last_probed_mcs; A_UINT32 last_probed_nss; A_UINT32 last_probed_bw; htt_tx_rate_stats_t per_bw[HTT_TX_PDEV_STATS_NUM_BW_COUNTERS]; htt_tx_rate_stats_t per_nss[HTT_TX_PDEV_STATS_NUM_SPATIAL_STREAMS]; htt_tx_rate_stats_t per_mcs[HTT_TX_TXBF_RATE_STATS_NUM_MCS_COUNTERS]; } htt_tx_rate_stats_per_tlv; /* NOTE: * This structure is for documentation, and cannot be safely used directly. * Instead, use the constituent TLV structures to fill/parse. Loading @@ -5043,6 +5208,10 @@ typedef struct { htt_tx_pdev_txbf_rate_stats_tlv txbf_rate_stats; } htt_pdev_txbf_rate_stats_t; typedef struct { htt_tx_rate_stats_per_tlv per_stats; } htt_tx_pdev_per_stats_t; typedef enum { HTT_ULTRIG_QBOOST_TRIGGER = 0, HTT_ULTRIG_PSPOLL_TRIGGER, Loading Loading
fw/htt.h +3 −0 Original line number Diff line number Diff line Loading @@ -654,6 +654,9 @@ typedef enum { HTT_STATS_SOC_TXRX_STATS_COMMON_TAG = 125, /* htt_t2h_soc_txrx_stats_common_tlv */ HTT_STATS_VDEV_TXRX_STATS_HW_STATS_TAG = 126, /* htt_t2h_vdev_txrx_stats_hw_stats_tlv */ HTT_STATS_VDEV_RTT_INIT_STATS_TAG = 127, /* htt_vdev_rtt_init_stats_tlv */ HTT_STATS_PER_RATE_STATS_TAG = 128, /* htt_tx_rate_stats_per_tlv */ HTT_STATS_MU_PPDU_DIST_TAG = 129, /* htt_pdev_mu_ppdu_dist_tlv */ HTT_STATS_TX_PDEV_MUMIMO_GRP_STATS_TAG = 130, /* htt_tx_pdev_mumimo_grp_stats_tlv */ HTT_STATS_MAX_TAG, } htt_tlv_tag_t; Loading
fw/htt_stats.h +171 −2 Original line number Diff line number Diff line Loading @@ -343,7 +343,7 @@ enum htt_dbg_ext_stats_type { * PARAMS: * - No Params * RESP MSG: * - htt_tx_pdev_rate_txbf_stats_t * - htt_tx_pdev_txbf_rate_stats_t */ HTT_DBG_EXT_STATS_PDEV_TX_RATE_TXBF = 31, Loading Loading @@ -403,6 +403,14 @@ enum htt_dbg_ext_stats_type { HTT_DBG_EXT_VDEV_RTT_INITIATOR_STATS = 39, /* HTT_DBG_EXT_PDEV_PER_STATS * PARAMS: * - No Params * RESP MSG: * - htt_tx_pdev_per_stats_t */ HTT_DBG_EXT_PDEV_PER_STATS = 40, /* keep this last */ HTT_DBG_NUM_EXT_STATS = 256, Loading Loading @@ -633,7 +641,7 @@ typedef struct { A_UINT32 next_seq_cancel; /* Num of times fes offset was misaligned */ A_UINT32 fes_offsets_err_cnt; /* Num of times peer blacklisted for MU-MIMO transmission */ /* Num of times peer denylisted for MU-MIMO transmission */ A_UINT32 num_mu_peer_blacklisted; /* Num of times mu_ofdma seq posted */ A_UINT32 mu_ofdma_seq_posted; Loading @@ -659,6 +667,10 @@ typedef struct { * 3 -> Tx Abort Module */ A_UINT32 last_suspend_reason; /* Num of dynamic mimo ps dlmumimo sequences posted */ A_UINT32 num_dyn_mimo_ps_dlmumimo_sequences; /* Num of times su bf sequences are denylisted */ A_UINT32 num_su_txbf_denylisted; } htt_tx_pdev_stats_cmn_tlv; #define HTT_TX_PDEV_STATS_URRN_TLV_SZ(_num_elems) (sizeof(A_UINT32) * (_num_elems)) Loading Loading @@ -705,6 +717,49 @@ typedef struct { A_UINT32 num_data_ppdus_ax_su_txbf; } htt_tx_pdev_stats_tx_ppdu_stats_tlv_v; typedef enum { HTT_TX_WAL_ISR_SCHED_SUCCESS, HTT_TX_WAL_ISR_SCHED_FILTER, HTT_TX_WAL_ISR_SCHED_RESP_TIMEOUT, HTT_TX_WAL_ISR_SCHED_RATES_EXHAUSTED, HTT_TX_WAL_ISR_SCHED_DATA_EXHAUSTED, HTT_TX_WAL_ISR_SCHED_SEQ_ABORT, HTT_TX_WAL_ISR_SCHED_NOTIFY_FRAME_ENCOUNTERED, HTT_TX_WAL_ISR_SCHED_COMPLETION, HTT_TX_WAL_ISR_SCHED_IN_PROGRESS, } htt_tx_wal_tx_isr_sched_status; /* [0]- nr4 , [1]- nr8 */ #define HTT_STATS_NUM_NR_BINS 2 /* Termination status stated in htt_tx_wal_tx_isr_sched_status */ #define HTT_STATS_MAX_NUM_SCHED_STATUS 9 #define HTT_STATS_MAX_NUM_MU_PPDU_PER_BURST 10 #define HTT_STATS_MAX_NUM_SCHED_STATUS_WORDS \ (HTT_STATS_NUM_NR_BINS * HTT_STATS_MAX_NUM_SCHED_STATUS) #define HTT_STATS_MAX_NUM_MU_PPDU_PER_BURST_WORDS \ (HTT_STATS_NUM_NR_BINS * HTT_STATS_MAX_NUM_MU_PPDU_PER_BURST) typedef enum { HTT_STATS_HWMODE_AC = 0, HTT_STATS_HWMODE_AX = 1, HTT_STATS_HWMODE_BE = 2, } htt_stats_hw_mode; typedef struct { htt_tlv_hdr_t tlv_hdr; A_UINT32 hw_mode; /* HTT_STATS_HWMODE_xx */ A_UINT32 mu_mimo_num_seq_term_status[HTT_STATS_MAX_NUM_SCHED_STATUS_WORDS]; A_UINT32 mu_mimo_num_ppdu_completed_per_burst[HTT_STATS_MAX_NUM_MU_PPDU_PER_BURST_WORDS]; A_UINT32 mu_mimo_num_seq_posted[HTT_STATS_NUM_NR_BINS]; A_UINT32 mu_mimo_num_ppdu_posted_per_burst[HTT_STATS_MAX_NUM_MU_PPDU_PER_BURST_WORDS]; } htt_pdev_mu_ppdu_dist_tlv_v; #define HTT_TX_PDEV_STATS_TRIED_MPDU_CNT_HIST_TLV_SZ(_num_elems) (sizeof(A_UINT32) * (_num_elems)) /* NOTE: Variable length TLV, use length spec to infer array size . * Loading Loading @@ -742,6 +797,7 @@ typedef struct { * - HTT_STATS_TX_PDEV_TX_PPDU_STATS_TAG * - HTT_STATS_TX_PDEV_TRIED_MPDU_CNT_HIST_TAG * - HTT_STATS_PDEV_CTRL_PATH_TX_STATS_TAG * - HTT_STATS_MU_PPDU_DIST_TAG */ /* NOTE: * This structure is for documentation, and cannot be safely used directly. Loading @@ -757,6 +813,7 @@ typedef struct _htt_tx_pdev_stats { htt_tx_pdev_stats_tx_ppdu_stats_tlv_v tx_su_tlv; htt_tx_pdev_stats_tried_mpdu_cnt_hist_tlv_v tried_mpdu_cnt_hist_tlv; htt_pdev_ctrl_path_tx_stats_tlv_v ctrl_path_tx_tlv; htt_pdev_mu_ppdu_dist_tlv_v mu_ppdu_dist_tlv; } htt_tx_pdev_stats_t; /* == SOC ERROR STATS == */ Loading Loading @@ -1760,10 +1817,36 @@ typedef enum { HTT_TX_SELFGEN_SCH_TSFLAG_ERROR_STATS_VALID = 8 } htt_tx_selfgen_sch_tsflag_error_stats; typedef enum { HTT_TX_MUMIMO_GRP_VALID, HTT_TX_MUMIMO_GRP_INVALID_NUM_MU_USERS_EXCEEDED_MU_MAX_USERS, HTT_TX_MUMIMO_GRP_INVALID_SCHED_ALGO_NOT_MU_COMPATIBLE_GID, HTT_TX_MUMIMO_GRP_INVALID_NON_PRIMARY_GRP, HTT_TX_MUMIMO_GRP_INVALID_ZERO_CANDIDATES, HTT_TX_MUMIMO_GRP_INVALID_MORE_CANDIDATES, HTT_TX_MUMIMO_GRP_INVALID_GROUP_SIZE_EXCEED_NSS, HTT_TX_MUMIMO_GRP_INVALID_GROUP_INELIGIBLE, HTT_TX_MUMIMO_GRP_INVALID, HTT_TX_MUMIMO_GRP_INVALID_GROUP_EFF_MU_TPUT_OMBPS, HTT_TX_MUMIMO_GRP_INVALID_MAX_REASON_CODE, } htt_tx_mumimo_grp_invalid_reason_code_stats; #define HTT_TX_PDEV_STATS_NUM_AC_MUMIMO_USER_STATS 4 #define HTT_TX_PDEV_STATS_NUM_AX_MUMIMO_USER_STATS 8 #define HTT_TX_PDEV_STATS_NUM_OFDMA_USER_STATS 74 #define HTT_TX_PDEV_STATS_NUM_UL_MUMIMO_USER_STATS 8 #define HTT_STATS_MAX_MUMIMO_GRP_SZ 8 /* * Each bin represents a 300 mbps throughput * [0] - 0-300mbps; [1] - 300-600mbps [2] - 600-900mbps; [3] - 900-1200mbps; [4] - 1200-1500mbps * [5] - 1500-1800mbps; [6] - 1800-2100mbps; [7] - 2100-2400mbps; [8] - 2400-2700mbps; [9] - >=2700mbps */ #define HTT_STATS_MUMIMO_TPUT_NUM_BINS 10 #define HTT_STATS_MAX_INVALID_REASON_CODE \ HTT_TX_MUMIMO_GRP_INVALID_MAX_REASON_CODE /* Reasons stated in htt_tx_mumimo_grp_invalid_reason_code_stats */ #define HTT_TX_NUM_MUMIMO_GRP_INVALID_WORDS \ (HTT_STATS_MAX_MUMIMO_GRP_SZ * HTT_STATS_MAX_INVALID_REASON_CODE) typedef struct { htt_tlv_hdr_t tlv_hdr; Loading Loading @@ -2116,6 +2199,28 @@ typedef struct { A_UINT32 ax_mu_mimo_sch_posted_per_grp_sz[HTT_TX_PDEV_STATS_NUM_AX_MUMIMO_USER_STATS]; } htt_tx_pdev_mu_mimo_sch_stats_tlv; typedef struct { htt_tlv_hdr_t tlv_hdr; A_UINT32 dl_mumimo_grp_best_grp_size[HTT_STATS_MAX_MUMIMO_GRP_SZ]; A_UINT32 dl_mumimo_grp_best_num_usrs[HTT_TX_PDEV_STATS_NUM_AX_MUMIMO_USER_STATS]; A_UINT32 dl_mumimo_grp_eligible[HTT_STATS_MAX_MUMIMO_GRP_SZ]; A_UINT32 dl_mumimo_grp_ineligible[HTT_STATS_MAX_MUMIMO_GRP_SZ]; A_UINT32 dl_mumimo_grp_invalid[HTT_TX_NUM_MUMIMO_GRP_INVALID_WORDS]; A_UINT32 dl_mumimo_grp_tputs[HTT_STATS_MUMIMO_TPUT_NUM_BINS]; A_UINT32 ul_mumimo_grp_best_grp_size[HTT_STATS_MAX_MUMIMO_GRP_SZ]; A_UINT32 ul_mumimo_grp_best_num_usrs[HTT_TX_PDEV_STATS_NUM_AX_MUMIMO_USER_STATS]; A_UINT32 ul_mumimo_grp_tputs[HTT_STATS_MUMIMO_TPUT_NUM_BINS]; } htt_tx_pdev_mumimo_grp_stats_tlv; typedef struct { htt_tlv_hdr_t tlv_hdr; A_UINT32 mu_mimo_sch_posted; /* Number of MU MIMO schedules posted to HW */ Loading Loading @@ -2233,6 +2338,7 @@ typedef struct { * it can also hold MU-OFDMA stats. */ htt_tx_pdev_mpdu_stats_tlv mu_mimo_mpdu_stats_tlv[1]; /* WAL_TX_STATS_MAX_NUM_USERS */ htt_tx_pdev_mumimo_grp_stats_tlv mumimo_grp_stats_tlv; } htt_tx_pdev_mu_mimo_stats_t; /* == TX SCHED STATS == */ Loading Loading @@ -4640,6 +4746,34 @@ typedef struct { * ... where max_bw == 4 for 160mhz */ A_UINT32 sounding[HTT_TX_NUM_OF_SOUNDING_STATS_WORDS]; /* cv upload handler stats */ A_UINT32 cv_nc_mismatch_err; A_UINT32 cv_fcs_err; A_UINT32 cv_frag_idx_mismatch; A_UINT32 cv_invalid_peer_id; A_UINT32 cv_no_txbf_setup; A_UINT32 cv_expiry_in_update; A_UINT32 cv_pkt_bw_exceed; A_UINT32 cv_dma_not_done_err; A_UINT32 cv_update_failed; /* cv query stats */ A_UINT32 cv_total_query; A_UINT32 cv_total_pattern_query; A_UINT32 cv_total_bw_query; A_UINT32 cv_invalid_bw_coding; A_UINT32 cv_forced_sounding; A_UINT32 cv_standalone_sounding; A_UINT32 cv_nc_mismatch; A_UINT32 cv_fb_type_mismatch; A_UINT32 cv_ofdma_bw_mismatch; A_UINT32 cv_bw_mismatch; A_UINT32 cv_pattern_mismatch; A_UINT32 cv_preamble_mismatch; A_UINT32 cv_nr_mismatch; A_UINT32 cv_in_use_cnt_exceeded; A_UINT32 cv_found; A_UINT32 cv_not_found; } htt_tx_sounding_stats_tlv; /* STATS_TYPE : HTT_DBG_EXT_STATS_TX_SOUNDING_INFO Loading Loading @@ -5035,6 +5169,37 @@ typedef struct { A_UINT32 reduced_tx_su_ol_bw[HTT_TX_TXBF_RATE_STATS_NUM_REDUCED_CHAN_TYPES][HTT_TX_TXBF_RATE_STATS_NUM_BW_COUNTERS]; } htt_tx_pdev_txbf_rate_stats_tlv; typedef enum { HTT_STATS_RC_MODE_DLSU = 0, HTT_STATS_RC_MODE_DLMUMIMO = 1, } htt_stats_rc_mode; typedef struct { A_UINT32 ppdus_tried; A_UINT32 ppdus_ack_failed; A_UINT32 mpdus_tried; A_UINT32 mpdus_failed; } htt_tx_rate_stats_t; typedef struct { htt_tlv_hdr_t tlv_hdr; A_UINT32 rc_mode; /* HTT_STATS_RC_MODE_XX */ A_UINT32 last_probed_mcs; A_UINT32 last_probed_nss; A_UINT32 last_probed_bw; htt_tx_rate_stats_t per_bw[HTT_TX_PDEV_STATS_NUM_BW_COUNTERS]; htt_tx_rate_stats_t per_nss[HTT_TX_PDEV_STATS_NUM_SPATIAL_STREAMS]; htt_tx_rate_stats_t per_mcs[HTT_TX_TXBF_RATE_STATS_NUM_MCS_COUNTERS]; } htt_tx_rate_stats_per_tlv; /* NOTE: * This structure is for documentation, and cannot be safely used directly. * Instead, use the constituent TLV structures to fill/parse. Loading @@ -5043,6 +5208,10 @@ typedef struct { htt_tx_pdev_txbf_rate_stats_tlv txbf_rate_stats; } htt_pdev_txbf_rate_stats_t; typedef struct { htt_tx_rate_stats_per_tlv per_stats; } htt_tx_pdev_per_stats_t; typedef enum { HTT_ULTRIG_QBOOST_TRIGGER = 0, HTT_ULTRIG_PSPOLL_TRIGGER, Loading