Commit ef444ad0 authored by Sean Wang's avatar Sean Wang Committed by Felix Fietkau

wifi: mt76: reduce spin_lock_bh held up in mt76_dma_rx_cleanup

mt76_dma_rx_cleanup would be frequenetly called up to reset the dma rings
to be freshed as new ones when switching back from the deep sleep mode to
the active mode on mt7921 and mt7922.

Shrink the scope of spin_lock_bh in mt76_dma_rx_cleanup being held up
to allow the kernel scheduler to be able to switch other tasks in time
by reducing the latency.
Signed-off-by: default avatarSean Wang <sean.wang@mediatek.com>
Signed-off-by: default avatarFelix Fietkau <nbd@nbd.name>
parent 9585316a
...@@ -739,16 +739,18 @@ mt76_dma_rx_cleanup(struct mt76_dev *dev, struct mt76_queue *q) ...@@ -739,16 +739,18 @@ mt76_dma_rx_cleanup(struct mt76_dev *dev, struct mt76_queue *q)
if (!q->ndesc) if (!q->ndesc)
return; return;
spin_lock_bh(&q->lock);
do { do {
spin_lock_bh(&q->lock);
buf = mt76_dma_dequeue(dev, q, true, NULL, NULL, &more, NULL); buf = mt76_dma_dequeue(dev, q, true, NULL, NULL, &more, NULL);
spin_unlock_bh(&q->lock);
if (!buf) if (!buf)
break; break;
mt76_put_page_pool_buf(buf, false); mt76_put_page_pool_buf(buf, false);
} while (1); } while (1);
spin_lock_bh(&q->lock);
if (q->rx_head) { if (q->rx_head) {
dev_kfree_skb(q->rx_head); dev_kfree_skb(q->rx_head);
q->rx_head = NULL; q->rx_head = NULL;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment