path: root/drivers/net/wireless/ti/wl18xx
diff options
authorArik Nemtsov <arik@wizery.com>2012-11-28 11:42:41 +0200
committerLuciano Coelho <coelho@ti.com>2012-12-11 12:25:36 +0200
commit98323895c021ff010685ba77773af876eff503a5 (patch)
tree3eb6d83880294119cbdf07b7d7eb9261d7ed505b /drivers/net/wireless/ti/wl18xx
parentf1626fd8983a5bc68ce2879865cce297eb96c0b4 (diff)
wl18xx: limit Tx for the AP single-STA-in-PSM case
Treat a single connected STA in PSM as a slow link and regulate Tx speed according to slow link priority/stop thresholds. This allows us to avoid flooding the FW, while delivering decent throughput to a peer in forced-PSM. [Small simplification of the if statements -- Luca] Signed-off-by: Arik Nemtsov <arik@wizery.com> Signed-off-by: Luciano Coelho <coelho@ti.com>
Diffstat (limited to 'drivers/net/wireless/ti/wl18xx')
1 files changed, 4 insertions, 2 deletions
diff --git a/drivers/net/wireless/ti/wl18xx/main.c b/drivers/net/wireless/ti/wl18xx/main.c
index ed34a7f3391..3f6762c9b9a 100644
--- a/drivers/net/wireless/ti/wl18xx/main.c
+++ b/drivers/net/wireless/ti/wl18xx/main.c
@@ -1410,7 +1410,8 @@ static bool wl18xx_lnk_high_prio(struct wl1271 *wl, u8 hlid,
return false;
/* the priority thresholds are taken from FW */
- if (test_bit(hlid, (unsigned long *)&wl->fw_fast_lnk_map))
+ if (test_bit(hlid, (unsigned long *)&wl->fw_fast_lnk_map) &&
+ !test_bit(hlid, (unsigned long *)&wl->ap_fw_ps_map))
thold = status_priv->tx_fast_link_prio_threshold;
thold = status_priv->tx_slow_link_prio_threshold;
@@ -1428,7 +1429,8 @@ static bool wl18xx_lnk_low_prio(struct wl1271 *wl, u8 hlid,
if (test_bit(hlid, (unsigned long *)&suspend_bitmap))
thold = status_priv->tx_suspend_threshold;
- else if (test_bit(hlid, (unsigned long *)&wl->fw_fast_lnk_map))
+ else if (test_bit(hlid, (unsigned long *)&wl->fw_fast_lnk_map) &&
+ !test_bit(hlid, (unsigned long *)&wl->ap_fw_ps_map))
thold = status_priv->tx_fast_stop_threshold;
thold = status_priv->tx_slow_stop_threshold;