Path: blob/main/sys/contrib/dev/athk/ath11k/debugfs.h
48378 views
/* SPDX-License-Identifier: BSD-3-Clause-Clear */1/*2* Copyright (c) 2018-2019 The Linux Foundation. All rights reserved.3*/45#ifndef _ATH11K_DEBUGFS_H_6#define _ATH11K_DEBUGFS_H_78#include "hal_tx.h"910#define ATH11K_TX_POWER_MAX_VAL 7011#define ATH11K_TX_POWER_MIN_VAL 01213/* htt_dbg_ext_stats_type */14enum ath11k_dbg_htt_ext_stats_type {15ATH11K_DBG_HTT_EXT_STATS_RESET = 0,16ATH11K_DBG_HTT_EXT_STATS_PDEV_TX = 1,17ATH11K_DBG_HTT_EXT_STATS_PDEV_RX = 2,18ATH11K_DBG_HTT_EXT_STATS_PDEV_TX_HWQ = 3,19ATH11K_DBG_HTT_EXT_STATS_PDEV_TX_SCHED = 4,20ATH11K_DBG_HTT_EXT_STATS_PDEV_ERROR = 5,21ATH11K_DBG_HTT_EXT_STATS_PDEV_TQM = 6,22ATH11K_DBG_HTT_EXT_STATS_TQM_CMDQ = 7,23ATH11K_DBG_HTT_EXT_STATS_TX_DE_INFO = 8,24ATH11K_DBG_HTT_EXT_STATS_PDEV_TX_RATE = 9,25ATH11K_DBG_HTT_EXT_STATS_PDEV_RX_RATE = 10,26ATH11K_DBG_HTT_EXT_STATS_PEER_INFO = 11,27ATH11K_DBG_HTT_EXT_STATS_TX_SELFGEN_INFO = 12,28ATH11K_DBG_HTT_EXT_STATS_TX_MU_HWQ = 13,29ATH11K_DBG_HTT_EXT_STATS_RING_IF_INFO = 14,30ATH11K_DBG_HTT_EXT_STATS_SRNG_INFO = 15,31ATH11K_DBG_HTT_EXT_STATS_SFM_INFO = 16,32ATH11K_DBG_HTT_EXT_STATS_PDEV_TX_MU = 17,33ATH11K_DBG_HTT_EXT_STATS_ACTIVE_PEERS_LIST = 18,34ATH11K_DBG_HTT_EXT_STATS_PDEV_CCA_STATS = 19,35ATH11K_DBG_HTT_EXT_STATS_TWT_SESSIONS = 20,36ATH11K_DBG_HTT_EXT_STATS_REO_RESOURCE_STATS = 21,37ATH11K_DBG_HTT_EXT_STATS_TX_SOUNDING_INFO = 22,38ATH11K_DBG_HTT_EXT_STATS_PDEV_OBSS_PD_STATS = 23,39ATH11K_DBG_HTT_EXT_STATS_RING_BACKPRESSURE_STATS = 24,40ATH11K_DBG_HTT_EXT_STATS_PEER_CTRL_PATH_TXRX_STATS = 29,41ATH11K_DBG_HTT_EXT_STATS_PDEV_TX_RATE_TXBF_STATS = 31,42ATH11K_DBG_HTT_EXT_STATS_TXBF_OFDMA = 32,43ATH11K_DBG_HTT_EXT_PHY_COUNTERS_AND_PHY_STATS = 37,4445/* keep this last */46ATH11K_DBG_HTT_NUM_EXT_STATS,47};4849#define ATH11K_DEBUG_DBR_ENTRIES_MAX 5125051enum ath11k_dbg_dbr_event {52ATH11K_DBG_DBR_EVENT_INVALID,53ATH11K_DBG_DBR_EVENT_RX,54ATH11K_DBG_DBR_EVENT_REPLENISH,55ATH11K_DBG_DBR_EVENT_MAX,56};5758struct ath11k_dbg_dbr_entry {59u32 hp;60u32 tp;61u64 timestamp;62enum ath11k_dbg_dbr_event event;63};6465struct ath11k_dbg_dbr_data {66/* protects ath11k_db_ring_debug data */67spinlock_t lock;68struct ath11k_dbg_dbr_entry *entries;69u32 dbr_debug_idx;70u32 num_ring_debug_entries;71};7273struct ath11k_debug_dbr {74struct ath11k_dbg_dbr_data dbr_dbg_data;75struct dentry *dbr_debugfs;76bool dbr_debug_enabled;77};7879struct debug_htt_stats_req {80bool done;81u8 pdev_id;82u8 type;83u8 peer_addr[ETH_ALEN];84struct completion cmpln;85u32 buf_len;86u8 buf[];87};8889struct ath_pktlog_hdr {90u16 flags;91u16 missed_cnt;92u16 log_type;93u16 size;94u32 timestamp;95u32 type_specific_data;96u8 payload[];97};9899#define ATH11K_HTT_PEER_STATS_RESET BIT(16)100101#define ATH11K_HTT_STATS_BUF_SIZE (1024 * 512)102#define ATH11K_FW_STATS_BUF_SIZE (1024 * 1024)103104enum ath11k_pktlog_filter {105ATH11K_PKTLOG_RX = 0x000000001,106ATH11K_PKTLOG_TX = 0x000000002,107ATH11K_PKTLOG_RCFIND = 0x000000004,108ATH11K_PKTLOG_RCUPDATE = 0x000000008,109ATH11K_PKTLOG_EVENT_SMART_ANT = 0x000000020,110ATH11K_PKTLOG_EVENT_SW = 0x000000040,111ATH11K_PKTLOG_ANY = 0x00000006f,112};113114enum ath11k_pktlog_mode {115ATH11K_PKTLOG_MODE_LITE = 1,116ATH11K_PKTLOG_MODE_FULL = 2,117};118119enum ath11k_pktlog_enum {120ATH11K_PKTLOG_TYPE_INVALID = 0,121ATH11K_PKTLOG_TYPE_TX_CTRL = 1,122ATH11K_PKTLOG_TYPE_TX_STAT = 2,123ATH11K_PKTLOG_TYPE_TX_MSDU_ID = 3,124ATH11K_PKTLOG_TYPE_RX_STAT = 5,125ATH11K_PKTLOG_TYPE_RC_FIND = 6,126ATH11K_PKTLOG_TYPE_RC_UPDATE = 7,127ATH11K_PKTLOG_TYPE_TX_VIRT_ADDR = 8,128ATH11K_PKTLOG_TYPE_RX_CBF = 10,129ATH11K_PKTLOG_TYPE_RX_STATBUF = 22,130ATH11K_PKTLOG_TYPE_PPDU_STATS = 23,131ATH11K_PKTLOG_TYPE_LITE_RX = 24,132};133134enum ath11k_dbg_aggr_mode {135ATH11K_DBG_AGGR_MODE_AUTO,136ATH11K_DBG_AGGR_MODE_MANUAL,137ATH11K_DBG_AGGR_MODE_MAX,138};139140enum fw_dbglog_wlan_module_id {141WLAN_MODULE_ID_MIN = 0,142WLAN_MODULE_INF = WLAN_MODULE_ID_MIN,143WLAN_MODULE_WMI,144WLAN_MODULE_STA_PWRSAVE,145WLAN_MODULE_WHAL,146WLAN_MODULE_COEX,147WLAN_MODULE_ROAM,148WLAN_MODULE_RESMGR_CHAN_MANAGER,149WLAN_MODULE_RESMGR,150WLAN_MODULE_VDEV_MGR,151WLAN_MODULE_SCAN,152WLAN_MODULE_RATECTRL,153WLAN_MODULE_AP_PWRSAVE,154WLAN_MODULE_BLOCKACK,155WLAN_MODULE_MGMT_TXRX,156WLAN_MODULE_DATA_TXRX,157WLAN_MODULE_HTT,158WLAN_MODULE_HOST,159WLAN_MODULE_BEACON,160WLAN_MODULE_OFFLOAD,161WLAN_MODULE_WAL,162WLAN_WAL_MODULE_DE,163WLAN_MODULE_PCIELP,164WLAN_MODULE_RTT,165WLAN_MODULE_RESOURCE,166WLAN_MODULE_DCS,167WLAN_MODULE_CACHEMGR,168WLAN_MODULE_ANI,169WLAN_MODULE_P2P,170WLAN_MODULE_CSA,171WLAN_MODULE_NLO,172WLAN_MODULE_CHATTER,173WLAN_MODULE_WOW,174WLAN_MODULE_WAL_VDEV,175WLAN_MODULE_WAL_PDEV,176WLAN_MODULE_TEST,177WLAN_MODULE_STA_SMPS,178WLAN_MODULE_SWBMISS,179WLAN_MODULE_WMMAC,180WLAN_MODULE_TDLS,181WLAN_MODULE_HB,182WLAN_MODULE_TXBF,183WLAN_MODULE_BATCH_SCAN,184WLAN_MODULE_THERMAL_MGR,185WLAN_MODULE_PHYERR_DFS,186WLAN_MODULE_RMC,187WLAN_MODULE_STATS,188WLAN_MODULE_NAN,189WLAN_MODULE_IBSS_PWRSAVE,190WLAN_MODULE_HIF_UART,191WLAN_MODULE_LPI,192WLAN_MODULE_EXTSCAN,193WLAN_MODULE_UNIT_TEST,194WLAN_MODULE_MLME,195WLAN_MODULE_SUPPL,196WLAN_MODULE_ERE,197WLAN_MODULE_OCB,198WLAN_MODULE_RSSI_MONITOR,199WLAN_MODULE_WPM,200WLAN_MODULE_CSS,201WLAN_MODULE_PPS,202WLAN_MODULE_SCAN_CH_PREDICT,203WLAN_MODULE_MAWC,204WLAN_MODULE_CMC_QMIC,205WLAN_MODULE_EGAP,206WLAN_MODULE_NAN20,207WLAN_MODULE_QBOOST,208WLAN_MODULE_P2P_LISTEN_OFFLOAD,209WLAN_MODULE_HALPHY,210WLAN_WAL_MODULE_ENQ,211WLAN_MODULE_GNSS,212WLAN_MODULE_WAL_MEM,213WLAN_MODULE_SCHED_ALGO,214WLAN_MODULE_TX,215WLAN_MODULE_RX,216WLAN_MODULE_WLM,217WLAN_MODULE_RU_ALLOCATOR,218WLAN_MODULE_11K_OFFLOAD,219WLAN_MODULE_STA_TWT,220WLAN_MODULE_AP_TWT,221WLAN_MODULE_UL_OFDMA,222WLAN_MODULE_HPCS_PULSE,223WLAN_MODULE_DTF,224WLAN_MODULE_QUIET_IE,225WLAN_MODULE_SHMEM_MGR,226WLAN_MODULE_CFIR,227WLAN_MODULE_CODE_COVER,228WLAN_MODULE_SHO,229WLAN_MODULE_MLO_MGR,230WLAN_MODULE_PEER_INIT,231WLAN_MODULE_STA_MLO_PS,232233WLAN_MODULE_ID_MAX,234WLAN_MODULE_ID_INVALID = WLAN_MODULE_ID_MAX,235};236237enum fw_dbglog_log_level {238ATH11K_FW_DBGLOG_ML = 0,239ATH11K_FW_DBGLOG_VERBOSE = 0,240ATH11K_FW_DBGLOG_INFO,241ATH11K_FW_DBGLOG_INFO_LVL_1,242ATH11K_FW_DBGLOG_INFO_LVL_2,243ATH11K_FW_DBGLOG_WARN,244ATH11K_FW_DBGLOG_ERR,245ATH11K_FW_DBGLOG_LVL_MAX246};247248struct ath11k_fw_dbglog {249enum wmi_debug_log_param param;250union {251struct {252/* log_level values are given in enum fw_dbglog_log_level */253u16 log_level;254/* module_id values are given in enum fw_dbglog_wlan_module_id */255u16 module_id;256};257/* value is either log_level&module_id/vdev_id/vdev_id_bitmap/log_level258* according to param259*/260u32 value;261};262};263264#ifdef CONFIG_ATH11K_DEBUGFS265int ath11k_debugfs_soc_create(struct ath11k_base *ab);266void ath11k_debugfs_soc_destroy(struct ath11k_base *ab);267int ath11k_debugfs_pdev_create(struct ath11k_base *ab);268void ath11k_debugfs_pdev_destroy(struct ath11k_base *ab);269int ath11k_debugfs_register(struct ath11k *ar);270void ath11k_debugfs_unregister(struct ath11k *ar);271void ath11k_debugfs_fw_stats_process(struct ath11k *ar, struct ath11k_fw_stats *stats);272273void ath11k_debugfs_fw_stats_init(struct ath11k *ar);274int ath11k_debugfs_get_fw_stats(struct ath11k *ar, u32 pdev_id,275u32 vdev_id, u32 stats_id);276277static inline bool ath11k_debugfs_is_pktlog_lite_mode_enabled(struct ath11k *ar)278{279return (ar->debug.pktlog_mode == ATH11K_PKTLOG_MODE_LITE);280}281282static inline bool ath11k_debugfs_is_pktlog_rx_stats_enabled(struct ath11k *ar)283{284return (!ar->debug.pktlog_peer_valid && ar->debug.pktlog_mode);285}286287static inline bool ath11k_debugfs_is_pktlog_peer_valid(struct ath11k *ar, u8 *addr)288{289return (ar->debug.pktlog_peer_valid && ar->debug.pktlog_mode &&290ether_addr_equal(addr, ar->debug.pktlog_peer_addr));291}292293static inline int ath11k_debugfs_is_extd_tx_stats_enabled(struct ath11k *ar)294{295return ar->debug.extd_tx_stats;296}297298static inline int ath11k_debugfs_is_extd_rx_stats_enabled(struct ath11k *ar)299{300return ar->debug.extd_rx_stats;301}302303static inline int ath11k_debugfs_rx_filter(struct ath11k *ar)304{305return ar->debug.rx_filter;306}307308void ath11k_debugfs_add_interface(struct ath11k_vif *arvif);309void ath11k_debugfs_remove_interface(struct ath11k_vif *arvif);310void ath11k_debugfs_add_dbring_entry(struct ath11k *ar,311enum wmi_direct_buffer_module id,312enum ath11k_dbg_dbr_event event,313struct hal_srng *srng);314315#else316static inline int ath11k_debugfs_soc_create(struct ath11k_base *ab)317{318return 0;319}320321static inline void ath11k_debugfs_soc_destroy(struct ath11k_base *ab)322{323}324325static inline int ath11k_debugfs_pdev_create(struct ath11k_base *ab)326{327return 0;328}329330static inline void ath11k_debugfs_pdev_destroy(struct ath11k_base *ab)331{332}333334static inline int ath11k_debugfs_register(struct ath11k *ar)335{336return 0;337}338339static inline void ath11k_debugfs_unregister(struct ath11k *ar)340{341}342343static inline void ath11k_debugfs_fw_stats_process(struct ath11k *ar,344struct ath11k_fw_stats *stats)345{346}347348static inline void ath11k_debugfs_fw_stats_init(struct ath11k *ar)349{350}351352static inline int ath11k_debugfs_is_extd_tx_stats_enabled(struct ath11k *ar)353{354return 0;355}356357static inline int ath11k_debugfs_is_extd_rx_stats_enabled(struct ath11k *ar)358{359return 0;360}361362static inline bool ath11k_debugfs_is_pktlog_lite_mode_enabled(struct ath11k *ar)363{364return false;365}366367static inline bool ath11k_debugfs_is_pktlog_rx_stats_enabled(struct ath11k *ar)368{369return false;370}371372static inline bool ath11k_debugfs_is_pktlog_peer_valid(struct ath11k *ar, u8 *addr)373{374return false;375}376377static inline int ath11k_debugfs_rx_filter(struct ath11k *ar)378{379return 0;380}381382static inline int ath11k_debugfs_get_fw_stats(struct ath11k *ar,383u32 pdev_id, u32 vdev_id, u32 stats_id)384{385return 0;386}387388static inline void ath11k_debugfs_add_interface(struct ath11k_vif *arvif)389{390}391392static inline void ath11k_debugfs_remove_interface(struct ath11k_vif *arvif)393{394}395396static inline void397ath11k_debugfs_add_dbring_entry(struct ath11k *ar,398enum wmi_direct_buffer_module id,399enum ath11k_dbg_dbr_event event,400struct hal_srng *srng)401{402}403#endif /* CONFIG_ATH11K_DEBUGFS*/404405#endif /* _ATH11K_DEBUGFS_H_ */406407408