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 89void __sdata_info(const char *fmt, ...) __printf(1, 2); 90void __sdata_dbg(bool print, const char *fmt, ...) __printf(2, 3); 91void __sdata_err(const char *fmt, ...) __printf(1, 2); 92void __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, ...) \ 105do { \ 106 pr_info("%s: " fmt, \ 107 (sdata)->name, ##__VA_ARGS__); \ 108} while (0) 109 110#define _sdata_dbg(print, sdata, fmt, ...) \ 111do { \ 112 if (print) \ 113 pr_debug("%s: " fmt, \ 114 (sdata)->name, ##__VA_ARGS__); \ 115} while (0) 116 117#define _sdata_err(sdata, fmt, ...) \ 118do { \ 119 pr_err("%s: " fmt, \ 120 (sdata)->name, ##__VA_ARGS__); \ 121} while (0) 122 123#define _wiphy_dbg(print, wiphy, fmt, ...) \ 124do { \ 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_dbg(link, fmt, ...) \ 156 do { \ 157 if (ieee80211_vif_is_mld(&(link)->sdata->vif)) \ 158 _sdata_dbg(1, (link)->sdata, "[link %d] " fmt, \ 159 (link)->link_id, \ 160 ##__VA_ARGS__); \ 161 else \ 162 _sdata_dbg(1, (link)->sdata, fmt, \ 163 ##__VA_ARGS__); \ 164 } while (0) 165 166#define ht_dbg(sdata, fmt, ...) \ 167 _sdata_dbg(MAC80211_HT_DEBUG, \ 168 sdata, fmt, ##__VA_ARGS__) 169 170#define ht_dbg_ratelimited(sdata, fmt, ...) \ 171 _sdata_dbg(MAC80211_HT_DEBUG && net_ratelimit(), \ 172 sdata, fmt, ##__VA_ARGS__) 173 174#define ocb_dbg(sdata, fmt, ...) \ 175 _sdata_dbg(MAC80211_OCB_DEBUG, \ 176 sdata, fmt, ##__VA_ARGS__) 177 178#define ibss_dbg(sdata, fmt, ...) \ 179 _sdata_dbg(MAC80211_IBSS_DEBUG, \ 180 sdata, fmt, ##__VA_ARGS__) 181 182#define ps_dbg(sdata, fmt, ...) \ 183 _sdata_dbg(MAC80211_PS_DEBUG, \ 184 sdata, fmt, ##__VA_ARGS__) 185 186#define ps_dbg_hw(hw, fmt, ...) \ 187 _wiphy_dbg(MAC80211_PS_DEBUG, \ 188 (hw)->wiphy, fmt, ##__VA_ARGS__) 189 190#define ps_dbg_ratelimited(sdata, fmt, ...) \ 191 _sdata_dbg(MAC80211_PS_DEBUG && net_ratelimit(), \ 192 sdata, fmt, ##__VA_ARGS__) 193 194#define mpl_dbg(sdata, fmt, ...) \ 195 _sdata_dbg(MAC80211_MPL_DEBUG, \ 196 sdata, fmt, ##__VA_ARGS__) 197 198#define mpath_dbg(sdata, fmt, ...) \ 199 _sdata_dbg(MAC80211_MPATH_DEBUG, \ 200 sdata, fmt, ##__VA_ARGS__) 201 202#define mhwmp_dbg(sdata, fmt, ...) \ 203 _sdata_dbg(MAC80211_MHWMP_DEBUG, \ 204 sdata, fmt, ##__VA_ARGS__) 205 206#define msync_dbg(sdata, fmt, ...) \ 207 _sdata_dbg(MAC80211_MESH_SYNC_DEBUG, \ 208 sdata, fmt, ##__VA_ARGS__) 209 210#define mcsa_dbg(sdata, fmt, ...) \ 211 _sdata_dbg(MAC80211_MESH_CSA_DEBUG, \ 212 sdata, fmt, ##__VA_ARGS__) 213 214#define mps_dbg(sdata, fmt, ...) \ 215 _sdata_dbg(MAC80211_MESH_PS_DEBUG, \ 216 sdata, fmt, ##__VA_ARGS__) 217 218#define tdls_dbg(sdata, fmt, ...) \ 219 _sdata_dbg(MAC80211_TDLS_DEBUG, \ 220 sdata, fmt, ##__VA_ARGS__) 221 222#define sta_dbg(sdata, fmt, ...) \ 223 _sdata_dbg(MAC80211_STA_DEBUG, \ 224 sdata, fmt, ##__VA_ARGS__) 225 226#define mlme_dbg(sdata, fmt, ...) \ 227 _sdata_dbg(MAC80211_MLME_DEBUG, \ 228 sdata, fmt, ##__VA_ARGS__) 229 230#define mlme_dbg_ratelimited(sdata, fmt, ...) \ 231 _sdata_dbg(MAC80211_MLME_DEBUG && net_ratelimit(), \ 232 sdata, fmt, ##__VA_ARGS__) 233 234#endif /* __MAC80211_DEBUG_H */ 235