aboutsummaryrefslogtreecommitdiffstats
path: root/net
diff options
context:
space:
mode:
authorJohannes Berg <johannes.berg@intel.com>2012-11-06 13:18:13 -0500
committerJohannes Berg <johannes.berg@intel.com>2012-11-09 11:34:35 -0500
commit9214ad7f9a0bfbfb2c204305e7391ce8b7fe4d29 (patch)
treed2f9154097739a3c9656920daf2b54f2c4dbde68 /net
parent60762cbfebafe41425e39d32efc07f260d4a100c (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.h10
-rw-r--r--net/mac80211/trace.h5
-rw-r--r--net/mac80211/util.c4
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
964static 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
1414DEFINE_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 */