diff options
-rw-r--r-- | include/net/mac80211.h | 5 | ||||
-rw-r--r-- | net/mac80211/util.c | 7 |
2 files changed, 8 insertions, 4 deletions
diff --git a/include/net/mac80211.h b/include/net/mac80211.h index 79bc8709e83b..3037f49e51c8 100644 --- a/include/net/mac80211.h +++ b/include/net/mac80211.h | |||
@@ -2488,7 +2488,10 @@ enum ieee80211_rate_control_changed { | |||
2488 | * | 2488 | * |
2489 | * @restart_complete: Called after a call to ieee80211_restart_hw(), when the | 2489 | * @restart_complete: Called after a call to ieee80211_restart_hw(), when the |
2490 | * reconfiguration has completed. This can help the driver implement the | 2490 | * reconfiguration has completed. This can help the driver implement the |
2491 | * reconfiguration step. This callback may sleep. | 2491 | * reconfiguration step. Also called when reconfiguring because the |
2492 | * driver's resume function returned 1, as this is just like an "inline" | ||
2493 | * hardware restart. This callback may sleep. | ||
2494 | * | ||
2492 | */ | 2495 | */ |
2493 | struct ieee80211_ops { | 2496 | struct ieee80211_ops { |
2494 | void (*tx)(struct ieee80211_hw *hw, | 2497 | void (*tx)(struct ieee80211_hw *hw, |
diff --git a/net/mac80211/util.c b/net/mac80211/util.c index 0ad51e14f3c8..7519018ff71a 100644 --- a/net/mac80211/util.c +++ b/net/mac80211/util.c | |||
@@ -1358,9 +1358,9 @@ int ieee80211_reconfig(struct ieee80211_local *local) | |||
1358 | struct ieee80211_chanctx *ctx; | 1358 | struct ieee80211_chanctx *ctx; |
1359 | struct sta_info *sta; | 1359 | struct sta_info *sta; |
1360 | int res, i; | 1360 | int res, i; |
1361 | #ifdef CONFIG_PM | ||
1362 | bool reconfig_due_to_wowlan = false; | 1361 | bool reconfig_due_to_wowlan = false; |
1363 | 1362 | ||
1363 | #ifdef CONFIG_PM | ||
1364 | if (local->suspended) | 1364 | if (local->suspended) |
1365 | local->resuming = true; | 1365 | local->resuming = true; |
1366 | 1366 | ||
@@ -1656,10 +1656,11 @@ int ieee80211_reconfig(struct ieee80211_local *local) | |||
1656 | * If this is for hw restart things are still running. | 1656 | * If this is for hw restart things are still running. |
1657 | * We may want to change that later, however. | 1657 | * We may want to change that later, however. |
1658 | */ | 1658 | */ |
1659 | if (!local->suspended) { | 1659 | if (!local->suspended || reconfig_due_to_wowlan) |
1660 | drv_restart_complete(local); | 1660 | drv_restart_complete(local); |
1661 | |||
1662 | if (!local->suspended) | ||
1661 | return 0; | 1663 | return 0; |
1662 | } | ||
1663 | 1664 | ||
1664 | #ifdef CONFIG_PM | 1665 | #ifdef CONFIG_PM |
1665 | /* first set suspended false, then resuming */ | 1666 | /* first set suspended false, then resuming */ |