cns3xxx: fix mtu setting with kernel 4.14
authorMathias Kresin <dev@kresin.me>
Sun, 18 Feb 2018 21:48:44 +0000 (22:48 +0100)
committerKoen Vandeputte <koen.vandeputte@ncentric.com>
Mon, 20 Aug 2018 11:04:34 +0000 (13:04 +0200)
Since kernel 4.10 commit 61e84623ace3 ("net: centralize net_device
min/max MTU checking"), the range of mtu is [min_mtu, max_mtu], which
is [68, 1500] by default.

It's necessary to set a max_mtu if a mtu > 1500 is supported.

Tested-by: Koen Vandeputte <koen.vandeputte@ncentric.com>
Signed-off-by: Mathias Kresin <dev@kresin.me>
target/linux/cns3xxx/files/drivers/net/ethernet/cavium/cns3xxx_eth.c

index 07c9dbc0487fdcb3f83c26af4248a012967d01fd..4fbc34f354a089c85f8d7578bcf0c444af8f3f59 100644 (file)
@@ -1112,22 +1112,12 @@ static int eth_set_mac(struct net_device *netdev, void *p)
        return 0;
 }
 
-static int cns3xxx_change_mtu(struct net_device *dev, int new_mtu)
-{
-       if (new_mtu > MAX_MTU)
-               return -EINVAL;
-
-       dev->mtu = new_mtu;
-       return 0;
-}
-
 static const struct net_device_ops cns3xxx_netdev_ops = {
        .ndo_open = eth_open,
        .ndo_stop = eth_close,
        .ndo_start_xmit = eth_xmit,
        .ndo_set_rx_mode = eth_rx_mode,
        .ndo_do_ioctl = eth_ioctl,
-       .ndo_change_mtu = cns3xxx_change_mtu,
        .ndo_set_mac_address = eth_set_mac,
        .ndo_validate_addr = eth_validate_addr,
 };
@@ -1224,6 +1214,7 @@ static int eth_init_one(struct platform_device *pdev)
                dev->netdev_ops = &cns3xxx_netdev_ops;
                dev->ethtool_ops = &cns3xxx_ethtool_ops;
                dev->tx_queue_len = 1000;
+               dev->max_mtu = MAX_MTU;
                dev->features = NETIF_F_IP_CSUM | NETIF_F_SG | NETIF_F_FRAGLIST;
 
                switch_port_tab[port->id] = port;