]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
net: airoha: Add missing RX_CPU_IDX() configuration in airoha_qdma_cleanup_rx_queue()
authorLorenzo Bianconi <lorenzo@kernel.org>
Wed, 8 Apr 2026 18:26:56 +0000 (20:26 +0200)
committerJakub Kicinski <kuba@kernel.org>
Sun, 12 Apr 2026 18:25:17 +0000 (11:25 -0700)
When the descriptor index written in REG_RX_CPU_IDX() is equal to the one
stored in REG_RX_DMA_IDX(), the hw will stop since the QDMA RX ring is
empty.
Add missing REG_RX_CPU_IDX() configuration in airoha_qdma_cleanup_rx_queue
routine during QDMA RX ring cleanup.

Fixes: 514aac359987 ("net: airoha: Add missing cleanup bits in airoha_qdma_cleanup_rx_queue()")
Signed-off-by: Lorenzo Bianconi <lorenzo@kernel.org>
Link: https://patch.msgid.link/20260408-airoha-cpu-idx-airoha_qdma_cleanup_rx_queue-v1-1-8efa64844308@kernel.org
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
drivers/net/ethernet/airoha/airoha_eth.c

index c14cdce588a7c0a46374c7d50cdd84a4f288f04f..9e995094c32af500dab6b3e3752ab6be67f919c5 100644 (file)
@@ -825,6 +825,11 @@ static void airoha_qdma_cleanup_rx_queue(struct airoha_queue *q)
        }
 
        q->head = q->tail;
+       /* Set RX_DMA_IDX to RX_CPU_IDX to notify the hw the QDMA RX ring is
+        * empty.
+        */
+       airoha_qdma_rmw(qdma, REG_RX_CPU_IDX(qid), RX_RING_CPU_IDX_MASK,
+                       FIELD_PREP(RX_RING_CPU_IDX_MASK, q->head));
        airoha_qdma_rmw(qdma, REG_RX_DMA_IDX(qid), RX_RING_DMA_IDX_MASK,
                        FIELD_PREP(RX_RING_DMA_IDX_MASK, q->tail));
 }