wl12xx: set the ELP entry delay to the FW dyn-ps timeout
authorArik Nemtsov <arik@wizery.com>
Mon, 27 Feb 2012 22:41:28 +0000 (00:41 +0200)
committerLuciano Coelho <coelho@ti.com>
Tue, 28 Feb 2012 11:19:19 +0000 (13:19 +0200)
With PSM handled in FW, the checks in wl1271_elp_work() are always true.
Thus during active traffic we constantly enter and exit ELP (many times
per second). As each ELP exit takes ~10ms, this can have an adverse
effect on throughput and interactivity.
Set the ELP timeout to the dyn-ps timeout. This period is longer and
avoids the above problem. It also makes sense to stay out of ELP while
we are awake on the network, to minimize delays in Tx/Rx. The same thing
was done by the mac80211 dynamic-ps mechanism before the FW DPS changes.

Signed-off-by: Arik Nemtsov <arik@wizery.com>
Signed-off-by: Luciano Coelho <coelho@ti.com>
drivers/net/wireless/wl12xx/ps.c

index 23d67501c50a36f1fd26af309435a7b840799dc1..78f598b4f97b977cbc747a0bd93b0877bc900ff0 100644 (file)
@@ -69,8 +69,6 @@ out:
        mutex_unlock(&wl->mutex);
 }
 
-#define ELP_ENTRY_DELAY  5
-
 /* Routines to toggle sleep mode while in ELP */
 void wl1271_ps_elp_sleep(struct wl1271 *wl)
 {
@@ -90,7 +88,7 @@ void wl1271_ps_elp_sleep(struct wl1271 *wl)
        }
 
        ieee80211_queue_delayed_work(wl->hw, &wl->elp_work,
-                                    msecs_to_jiffies(ELP_ENTRY_DELAY));
+               msecs_to_jiffies(wl->conf.conn.dynamic_ps_timeout));
 }
 
 int wl1271_ps_elp_wakeup(struct wl1271 *wl)