mt76: sdio: introduce mt76s_alloc_tx_queue
authorLorenzo Bianconi <lorenzo@kernel.org>
Wed, 11 Nov 2020 13:47:24 +0000 (14:47 +0100)
committerFelix Fietkau <nbd@nbd.name>
Fri, 4 Dec 2020 13:31:14 +0000 (14:31 +0100)
This is a preliminary patch to move hw data queues in mt76_phy for
mt7915 dbdc support

Signed-off-by: Lorenzo Bianconi <lorenzo@kernel.org>
Signed-off-by: Felix Fietkau <nbd@nbd.name>
drivers/net/wireless/mediatek/mt76/sdio.c

index b4def26..4c6a65c 100644 (file)
@@ -36,28 +36,46 @@ mt76s_alloc_rx_queue(struct mt76_dev *dev, enum mt76_rxq_id qid)
        return 0;
 }
 
+static struct mt76_queue *mt76s_alloc_tx_queue(struct mt76_dev *dev)
+{
+       struct mt76_queue *q;
+
+       q = devm_kzalloc(dev->dev, sizeof(*q), GFP_KERNEL);
+       if (!q)
+               return ERR_PTR(-ENOMEM);
+
+       spin_lock_init(&q->lock);
+       q->entry = devm_kcalloc(dev->dev,
+                               MT_NUM_TX_ENTRIES, sizeof(*q->entry),
+                               GFP_KERNEL);
+       if (!q->entry)
+               return ERR_PTR(-ENOMEM);
+
+       q->ndesc = MT_NUM_TX_ENTRIES;
+
+       return q;
+}
+
 static int mt76s_alloc_tx(struct mt76_dev *dev)
 {
        struct mt76_queue *q;
        int i;
 
-       for (i = 0; i < MT_TXQ_MCU_WA; i++) {
-               q = devm_kzalloc(dev->dev, sizeof(*q), GFP_KERNEL);
-               if (!q)
-                       return -ENOMEM;
+       for (i = 0; i <= MT_TXQ_PSD; i++) {
+               q = mt76s_alloc_tx_queue(dev);
+               if (IS_ERR(q))
+                       return PTR_ERR(q);
 
-               spin_lock_init(&q->lock);
-               q->hw_idx = i;
+               q->qid = i;
                dev->q_tx[i] = q;
+       }
 
-               q->entry = devm_kcalloc(dev->dev,
-                                       MT_NUM_TX_ENTRIES, sizeof(*q->entry),
-                                       GFP_KERNEL);
-               if (!q->entry)
-                       return -ENOMEM;
+       q = mt76s_alloc_tx_queue(dev);
+       if (IS_ERR(q))
+               return PTR_ERR(q);
 
-               q->ndesc = MT_NUM_TX_ENTRIES;
-       }
+       q->qid = MT_TXQ_MCU;
+       dev->q_tx[MT_TXQ_MCU] = q;
 
        return 0;
 }