Commit 5af70c86 authored by Arik Nemtsov's avatar Arik Nemtsov Committed by Luciano Coelho

wl12xx: set the ELP entry delay to the FW dyn-ps timeout

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: default avatarArik Nemtsov <arik@wizery.com>
Signed-off-by: default avatarLuciano Coelho <coelho@ti.com>
parent e8b461c3
...@@ -69,8 +69,6 @@ void wl1271_elp_work(struct work_struct *work) ...@@ -69,8 +69,6 @@ void wl1271_elp_work(struct work_struct *work)
mutex_unlock(&wl->mutex); mutex_unlock(&wl->mutex);
} }
#define ELP_ENTRY_DELAY 5
/* Routines to toggle sleep mode while in ELP */ /* Routines to toggle sleep mode while in ELP */
void wl1271_ps_elp_sleep(struct wl1271 *wl) void wl1271_ps_elp_sleep(struct wl1271 *wl)
{ {
...@@ -90,7 +88,7 @@ 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, 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) int wl1271_ps_elp_wakeup(struct wl1271 *wl)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment