]> Pileus Git - ~andy/linux/blobdiff - drivers/net/wireless/rt2x00/rt2x00queue.c
rt2x00: Fix queue related oops in case of deselected mac80211 multi-queue feature.
[~andy/linux] / drivers / net / wireless / rt2x00 / rt2x00queue.c
index 659e9f44c40c76e1bac4a4c05fab2c342ff6d161..95f8dd3462f6f9c191760c8ca721da767b7e8913 100644 (file)
 #include "rt2x00lib.h"
 
 struct data_queue *rt2x00queue_get_queue(struct rt2x00_dev *rt2x00dev,
-                                        const unsigned int queue)
+                                        const enum data_queue_qid queue)
 {
        int atim = test_bit(DRIVER_REQUIRE_ATIM_QUEUE, &rt2x00dev->flags);
 
-       if (queue < rt2x00dev->hw->queues && rt2x00dev->tx)
+       if (queue < rt2x00dev->ops->tx_queues && rt2x00dev->tx)
                return &rt2x00dev->tx[queue];
 
        if (!rt2x00dev->bcn)
                return NULL;
 
-       if (queue == RT2X00_BCN_QUEUE_BEACON)
+       if (queue == QID_BEACON)
                return &rt2x00dev->bcn[0];
-       else if (queue == RT2X00_BCN_QUEUE_ATIM && atim)
+       else if (queue == QID_ATIM && atim)
                return &rt2x00dev->bcn[1];
 
        return NULL;
@@ -255,11 +255,11 @@ int rt2x00queue_allocate(struct rt2x00_dev *rt2x00dev)
        /*
         * We need the following queues:
         * RX: 1
-        * TX: hw->queues
+        * TX: ops->tx_queues
         * Beacon: 1
         * Atim: 1 (if required)
         */
-       rt2x00dev->data_queues = 2 + rt2x00dev->hw->queues + req_atim;
+       rt2x00dev->data_queues = 2 + rt2x00dev->ops->tx_queues + req_atim;
 
        queue = kzalloc(rt2x00dev->data_queues * sizeof(*queue), GFP_KERNEL);
        if (!queue) {
@@ -272,7 +272,7 @@ int rt2x00queue_allocate(struct rt2x00_dev *rt2x00dev)
         */
        rt2x00dev->rx = queue;
        rt2x00dev->tx = &queue[1];
-       rt2x00dev->bcn = &queue[1 + rt2x00dev->hw->queues];
+       rt2x00dev->bcn = &queue[1 + rt2x00dev->ops->tx_queues];
 
        /*
         * Initialize queue parameters.