wlcore: improved Tx scheduling algorithm
authorArik Nemtsov <arik@wizery.com>
Tue, 27 Nov 2012 06:45:00 +0000 (08:45 +0200)
committerLuciano Coelho <coelho@ti.com>
Wed, 5 Dec 2012 07:43:33 +0000 (09:43 +0200)
commit0e81047996fdde7fc9e8a1c01d532df1f53586fa
tree5058e4ef6c04c1468de4f6c333ebbb59e702c6e0
parent9ebcb232158c737db21e22b7bfdc4fc6d661ea8c
wlcore: improved Tx scheduling algorithm

Prioritize EDCA by choosing the AC before anything else. Use the
fast/slow link bitmap in FW to improve the scheduling algorithm for
the multi-link scenario.

Set packet thresholds to determine if a given link is high or low
priority according to its speed. A slow link will be given high priority
if the amount of packets queued for it in the FW is lower than the
slow-threshold. Similarly, a fast link will be given high priority if
the number of its packets queued in FW is smaller than the high-threshold.

The improved algorithm:
1. Choose optimal AC according to FW utilization
2. Traversing the VIFs in a round-robin fashion, try to choose a high
   priority link. Links are traversed in a round-robin fashion inside a
   VIF.
3. If no high priority links are found, choose the first non-empty
   (low priority) link found in the round robin.

Signed-off-by: Arik Nemtsov <arik@wizery.com>
Signed-off-by: Luciano Coelho <coelho@ti.com>
drivers/net/wireless/ti/wl12xx/main.c
drivers/net/wireless/ti/wl18xx/main.c
drivers/net/wireless/ti/wlcore/conf.h
drivers/net/wireless/ti/wlcore/main.c
drivers/net/wireless/ti/wlcore/tx.c
drivers/net/wireless/ti/wlcore/wlcore.h