162306a36Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0 */
262306a36Sopenharmony_ci/*
362306a36Sopenharmony_ci * Portions
462306a36Sopenharmony_ci * Copyright (C) 2022 - 2023 Intel Corporation
562306a36Sopenharmony_ci */
662306a36Sopenharmony_ci#ifndef __MAC80211_DEBUG_H
762306a36Sopenharmony_ci#define __MAC80211_DEBUG_H
862306a36Sopenharmony_ci#include <net/cfg80211.h>
962306a36Sopenharmony_ci
1062306a36Sopenharmony_ci#ifdef CONFIG_MAC80211_OCB_DEBUG
1162306a36Sopenharmony_ci#define MAC80211_OCB_DEBUG 1
1262306a36Sopenharmony_ci#else
1362306a36Sopenharmony_ci#define MAC80211_OCB_DEBUG 0
1462306a36Sopenharmony_ci#endif
1562306a36Sopenharmony_ci
1662306a36Sopenharmony_ci#ifdef CONFIG_MAC80211_IBSS_DEBUG
1762306a36Sopenharmony_ci#define MAC80211_IBSS_DEBUG 1
1862306a36Sopenharmony_ci#else
1962306a36Sopenharmony_ci#define MAC80211_IBSS_DEBUG 0
2062306a36Sopenharmony_ci#endif
2162306a36Sopenharmony_ci
2262306a36Sopenharmony_ci#ifdef CONFIG_MAC80211_PS_DEBUG
2362306a36Sopenharmony_ci#define MAC80211_PS_DEBUG 1
2462306a36Sopenharmony_ci#else
2562306a36Sopenharmony_ci#define MAC80211_PS_DEBUG 0
2662306a36Sopenharmony_ci#endif
2762306a36Sopenharmony_ci
2862306a36Sopenharmony_ci#ifdef CONFIG_MAC80211_HT_DEBUG
2962306a36Sopenharmony_ci#define MAC80211_HT_DEBUG 1
3062306a36Sopenharmony_ci#else
3162306a36Sopenharmony_ci#define MAC80211_HT_DEBUG 0
3262306a36Sopenharmony_ci#endif
3362306a36Sopenharmony_ci
3462306a36Sopenharmony_ci#ifdef CONFIG_MAC80211_MPL_DEBUG
3562306a36Sopenharmony_ci#define MAC80211_MPL_DEBUG 1
3662306a36Sopenharmony_ci#else
3762306a36Sopenharmony_ci#define MAC80211_MPL_DEBUG 0
3862306a36Sopenharmony_ci#endif
3962306a36Sopenharmony_ci
4062306a36Sopenharmony_ci#ifdef CONFIG_MAC80211_MPATH_DEBUG
4162306a36Sopenharmony_ci#define MAC80211_MPATH_DEBUG 1
4262306a36Sopenharmony_ci#else
4362306a36Sopenharmony_ci#define MAC80211_MPATH_DEBUG 0
4462306a36Sopenharmony_ci#endif
4562306a36Sopenharmony_ci
4662306a36Sopenharmony_ci#ifdef CONFIG_MAC80211_MHWMP_DEBUG
4762306a36Sopenharmony_ci#define MAC80211_MHWMP_DEBUG 1
4862306a36Sopenharmony_ci#else
4962306a36Sopenharmony_ci#define MAC80211_MHWMP_DEBUG 0
5062306a36Sopenharmony_ci#endif
5162306a36Sopenharmony_ci
5262306a36Sopenharmony_ci#ifdef CONFIG_MAC80211_MESH_SYNC_DEBUG
5362306a36Sopenharmony_ci#define MAC80211_MESH_SYNC_DEBUG 1
5462306a36Sopenharmony_ci#else
5562306a36Sopenharmony_ci#define MAC80211_MESH_SYNC_DEBUG 0
5662306a36Sopenharmony_ci#endif
5762306a36Sopenharmony_ci
5862306a36Sopenharmony_ci#ifdef CONFIG_MAC80211_MESH_CSA_DEBUG
5962306a36Sopenharmony_ci#define MAC80211_MESH_CSA_DEBUG 1
6062306a36Sopenharmony_ci#else
6162306a36Sopenharmony_ci#define MAC80211_MESH_CSA_DEBUG 0
6262306a36Sopenharmony_ci#endif
6362306a36Sopenharmony_ci
6462306a36Sopenharmony_ci#ifdef CONFIG_MAC80211_MESH_PS_DEBUG
6562306a36Sopenharmony_ci#define MAC80211_MESH_PS_DEBUG 1
6662306a36Sopenharmony_ci#else
6762306a36Sopenharmony_ci#define MAC80211_MESH_PS_DEBUG 0
6862306a36Sopenharmony_ci#endif
6962306a36Sopenharmony_ci
7062306a36Sopenharmony_ci#ifdef CONFIG_MAC80211_TDLS_DEBUG
7162306a36Sopenharmony_ci#define MAC80211_TDLS_DEBUG 1
7262306a36Sopenharmony_ci#else
7362306a36Sopenharmony_ci#define MAC80211_TDLS_DEBUG 0
7462306a36Sopenharmony_ci#endif
7562306a36Sopenharmony_ci
7662306a36Sopenharmony_ci#ifdef CONFIG_MAC80211_STA_DEBUG
7762306a36Sopenharmony_ci#define MAC80211_STA_DEBUG 1
7862306a36Sopenharmony_ci#else
7962306a36Sopenharmony_ci#define MAC80211_STA_DEBUG 0
8062306a36Sopenharmony_ci#endif
8162306a36Sopenharmony_ci
8262306a36Sopenharmony_ci#ifdef CONFIG_MAC80211_MLME_DEBUG
8362306a36Sopenharmony_ci#define MAC80211_MLME_DEBUG 1
8462306a36Sopenharmony_ci#else
8562306a36Sopenharmony_ci#define MAC80211_MLME_DEBUG 0
8662306a36Sopenharmony_ci#endif
8762306a36Sopenharmony_ci
8862306a36Sopenharmony_ci#ifdef CONFIG_MAC80211_MESSAGE_TRACING
8962306a36Sopenharmony_civoid __sdata_info(const char *fmt, ...) __printf(1, 2);
9062306a36Sopenharmony_civoid __sdata_dbg(bool print, const char *fmt, ...) __printf(2, 3);
9162306a36Sopenharmony_civoid __sdata_err(const char *fmt, ...) __printf(1, 2);
9262306a36Sopenharmony_civoid __wiphy_dbg(struct wiphy *wiphy, bool print, const char *fmt, ...)
9362306a36Sopenharmony_ci	__printf(3, 4);
9462306a36Sopenharmony_ci
9562306a36Sopenharmony_ci#define _sdata_info(sdata, fmt, ...)					\
9662306a36Sopenharmony_ci	__sdata_info("%s: " fmt, (sdata)->name, ##__VA_ARGS__)
9762306a36Sopenharmony_ci#define _sdata_dbg(print, sdata, fmt, ...)				\
9862306a36Sopenharmony_ci	__sdata_dbg(print, "%s: " fmt, (sdata)->name, ##__VA_ARGS__)
9962306a36Sopenharmony_ci#define _sdata_err(sdata, fmt, ...)					\
10062306a36Sopenharmony_ci	__sdata_err("%s: " fmt, (sdata)->name, ##__VA_ARGS__)
10162306a36Sopenharmony_ci#define _wiphy_dbg(print, wiphy, fmt, ...)				\
10262306a36Sopenharmony_ci	__wiphy_dbg(wiphy, print, fmt, ##__VA_ARGS__)
10362306a36Sopenharmony_ci#else
10462306a36Sopenharmony_ci#define _sdata_info(sdata, fmt, ...)					\
10562306a36Sopenharmony_cido {									\
10662306a36Sopenharmony_ci	pr_info("%s: " fmt,						\
10762306a36Sopenharmony_ci		(sdata)->name, ##__VA_ARGS__);				\
10862306a36Sopenharmony_ci} while (0)
10962306a36Sopenharmony_ci
11062306a36Sopenharmony_ci#define _sdata_dbg(print, sdata, fmt, ...)				\
11162306a36Sopenharmony_cido {									\
11262306a36Sopenharmony_ci	if (print)							\
11362306a36Sopenharmony_ci		pr_debug("%s: " fmt,					\
11462306a36Sopenharmony_ci			 (sdata)->name, ##__VA_ARGS__);			\
11562306a36Sopenharmony_ci} while (0)
11662306a36Sopenharmony_ci
11762306a36Sopenharmony_ci#define _sdata_err(sdata, fmt, ...)					\
11862306a36Sopenharmony_cido {									\
11962306a36Sopenharmony_ci	pr_err("%s: " fmt,						\
12062306a36Sopenharmony_ci	       (sdata)->name, ##__VA_ARGS__);				\
12162306a36Sopenharmony_ci} while (0)
12262306a36Sopenharmony_ci
12362306a36Sopenharmony_ci#define _wiphy_dbg(print, wiphy, fmt, ...)				\
12462306a36Sopenharmony_cido {									\
12562306a36Sopenharmony_ci	if (print)							\
12662306a36Sopenharmony_ci		wiphy_dbg((wiphy), fmt, ##__VA_ARGS__);			\
12762306a36Sopenharmony_ci} while (0)
12862306a36Sopenharmony_ci#endif
12962306a36Sopenharmony_ci
13062306a36Sopenharmony_ci#define sdata_info(sdata, fmt, ...)					\
13162306a36Sopenharmony_ci	_sdata_info(sdata, fmt, ##__VA_ARGS__)
13262306a36Sopenharmony_ci#define sdata_err(sdata, fmt, ...)					\
13362306a36Sopenharmony_ci	_sdata_err(sdata, fmt, ##__VA_ARGS__)
13462306a36Sopenharmony_ci#define sdata_dbg(sdata, fmt, ...)					\
13562306a36Sopenharmony_ci	_sdata_dbg(1, sdata, fmt, ##__VA_ARGS__)
13662306a36Sopenharmony_ci
13762306a36Sopenharmony_ci#define link_info(link, fmt, ...)					\
13862306a36Sopenharmony_ci	do {								\
13962306a36Sopenharmony_ci		if (ieee80211_vif_is_mld(&(link)->sdata->vif))          \
14062306a36Sopenharmony_ci			_sdata_info((link)->sdata, "[link %d] " fmt,	\
14162306a36Sopenharmony_ci				    (link)->link_id,			\
14262306a36Sopenharmony_ci				    ##__VA_ARGS__);			\
14362306a36Sopenharmony_ci		else							\
14462306a36Sopenharmony_ci			_sdata_info((link)->sdata, fmt, ##__VA_ARGS__);	\
14562306a36Sopenharmony_ci	} while (0)
14662306a36Sopenharmony_ci#define link_err(link, fmt, ...)					\
14762306a36Sopenharmony_ci	do {								\
14862306a36Sopenharmony_ci		if (ieee80211_vif_is_mld(&(link)->sdata->vif))          \
14962306a36Sopenharmony_ci			_sdata_err((link)->sdata, "[link %d] " fmt,	\
15062306a36Sopenharmony_ci				   (link)->link_id,			\
15162306a36Sopenharmony_ci				   ##__VA_ARGS__);			\
15262306a36Sopenharmony_ci		else							\
15362306a36Sopenharmony_ci			_sdata_err((link)->sdata, fmt, ##__VA_ARGS__);	\
15462306a36Sopenharmony_ci	} while (0)
15562306a36Sopenharmony_ci#define link_dbg(link, fmt, ...)					\
15662306a36Sopenharmony_ci	do {								\
15762306a36Sopenharmony_ci		if (ieee80211_vif_is_mld(&(link)->sdata->vif))          \
15862306a36Sopenharmony_ci			_sdata_dbg(1, (link)->sdata, "[link %d] " fmt,	\
15962306a36Sopenharmony_ci				   (link)->link_id,			\
16062306a36Sopenharmony_ci				   ##__VA_ARGS__);			\
16162306a36Sopenharmony_ci		else							\
16262306a36Sopenharmony_ci			_sdata_dbg(1, (link)->sdata, fmt,		\
16362306a36Sopenharmony_ci				   ##__VA_ARGS__);			\
16462306a36Sopenharmony_ci	} while (0)
16562306a36Sopenharmony_ci
16662306a36Sopenharmony_ci#define ht_dbg(sdata, fmt, ...)						\
16762306a36Sopenharmony_ci	_sdata_dbg(MAC80211_HT_DEBUG,					\
16862306a36Sopenharmony_ci		   sdata, fmt, ##__VA_ARGS__)
16962306a36Sopenharmony_ci
17062306a36Sopenharmony_ci#define ht_dbg_ratelimited(sdata, fmt, ...)				\
17162306a36Sopenharmony_ci	_sdata_dbg(MAC80211_HT_DEBUG && net_ratelimit(),		\
17262306a36Sopenharmony_ci		   sdata, fmt, ##__VA_ARGS__)
17362306a36Sopenharmony_ci
17462306a36Sopenharmony_ci#define ocb_dbg(sdata, fmt, ...)					\
17562306a36Sopenharmony_ci	_sdata_dbg(MAC80211_OCB_DEBUG,					\
17662306a36Sopenharmony_ci		   sdata, fmt, ##__VA_ARGS__)
17762306a36Sopenharmony_ci
17862306a36Sopenharmony_ci#define ibss_dbg(sdata, fmt, ...)					\
17962306a36Sopenharmony_ci	_sdata_dbg(MAC80211_IBSS_DEBUG,					\
18062306a36Sopenharmony_ci		   sdata, fmt, ##__VA_ARGS__)
18162306a36Sopenharmony_ci
18262306a36Sopenharmony_ci#define ps_dbg(sdata, fmt, ...)						\
18362306a36Sopenharmony_ci	_sdata_dbg(MAC80211_PS_DEBUG,					\
18462306a36Sopenharmony_ci		   sdata, fmt, ##__VA_ARGS__)
18562306a36Sopenharmony_ci
18662306a36Sopenharmony_ci#define ps_dbg_hw(hw, fmt, ...)						\
18762306a36Sopenharmony_ci	_wiphy_dbg(MAC80211_PS_DEBUG,					\
18862306a36Sopenharmony_ci		   (hw)->wiphy, fmt, ##__VA_ARGS__)
18962306a36Sopenharmony_ci
19062306a36Sopenharmony_ci#define ps_dbg_ratelimited(sdata, fmt, ...)				\
19162306a36Sopenharmony_ci	_sdata_dbg(MAC80211_PS_DEBUG && net_ratelimit(),		\
19262306a36Sopenharmony_ci		   sdata, fmt, ##__VA_ARGS__)
19362306a36Sopenharmony_ci
19462306a36Sopenharmony_ci#define mpl_dbg(sdata, fmt, ...)					\
19562306a36Sopenharmony_ci	_sdata_dbg(MAC80211_MPL_DEBUG,					\
19662306a36Sopenharmony_ci		   sdata, fmt, ##__VA_ARGS__)
19762306a36Sopenharmony_ci
19862306a36Sopenharmony_ci#define mpath_dbg(sdata, fmt, ...)					\
19962306a36Sopenharmony_ci	_sdata_dbg(MAC80211_MPATH_DEBUG,				\
20062306a36Sopenharmony_ci		   sdata, fmt, ##__VA_ARGS__)
20162306a36Sopenharmony_ci
20262306a36Sopenharmony_ci#define mhwmp_dbg(sdata, fmt, ...)					\
20362306a36Sopenharmony_ci	_sdata_dbg(MAC80211_MHWMP_DEBUG,				\
20462306a36Sopenharmony_ci		   sdata, fmt, ##__VA_ARGS__)
20562306a36Sopenharmony_ci
20662306a36Sopenharmony_ci#define msync_dbg(sdata, fmt, ...)					\
20762306a36Sopenharmony_ci	_sdata_dbg(MAC80211_MESH_SYNC_DEBUG,				\
20862306a36Sopenharmony_ci		   sdata, fmt, ##__VA_ARGS__)
20962306a36Sopenharmony_ci
21062306a36Sopenharmony_ci#define mcsa_dbg(sdata, fmt, ...)					\
21162306a36Sopenharmony_ci	_sdata_dbg(MAC80211_MESH_CSA_DEBUG,				\
21262306a36Sopenharmony_ci		   sdata, fmt, ##__VA_ARGS__)
21362306a36Sopenharmony_ci
21462306a36Sopenharmony_ci#define mps_dbg(sdata, fmt, ...)					\
21562306a36Sopenharmony_ci	_sdata_dbg(MAC80211_MESH_PS_DEBUG,				\
21662306a36Sopenharmony_ci		   sdata, fmt, ##__VA_ARGS__)
21762306a36Sopenharmony_ci
21862306a36Sopenharmony_ci#define tdls_dbg(sdata, fmt, ...)					\
21962306a36Sopenharmony_ci	_sdata_dbg(MAC80211_TDLS_DEBUG,					\
22062306a36Sopenharmony_ci		   sdata, fmt, ##__VA_ARGS__)
22162306a36Sopenharmony_ci
22262306a36Sopenharmony_ci#define sta_dbg(sdata, fmt, ...)					\
22362306a36Sopenharmony_ci	_sdata_dbg(MAC80211_STA_DEBUG,					\
22462306a36Sopenharmony_ci		   sdata, fmt, ##__VA_ARGS__)
22562306a36Sopenharmony_ci
22662306a36Sopenharmony_ci#define mlme_dbg(sdata, fmt, ...)					\
22762306a36Sopenharmony_ci	_sdata_dbg(MAC80211_MLME_DEBUG,					\
22862306a36Sopenharmony_ci		   sdata, fmt, ##__VA_ARGS__)
22962306a36Sopenharmony_ci
23062306a36Sopenharmony_ci#define mlme_dbg_ratelimited(sdata, fmt, ...)				\
23162306a36Sopenharmony_ci	_sdata_dbg(MAC80211_MLME_DEBUG && net_ratelimit(),		\
23262306a36Sopenharmony_ci		   sdata, fmt, ##__VA_ARGS__)
23362306a36Sopenharmony_ci
23462306a36Sopenharmony_ci#endif /* __MAC80211_DEBUG_H */
235