linux/drivers/net/wireless/ath/ath10k/debug.c

// SPDX-License-Identifier: ISC
/*
 * Copyright (c) 2005-2011 Atheros Communications Inc.
 * Copyright (c) 2011-2017 Qualcomm Atheros, Inc.
 * Copyright (c) 2018, The Linux Foundation. All rights reserved.
 * Copyright (c) 2022 Qualcomm Innovation Center, Inc. All rights reserved.
 */

#include <linux/module.h>
#include <linux/debugfs.h>
#include <linux/vmalloc.h>
#include <linux/crc32.h>
#include <linux/firmware.h>
#include <linux/kstrtox.h>

#include "core.h"
#include "debug.h"
#include "hif.h"
#include "wmi-ops.h"

/* ms */
#define ATH10K_DEBUG_HTT_STATS_INTERVAL

#define ATH10K_DEBUG_CAL_DATA_LEN

void ath10k_info(struct ath10k *ar, const char *fmt, ...)
{}
EXPORT_SYMBOL();

void ath10k_debug_print_hwfw_info(struct ath10k *ar)
{}

void ath10k_debug_print_board_info(struct ath10k *ar)
{}

void ath10k_debug_print_boot_info(struct ath10k *ar)
{}

void ath10k_print_driver_info(struct ath10k *ar)
{}
EXPORT_SYMBOL();

void ath10k_err(struct ath10k *ar, const char *fmt, ...)
{}
EXPORT_SYMBOL();

void ath10k_warn(struct ath10k *ar, const char *fmt, ...)
{}
EXPORT_SYMBOL();

#ifdef CONFIG_ATH10K_DEBUGFS

static ssize_t ath10k_read_wmi_services(struct file *file,
					char __user *user_buf,
					size_t count, loff_t *ppos)
{}

static const struct file_operations fops_wmi_services =;

static void ath10k_fw_stats_pdevs_free(struct list_head *head)
{}

static void ath10k_fw_stats_vdevs_free(struct list_head *head)
{}

static void ath10k_fw_stats_peers_free(struct list_head *head)
{}

static void ath10k_fw_extd_stats_peers_free(struct list_head *head)
{}

static void ath10k_debug_fw_stats_reset(struct ath10k *ar)
{}

void ath10k_debug_fw_stats_process(struct ath10k *ar, struct sk_buff *skb)
{}

int ath10k_debug_fw_stats_request(struct ath10k *ar)
{}

static int ath10k_fw_stats_open(struct inode *inode, struct file *file)
{}

static int ath10k_fw_stats_release(struct inode *inode, struct file *file)
{}

static ssize_t ath10k_fw_stats_read(struct file *file, char __user *user_buf,
				    size_t count, loff_t *ppos)
{}

static const struct file_operations fops_fw_stats =;

static ssize_t ath10k_debug_fw_reset_stats_read(struct file *file,
						char __user *user_buf,
						size_t count, loff_t *ppos)
{}

static const struct file_operations fops_fw_reset_stats =;

/* This is a clean assert crash in firmware. */
static int ath10k_debug_fw_assert(struct ath10k *ar)
{}

static ssize_t ath10k_read_simulate_fw_crash(struct file *file,
					     char __user *user_buf,
					     size_t count, loff_t *ppos)
{}

/* Simulate firmware crash:
 * 'soft': Call wmi command causing firmware hang. This firmware hang is
 * recoverable by warm firmware reset.
 * 'hard': Force firmware crash by setting any vdev parameter for not allowed
 * vdev id. This is hard firmware crash because it is recoverable only by cold
 * firmware reset.
 */
static ssize_t ath10k_write_simulate_fw_crash(struct file *file,
					      const char __user *user_buf,
					      size_t count, loff_t *ppos)
{}

static const struct file_operations fops_simulate_fw_crash =;

static ssize_t ath10k_read_chip_id(struct file *file, char __user *user_buf,
				   size_t count, loff_t *ppos)
{}

static const struct file_operations fops_chip_id =;

static ssize_t ath10k_reg_addr_read(struct file *file,
				    char __user *user_buf,
				    size_t count, loff_t *ppos)
{}

static ssize_t ath10k_reg_addr_write(struct file *file,
				     const char __user *user_buf,
				     size_t count, loff_t *ppos)
{}

static const struct file_operations fops_reg_addr =;

static ssize_t ath10k_reg_value_read(struct file *file,
				     char __user *user_buf,
				     size_t count, loff_t *ppos)
{}

static ssize_t ath10k_reg_value_write(struct file *file,
				      const char __user *user_buf,
				      size_t count, loff_t *ppos)
{}

static const struct file_operations fops_reg_value =;

static ssize_t ath10k_mem_value_read(struct file *file,
				     char __user *user_buf,
				     size_t count, loff_t *ppos)
{}

