1#ifndef __MAC80211_DEBUG_H
2#define __MAC80211_DEBUG_H
3#include <net/cfg80211.h>
4
5#ifdef CONFIG_MAC80211_IBSS_DEBUG
6#define MAC80211_IBSS_DEBUG 1
7#else
8#define MAC80211_IBSS_DEBUG 0
9#endif
10
11#ifdef CONFIG_MAC80211_PS_DEBUG
12#define MAC80211_PS_DEBUG 1
13#else
14#define MAC80211_PS_DEBUG 0
15#endif
16
17#ifdef CONFIG_MAC80211_HT_DEBUG
18#define MAC80211_HT_DEBUG 1
19#else
20#define MAC80211_HT_DEBUG 0
21#endif
22
23#ifdef CONFIG_MAC80211_MPL_DEBUG
24#define MAC80211_MPL_DEBUG 1
25#else
26#define MAC80211_MPL_DEBUG 0
27#endif
28
29#ifdef CONFIG_MAC80211_MPATH_DEBUG
30#define MAC80211_MPATH_DEBUG 1
31#else
32#define MAC80211_MPATH_DEBUG 0
33#endif
34
35#ifdef CONFIG_MAC80211_MHWMP_DEBUG
36#define MAC80211_MHWMP_DEBUG 1
37#else
38#define MAC80211_MHWMP_DEBUG 0
39#endif
40
41#ifdef CONFIG_MAC80211_MESH_SYNC_DEBUG
42#define MAC80211_MESH_SYNC_DEBUG 1
43#else
44#define MAC80211_MESH_SYNC_DEBUG 0
45#endif
46
47#ifdef CONFIG_MAC80211_MESH_CSA_DEBUG
48#define MAC80211_MESH_CSA_DEBUG 1
49#else
50#define MAC80211_MESH_CSA_DEBUG 0
51#endif
52
53#ifdef CONFIG_MAC80211_MESH_PS_DEBUG
54#define MAC80211_MESH_PS_DEBUG 1
55#else
56#define MAC80211_MESH_PS_DEBUG 0
57#endif
58
59#ifdef CONFIG_MAC80211_TDLS_DEBUG
60#define MAC80211_TDLS_DEBUG 1
61#else
62#define MAC80211_TDLS_DEBUG 0
63#endif
64
65#ifdef CONFIG_MAC80211_STA_DEBUG
66#define MAC80211_STA_DEBUG 1
67#else
68#define MAC80211_STA_DEBUG 0
69#endif
70
71#ifdef CONFIG_MAC80211_MLME_DEBUG
72#define MAC80211_MLME_DEBUG 1
73#else
74#define MAC80211_MLME_DEBUG 0
75#endif
76
77#ifdef CONFIG_MAC80211_MESSAGE_TRACING
78void __sdata_info(const char *fmt, ...) __printf(1, 2);
79void __sdata_dbg(bool print, const char *fmt, ...) __printf(2, 3);
80void __sdata_err(const char *fmt, ...) __printf(1, 2);
81void __wiphy_dbg(struct wiphy *wiphy, bool print, const char *fmt, ...)
82	__printf(3, 4);
83
84#define _sdata_info(sdata, fmt, ...)					\
85	__sdata_info("%s: " fmt, (sdata)->name, ##__VA_ARGS__)
86#define _sdata_dbg(print, sdata, fmt, ...)				\
87	__sdata_dbg(print, "%s: " fmt, (sdata)->name, ##__VA_ARGS__)
88#define _sdata_err(sdata, fmt, ...)					\
89	__sdata_err("%s: " fmt, (sdata)->name, ##__VA_ARGS__)
90#define _wiphy_dbg(print, wiphy, fmt, ...)				\
91	__wiphy_dbg(wiphy, print, fmt, ##__VA_ARGS__)
92#else
93#define _sdata_info(sdata, fmt, ...)					\
94do {									\
95	pr_info("%s: " fmt,						\
96		(sdata)->name, ##__VA_ARGS__);				\
97} while (0)
98
99#define _sdata_dbg(print, sdata, fmt, ...)				\
100do {									\
101	if (print)							\
102		pr_debug("%s: " fmt,					\
103			 (sdata)->name, ##__VA_ARGS__);			\
104} while (0)
105
106#define _sdata_err(sdata, fmt, ...)					\
107do {									\
108	pr_err("%s: " fmt,						\
109	       (sdata)->name, ##__VA_ARGS__);				\
110} while (0)
111
112#define _wiphy_dbg(print, wiphy, fmt, ...)				\
113do {									\
114	if (print)							\
115		wiphy_dbg((wiphy), fmt, ##__VA_ARGS__);			\
116} while (0)
117#endif
118
119#define sdata_info(sdata, fmt, ...)					\
120	_sdata_info(sdata, fmt, ##__VA_ARGS__)
121#define sdata_err(sdata, fmt, ...)					\
122	_sdata_err(sdata, fmt, ##__VA_ARGS__)
123#define sdata_dbg(sdata, fmt, ...)					\
124	_sdata_dbg(1, sdata, fmt, ##__VA_ARGS__)
125
126#define ht_dbg(sdata, fmt, ...)						\
127	_sdata_dbg(MAC80211_HT_DEBUG,					\
128		   sdata, fmt, ##__VA_ARGS__)
129
130#define ht_dbg_ratelimited(sdata, fmt, ...)				\
131	_sdata_dbg(MAC80211_HT_DEBUG && net_ratelimit(),		\
132		   sdata, fmt, ##__VA_ARGS__)
133
134#define ibss_dbg(sdata, fmt, ...)					\
135	_sdata_dbg(MAC80211_IBSS_DEBUG,					\
136		   sdata, fmt, ##__VA_ARGS__)
137
138#define ps_dbg(sdata, fmt, ...)						\
139	_sdata_dbg(MAC80211_PS_DEBUG,					\
140		   sdata, fmt, ##__VA_ARGS__)
141
142#define ps_dbg_hw(hw, fmt, ...)						\
143	_wiphy_dbg(MAC80211_PS_DEBUG,					\
144		   (hw)->wiphy, fmt, ##__VA_ARGS__)
145
146#define ps_dbg_ratelimited(sdata, fmt, ...)				\
147	_sdata_dbg(MAC80211_PS_DEBUG && net_ratelimit(),		\
148		   sdata, fmt, ##__VA_ARGS__)
149
150#define mpl_dbg(sdata, fmt, ...)					\
151	_sdata_dbg(MAC80211_MPL_DEBUG,					\
152		   sdata, fmt, ##__VA_ARGS__)
153
154#define mpath_dbg(sdata, fmt, ...)					\
155	_sdata_dbg(MAC80211_MPATH_DEBUG,				\
156		   sdata, fmt, ##__VA_ARGS__)
157
158#define mhwmp_dbg(sdata, fmt, ...)					\
159	_sdata_dbg(MAC80211_MHWMP_DEBUG,				\
160		   sdata, fmt, ##__VA_ARGS__)
161
162#define msync_dbg(sdata, fmt, ...)					\
163	_sdata_dbg(MAC80211_MESH_SYNC_DEBUG,				\
164		   sdata, fmt, ##__VA_ARGS__)
165
166#define mcsa_dbg(sdata, fmt, ...)					\
167	_sdata_dbg(MAC80211_MESH_CSA_DEBUG,				\
168		   sdata, fmt, ##__VA_ARGS__)
169
170#define mps_dbg(sdata, fmt, ...)					\
171	_sdata_dbg(MAC80211_MESH_PS_DEBUG,				\
172		   sdata, fmt, ##__VA_ARGS__)
173
174#define tdls_dbg(sdata, fmt, ...)					\
175	_sdata_dbg(MAC80211_TDLS_DEBUG,					\
176		   sdata, fmt, ##__VA_ARGS__)
177
178#define sta_dbg(sdata, fmt, ...)					\
179	_sdata_dbg(MAC80211_STA_DEBUG,					\
180		   sdata, fmt, ##__VA_ARGS__)
181
182#define mlme_dbg(sdata, fmt, ...)					\
183	_sdata_dbg(MAC80211_MLME_DEBUG,					\
184		   sdata, fmt, ##__VA_ARGS__)
185
186#define mlme_dbg_ratelimited(sdata, fmt, ...)				\
187	_sdata_dbg(MAC80211_MLME_DEBUG && net_ratelimit(),		\
188		   sdata, fmt, ##__VA_ARGS__)
189
190#endif /* __MAC80211_DEBUG_H */
191