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(1, 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