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