[PATCH net v3 0/2] net: airoha: fix silent RX loss on the shared CPU ring
From: Vitaliy Sochnev <hidden>
Date: 2026-09-01 16:33:42
Also in:
linux-arm-kernel, linux-mediatek, lkml
v3: dropped the RX ring stall recovery (v2 2/3) as asked [1]. At 128 the stall does not occur - 500 forced PPPoE reconnects over 20 h with the detector compiled in and armed, zero triggers - and it did not fix the bug on its own anyway. I will resend it if the stall turns up at the larger ring. 2/2 keeps its code and its Acked-by; the commit message changed. It now cites the register capture taken with no recovery in the tree instead of numbers from builds carrying it, states that 1/2 does not cover this failure, and quantifies what the bigger rings cost in memory. v2 [2] answered the v1 review: DONE-bit overwrite hypothesis disproven, QDMA_DESC_DROP_MASK never set, RX_DSCP_NUM default raised to the vendor SDK's 32. Still open for the airoha folks: in 2/2 hw set DONE on descriptor 15 while 0-14 were untouched and the driver's consumer sat at 0. Is out-of-order completion within an RX ring expected, or is the driver violating a constraint on RX_CPU_IDX by leaving one descriptor unposted? Growing the ring avoids the symptom; the rule behind it is still unknown. Tested on Nokia XG-040G-MF (AN7583) on a live PPPoE line. These two patches without the recovery are what ran longest here: 508 forced reconnects over 20 h 32 min, zero rx_dropped/rx_errors across 39158 samples. [1] https://lore.kernel.org/netdev/apaA5jDYH71F0JaS@lore-desk/ (local) [2] https://lore.kernel.org/netdev/20260831234701.206021-1-sochnev.v.74@gmail.com/ (local) Vitaliy Sochnev (2): net: airoha: handle RX_NO_CPU_DSCP interrupt, not just RX_DONE net: airoha: grow the small RX rings drivers/net/ethernet/airoha/airoha_eth.c | 16 +++++++++++----- drivers/net/ethernet/airoha/airoha_eth.h | 3 ++- drivers/net/ethernet/airoha/airoha_regs.h | 2 ++ 3 files changed, 15 insertions(+), 6 deletions(-) -- 2.55.0