OSDN Git Service

wifi: mt76: add WED RX support to dma queue alloc
authorLorenzo Bianconi <lorenzo@kernel.org>
Sat, 12 Nov 2022 15:40:37 +0000 (16:40 +0100)
committerFelix Fietkau <nbd@nbd.name>
Thu, 1 Dec 2022 16:29:14 +0000 (17:29 +0100)
Introduce the capability to allocate WED RX buffers in
mt76_dma_wed_setup routine.

Tested-by: Daniel Golle <daniel@makrotopia.org>
Co-developed-by: Sujuan Chen <sujuan.chen@mediatek.com>
Signed-off-by: Sujuan Chen <sujuan.chen@mediatek.com>
Signed-off-by: Lorenzo Bianconi <lorenzo@kernel.org>
Signed-off-by: Felix Fietkau <nbd@nbd.name>
drivers/net/wireless/mediatek/mt76/dma.c

index cb6e3b3..58b41bd 100644 (file)
@@ -647,6 +647,11 @@ mt76_dma_wed_setup(struct mt76_dev *dev, struct mt76_queue *q)
                if (!ret)
                        q->wed_regs = wed->txfree_ring.reg_base;
                break;
+       case MT76_WED_Q_RX:
+               ret = mtk_wed_device_rx_ring_setup(wed, ring, q->regs);
+               if (!ret)
+                       q->wed_regs = wed->rx_ring[ring].reg_base;
+               break;
        default:
                ret = -EINVAL;
        }
@@ -938,8 +943,11 @@ void mt76_dma_cleanup(struct mt76_dev *dev)
                mt76_dma_tx_cleanup(dev, dev->q_mcu[i], true);
 
        mt76_for_each_q_rx(dev, i) {
+               struct mt76_queue *q = &dev->q_rx[i];
+
                netif_napi_del(&dev->napi[i]);
-               mt76_dma_rx_cleanup(dev, &dev->q_rx[i]);
+               if (FIELD_GET(MT_QFLAG_WED_TYPE, q->flags))
+                       mt76_dma_rx_cleanup(dev, q);
        }
 
        mt76_free_pending_txwi(dev);