Files
esp-idf/components/esp32/include/wifi_debug.h
liu zhifu 2e5ea3a51b Optimize debug log
1. optimize wifi debug log
2. optimize lwip debug log
2020-07-20 17:10:00 +08:00

467 lines
14 KiB
C

// Copyright 2020-2021 Espressif Systems (Shanghai) PTE LTD
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
/*
* All the APIs declared here are internal only APIs, it can only be used by
* espressif internal modules, such as SSC, LWIP, TCPIP adapter etc, espressif
* customers are not recommended to use them.
*
* If someone really want to use specified APIs declared in here, please contact
* espressif AE/developer to make sure you know the limitations or risk of
* the API, otherwise you may get unexpected behavior!!!
*
*/
#ifndef __ESP_WIFI_DEBUG_H__
#define __ESP_WIFI_DEBUG_H__
typedef struct {
uint32_t diag0;
uint32_t diag1;
uint32_t diag2;
uint32_t diag3;
uint32_t diag4;
uint32_t diag5;
uint32_t diag6;
uint32_t diag7;
uint32_t diag8;
uint32_t diag9;
uint32_t diag10;
uint32_t diag12;
uint32_t diag_sel;
} wifi_stats_reg_diag_t;
typedef struct {
uint32_t rx_data_suc;
uint32_t rx_end;
uint32_t rx_full;
uint32_t rx_full1;
uint32_t rx_bufbk;
uint32_t rx_cck_err;
uint32_t rx_ofdm_err;
uint32_t rx_agc_err;
uint32_t rx_sf;
uint32_t rx_abort;
uint32_t rx_fcs_err;
uint32_t rx_fifo_overflow;
uint32_t rx_apentrybuf_ful;
uint32_t rx_other_uc;
uint32_t rx_tkip_err;
uint32_t rx_samebm_err;
uint32_t rx_ack_int;
uint32_t rx_rts_int;
uint32_t rx_cts_int;
uint32_t rx_rifs_int;
uint32_t rx_block_err;
uint32_t rx_freqhop_err;
uint32_t txrts_int;
uint32_t txcts_int;
uint32_t txrxack_int;
uint32_t txrxcts_int;
uint32_t rxtrigger;
uint32_t rxtxhung;
uint32_t rxtxpanic;
} wifi_stats_reg_cnt_t;
typedef struct {
} wifi_stats_reg_filter_t;
typedef struct {
} wifi_stats_reg_crypto_t;
typedef struct {
} wifi_stats_reg_ba_t;
typedef struct {
uint32_t bbst;
uint32_t bbwd;
uint32_t frd;
uint32_t frd0;
uint32_t frd1;
uint32_t frd2;
uint32_t frd3;
uint32_t frd4;
uint32_t int_st;
} wifi_stats_reg_misc_t;
typedef struct {
uint32_t max;
uint32_t alloc;
uint32_t avail;
uint32_t total_free;
uint32_t total_alloc;
uint32_t total_fail;
} wifi_stats_one_buf_t;
#define WIFI_STATS_BUF_MAX 9
typedef struct {
wifi_stats_one_buf_t buf[WIFI_STATS_BUF_MAX];
} wifi_stats_buf_t;
typedef struct {
wifi_stats_reg_diag_t diag;
wifi_stats_reg_misc_t misc;
wifi_stats_reg_cnt_t cnt;
} wifi_stats_reg_t;
typedef struct {
uint32_t rx_suc;
uint32_t rx_hung;
uint32_t tx_complete;
uint32_t tx_enable;
uint32_t tx_collision;
uint32_t panic_reset;
uint32_t bb_wdt;
uint32_t tbtt;
uint32_t pp_post_fail;
uint32_t rx_sniffer_pingpong_full;
uint32_t rx_sniffer_null;
uint32_t rx_sniffer_reset_retry;
uint32_t rx_sniffer_reset_succ;
uint32_t rx_sniffer_reset;
uint32_t rx_sniffer_oversize;
uint32_t rx_sniffer_mimo;
uint32_t rx_sniffer_non_mimo;
uint32_t bb_wdt_bt;
uint32_t bb_wdt_wifi_rst;
uint32_t bb_wdt_wifi_not_rst;
} wifi_stats_int_t;
typedef struct {
wifi_stats_reg_t reg;
wifi_stats_buf_t buf;
wifi_stats_int_t interrupt;
} wifi_stats_mandatory_t;
#define WIFI_LMAC_AC_NUM 6
#define WIFI_LMAC_QUEUE_NUM 16
typedef struct {
uint32_t tx_data_all;
uint32_t tx_arp;
uint32_t tx_raw;
uint32_t tx_dhcp;
uint32_t tx_ps_q;
uint32_t tx_drop_data_arg;
uint32_t tx_drop_data_if;
uint32_t tx_drop_data_all;
uint32_t tx_drop_data_conn_null;
uint32_t tx_drop_data_not_run;
uint32_t tx_drop_data_not_assoc;
uint32_t tx_drop_data_not_auth;
uint32_t tx_drop_data_no_mem;
uint32_t tx_drop_data_qfull;
uint32_t tx_drop_data_post_fail;
uint32_t tx_drop_data_buf;
uint32_t tx_drop_data_ps;
uint32_t tx_task_yield;
uint32_t tx_buffer_not_home_chan;
uint32_t tx_buffer_not_home_chan_free;
uint32_t tx_buffer_not_home_chan_scan;
} wifi_stats_hmac_tx_t;
typedef struct {
uint32_t r1_all;
uint32_t r1_ampdu;
uint32_t r1_mutiple_blocks;
uint32_t r1_data_mpdu;
uint32_t r1_mgmt;
uint32_t r1_mgmt_probe_req;
uint32_t r1_mgmt_beacon;
uint32_t r1_ctrl_bar;
uint32_t r1_ctrl_ba;
uint32_t r1_ctrl_pspoll;
uint32_t r1_ctrl_others;
uint32_t r1_sniffer_mimo;
uint32_t r1_drop;
uint32_t r1_drop_if_mismatch;
uint32_t r1_drop_sniffer_state;
uint32_t r1_drop_type_err;
uint32_t r1_drop_mpdu_multiple_blocks;
uint32_t r2_drop_multiple_blocks;
uint32_t r2_drop_mpdu_no_mem;
uint32_t r3_drop_ampdu_too_long;
uint32_t r3_drop_ampdu_too_short;
uint32_t r3_drop_ampdu_state;
uint32_t r3_drop_ampdu_no_mem;
uint32_t r3_drop_ampdu_len;
uint32_t r3_drop_ampdu_ds;
uint32_t r4_drop_ampdu_proc;
uint32_t r4_drop_mpdu_proc;
uint32_t r4_drop_frag;
uint32_t r4_drop_state;
uint32_t r4_drop_tkipmic;
uint32_t r4_drop_sta_if;
uint32_t r4_drop_ap_if;
uint32_t r4_drop_if_mismatch;
uint32_t r5_sniffer_ampdu;
uint32_t r5_drop_sniffer_filter;
uint32_t r5_drop_sniffer_no_mem;
uint32_t r5_drop_sniffer_q_fail;
uint32_t r6_sniffer_mimo;
uint32_t r6_sniffer_single_block;
uint32_t r6_sniffer_multiple_blocks;
uint32_t r6_drop_sniffer_filter;
uint32_t r6_drop_sniffer_no_mem;
uint32_t r6_drop_sniffer_q_fail;
uint32_t r7_sniffer_mimo;
uint32_t r7_drop_sniffer_no_mem;
uint32_t r7_drop_sniffer_post;
uint32_t r7_drop_sniffer_others;
uint32_t r8_reset_rx_base;
uint32_t r8_reload;
uint32_t rh1_sta_drop_conn_null;
uint32_t rh1_sta_drop_too_short;
uint32_t rh1_sta_drop_wrong_version;
uint32_t rh1_sta_drop_not_my_bss;
uint32_t rh1_sta_drop_mgmt_too_short1;
uint32_t rh1_sta_drop_mgmt_probe_inq;
uint32_t rh1_sta_drop_dup;
uint32_t rh1_sta_drop_data_not_assoc;
uint32_t rh1_sta_drop_data_too_short;
uint32_t rh1_sta_drop_data_not_fromds;
uint32_t rh1_sta_drop_data_invalid_key;
uint32_t rh1_sta_drop_data_frag;
uint32_t rh1_sta_drop_data_mic;
uint32_t rh1_sta_drop_data_encap;
uint32_t rh1_sta_drop_data_null_key;
uint32_t rh1_sta_drop_data_unencrypt;
uint32_t rh1_sta_data_to_lwip;
uint32_t rh1_sta_mgmt;
uint32_t rh1_sta_drop_mgmt_not_nods;
uint32_t rh1_sta_drop_mgmt_too_short2;
uint32_t rh1_sta_drop_mgmt_bip_check;
uint32_t rh1_sta_ctrl;
uint32_t rh2_sta_eapol_wps_succ;
uint32_t rh2_sta_eapol_wps_fail;
uint32_t rh2_sta_eapol_wps_null_handle;
uint32_t rh2_sta_drop_not_8021x_auth;
uint32_t rh2_sta_drop_not_allow_eapol;
uint32_t rh2_sta_eapol_wpa2e_succ;
uint32_t rh2_sta_drop_eapol_wpa2e_null_handle;
uint32_t rh2_sta_drop_eapol_wpa2e_state;
uint32_t rh2_sta_eapol_wpa_succ;
uint32_t rh2_sta_drop_eapol_wpa_fail;
uint32_t rh2_sta_drop_eapol_wpa_null_handle;
uint32_t rh3_data_amsdu;
uint32_t rh3_drop_data_amsdu_too_short;
uint32_t rh3_drop_data_amsdu_no_mem;
uint32_t rh3_drop_data_amsdu_remain_too_short;
uint32_t rh3_sta_data_amsdu_mpdu;
uint32_t rh3_ap_data_amsdu_mpdu;
uint32_t rh4_sta_mgmt_beacon;
uint32_t rh4_sta_mgmt_probe_resp;
uint32_t rh4_sta_mgmt_auth;
uint32_t rh4_sta_mgmt_deauth;
uint32_t rh4_sta_mgmt_assoc;
uint32_t rh4_sta_mgmt_action;
uint32_t rh4_sta_drop_mgmt_disassoc_unencrypt;
uint32_t rh4_sta_drop_mgmt_disassoc_not_my;
uint32_t rh4_sta_drop_mgmt_unencrypt;
uint32_t rh4_sta_mgmt_disassoc;
uint32_t rh4_sta_drop_mgmt_unexpected;
uint32_t rh5_sta_beacon_csa;
uint32_t rh5_sta_drop_beacon_out_of_reg;
uint32_t rh1_ap_data_fwd;
uint32_t rh1_ap_drop_data_null_cb;
uint32_t rh1_ap_data_to_lwip;
uint32_t rh1_ap_drop_data_rxcb_null;
uint32_t rh1_ap_drop_wrong_version;
uint32_t rh1_ap_drop_ds2ds;
uint32_t rh1_ap_drop_data_null_bss;
uint32_t rh1_ap_drop_nondata_null_bss;
uint32_t rh1_ap_drop_null_bss;
uint32_t rh1_ap_drop_bcast_null_bss;
uint32_t rh1_ap_drop_not_my_bss1;
uint32_t rh1_ap_drop_not_my_bss2;
uint32_t rh1_ap_drop_too_short1;
uint32_t rh1_ap_drop_too_short2;
uint32_t rh1_ap_drop_mgmt_too_short1;
uint32_t rh1_ap_drop_mgmt_too_short2;
uint32_t rh1_ap_drop_data_too_short;
uint32_t rh1_ap_drop_data_not_tods;
uint32_t rh1_ap_drop_data_not_assoc;
uint32_t rh1_ap_drop_data_wep;
uint32_t rh1_ap_drop_data_key;
uint32_t rh1_ap_drop_data_decap;
uint32_t rh1_ap_drop_data_8021x_auth;
uint32_t rh1_ap_eapol_succ1;
uint32_t rh1_ap_eapol_succ2;
uint32_t rh1_ap_drop_eapol_null_handle1;
uint32_t rh1_ap_drop_eapol_null_handle2;
uint32_t rh1_ap_drop_data_unencrypt;
uint32_t rh1_ap_mgmt;
uint32_t rh1_ap_drop_mgmt_nods;
uint32_t rh1_ap_drop_mgmt_mcast;
uint32_t rh1_ap_drop_mgmt_encrypted;
uint32_t rh1_ap_drop_mgmt_privacy;
uint32_t rh1_ap_drop_mgmt_key;
uint32_t rh1_ap_ctrl;
uint32_t rh1_ap_drop_unknow_type;
uint32_t rh1_ap_drop_dup;
uint32_t rh2_ap_mgmt_beacon;
uint32_t rh2_ap_mgmt_probe_resp;
uint32_t rh2_ap_mgmt_probe_req;
uint32_t rh2_ap_mgmt_auth;
uint32_t rh2_ap_mgmt_assoc;
uint32_t rh2_ap_mgmt_deauth_deassoc;
uint32_t rh2_ap_mgmt_action;
uint32_t rh2_ap_mgmt_other;
uint32_t rh5_drop_ampdu_oos1;
uint32_t rh5_drop_ampdu_oos2;
uint32_t rh5_drop_ampdu_tid;
uint32_t rh5_drop_ampdu_frag;
uint32_t rh5_drop_ampdu_dup;
uint32_t pm_bcn_interval;
uint32_t pm_dtim_period;
uint32_t pm_listen_interval;
uint32_t pm_tbtt;
uint32_t pm_rx_bcn;
uint32_t pm_active_timeout;
uint32_t pm_wake_tx;
uint32_t pm_wake_tbtt;
uint32_t pm_wake_tim;
uint32_t pm_wake_dtim;
uint32_t pm_sleep_null;
uint32_t pm_wake_null;
uint32_t pm_sleep;
uint32_t pm_wake;
uint32_t pm_bcn_delay_time;
uint32_t pm_max_bcn_delay_time;
uint32_t pm_avg_bcn_delay_time;
uint64_t pm_sleep_time;
uint64_t pm_wake_time;
uint64_t pm_total_time;
uint32_t t1_en_waitq;
uint32_t t1_drop_sec;
uint32_t t1_drop_enq_fail;
uint32_t t1_drop_stop;
uint32_t t2_ampdu_to_mpdu;
uint32_t t3_en_waitq;
uint16_t t4_doneq_len;
uint16_t t4_waitq0_len;
uint16_t t4_waitq1_len;
uint16_t t4_rxq_len;
uint16_t t4_qlen[WIFI_LMAC_QUEUE_NUM];
uint32_t t5_drop_aged[WIFI_LMAC_AC_NUM];
uint16_t t6_succ[WIFI_LMAC_AC_NUM];
uint32_t t7_drop_src[WIFI_LMAC_AC_NUM];
uint32_t t7_drop_lrc[WIFI_LMAC_AC_NUM];
uint32_t t7_drop_others[WIFI_LMAC_AC_NUM];
uint32_t t8_drop_src[WIFI_LMAC_AC_NUM];
uint32_t t8_drop_lrc[WIFI_LMAC_AC_NUM];
uint32_t t8_drop_others[WIFI_LMAC_AC_NUM];
uint32_t t9_drop_src[WIFI_LMAC_AC_NUM];
uint32_t t9_drop_lrc[WIFI_LMAC_AC_NUM];
uint32_t t9_drop_others[WIFI_LMAC_AC_NUM];
uint32_t t10_complete_invalid_state;
uint32_t t10_complete_succ[WIFI_LMAC_AC_NUM];
uint32_t t10_complete_cts_err[WIFI_LMAC_AC_NUM];
uint32_t t10_complete_ack_err[WIFI_LMAC_AC_NUM];
uint32_t t10_complete_data_err[WIFI_LMAC_AC_NUM];
uint32_t t10_complete_other_err[WIFI_LMAC_AC_NUM];
uint32_t t11_timeout[WIFI_LMAC_AC_NUM];
uint32_t t12_collision[WIFI_LMAC_AC_NUM];
uint32_t t13_complete_rts_collision_err[WIFI_LMAC_AC_NUM];
uint32_t t13_complete_rts_seckid_err[WIFI_LMAC_AC_NUM];
uint32_t t14_complete_data_collision_err[WIFI_LMAC_AC_NUM];
uint32_t t14_complete_data_seckid_err[WIFI_LMAC_AC_NUM];
uint32_t t14_complete_data_zero_err[WIFI_LMAC_AC_NUM];
uint32_t t14_complete_data_other_err[WIFI_LMAC_AC_NUM];
uint32_t t15_send_bar[WIFI_LMAC_AC_NUM];
uint32_t t16_txq_free_len;
uint32_t t16_txq_forward_len;
uint32_t t16_txq_wait_len;
wifi_stats_hmac_tx_t tx[2];
uint32_t pp_post_overflow;
uint32_t pp_post_fail;
uint32_t ap_alloc;
uint32_t ap_free;
uint32_t sta_alloc;
uint32_t sta_free;
uint32_t bss_alloc;
uint32_t bss_free;
uint32_t tap_alloc;
uint32_t tap_free;
uint32_t rap_alloc;
uint32_t rap_free;
uint32_t rap_eb_alloc;
uint32_t rap_eb_free;
uint32_t scan_bss_alloc;
uint32_t scan_bss_free;
} wifi_stats_optional_t;
typedef struct {
wifi_stats_mandatory_t mandatory;
wifi_stats_optional_t optional;
} wifi_stats_t;
//WiFi Internal Statistics
#define WIFI_MODULE_HW_DIAG (1)
#define WIFI_MODULE_HW_COUNTERS (1<<1)
#define WIFI_MODULE_HW_MISC (1<<2)
#define WIFI_MODULE_INT_COUNTERS (1<<3)
#define WIFI_MODULE_BUFFER_COUNTERS (1<<4)
#define WIFI_MODULE_RX_COUNTERS (1<<5)
#define WIFI_MODULE_TX_COUNTERS (1<<6)
#define WIFI_MODULE_SLEEP (1<<7)
#define WIFI_MODULE_EVENT_COUNTERS (1<<8)
#define WIFI_MODULE_NVS (1<<9)
#define WIFI_MODULE_STA (1<<10)
#define WIFI_MODULE_AP (1<<11)
#define WIFI_MODULE_TRC (1<<12)
esp_err_t esp_wifi_stats_get(wifi_stats_t *stats);
void esp_wifi_dump_stats(const wifi_stats_t *stats, uint64_t modules);
void esp_wifi_dump_info(uint64_t modules);
esp_err_t esp_wifi_stats_init(void);
esp_err_t esp_wifi_stats_deinit(void);
void esp_wifi_dump(uint64_t modules);
#ifdef __cplusplus
extern "C" {
#endif
#ifdef __cplusplus
}
#endif
#endif /* __ESP_WIFI_DEBUG_H__ */