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: Arik Nemtsov <arik@wizery.com> Signed-off-by: Eyal Shapira <eyal@wizery.com> Signed-off-by: Luciano Coelho <luca@coelho.fi>
This commit is contained in:
parent
26a309c758
commit
11bc97eb90
1 changed files with 13 additions and 13 deletions
|
@ -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);
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue