diff options
author | David S. Miller <davem@davemloft.net> | 2009-11-29 03:57:15 -0500 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2009-11-29 03:57:15 -0500 |
commit | 9b963e5d0e01461099a40117b05480f24b63381f (patch) | |
tree | 4756d554e37bf4ab7202f2c564cbe629af98b576 /net/mac80211/util.c | |
parent | 3b8626ba01a8a745a3fdf22dd347edd708b0af13 (diff) | |
parent | 5fdd4baef6195a1f2960e901c8877e2105f832ca (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.c | 19 |
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 | */ |
521 | static bool ieee80211_can_queue_work(struct ieee80211_local *local) | 521 | static 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) { |