[PATCH net-next v2 0/7] net: bcmgenet: support larger MTUs
flat view
COOLING4d
From: Nicolai Buchwitz <nb@tipi-net.de>
Date: 2026-10-05 22:25:00
Also in:
lkml
Revision v2 of 3 in this series.
Revisions (3)
- v1 [diff vs current]
- v2 current
- v3 [diff vs current]
Larger MTU aka. jumbo frames are requested often by Raspberry Pi users, but the hardware has its quirks with larger frames, so it never got done. Dave Stevenson's PoC [1] had the receive side working and Justin checked the RTL what the hardware does with long frames, which got me past the rest. GENET never sets dev->max_mtu, and the packet ready thresholds cut frames off at their 2048 byte reset default. With this the receive dropped them as fragmented and transmit never sent them out. See commit messages of the patches for more details. Patches 1 to 5 implement the MTU as far as one descriptor reaches (3564 bytes with 4K pages). Patch 6 pads around a transmit quirk where a frame ending just past the threshold stops the transmitter [3]. Patch 7 reassembles the fragments the hardware produces above it, which gets the ceiling to 16347 [2]. Tested on a CM4 (GENET v5). MTU 1500 is unchanged, MTU 9000 reaches 991/987 Mbit/s. Pierre-Marin Leclercq tested on a Pi 4 (also GENET v5) with various MTU sizes. [1] https://github.com/raspberrypi/linux/pull/7614 [2] https://github.com/raspberrypi/linux/pull/7617#issuecomment-5669564355 [3] https://github.com/raspberrypi/linux/pull/7617#issuecomment-5735557324 Signed-off-by: Nicolai Buchwitz <nb@tipi-net.de> --- Changes in v2: - patch 5: resync the PHY state machine after the MTU restart, a latched link event was lost and an internal PHY is never polled (v1-4) - patch 6: move the checksum fallback here from patch 7, a bisect between them dropped checksummed frames on large page kernels - patch 6: note the trailer limitation of the padding - patch 7: pskb_trim() for the FCS trim, a reassembled frame is paged - patch 7: latch frag_drop on a continuation without a start, the counter inflated per descriptor - comment and commit message corrections in patches 2, 4 and 5 - Link to v1: https://lore.kernel.org/r/20261002-nb-genet-mtu-nn-v2-v1-0-96dc6d54cbee@tipi-net.de (local) --- Nicolai Buchwitz (7): net: bcmgenet: let the caller decide whether to start the PHY net: bcmgenet: allow a continuation descriptor without the alignment pad net: bcmgenet: rename ENET_MAX_MTU_SIZE to ENET_MAX_FRAME_LEN net: bcmgenet: derive the receive buffer length from the MTU net: bcmgenet: allow the MTU to be changed net: bcmgenet: pad transmit frames out of the packet ready window net: bcmgenet: reassemble jumbo frames from status block fragments drivers/net/ethernet/broadcom/genet/bcmgenet.c | 326 +++++++++++++++++++++++-- drivers/net/ethernet/broadcom/genet/bcmgenet.h | 21 +- 2 files changed, 315 insertions(+), 32 deletions(-) --- base-commit: 071876fd50482a68603a9460d80dd6dd58827ee1 change-id: 20261002-nb-genet-mtu-nn-v2-402b5e6f306f Best regards, -- Nicolai Buchwitz [off-list ref]