You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
52 lines
2.5 KiB
Diff
52 lines
2.5 KiB
Diff
Each AP has its own global and broadcast links, so when
|
|
checking for active sta count (according to the active_link_count)
|
|
we must take them all into account.
|
|
|
|
Signed-off-by: Eliad Peller <eliad@wizery.com>
|
|
|
|
---
|
|
drivers/net/wireless/ti/wlcore/main.c | 10 +++++-----
|
|
drivers/net/wireless/ti/wlcore/tx.c | 10 +++++-----
|
|
2 files changed, 10 insertions(+), 10 deletions(-)
|
|
|
|
--- a/drivers/net/wireless/ti/wlcore/main.c
|
|
+++ b/drivers/net/wireless/ti/wlcore/main.c
|
|
@@ -345,12 +345,12 @@ static void wl12xx_irq_ps_regulate_link(
|
|
* Start high-level PS if the STA is asleep with enough blocks in FW.
|
|
* Make an exception if this is the only connected link. In this
|
|
* case FW-memory congestion is less of a problem.
|
|
- * Note that a single connected STA means 3 active links, since we must
|
|
- * account for the global and broadcast AP links. The "fw_ps" check
|
|
- * assures us the third link is a STA connected to the AP. Otherwise
|
|
- * the FW would not set the PSM bit.
|
|
+ * Note that a single connected STA means 2*ap_count + 1 active links,
|
|
+ * since we must account for the global and broadcast AP links
|
|
+ * for each AP. The "fw_ps" check assures us the other link is a STA
|
|
+ * connected to the AP. Otherwise the FW would not set the PSM bit.
|
|
*/
|
|
- else if (wl->active_link_count > 3 && fw_ps &&
|
|
+ else if (wl->active_link_count > (wl->ap_count*2 + 1) && fw_ps &&
|
|
tx_pkts >= WL1271_PS_STA_MAX_PACKETS)
|
|
wl12xx_ps_link_start(wl, wlvif, hlid, true);
|
|
}
|
|
--- a/drivers/net/wireless/ti/wlcore/tx.c
|
|
+++ b/drivers/net/wireless/ti/wlcore/tx.c
|
|
@@ -134,12 +134,12 @@ static void wl1271_tx_regulate_link(stru
|
|
* into high-level PS and clean out its TX queues.
|
|
* Make an exception if this is the only connected link. In this
|
|
* case FW-memory congestion is less of a problem.
|
|
- * Note that a single connected STA means 3 active links, since we must
|
|
- * account for the global and broadcast AP links. The "fw_ps" check
|
|
- * assures us the third link is a STA connected to the AP. Otherwise
|
|
- * the FW would not set the PSM bit.
|
|
+ * Note that a single connected STA means 2*ap_count + 1 active links,
|
|
+ * since we must account for the global and broadcast AP links
|
|
+ * for each AP. The "fw_ps" check assures us the other link is a STA
|
|
+ * connected to the AP. Otherwise the FW would not set the PSM bit.
|
|
*/
|
|
- if (wl->active_link_count > 3 && fw_ps &&
|
|
+ if (wl->active_link_count > (wl->ap_count*2 + 1) && fw_ps &&
|
|
tx_pkts >= WL1271_PS_STA_MAX_PACKETS)
|
|
wl12xx_ps_link_start(wl, wlvif, hlid, true);
|
|
}
|