Commit 11bc97eb authored by Eyal Shapira's avatar Eyal Shapira Committed by Luciano Coelho
Browse files

wlcore: configure wowlan regardless of wakeup conditions



wowlan filters should be configured in any case in suspend/resume.
This shouldn't be dependent on whether wakeup conditions are the
same for suspend and resume states. Only the FW command to
reconfigure wakeup conditions should be avoided in such a case.

Reported-by: default avatarArik Nemtsov <arik@wizery.com>
Signed-off-by: default avatarEyal Shapira <eyal@wizery.com>
Signed-off-by: default avatarLuciano Coelho <luca@coelho.fi>
parent 26a309c7
Loading
Loading
Loading
Loading
+13 −13
Original line number Diff line number Diff line
@@ -1603,12 +1603,6 @@ static int wl1271_configure_suspend_sta(struct wl1271 *wl,
	if (!test_bit(WLVIF_FLAG_STA_ASSOCIATED, &wlvif->flags))
		goto out;

	if ((wl->conf.conn.suspend_wake_up_event ==
	     wl->conf.conn.wake_up_event) &&
	    (wl->conf.conn.suspend_listen_interval ==
	     wl->conf.conn.listen_interval))
		goto out;

	ret = wl1271_ps_elp_wakeup(wl);
	if (ret < 0)
		goto out;
@@ -1617,6 +1611,12 @@ static int wl1271_configure_suspend_sta(struct wl1271 *wl,
	if (ret < 0)
		goto out_sleep;

	if ((wl->conf.conn.suspend_wake_up_event ==
	     wl->conf.conn.wake_up_event) &&
	    (wl->conf.conn.suspend_listen_interval ==
	     wl->conf.conn.listen_interval))
		goto out_sleep;

	ret = wl1271_acx_wake_up_conditions(wl, wlvif,
				    wl->conf.conn.suspend_wake_up_event,
				    wl->conf.conn.suspend_listen_interval);
@@ -1672,13 +1672,6 @@ static void wl1271_configure_resume(struct wl1271 *wl,
	if ((!is_ap) && (!is_sta))
		return;

	if (is_sta &&
	    ((wl->conf.conn.suspend_wake_up_event ==
	      wl->conf.conn.wake_up_event) &&
	     (wl->conf.conn.suspend_listen_interval ==
	      wl->conf.conn.listen_interval)))
		return;

	ret = wl1271_ps_elp_wakeup(wl);
	if (ret < 0)
		return;
@@ -1686,6 +1679,12 @@ static void wl1271_configure_resume(struct wl1271 *wl,
	if (is_sta) {
		wl1271_configure_wowlan(wl, NULL);

		if ((wl->conf.conn.suspend_wake_up_event ==
		     wl->conf.conn.wake_up_event) &&
		    (wl->conf.conn.suspend_listen_interval ==
		     wl->conf.conn.listen_interval))
			goto out_sleep;

		ret = wl1271_acx_wake_up_conditions(wl, wlvif,
				    wl->conf.conn.wake_up_event,
				    wl->conf.conn.listen_interval);
@@ -1698,6 +1697,7 @@ static void wl1271_configure_resume(struct wl1271 *wl,
		ret = wl1271_acx_beacon_filter_opt(wl, wlvif, false);
	}

out_sleep:
	wl1271_ps_elp_sleep(wl);
}