diff options
-rw-r--r-- | net/mac80211/wme.c | 18 |
1 files changed, 9 insertions, 9 deletions
diff --git a/net/mac80211/wme.c b/net/mac80211/wme.c index 425aa8588ea0..8cc036decc82 100644 --- a/net/mac80211/wme.c +++ b/net/mac80211/wme.c | |||
@@ -25,7 +25,7 @@ const int ieee802_1d_to_ac[8] = { 2, 3, 3, 2, 1, 1, 0, 0 }; | |||
25 | 25 | ||
26 | struct ieee80211_sched_data | 26 | struct ieee80211_sched_data |
27 | { | 27 | { |
28 | unsigned long qdisc_pool; | 28 | unsigned long qdisc_pool[BITS_TO_LONGS(TC_80211_MAX_QUEUES)]; |
29 | struct tcf_proto *filter_list; | 29 | struct tcf_proto *filter_list; |
30 | struct Qdisc *queues[TC_80211_MAX_QUEUES]; | 30 | struct Qdisc *queues[TC_80211_MAX_QUEUES]; |
31 | struct sk_buff_head requeued[TC_80211_MAX_QUEUES]; | 31 | struct sk_buff_head requeued[TC_80211_MAX_QUEUES]; |
@@ -158,7 +158,7 @@ static int wme_qdiscop_enqueue(struct sk_buff *skb, struct Qdisc* qd) | |||
158 | if (sta) { | 158 | if (sta) { |
159 | int ampdu_queue = sta->tid_to_tx_q[tid]; | 159 | int ampdu_queue = sta->tid_to_tx_q[tid]; |
160 | if ((ampdu_queue < local->hw.queues) && | 160 | if ((ampdu_queue < local->hw.queues) && |
161 | test_bit(ampdu_queue, &q->qdisc_pool)) { | 161 | test_bit(ampdu_queue, q->qdisc_pool)) { |
162 | queue = ampdu_queue; | 162 | queue = ampdu_queue; |
163 | pkt_data->flags |= IEEE80211_TXPD_AMPDU; | 163 | pkt_data->flags |= IEEE80211_TXPD_AMPDU; |
164 | } else { | 164 | } else { |
@@ -191,7 +191,7 @@ static int wme_qdiscop_enqueue(struct sk_buff *skb, struct Qdisc* qd) | |||
191 | if (sta) { | 191 | if (sta) { |
192 | int ampdu_queue = sta->tid_to_tx_q[tid]; | 192 | int ampdu_queue = sta->tid_to_tx_q[tid]; |
193 | if ((ampdu_queue < local->hw.queues) && | 193 | if ((ampdu_queue < local->hw.queues) && |
194 | test_bit(ampdu_queue, &q->qdisc_pool)) { | 194 | test_bit(ampdu_queue, q->qdisc_pool)) { |
195 | queue = ampdu_queue; | 195 | queue = ampdu_queue; |
196 | pkt_data->flags |= IEEE80211_TXPD_AMPDU; | 196 | pkt_data->flags |= IEEE80211_TXPD_AMPDU; |
197 | } else { | 197 | } else { |
@@ -272,7 +272,7 @@ static struct sk_buff *wme_qdiscop_dequeue(struct Qdisc* qd) | |||
272 | &local->state[queue])) || | 272 | &local->state[queue])) || |
273 | (test_bit(IEEE80211_LINK_STATE_PENDING, | 273 | (test_bit(IEEE80211_LINK_STATE_PENDING, |
274 | &local->state[queue])) || | 274 | &local->state[queue])) || |
275 | (!test_bit(queue, &q->qdisc_pool))) | 275 | (!test_bit(queue, q->qdisc_pool))) |
276 | continue; | 276 | continue; |
277 | 277 | ||
278 | /* there is space - try and get a frame */ | 278 | /* there is space - try and get a frame */ |
@@ -396,7 +396,7 @@ static int wme_qdiscop_init(struct Qdisc *qd, struct nlattr *opt) | |||
396 | 396 | ||
397 | /* reserve all legacy QoS queues */ | 397 | /* reserve all legacy QoS queues */ |
398 | for (i = 0; i < min(IEEE80211_TX_QUEUE_DATA4, queues); i++) | 398 | for (i = 0; i < min(IEEE80211_TX_QUEUE_DATA4, queues); i++) |
399 | set_bit(i, &q->qdisc_pool); | 399 | set_bit(i, q->qdisc_pool); |
400 | 400 | ||
401 | return err; | 401 | return err; |
402 | } | 402 | } |
@@ -657,7 +657,7 @@ int ieee80211_ht_agg_queue_add(struct ieee80211_local *local, | |||
657 | 657 | ||
658 | /* try to get a Qdisc from the pool */ | 658 | /* try to get a Qdisc from the pool */ |
659 | for (i = IEEE80211_TX_QUEUE_BEACON; i < local->hw.queues; i++) | 659 | for (i = IEEE80211_TX_QUEUE_BEACON; i < local->hw.queues; i++) |
660 | if (!test_and_set_bit(i, &q->qdisc_pool)) { | 660 | if (!test_and_set_bit(i, q->qdisc_pool)) { |
661 | ieee80211_stop_queue(local_to_hw(local), i); | 661 | ieee80211_stop_queue(local_to_hw(local), i); |
662 | sta->tid_to_tx_q[tid] = i; | 662 | sta->tid_to_tx_q[tid] = i; |
663 | 663 | ||
@@ -668,9 +668,9 @@ int ieee80211_ht_agg_queue_add(struct ieee80211_local *local, | |||
668 | #ifdef CONFIG_MAC80211_HT_DEBUG | 668 | #ifdef CONFIG_MAC80211_HT_DEBUG |
669 | if (net_ratelimit()) | 669 | if (net_ratelimit()) |
670 | printk(KERN_DEBUG "allocated aggregation queue" | 670 | printk(KERN_DEBUG "allocated aggregation queue" |
671 | " %d tid %d addr %s pool=0x%lX\n", | 671 | " %d tid %d addr %s pool=0x%lX", |
672 | i, tid, print_mac(mac, sta->addr), | 672 | i, tid, print_mac(mac, sta->addr), |
673 | q->qdisc_pool); | 673 | q->qdisc_pool[0]); |
674 | #endif /* CONFIG_MAC80211_HT_DEBUG */ | 674 | #endif /* CONFIG_MAC80211_HT_DEBUG */ |
675 | return 0; | 675 | return 0; |
676 | } | 676 | } |
@@ -690,7 +690,7 @@ void ieee80211_ht_agg_queue_remove(struct ieee80211_local *local, | |||
690 | int agg_queue = sta->tid_to_tx_q[tid]; | 690 | int agg_queue = sta->tid_to_tx_q[tid]; |
691 | 691 | ||
692 | /* return the qdisc to the pool */ | 692 | /* return the qdisc to the pool */ |
693 | clear_bit(agg_queue, &q->qdisc_pool); | 693 | clear_bit(agg_queue, q->qdisc_pool); |
694 | sta->tid_to_tx_q[tid] = local->hw.queues; | 694 | sta->tid_to_tx_q[tid] = local->hw.queues; |
695 | 695 | ||
696 | if (requeue) | 696 | if (requeue) |