From eed44048ca575863ebdf1dc73f441cb9604cd388 Mon Sep 17 00:00:00 2001 From: Felix Fietkau Date: Mon, 28 Mar 2022 20:06:56 +0200 Subject: [PATCH] Revert "mt76: dma: reduce lock contention in mt76_dma_tx_cleanup" This reverts commit 2e51013b38c9e6ca529c15fc9c88668d8cd8ba5b. --- dma.c | 26 +++----------------------- 1 file changed, 3 insertions(+), 23 deletions(-) diff --git a/dma.c b/dma.c index 07065816..09dc37bb 100644 --- a/dma.c +++ b/dma.c @@ -233,9 +233,7 @@ static void mt76_dma_tx_cleanup(struct mt76_dev *dev, struct mt76_queue *q, bool flush) { struct mt76_queue_entry entry; - int done = 0; int last; - int tail; if (!q || !q->ndesc) return; @@ -246,39 +244,21 @@ mt76_dma_tx_cleanup(struct mt76_dev *dev, struct mt76_queue *q, bool flush) else last = readl(&q->regs->dma_idx); - tail = q->tail; - while (q->queued - done > 0 && tail != last) { + while (q->queued > 0 && q->tail != last) { mt76_dma_tx_cleanup_idx(dev, q, q->tail, &entry); - if (entry.skb) - dev->drv->tx_complete_skb(dev, &entry); - tail = (tail + 1) % q->ndesc; - done++; + mt76_queue_tx_complete(dev, q, &entry); if (entry.txwi) { if (!(dev->drv->drv_flags & MT_DRV_TXWI_NO_FREE)) mt76_put_txwi(dev, entry.txwi); } - if (!flush && tail == last) + if (!flush && q->tail == last) last = readl(&q->regs->dma_idx); - if (done > 16) { - spin_lock_bh(&q->lock); - q->queued -= done; - q->tail = tail; - spin_unlock_bh(&q->lock); - done = 0; - } } spin_unlock_bh(&q->cleanup_lock); - if (done) { - spin_lock_bh(&q->lock); - q->queued -= done; - q->tail = tail; - spin_unlock_bh(&q->lock); - } - if (flush) { spin_lock_bh(&q->lock); mt76_dma_sync_idx(dev, q);