]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
net: airoha: Set REG_RX_CPU_IDX() once in airoha_qdma_fill_rx_queue()
authorLorenzo Bianconi <lorenzo@kernel.org>
Tue, 31 Mar 2026 10:33:24 +0000 (12:33 +0200)
committerPaolo Abeni <pabeni@redhat.com>
Thu, 2 Apr 2026 13:13:22 +0000 (15:13 +0200)
It is not necessary to update REG_RX_CPU_IDX register for each iteration
of the descriptor loop in airoha_qdma_fill_rx_queue routine.
Move REG_RX_CPU_IDX configuration out of the descriptor loop and rely on
the last queue head value updated in the descriptor loop.

Signed-off-by: Lorenzo Bianconi <lorenzo@kernel.org>
Link: https://patch.msgid.link/20260331-airoha-cpu-idx-out-off-loop-v1-1-75c66b428f50@kernel.org
Signed-off-by: Paolo Abeni <pabeni@redhat.com>
drivers/net/ethernet/airoha/airoha_eth.c

index 2beba017e791d20f142e754edafcd402d8cc496f..a9fa96e103edd86f3b3846b67c09d2f794b71348 100644 (file)
@@ -572,11 +572,12 @@ static int airoha_qdma_fill_rx_queue(struct airoha_queue *q)
                WRITE_ONCE(desc->msg1, 0);
                WRITE_ONCE(desc->msg2, 0);
                WRITE_ONCE(desc->msg3, 0);
+       }
 
+       if (nframes)
                airoha_qdma_rmw(qdma, REG_RX_CPU_IDX(qid),
                                RX_RING_CPU_IDX_MASK,
                                FIELD_PREP(RX_RING_CPU_IDX_MASK, q->head));
-       }
 
        return nframes;
 }