static ssize_t ath10k_mem_value_write(struct file *file,
				      const char __user *user_buf,
				      size_t count, loff_t *ppos)
{}

static const struct file_operations fops_mem_value =;

static int ath10k_debug_htt_stats_req(struct ath10k *ar)
{}

static void ath10k_debug_htt_stats_dwork(struct work_struct *work)
{}

static ssize_t ath10k_read_htt_stats_mask(struct file *file,
					  char __user *user_buf,
					  size_t count, loff_t *ppos)
{}

static ssize_t ath10k_write_htt_stats_mask(struct file *file,
					   const char __user *user_buf,
					   size_t count, loff_t *ppos)
{}

static const struct file_operations fops_htt_stats_mask =;

static ssize_t ath10k_read_htt_max_amsdu_ampdu(struct file *file,
					       char __user *user_buf,
					       size_t count, loff_t *ppos)
{}

static ssize_t ath10k_write_htt_max_amsdu_ampdu(struct file *file,
						const char __user *user_buf,
						size_t count, loff_t *ppos)
{}

static const struct file_operations fops_htt_max_amsdu_ampdu =;

static ssize_t ath10k_read_fw_dbglog(struct file *file,
				     char __user *user_buf,
				     size_t count, loff_t *ppos)
{}

static ssize_t ath10k_write_fw_dbglog(struct file *file,
				      const char __user *user_buf,
				      size_t count, loff_t *ppos)
{}

/* TODO:  Would be nice to always support ethtool stats, would need to
 * move the stats storage out of ath10k_debug, or always have ath10k_debug
 * struct available..
 */

/* This generally corresponds to the debugfs fw_stats file */
static const char ath10k_gstrings_stats[][ETH_GSTRING_LEN] =;

#define ATH10K_SSTATS_LEN

void ath10k_debug_get_et_strings(struct ieee80211_hw *hw,
				 struct ieee80211_vif *vif,
				 u32 sset, u8 *data)
{}

int ath10k_debug_get_et_sset_count(struct ieee80211_hw *hw,
				   struct ieee80211_vif *vif, int sset)
{}

void ath10k_debug_get_et_stats(struct ieee80211_hw *hw,
			       struct ieee80211_vif *vif,
			       struct ethtool_stats *stats, u64 *data)
{}

static const struct file_operations fops_fw_dbglog =;

static int ath10k_debug_cal_data_fetch(struct ath10k *ar)
{}

static int ath10k_debug_cal_data_open(struct inode *inode, struct file *file)
{}

static ssize_t ath10k_debug_cal_data_read(struct file *file,
					  char __user *user_buf,
					  size_t count, loff_t *ppos)
{}

static ssize_t ath10k_write_ani_enable(struct file *file,
				       const char __user *user_buf,
				       size_t count, loff_t *ppos)
{}

static ssize_t ath10k_read_ani_enable(struct file *file, char __user *user_buf,
				      size_t count, loff_t *ppos)
{}

static const struct file_operations fops_ani_enable =;

static const struct file_operations fops_cal_data =;

static ssize_t ath10k_read_nf_cal_period(struct file *file,
					 char __user *user_buf,
					 size_t count, loff_t *ppos)
{}

static ssize_t ath10k_write_nf_cal_period(struct file *file,
					  const char __user *user_buf,
					  size_t count, loff_t *ppos)
{}

static const struct file_operations fops_nf_cal_period =;

#define ATH10K_TPC_CONFIG_BUF_SIZE

static int ath10k_debug_tpc_stats_request(struct ath10k *ar)
{}

void ath10k_debug_tpc_stats_process(struct ath10k *ar,
				    struct ath10k_tpc_stats *tpc_stats)
{}

void
ath10k_debug_tpc_stats_final_process(struct ath10k *ar,
				     struct ath10k_tpc_stats_final *tpc_stats)
{}

static void ath10k_tpc_stats_print(struct ath10k_tpc_stats *tpc_stats,
				   unsigned int j, char *buf, size_t *len)
{}

static void ath10k_tpc_stats_fill(struct ath10k *ar,
				  struct ath10k_tpc_stats *tpc_stats,
				  char *buf)
{}

static int ath10k_tpc_stats_open(struct inode *inode, struct file *file)
{}

static int ath10k_tpc_stats_release(struct inode *inode, struct file *file)
{}

static ssize_t ath10k_tpc_stats_read(struct file *file, char __user *user_buf,
				     size_t count, loff_t *ppos)
{}

static const struct file_operations fops_tpc_stats =;

int ath10k_debug_start(struct ath10k *ar)
{}

void ath10k_debug_stop(struct ath10k *ar)
{}

static ssize_t ath10k_write_simulate_radar(struct file *file,
					   const char __user *user_buf,
					   size_t count, loff_t *ppos)
{}

static const struct file_operations fops_simulate_radar =;

