| /* |
| * Copyright (c) 2013 Quantenna Communications, Inc. |
| */ |
| |
| #ifndef _AUC_DEBUG_STATS_H_ |
| #define _AUC_DEBUG_STATS_H_ |
| |
| #include <qtn/auc_share_def.h> |
| |
| /* |
| * Firmware updates counters through such macros as AUC_DBG_INC(), AUC_DBG_INC_OFFSET(), AUC_DBG_INC_COND(), etc. |
| * Other CPU (e.g. Lhost) can read structure and dump counters. |
| * Feel free to add more counters here. |
| * Good to have counters organized and grouped using name prefix. |
| */ |
| struct auc_dbg_counters |
| { |
| /* pktlogger expects task_alive_counters to be the first member of this struct */ |
| uint32_t task_alive_counters[AUC_TID_NUM]; |
| uint32_t task_false_trigger[AUC_TID_NUM]; |
| uint32_t tqew_ac[4]; |
| uint32_t tqew_ac_avail[4]; |
| uint32_t tqew_air_humble; |
| uint32_t tqew_air_suppress; |
| uint32_t tqew_air_use_idletime; |
| uint32_t tqew_air_dequeue_only; |
| uint32_t tqew_pkt_pending_for_txdone; |
| uint32_t tqew_descr_alloc_fail; |
| uint32_t tqew_ring_alloc_fail; |
| uint32_t tqew_pop_alloc_fail; |
| uint32_t tqew_pop_sw_limit; |
| uint32_t tqew_pop_empty; |
| uint32_t tqew_available_set; |
| uint32_t tqew_available_reset; |
| uint32_t tqew_rx; |
| uint32_t tqew_drop; |
| uint32_t tqew_free; |
| uint32_t tqew_buf_invalid; |
| uint32_t wmac_tx_done[4]; |
| uint32_t agg_aggregate_flag; |
| uint32_t agg_aggressive_agg; |
| uint32_t hdrs_available_recent_min; |
| uint32_t agg_states[QTN_AUC_TID_TX_STATE_MAX + 1]; |
| uint32_t ethq_push; |
| uint32_t ethq_pop; |
| uint32_t agg_aggregate_mpdu; |
| uint32_t agg_aggregate_msdu; |
| uint32_t agg_singleton_mpdu; |
| uint32_t agg_singleton_mgmt; |
| uint32_t agg_singleton_ctl; |
| uint32_t agg_singleton_probe; |
| uint32_t agg_4K_amsdu; |
| uint32_t agg_8K_amsdu; |
| uint32_t agg_11K_amsdu; |
| uint32_t tx_feedback_success; |
| uint32_t tx_feedback_fail; |
| uint32_t tx_done_status_success; |
| uint32_t tx_done_status_timeout; |
| uint32_t tx_done_status_xretry; |
| uint32_t tx_done_status_timeout_xretry; |
| uint32_t tx_done_pkt_chain_reset; |
| uint32_t tx_done_pkt_chain_success; |
| uint32_t tx_done_pkt_chain_drop_tid_down; |
| uint32_t tx_done_pkt_chain_drop_xattempts; |
| uint32_t tx_done_singleton_finish; |
| uint32_t tx_done_singleton_swretry; |
| uint32_t tx_done_aggregate_finish; |
| uint32_t tx_done_aggregate_hwretry; |
| uint32_t tx_done_aggregate_swretry; |
| uint32_t tx_done_mpdu_swretry; |
| uint32_t tx_sample; |
| uint32_t tx_bw_sample; |
| uint32_t tx_swretry_lower_bw; |
| uint32_t tx_swretry_agg_exceed; |
| uint32_t tx_scale_base_20m; |
| uint32_t tx_scale_base_40m; |
| uint32_t tx_scale_base_80m; |
| uint32_t tx_scale_max; |
| uint32_t tx_scale_overstep; |
| uint32_t alloc_tqew_fast; |
| uint32_t free_tqew_fast; |
| uint32_t alloc_tqew_slow; |
| uint32_t free_tqew_slow; |
| uint32_t alloc_tqew_local; |
| uint32_t free_tqew_local; |
| uint32_t alloc_hdr_fast; |
| uint32_t free_hdr_fast; |
| uint32_t alloc_hdr_slow; |
| uint32_t free_hdr_slow; |
| uint32_t alloc_msdu_hdr_failed; |
| uint32_t alloc_mpdu_hdr_failed; |
| uint32_t alloc_tid_superfast; |
| uint32_t free_tid_superfast; |
| uint32_t alloc_tid_fast; |
| uint32_t free_tid_fast; |
| uint32_t alloc_tid_slow; |
| uint32_t free_tid_slow; |
| uint32_t alloc_node_rate_fast; |
| uint32_t free_node_rate_fast; |
| uint32_t alloc_node_rate_slow; |
| uint32_t free_node_rate_slow; |
| uint32_t alloc_node_superfast; |
| uint32_t free_node_superfast; |
| uint32_t alloc_node_fast; |
| uint32_t free_node_fast; |
| uint32_t alloc_fcs; |
| uint32_t free_fcs; |
| uint32_t alloc_mac_descr; |
| uint32_t free_mac_descr; |
| uint32_t tx_mac_push; |
| uint32_t tx_mac_idle; |
| uint32_t tx_mac_rts; |
| uint32_t tx_mac_cts2self; |
| uint32_t tx_vlan_drop; |
| uint32_t tx_acm_drop; |
| uint32_t tx_ps_drop; |
| uint32_t ocs_tx_suspend; |
| uint32_t ocs_tx_resume; |
| uint32_t ocs_singleton_suspend; |
| uint32_t ocs_ampdu_suspend; |
| uint32_t ocs_frame_created; |
| uint32_t pwr_mgmt_awake; |
| uint32_t pwr_mgmt_sleep; |
| uint32_t pwr_mgmt_tx; |
| uint32_t pspoll_rx; |
| uint32_t dtim_q_push; |
| uint32_t dtim_q_pop; |
| uint32_t dtim_trigger; |
| uint32_t dtim_q_overflow; |
| uint32_t tx_restrict_dropped; |
| uint32_t tx_throt_dropped; |
| uint32_t tx_block_singleton; |
| uint32_t tx_force_unblock_tid; |
| uint32_t tx_ctl_pkt_hbm_alloc_fails; |
| uint32_t tx_ctl_pkt_alloc_descr_fails; |
| uint32_t tx_bar_alloc_ctl_pkt_fails; |
| |
| uint32_t wmm_ps_tx; |
| uint32_t wmm_ps_tx_null_frames; |
| uint32_t wmm_ps_tx_more_data_frames; |
| uint32_t wmm_ps_tx_eosp_frames; |
| |
| /* |
| * Mu Tx & Done & Retry |
| */ |
| uint32_t mu_tx_su_count; /* Can't find buddy, and this AMPDU be sent as SU */ |
| |
| uint32_t mu_tx_send_mu_fail; /* Can't be sent as MU, send them as SU */ |
| |
| uint32_t mu_tx_push_count; |
| uint32_t mu_tx_done_count; |
| |
| uint32_t mu_tx_done_succ; /* The succ/fail counter of AMPDU which be sent via WMAC1 */ |
| uint32_t mu_tx_done_fail; |
| uint32_t mu_tx_sample; /* mu sampling phy rate count */ |
| uint32_t mu_bar_bitmap_non_zero; |
| uint32_t mu_bar_bitmap_zero; |
| uint32_t mu_mac_wmac1_ipc_push; |
| uint32_t mu_mac_wmac1_auc_push; |
| uint32_t mu_wmac1_resets; |
| |
| uint32_t mu_tx_swretry_agg_exceed; |
| |
| uint32_t mu_tx_buddy_try; |
| uint32_t mu_tx_buddy_fail_wmac; |
| uint32_t mu_tx_buddy_fail_ptid; |
| uint32_t mu_tx_buddy_fail_rate; |
| uint32_t mu_tx_buddy_fail_create_agg; |
| |
| uint32_t mu_tx_buddy_mu_only_timeout; |
| |
| uint32_t mu_tx_another_q_push_succ; |
| uint32_t mu_tx_another_q_push_fail; /* If current cont_q is not ready, try another cont_q */ |
| uint32_t mu_tx_buddy_multi_tid; |
| |
| /* For debug, remove it before submitting */ |
| uint32_t mu_tx_wmac_0_done_count; |
| uint32_t mu_tx_wmac_0_bitmap_non_zero; |
| uint32_t mu_tx_wmac_0_bitmap_zero; |
| uint32_t mu_tx_wmac_0_done_timeout; |
| uint32_t mu_tx_wmac_0_done_succ; |
| uint32_t mu_tx_wmac_0_done_fail; |
| |
| uint32_t mu_tx_wmac_1_done_succ; |
| uint32_t mu_tx_wmac_1_done_fail; |
| |
| uint32_t mu_tx_wmac_0_mpdu_total; |
| uint32_t mu_tx_wmac_0_mpdu_succ; |
| |
| uint32_t mu_tx_wmac_1_mpdu_total; |
| uint32_t mu_tx_wmac_1_mpdu_succ; |
| |
| uint32_t mu_tx_qnum[AUC_FW_WMAC_TX_QNUM]; |
| uint32_t tqe_sema_fails; |
| }; |
| #endif // #ifndef _AUC_DEBUG_STATS_H_ |
| |