diff options
author | Johannes Berg <johannes.berg@intel.com> | 2012-11-06 13:18:13 -0500 |
---|---|---|
committer | Johannes Berg <johannes.berg@intel.com> | 2012-11-09 11:34:35 -0500 |
commit | 9214ad7f9a0bfbfb2c204305e7391ce8b7fe4d29 (patch) | |
tree | d2f9154097739a3c9656920daf2b54f2c4dbde68 /net | |
parent | 60762cbfebafe41425e39d32efc07f260d4a100c (diff) |
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')
-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, | |||
961 | trace_drv_return_void(local); | 961 | trace_drv_return_void(local); |
962 | } | 962 | } |
963 | 963 | ||
964 | static inline void drv_restart_complete(struct ieee80211_local *local) | ||
965 | { | ||
966 | might_sleep(); | ||
967 | |||
968 | trace_drv_restart_complete(local); | ||
969 | if (local->ops->restart_complete) | ||
970 | local->ops->restart_complete(&local->hw); | ||
971 | trace_drv_return_void(local); | ||
972 | } | ||
973 | |||
964 | #endif /* __MAC80211_DRIVER_OPS */ | 974 | #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, | |||
1411 | TP_ARGS(local, sdata) | 1411 | TP_ARGS(local, sdata) |
1412 | ); | 1412 | ); |
1413 | 1413 | ||
1414 | DEFINE_EVENT(local_only_evt, drv_restart_complete, | ||
1415 | TP_PROTO(struct ieee80211_local *local), | ||
1416 | TP_ARGS(local) | ||
1417 | ); | ||
1418 | |||
1414 | /* | 1419 | /* |
1415 | * Tracing for API calls that drivers call. | 1420 | * Tracing for API calls that drivers call. |
1416 | */ | 1421 | */ |
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) | |||
1599 | * If this is for hw restart things are still running. | 1599 | * If this is for hw restart things are still running. |
1600 | * We may want to change that later, however. | 1600 | * We may want to change that later, however. |
1601 | */ | 1601 | */ |
1602 | if (!local->suspended) | 1602 | if (!local->suspended) { |
1603 | drv_restart_complete(local); | ||
1603 | return 0; | 1604 | return 0; |
1605 | } | ||
1604 | 1606 | ||
1605 | #ifdef CONFIG_PM | 1607 | #ifdef CONFIG_PM |
1606 | /* first set suspended false, then resuming */ | 1608 | /* first set suspended false, then resuming */ |