[PATCH net 0/2] net: macb: fix software FCS handling of shared and requeued skbs
From: Nicolai Buchwitz
Date: Tue Oct 06 2026 - 01:42:06 EST
While testing the genet MTU series I used a Raspberry Pi CM5 (RP1 GEM)
as pktgen source for the CM4. With clone_skb the CM5 rebooted after a
few seconds. Further investigation showed that macb_pad_and_fcs()
appends the FCS in place, so the shared skb grows with every transmit
until BQL completes more than was queued and dql_completed() hits its
BUG_ON.
The same code also modifies the skb before the TX ring check, so a
NETDEV_TX_BUSY retry gets an skb that was already replaced or grown.
Patch 1 checks the ring first, patch 2 copies shared skbs.
Tested on Raspberry CM5 with pktgen at 60/20000 bytes, clone_skb 0/
1000, burst 1/32.
Signed-off-by: Nicolai Buchwitz <nb@xxxxxxxxxxx>
---
Nicolai Buchwitz (2):
net: macb: check TX ring before modifying skb
net: macb: copy shared skbs before appending the FCS
drivers/net/ethernet/cadence/macb_main.c | 80 +++++++++++++++++++-------------
1 file changed, 49 insertions(+), 31 deletions(-)
---
base-commit: d5a007b9b457c915ab1a53227e8939e4018aa97a
change-id: 20261004-nb-macb-shared-skb-net-13174995332b
Best regards,
--
Nicolai Buchwitz <nb@xxxxxxxxxxx>