linux/drivers/net/wireless/ath/ath10k/debug.h
<<
>>
Prefs
   1/*
   2 * Copyright (c) 2005-2011 Atheros Communications Inc.
   3 * Copyright (c) 2011-2013 Qualcomm Atheros, Inc.
   4 *
   5 * Permission to use, copy, modify, and/or distribute this software for any
   6 * purpose with or without fee is hereby granted, provided that the above
   7 * copyright notice and this permission notice appear in all copies.
   8 *
   9 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
  10 * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
  11 * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
  12 * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
  13 * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
  14 * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
  15 * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
  16 */
  17
  18#ifndef _DEBUG_H_
  19#define _DEBUG_H_
  20
  21#include <linux/types.h>
  22#include "trace.h"
  23
  24enum ath10k_debug_mask {
  25        ATH10K_DBG_PCI          = 0x00000001,
  26        ATH10K_DBG_WMI          = 0x00000002,
  27        ATH10K_DBG_HTC          = 0x00000004,
  28        ATH10K_DBG_HTT          = 0x00000008,
  29        ATH10K_DBG_MAC          = 0x00000010,
  30        ATH10K_DBG_BOOT         = 0x00000020,
  31        ATH10K_DBG_PCI_DUMP     = 0x00000040,
  32        ATH10K_DBG_HTT_DUMP     = 0x00000080,
  33        ATH10K_DBG_MGMT         = 0x00000100,
  34        ATH10K_DBG_DATA         = 0x00000200,
  35        ATH10K_DBG_BMI          = 0x00000400,
  36        ATH10K_DBG_REGULATORY   = 0x00000800,
  37        ATH10K_DBG_TESTMODE     = 0x00001000,
  38        ATH10K_DBG_WMI_PRINT    = 0x00002000,
  39        ATH10K_DBG_PCI_PS       = 0x00004000,
  40        ATH10K_DBG_AHB          = 0x00008000,
  41        ATH10K_DBG_SDIO         = 0x00010000,
  42        ATH10K_DBG_SDIO_DUMP    = 0x00020000,
  43        ATH10K_DBG_USB          = 0x00040000,
  44        ATH10K_DBG_USB_BULK     = 0x00080000,
  45        ATH10K_DBG_ANY          = 0xffffffff,
  46};
  47
  48enum ath10k_pktlog_filter {
  49        ATH10K_PKTLOG_RX         = 0x000000001,
  50        ATH10K_PKTLOG_TX         = 0x000000002,
  51        ATH10K_PKTLOG_RCFIND     = 0x000000004,
  52        ATH10K_PKTLOG_RCUPDATE   = 0x000000008,
  53        ATH10K_PKTLOG_DBG_PRINT  = 0x000000010,
  54        ATH10K_PKTLOG_ANY        = 0x00000001f,
  55};
  56
  57enum ath10k_dbg_aggr_mode {
  58        ATH10K_DBG_AGGR_MODE_AUTO,
  59        ATH10K_DBG_AGGR_MODE_MANUAL,
  60        ATH10K_DBG_AGGR_MODE_MAX,
  61};
  62
  63/* FIXME: How to calculate the buffer size sanely? */
  64#define ATH10K_FW_STATS_BUF_SIZE (1024 * 1024)
  65
  66extern unsigned int ath10k_debug_mask;
  67
  68__printf(2, 3) void ath10k_info(struct ath10k *ar, const char *fmt, ...);
  69__printf(2, 3) void ath10k_err(struct ath10k *ar, const char *fmt, ...);
  70__printf(2, 3) void ath10k_warn(struct ath10k *ar, const char *fmt, ...);
  71
  72void ath10k_debug_print_hwfw_info(struct ath10k *ar);
  73void ath10k_debug_print_board_info(struct ath10k *ar);
  74void ath10k_debug_print_boot_info(struct ath10k *ar);
  75void ath10k_print_driver_info(struct ath10k *ar);
  76
  77#ifdef CONFIG_ATH10K_DEBUGFS
  78int ath10k_debug_start(struct ath10k *ar);
  79void ath10k_debug_stop(struct ath10k *ar);
  80int ath10k_debug_create(struct ath10k *ar);
  81void ath10k_debug_destroy(struct ath10k *ar);
  82int ath10k_debug_register(struct ath10k *ar);
  83void ath10k_debug_unregister(struct ath10k *ar);
  84void ath10k_debug_fw_stats_process(struct ath10k *ar, struct sk_buff *skb);
  85void ath10k_debug_tpc_stats_process(struct ath10k *ar,
  86                                    struct ath10k_tpc_stats *tpc_stats);
  87struct ath10k_fw_crash_data *
  88ath10k_debug_get_new_fw_crash_data(struct ath10k *ar);
  89
  90void ath10k_debug_dbglog_add(struct ath10k *ar, u8 *buffer, int len);
  91
  92int ath10k_debug_fw_devcoredump(struct ath10k *ar);
  93
  94#define ATH10K_DFS_STAT_INC(ar, c) (ar->debug.dfs_stats.c++)
  95
  96void ath10k_debug_get_et_strings(struct ieee80211_hw *hw,
  97                                 struct ieee80211_vif *vif,
  98                                 u32 sset, u8 *data);
  99int ath10k_debug_get_et_sset_count(struct ieee80211_hw *hw,
 100                                   struct ieee80211_vif *vif, int sset);
 101void ath10k_debug_get_et_stats(struct ieee80211_hw *hw,
 102                               struct ieee80211_vif *vif,
 103                               struct ethtool_stats *stats, u64 *data);
 104
 105static inline u64 ath10k_debug_get_fw_dbglog_mask(struct ath10k *ar)
 106{
 107        return ar->debug.fw_dbglog_mask;
 108}
 109
 110static inline u32 ath10k_debug_get_fw_dbglog_level(struct ath10k *ar)
 111{
 112        return ar->debug.fw_dbglog_level;
 113}
 114
 115#else
 116
 117static inline int ath10k_debug_start(struct ath10k *ar)
 118{
 119        return 0;
 120}
 121
 122static inline void ath10k_debug_stop(struct ath10k *ar)
 123{
 124}
 125
 126static inline int ath10k_debug_create(struct ath10k *ar)
 127{
 128        return 0;
 129}
 130
 131static inline void ath10k_debug_destroy(struct ath10k *ar)
 132{
 133}
 134
 135static inline int ath10k_debug_register(struct ath10k *ar)
 136{
 137        return 0;
 138}
 139
 140static inline void ath10k_debug_unregister(struct ath10k *ar)
 141{
 142}
 143
 144static inline void ath10k_debug_fw_stats_process(struct ath10k *ar,
 145                                                 struct sk_buff *skb)
 146{
 147}
 148
 149static inline void ath10k_debug_tpc_stats_process(struct ath10k *ar,
 150                                                  struct ath10k_tpc_stats *tpc_stats)
 151{
 152        kfree(tpc_stats);
 153}
 154
 155static inline void ath10k_debug_dbglog_add(struct ath10k *ar, u8 *buffer,
 156                                           int len)
 157{
 158}
 159
 160static inline struct ath10k_fw_crash_data *
 161ath10k_debug_get_new_fw_crash_data(struct ath10k *ar)
 162{
 163        return NULL;
 164}
 165
 166static inline u64 ath10k_debug_get_fw_dbglog_mask(struct ath10k *ar)
 167{
 168        return 0;
 169}
 170
 171static inline u32 ath10k_debug_get_fw_dbglog_level(struct ath10k *ar)
 172{
 173        return 0;
 174}
 175
 176static inline int ath10k_debug_fw_devcoredump(struct ath10k *ar)
 177{
 178        return 0;
 179}
 180
 181#define ATH10K_DFS_STAT_INC(ar, c) do { } while (0)
 182
 183#define ath10k_debug_get_et_strings NULL
 184#define ath10k_debug_get_et_sset_count NULL
 185#define ath10k_debug_get_et_stats NULL
 186
 187#endif /* CONFIG_ATH10K_DEBUGFS */
 188#ifdef CONFIG_MAC80211_DEBUGFS
 189void ath10k_sta_add_debugfs(struct ieee80211_hw *hw, struct ieee80211_vif *vif,
 190                            struct ieee80211_sta *sta, struct dentry *dir);
 191void ath10k_sta_update_rx_duration(struct ath10k *ar,
 192                                   struct ath10k_fw_stats *stats);
 193void ath10k_sta_statistics(struct ieee80211_hw *hw, struct ieee80211_vif *vif,
 194                           struct ieee80211_sta *sta,
 195                           struct station_info *sinfo);
 196#else
 197static inline
 198void ath10k_sta_update_rx_duration(struct ath10k *ar,
 199                                   struct ath10k_fw_stats *stats)
 200{
 201}
 202#endif /* CONFIG_MAC80211_DEBUGFS */
 203
 204#ifdef CONFIG_ATH10K_DEBUG
 205__printf(3, 4) void ath10k_dbg(struct ath10k *ar,
 206                               enum ath10k_debug_mask mask,
 207                               const char *fmt, ...);
 208void ath10k_dbg_dump(struct ath10k *ar,
 209                     enum ath10k_debug_mask mask,
 210                     const char *msg, const char *prefix,
 211                     const void *buf, size_t len);
 212#else /* CONFIG_ATH10K_DEBUG */
 213
 214static inline int ath10k_dbg(struct ath10k *ar,
 215                             enum ath10k_debug_mask dbg_mask,
 216                             const char *fmt, ...)
 217{
 218        return 0;
 219}
 220
 221static inline void ath10k_dbg_dump(struct ath10k *ar,
 222                                   enum ath10k_debug_mask mask,
 223                                   const char *msg, const char *prefix,
 224                                   const void *buf, size_t len)
 225{
 226}
 227#endif /* CONFIG_ATH10K_DEBUG */
 228#endif /* _DEBUG_H_ */
 229