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