#define ATH10K_DFS_STAT(s, p)

#define ATH10K_DFS_POOL_STAT(s, p)

static ssize_t ath10k_read_dfs_stats(struct file *file, char __user *user_buf,
				     size_t count, loff_t *ppos)
{}

static const struct file_operations fops_dfs_stats =;

static ssize_t ath10k_write_pktlog_filter(struct file *file,
					  const char __user *ubuf,
					  size_t count, loff_t *ppos)
{}

static ssize_t ath10k_read_pktlog_filter(struct file *file, char __user *ubuf,
					 size_t count, loff_t *ppos)
{}

static const struct file_operations fops_pktlog_filter =;

static ssize_t ath10k_write_quiet_period(struct file *file,
					 const char __user *ubuf,
					 size_t count, loff_t *ppos)
{}

static ssize_t ath10k_read_quiet_period(struct file *file, char __user *ubuf,
					size_t count, loff_t *ppos)
{}

static const struct file_operations fops_quiet_period =;

static ssize_t ath10k_write_btcoex(struct file *file,
				   const char __user *ubuf,
				   size_t count, loff_t *ppos)
{}

static ssize_t ath10k_read_btcoex(struct file *file, char __user *ubuf,
				  size_t count, loff_t *ppos)
{}

static const struct file_operations fops_btcoex =;

static ssize_t ath10k_write_enable_extd_tx_stats(struct file *file,
						 const char __user *ubuf,
						 size_t count, loff_t *ppos)
{}

static ssize_t ath10k_read_enable_extd_tx_stats(struct file *file,
						char __user *ubuf,
						size_t count, loff_t *ppos)

{}

static const struct file_operations fops_enable_extd_tx_stats =;

static ssize_t ath10k_write_peer_stats(struct file *file,
				       const char __user *ubuf,
				       size_t count, loff_t *ppos)
{}

static ssize_t ath10k_read_peer_stats(struct file *file, char __user *ubuf,
				      size_t count, loff_t *ppos)

{}

static const struct file_operations fops_peer_stats =;

static ssize_t ath10k_debug_fw_checksums_read(struct file *file,
					      char __user *user_buf,
					      size_t count, loff_t *ppos)
{}

static const struct file_operations fops_fw_checksums =;

static ssize_t ath10k_sta_tid_stats_mask_read(struct file *file,
					      char __user *user_buf,
					      size_t count, loff_t *ppos)
{}

static ssize_t ath10k_sta_tid_stats_mask_write(struct file *file,
					       const char __user *user_buf,
					       size_t count, loff_t *ppos)
{}

static const struct file_operations fops_sta_tid_stats_mask =;

static int ath10k_debug_tpc_stats_final_request(struct ath10k *ar)
{}

static int ath10k_tpc_stats_final_open(struct inode *inode, struct file *file)
{}

static int ath10k_tpc_stats_final_release(struct inode *inode,
					  struct file *file)
{}

static ssize_t ath10k_tpc_stats_final_read(struct file *file,
					   char __user *user_buf,
					   size_t count, loff_t *ppos)
{}

static const struct file_operations fops_tpc_stats_final =;

static ssize_t ath10k_write_warm_hw_reset(struct file *file,
					  const char __user *user_buf,
					  size_t count, loff_t *ppos)
{}

static const struct file_operations fops_warm_hw_reset =;

static void ath10k_peer_ps_state_disable(void *data,
					 struct ieee80211_sta *sta)
{}

static ssize_t ath10k_write_ps_state_enable(struct file *file,
					    const char __user *user_buf,
					    size_t count, loff_t *ppos)
{}

static ssize_t ath10k_read_ps_state_enable(struct file *file,
					   char __user *user_buf,
					   size_t count, loff_t *ppos)
{}

static const struct file_operations fops_ps_state_enable =;

static ssize_t ath10k_write_reset_htt_stats(struct file *file,
					    const char __user *user_buf,
					    size_t count, loff_t *ppos)
{}

static const struct file_operations fops_reset_htt_stats =;

int ath10k_debug_create(struct ath10k *ar)
{}

void ath10k_debug_destroy(struct ath10k *ar)
{}

int ath10k_debug_register(struct ath10k *ar)
{}

void ath10k_debug_unregister(struct ath10k *ar)
{}

#endif /* CONFIG_ATH10K_DEBUGFS */

#ifdef CONFIG_ATH10K_DEBUG
void __ath10k_dbg(struct ath10k *ar, enum ath10k_debug_mask mask,
		  const char *fmt, ...)
{}
EXPORT_SYMBOL();

void ath10k_dbg_dump(struct ath10k *ar,
		     enum ath10k_debug_mask mask,
		     const char *msg, const char *prefix,
		     const void *buf, size_t len)
{}
EXPORT_SYMBOL();

#endif /* CONFIG_ATH10K_DEBUG */