summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJohannes Berg <johannes.berg@intel.com>2012-03-28 11:04:26 +0200
committerJohn W. Linville <linville@tuxdriver.com>2012-04-10 14:54:10 -0400
commitded81f6ba934e792e441f20178683608cbc0b5cb (patch)
tree61f464547c5eb15cbb8496a92220a2ceae40cda9
parent54bcbc695e2ca88e1c8f05a93d38a04ac6b1aa0e (diff)
downloadop-kernel-dev-ded81f6ba934e792e441f20178683608cbc0b5cb.zip
op-kernel-dev-ded81f6ba934e792e441f20178683608cbc0b5cb.tar.gz
mac80211: decouple # of netdev queues from HW queues
When we get more hardware queues, we'll still want to only have netdev queues per AC, so set it up in that way. If the hardware doesn't support QoS (by not supporting at least 4 queues) the netdevs get a single queue only (this is no change in behavior as there are no drivers with 2 or 3 queues today.) Signed-off-by: Johannes Berg <johannes.berg@intel.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
-rw-r--r--net/mac80211/iface.c6
-rw-r--r--net/mac80211/wme.c2
2 files changed, 6 insertions, 2 deletions
diff --git a/net/mac80211/iface.c b/net/mac80211/iface.c
index 401c01f..efa9409 100644
--- a/net/mac80211/iface.c
+++ b/net/mac80211/iface.c
@@ -1133,11 +1133,15 @@ int ieee80211_if_add(struct ieee80211_local *local, const char *name,
struct net_device *ndev;
struct ieee80211_sub_if_data *sdata = NULL;
int ret, i;
+ int txqs = 1;
ASSERT_RTNL();
+ if (local->hw.queues >= IEEE80211_NUM_ACS)
+ txqs = IEEE80211_NUM_ACS;
+
ndev = alloc_netdev_mqs(sizeof(*sdata) + local->hw.vif_data_size,
- name, ieee80211_if_setup, local->hw.queues, 1);
+ name, ieee80211_if_setup, txqs, 1);
if (!ndev)
return -ENOMEM;
dev_net_set(ndev, wiphy_net(local->hw.wiphy));
diff --git a/net/mac80211/wme.c b/net/mac80211/wme.c
index b3d4ee0..16b4839 100644
--- a/net/mac80211/wme.c
+++ b/net/mac80211/wme.c
@@ -108,7 +108,7 @@ u16 ieee80211_select_queue(struct ieee80211_sub_if_data *sdata,
if (local->hw.queues < 4 || skb->len < 6) {
skb->priority = 0; /* required for correct WPA/11i MIC */
- return min_t(u16, local->hw.queues - 1, IEEE80211_AC_BE);
+ return 0;
}
rcu_read_lock();
OpenPOWER on IntegriCloud