Path: blob/main/sys/contrib/dev/athk/ath11k/debugfs.h
105239 views
/* SPDX-License-Identifier: BSD-3-Clause-Clear */1/*2* Copyright (c) 2018-2019 The Linux Foundation. All rights reserved.3* Copyright (c) 2021-2022, 2025 Qualcomm Innovation Center, Inc. All rights reserved.4*/56#ifndef _ATH11K_DEBUGFS_H_7#define _ATH11K_DEBUGFS_H_89#include "hal_tx.h"1011#define ATH11K_TX_POWER_MAX_VAL 7012#define ATH11K_TX_POWER_MIN_VAL 01314/* htt_dbg_ext_stats_type */15enum ath11k_dbg_htt_ext_stats_type {16ATH11K_DBG_HTT_EXT_STATS_RESET = 0,17ATH11K_DBG_HTT_EXT_STATS_PDEV_TX = 1,18ATH11K_DBG_HTT_EXT_STATS_PDEV_RX = 2,19ATH11K_DBG_HTT_EXT_STATS_PDEV_TX_HWQ = 3,20ATH11K_DBG_HTT_EXT_STATS_PDEV_TX_SCHED = 4,21ATH11K_DBG_HTT_EXT_STATS_PDEV_ERROR = 5,22ATH11K_DBG_HTT_EXT_STATS_PDEV_TQM = 6,23ATH11K_DBG_HTT_EXT_STATS_TQM_CMDQ = 7,24ATH11K_DBG_HTT_EXT_STATS_TX_DE_INFO = 8,25ATH11K_DBG_HTT_EXT_STATS_PDEV_TX_RATE = 9,26ATH11K_DBG_HTT_EXT_STATS_PDEV_RX_RATE = 10,27ATH11K_DBG_HTT_EXT_STATS_PEER_INFO = 11,28ATH11K_DBG_HTT_EXT_STATS_TX_SELFGEN_INFO = 12,29ATH11K_DBG_HTT_EXT_STATS_TX_MU_HWQ = 13,30ATH11K_DBG_HTT_EXT_STATS_RING_IF_INFO = 14,31ATH11K_DBG_HTT_EXT_STATS_SRNG_INFO = 15,32ATH11K_DBG_HTT_EXT_STATS_SFM_INFO = 16,33ATH11K_DBG_HTT_EXT_STATS_PDEV_TX_MU = 17,34ATH11K_DBG_HTT_EXT_STATS_ACTIVE_PEERS_LIST = 18,35ATH11K_DBG_HTT_EXT_STATS_PDEV_CCA_STATS = 19,36ATH11K_DBG_HTT_EXT_STATS_TWT_SESSIONS = 20,37ATH11K_DBG_HTT_EXT_STATS_REO_RESOURCE_STATS = 21,38ATH11K_DBG_HTT_EXT_STATS_TX_SOUNDING_INFO = 22,39ATH11K_DBG_HTT_EXT_STATS_PDEV_OBSS_PD_STATS = 23,40ATH11K_DBG_HTT_EXT_STATS_RING_BACKPRESSURE_STATS = 24,41ATH11K_DBG_HTT_EXT_STATS_PEER_CTRL_PATH_TXRX_STATS = 29,42ATH11K_DBG_HTT_EXT_STATS_PDEV_TX_RATE_TXBF_STATS = 31,43ATH11K_DBG_HTT_EXT_STATS_TXBF_OFDMA = 32,44ATH11K_DBG_HTT_EXT_PHY_COUNTERS_AND_PHY_STATS = 37,4546/* keep this last */47ATH11K_DBG_HTT_NUM_EXT_STATS,48};4950#define ATH11K_DEBUG_DBR_ENTRIES_MAX 5125152enum ath11k_dbg_dbr_event {53ATH11K_DBG_DBR_EVENT_INVALID,54ATH11K_DBG_DBR_EVENT_RX,55ATH11K_DBG_DBR_EVENT_REPLENISH,56ATH11K_DBG_DBR_EVENT_MAX,57};5859struct ath11k_dbg_dbr_entry {60u32 hp;61u32 tp;62u64 timestamp;63enum ath11k_dbg_dbr_event event;64};6566struct ath11k_dbg_dbr_data {67/* protects ath11k_db_ring_debug data */68spinlock_t lock;69struct ath11k_dbg_dbr_entry *entries;70u32 dbr_debug_idx;71u32 num_ring_debug_entries;72};7374struct ath11k_debug_dbr {75struct ath11k_dbg_dbr_data dbr_dbg_data;76struct dentry *dbr_debugfs;77bool dbr_debug_enabled;78};7980struct debug_htt_stats_req {81bool done;82u8 pdev_id;83u8 type;84u8 peer_addr[ETH_ALEN];85struct completion cmpln;86u32 buf_len;87u8 buf[];88};8990struct ath_pktlog_hdr {91u16 flags;92u16 missed_cnt;93u16 log_type;94u16 size;95u32 timestamp;96u32 type_specific_data;97u8 payload[];98};99100#define ATH11K_HTT_PEER_STATS_RESET BIT(16)101102#define ATH11K_HTT_STATS_BUF_SIZE (1024 * 512)103#define ATH11K_FW_STATS_BUF_SIZE (1024 * 1024)104105enum ath11k_pktlog_filter {106ATH11K_PKTLOG_RX = 0x000000001,107ATH11K_PKTLOG_TX = 0x000000002,108ATH11K_PKTLOG_RCFIND = 0x000000004,109ATH11K_PKTLOG_RCUPDATE = 0x000000008,110ATH11K_PKTLOG_EVENT_SMART_ANT = 0x000000020,111ATH11K_PKTLOG_EVENT_SW = 0x000000040,112ATH11K_PKTLOG_ANY = 0x00000006f,113};114115enum ath11k_pktlog_mode {116ATH11K_PKTLOG_MODE_LITE = 1,117ATH11K_PKTLOG_MODE_FULL = 2,118};119120enum ath11k_pktlog_enum {121ATH11K_PKTLOG_TYPE_INVALID = 0,122ATH11K_PKTLOG_TYPE_TX_CTRL = 1,123ATH11K_PKTLOG_TYPE_TX_STAT = 2,124ATH11K_PKTLOG_TYPE_TX_MSDU_ID = 3,125ATH11K_PKTLOG_TYPE_RX_STAT = 5,126ATH11K_PKTLOG_TYPE_RC_FIND = 6,127ATH11K_PKTLOG_TYPE_RC_UPDATE = 7,128ATH11K_PKTLOG_TYPE_TX_VIRT_ADDR = 8,129ATH11K_PKTLOG_TYPE_RX_CBF = 10,130ATH11K_PKTLOG_TYPE_RX_STATBUF = 22,131ATH11K_PKTLOG_TYPE_PPDU_STATS = 23,132ATH11K_PKTLOG_TYPE_LITE_RX = 24,133};134135enum ath11k_dbg_aggr_mode {136ATH11K_DBG_AGGR_MODE_AUTO,137ATH11K_DBG_AGGR_MODE_MANUAL,138ATH11K_DBG_AGGR_MODE_MAX,139};140141enum fw_dbglog_wlan_module_id {142WLAN_MODULE_ID_MIN = 0,143WLAN_MODULE_INF = WLAN_MODULE_ID_MIN,144WLAN_MODULE_WMI,145WLAN_MODULE_STA_PWRSAVE,146WLAN_MODULE_WHAL,147WLAN_MODULE_COEX,148WLAN_MODULE_ROAM,149WLAN_MODULE_RESMGR_CHAN_MANAGER,150WLAN_MODULE_RESMGR,151WLAN_MODULE_VDEV_MGR,152WLAN_MODULE_SCAN,153WLAN_MODULE_RATECTRL,154WLAN_MODULE_AP_PWRSAVE,155WLAN_MODULE_BLOCKACK,156WLAN_MODULE_MGMT_TXRX,157WLAN_MODULE_DATA_TXRX,158WLAN_MODULE_HTT,159WLAN_MODULE_HOST,160WLAN_MODULE_BEACON,161WLAN_MODULE_OFFLOAD,162WLAN_MODULE_WAL,163WLAN_WAL_MODULE_DE,164WLAN_MODULE_PCIELP,165WLAN_MODULE_RTT,166WLAN_MODULE_RESOURCE,167WLAN_MODULE_DCS,168WLAN_MODULE_CACHEMGR,169WLAN_MODULE_ANI,170WLAN_MODULE_P2P,171WLAN_MODULE_CSA,172WLAN_MODULE_NLO,173WLAN_MODULE_CHATTER,174WLAN_MODULE_WOW,175WLAN_MODULE_WAL_VDEV,176WLAN_MODULE_WAL_PDEV,177WLAN_MODULE_TEST,178WLAN_MODULE_STA_SMPS,179WLAN_MODULE_SWBMISS,180WLAN_MODULE_WMMAC,181WLAN_MODULE_TDLS,182WLAN_MODULE_HB,183WLAN_MODULE_TXBF,184WLAN_MODULE_BATCH_SCAN,185WLAN_MODULE_THERMAL_MGR,186WLAN_MODULE_PHYERR_DFS,187WLAN_MODULE_RMC,188WLAN_MODULE_STATS,189WLAN_MODULE_NAN,190WLAN_MODULE_IBSS_PWRSAVE,191WLAN_MODULE_HIF_UART,192WLAN_MODULE_LPI,193WLAN_MODULE_EXTSCAN,194WLAN_MODULE_UNIT_TEST,195WLAN_MODULE_MLME,196WLAN_MODULE_SUPPL,197WLAN_MODULE_ERE,198WLAN_MODULE_OCB,199WLAN_MODULE_RSSI_MONITOR,200WLAN_MODULE_WPM,201WLAN_MODULE_CSS,202WLAN_MODULE_PPS,203WLAN_MODULE_SCAN_CH_PREDICT,204WLAN_MODULE_MAWC,205WLAN_MODULE_CMC_QMIC,206WLAN_MODULE_EGAP,207WLAN_MODULE_NAN20,208WLAN_MODULE_QBOOST,209WLAN_MODULE_P2P_LISTEN_OFFLOAD,210WLAN_MODULE_HALPHY,211WLAN_WAL_MODULE_ENQ,212WLAN_MODULE_GNSS,213WLAN_MODULE_WAL_MEM,214WLAN_MODULE_SCHED_ALGO,215WLAN_MODULE_TX,216WLAN_MODULE_RX,217WLAN_MODULE_WLM,218WLAN_MODULE_RU_ALLOCATOR,219WLAN_MODULE_11K_OFFLOAD,220WLAN_MODULE_STA_TWT,221WLAN_MODULE_AP_TWT,222WLAN_MODULE_UL_OFDMA,223WLAN_MODULE_HPCS_PULSE,224WLAN_MODULE_DTF,225WLAN_MODULE_QUIET_IE,226WLAN_MODULE_SHMEM_MGR,227WLAN_MODULE_CFIR,228WLAN_MODULE_CODE_COVER,229WLAN_MODULE_SHO,230WLAN_MODULE_MLO_MGR,231WLAN_MODULE_PEER_INIT,232WLAN_MODULE_STA_MLO_PS,233234WLAN_MODULE_ID_MAX,235WLAN_MODULE_ID_INVALID = WLAN_MODULE_ID_MAX,236};237238enum fw_dbglog_log_level {239ATH11K_FW_DBGLOG_ML = 0,240ATH11K_FW_DBGLOG_VERBOSE = 0,241ATH11K_FW_DBGLOG_INFO,242ATH11K_FW_DBGLOG_INFO_LVL_1,243ATH11K_FW_DBGLOG_INFO_LVL_2,244ATH11K_FW_DBGLOG_WARN,245ATH11K_FW_DBGLOG_ERR,246ATH11K_FW_DBGLOG_LVL_MAX247};248249struct ath11k_fw_dbglog {250enum wmi_debug_log_param param;251union {252struct {253/* log_level values are given in enum fw_dbglog_log_level */254u16 log_level;255/* module_id values are given in enum fw_dbglog_wlan_module_id */256u16 module_id;257};258/* value is either log_level&module_id/vdev_id/vdev_id_bitmap/log_level259* according to param260*/261u32 value;262};263};264265#ifdef CONFIG_ATH11K_DEBUGFS266int ath11k_debugfs_soc_create(struct ath11k_base *ab);267void ath11k_debugfs_soc_destroy(struct ath11k_base *ab);268int ath11k_debugfs_pdev_create(struct ath11k_base *ab);269void ath11k_debugfs_pdev_destroy(struct ath11k_base *ab);270int ath11k_debugfs_register(struct ath11k *ar);271void ath11k_debugfs_unregister(struct ath11k *ar);272void ath11k_debugfs_fw_stats_process(struct ath11k *ar, struct ath11k_fw_stats *stats);273274void ath11k_debugfs_fw_stats_init(struct ath11k *ar);275276static inline bool ath11k_debugfs_is_pktlog_lite_mode_enabled(struct ath11k *ar)277{278return (ar->debug.pktlog_mode == ATH11K_PKTLOG_MODE_LITE);279}280281static inline bool ath11k_debugfs_is_pktlog_rx_stats_enabled(struct ath11k *ar)282{283return (!ar->debug.pktlog_peer_valid && ar->debug.pktlog_mode);284}285286static inline bool ath11k_debugfs_is_pktlog_peer_valid(struct ath11k *ar, u8 *addr)287{288return (ar->debug.pktlog_peer_valid && ar->debug.pktlog_mode &&289ether_addr_equal(addr, ar->debug.pktlog_peer_addr));290}291292static inline int ath11k_debugfs_is_extd_tx_stats_enabled(struct ath11k *ar)293{294return ar->debug.extd_tx_stats;295}296297static inline int ath11k_debugfs_is_extd_rx_stats_enabled(struct ath11k *ar)298{299return ar->debug.extd_rx_stats;300}301302static inline int ath11k_debugfs_rx_filter(struct ath11k *ar)303{304return ar->debug.rx_filter;305}306307void ath11k_debugfs_op_vif_add(struct ieee80211_hw *hw,308struct ieee80211_vif *vif);309void ath11k_debugfs_add_dbring_entry(struct ath11k *ar,310enum wmi_direct_buffer_module id,311enum ath11k_dbg_dbr_event event,312struct hal_srng *srng);313314#else315static inline int ath11k_debugfs_soc_create(struct ath11k_base *ab)316{317return 0;318}319320static inline void ath11k_debugfs_soc_destroy(struct ath11k_base *ab)321{322}323324static inline int ath11k_debugfs_pdev_create(struct ath11k_base *ab)325{326return 0;327}328329static inline void ath11k_debugfs_pdev_destroy(struct ath11k_base *ab)330{331}332333static inline int ath11k_debugfs_register(struct ath11k *ar)334{335return 0;336}337338static inline void ath11k_debugfs_unregister(struct ath11k *ar)339{340}341342static inline void ath11k_debugfs_fw_stats_process(struct ath11k *ar,343struct ath11k_fw_stats *stats)344{345}346347static inline void ath11k_debugfs_fw_stats_init(struct ath11k *ar)348{349}350351static inline int ath11k_debugfs_is_extd_tx_stats_enabled(struct ath11k *ar)352{353return 0;354}355356static inline int ath11k_debugfs_is_extd_rx_stats_enabled(struct ath11k *ar)357{358return 0;359}360361static inline bool ath11k_debugfs_is_pktlog_lite_mode_enabled(struct ath11k *ar)362{363return false;364}365366static inline bool ath11k_debugfs_is_pktlog_rx_stats_enabled(struct ath11k *ar)367{368return false;369}370371static inline bool ath11k_debugfs_is_pktlog_peer_valid(struct ath11k *ar, u8 *addr)372{373return false;374}375376static inline int ath11k_debugfs_rx_filter(struct ath11k *ar)377{378return 0;379}380381static inline void382ath11k_debugfs_add_dbring_entry(struct ath11k *ar,383enum wmi_direct_buffer_module id,384enum ath11k_dbg_dbr_event event,385struct hal_srng *srng)386{387}388#endif /* CONFIG_ATH11K_DEBUGFS*/389390#endif /* _ATH11K_DEBUGFS_H_ */391392393