wlcore: use separate HW queue for each AC in each vif
authorArik Nemtsov <arik@wizery.com>
Thu, 29 Nov 2012 22:48:03 +0000 (00:48 +0200)
committerLuciano Coelho <coelho@ti.com>
Tue, 11 Dec 2012 10:37:13 +0000 (12:37 +0200)
commit1c33db782d1d0d9be83feacbb065cd4956f485e7
treea3cd2e7ce3d0b422bd6451166d79f2d92abc9bfe
parent9a1009684df5295883ba2eb85066a23ed3c3f6a6
wlcore: use separate HW queue for each AC in each vif

Start using the new hw_queue mechanism in mac80211 and give each AC in
each vif its own hw_queue number. This allows us to stop an AC in a vif
independently from other vifs.

Change the Tx watermark handling functions to count packets per AC in
vif. From now on fast links should not be able to hurt the throughput
of slow links on the same AC but on different vifs.

Change internal queue mgmt functions to operate per vif, to support the
new Tx watermark granularity. Make the global versions of the queue
stop/start functions to use the global mac80211 API for queue mgmt. This
helps in situations where the driver currently doesn't know all the vifs
that reside in mac80211. Recovery is a good example for such a case.

[Moved hw_base_queue addition into the wlcore_tx_get_mac80211_queue()
function; changed WARN_ONs to WARN_ON_ONCEs; simplified for loops;
fixed new checkpatch warnings. -- Luca]

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