aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorEyal Shapira <eyal@wizery.com>2012-08-02 00:15:19 -0400
committerLuciano Coelho <luca@coelho.fi>2012-09-27 05:13:51 -0400
commit11bc97eb902ddac822f32dc5a890d7b6274b754d (patch)
tree59ee86a6843b01e09c42a97d69ad7db9fd2014dc
parent26a309c7586140afd40628a7031993afbaae0f07 (diff)
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>
-rw-r--r--drivers/net/wireless/ti/wlcore/main.c26
1 files changed, 13 insertions, 13 deletions
diff --git a/drivers/net/wireless/ti/wlcore/main.c b/drivers/net/wireless/ti/wlcore/main.c
index 7fe19defa97f..a797ce7201b2 100644
--- a/drivers/net/wireless/ti/wlcore/main.c
+++ b/drivers/net/wireless/ti/wlcore/main.c
@@ -1603,12 +1603,6 @@ static int wl1271_configure_suspend_sta(struct wl1271 *wl,
1603 if (!test_bit(WLVIF_FLAG_STA_ASSOCIATED, &wlvif->flags)) 1603 if (!test_bit(WLVIF_FLAG_STA_ASSOCIATED, &wlvif->flags))
1604 goto out; 1604 goto out;
1605 1605
1606 if ((wl->conf.conn.suspend_wake_up_event ==
1607 wl->conf.conn.wake_up_event) &&
1608 (wl->conf.conn.suspend_listen_interval ==
1609 wl->conf.conn.listen_interval))
1610 goto out;
1611
1612 ret = wl1271_ps_elp_wakeup(wl); 1606 ret = wl1271_ps_elp_wakeup(wl);
1613 if (ret < 0) 1607 if (ret < 0)
1614 goto out; 1608 goto out;
@@ -1617,6 +1611,12 @@ static int wl1271_configure_suspend_sta(struct wl1271 *wl,
1617 if (ret < 0) 1611 if (ret < 0)
1618 goto out_sleep; 1612 goto out_sleep;
1619 1613
1614 if ((wl->conf.conn.suspend_wake_up_event ==
1615 wl->conf.conn.wake_up_event) &&
1616 (wl->conf.conn.suspend_listen_interval ==
1617 wl->conf.conn.listen_interval))
1618 goto out_sleep;
1619
1620 ret = wl1271_acx_wake_up_conditions(wl, wlvif, 1620 ret = wl1271_acx_wake_up_conditions(wl, wlvif,
1621 wl->conf.conn.suspend_wake_up_event, 1621 wl->conf.conn.suspend_wake_up_event,
1622 wl->conf.conn.suspend_listen_interval); 1622 wl->conf.conn.suspend_listen_interval);
@@ -1672,13 +1672,6 @@ static void wl1271_configure_resume(struct wl1271 *wl,
1672 if ((!is_ap) && (!is_sta)) 1672 if ((!is_ap) && (!is_sta))
1673 return; 1673 return;
1674 1674
1675 if (is_sta &&
1676 ((wl->conf.conn.suspend_wake_up_event ==
1677 wl->conf.conn.wake_up_event) &&
1678 (wl->conf.conn.suspend_listen_interval ==
1679 wl->conf.conn.listen_interval)))
1680 return;
1681
1682 ret = wl1271_ps_elp_wakeup(wl); 1675 ret = wl1271_ps_elp_wakeup(wl);
1683 if (ret < 0) 1676 if (ret < 0)
1684 return; 1677 return;
@@ -1686,6 +1679,12 @@ static void wl1271_configure_resume(struct wl1271 *wl,
1686 if (is_sta) { 1679 if (is_sta) {
1687 wl1271_configure_wowlan(wl, NULL); 1680 wl1271_configure_wowlan(wl, NULL);
1688 1681
1682 if ((wl->conf.conn.suspend_wake_up_event ==
1683 wl->conf.conn.wake_up_event) &&
1684 (wl->conf.conn.suspend_listen_interval ==
1685 wl->conf.conn.listen_interval))
1686 goto out_sleep;
1687
1689 ret = wl1271_acx_wake_up_conditions(wl, wlvif, 1688 ret = wl1271_acx_wake_up_conditions(wl, wlvif,
1690 wl->conf.conn.wake_up_event, 1689 wl->conf.conn.wake_up_event,
1691 wl->conf.conn.listen_interval); 1690 wl->conf.conn.listen_interval);
@@ -1698,6 +1697,7 @@ static void wl1271_configure_resume(struct wl1271 *wl,
1698 ret = wl1271_acx_beacon_filter_opt(wl, wlvif, false); 1697 ret = wl1271_acx_beacon_filter_opt(wl, wlvif, false);
1699 } 1698 }
1700 1699
1700out_sleep:
1701 wl1271_ps_elp_sleep(wl); 1701 wl1271_ps_elp_sleep(wl);
1702} 1702}
1703 1703