aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJohannes Berg <johannes.berg@intel.com>2010-06-10 04:56:20 -0400
committerJohn W. Linville <linville@tuxdriver.com>2010-06-14 15:39:29 -0400
commit4efc76bdbf9bfd2b8624c4dd52b9d8ffed176b31 (patch)
tree49be6ee8edf101521f45c72773bc73a6351f11c8
parent8b58ff832df9222e1fb3c58ae7f745f95569b55e (diff)
mac80211: bracket driver tracing
Currently, driver tracing is sometimes invoked after and sometimes before the actual driver callback. This is fine as long as the driver has no tracing itself, but as soon as it does it gets confusing. To make traces containing such information easier to read, introduce a return tracer in mac80211 that essentially brackets any driver tracing, and invoke the real trace before the driver's callback, only showing the return value, if any, afterwards. Since tracing records the process, there's no problem with overlapping calls if that should happen. Signed-off-by: Johannes Berg <johannes.berg@intel.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
-rw-r--r--net/mac80211/driver-ops.h89
-rw-r--r--net/mac80211/driver-trace.h189
2 files changed, 156 insertions, 122 deletions
diff --git a/net/mac80211/driver-ops.h b/net/mac80211/driver-ops.h
index a4fcbcc4f458..965d64f68567 100644
--- a/net/mac80211/driver-ops.h
+++ b/net/mac80211/driver-ops.h
@@ -16,10 +16,11 @@ static inline int drv_start(struct ieee80211_local *local)
16 16
17 might_sleep(); 17 might_sleep();
18 18
19 trace_drv_start(local);
19 local->started = true; 20 local->started = true;
20 smp_mb(); 21 smp_mb();
21 ret = local->ops->start(&local->hw); 22 ret = local->ops->start(&local->hw);
22 trace_drv_start(local, ret); 23 trace_drv_return_int(local, ret);
23 return ret; 24 return ret;
24} 25}
25 26
@@ -27,8 +28,9 @@ static inline void drv_stop(struct ieee80211_local *local)
27{ 28{
28 might_sleep(); 29 might_sleep();
29 30
30 local->ops->stop(&local->hw);
31 trace_drv_stop(local); 31 trace_drv_stop(local);
32 local->ops->stop(&local->hw);
33 trace_drv_return_void(local);
32 34
33 /* sync away all work on the tasklet before clearing started */ 35 /* sync away all work on the tasklet before clearing started */
34 tasklet_disable(&local->tasklet); 36 tasklet_disable(&local->tasklet);
@@ -46,8 +48,9 @@ static inline int drv_add_interface(struct ieee80211_local *local,
46 48
47 might_sleep(); 49 might_sleep();
48 50
51 trace_drv_add_interface(local, vif_to_sdata(vif));
49 ret = local->ops->add_interface(&local->hw, vif); 52 ret = local->ops->add_interface(&local->hw, vif);
50 trace_drv_add_interface(local, vif_to_sdata(vif), ret); 53 trace_drv_return_int(local, ret);
51 return ret; 54 return ret;
52} 55}
53 56
@@ -56,8 +59,9 @@ static inline void drv_remove_interface(struct ieee80211_local *local,
56{ 59{
57 might_sleep(); 60 might_sleep();
58 61
59 local->ops->remove_interface(&local->hw, vif);
60 trace_drv_remove_interface(local, vif_to_sdata(vif)); 62 trace_drv_remove_interface(local, vif_to_sdata(vif));
63 local->ops->remove_interface(&local->hw, vif);
64 trace_drv_return_void(local);
61} 65}
62 66
63static inline int drv_config(struct ieee80211_local *local, u32 changed) 67static inline int drv_config(struct ieee80211_local *local, u32 changed)
@@ -66,8 +70,9 @@ static inline int drv_config(struct ieee80211_local *local, u32 changed)
66 70
67 might_sleep(); 71 might_sleep();
68 72
73 trace_drv_config(local, changed);
69 ret = local->ops->config(&local->hw, changed); 74 ret = local->ops->config(&local->hw, changed);
70 trace_drv_config(local, changed, ret); 75 trace_drv_return_int(local, ret);
71 return ret; 76 return ret;
72} 77}
73 78
@@ -78,9 +83,10 @@ static inline void drv_bss_info_changed(struct ieee80211_local *local,
78{ 83{
79 might_sleep(); 84 might_sleep();
80 85
86 trace_drv_bss_info_changed(local, sdata, info, changed);
81 if (local->ops->bss_info_changed) 87 if (local->ops->bss_info_changed)
82 local->ops->bss_info_changed(&local->hw, &sdata->vif, info, changed); 88 local->ops->bss_info_changed(&local->hw, &sdata->vif, info, changed);
83 trace_drv_bss_info_changed(local, sdata, info, changed); 89 trace_drv_return_void(local);
84} 90}
85 91
86struct in_ifaddr; 92struct in_ifaddr;
@@ -92,11 +98,11 @@ static inline int drv_configure_arp_filter(struct ieee80211_local *local,
92 98
93 might_sleep(); 99 might_sleep();
94 100
101 trace_drv_configure_arp_filter(local, vif_to_sdata(vif));
95 if (local->ops->configure_arp_filter) 102 if (local->ops->configure_arp_filter)
96 ret = local->ops->configure_arp_filter(&local->hw, vif, 103 ret = local->ops->configure_arp_filter(&local->hw, vif,
97 ifa_list); 104 ifa_list);
98 105 trace_drv_return_int(local, ret);
99 trace_drv_configure_arp_filter(local, vif_to_sdata(vif), ifa_list, ret);
100 return ret; 106 return ret;
101} 107}
102 108
@@ -105,10 +111,12 @@ static inline u64 drv_prepare_multicast(struct ieee80211_local *local,
105{ 111{
106 u64 ret = 0; 112 u64 ret = 0;
107 113
114 trace_drv_prepare_multicast(local, mc_list->count);
115
108 if (local->ops->prepare_multicast) 116 if (local->ops->prepare_multicast)
109 ret = local->ops->prepare_multicast(&local->hw, mc_list); 117 ret = local->ops->prepare_multicast(&local->hw, mc_list);
110 118
111 trace_drv_prepare_multicast(local, mc_list->count, ret); 119 trace_drv_return_u64(local, ret);
112 120
113 return ret; 121 return ret;
114} 122}
@@ -120,19 +128,21 @@ static inline void drv_configure_filter(struct ieee80211_local *local,
120{ 128{
121 might_sleep(); 129 might_sleep();
122 130
123 local->ops->configure_filter(&local->hw, changed_flags, total_flags,
124 multicast);
125 trace_drv_configure_filter(local, changed_flags, total_flags, 131 trace_drv_configure_filter(local, changed_flags, total_flags,
126 multicast); 132 multicast);
133 local->ops->configure_filter(&local->hw, changed_flags, total_flags,
134 multicast);
135 trace_drv_return_void(local);
127} 136}
128 137
129static inline int drv_set_tim(struct ieee80211_local *local, 138static inline int drv_set_tim(struct ieee80211_local *local,
130 struct ieee80211_sta *sta, bool set) 139 struct ieee80211_sta *sta, bool set)
131{ 140{
132 int ret = 0; 141 int ret = 0;
142 trace_drv_set_tim(local, sta, set);
133 if (local->ops->set_tim) 143 if (local->ops->set_tim)
134 ret = local->ops->set_tim(&local->hw, sta, set); 144 ret = local->ops->set_tim(&local->hw, sta, set);
135 trace_drv_set_tim(local, sta, set, ret); 145 trace_drv_return_int(local, ret);
136 return ret; 146 return ret;
137} 147}
138 148
@@ -146,8 +156,9 @@ static inline int drv_set_key(struct ieee80211_local *local,
146 156
147 might_sleep(); 157 might_sleep();
148 158
159 trace_drv_set_key(local, cmd, sdata, sta, key);
149 ret = local->ops->set_key(&local->hw, cmd, &sdata->vif, sta, key); 160 ret = local->ops->set_key(&local->hw, cmd, &sdata->vif, sta, key);
150 trace_drv_set_key(local, cmd, sdata, sta, key, ret); 161 trace_drv_return_int(local, ret);
151 return ret; 162 return ret;
152} 163}
153 164
@@ -162,10 +173,11 @@ static inline void drv_update_tkip_key(struct ieee80211_local *local,
162 if (sta) 173 if (sta)
163 ista = &sta->sta; 174 ista = &sta->sta;
164 175
176 trace_drv_update_tkip_key(local, sdata, conf, ista, iv32);
165 if (local->ops->update_tkip_key) 177 if (local->ops->update_tkip_key)
166 local->ops->update_tkip_key(&local->hw, &sdata->vif, conf, 178 local->ops->update_tkip_key(&local->hw, &sdata->vif, conf,
167 ista, iv32, phase1key); 179 ista, iv32, phase1key);
168 trace_drv_update_tkip_key(local, sdata, conf, ista, iv32); 180 trace_drv_return_void(local);
169} 181}
170 182
171static inline int drv_hw_scan(struct ieee80211_local *local, 183static inline int drv_hw_scan(struct ieee80211_local *local,
@@ -176,8 +188,9 @@ static inline int drv_hw_scan(struct ieee80211_local *local,
176 188
177 might_sleep(); 189 might_sleep();
178 190
191 trace_drv_hw_scan(local, sdata, req);
179 ret = local->ops->hw_scan(&local->hw, &sdata->vif, req); 192 ret = local->ops->hw_scan(&local->hw, &sdata->vif, req);
180 trace_drv_hw_scan(local, sdata, req, ret); 193 trace_drv_return_int(local, ret);
181 return ret; 194 return ret;
182} 195}
183 196
@@ -185,18 +198,20 @@ static inline void drv_sw_scan_start(struct ieee80211_local *local)
185{ 198{
186 might_sleep(); 199 might_sleep();
187 200
201 trace_drv_sw_scan_start(local);
188 if (local->ops->sw_scan_start) 202 if (local->ops->sw_scan_start)
189 local->ops->sw_scan_start(&local->hw); 203 local->ops->sw_scan_start(&local->hw);
190 trace_drv_sw_scan_start(local); 204 trace_drv_return_void(local);
191} 205}
192 206
193static inline void drv_sw_scan_complete(struct ieee80211_local *local) 207static inline void drv_sw_scan_complete(struct ieee80211_local *local)
194{ 208{
195 might_sleep(); 209 might_sleep();
196 210
211 trace_drv_sw_scan_complete(local);
197 if (local->ops->sw_scan_complete) 212 if (local->ops->sw_scan_complete)
198 local->ops->sw_scan_complete(&local->hw); 213 local->ops->sw_scan_complete(&local->hw);
199 trace_drv_sw_scan_complete(local); 214 trace_drv_return_void(local);
200} 215}
201 216
202static inline int drv_get_stats(struct ieee80211_local *local, 217static inline int drv_get_stats(struct ieee80211_local *local,
@@ -228,9 +243,10 @@ static inline int drv_set_rts_threshold(struct ieee80211_local *local,
228 243
229 might_sleep(); 244 might_sleep();
230 245
246 trace_drv_set_rts_threshold(local, value);
231 if (local->ops->set_rts_threshold) 247 if (local->ops->set_rts_threshold)
232 ret = local->ops->set_rts_threshold(&local->hw, value); 248 ret = local->ops->set_rts_threshold(&local->hw, value);
233 trace_drv_set_rts_threshold(local, value, ret); 249 trace_drv_return_int(local, ret);
234 return ret; 250 return ret;
235} 251}
236 252
@@ -240,12 +256,13 @@ static inline int drv_set_coverage_class(struct ieee80211_local *local,
240 int ret = 0; 256 int ret = 0;
241 might_sleep(); 257 might_sleep();
242 258
259 trace_drv_set_coverage_class(local, value);
243 if (local->ops->set_coverage_class) 260 if (local->ops->set_coverage_class)
244 local->ops->set_coverage_class(&local->hw, value); 261 local->ops->set_coverage_class(&local->hw, value);
245 else 262 else
246 ret = -EOPNOTSUPP; 263 ret = -EOPNOTSUPP;
247 264
248 trace_drv_set_coverage_class(local, value, ret); 265 trace_drv_return_int(local, ret);
249 return ret; 266 return ret;
250} 267}
251 268
@@ -254,9 +271,10 @@ static inline void drv_sta_notify(struct ieee80211_local *local,
254 enum sta_notify_cmd cmd, 271 enum sta_notify_cmd cmd,
255 struct ieee80211_sta *sta) 272 struct ieee80211_sta *sta)
256{ 273{
274 trace_drv_sta_notify(local, sdata, cmd, sta);
257 if (local->ops->sta_notify) 275 if (local->ops->sta_notify)
258 local->ops->sta_notify(&local->hw, &sdata->vif, cmd, sta); 276 local->ops->sta_notify(&local->hw, &sdata->vif, cmd, sta);
259 trace_drv_sta_notify(local, sdata, cmd, sta); 277 trace_drv_return_void(local);
260} 278}
261 279
262static inline int drv_sta_add(struct ieee80211_local *local, 280static inline int drv_sta_add(struct ieee80211_local *local,
@@ -267,10 +285,11 @@ static inline int drv_sta_add(struct ieee80211_local *local,
267 285
268 might_sleep(); 286 might_sleep();
269 287
288 trace_drv_sta_add(local, sdata, sta);
270 if (local->ops->sta_add) 289 if (local->ops->sta_add)
271 ret = local->ops->sta_add(&local->hw, &sdata->vif, sta); 290 ret = local->ops->sta_add(&local->hw, &sdata->vif, sta);
272 291
273 trace_drv_sta_add(local, sdata, sta, ret); 292 trace_drv_return_int(local, ret);
274 293
275 return ret; 294 return ret;
276} 295}
@@ -281,10 +300,11 @@ static inline void drv_sta_remove(struct ieee80211_local *local,
281{ 300{
282 might_sleep(); 301 might_sleep();
283 302
303 trace_drv_sta_remove(local, sdata, sta);
284 if (local->ops->sta_remove) 304 if (local->ops->sta_remove)
285 local->ops->sta_remove(&local->hw, &sdata->vif, sta); 305 local->ops->sta_remove(&local->hw, &sdata->vif, sta);
286 306
287 trace_drv_sta_remove(local, sdata, sta); 307 trace_drv_return_void(local);
288} 308}
289 309
290static inline int drv_conf_tx(struct ieee80211_local *local, u16 queue, 310static inline int drv_conf_tx(struct ieee80211_local *local, u16 queue,
@@ -294,9 +314,10 @@ static inline int drv_conf_tx(struct ieee80211_local *local, u16 queue,
294 314
295 might_sleep(); 315 might_sleep();
296 316
317 trace_drv_conf_tx(local, queue, params);
297 if (local->ops->conf_tx) 318 if (local->ops->conf_tx)
298 ret = local->ops->conf_tx(&local->hw, queue, params); 319 ret = local->ops->conf_tx(&local->hw, queue, params);
299 trace_drv_conf_tx(local, queue, params, ret); 320 trace_drv_return_int(local, ret);
300 return ret; 321 return ret;
301} 322}
302 323
@@ -306,9 +327,10 @@ static inline u64 drv_get_tsf(struct ieee80211_local *local)
306 327
307 might_sleep(); 328 might_sleep();
308 329
330 trace_drv_get_tsf(local);
309 if (local->ops->get_tsf) 331 if (local->ops->get_tsf)
310 ret = local->ops->get_tsf(&local->hw); 332 ret = local->ops->get_tsf(&local->hw);
311 trace_drv_get_tsf(local, ret); 333 trace_drv_return_u64(local, ret);
312 return ret; 334 return ret;
313} 335}
314 336
@@ -316,18 +338,20 @@ static inline void drv_set_tsf(struct ieee80211_local *local, u64 tsf)
316{ 338{
317 might_sleep(); 339 might_sleep();
318 340
341 trace_drv_set_tsf(local, tsf);
319 if (local->ops->set_tsf) 342 if (local->ops->set_tsf)
320 local->ops->set_tsf(&local->hw, tsf); 343 local->ops->set_tsf(&local->hw, tsf);
321 trace_drv_set_tsf(local, tsf); 344 trace_drv_return_void(local);
322} 345}
323 346
324static inline void drv_reset_tsf(struct ieee80211_local *local) 347static inline void drv_reset_tsf(struct ieee80211_local *local)
325{ 348{
326 might_sleep(); 349 might_sleep();
327 350
351 trace_drv_reset_tsf(local);
328 if (local->ops->reset_tsf) 352 if (local->ops->reset_tsf)
329 local->ops->reset_tsf(&local->hw); 353 local->ops->reset_tsf(&local->hw);
330 trace_drv_reset_tsf(local); 354 trace_drv_return_void(local);
331} 355}
332 356
333static inline int drv_tx_last_beacon(struct ieee80211_local *local) 357static inline int drv_tx_last_beacon(struct ieee80211_local *local)
@@ -336,9 +360,10 @@ static inline int drv_tx_last_beacon(struct ieee80211_local *local)
336 360
337 might_sleep(); 361 might_sleep();
338 362
363 trace_drv_tx_last_beacon(local);
339 if (local->ops->tx_last_beacon) 364 if (local->ops->tx_last_beacon)
340 ret = local->ops->tx_last_beacon(&local->hw); 365 ret = local->ops->tx_last_beacon(&local->hw);
341 trace_drv_tx_last_beacon(local, ret); 366 trace_drv_return_int(local, ret);
342 return ret; 367 return ret;
343} 368}
344 369
@@ -352,11 +377,14 @@ static inline int drv_ampdu_action(struct ieee80211_local *local,
352 377
353 might_sleep(); 378 might_sleep();
354 379
380 trace_drv_ampdu_action(local, sdata, action, sta, tid, ssn);
381
355 if (local->ops->ampdu_action) 382 if (local->ops->ampdu_action)
356 ret = local->ops->ampdu_action(&local->hw, &sdata->vif, action, 383 ret = local->ops->ampdu_action(&local->hw, &sdata->vif, action,
357 sta, tid, ssn); 384 sta, tid, ssn);
358 385
359 trace_drv_ampdu_action(local, sdata, action, sta, tid, ssn, ret); 386 trace_drv_return_int(local, ret);
387
360 return ret; 388 return ret;
361} 389}
362 390
@@ -385,6 +413,7 @@ static inline void drv_flush(struct ieee80211_local *local, bool drop)
385 trace_drv_flush(local, drop); 413 trace_drv_flush(local, drop);
386 if (local->ops->flush) 414 if (local->ops->flush)
387 local->ops->flush(&local->hw, drop); 415 local->ops->flush(&local->hw, drop);
416 trace_drv_return_void(local);
388} 417}
389 418
390static inline void drv_channel_switch(struct ieee80211_local *local, 419static inline void drv_channel_switch(struct ieee80211_local *local,
@@ -392,9 +421,9 @@ static inline void drv_channel_switch(struct ieee80211_local *local,
392{ 421{
393 might_sleep(); 422 might_sleep();
394 423
395 local->ops->channel_switch(&local->hw, ch_switch);
396
397 trace_drv_channel_switch(local, ch_switch); 424 trace_drv_channel_switch(local, ch_switch);
425 local->ops->channel_switch(&local->hw, ch_switch);
426 trace_drv_return_void(local);
398} 427}
399 428
400#endif /* __MAC80211_DRIVER_OPS */ 429#endif /* __MAC80211_DRIVER_OPS */
diff --git a/net/mac80211/driver-trace.h b/net/mac80211/driver-trace.h
index 6b90630151ab..06444ea67bc4 100644
--- a/net/mac80211/driver-trace.h
+++ b/net/mac80211/driver-trace.h
@@ -36,20 +36,58 @@ static inline void trace_ ## name(proto) {}
36 * Tracing for driver callbacks. 36 * Tracing for driver callbacks.
37 */ 37 */
38 38
39TRACE_EVENT(drv_start, 39TRACE_EVENT(drv_return_void,
40 TP_PROTO(struct ieee80211_local *local, int ret), 40 TP_PROTO(struct ieee80211_local *local),
41 TP_ARGS(local),
42 TP_STRUCT__entry(
43 LOCAL_ENTRY
44 ),
45 TP_fast_assign(
46 LOCAL_ASSIGN;
47 ),
48 TP_printk(LOCAL_PR_FMT, LOCAL_PR_ARG)
49);
41 50
51TRACE_EVENT(drv_return_int,
52 TP_PROTO(struct ieee80211_local *local, int ret),
42 TP_ARGS(local, ret), 53 TP_ARGS(local, ret),
43
44 TP_STRUCT__entry( 54 TP_STRUCT__entry(
45 LOCAL_ENTRY 55 LOCAL_ENTRY
46 __field(int, ret) 56 __field(int, ret)
47 ), 57 ),
58 TP_fast_assign(
59 LOCAL_ASSIGN;
60 __entry->ret = ret;
61 ),
62 TP_printk(LOCAL_PR_FMT " - %d", LOCAL_PR_ARG, __entry->ret)
63);
48 64
65TRACE_EVENT(drv_return_u64,
66 TP_PROTO(struct ieee80211_local *local, u64 ret),
67 TP_ARGS(local, ret),
68 TP_STRUCT__entry(
69 LOCAL_ENTRY
70 __field(u64, ret)
71 ),
49 TP_fast_assign( 72 TP_fast_assign(
50 LOCAL_ASSIGN; 73 LOCAL_ASSIGN;
51 __entry->ret = ret; 74 __entry->ret = ret;
52 ), 75 ),
76 TP_printk(LOCAL_PR_FMT " - %llu", LOCAL_PR_ARG, __entry->ret)
77);
78
79TRACE_EVENT(drv_start,
80 TP_PROTO(struct ieee80211_local *local),
81
82 TP_ARGS(local),
83
84 TP_STRUCT__entry(
85 LOCAL_ENTRY
86 ),
87
88 TP_fast_assign(
89 LOCAL_ASSIGN;
90 ),
53 91
54 TP_printk( 92 TP_printk(
55 LOCAL_PR_FMT, LOCAL_PR_ARG 93 LOCAL_PR_FMT, LOCAL_PR_ARG
@@ -76,28 +114,25 @@ TRACE_EVENT(drv_stop,
76 114
77TRACE_EVENT(drv_add_interface, 115TRACE_EVENT(drv_add_interface,
78 TP_PROTO(struct ieee80211_local *local, 116 TP_PROTO(struct ieee80211_local *local,
79 struct ieee80211_sub_if_data *sdata, 117 struct ieee80211_sub_if_data *sdata),
80 int ret),
81 118
82 TP_ARGS(local, sdata, ret), 119 TP_ARGS(local, sdata),
83 120
84 TP_STRUCT__entry( 121 TP_STRUCT__entry(
85 LOCAL_ENTRY 122 LOCAL_ENTRY
86 VIF_ENTRY 123 VIF_ENTRY
87 __array(char, addr, 6) 124 __array(char, addr, 6)
88 __field(int, ret)
89 ), 125 ),
90 126
91 TP_fast_assign( 127 TP_fast_assign(
92 LOCAL_ASSIGN; 128 LOCAL_ASSIGN;
93 VIF_ASSIGN; 129 VIF_ASSIGN;
94 memcpy(__entry->addr, sdata->vif.addr, 6); 130 memcpy(__entry->addr, sdata->vif.addr, 6);
95 __entry->ret = ret;
96 ), 131 ),
97 132
98 TP_printk( 133 TP_printk(
99 LOCAL_PR_FMT VIF_PR_FMT " addr:%pM ret:%d", 134 LOCAL_PR_FMT VIF_PR_FMT " addr:%pM",
100 LOCAL_PR_ARG, VIF_PR_ARG, __entry->addr, __entry->ret 135 LOCAL_PR_ARG, VIF_PR_ARG, __entry->addr
101 ) 136 )
102); 137);
103 138
@@ -126,15 +161,13 @@ TRACE_EVENT(drv_remove_interface,
126 161
127TRACE_EVENT(drv_config, 162TRACE_EVENT(drv_config,
128 TP_PROTO(struct ieee80211_local *local, 163 TP_PROTO(struct ieee80211_local *local,
129 u32 changed, 164 u32 changed),
130 int ret),
131 165
132 TP_ARGS(local, changed, ret), 166 TP_ARGS(local, changed),
133 167
134 TP_STRUCT__entry( 168 TP_STRUCT__entry(
135 LOCAL_ENTRY 169 LOCAL_ENTRY
136 __field(u32, changed) 170 __field(u32, changed)
137 __field(int, ret)
138 __field(u32, flags) 171 __field(u32, flags)
139 __field(int, power_level) 172 __field(int, power_level)
140 __field(int, dynamic_ps_timeout) 173 __field(int, dynamic_ps_timeout)
@@ -150,7 +183,6 @@ TRACE_EVENT(drv_config,
150 TP_fast_assign( 183 TP_fast_assign(
151 LOCAL_ASSIGN; 184 LOCAL_ASSIGN;
152 __entry->changed = changed; 185 __entry->changed = changed;
153 __entry->ret = ret;
154 __entry->flags = local->hw.conf.flags; 186 __entry->flags = local->hw.conf.flags;
155 __entry->power_level = local->hw.conf.power_level; 187 __entry->power_level = local->hw.conf.power_level;
156 __entry->dynamic_ps_timeout = local->hw.conf.dynamic_ps_timeout; 188 __entry->dynamic_ps_timeout = local->hw.conf.dynamic_ps_timeout;
@@ -164,8 +196,8 @@ TRACE_EVENT(drv_config,
164 ), 196 ),
165 197
166 TP_printk( 198 TP_printk(
167 LOCAL_PR_FMT " ch:%#x freq:%d ret:%d", 199 LOCAL_PR_FMT " ch:%#x freq:%d",
168 LOCAL_PR_ARG, __entry->changed, __entry->center_freq, __entry->ret 200 LOCAL_PR_ARG, __entry->changed, __entry->center_freq
169 ) 201 )
170); 202);
171 203
@@ -221,50 +253,44 @@ TRACE_EVENT(drv_bss_info_changed,
221 253
222TRACE_EVENT(drv_configure_arp_filter, 254TRACE_EVENT(drv_configure_arp_filter,
223 TP_PROTO(struct ieee80211_local *local, 255 TP_PROTO(struct ieee80211_local *local,
224 struct ieee80211_sub_if_data *sdata, 256 struct ieee80211_sub_if_data *sdata),
225 struct in_ifaddr *ifa_list, int ret),
226 257
227 TP_ARGS(local, sdata, ifa_list, ret), 258 TP_ARGS(local, sdata),
228 259
229 TP_STRUCT__entry( 260 TP_STRUCT__entry(
230 LOCAL_ENTRY 261 LOCAL_ENTRY
231 VIF_ENTRY 262 VIF_ENTRY
232 __field(int, ret)
233 ), 263 ),
234 264
235 TP_fast_assign( 265 TP_fast_assign(
236 LOCAL_ASSIGN; 266 LOCAL_ASSIGN;
237 VIF_ASSIGN; 267 VIF_ASSIGN;
238 __entry->ret = ret;
239 ), 268 ),
240 269
241 TP_printk( 270 TP_printk(
242 VIF_PR_FMT LOCAL_PR_FMT " ret:%d", 271 VIF_PR_FMT LOCAL_PR_FMT,
243 VIF_PR_ARG, LOCAL_PR_ARG, __entry->ret 272 VIF_PR_ARG, LOCAL_PR_ARG
244 ) 273 )
245); 274);
246 275
247TRACE_EVENT(drv_prepare_multicast, 276TRACE_EVENT(drv_prepare_multicast,
248 TP_PROTO(struct ieee80211_local *local, int mc_count, u64 ret), 277 TP_PROTO(struct ieee80211_local *local, int mc_count),
249 278
250 TP_ARGS(local, mc_count, ret), 279 TP_ARGS(local, mc_count),
251 280
252 TP_STRUCT__entry( 281 TP_STRUCT__entry(
253 LOCAL_ENTRY 282 LOCAL_ENTRY
254 __field(int, mc_count) 283 __field(int, mc_count)
255 __field(u64, ret)
256 ), 284 ),
257 285
258 TP_fast_assign( 286 TP_fast_assign(
259 LOCAL_ASSIGN; 287 LOCAL_ASSIGN;
260 __entry->mc_count = mc_count; 288 __entry->mc_count = mc_count;
261 __entry->ret = ret;
262 ), 289 ),
263 290
264 TP_printk( 291 TP_printk(
265 LOCAL_PR_FMT " prepare mc (%d): %llx", 292 LOCAL_PR_FMT " prepare mc (%d)",
266 LOCAL_PR_ARG, __entry->mc_count, 293 LOCAL_PR_ARG, __entry->mc_count
267 (unsigned long long) __entry->ret
268 ) 294 )
269); 295);
270 296
@@ -298,27 +324,25 @@ TRACE_EVENT(drv_configure_filter,
298 324
299TRACE_EVENT(drv_set_tim, 325TRACE_EVENT(drv_set_tim,
300 TP_PROTO(struct ieee80211_local *local, 326 TP_PROTO(struct ieee80211_local *local,
301 struct ieee80211_sta *sta, bool set, int ret), 327 struct ieee80211_sta *sta, bool set),
302 328
303 TP_ARGS(local, sta, set, ret), 329 TP_ARGS(local, sta, set),
304 330
305 TP_STRUCT__entry( 331 TP_STRUCT__entry(
306 LOCAL_ENTRY 332 LOCAL_ENTRY
307 STA_ENTRY 333 STA_ENTRY
308 __field(bool, set) 334 __field(bool, set)
309 __field(int, ret)
310 ), 335 ),
311 336
312 TP_fast_assign( 337 TP_fast_assign(
313 LOCAL_ASSIGN; 338 LOCAL_ASSIGN;
314 STA_ASSIGN; 339 STA_ASSIGN;
315 __entry->set = set; 340 __entry->set = set;
316 __entry->ret = ret;
317 ), 341 ),
318 342
319 TP_printk( 343 TP_printk(
320 LOCAL_PR_FMT STA_PR_FMT " set:%d ret:%d", 344 LOCAL_PR_FMT STA_PR_FMT " set:%d",
321 LOCAL_PR_ARG, STA_PR_FMT, __entry->set, __entry->ret 345 LOCAL_PR_ARG, STA_PR_FMT, __entry->set
322 ) 346 )
323); 347);
324 348
@@ -326,9 +350,9 @@ TRACE_EVENT(drv_set_key,
326 TP_PROTO(struct ieee80211_local *local, 350 TP_PROTO(struct ieee80211_local *local,
327 enum set_key_cmd cmd, struct ieee80211_sub_if_data *sdata, 351 enum set_key_cmd cmd, struct ieee80211_sub_if_data *sdata,
328 struct ieee80211_sta *sta, 352 struct ieee80211_sta *sta,
329 struct ieee80211_key_conf *key, int ret), 353 struct ieee80211_key_conf *key),
330 354
331 TP_ARGS(local, cmd, sdata, sta, key, ret), 355 TP_ARGS(local, cmd, sdata, sta, key),
332 356
333 TP_STRUCT__entry( 357 TP_STRUCT__entry(
334 LOCAL_ENTRY 358 LOCAL_ENTRY
@@ -338,7 +362,6 @@ TRACE_EVENT(drv_set_key,
338 __field(u8, hw_key_idx) 362 __field(u8, hw_key_idx)
339 __field(u8, flags) 363 __field(u8, flags)
340 __field(s8, keyidx) 364 __field(s8, keyidx)
341 __field(int, ret)
342 ), 365 ),
343 366
344 TP_fast_assign( 367 TP_fast_assign(
@@ -349,12 +372,11 @@ TRACE_EVENT(drv_set_key,
349 __entry->flags = key->flags; 372 __entry->flags = key->flags;
350 __entry->keyidx = key->keyidx; 373 __entry->keyidx = key->keyidx;
351 __entry->hw_key_idx = key->hw_key_idx; 374 __entry->hw_key_idx = key->hw_key_idx;
352 __entry->ret = ret;
353 ), 375 ),
354 376
355 TP_printk( 377 TP_printk(
356 LOCAL_PR_FMT VIF_PR_FMT STA_PR_FMT " ret:%d", 378 LOCAL_PR_FMT VIF_PR_FMT STA_PR_FMT,
357 LOCAL_PR_ARG, VIF_PR_ARG, STA_PR_ARG, __entry->ret 379 LOCAL_PR_ARG, VIF_PR_ARG, STA_PR_ARG
358 ) 380 )
359); 381);
360 382
@@ -389,25 +411,23 @@ TRACE_EVENT(drv_update_tkip_key,
389TRACE_EVENT(drv_hw_scan, 411TRACE_EVENT(drv_hw_scan,
390 TP_PROTO(struct ieee80211_local *local, 412 TP_PROTO(struct ieee80211_local *local,
391 struct ieee80211_sub_if_data *sdata, 413 struct ieee80211_sub_if_data *sdata,
392 struct cfg80211_scan_request *req, int ret), 414 struct cfg80211_scan_request *req),
393 415
394 TP_ARGS(local, sdata, req, ret), 416 TP_ARGS(local, sdata, req),
395 417
396 TP_STRUCT__entry( 418 TP_STRUCT__entry(
397 LOCAL_ENTRY 419 LOCAL_ENTRY
398 VIF_ENTRY 420 VIF_ENTRY
399 __field(int, ret)
400 ), 421 ),
401 422
402 TP_fast_assign( 423 TP_fast_assign(
403 LOCAL_ASSIGN; 424 LOCAL_ASSIGN;
404 VIF_ASSIGN; 425 VIF_ASSIGN;
405 __entry->ret = ret;
406 ), 426 ),
407 427
408 TP_printk( 428 TP_printk(
409 LOCAL_PR_FMT VIF_PR_FMT " ret:%d", 429 LOCAL_PR_FMT VIF_PR_FMT,
410 LOCAL_PR_ARG,VIF_PR_ARG, __entry->ret 430 LOCAL_PR_ARG,VIF_PR_ARG
411 ) 431 )
412); 432);
413 433
@@ -504,48 +524,44 @@ TRACE_EVENT(drv_get_tkip_seq,
504); 524);
505 525
506TRACE_EVENT(drv_set_rts_threshold, 526TRACE_EVENT(drv_set_rts_threshold,
507 TP_PROTO(struct ieee80211_local *local, u32 value, int ret), 527 TP_PROTO(struct ieee80211_local *local, u32 value),
508 528
509 TP_ARGS(local, value, ret), 529 TP_ARGS(local, value),
510 530
511 TP_STRUCT__entry( 531 TP_STRUCT__entry(
512 LOCAL_ENTRY 532 LOCAL_ENTRY
513 __field(u32, value) 533 __field(u32, value)
514 __field(int, ret)
515 ), 534 ),
516 535
517 TP_fast_assign( 536 TP_fast_assign(
518 LOCAL_ASSIGN; 537 LOCAL_ASSIGN;
519 __entry->ret = ret;
520 __entry->value = value; 538 __entry->value = value;
521 ), 539 ),
522 540
523 TP_printk( 541 TP_printk(
524 LOCAL_PR_FMT " value:%d ret:%d", 542 LOCAL_PR_FMT " value:%d",
525 LOCAL_PR_ARG, __entry->value, __entry->ret 543 LOCAL_PR_ARG, __entry->value
526 ) 544 )
527); 545);
528 546
529TRACE_EVENT(drv_set_coverage_class, 547TRACE_EVENT(drv_set_coverage_class,
530 TP_PROTO(struct ieee80211_local *local, u8 value, int ret), 548 TP_PROTO(struct ieee80211_local *local, u8 value),
531 549
532 TP_ARGS(local, value, ret), 550 TP_ARGS(local, value),
533 551
534 TP_STRUCT__entry( 552 TP_STRUCT__entry(
535 LOCAL_ENTRY 553 LOCAL_ENTRY
536 __field(u8, value) 554 __field(u8, value)
537 __field(int, ret)
538 ), 555 ),
539 556
540 TP_fast_assign( 557 TP_fast_assign(
541 LOCAL_ASSIGN; 558 LOCAL_ASSIGN;
542 __entry->ret = ret;
543 __entry->value = value; 559 __entry->value = value;
544 ), 560 ),
545 561
546 TP_printk( 562 TP_printk(
547 LOCAL_PR_FMT " value:%d ret:%d", 563 LOCAL_PR_FMT " value:%d",
548 LOCAL_PR_ARG, __entry->value, __entry->ret 564 LOCAL_PR_ARG, __entry->value
549 ) 565 )
550); 566);
551 567
@@ -580,27 +596,25 @@ TRACE_EVENT(drv_sta_notify,
580TRACE_EVENT(drv_sta_add, 596TRACE_EVENT(drv_sta_add,
581 TP_PROTO(struct ieee80211_local *local, 597 TP_PROTO(struct ieee80211_local *local,
582 struct ieee80211_sub_if_data *sdata, 598 struct ieee80211_sub_if_data *sdata,
583 struct ieee80211_sta *sta, int ret), 599 struct ieee80211_sta *sta),
584 600
585 TP_ARGS(local, sdata, sta, ret), 601 TP_ARGS(local, sdata, sta),
586 602
587 TP_STRUCT__entry( 603 TP_STRUCT__entry(
588 LOCAL_ENTRY 604 LOCAL_ENTRY
589 VIF_ENTRY 605 VIF_ENTRY
590 STA_ENTRY 606 STA_ENTRY
591 __field(int, ret)
592 ), 607 ),
593 608
594 TP_fast_assign( 609 TP_fast_assign(
595 LOCAL_ASSIGN; 610 LOCAL_ASSIGN;
596 VIF_ASSIGN; 611 VIF_ASSIGN;
597 STA_ASSIGN; 612 STA_ASSIGN;
598 __entry->ret = ret;
599 ), 613 ),
600 614
601 TP_printk( 615 TP_printk(
602 LOCAL_PR_FMT VIF_PR_FMT STA_PR_FMT " ret:%d", 616 LOCAL_PR_FMT VIF_PR_FMT STA_PR_FMT,
603 LOCAL_PR_ARG, VIF_PR_ARG, STA_PR_ARG, __entry->ret 617 LOCAL_PR_ARG, VIF_PR_ARG, STA_PR_ARG
604 ) 618 )
605); 619);
606 620
@@ -631,10 +645,9 @@ TRACE_EVENT(drv_sta_remove,
631 645
632TRACE_EVENT(drv_conf_tx, 646TRACE_EVENT(drv_conf_tx,
633 TP_PROTO(struct ieee80211_local *local, u16 queue, 647 TP_PROTO(struct ieee80211_local *local, u16 queue,
634 const struct ieee80211_tx_queue_params *params, 648 const struct ieee80211_tx_queue_params *params),
635 int ret),
636 649
637 TP_ARGS(local, queue, params, ret), 650 TP_ARGS(local, queue, params),
638 651
639 TP_STRUCT__entry( 652 TP_STRUCT__entry(
640 LOCAL_ENTRY 653 LOCAL_ENTRY
@@ -643,13 +656,11 @@ TRACE_EVENT(drv_conf_tx,
643 __field(u16, cw_min) 656 __field(u16, cw_min)
644 __field(u16, cw_max) 657 __field(u16, cw_max)
645 __field(u8, aifs) 658 __field(u8, aifs)
646 __field(int, ret)
647 ), 659 ),
648 660
649 TP_fast_assign( 661 TP_fast_assign(
650 LOCAL_ASSIGN; 662 LOCAL_ASSIGN;
651 __entry->queue = queue; 663 __entry->queue = queue;
652 __entry->ret = ret;
653 __entry->txop = params->txop; 664 __entry->txop = params->txop;
654 __entry->cw_max = params->cw_max; 665 __entry->cw_max = params->cw_max;
655 __entry->cw_min = params->cw_min; 666 __entry->cw_min = params->cw_min;
@@ -657,29 +668,27 @@ TRACE_EVENT(drv_conf_tx,
657 ), 668 ),
658 669
659 TP_printk( 670 TP_printk(
660 LOCAL_PR_FMT " queue:%d ret:%d", 671 LOCAL_PR_FMT " queue:%d",
661 LOCAL_PR_ARG, __entry->queue, __entry->ret 672 LOCAL_PR_ARG, __entry->queue
662 ) 673 )
663); 674);
664 675
665TRACE_EVENT(drv_get_tsf, 676TRACE_EVENT(drv_get_tsf,
666 TP_PROTO(struct ieee80211_local *local, u64 ret), 677 TP_PROTO(struct ieee80211_local *local),
667 678
668 TP_ARGS(local, ret), 679 TP_ARGS(local),
669 680
670 TP_STRUCT__entry( 681 TP_STRUCT__entry(
671 LOCAL_ENTRY 682 LOCAL_ENTRY
672 __field(u64, ret)
673 ), 683 ),
674 684
675 TP_fast_assign( 685 TP_fast_assign(
676 LOCAL_ASSIGN; 686 LOCAL_ASSIGN;
677 __entry->ret = ret;
678 ), 687 ),
679 688
680 TP_printk( 689 TP_printk(
681 LOCAL_PR_FMT " ret:%llu", 690 LOCAL_PR_FMT,
682 LOCAL_PR_ARG, (unsigned long long)__entry->ret 691 LOCAL_PR_ARG
683 ) 692 )
684); 693);
685 694
@@ -723,23 +732,21 @@ TRACE_EVENT(drv_reset_tsf,
723); 732);
724 733
725TRACE_EVENT(drv_tx_last_beacon, 734TRACE_EVENT(drv_tx_last_beacon,
726 TP_PROTO(struct ieee80211_local *local, int ret), 735 TP_PROTO(struct ieee80211_local *local),
727 736
728 TP_ARGS(local, ret), 737 TP_ARGS(local),
729 738
730 TP_STRUCT__entry( 739 TP_STRUCT__entry(
731 LOCAL_ENTRY 740 LOCAL_ENTRY
732 __field(int, ret)
733 ), 741 ),
734 742
735 TP_fast_assign( 743 TP_fast_assign(
736 LOCAL_ASSIGN; 744 LOCAL_ASSIGN;
737 __entry->ret = ret;
738 ), 745 ),
739 746
740 TP_printk( 747 TP_printk(
741 LOCAL_PR_FMT " ret:%d", 748 LOCAL_PR_FMT,
742 LOCAL_PR_ARG, __entry->ret 749 LOCAL_PR_ARG
743 ) 750 )
744); 751);
745 752
@@ -748,9 +755,9 @@ TRACE_EVENT(drv_ampdu_action,
748 struct ieee80211_sub_if_data *sdata, 755 struct ieee80211_sub_if_data *sdata,
749 enum ieee80211_ampdu_mlme_action action, 756 enum ieee80211_ampdu_mlme_action action,
750 struct ieee80211_sta *sta, u16 tid, 757 struct ieee80211_sta *sta, u16 tid,
751 u16 *ssn, int ret), 758 u16 *ssn),
752 759
753 TP_ARGS(local, sdata, action, sta, tid, ssn, ret), 760 TP_ARGS(local, sdata, action, sta, tid, ssn),
754 761
755 TP_STRUCT__entry( 762 TP_STRUCT__entry(
756 LOCAL_ENTRY 763 LOCAL_ENTRY
@@ -758,7 +765,6 @@ TRACE_EVENT(drv_ampdu_action,
758 __field(u32, action) 765 __field(u32, action)
759 __field(u16, tid) 766 __field(u16, tid)
760 __field(u16, ssn) 767 __field(u16, ssn)
761 __field(int, ret)
762 VIF_ENTRY 768 VIF_ENTRY
763 ), 769 ),
764 770
@@ -766,15 +772,14 @@ TRACE_EVENT(drv_ampdu_action,
766 LOCAL_ASSIGN; 772 LOCAL_ASSIGN;
767 VIF_ASSIGN; 773 VIF_ASSIGN;
768 STA_ASSIGN; 774 STA_ASSIGN;
769 __entry->ret = ret;
770 __entry->action = action; 775 __entry->action = action;
771 __entry->tid = tid; 776 __entry->tid = tid;
772 __entry->ssn = ssn ? *ssn : 0; 777 __entry->ssn = ssn ? *ssn : 0;
773 ), 778 ),
774 779
775 TP_printk( 780 TP_printk(
776 LOCAL_PR_FMT VIF_PR_FMT STA_PR_FMT " action:%d tid:%d ret:%d", 781 LOCAL_PR_FMT VIF_PR_FMT STA_PR_FMT " action:%d tid:%d",
777 LOCAL_PR_ARG, VIF_PR_ARG, STA_PR_ARG, __entry->action, __entry->tid, __entry->ret 782 LOCAL_PR_ARG, VIF_PR_ARG, STA_PR_ARG, __entry->action, __entry->tid
778 ) 783 )
779); 784);
780 785