net: macb: fix negative max_mtu size for sama5d3
authorOleksij Rempel <o.rempel@pengutronix.de>
Fri, 17 Jun 2022 07:16:07 +0000 (09:16 +0200)
committerDavid S. Miller <davem@davemloft.net>
Fri, 17 Jun 2022 10:42:35 +0000 (11:42 +0100)
JML register on probe will return zero . This register is configured
later on macb_init_hw() which is called on open.
Since we have zero, after header and FCS length subtraction we will get
negative max_mtu size. This issue was affecting DSA drivers with MTU support
(for example KSZ9477).

Signed-off-by: Oleksij Rempel <o.rempel@pengutronix.de>
Reviewed-by: Claudiu Beznea <claudiu.beznea@microchip.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/ethernet/cadence/macb_main.c

index d89098f4ede80c403b0efc3202109ebe8ba20fcf..d0ea8dbfa213dea880f292cfdc67916a9e4163bb 100644 (file)
@@ -4913,8 +4913,8 @@ static int macb_probe(struct platform_device *pdev)
 
        /* MTU range: 68 - 1500 or 10240 */
        dev->min_mtu = GEM_MTU_MIN_SIZE;
-       if (bp->caps & MACB_CAPS_JUMBO)
-               dev->max_mtu = gem_readl(bp, JML) - ETH_HLEN - ETH_FCS_LEN;
+       if ((bp->caps & MACB_CAPS_JUMBO) && bp->jumbo_max_len)
+               dev->max_mtu = bp->jumbo_max_len - ETH_HLEN - ETH_FCS_LEN;
        else
                dev->max_mtu = ETH_DATA_LEN;