Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

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

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
Loading
Loading
Loading
Loading
+43 −44
Original line number Diff line number Diff line
@@ -1551,10 +1551,12 @@ static int wl1271_op_suspend(struct ieee80211_hw *hw,
			    struct cfg80211_wowlan *wow)
{
	struct wl1271 *wl = hw->priv;
	wl1271_debug(DEBUG_MAC80211, "mac80211 suspend wow=%d", !!wow);
	wl->wow_enabled = !!wow;
	if (wl->wow_enabled) {
	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);
	if (ret < 0) {
		wl1271_warning("couldn't prepare device to suspend");
@@ -1580,25 +1582,24 @@ static int wl1271_op_suspend(struct ieee80211_hw *hw,
	flush_work(&wl->tx_work);
	flush_delayed_work(&wl->pspoll_work);
	flush_delayed_work(&wl->elp_work);
	}

	return 0;
}

static int wl1271_op_resume(struct ieee80211_hw *hw)
{
	struct wl1271 *wl = hw->priv;
	unsigned long flags;
	bool run_irq_work = false;

	wl1271_debug(DEBUG_MAC80211, "mac80211 resume wow=%d",
		     wl->wow_enabled);
	WARN_ON(!wl->wow_enabled);

	/*
	 * re-enable irq_work enqueuing, and call irq_work directly if
	 * 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);
	clear_bit(WL1271_FLAG_SUSPENDED, &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)
		wl1271_irq(0, wl);
		wl1271_enable_interrupts(wl);
	}

	wl1271_configure_resume(wl);
	}

	return 0;
}