]> git.proxmox.com Git - mirror_ubuntu-hirsute-kernel.git/commit - net/mac80211/iface.c
mac80211: add improved HW queue control
authorJohannes Berg <johannes.berg@intel.com>
Tue, 3 Apr 2012 14:28:50 +0000 (16:28 +0200)
committerJohn W. Linville <linville@tuxdriver.com>
Wed, 11 Apr 2012 20:23:50 +0000 (16:23 -0400)
commit3a25a8c8b75b430c4f4022918e26fa51d557ecde
treed4863b7f17c2ea44fb523e29951b6bd202ddb1ad
parent4b6f1dd6a6faf4ed8d209bbd548e78b15e55aee8
mac80211: add improved HW queue control

mac80211 currently only supports one hardware queue
per AC. This is already problematic for off-channel
uses since if we go off channel while the BE queue
is full and then try to send an off-channel frame
the frame will never go out. This will become worse
when we support multi-channel since then a queue on
one channel might be full, but we have to stop the
software queue for all channels. That is obviously
not desirable.

To address this problem allow drivers to register
more hardware queues, and allow them to map them to
virtual interfaces. When they stop a hardware queue
the corresponding AC software queues on the correct
interfaces will be stopped as well. Additionally,
there's an off-channel queue to solve that problem
and a per-interface after-DTIM beacon queue. This
allows drivers to manage software queues closer to
how the hardware works.

Currently, there's a limit of 16 hardware queues.
This may or may not be sufficient, we can adjust it
as needed.

Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
include/net/mac80211.h
net/mac80211/agg-tx.c
net/mac80211/cfg.c
net/mac80211/ieee80211_i.h
net/mac80211/iface.c
net/mac80211/main.c
net/mac80211/tx.c
net/mac80211/util.c