]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
wifi: mt76: Add reset_idx to reset_q mt76_queue_ops signature.
authorLorenzo Bianconi <lorenzo@kernel.org>
Tue, 9 Sep 2025 09:45:09 +0000 (11:45 +0200)
committerFelix Fietkau <nbd@nbd.name>
Mon, 15 Sep 2025 07:47:40 +0000 (09:47 +0200)
Remove __mt76_dma_queue_reset routine and use mt76_dma_queue_reset
directly instead in mt76_queue_ops struct.
This is a preliminary patch to enable WED support for MT7992 Kite
chipset supported by MT7996 driver.

Co-developed-by: Rex Lu <rex.lu@mediatek.com>
Signed-off-by: Rex Lu <rex.lu@mediatek.com>
Co-developed-by: Sujuan Chen <sujuan.chen@mediatek.com>
Signed-off-by: Sujuan Chen <sujuan.chen@mediatek.com>
Co-developed-by: Benjamin Lin <benjamin-jw.lin@mediatek.com>
Signed-off-by: Benjamin Lin <benjamin-jw.lin@mediatek.com>
Signed-off-by: Lorenzo Bianconi <lorenzo@kernel.org>
Link: https://patch.msgid.link/20250909-mt7996-rro-rework-v5-1-7d66f6eb7795@kernel.org
Signed-off-by: Felix Fietkau <nbd@nbd.name>
drivers/net/wireless/mediatek/mt76/dma.c
drivers/net/wireless/mediatek/mt76/dma.h
drivers/net/wireless/mediatek/mt76/mt76.h
drivers/net/wireless/mediatek/mt76/mt7915/dma.c
drivers/net/wireless/mediatek/mt76/mt792x_dma.c
drivers/net/wireless/mediatek/mt76/mt7996/dma.c
drivers/net/wireless/mediatek/mt76/wed.c

index 87f531297f8513b0caee2d034184ddd8fa3b6a21..25c26ff8c8e24352f2bb31c6e185e628a56f609b 100644 (file)
@@ -197,8 +197,8 @@ mt76_dma_sync_idx(struct mt76_dev *dev, struct mt76_queue *q)
        q->tail = q->head;
 }
 
-void __mt76_dma_queue_reset(struct mt76_dev *dev, struct mt76_queue *q,
-                           bool reset_idx)
+void mt76_dma_queue_reset(struct mt76_dev *dev, struct mt76_queue *q,
+                         bool reset_idx)
 {
        if (!q || !q->ndesc)
                return;
@@ -218,11 +218,6 @@ void __mt76_dma_queue_reset(struct mt76_dev *dev, struct mt76_queue *q,
        mt76_dma_sync_idx(dev, q);
 }
 
-void mt76_dma_queue_reset(struct mt76_dev *dev, struct mt76_queue *q)
-{
-       __mt76_dma_queue_reset(dev, q, true);
-}
-
 static int
 mt76_dma_add_rx_buf(struct mt76_dev *dev, struct mt76_queue *q,
                    struct mt76_queue_buf *buf, void *data)
@@ -740,7 +735,7 @@ mt76_dma_alloc_queue(struct mt76_dev *dev, struct mt76_queue *q,
                        return 0;
        }
 
-       mt76_dma_queue_reset(dev, q);
+       mt76_dma_queue_reset(dev, q, true);
 
        return 0;
 }
index e3ddc7a837579c0835a704ab8944099d276c6222..320d2cbbbd4559db146139a50e579b9b57282557 100644 (file)
@@ -81,14 +81,13 @@ void mt76_dma_attach(struct mt76_dev *dev);
 void mt76_dma_cleanup(struct mt76_dev *dev);
 int mt76_dma_rx_fill(struct mt76_dev *dev, struct mt76_queue *q,
                     bool allow_direct);
-void __mt76_dma_queue_reset(struct mt76_dev *dev, struct mt76_queue *q,
-                           bool reset_idx);
-void mt76_dma_queue_reset(struct mt76_dev *dev, struct mt76_queue *q);
+void mt76_dma_queue_reset(struct mt76_dev *dev, struct mt76_queue *q,
+                         bool reset_idx);
 
 static inline void
 mt76_dma_reset_tx_queue(struct mt76_dev *dev, struct mt76_queue *q)
 {
-       dev->queue_ops->reset_q(dev, q);
+       dev->queue_ops->reset_q(dev, q, true);
        if (mtk_wed_device_active(&dev->mmio.wed))
                mt76_wed_dma_setup(dev, q, true);
 }
index 5310b2a34edb3b37824ce00c71e01a735af175e5..c2fe9a9315e289a9e21242c8694db79cbcca9c9c 100644 (file)
@@ -290,7 +290,8 @@ struct mt76_queue_ops {
 
        void (*kick)(struct mt76_dev *dev, struct mt76_queue *q);
 
-       void (*reset_q)(struct mt76_dev *dev, struct mt76_queue *q);
+       void (*reset_q)(struct mt76_dev *dev, struct mt76_queue *q,
+                       bool reset_idx);
 };
 
 enum mt76_phy_type {
index 0c62272fe7d03552c8c260b3971a62fb143895c1..009ef713f437983a0676ed5d4d951a9efcb305e8 100644 (file)
@@ -624,13 +624,13 @@ int mt7915_dma_reset(struct mt7915_dev *dev, bool force)
        }
 
        for (i = 0; i < __MT_MCUQ_MAX; i++)
