wifi: mt76: introduce mt76_queue_is_wed_tx_free utility routine
authorLorenzo Bianconi <lorenzo@kernel.org>
Fri, 20 Oct 2023 10:30:51 +0000 (12:30 +0200)
committerFelix Fietkau <nbd@nbd.name>
Thu, 7 Dec 2023 17:50:20 +0000 (18:50 +0100)
This is a preliminary patch to introduce WED support for mt7996

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

index 511fe7e..d9e1181 100644 (file)
@@ -724,7 +724,7 @@ mt76_dma_alloc_queue(struct mt76_dev *dev, struct mt76_queue *q,
        if (ret)
                return ret;
 
-       if (q->flags != MT_WED_Q_TXFREE)
+       if (!mt76_queue_is_wed_tx_free(q))
                mt76_dma_queue_reset(dev, q);
 
        return 0;
@@ -775,7 +775,7 @@ mt76_dma_rx_reset(struct mt76_dev *dev, enum mt76_rxq_id qid)
 
        /* reset WED rx queues */
        mt76_dma_wed_setup(dev, q, true);
-       if (q->flags != MT_WED_Q_TXFREE) {
+       if (!mt76_queue_is_wed_tx_free(q)) {
                mt76_dma_sync_idx(dev, q);
                mt76_dma_rx_fill(dev, q, false);
        }
@@ -818,7 +818,7 @@ mt76_dma_rx_process(struct mt76_dev *dev, struct mt76_queue *q, int budget)
        bool more;
 
        if (IS_ENABLED(CONFIG_NET_MEDIATEK_SOC_WED) &&
-           q->flags == MT_WED_Q_TXFREE) {
+           mt76_queue_is_wed_tx_free(q)) {
                dma_idx = Q_READ(dev, q, dma_idx);
                check_ddone = true;
        }
index 9035db4..e32d9c7 100644 (file)
@@ -1562,6 +1562,12 @@ s8 mt76_get_rate_power_limits(struct mt76_phy *phy,
                              struct mt76_power_limits *dest,
                              s8 target_power);
 
+static inline bool mt76_queue_is_wed_tx_free(struct mt76_queue *q)
+{
+       return (q->flags & MT_QFLAG_WED) &&
+              FIELD_GET(MT_QFLAG_WED_TYPE, q->flags) == MT76_WED_Q_TXFREE;
+}
+
 static inline bool mt76_queue_is_wed_rx(struct mt76_queue *q)
 {
        return (q->flags & MT_QFLAG_WED) &&
index 59a44d7..96b2c38 100644 (file)
@@ -643,7 +643,7 @@ int mt7915_dma_reset(struct mt7915_dev *dev, bool force)
                mt76_queue_reset(dev, dev->mt76.q_mcu[i]);
 
        mt76_for_each_q_rx(&dev->mt76, i) {
-               if (dev->mt76.q_rx[i].flags == MT_WED_Q_TXFREE)
+               if (mt76_queue_is_wed_tx_free(&dev->mt76.q_rx[i]))
                        continue;
 
                mt76_queue_reset(dev, &dev->mt76.q_rx[i]);