diff options
author | Johannes Berg <johannes.berg@intel.com> | 2012-11-06 19:18:13 +0100 |
---|---|---|
committer | Johannes Berg <johannes.berg@intel.com> | 2012-11-09 17:34:35 +0100 |
commit | 9214ad7f9a0bfbfb2c204305e7391ce8b7fe4d29 (patch) | |
tree | d2f9154097739a3c9656920daf2b54f2c4dbde68 /net/mac80211 | |
parent | mac80211: remove unused tracepoint (diff) | |
download | linux-9214ad7f9a0bfbfb2c204305e7391ce8b7fe4d29.tar.xz linux-9214ad7f9a0bfbfb2c204305e7391ce8b7fe4d29.zip |
mac80211: call driver method when restart completes
When the driver requests a restart (reconfiguration) it
gets all the normal method calls, but can't really tell
why they're happening. Call a new restart_complete op
in the driver when the restart completes, so it could
keep its own state about the restart and clear it there.
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Diffstat (limited to 'net/mac80211')
-rw-r--r-- | net/mac80211/driver-ops.h | 10 | ||||
-rw-r--r-- | net/mac80211/trace.h | 5 | ||||
-rw-r--r-- | net/mac80211/util.c | 4 |
3 files changed, 18 insertions, 1 deletions
diff --git a/net/mac80211/driver-ops.h b/net/mac80211/driver-ops.h index 1701ad7013a4..4dc2577886ff 100644 --- a/net/mac80211/driver-ops.h +++ b/net/mac80211/driver-ops.h @@ -961,4 +961,14 @@ static inline void drv_stop_ap(struct ieee80211_local *local, trace_drv_return_void(local); } +static inline void drv_restart_complete(struct ieee80211_local *local) +{ + might_sleep(); + + trace_drv_restart_complete(local); + if (local->ops->restart_complete) + local->ops->restart_complete(&local->hw); + trace_drv_return_void(local); +} + #endif /* __MAC80211_DRIVER_OPS */ diff --git a/net/mac80211/trace.h b/net/mac80211/trace.h index 06a69ebcaede..758836c85a80 100644 --- a/net/mac80211/trace.h +++ b/net/mac80211/trace.h @@ -1411,6 +1411,11 @@ DEFINE_EVENT(local_sdata_evt, drv_stop_ap, TP_ARGS(local, sdata) ); +DEFINE_EVENT(local_only_evt, drv_restart_complete, + TP_PROTO(struct ieee80211_local *local), + TP_ARGS(local) +); + /* * Tracing for API calls that drivers call. */ diff --git a/net/mac80211/util.c b/net/mac80211/util.c index 1a511afbdf07..84858a14c8bf 100644 --- a/net/mac80211/util.c +++ b/net/mac80211/util.c @@ -1599,8 +1599,10 @@ int ieee80211_reconfig(struct ieee80211_local *local) * If this is for hw restart things are still running. * We may want to change that later, however. */ - if (!local->suspended) + if (!local->suspended) { + drv_restart_complete(local); return 0; + } #ifdef CONFIG_PM /* first set suspended false, then resuming */ |