xref: /linux/net/mac80211/debug.h (revision a36e9f5cfe9eb3a1dce8769c7058251c42705357)
1 /* SPDX-License-Identifier: GPL-2.0 */
2 /*
3  * Portions
4  * Copyright (C) 2022 - 2023 Intel Corporation
5  */
6 #ifndef __MAC80211_DEBUG_H
7 #define __MAC80211_DEBUG_H
8 #include <net/cfg80211.h>
9 
10 #ifdef CONFIG_MAC80211_OCB_DEBUG
11 #define MAC80211_OCB_DEBUG 1
12 #else
13 #define MAC80211_OCB_DEBUG 0
14 #endif
15 
16 #ifdef CONFIG_MAC80211_IBSS_DEBUG
17 #define MAC80211_IBSS_DEBUG 1
18 #else
19 #define MAC80211_IBSS_DEBUG 0
20 #endif
21 
22 #ifdef CONFIG_MAC80211_PS_DEBUG
23 #define MAC80211_PS_DEBUG 1
24 #else
25 #define MAC80211_PS_DEBUG 0
26 #endif
27 
28 #ifdef CONFIG_MAC80211_HT_DEBUG
29 #define MAC80211_HT_DEBUG 1
30 #else
31 #define MAC80211_HT_DEBUG 0
32 #endif
33 
34 #ifdef CONFIG_MAC80211_MPL_DEBUG
35 #define MAC80211_MPL_DEBUG 1
36 #else
37 #define MAC80211_MPL_DEBUG 0
38 #endif
39 
40 #ifdef CONFIG_MAC80211_MPATH_DEBUG
41 #define MAC80211_MPATH_DEBUG 1
42 #else
43 #define MAC80211_MPATH_DEBUG 0
44 #endif
45 
46 #ifdef CONFIG_MAC80211_MHWMP_DEBUG
47 #define MAC80211_MHWMP_DEBUG 1
48 #else
49 #define MAC80211_MHWMP_DEBUG 0
50 #endif
51 
52 #ifdef CONFIG_MAC80211_MESH_SYNC_DEBUG
53 #define MAC80211_MESH_SYNC_DEBUG 1
54 #else
55 #define MAC80211_MESH_SYNC_DEBUG 0
56 #endif
57 
58 #ifdef CONFIG_MAC80211_MESH_CSA_DEBUG
59 #define MAC80211_MESH_CSA_DEBUG 1
60 #else
61 #define MAC80211_MESH_CSA_DEBUG 0
62 #endif
63 
64 #ifdef CONFIG_MAC80211_MESH_PS_DEBUG
65 #define MAC80211_MESH_PS_DEBUG 1
66 #else
67 #define MAC80211_MESH_PS_DEBUG 0
68 #endif
69 
70 #ifdef CONFIG_MAC80211_TDLS_DEBUG
71 #define MAC80211_TDLS_DEBUG 1
72 #else
73 #define MAC80211_TDLS_DEBUG 0
74 #endif
75 
76 #ifdef CONFIG_MAC80211_STA_DEBUG
77 #define MAC80211_STA_DEBUG 1
78 #else
79 #define MAC80211_STA_DEBUG 0
80 #endif
81 
82 #ifdef CONFIG_MAC80211_MLME_DEBUG
83 #define MAC80211_MLME_DEBUG 1
84 #else
85 #define MAC80211_MLME_DEBUG 0
86 #endif
87 
88 #ifdef CONFIG_MAC80211_MESSAGE_TRACING
89 void __sdata_info(const char *fmt, ...) __printf(1, 2);
90 void __sdata_dbg(bool print, const char *fmt, ...) __printf(2, 3);
91 void __sdata_err(const char *fmt, ...) __printf(1, 2);
92 void __wiphy_dbg(struct wiphy *wiphy, bool print, const char *fmt, ...)
93 	__printf(3, 4);
94 
95 #define _sdata_info(sdata, fmt, ...)					\
96 	__sdata_info("%s: " fmt, (sdata)->name, ##__VA_ARGS__)
97 #define _sdata_dbg(print, sdata, fmt, ...)				\
98 	__sdata_dbg(print, "%s: " fmt, (sdata)->name, ##__VA_ARGS__)
99 #define _sdata_err(sdata, fmt, ...)					\
100 	__sdata_err("%s: " fmt, (sdata)->name, ##__VA_ARGS__)
101 #define _wiphy_dbg(print, wiphy, fmt, ...)				\
102 	__wiphy_dbg(wiphy, print, fmt, ##__VA_ARGS__)
103 #else
104 #define _sdata_info(sdata, fmt, ...)					\
105 do {									\
106 	pr_info("%s: " fmt,						\
107 		(sdata)->name, ##__VA_ARGS__);				\
108 } while (0)
109 
110 #define _sdata_dbg(print, sdata, fmt, ...)				\
111 do {									\
112 	if (print)							\
113 		pr_debug("%s: " fmt,					\
114 			 (sdata)->name, ##__VA_ARGS__);			\
115 } while (0)
116 
117 #define _sdata_err(sdata, fmt, ...)					\
118 do {									\
119 	pr_err("%s: " fmt,						\
120 	       (sdata)->name, ##__VA_ARGS__);				\
121 } while (0)
122 
123 #define _wiphy_dbg(print, wiphy, fmt, ...)				\
124 do {									\
125 	if (print)							\
126 		wiphy_dbg((wiphy), fmt, ##__VA_ARGS__);			\
127 } while (0)
128 #endif
129 
130 #define sdata_info(sdata, fmt, ...)					\
131 	_sdata_info(sdata, fmt, ##__VA_ARGS__)
132 #define sdata_err(sdata, fmt, ...)					\
133 	_sdata_err(sdata, fmt, ##__VA_ARGS__)
134 #define sdata_dbg(sdata, fmt, ...)					\
135 	_sdata_dbg(1, sdata, fmt, ##__VA_ARGS__)
136 
137 #define link_info(link, fmt, ...)					\
138 	do {								\
139 		if (ieee80211_vif_is_mld(&(link)->sdata->vif))          \
140 			_sdata_info((link)->sdata, "[link %d] " fmt,	\
141 				    (link)->link_id,			\
142 				    ##__VA_ARGS__);			\
143 		else							\
144 			_sdata_info((link)->sdata, fmt, ##__VA_ARGS__);	\
145 	} while (0)
146 #define link_err(link, fmt, ...)					\
147 	do {								\
148 		if (ieee80211_vif_is_mld(&(link)->sdata->vif))          \
149 			_sdata_err((link)->sdata, "[link %d] " fmt,	\
150 				   (link)->link_id,			\
151 				   ##__VA_ARGS__);			\
152 		else							\
153 			_sdata_err((link)->sdata, fmt, ##__VA_ARGS__);	\
154 	} while (0)
155 #define _link_id_dbg(print, sdata, link_id, fmt, ...)			\
156 	do {								\
157 		if (ieee80211_vif_is_mld(&(sdata)->vif))		\
158 			_sdata_dbg(print, sdata, "[link %d] " fmt,	\
159 				   link_id, ##__VA_ARGS__);		\
160 		else							\
161 			_sdata_dbg(print, sdata, fmt, ##__VA_ARGS__);	\
162 	} while (0)
163 #define link_dbg(link, fmt, ...)					\
164 	_link_id_dbg(1, (link)->sdata, (link)->link_id,			\
165 		     fmt, ##__VA_ARGS__)
166 
167 #define ht_dbg(sdata, fmt, ...)						\
168 	_sdata_dbg(MAC80211_HT_DEBUG,					\
169 		   sdata, fmt, ##__VA_ARGS__)
170 
171 #define ht_dbg_ratelimited(sdata, fmt, ...)				\
172 	_sdata_dbg(MAC80211_HT_DEBUG && net_ratelimit(),		\
173 		   sdata, fmt, ##__VA_ARGS__)
174 
175 #define ocb_dbg(sdata, fmt, ...)					\
176 	_sdata_dbg(MAC80211_OCB_DEBUG,					\
177 		   sdata, fmt, ##__VA_ARGS__)
178 
179 #define ibss_dbg(sdata, fmt, ...)					\
180 	_sdata_dbg(MAC80211_IBSS_DEBUG,					\
181 		   sdata, fmt, ##__VA_ARGS__)
182 
183 #define ps_dbg(sdata, fmt, ...)						\
184 	_sdata_dbg(MAC80211_PS_DEBUG,					\
185 		   sdata, fmt, ##__VA_ARGS__)
186 
187 #define ps_dbg_hw(hw, fmt, ...)						\
188 	_wiphy_dbg(MAC80211_PS_DEBUG,					\
189 		   (hw)->wiphy, fmt, ##__VA_ARGS__)
190 
191 #define ps_dbg_ratelimited(sdata, fmt, ...)				\
192 	_sdata_dbg(MAC80211_PS_DEBUG && net_ratelimit(),		\
193 		   sdata, fmt, ##__VA_ARGS__)
194 
195 #define mpl_dbg(sdata, fmt, ...)					\
196 	_sdata_dbg(MAC80211_MPL_DEBUG,					\
197 		   sdata, fmt, ##__VA_ARGS__)
198 
199 #define mpath_dbg(sdata, fmt, ...)					\
200 	_sdata_dbg(MAC80211_MPATH_DEBUG,				\
201 		   sdata, fmt, ##__VA_ARGS__)
202 
203 #define mhwmp_dbg(sdata, fmt, ...)					\
204 	_sdata_dbg(MAC80211_MHWMP_DEBUG,				\
205 		   sdata, fmt, ##__VA_ARGS__)
206 
207 #define msync_dbg(sdata, fmt, ...)					\
208 	_sdata_dbg(MAC80211_MESH_SYNC_DEBUG,				\
209 		   sdata, fmt, ##__VA_ARGS__)
210 
211 #define mcsa_dbg(sdata, fmt, ...)					\
212 	_sdata_dbg(MAC80211_MESH_CSA_DEBUG,				\
213 		   sdata, fmt, ##__VA_ARGS__)
214 
215 #define mps_dbg(sdata, fmt, ...)					\
216 	_sdata_dbg(MAC80211_MESH_PS_DEBUG,				\
217 		   sdata, fmt, ##__VA_ARGS__)
218 
219 #define tdls_dbg(sdata, fmt, ...)					\
220 	_sdata_dbg(MAC80211_TDLS_DEBUG,					\
221 		   sdata, fmt, ##__VA_ARGS__)
222 
223 #define sta_dbg(sdata, fmt, ...)					\
224 	_sdata_dbg(MAC80211_STA_DEBUG,					\
225 		   sdata, fmt, ##__VA_ARGS__)
226 
227 #define mlme_dbg(sdata, fmt, ...)					\
228 	_sdata_dbg(MAC80211_MLME_DEBUG,					\
229 		   sdata, fmt, ##__VA_ARGS__)
230 #define mlme_link_id_dbg(sdata, link_id, fmt, ...)			\
231 	_link_id_dbg(MAC80211_MLME_DEBUG, sdata, link_id,		\
232 		     fmt, ##__VA_ARGS__)
233 
234 #define mlme_dbg_ratelimited(sdata, fmt, ...)				\
235 	_sdata_dbg(MAC80211_MLME_DEBUG && net_ratelimit(),		\
236 		   sdata, fmt, ##__VA_ARGS__)
237 
238 #endif /* __MAC80211_DEBUG_H */
239