-               mt76_queue_reset(dev, dev->mt76.q_mcu[i]);
+               mt76_queue_reset(dev, dev->mt76.q_mcu[i], true);
 
        mt76_for_each_q_rx(&dev->mt76, i) {
                if (mt76_queue_is_wed_tx_free(&dev->mt76.q_rx[i]))
                        continue;
 
-               mt76_queue_reset(dev, &dev->mt76.q_rx[i]);
+               mt76_queue_reset(dev, &dev->mt76.q_rx[i], true);
        }
 
        mt76_tx_status_check(&dev->mt76, true);
index 6f9db782338e6e405de49dd07fefae1a1de09f93..69217ce911307b3408a56d0a210b39ac3bc75e8c 100644 (file)
@@ -181,13 +181,13 @@ mt792x_dma_reset(struct mt792x_dev *dev, bool force)
 
        /* reset hw queues */
        for (i = 0; i < __MT_TXQ_MAX; i++)
-               mt76_queue_reset(dev, dev->mphy.q_tx[i]);
+               mt76_queue_reset(dev, dev->mphy.q_tx[i], true);
 
        for (i = 0; i < __MT_MCUQ_MAX; i++)
-               mt76_queue_reset(dev, dev->mt76.q_mcu[i]);
+               mt76_queue_reset(dev, dev->mt76.q_mcu[i], true);
 
        mt76_for_each_q_rx(&dev->mt76, i)
-               mt76_queue_reset(dev, &dev->mt76.q_rx[i]);
+               mt76_queue_reset(dev, &dev->mt76.q_rx[i], true);
 
        mt76_tx_status_check(&dev->mt76, true);
 
index c8bef0b2a14445224689efb4c0fee6c80387a7fa..c77e619070d34ddbf281a5d90c6c96cbd1bb2283 100644 (file)
@@ -775,7 +775,7 @@ void mt7996_dma_reset(struct mt7996_dev *dev, bool force)
        }
 
        for (i = 0; i < __MT_MCUQ_MAX; i++)
-               mt76_queue_reset(dev, dev->mt76.q_mcu[i]);
+               mt76_queue_reset(dev, dev->mt76.q_mcu[i], true);
 
        mt76_for_each_q_rx(&dev->mt76, i) {
                if (mtk_wed_device_active(&dev->mt76.mmio.wed))
@@ -783,7 +783,7 @@ void mt7996_dma_reset(struct mt7996_dev *dev, bool force)
                            mt76_queue_is_wed_tx_free(&dev->mt76.q_rx[i]))
                                continue;
 
-               mt76_queue_reset(dev, &dev->mt76.q_rx[i]);
+               mt76_queue_reset(dev, &dev->mt76.q_rx[i], true);
        }
 
        mt76_tx_status_check(&dev->mt76, true);
index 63f69e152b1cbb5bc0170a44976be1c7c52f21dc..907a8e43e72ad1f2a68d097c4a06df4506c4b039 100644 (file)
@@ -118,7 +118,7 @@ int mt76_wed_dma_setup(struct mt76_dev *dev, struct mt76_queue *q, bool reset)
        case MT76_WED_Q_TXFREE:
                /* WED txfree queue needs ring to be initialized before setup */
                q->flags = 0;
-               mt76_dma_queue_reset(dev, q);
+               mt76_dma_queue_reset(dev, q, true);
                mt76_dma_rx_fill(dev, q, false);
 
                ret = mtk_wed_device_txfree_ring_setup(q->wed, q->regs);
@@ -133,21 +133,21 @@ int mt76_wed_dma_setup(struct mt76_dev *dev, struct mt76_queue *q, bool reset)
                break;
        case MT76_WED_RRO_Q_DATA:
                q->flags &= ~MT_QFLAG_WED;
-               __mt76_dma_queue_reset(dev, q, false);
+               mt76_dma_queue_reset(dev, q, false);
                mtk_wed_device_rro_rx_ring_setup(q->wed, ring, q->regs);
                q->head = q->ndesc - 1;
                q->queued = q->head;
                break;
        case MT76_WED_RRO_Q_MSDU_PG:
                q->flags &= ~MT_QFLAG_WED;
-               __mt76_dma_queue_reset(dev, q, false);
+               mt76_dma_queue_reset(dev, q, false);
                mtk_wed_device_msdu_pg_rx_ring_setup(q->wed, ring, q->regs);
                q->head = q->ndesc - 1;
                q->queued = q->head;
                break;
        case MT76_WED_RRO_Q_IND:
                q->flags &= ~MT_QFLAG_WED;
-               mt76_dma_queue_reset(dev, q);
+               mt76_dma_queue_reset(dev, q, true);
                mt76_dma_rx_fill(dev, q, false);
                mtk_wed_device_ind_rx_ring_setup(q->wed, q->regs);
                break;