aboutsummaryrefslogtreecommitdiffstats
path: root/net/mac80211/util.c
diff options
context:
space:
mode:
authorDavid S. Miller <davem@davemloft.net>2009-11-29 03:57:15 -0500
committerDavid S. Miller <davem@davemloft.net>2009-11-29 03:57:15 -0500
commit9b963e5d0e01461099a40117b05480f24b63381f (patch)
tree4756d554e37bf4ab7202f2c564cbe629af98b576 /net/mac80211/util.c
parent3b8626ba01a8a745a3fdf22dd347edd708b0af13 (diff)
parent5fdd4baef6195a1f2960e901c8877e2105f832ca (diff)
Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6
Conflicts: drivers/ieee802154/fakehard.c drivers/net/e1000e/ich8lan.c drivers/net/e1000e/phy.c drivers/net/netxen/netxen_nic_init.c drivers/net/wireless/ath/ath9k/main.c
Diffstat (limited to 'net/mac80211/util.c')
-rw-r--r--net/mac80211/util.c19
1 files changed, 9 insertions, 10 deletions
diff --git a/net/mac80211/util.c b/net/mac80211/util.c
index 2fb0432ac830..d09f78bb2442 100644
--- a/net/mac80211/util.c
+++ b/net/mac80211/util.c
@@ -520,9 +520,9 @@ EXPORT_SYMBOL_GPL(ieee80211_iterate_active_interfaces_atomic);
520 */ 520 */
521static bool ieee80211_can_queue_work(struct ieee80211_local *local) 521static bool ieee80211_can_queue_work(struct ieee80211_local *local)
522{ 522{
523 if (WARN(local->suspended, "queueing ieee80211 work while " 523 if (WARN(local->suspended && !local->resuming,
524 "going to suspend\n")) 524 "queueing ieee80211 work while going to suspend\n"))
525 return false; 525 return false;
526 526
527 return true; 527 return true;
528} 528}
@@ -1033,13 +1033,9 @@ int ieee80211_reconfig(struct ieee80211_local *local)
1033 struct sta_info *sta; 1033 struct sta_info *sta;
1034 unsigned long flags; 1034 unsigned long flags;
1035 int res; 1035 int res;
1036 bool from_suspend = local->suspended;
1037 1036
1038 /* 1037 if (local->suspended)
1039 * We're going to start the hardware, at that point 1038 local->resuming = true;
1040 * we are no longer suspended and can RX frames.
1041 */
1042 local->suspended = false;
1043 1039
1044 /* restart hardware */ 1040 /* restart hardware */
1045 if (local->open_count) { 1041 if (local->open_count) {
@@ -1137,11 +1133,14 @@ int ieee80211_reconfig(struct ieee80211_local *local)
1137 * If this is for hw restart things are still running. 1133 * If this is for hw restart things are still running.
1138 * We may want to change that later, however. 1134 * We may want to change that later, however.
1139 */ 1135 */
1140 if (!from_suspend) 1136 if (!local->suspended)
1141 return 0; 1137 return 0;
1142 1138
1143#ifdef CONFIG_PM 1139#ifdef CONFIG_PM
1140 /* first set suspended false, then resuming */
1144 local->suspended = false; 1141 local->suspended = false;
1142 mb();
1143 local->resuming = false;
1145 1144
1146 list_for_each_entry(sdata, &local->interfaces, list) { 1145 list_for_each_entry(sdata, &local->interfaces, list) {
1147 switch(sdata->vif.type) { 1146 switch(sdata->vif.type) {