diff options
Diffstat (limited to 'package/kernel/mac80211/patches/914-wlcore-consider-multiple-APs-when-checking-active_link_count.patch')
-rw-r--r-- | package/kernel/mac80211/patches/914-wlcore-consider-multiple-APs-when-checking-active_link_count.patch | 51 |
1 files changed, 51 insertions, 0 deletions
diff --git a/package/kernel/mac80211/patches/914-wlcore-consider-multiple-APs-when-checking-active_link_count.patch b/package/kernel/mac80211/patches/914-wlcore-consider-multiple-APs-when-checking-active_link_count.patch new file mode 100644 index 0000000000..9e9eba7417 --- /dev/null +++ b/package/kernel/mac80211/patches/914-wlcore-consider-multiple-APs-when-checking-active_link_count.patch @@ -0,0 +1,51 @@ +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); + } |