wlcore: consider multiple APs when checking active_link_count
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> Signed-off-by: John W. Linville <linville@tuxdriver.com>
This commit is contained in:
parent
bf4e5f1ac0
commit
41ed1a787c
2 changed files with 10 additions and 10 deletions
|
@ -345,12 +345,12 @@ static void wl12xx_irq_ps_regulate_link(struct wl1271 *wl,
|
||||||
* Start high-level PS if the STA is asleep with enough blocks in FW.
|
* 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
|
* Make an exception if this is the only connected link. In this
|
||||||
* case FW-memory congestion is less of a problem.
|
* case FW-memory congestion is less of a problem.
|
||||||
* Note that a single connected STA means 3 active links, since we must
|
* Note that a single connected STA means 2*ap_count + 1 active links,
|
||||||
* account for the global and broadcast AP links. The "fw_ps" check
|
* since we must account for the global and broadcast AP links
|
||||||
* assures us the third link is a STA connected to the AP. Otherwise
|
* for each AP. The "fw_ps" check assures us the other link is a STA
|
||||||
* the FW would not set the PSM bit.
|
* 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)
|
tx_pkts >= WL1271_PS_STA_MAX_PACKETS)
|
||||||
wl12xx_ps_link_start(wl, wlvif, hlid, true);
|
wl12xx_ps_link_start(wl, wlvif, hlid, true);
|
||||||
}
|
}
|
||||||
|
|
|
@ -134,12 +134,12 @@ static void wl1271_tx_regulate_link(struct wl1271 *wl,
|
||||||
* into high-level PS and clean out its TX queues.
|
* into high-level PS and clean out its TX queues.
|
||||||
* Make an exception if this is the only connected link. In this
|
* Make an exception if this is the only connected link. In this
|
||||||
* case FW-memory congestion is less of a problem.
|
* case FW-memory congestion is less of a problem.
|
||||||
* Note that a single connected STA means 3 active links, since we must
|
* Note that a single connected STA means 2*ap_count + 1 active links,
|
||||||
* account for the global and broadcast AP links. The "fw_ps" check
|
* since we must account for the global and broadcast AP links
|
||||||
* assures us the third link is a STA connected to the AP. Otherwise
|
* for each AP. The "fw_ps" check assures us the other link is a STA
|
||||||
* the FW would not set the PSM bit.
|
* 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)
|
tx_pkts >= WL1271_PS_STA_MAX_PACKETS)
|
||||||
wl12xx_ps_link_start(wl, wlvif, hlid, true);
|
wl12xx_ps_link_start(wl, wlvif, hlid, true);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Reference in a new issue