diff options
author | Arik Nemtsov <arik@wizery.com> | 2011-08-14 13:17:33 +0300 |
---|---|---|
committer | Luciano Coelho <coelho@ti.com> | 2011-08-22 12:35:30 +0300 |
commit | 742246f8bc16c3a1a556c68ca2fabca162d14c24 (patch) | |
tree | fe1bca1893ba3eaf87316ec9a74e2ca8068aed3e /drivers/net/wireless/wl12xx/main.c | |
parent | bf54e301671a6ece6c94550294dc7faf14158cd3 (diff) |
wl12xx: schedule TX packets according to FW packet occupancy
When selecting packets for transmission, prefer the ACs that are least
occupied in the FW. When packets for multiple ACs are present in the FW,
it decides which to transmit according to WMM QoS parameters.
With these changes, lower priority ACs should not be starved when higher
priority traffic is present.
Signed-off-by: Arik Nemtsov <arik@wizery.com>
Signed-off-by: Eliad Peller <eliad@wizery.com>
Signed-off-by: Luciano Coelho <coelho@ti.com>
Diffstat (limited to 'drivers/net/wireless/wl12xx/main.c')
-rw-r--r-- | drivers/net/wireless/wl12xx/main.c | 7 |
1 files changed, 4 insertions, 3 deletions
diff --git a/drivers/net/wireless/wl12xx/main.c b/drivers/net/wireless/wl12xx/main.c index 09cecb336d5..027b6742a15 100644 --- a/drivers/net/wireless/wl12xx/main.c +++ b/drivers/net/wireless/wl12xx/main.c @@ -827,7 +827,7 @@ static void wl12xx_fw_status(struct wl1271 *wl, for (i = 0; i < NUM_TX_QUEUES; i++) { /* prevent wrap-around in freed-packets counter */ - wl->tx_allocated_pkts -= + wl->tx_allocated_pkts[i] -= (status->tx_released_pkts[i] - wl->tx_pkts_freed[i]) & 0xff; @@ -2060,9 +2060,10 @@ deinit: wl->tx_blocks_freed = 0; - wl->tx_allocated_pkts = 0; - for (i = 0; i < NUM_TX_QUEUES; i++) + for (i = 0; i < NUM_TX_QUEUES; i++) { wl->tx_pkts_freed[i] = 0; + wl->tx_allocated_pkts[i] = 0; + } wl1271_debugfs_reset(wl); |