xref: /openbmc/linux/net/mac80211/debug.h (revision 2612e3bbc0386368a850140a6c9b990cd496a5ec)
1b2441318SGreg Kroah-Hartman /* SPDX-License-Identifier: GPL-2.0 */
2b4f85443SJohannes Berg /*
3b4f85443SJohannes Berg  * Portions
4*f1871abdSIlan Peer  * Copyright (C) 2022 - 2023 Intel Corporation
5b4f85443SJohannes Berg  */
6bdcbd8e0SJohannes Berg #ifndef __MAC80211_DEBUG_H
7bdcbd8e0SJohannes Berg #define __MAC80211_DEBUG_H
83fae0273SJohannes Berg #include <net/cfg80211.h>
9bdcbd8e0SJohannes Berg 
10239281f8SRostislav Lisovy #ifdef CONFIG_MAC80211_OCB_DEBUG
11239281f8SRostislav Lisovy #define MAC80211_OCB_DEBUG 1
12239281f8SRostislav Lisovy #else
13239281f8SRostislav Lisovy #define MAC80211_OCB_DEBUG 0
14239281f8SRostislav Lisovy #endif
15239281f8SRostislav Lisovy 
16bdcbd8e0SJohannes Berg #ifdef CONFIG_MAC80211_IBSS_DEBUG
17bdcbd8e0SJohannes Berg #define MAC80211_IBSS_DEBUG 1
18bdcbd8e0SJohannes Berg #else
19bdcbd8e0SJohannes Berg #define MAC80211_IBSS_DEBUG 0
20bdcbd8e0SJohannes Berg #endif
21bdcbd8e0SJohannes Berg 
22bdcbd8e0SJohannes Berg #ifdef CONFIG_MAC80211_PS_DEBUG
23bdcbd8e0SJohannes Berg #define MAC80211_PS_DEBUG 1
24bdcbd8e0SJohannes Berg #else
25bdcbd8e0SJohannes Berg #define MAC80211_PS_DEBUG 0
26bdcbd8e0SJohannes Berg #endif
27bdcbd8e0SJohannes Berg 
28bdcbd8e0SJohannes Berg #ifdef CONFIG_MAC80211_HT_DEBUG
29bdcbd8e0SJohannes Berg #define MAC80211_HT_DEBUG 1
30bdcbd8e0SJohannes Berg #else
31bdcbd8e0SJohannes Berg #define MAC80211_HT_DEBUG 0
32bdcbd8e0SJohannes Berg #endif
33bdcbd8e0SJohannes Berg 
34bdcbd8e0SJohannes Berg #ifdef CONFIG_MAC80211_MPL_DEBUG
35bdcbd8e0SJohannes Berg #define MAC80211_MPL_DEBUG 1
36bdcbd8e0SJohannes Berg #else
37bdcbd8e0SJohannes Berg #define MAC80211_MPL_DEBUG 0
38bdcbd8e0SJohannes Berg #endif
39bdcbd8e0SJohannes Berg 
40bdcbd8e0SJohannes Berg #ifdef CONFIG_MAC80211_MPATH_DEBUG
41bdcbd8e0SJohannes Berg #define MAC80211_MPATH_DEBUG 1
42bdcbd8e0SJohannes Berg #else
43bdcbd8e0SJohannes Berg #define MAC80211_MPATH_DEBUG 0
44bdcbd8e0SJohannes Berg #endif
45bdcbd8e0SJohannes Berg 
46bdcbd8e0SJohannes Berg #ifdef CONFIG_MAC80211_MHWMP_DEBUG
47bdcbd8e0SJohannes Berg #define MAC80211_MHWMP_DEBUG 1
48bdcbd8e0SJohannes Berg #else
49bdcbd8e0SJohannes Berg #define MAC80211_MHWMP_DEBUG 0
50bdcbd8e0SJohannes Berg #endif
51bdcbd8e0SJohannes Berg 
52bdcbd8e0SJohannes Berg #ifdef CONFIG_MAC80211_MESH_SYNC_DEBUG
53bdcbd8e0SJohannes Berg #define MAC80211_MESH_SYNC_DEBUG 1
54bdcbd8e0SJohannes Berg #else
55bdcbd8e0SJohannes Berg #define MAC80211_MESH_SYNC_DEBUG 0
56bdcbd8e0SJohannes Berg #endif
57bdcbd8e0SJohannes Berg 
588f2535b9SChun-Yeow Yeoh #ifdef CONFIG_MAC80211_MESH_CSA_DEBUG
598f2535b9SChun-Yeow Yeoh #define MAC80211_MESH_CSA_DEBUG 1
608f2535b9SChun-Yeow Yeoh #else
618f2535b9SChun-Yeow Yeoh #define MAC80211_MESH_CSA_DEBUG 0
628f2535b9SChun-Yeow Yeoh #endif
638f2535b9SChun-Yeow Yeoh 
643f52b7e3SMarco Porsch #ifdef CONFIG_MAC80211_MESH_PS_DEBUG
653f52b7e3SMarco Porsch #define MAC80211_MESH_PS_DEBUG 1
663f52b7e3SMarco Porsch #else
673f52b7e3SMarco Porsch #define MAC80211_MESH_PS_DEBUG 0
683f52b7e3SMarco Porsch #endif
693f52b7e3SMarco Porsch 
70bdcbd8e0SJohannes Berg #ifdef CONFIG_MAC80211_TDLS_DEBUG
71bdcbd8e0SJohannes Berg #define MAC80211_TDLS_DEBUG 1
72bdcbd8e0SJohannes Berg #else
73bdcbd8e0SJohannes Berg #define MAC80211_TDLS_DEBUG 0
74bdcbd8e0SJohannes Berg #endif
75bdcbd8e0SJohannes Berg 
76bdcbd8e0SJohannes Berg #ifdef CONFIG_MAC80211_STA_DEBUG
77bdcbd8e0SJohannes Berg #define MAC80211_STA_DEBUG 1
78bdcbd8e0SJohannes Berg #else
79bdcbd8e0SJohannes Berg #define MAC80211_STA_DEBUG 0
80bdcbd8e0SJohannes Berg #endif
81bdcbd8e0SJohannes Berg 
82bdcbd8e0SJohannes Berg #ifdef CONFIG_MAC80211_MLME_DEBUG
83bdcbd8e0SJohannes Berg #define MAC80211_MLME_DEBUG 1
84bdcbd8e0SJohannes Berg #else
85bdcbd8e0SJohannes Berg #define MAC80211_MLME_DEBUG 0
86bdcbd8e0SJohannes Berg #endif
87bdcbd8e0SJohannes Berg 
883fae0273SJohannes Berg #ifdef CONFIG_MAC80211_MESSAGE_TRACING
893fae0273SJohannes Berg void __sdata_info(const char *fmt, ...) __printf(1, 2);
903fae0273SJohannes Berg void __sdata_dbg(bool print, const char *fmt, ...) __printf(2, 3);
913fae0273SJohannes Berg void __sdata_err(const char *fmt, ...) __printf(1, 2);
923fae0273SJohannes Berg void __wiphy_dbg(struct wiphy *wiphy, bool print, const char *fmt, ...)
933fae0273SJohannes Berg 	__printf(3, 4);
943fae0273SJohannes Berg 
953fae0273SJohannes Berg #define _sdata_info(sdata, fmt, ...)					\
963fae0273SJohannes Berg 	__sdata_info("%s: " fmt, (sdata)->name, ##__VA_ARGS__)
973fae0273SJohannes Berg #define _sdata_dbg(print, sdata, fmt, ...)				\
983fae0273SJohannes Berg 	__sdata_dbg(print, "%s: " fmt, (sdata)->name, ##__VA_ARGS__)
993fae0273SJohannes Berg #define _sdata_err(sdata, fmt, ...)					\
1003fae0273SJohannes Berg 	__sdata_err("%s: " fmt, (sdata)->name, ##__VA_ARGS__)
1013fae0273SJohannes Berg #define _wiphy_dbg(print, wiphy, fmt, ...)				\
1023fae0273SJohannes Berg 	__wiphy_dbg(wiphy, print, fmt, ##__VA_ARGS__)
1033fae0273SJohannes Berg #else
104bdcbd8e0SJohannes Berg #define _sdata_info(sdata, fmt, ...)					\
105bdcbd8e0SJohannes Berg do {									\
106bdcbd8e0SJohannes Berg 	pr_info("%s: " fmt,						\
107bdcbd8e0SJohannes Berg 		(sdata)->name, ##__VA_ARGS__);				\
108bdcbd8e0SJohannes Berg } while (0)
109bdcbd8e0SJohannes Berg 
110bdcbd8e0SJohannes Berg #define _sdata_dbg(print, sdata, fmt, ...)				\
111bdcbd8e0SJohannes Berg do {									\
112bdcbd8e0SJohannes Berg 	if (print)							\
113bdcbd8e0SJohannes Berg 		pr_debug("%s: " fmt,					\
114bdcbd8e0SJohannes Berg 			 (sdata)->name, ##__VA_ARGS__);			\
115bdcbd8e0SJohannes Berg } while (0)
116bdcbd8e0SJohannes Berg 
117bdcbd8e0SJohannes Berg #define _sdata_err(sdata, fmt, ...)					\
118bdcbd8e0SJohannes Berg do {									\
119bdcbd8e0SJohannes Berg 	pr_err("%s: " fmt,						\
120bdcbd8e0SJohannes Berg 	       (sdata)->name, ##__VA_ARGS__);				\
121bdcbd8e0SJohannes Berg } while (0)
122bdcbd8e0SJohannes Berg 
123bdcbd8e0SJohannes Berg #define _wiphy_dbg(print, wiphy, fmt, ...)				\
124bdcbd8e0SJohannes Berg do {									\
125bdcbd8e0SJohannes Berg 	if (print)							\
126bdcbd8e0SJohannes Berg 		wiphy_dbg((wiphy), fmt, ##__VA_ARGS__);			\
127bdcbd8e0SJohannes Berg } while (0)
1283fae0273SJohannes Berg #endif
129bdcbd8e0SJohannes Berg 
130bdcbd8e0SJohannes Berg #define sdata_info(sdata, fmt, ...)					\
131bdcbd8e0SJohannes Berg 	_sdata_info(sdata, fmt, ##__VA_ARGS__)
132bdcbd8e0SJohannes Berg #define sdata_err(sdata, fmt, ...)					\
133bdcbd8e0SJohannes Berg 	_sdata_err(sdata, fmt, ##__VA_ARGS__)
134bdcbd8e0SJohannes Berg #define sdata_dbg(sdata, fmt, ...)					\
135bdcbd8e0SJohannes Berg 	_sdata_dbg(1, sdata, fmt, ##__VA_ARGS__)
136bdcbd8e0SJohannes Berg 
137b4f85443SJohannes Berg #define link_info(link, fmt, ...)					\
138c5c48a11SJohannes Berg 	do {								\
139*f1871abdSIlan Peer 		if (ieee80211_vif_is_mld(&(link)->sdata->vif))          \
140c5c48a11SJohannes Berg 			_sdata_info((link)->sdata, "[link %d] " fmt,	\
141c5c48a11SJohannes Berg 				    (link)->link_id,			\
142c5c48a11SJohannes Berg 				    ##__VA_ARGS__);			\
143c5c48a11SJohannes Berg 		else							\
144c5c48a11SJohannes Berg 			_sdata_info((link)->sdata, fmt, ##__VA_ARGS__);	\
145c5c48a11SJohannes Berg 	} while (0)
146b4f85443SJohannes Berg #define link_err(link, fmt, ...)					\
147c5c48a11SJohannes Berg 	do {								\
148*f1871abdSIlan Peer 		if (ieee80211_vif_is_mld(&(link)->sdata->vif))          \
149c5c48a11SJohannes Berg 			_sdata_err((link)->sdata, "[link %d] " fmt,	\
150c5c48a11SJohannes Berg 				   (link)->link_id,			\
151c5c48a11SJohannes Berg 				   ##__VA_ARGS__);			\
152c5c48a11SJohannes Berg 		else							\
153c5c48a11SJohannes Berg 			_sdata_err((link)->sdata, fmt, ##__VA_ARGS__);	\
154c5c48a11SJohannes Berg 	} while (0)
155b4f85443SJohannes Berg #define link_dbg(link, fmt, ...)					\
156c5c48a11SJohannes Berg 	do {								\
157*f1871abdSIlan Peer 		if (ieee80211_vif_is_mld(&(link)->sdata->vif))          \
158c5c48a11SJohannes Berg 			_sdata_dbg(1, (link)->sdata, "[link %d] " fmt,	\
159c5c48a11SJohannes Berg 				   (link)->link_id,			\
160c5c48a11SJohannes Berg 				   ##__VA_ARGS__);			\
161c5c48a11SJohannes Berg 		else							\
162c5c48a11SJohannes Berg 			_sdata_dbg(1, (link)->sdata, fmt,		\
163c5c48a11SJohannes Berg 				   ##__VA_ARGS__);			\
164c5c48a11SJohannes Berg 	} while (0)
165b4f85443SJohannes Berg 
166bdcbd8e0SJohannes Berg #define ht_dbg(sdata, fmt, ...)						\
167bdcbd8e0SJohannes Berg 	_sdata_dbg(MAC80211_HT_DEBUG,					\
168bdcbd8e0SJohannes Berg 		   sdata, fmt, ##__VA_ARGS__)
169bdcbd8e0SJohannes Berg 
170bdcbd8e0SJohannes Berg #define ht_dbg_ratelimited(sdata, fmt, ...)				\
171bdcbd8e0SJohannes Berg 	_sdata_dbg(MAC80211_HT_DEBUG && net_ratelimit(),		\
172bdcbd8e0SJohannes Berg 		   sdata, fmt, ##__VA_ARGS__)
173bdcbd8e0SJohannes Berg 
174239281f8SRostislav Lisovy #define ocb_dbg(sdata, fmt, ...)					\
175239281f8SRostislav Lisovy 	_sdata_dbg(MAC80211_OCB_DEBUG,					\
176239281f8SRostislav Lisovy 		   sdata, fmt, ##__VA_ARGS__)
177239281f8SRostislav Lisovy 
178bdcbd8e0SJohannes Berg #define ibss_dbg(sdata, fmt, ...)					\
179bdcbd8e0SJohannes Berg 	_sdata_dbg(MAC80211_IBSS_DEBUG,					\
180bdcbd8e0SJohannes Berg 		   sdata, fmt, ##__VA_ARGS__)
181bdcbd8e0SJohannes Berg 
182bdcbd8e0SJohannes Berg #define ps_dbg(sdata, fmt, ...)						\
183bdcbd8e0SJohannes Berg 	_sdata_dbg(MAC80211_PS_DEBUG,					\
184bdcbd8e0SJohannes Berg 		   sdata, fmt, ##__VA_ARGS__)
185bdcbd8e0SJohannes Berg 
186bdcbd8e0SJohannes Berg #define ps_dbg_hw(hw, fmt, ...)						\
187bdcbd8e0SJohannes Berg 	_wiphy_dbg(MAC80211_PS_DEBUG,					\
188bdcbd8e0SJohannes Berg 		   (hw)->wiphy, fmt, ##__VA_ARGS__)
189bdcbd8e0SJohannes Berg 
190bdcbd8e0SJohannes Berg #define ps_dbg_ratelimited(sdata, fmt, ...)				\
191bdcbd8e0SJohannes Berg 	_sdata_dbg(MAC80211_PS_DEBUG && net_ratelimit(),		\
192bdcbd8e0SJohannes Berg 		   sdata, fmt, ##__VA_ARGS__)
193bdcbd8e0SJohannes Berg 
194bdcbd8e0SJohannes Berg #define mpl_dbg(sdata, fmt, ...)					\
195bdcbd8e0SJohannes Berg 	_sdata_dbg(MAC80211_MPL_DEBUG,					\
196bdcbd8e0SJohannes Berg 		   sdata, fmt, ##__VA_ARGS__)
197bdcbd8e0SJohannes Berg 
198bdcbd8e0SJohannes Berg #define mpath_dbg(sdata, fmt, ...)					\
199bdcbd8e0SJohannes Berg 	_sdata_dbg(MAC80211_MPATH_DEBUG,				\
200bdcbd8e0SJohannes Berg 		   sdata, fmt, ##__VA_ARGS__)
201bdcbd8e0SJohannes Berg 
202bdcbd8e0SJohannes Berg #define mhwmp_dbg(sdata, fmt, ...)					\
203bdcbd8e0SJohannes Berg 	_sdata_dbg(MAC80211_MHWMP_DEBUG,				\
204bdcbd8e0SJohannes Berg 		   sdata, fmt, ##__VA_ARGS__)
205bdcbd8e0SJohannes Berg 
206bdcbd8e0SJohannes Berg #define msync_dbg(sdata, fmt, ...)					\
207bdcbd8e0SJohannes Berg 	_sdata_dbg(MAC80211_MESH_SYNC_DEBUG,				\
208bdcbd8e0SJohannes Berg 		   sdata, fmt, ##__VA_ARGS__)
209bdcbd8e0SJohannes Berg 
2108f2535b9SChun-Yeow Yeoh #define mcsa_dbg(sdata, fmt, ...)					\
2118f2535b9SChun-Yeow Yeoh 	_sdata_dbg(MAC80211_MESH_CSA_DEBUG,				\
2128f2535b9SChun-Yeow Yeoh 		   sdata, fmt, ##__VA_ARGS__)
2138f2535b9SChun-Yeow Yeoh 
2143f52b7e3SMarco Porsch #define mps_dbg(sdata, fmt, ...)					\
2153f52b7e3SMarco Porsch 	_sdata_dbg(MAC80211_MESH_PS_DEBUG,				\
2163f52b7e3SMarco Porsch 		   sdata, fmt, ##__VA_ARGS__)
2173f52b7e3SMarco Porsch 
218bdcbd8e0SJohannes Berg #define tdls_dbg(sdata, fmt, ...)					\
219bdcbd8e0SJohannes Berg 	_sdata_dbg(MAC80211_TDLS_DEBUG,					\
220bdcbd8e0SJohannes Berg 		   sdata, fmt, ##__VA_ARGS__)
221bdcbd8e0SJohannes Berg 
222bdcbd8e0SJohannes Berg #define sta_dbg(sdata, fmt, ...)					\
223bdcbd8e0SJohannes Berg 	_sdata_dbg(MAC80211_STA_DEBUG,					\
224bdcbd8e0SJohannes Berg 		   sdata, fmt, ##__VA_ARGS__)
225bdcbd8e0SJohannes Berg 
226bdcbd8e0SJohannes Berg #define mlme_dbg(sdata, fmt, ...)					\
227bdcbd8e0SJohannes Berg 	_sdata_dbg(MAC80211_MLME_DEBUG,					\
228bdcbd8e0SJohannes Berg 		   sdata, fmt, ##__VA_ARGS__)
229bdcbd8e0SJohannes Berg 
230bdcbd8e0SJohannes Berg #define mlme_dbg_ratelimited(sdata, fmt, ...)				\
231bdcbd8e0SJohannes Berg 	_sdata_dbg(MAC80211_MLME_DEBUG && net_ratelimit(),		\
232bdcbd8e0SJohannes Berg 		   sdata, fmt, ##__VA_ARGS__)
233bdcbd8e0SJohannes Berg 
234bdcbd8e0SJohannes Berg #endif /* __MAC80211_DEBUG_H */
235