Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

net: remove MTU limits on a few ether_setup callers

These few drivers call ether_setup(), but have no ndo_change_mtu, and thus
were overlooked for changes to MTU range checking behavior. They
previously had no range checks, so for feature-parity, set their min_mtu
to 0 and max_mtu to ETH_MAX_MTU (65535), instead of the 68 and 1500
inherited from the ether_setup() changes. Fine-tuning can come after we get
back to full feature-parity here.

CC: netdev@vger.kernel.org
Reported-by: Asbjoern Sloth Toennesen <asbjorn@asbjorn.st>
CC: Asbjoern Sloth Toennesen <asbjorn@asbjorn.st>
CC: R Parameswaran <parameswaran.r7@gmail.com>
Signed-off-by: Jarod Wilson <jarod@redhat.com>
Signed-off-by: David S. Miller <davem@davemloft.net>

authored by

Jarod Wilson and committed by
David S. Miller
8b1efc0f e8f0a89c

+11 -2
+3 -1
net/atm/br2684.c
··· 649 649 netdev->hard_header_len = sizeof(llc_oui_ipv4); /* worst case */ 650 650 netdev->netdev_ops = &br2684_netdev_ops_routed; 651 651 netdev->addr_len = 0; 652 - netdev->mtu = 1500; 652 + netdev->mtu = ETH_DATA_LEN; 653 + netdev->min_mtu = 0; 654 + netdev->max_mtu = ETH_MAX_MTU; 653 655 netdev->type = ARPHRD_PPP; 654 656 netdev->flags = IFF_POINTOPOINT | IFF_NOARP | IFF_MULTICAST; 655 657 netdev->tx_queue_len = 100;
+2
net/bluetooth/bnep/netdev.c
··· 221 221 dev->addr_len = ETH_ALEN; 222 222 223 223 ether_setup(dev); 224 + dev->min_mtu = 0; 225 + dev->max_mtu = ETH_MAX_MTU; 224 226 dev->priv_flags &= ~IFF_TX_SKB_SHARING; 225 227 dev->netdev_ops = &bnep_netdev_ops; 226 228
+2
net/dsa/slave.c
··· 1247 1247 slave_dev->priv_flags |= IFF_NO_QUEUE; 1248 1248 slave_dev->netdev_ops = &dsa_slave_netdev_ops; 1249 1249 slave_dev->switchdev_ops = &dsa_slave_switchdev_ops; 1250 + slave_dev->min_mtu = 0; 1251 + slave_dev->max_mtu = ETH_MAX_MTU; 1250 1252 SET_NETDEV_DEVTYPE(slave_dev, &dsa_type); 1251 1253 1252 1254 netdev_for_each_tx_queue(slave_dev, dsa_slave_set_lockdep_class_one,
+2 -1
net/irda/irlan/irlan_eth.c
··· 66 66 67 67 dev->netdev_ops = &irlan_eth_netdev_ops; 68 68 dev->destructor = free_netdev; 69 - 69 + dev->min_mtu = 0; 70 + dev->max_mtu = ETH_MAX_MTU; 70 71 71 72 /* 72 73 * Lets do all queueing in IrTTP instead of this device driver.
+2
net/l2tp/l2tp_eth.c
··· 259 259 session->mtu = dev->mtu - session->hdr_len; 260 260 dev->mtu = session->mtu; 261 261 dev->needed_headroom += session->hdr_len; 262 + dev->min_mtu = 0; 263 + dev->max_mtu = ETH_MAX_MTU; 262 264 263 265 priv = netdev_priv(dev); 264 266 priv->dev = dev;