diff options
Diffstat (limited to 'net/mac80211/util.c')
| -rw-r--r-- | net/mac80211/util.c | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/net/mac80211/util.c b/net/mac80211/util.c index ef0560a2346a..d3fe2d237485 100644 --- a/net/mac80211/util.c +++ b/net/mac80211/util.c | |||
| @@ -1125,9 +1125,27 @@ int ieee80211_reconfig(struct ieee80211_local *local) | |||
| 1125 | struct sta_info *sta; | 1125 | struct sta_info *sta; |
| 1126 | int res; | 1126 | int res; |
| 1127 | 1127 | ||
| 1128 | #ifdef CONFIG_PM | ||
| 1128 | if (local->suspended) | 1129 | if (local->suspended) |
| 1129 | local->resuming = true; | 1130 | local->resuming = true; |
| 1130 | 1131 | ||
| 1132 | if (local->wowlan) { | ||
| 1133 | local->wowlan = false; | ||
| 1134 | res = drv_resume(local); | ||
| 1135 | if (res < 0) { | ||
| 1136 | local->resuming = false; | ||
| 1137 | return res; | ||
| 1138 | } | ||
| 1139 | if (res == 0) | ||
| 1140 | goto wake_up; | ||
| 1141 | WARN_ON(res > 1); | ||
| 1142 | /* | ||
| 1143 | * res is 1, which means the driver requested | ||
| 1144 | * to go through a regular reset on wakeup. | ||
| 1145 | */ | ||
| 1146 | } | ||
| 1147 | #endif | ||
| 1148 | |||
| 1131 | /* restart hardware */ | 1149 | /* restart hardware */ |
| 1132 | if (local->open_count) { | 1150 | if (local->open_count) { |
| 1133 | /* | 1151 | /* |
| @@ -1258,6 +1276,7 @@ int ieee80211_reconfig(struct ieee80211_local *local) | |||
| 1258 | if (ieee80211_sdata_running(sdata)) | 1276 | if (ieee80211_sdata_running(sdata)) |
| 1259 | ieee80211_enable_keys(sdata); | 1277 | ieee80211_enable_keys(sdata); |
| 1260 | 1278 | ||
| 1279 | wake_up: | ||
| 1261 | ieee80211_wake_queues_by_reason(hw, | 1280 | ieee80211_wake_queues_by_reason(hw, |
| 1262 | IEEE80211_QUEUE_STOP_REASON_SUSPEND); | 1281 | IEEE80211_QUEUE_STOP_REASON_SUSPEND); |
| 1263 | 1282 | ||
