Jumbo packets need two bits that default to off, extended packet length in the auxiliary control register and PCS transmit FIFO elasticity in the extended control register. The latter raises the transmit limit from 4.5 KB to 9 KB at the cost of 16 ns of 1000BASE-T transmit latency, and the two together take copper mode to 10 KB. Without them such frames are lost on a 100M link while the same frames pass at 1G. On a Raspberry Pi CM5, which uses a BCM54210PE, 9142 byte frames at 100M are lost 20 out of 20 with the MAC counting every one as transmitted. The same frames over the same path at 1G arrive intact. Set both, which bcm_phy_enable_jumbo() already does for bcm7xxx. The frames then arrive and the payloads check out byte for byte. Signed-off-by: Nicolai Buchwitz --- drivers/net/phy/broadcom.c | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/drivers/net/phy/broadcom.c b/drivers/net/phy/broadcom.c index d1a4edb34ad2..b515e3875504 100644 --- a/drivers/net/phy/broadcom.c +++ b/drivers/net/phy/broadcom.c @@ -537,6 +537,13 @@ static int bcm54xx_config_init(struct phy_device *phydev) bcm54xx_ptp_config_init(phydev); + /* Transmit is limited to 4.5 KB without it, see the BCM54210PE + * datasheet section 5.4.12.14. + */ + err = bcm_phy_enable_jumbo(phydev); + if (err < 0) + return err; + /* Acknowledge any left over interrupt and charge the device for * wake-up. */ -- 2.53.0