Commit 4a859df8 authored by Eliad Peller's avatar Eliad Peller Committed by Luciano Coelho

wl12xx: don't check wow param on suspend/resume

Since mac80211 calls suspend/resume only when wowlan triggers
exist, there is no need to check for triggers existance in the
callbacks as well.
Add a WARN_ON() to verify it.
Signed-off-by: default avatarEliad Peller <eliad@wizery.com>
Signed-off-by: default avatarLuciano Coelho <coelho@ti.com>
parent 0c005048
...@@ -1551,10 +1551,12 @@ static int wl1271_op_suspend(struct ieee80211_hw *hw, ...@@ -1551,10 +1551,12 @@ static int wl1271_op_suspend(struct ieee80211_hw *hw,
struct cfg80211_wowlan *wow) struct cfg80211_wowlan *wow)
{ {
struct wl1271 *wl = hw->priv; struct wl1271 *wl = hw->priv;
wl1271_debug(DEBUG_MAC80211, "mac80211 suspend wow=%d", !!wow);
wl->wow_enabled = !!wow;
if (wl->wow_enabled) {
int ret; int ret;
wl1271_debug(DEBUG_MAC80211, "mac80211 suspend wow=%d", !!wow);
WARN_ON(!wow || !wow->any);
wl->wow_enabled = true;
ret = wl1271_configure_suspend(wl); ret = wl1271_configure_suspend(wl);
if (ret < 0) { if (ret < 0) {
wl1271_warning("couldn't prepare device to suspend"); wl1271_warning("couldn't prepare device to suspend");
...@@ -1580,25 +1582,24 @@ static int wl1271_op_suspend(struct ieee80211_hw *hw, ...@@ -1580,25 +1582,24 @@ static int wl1271_op_suspend(struct ieee80211_hw *hw,
flush_work(&wl->tx_work); flush_work(&wl->tx_work);
flush_delayed_work(&wl->pspoll_work); flush_delayed_work(&wl->pspoll_work);
flush_delayed_work(&wl->elp_work); flush_delayed_work(&wl->elp_work);
}
return 0; return 0;
} }
static int wl1271_op_resume(struct ieee80211_hw *hw) static int wl1271_op_resume(struct ieee80211_hw *hw)
{ {
struct wl1271 *wl = hw->priv; struct wl1271 *wl = hw->priv;
unsigned long flags;
bool run_irq_work = false;
wl1271_debug(DEBUG_MAC80211, "mac80211 resume wow=%d", wl1271_debug(DEBUG_MAC80211, "mac80211 resume wow=%d",
wl->wow_enabled); wl->wow_enabled);
WARN_ON(!wl->wow_enabled);
/* /*
* re-enable irq_work enqueuing, and call irq_work directly if * re-enable irq_work enqueuing, and call irq_work directly if
* there is a pending work. * there is a pending work.
*/ */
if (wl->wow_enabled) {
struct wl1271 *wl = hw->priv;
unsigned long flags;
bool run_irq_work = false;
spin_lock_irqsave(&wl->wl_lock, flags); spin_lock_irqsave(&wl->wl_lock, flags);
clear_bit(WL1271_FLAG_SUSPENDED, &wl->flags); clear_bit(WL1271_FLAG_SUSPENDED, &wl->flags);
if (test_and_clear_bit(WL1271_FLAG_PENDING_WORK, &wl->flags)) if (test_and_clear_bit(WL1271_FLAG_PENDING_WORK, &wl->flags))
...@@ -1611,9 +1612,7 @@ static int wl1271_op_resume(struct ieee80211_hw *hw) ...@@ -1611,9 +1612,7 @@ static int wl1271_op_resume(struct ieee80211_hw *hw)
wl1271_irq(0, wl); wl1271_irq(0, wl);
wl1271_enable_interrupts(wl); wl1271_enable_interrupts(wl);
} }
wl1271_configure_resume(wl); wl1271_configure_resume(wl);
}
return 0; return 0;
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment