struct ieee80211_sched_data
 {
-       unsigned long qdisc_pool;
+       unsigned long qdisc_pool[BITS_TO_LONGS(TC_80211_MAX_QUEUES)];
        struct tcf_proto *filter_list;
        struct Qdisc *queues[TC_80211_MAX_QUEUES];
        struct sk_buff_head requeued[TC_80211_MAX_QUEUES];
                if (sta) {
                        int ampdu_queue = sta->tid_to_tx_q[tid];
                        if ((ampdu_queue < local->hw.queues) &&
-                           test_bit(ampdu_queue, &q->qdisc_pool)) {
+                           test_bit(ampdu_queue, q->qdisc_pool)) {
                                queue = ampdu_queue;
                                pkt_data->flags |= IEEE80211_TXPD_AMPDU;
                        } else {
                if (sta) {
                        int ampdu_queue = sta->tid_to_tx_q[tid];
                        if ((ampdu_queue < local->hw.queues) &&
-                               test_bit(ampdu_queue, &q->qdisc_pool)) {
+                               test_bit(ampdu_queue, q->qdisc_pool)) {
                                queue = ampdu_queue;
                                pkt_data->flags |= IEEE80211_TXPD_AMPDU;
                        } else {
                                &local->state[queue])) ||
                    (test_bit(IEEE80211_LINK_STATE_PENDING,
                                &local->state[queue])) ||
-                        (!test_bit(queue, &q->qdisc_pool)))
+                        (!test_bit(queue, q->qdisc_pool)))
                        continue;
 
                /* there is space - try and get a frame */
 
        /* reserve all legacy QoS queues */
        for (i = 0; i < min(IEEE80211_TX_QUEUE_DATA4, queues); i++)
-               set_bit(i, &q->qdisc_pool);
+               set_bit(i, q->qdisc_pool);
 
        return err;
 }
 
        /* try to get a Qdisc from the pool */
        for (i = IEEE80211_TX_QUEUE_BEACON; i < local->hw.queues; i++)
-               if (!test_and_set_bit(i, &q->qdisc_pool)) {
+               if (!test_and_set_bit(i, q->qdisc_pool)) {
                        ieee80211_stop_queue(local_to_hw(local), i);
                        sta->tid_to_tx_q[tid] = i;
 
 #ifdef CONFIG_MAC80211_HT_DEBUG
                        if (net_ratelimit())
                                printk(KERN_DEBUG "allocated aggregation queue"
-                                       " %d tid %d addr %s pool=0x%lX\n",
+                                       " %d tid %d addr %s pool=0x%lX",
                                        i, tid, print_mac(mac, sta->addr),
-                                       q->qdisc_pool);
+                                       q->qdisc_pool[0]);
 #endif /* CONFIG_MAC80211_HT_DEBUG */
                        return 0;
                }
        int agg_queue = sta->tid_to_tx_q[tid];
 
        /* return the qdisc to the pool */
-       clear_bit(agg_queue, &q->qdisc_pool);
+       clear_bit(agg_queue, q->qdisc_pool);
        sta->tid_to_tx_q[tid] = local->hw.queues;
 
        if (requeue)