Commit 5ffc6b5a authored by Felix Fietkau's avatar Felix Fietkau
Browse files

mt76: set dma-done flag for flushed descriptors



Avoids a theoretical corner case where the hardware could try to process
a stale descriptor after a watchdog reset

Signed-off-by: default avatarFelix Fietkau <nbd@nbd.name>
parent 94d4d076
Loading
Loading
Loading
Loading
+3 −1
Original line number Diff line number Diff line
@@ -246,7 +246,9 @@ mt76_dma_dequeue(struct mt76_dev *dev, struct mt76_queue *q, bool flush,
	if (!q->queued)
		return NULL;

	if (!flush && !(q->desc[idx].ctrl & cpu_to_le32(MT_DMA_CTL_DMA_DONE)))
	if (flush)
		q->desc[idx].ctrl |= cpu_to_le32(MT_DMA_CTL_DMA_DONE);
	else if (!(q->desc[idx].ctrl & cpu_to_le32(MT_DMA_CTL_DMA_DONE)))
		return NULL;

	q->tail = (q->tail + 1) % q->ndesc;