treewide: remove redundant IS_ERR() before error code check
[linux/fpc-iii.git] / drivers / net / wireless / ath / ath11k / debug.h
blob8e8d5588b54177a4cbdcba9f772b312bc7c1f283
1 /* SPDX-License-Identifier: BSD-3-Clause-Clear */
2 /*
3 * Copyright (c) 2018-2019 The Linux Foundation. All rights reserved.
4 */
6 #ifndef _ATH11K_DEBUG_H_
7 #define _ATH11K_DEBUG_H_
9 #include "hal_tx.h"
10 #include "trace.h"
12 #define ATH11K_TX_POWER_MAX_VAL 70
13 #define ATH11K_TX_POWER_MIN_VAL 0
15 enum ath11k_debug_mask {
16 ATH11K_DBG_AHB = 0x00000001,
17 ATH11K_DBG_WMI = 0x00000002,
18 ATH11K_DBG_HTC = 0x00000004,
19 ATH11K_DBG_DP_HTT = 0x00000008,
20 ATH11K_DBG_MAC = 0x00000010,
21 ATH11K_DBG_BOOT = 0x00000020,
22 ATH11K_DBG_QMI = 0x00000040,
23 ATH11K_DBG_DATA = 0x00000080,
24 ATH11K_DBG_MGMT = 0x00000100,
25 ATH11K_DBG_REG = 0x00000200,
26 ATH11K_DBG_TESTMODE = 0x00000400,
27 ATH11k_DBG_HAL = 0x00000800,
28 ATH11K_DBG_ANY = 0xffffffff,
31 /* htt_dbg_ext_stats_type */
32 enum ath11k_dbg_htt_ext_stats_type {
33 ATH11K_DBG_HTT_EXT_STATS_RESET = 0,
34 ATH11K_DBG_HTT_EXT_STATS_PDEV_TX = 1,
35 ATH11K_DBG_HTT_EXT_STATS_PDEV_RX = 2,
36 ATH11K_DBG_HTT_EXT_STATS_PDEV_TX_HWQ = 3,
37 ATH11K_DBG_HTT_EXT_STATS_PDEV_TX_SCHED = 4,
38 ATH11K_DBG_HTT_EXT_STATS_PDEV_ERROR = 5,
39 ATH11K_DBG_HTT_EXT_STATS_PDEV_TQM = 6,
40 ATH11K_DBG_HTT_EXT_STATS_TQM_CMDQ = 7,
41 ATH11K_DBG_HTT_EXT_STATS_TX_DE_INFO = 8,
42 ATH11K_DBG_HTT_EXT_STATS_PDEV_TX_RATE = 9,
43 ATH11K_DBG_HTT_EXT_STATS_PDEV_RX_RATE = 10,
44 ATH11K_DBG_HTT_EXT_STATS_PEER_INFO = 11,
45 ATH11K_DBG_HTT_EXT_STATS_TX_SELFGEN_INFO = 12,
46 ATH11K_DBG_HTT_EXT_STATS_TX_MU_HWQ = 13,
47 ATH11K_DBG_HTT_EXT_STATS_RING_IF_INFO = 14,
48 ATH11K_DBG_HTT_EXT_STATS_SRNG_INFO = 15,
49 ATH11K_DBG_HTT_EXT_STATS_SFM_INFO = 16,
50 ATH11K_DBG_HTT_EXT_STATS_PDEV_TX_MU = 17,
51 ATH11K_DBG_HTT_EXT_STATS_ACTIVE_PEERS_LIST = 18,
52 ATH11K_DBG_HTT_EXT_STATS_PDEV_CCA_STATS = 19,
53 ATH11K_DBG_HTT_EXT_STATS_TWT_SESSIONS = 20,
54 ATH11K_DBG_HTT_EXT_STATS_REO_RESOURCE_STATS = 21,
55 ATH11K_DBG_HTT_EXT_STATS_TX_SOUNDING_INFO = 22,
57 /* keep this last */
58 ATH11K_DBG_HTT_NUM_EXT_STATS,
61 struct debug_htt_stats_req {
62 bool done;
63 u8 pdev_id;
64 u8 type;
65 u8 peer_addr[ETH_ALEN];
66 struct completion cmpln;
67 u32 buf_len;
68 u8 buf[0];
71 #define ATH11K_HTT_STATS_BUF_SIZE (1024 * 512)
73 #define ATH11K_FW_STATS_BUF_SIZE (1024 * 1024)
75 #define ATH11K_HTT_PKTLOG_MAX_SIZE 2048
77 enum ath11k_pktlog_filter {
78 ATH11K_PKTLOG_RX = 0x000000001,
79 ATH11K_PKTLOG_TX = 0x000000002,
80 ATH11K_PKTLOG_RCFIND = 0x000000004,
81 ATH11K_PKTLOG_RCUPDATE = 0x000000008,
82 ATH11K_PKTLOG_EVENT_SMART_ANT = 0x000000020,
83 ATH11K_PKTLOG_EVENT_SW = 0x000000040,
84 ATH11K_PKTLOG_ANY = 0x00000006f,
87 enum ath11k_pktlog_mode {
88 ATH11K_PKTLOG_MODE_LITE = 1,
89 ATH11K_PKTLOG_MODE_FULL = 2,
92 enum ath11k_pktlog_enum {
93 ATH11K_PKTLOG_TYPE_TX_CTRL = 1,
94 ATH11K_PKTLOG_TYPE_TX_STAT = 2,
95 ATH11K_PKTLOG_TYPE_TX_MSDU_ID = 3,
96 ATH11K_PKTLOG_TYPE_RX_STAT = 5,
97 ATH11K_PKTLOG_TYPE_RC_FIND = 6,
98 ATH11K_PKTLOG_TYPE_RC_UPDATE = 7,
99 ATH11K_PKTLOG_TYPE_TX_VIRT_ADDR = 8,
100 ATH11K_PKTLOG_TYPE_RX_CBF = 10,
101 ATH11K_PKTLOG_TYPE_RX_STATBUF = 22,
102 ATH11K_PKTLOG_TYPE_PPDU_STATS = 23,
103 ATH11K_PKTLOG_TYPE_LITE_RX = 24,
106 __printf(2, 3) void ath11k_info(struct ath11k_base *ab, const char *fmt, ...);
107 __printf(2, 3) void ath11k_err(struct ath11k_base *ab, const char *fmt, ...);
108 __printf(2, 3) void ath11k_warn(struct ath11k_base *ab, const char *fmt, ...);
110 extern unsigned int ath11k_debug_mask;
112 #ifdef CONFIG_ATH11K_DEBUG
113 __printf(3, 4) void __ath11k_dbg(struct ath11k_base *ab,
114 enum ath11k_debug_mask mask,
115 const char *fmt, ...);
116 void ath11k_dbg_dump(struct ath11k_base *ab,
117 enum ath11k_debug_mask mask,
118 const char *msg, const char *prefix,
119 const void *buf, size_t len);
120 #else /* CONFIG_ATH11K_DEBUG */
121 static inline int __ath11k_dbg(struct ath11k_base *ab,
122 enum ath11k_debug_mask dbg_mask,
123 const char *fmt, ...)
125 return 0;
128 static inline void ath11k_dbg_dump(struct ath11k_base *ab,
129 enum ath11k_debug_mask mask,
130 const char *msg, const char *prefix,
131 const void *buf, size_t len)
134 #endif /* CONFIG_ATH11K_DEBUG */
136 #ifdef CONFIG_ATH11K_DEBUGFS
137 int ath11k_debug_soc_create(struct ath11k_base *ab);
138 void ath11k_debug_soc_destroy(struct ath11k_base *ab);
139 int ath11k_debug_pdev_create(struct ath11k_base *ab);
140 void ath11k_debug_pdev_destroy(struct ath11k_base *ab);
141 int ath11k_debug_register(struct ath11k *ar);
142 void ath11k_debug_unregister(struct ath11k *ar);
143 void ath11k_dbg_htt_ext_stats_handler(struct ath11k_base *ab,
144 struct sk_buff *skb);
145 void ath11k_debug_fw_stats_process(struct ath11k_base *ab, struct sk_buff *skb);
147 void ath11k_debug_fw_stats_init(struct ath11k *ar);
148 int ath11k_dbg_htt_stats_req(struct ath11k *ar);
150 static inline bool ath11k_debug_is_pktlog_lite_mode_enabled(struct ath11k *ar)
152 return (ar->debug.pktlog_mode == ATH11K_PKTLOG_MODE_LITE);
155 static inline bool ath11k_debug_is_pktlog_rx_stats_enabled(struct ath11k *ar)
157 return (!ar->debug.pktlog_peer_valid && ar->debug.pktlog_mode);
160 static inline bool ath11k_debug_is_pktlog_peer_valid(struct ath11k *ar, u8 *addr)
162 return (ar->debug.pktlog_peer_valid && ar->debug.pktlog_mode &&
163 ether_addr_equal(addr, ar->debug.pktlog_peer_addr));
166 static inline int ath11k_debug_is_extd_tx_stats_enabled(struct ath11k *ar)
168 return ar->debug.extd_tx_stats;
171 static inline int ath11k_debug_is_extd_rx_stats_enabled(struct ath11k *ar)
173 return ar->debug.extd_rx_stats;
176 void ath11k_sta_add_debugfs(struct ieee80211_hw *hw, struct ieee80211_vif *vif,
177 struct ieee80211_sta *sta, struct dentry *dir);
178 void
179 ath11k_accumulate_per_peer_tx_stats(struct ath11k_sta *arsta,
180 struct ath11k_per_peer_tx_stats *peer_stats,
181 u8 legacy_rate_idx);
182 void ath11k_update_per_peer_stats_from_txcompl(struct ath11k *ar,
183 struct sk_buff *msdu,
184 struct hal_tx_status *ts);
185 #else
186 static inline int ath11k_debug_soc_create(struct ath11k_base *ab)
188 return 0;
191 static inline void ath11k_debug_soc_destroy(struct ath11k_base *ab)
195 static inline int ath11k_debug_pdev_create(struct ath11k_base *ab)
197 return 0;
200 static inline void ath11k_debug_pdev_destroy(struct ath11k_base *ab)
204 static inline int ath11k_debug_register(struct ath11k *ar)
206 return 0;
209 static inline void ath11k_debug_unregister(struct ath11k *ar)
213 static inline void ath11k_dbg_htt_ext_stats_handler(struct ath11k_base *ab,
214 struct sk_buff *skb)
218 static inline void ath11k_debug_fw_stats_process(struct ath11k_base *ab,
219 struct sk_buff *skb)
223 static inline void ath11k_debug_fw_stats_init(struct ath11k *ar)
227 static inline int ath11k_debug_is_extd_tx_stats_enabled(struct ath11k *ar)
229 return 0;
232 static inline int ath11k_debug_is_extd_rx_stats_enabled(struct ath11k *ar)
234 return 0;
237 static inline int ath11k_dbg_htt_stats_req(struct ath11k *ar)
239 return 0;
242 static inline bool ath11k_debug_is_pktlog_lite_mode_enabled(struct ath11k *ar)
244 return false;
247 static inline bool ath11k_debug_is_pktlog_rx_stats_enabled(struct ath11k *ar)
249 return false;
252 static inline bool ath11k_debug_is_pktlog_peer_valid(struct ath11k *ar, u8 *addr)
254 return false;
257 static inline void
258 ath11k_accumulate_per_peer_tx_stats(struct ath11k_sta *arsta,
259 struct ath11k_per_peer_tx_stats *peer_stats,
260 u8 legacy_rate_idx)
264 static inline void
265 ath11k_update_per_peer_stats_from_txcompl(struct ath11k *ar,
266 struct sk_buff *msdu,
267 struct hal_tx_status *ts)
271 #endif /* CONFIG_MAC80211_DEBUGFS*/
273 #define ath11k_dbg(ar, dbg_mask, fmt, ...) \
274 do { \
275 if (ath11k_debug_mask & dbg_mask) \
276 __ath11k_dbg(ar, dbg_mask, fmt, ##__VA_ARGS__); \
277 } while (0)
279 #endif /* _ATH11K_DEBUG_H_ */