wlcore: don't re-configure wakeup conditions if not needed
authorEyal Shapira <eyal@wizery.com>
Thu, 5 Jul 2012 16:05:17 +0000 (19:05 +0300)
committerLuciano Coelho <coelho@ti.com>
Wed, 18 Jul 2012 12:08:21 +0000 (15:08 +0300)
suspend and resume callbacks configure wakeup conditions to the FW
which may be different between suspend and resume.
This feature is currently not utilized as both in suspend and resume
FW wakeup every 1 DTIM. Avoid waking up the chip and doing the FW command
unless there's an actual difference in the wakeup conditions.

Signed-off-by: Eyal Shapira <eyal@wizery.com>
Signed-off-by: Luciano Coelho <coelho@ti.com>
drivers/net/wireless/ti/wlcore/main.c

index 9f04b64dfa335d3db2224e9ceddd96f994d1b359..d486eeaf722b0893ee6f79f6e2e035cf823aff73 100644 (file)
@@ -1585,6 +1585,12 @@ 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;
@@ -1648,6 +1654,13 @@ 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;