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

Merge branch 'MTU-core-range-checking-more'

Jarod Wilson says:

====================
net: use core MTU range checking everywhere

This stack of patches should get absolutely everything in the kernel
converted from doing their own MTU range checking to the core MTU range
checking. This second spin includes alterations to hopefully fix all
concerns raised with the first, as well as including some additional
changes to drivers and infrastructure where I completely missed necessary
updates.

These have all been built through the 0-day build infrastructure via the
(rebasing) master branch at https://github.com/jarodwilson/linux-muck, which
at the time of the most recent compile across 147 configs, was based on
net-next at commit 7b1536ef0aa0.
====================

Signed-off-by: David S. Miller <davem@davemloft.net>

+319 -668
-8
arch/um/drivers/net_kern.c
··· 256 256 netif_wake_queue(dev); 257 257 } 258 258 259 - static int uml_net_change_mtu(struct net_device *dev, int new_mtu) 260 - { 261 - dev->mtu = new_mtu; 262 - 263 - return 0; 264 - } 265 - 266 259 #ifdef CONFIG_NET_POLL_CONTROLLER 267 260 static void uml_net_poll_controller(struct net_device *dev) 268 261 { ··· 367 374 .ndo_set_rx_mode = uml_net_set_multicast_list, 368 375 .ndo_tx_timeout = uml_net_tx_timeout, 369 376 .ndo_set_mac_address = eth_mac_addr, 370 - .ndo_change_mtu = uml_net_change_mtu, 371 377 .ndo_validate_addr = eth_validate_addr, 372 378 #ifdef CONFIG_NET_POLL_CONTROLLER 373 379 .ndo_poll_controller = uml_net_poll_controller,
+4 -14
drivers/firewire/net.c
··· 1349 1349 return NETDEV_TX_OK; 1350 1350 } 1351 1351 1352 - static int fwnet_change_mtu(struct net_device *net, int new_mtu) 1353 - { 1354 - if (new_mtu < 68) 1355 - return -EINVAL; 1356 - 1357 - net->mtu = new_mtu; 1358 - return 0; 1359 - } 1360 - 1361 1352 static const struct ethtool_ops fwnet_ethtool_ops = { 1362 1353 .get_link = ethtool_op_get_link, 1363 1354 }; ··· 1357 1366 .ndo_open = fwnet_open, 1358 1367 .ndo_stop = fwnet_stop, 1359 1368 .ndo_start_xmit = fwnet_tx, 1360 - .ndo_change_mtu = fwnet_change_mtu, 1361 1369 }; 1362 1370 1363 1371 static void fwnet_init_dev(struct net_device *net) ··· 1425 1435 struct net_device *net; 1426 1436 bool allocated_netdev = false; 1427 1437 struct fwnet_device *dev; 1428 - unsigned max_mtu; 1429 1438 int ret; 1430 1439 union fwnet_hwaddr *ha; 1431 1440 ··· 1467 1478 * Use the RFC 2734 default 1500 octets or the maximum payload 1468 1479 * as initial MTU 1469 1480 */ 1470 - max_mtu = (1 << (card->max_receive + 1)) 1471 - - sizeof(struct rfc2734_header) - IEEE1394_GASP_HDR_SIZE; 1472 - net->mtu = min(1500U, max_mtu); 1481 + net->max_mtu = (1 << (card->max_receive + 1)) 1482 + - sizeof(struct rfc2734_header) - IEEE1394_GASP_HDR_SIZE; 1483 + net->mtu = min(1500U, net->max_mtu); 1484 + net->min_mtu = ETH_MIN_MTU; 1473 1485 1474 1486 /* Set our hardware address while we're at it */ 1475 1487 ha = (union fwnet_hwaddr *)net->dev_addr;
+4 -10
drivers/hsi/clients/ssi_protocol.c
··· 960 960 return 0; 961 961 } 962 962 963 - static int ssip_pn_set_mtu(struct net_device *dev, int new_mtu) 964 - { 965 - if (new_mtu > SSIP_MAX_MTU || new_mtu < PHONET_MIN_MTU) 966 - return -EINVAL; 967 - dev->mtu = new_mtu; 968 - 969 - return 0; 970 - } 971 - 972 963 static void ssip_xmit_work(struct work_struct *work) 973 964 { 974 965 struct ssi_protocol *ssi = ··· 1051 1060 .ndo_open = ssip_pn_open, 1052 1061 .ndo_stop = ssip_pn_stop, 1053 1062 .ndo_start_xmit = ssip_pn_xmit, 1054 - .ndo_change_mtu = ssip_pn_set_mtu, 1055 1063 }; 1056 1064 1057 1065 static void ssip_pn_setup(struct net_device *dev) ··· 1125 1135 err = -ENOMEM; 1126 1136 goto out1; 1127 1137 } 1138 + 1139 + /* MTU range: 6 - 65535 */ 1140 + ssi->netdev->min_mtu = PHONET_MIN_MTU; 1141 + ssi->netdev->max_mtu = SSIP_MAX_MTU; 1128 1142 1129 1143 SET_NETDEV_DEV(ssi->netdev, dev); 1130 1144 netif_carrier_off(ssi->netdev);
-1
drivers/infiniband/hw/nes/nes.c
··· 65 65 MODULE_LICENSE("Dual BSD/GPL"); 66 66 MODULE_VERSION(DRV_VERSION); 67 67 68 - int max_mtu = 9000; 69 68 int interrupt_mod_interval = 0; 70 69 71 70 /* Interoperability */
+2 -2
drivers/infiniband/hw/nes/nes.h
··· 83 83 #define NES_FIRST_QPN 64 84 84 #define NES_SW_CONTEXT_ALIGN 1024 85 85 86 + #define NES_MAX_MTU 9000 87 + 86 88 #define NES_NIC_MAX_NICS 16 87 89 #define NES_MAX_ARP_TABLE_SIZE 4096 88 90 ··· 171 169 #include "nes_cm.h" 172 170 #include "nes_mgt.h" 173 171 174 - extern int max_mtu; 175 - #define max_frame_len (max_mtu+ETH_HLEN) 176 172 extern int interrupt_mod_interval; 177 173 extern int nes_if_count; 178 174 extern int mpa_version;
+3 -7
drivers/infiniband/hw/nes/nes_nic.c
··· 981 981 { 982 982 struct nes_vnic *nesvnic = netdev_priv(netdev); 983 983 struct nes_device *nesdev = nesvnic->nesdev; 984 - int ret = 0; 985 984 u8 jumbomode = 0; 986 985 u32 nic_active; 987 986 u32 nic_active_bit; 988 987 u32 uc_all_active; 989 988 u32 mc_all_active; 990 989 991 - if ((new_mtu < ETH_ZLEN) || (new_mtu > max_mtu)) 992 - return -EINVAL; 993 - 994 990 netdev->mtu = new_mtu; 995 991 nesvnic->max_frame_size = new_mtu + VLAN_ETH_HLEN; 996 992 997 - if (netdev->mtu > 1500) { 993 + if (netdev->mtu > ETH_DATA_LEN) { 998 994 jumbomode=1; 999 995 } 1000 996 nes_nic_init_timer_defaults(nesdev, jumbomode); ··· 1016 1020 nes_write_indexed(nesdev, NES_IDX_NIC_UNICAST_ALL, nic_active); 1017 1021 } 1018 1022 1019 - return ret; 1023 + return 0; 1020 1024 } 1021 1025 1022 1026 ··· 1654 1658 1655 1659 netdev->watchdog_timeo = NES_TX_TIMEOUT; 1656 1660 netdev->irq = nesdev->pcidev->irq; 1657 - netdev->mtu = ETH_DATA_LEN; 1661 + netdev->max_mtu = NES_MAX_MTU; 1658 1662 netdev->hard_header_len = ETH_HLEN; 1659 1663 netdev->addr_len = ETH_ALEN; 1660 1664 netdev->type = ARPHRD_ETHER;
+1
drivers/infiniband/ulp/ipoib/ipoib_main.c
··· 2017 2017 /* MTU will be reset when mcast join happens */ 2018 2018 priv->dev->mtu = IPOIB_UD_MTU(priv->max_ib_mtu); 2019 2019 priv->mcast_mtu = priv->admin_mtu = priv->dev->mtu; 2020 + priv->dev->max_mtu = IPOIB_CM_MTU; 2020 2021 2021 2022 priv->dev->neigh_priv_len = sizeof(struct ipoib_neigh); 2022 2023
+4 -11
drivers/message/fusion/mptlan.c
··· 549 549 } 550 550 551 551 /*=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=*/ 552 - static int 553 - mpt_lan_change_mtu(struct net_device *dev, int new_mtu) 554 - { 555 - if ((new_mtu < MPT_LAN_MIN_MTU) || (new_mtu > MPT_LAN_MAX_MTU)) 556 - return -EINVAL; 557 - dev->mtu = new_mtu; 558 - return 0; 559 - } 560 - 561 - /*=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=*/ 562 552 /* Tx timeout handler. */ 563 553 static void 564 554 mpt_lan_tx_timeout(struct net_device *dev) ··· 1294 1304 .ndo_open = mpt_lan_open, 1295 1305 .ndo_stop = mpt_lan_close, 1296 1306 .ndo_start_xmit = mpt_lan_sdu_send, 1297 - .ndo_change_mtu = mpt_lan_change_mtu, 1298 1307 .ndo_tx_timeout = mpt_lan_tx_timeout, 1299 1308 }; 1300 1309 ··· 1363 1374 1364 1375 dev->netdev_ops = &mpt_netdev_ops; 1365 1376 dev->watchdog_timeo = MPT_LAN_TX_TIMEOUT; 1377 + 1378 + /* MTU range: 96 - 65280 */ 1379 + dev->min_mtu = MPT_LAN_MIN_MTU; 1380 + dev->max_mtu = MPT_LAN_MAX_MTU; 1366 1381 1367 1382 dlprintk((KERN_INFO MYNAM ": Finished registering dev " 1368 1383 "and setting initial values\n"));
+4 -17
drivers/misc/sgi-xp/xpnet.c
··· 118 118 * now, the default is 64KB. 119 119 */ 120 120 #define XPNET_MAX_MTU (0x800000UL - L1_CACHE_BYTES) 121 + /* 68 comes from min TCP+IP+MAC header */ 122 + #define XPNET_MIN_MTU 68 121 123 /* 32KB has been determined to be the ideal */ 122 124 #define XPNET_DEF_MTU (0x8000UL) 123 125 ··· 332 330 return 0; 333 331 } 334 332 335 - static int 336 - xpnet_dev_change_mtu(struct net_device *dev, int new_mtu) 337 - { 338 - /* 68 comes from min TCP+IP+MAC header */ 339 - if ((new_mtu < 68) || (new_mtu > XPNET_MAX_MTU)) { 340 - dev_err(xpnet, "ifconfig %s mtu %d failed; value must be " 341 - "between 68 and %ld\n", dev->name, new_mtu, 342 - XPNET_MAX_MTU); 343 - return -EINVAL; 344 - } 345 - 346 - dev->mtu = new_mtu; 347 - dev_dbg(xpnet, "ifconfig %s mtu set to %d\n", dev->name, new_mtu); 348 - return 0; 349 - } 350 - 351 333 /* 352 334 * Notification that the other end has received the message and 353 335 * DMA'd the skb information. At this point, they are done with ··· 505 519 .ndo_open = xpnet_dev_open, 506 520 .ndo_stop = xpnet_dev_stop, 507 521 .ndo_start_xmit = xpnet_dev_hard_start_xmit, 508 - .ndo_change_mtu = xpnet_dev_change_mtu, 509 522 .ndo_tx_timeout = xpnet_dev_tx_timeout, 510 523 .ndo_set_mac_address = eth_mac_addr, 511 524 .ndo_validate_addr = eth_validate_addr, ··· 540 555 541 556 xpnet_device->netdev_ops = &xpnet_netdev_ops; 542 557 xpnet_device->mtu = XPNET_DEF_MTU; 558 + xpnet_device->min_mtu = XPNET_MIN_MTU; 559 + xpnet_device->max_mtu = XPNET_MAX_MTU; 543 560 544 561 /* 545 562 * Multicast assumes the LSB of the first octet is set for multicast
+2 -3
drivers/net/ethernet/alteon/acenic.c
··· 474 474 dev->features |= NETIF_F_HW_VLAN_CTAG_TX | NETIF_F_HW_VLAN_CTAG_RX; 475 475 476 476 dev->watchdog_timeo = 5*HZ; 477 + dev->min_mtu = 0; 478 + dev->max_mtu = ACE_JUMBO_MTU; 477 479 478 480 dev->netdev_ops = &ace_netdev_ops; 479 481 dev->ethtool_ops = &ace_ethtool_ops; ··· 2549 2547 { 2550 2548 struct ace_private *ap = netdev_priv(dev); 2551 2549 struct ace_regs __iomem *regs = ap->regs; 2552 - 2553 - if (new_mtu > ACE_JUMBO_MTU) 2554 - return -EINVAL; 2555 2550 2556 2551 writel(new_mtu + ETH_HLEN + 4, &regs->IfMtu); 2557 2552 dev->mtu = new_mtu;
+2 -7
drivers/net/ethernet/amazon/ena/ena_netdev.c
··· 103 103 struct ena_adapter *adapter = netdev_priv(dev); 104 104 int ret; 105 105 106 - if ((new_mtu > adapter->max_mtu) || (new_mtu < ENA_MIN_MTU)) { 107 - netif_err(adapter, drv, dev, 108 - "Invalid MTU setting. new_mtu: %d\n", new_mtu); 109 - 110 - return -EINVAL; 111 - } 112 - 113 106 ret = ena_com_set_dev_mtu(adapter->ena_dev, new_mtu); 114 107 if (!ret) { 115 108 netif_dbg(adapter, drv, dev, "set MTU to %d\n", new_mtu); ··· 2748 2755 ena_set_dev_offloads(feat, netdev); 2749 2756 2750 2757 adapter->max_mtu = feat->dev_attr.max_mtu; 2758 + netdev->max_mtu = adapter->max_mtu; 2759 + netdev->min_mtu = ENA_MIN_MTU; 2751 2760 } 2752 2761 2753 2762 static int ena_rss_init_default(struct ena_adapter *adapter)
-5
drivers/net/ethernet/amd/xgbe/xgbe-drv.c
··· 257 257 { 258 258 unsigned int rx_buf_size; 259 259 260 - if (mtu > XGMAC_JUMBO_PACKET_MTU) { 261 - netdev_alert(netdev, "MTU exceeds maximum supported value\n"); 262 - return -EINVAL; 263 - } 264 - 265 260 rx_buf_size = mtu + ETH_HLEN + ETH_FCS_LEN + VLAN_HLEN; 266 261 rx_buf_size = clamp_val(rx_buf_size, XGBE_RX_MIN_BUF_SIZE, PAGE_SIZE); 267 262
+2
drivers/net/ethernet/amd/xgbe/xgbe-main.c
··· 738 738 pdata->netdev_features = netdev->features; 739 739 740 740 netdev->priv_flags |= IFF_UNICAST_FLT; 741 + netdev->min_mtu = 0; 742 + netdev->max_mtu = XGMAC_JUMBO_PACKET_MTU; 741 743 742 744 /* Use default watchdog timeout */ 743 745 netdev->watchdog_timeo = 0;
+2 -10
drivers/net/ethernet/broadcom/sb1250-mac.c
··· 2147 2147 } 2148 2148 } 2149 2149 2150 - static int sb1250_change_mtu(struct net_device *_dev, int new_mtu) 2151 - { 2152 - if (new_mtu > ENET_PACKET_SIZE) 2153 - return -EINVAL; 2154 - _dev->mtu = new_mtu; 2155 - pr_info("changing the mtu to %d\n", new_mtu); 2156 - return 0; 2157 - } 2158 - 2159 2150 static const struct net_device_ops sbmac_netdev_ops = { 2160 2151 .ndo_open = sbmac_open, 2161 2152 .ndo_stop = sbmac_close, ··· 2154 2163 .ndo_set_rx_mode = sbmac_set_rx_mode, 2155 2164 .ndo_tx_timeout = sbmac_tx_timeout, 2156 2165 .ndo_do_ioctl = sbmac_mii_ioctl, 2157 - .ndo_change_mtu = sb1250_change_mtu, 2158 2166 .ndo_validate_addr = eth_validate_addr, 2159 2167 .ndo_set_mac_address = eth_mac_addr, 2160 2168 #ifdef CONFIG_NET_POLL_CONTROLLER ··· 2219 2229 2220 2230 dev->netdev_ops = &sbmac_netdev_ops; 2221 2231 dev->watchdog_timeo = TX_TIMEOUT; 2232 + dev->max_mtu = 0; 2233 + dev->max_mtu = ENET_PACKET_SIZE; 2222 2234 2223 2235 netif_napi_add(dev, &sc->napi, sbmac_poll, 16); 2224 2236
+2 -2
drivers/net/ethernet/chelsio/cxgb3/cxgb3_main.c
··· 2531 2531 struct adapter *adapter = pi->adapter; 2532 2532 int ret; 2533 2533 2534 - if (new_mtu < 81) /* accommodate SACK */ 2535 - return -EINVAL; 2536 2534 if ((ret = t3_mac_set_mtu(&pi->mac, new_mtu))) 2537 2535 return ret; 2538 2536 dev->mtu = new_mtu; ··· 3293 3295 3294 3296 netdev->netdev_ops = &cxgb_netdev_ops; 3295 3297 netdev->ethtool_ops = &cxgb_ethtool_ops; 3298 + netdev->min_mtu = 81; 3299 + netdev->max_mtu = ETH_MAX_MTU; 3296 3300 } 3297 3301 3298 3302 pci_set_drvdata(pdev, adapter);
+4 -2
drivers/net/ethernet/chelsio/cxgb4/cxgb4_main.c
··· 2502 2502 int ret; 2503 2503 struct port_info *pi = netdev_priv(dev); 2504 2504 2505 - if (new_mtu < 81 || new_mtu > MAX_MTU) /* accommodate SACK */ 2506 - return -EINVAL; 2507 2505 ret = t4_set_rxmode(pi->adapter, pi->adapter->pf, pi->viid, new_mtu, -1, 2508 2506 -1, -1, -1, true); 2509 2507 if (!ret) ··· 4800 4802 netdev->vlan_features = netdev->features & VLAN_FEAT; 4801 4803 4802 4804 netdev->priv_flags |= IFF_UNICAST_FLT; 4805 + 4806 + /* MTU range: 81 - 9600 */ 4807 + netdev->min_mtu = 81; 4808 + netdev->max_mtu = MAX_MTU; 4803 4809 4804 4810 netdev->netdev_ops = &cxgb4_netdev_ops; 4805 4811 #ifdef CONFIG_CHELSIO_T4_DCB
+2 -4
drivers/net/ethernet/chelsio/cxgb4vf/cxgb4vf_main.c
··· 1108 1108 int ret; 1109 1109 struct port_info *pi = netdev_priv(dev); 1110 1110 1111 - /* accommodate SACK */ 1112 - if (new_mtu < 81) 1113 - return -EINVAL; 1114 - 1115 1111 ret = t4vf_set_rxmode(pi->adapter, pi->viid, new_mtu, 1116 1112 -1, -1, -1, -1, true); 1117 1113 if (!ret) ··· 2962 2966 netdev->features |= NETIF_F_HIGHDMA; 2963 2967 2964 2968 netdev->priv_flags |= IFF_UNICAST_FLT; 2969 + netdev->min_mtu = 81; 2970 + netdev->max_mtu = ETH_MAX_MTU; 2965 2971 2966 2972 netdev->netdev_ops = &cxgb4vf_netdev_ops; 2967 2973 netdev->ethtool_ops = &cxgb4vf_ethtool_ops;
+4 -18
drivers/net/ethernet/emulex/benet/be_main.c
··· 1406 1406 return NETDEV_TX_OK; 1407 1407 } 1408 1408 1409 - static int be_change_mtu(struct net_device *netdev, int new_mtu) 1410 - { 1411 - struct be_adapter *adapter = netdev_priv(netdev); 1412 - struct device *dev = &adapter->pdev->dev; 1413 - 1414 - if (new_mtu < BE_MIN_MTU || new_mtu > BE_MAX_MTU) { 1415 - dev_info(dev, "MTU must be between %d and %d bytes\n", 1416 - BE_MIN_MTU, BE_MAX_MTU); 1417 - return -EINVAL; 1418 - } 1419 - 1420 - dev_info(dev, "MTU changed from %d to %d bytes\n", 1421 - netdev->mtu, new_mtu); 1422 - netdev->mtu = new_mtu; 1423 - return 0; 1424 - } 1425 - 1426 1409 static inline bool be_in_all_promisc(struct be_adapter *adapter) 1427 1410 { 1428 1411 return (adapter->if_flags & BE_IF_FLAGS_ALL_PROMISCUOUS) == ··· 5199 5216 .ndo_start_xmit = be_xmit, 5200 5217 .ndo_set_rx_mode = be_set_rx_mode, 5201 5218 .ndo_set_mac_address = be_mac_addr_set, 5202 - .ndo_change_mtu = be_change_mtu, 5203 5219 .ndo_get_stats64 = be_get_stats64, 5204 5220 .ndo_validate_addr = eth_validate_addr, 5205 5221 .ndo_vlan_rx_add_vid = be_vlan_add_vid, ··· 5248 5266 netdev->netdev_ops = &be_netdev_ops; 5249 5267 5250 5268 netdev->ethtool_ops = &be_ethtool_ops; 5269 + 5270 + /* MTU range: 256 - 9000 */ 5271 + netdev->min_mtu = BE_MIN_MTU; 5272 + netdev->max_mtu = BE_MAX_MTU; 5251 5273 } 5252 5274 5253 5275 static void be_cleanup(struct be_adapter *adapter)
+3 -3
drivers/net/ethernet/ibm/ibmveth.c
··· 1349 1349 int i, rc; 1350 1350 int need_restart = 0; 1351 1351 1352 - if (new_mtu < IBMVETH_MIN_MTU) 1353 - return -EINVAL; 1354 - 1355 1352 for (i = 0; i < IBMVETH_NUM_BUFF_POOLS; i++) 1356 1353 if (new_mtu_oh <= adapter->rx_buff_pool[i].buff_size) 1357 1354 break; ··· 1547 1550 } else { 1548 1551 netdev->hw_features |= NETIF_F_TSO; 1549 1552 } 1553 + 1554 + netdev->min_mtu = IBMVETH_MIN_MTU; 1555 + netdev->min_mtu = ETH_MAX_MTU; 1550 1556 1551 1557 memcpy(netdev->dev_addr, mac_addr_p, ETH_ALEN); 1552 1558
+4 -12
drivers/net/ethernet/ibm/ibmvnic.c
··· 902 902 return 0; 903 903 } 904 904 905 - static int ibmvnic_change_mtu(struct net_device *netdev, int new_mtu) 906 - { 907 - struct ibmvnic_adapter *adapter = netdev_priv(netdev); 908 - 909 - if (new_mtu > adapter->req_mtu || new_mtu < adapter->min_mtu) 910 - return -EINVAL; 911 - 912 - netdev->mtu = new_mtu; 913 - return 0; 914 - } 915 - 916 905 static void ibmvnic_tx_timeout(struct net_device *dev) 917 906 { 918 907 struct ibmvnic_adapter *adapter = netdev_priv(dev); ··· 1018 1029 .ndo_set_rx_mode = ibmvnic_set_multi, 1019 1030 .ndo_set_mac_address = ibmvnic_set_mac, 1020 1031 .ndo_validate_addr = eth_validate_addr, 1021 - .ndo_change_mtu = ibmvnic_change_mtu, 1022 1032 .ndo_tx_timeout = ibmvnic_tx_timeout, 1023 1033 #ifdef CONFIG_NET_POLL_CONTROLLER 1024 1034 .ndo_poll_controller = ibmvnic_netpoll_controller, ··· 2626 2638 break; 2627 2639 case MIN_MTU: 2628 2640 adapter->min_mtu = be64_to_cpu(crq->query_capability.number); 2641 + netdev->min_mtu = adapter->min_mtu; 2629 2642 netdev_dbg(netdev, "min_mtu = %lld\n", adapter->min_mtu); 2630 2643 break; 2631 2644 case MAX_MTU: 2632 2645 adapter->max_mtu = be64_to_cpu(crq->query_capability.number); 2646 + netdev->max_mtu = adapter->max_mtu; 2633 2647 netdev_dbg(netdev, "max_mtu = %lld\n", adapter->max_mtu); 2634 2648 break; 2635 2649 case MAX_MULTICAST_FILTERS: ··· 3644 3654 goto task_failed; 3645 3655 3646 3656 netdev->real_num_tx_queues = adapter->req_tx_queues; 3657 + netdev->min_mtu = adapter->min_mtu; 3658 + netdev->max_mtu = adapter->max_mtu; 3647 3659 3648 3660 if (adapter->failover) { 3649 3661 adapter->failover = false;
+4 -8
drivers/net/ethernet/jme.c
··· 2357 2357 { 2358 2358 struct jme_adapter *jme = netdev_priv(netdev); 2359 2359 2360 - if (new_mtu == jme->old_mtu) 2361 - return 0; 2362 - 2363 - if (((new_mtu + ETH_HLEN) > MAX_ETHERNET_JUMBO_PACKET_SIZE) || 2364 - ((new_mtu) < IPV6_MIN_MTU)) 2365 - return -EINVAL; 2366 - 2367 - 2368 2360 netdev->mtu = new_mtu; 2369 2361 netdev_update_features(netdev); 2370 2362 ··· 3054 3062 NETIF_F_HW_VLAN_CTAG_RX; 3055 3063 if (using_dac) 3056 3064 netdev->features |= NETIF_F_HIGHDMA; 3065 + 3066 + /* MTU range: 1280 - 9202*/ 3067 + netdev->min_mtu = IPV6_MIN_MTU; 3068 + netdev->max_mtu = MAX_ETHERNET_JUMBO_PACKET_SIZE - ETH_HLEN; 3057 3069 3058 3070 SET_NETDEV_DEV(netdev, &pdev->dev); 3059 3071 pci_set_drvdata(pdev, netdev);
+4 -3
drivers/net/ethernet/marvell/mv643xx_eth.c
··· 2585 2585 { 2586 2586 struct mv643xx_eth_private *mp = netdev_priv(dev); 2587 2587 2588 - if (new_mtu < 64 || new_mtu > 9500) 2589 - return -EINVAL; 2590 - 2591 2588 dev->mtu = new_mtu; 2592 2589 mv643xx_eth_recalc_skb_size(mp); 2593 2590 tx_set_rate(mp, 1000000000, 16777216); ··· 3202 3205 3203 3206 dev->priv_flags |= IFF_UNICAST_FLT; 3204 3207 dev->gso_max_segs = MV643XX_MAX_TSO_SEGS; 3208 + 3209 + /* MTU range: 64 - 9500 */ 3210 + dev->min_mtu = 64; 3211 + dev->max_mtu = 9500; 3205 3212 3206 3213 SET_NETDEV_DEV(dev, &pdev->dev); 3207 3214
+3
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
··· 2284 2284 NETIF_F_HW_VLAN_CTAG_FILTER | NETIF_F_HW_TC; 2285 2285 dev->hw_features |= NETIF_F_HW_TC; 2286 2286 2287 + dev->min_mtu = 0; 2288 + dev->max_mtu = ETH_MAX_MTU; 2289 + 2287 2290 /* Each packet needs to have a Tx header (metadata) on top all other 2288 2291 * headers. 2289 2292 */
+3
drivers/net/ethernet/mellanox/mlxsw/switchx2.c
··· 994 994 dev->features |= NETIF_F_NETNS_LOCAL | NETIF_F_LLTX | NETIF_F_SG | 995 995 NETIF_F_VLAN_CHALLENGED; 996 996 997 + dev->min_mtu = 0; 998 + dev->max_mtu = ETH_MAX_MTU; 999 + 997 1000 /* Each packet needs to have a Tx header (metadata) on top all other 998 1001 * headers. 999 1002 */
+2 -9
drivers/net/ethernet/natsemi/ns83820.c
··· 1679 1679 } 1680 1680 } 1681 1681 1682 - static int ns83820_change_mtu(struct net_device *ndev, int new_mtu) 1683 - { 1684 - if (new_mtu > RX_BUF_SIZE) 1685 - return -EINVAL; 1686 - ndev->mtu = new_mtu; 1687 - return 0; 1688 - } 1689 - 1690 1682 static void ns83820_set_multicast(struct net_device *ndev) 1691 1683 { 1692 1684 struct ns83820 *dev = PRIV(ndev); ··· 1925 1933 .ndo_stop = ns83820_stop, 1926 1934 .ndo_start_xmit = ns83820_hard_start_xmit, 1927 1935 .ndo_get_stats = ns83820_get_stats, 1928 - .ndo_change_mtu = ns83820_change_mtu, 1929 1936 .ndo_set_rx_mode = ns83820_set_multicast, 1930 1937 .ndo_validate_addr = eth_validate_addr, 1931 1938 .ndo_set_mac_address = eth_mac_addr, ··· 2180 2189 /* Yes, we support dumb IP checksum on transmit */ 2181 2190 ndev->features |= NETIF_F_SG; 2182 2191 ndev->features |= NETIF_F_IP_CSUM; 2192 + 2193 + ndev->min_mtu = 0; 2183 2194 2184 2195 #ifdef NS83820_VLAN_ACCEL_SUPPORT 2185 2196 /* We also support hardware vlan acceleration */
-12
drivers/net/ethernet/qlogic/netxen/netxen_nic_hw.c
··· 987 987 int netxen_nic_change_mtu(struct net_device *netdev, int mtu) 988 988 { 989 989 struct netxen_adapter *adapter = netdev_priv(netdev); 990 - int max_mtu; 991 990 int rc = 0; 992 - 993 - if (NX_IS_REVISION_P3(adapter->ahw.revision_id)) 994 - max_mtu = P3_MAX_MTU; 995 - else 996 - max_mtu = P2_MAX_MTU; 997 - 998 - if (mtu > max_mtu) { 999 - printk(KERN_ERR "%s: mtu > %d bytes unsupported\n", 1000 - netdev->name, max_mtu); 1001 - return -EINVAL; 1002 - } 1003 991 1004 992 if (adapter->set_mtu) 1005 993 rc = adapter->set_mtu(adapter, mtu);
+7
drivers/net/ethernet/qlogic/netxen/netxen_nic_main.c
··· 1572 1572 adapter->physical_port = i; 1573 1573 } 1574 1574 1575 + /* MTU range: 0 - 8000 (P2) or 9600 (P3) */ 1576 + netdev->min_mtu = 0; 1577 + if (NX_IS_REVISION_P3(adapter->ahw.revision_id)) 1578 + netdev->max_mtu = P3_MAX_MTU; 1579 + else 1580 + netdev->max_mtu = P2_MAX_MTU; 1581 + 1575 1582 netxen_nic_clear_stats(adapter); 1576 1583 1577 1584 err = netxen_setup_intr(adapter);
+7
drivers/net/ethernet/qlogic/qlge/qlge_main.c
··· 4788 4788 ndev->ethtool_ops = &qlge_ethtool_ops; 4789 4789 ndev->watchdog_timeo = 10 * HZ; 4790 4790 4791 + /* MTU range: this driver only supports 1500 or 9000, so this only 4792 + * filters out values above or below, and we'll rely on 4793 + * qlge_change_mtu to make sure only 1500 or 9000 are allowed 4794 + */ 4795 + ndev->min_mtu = ETH_DATA_LEN; 4796 + ndev->max_mtu = 9000; 4797 + 4791 4798 err = register_netdev(ndev); 4792 4799 if (err) { 4793 4800 dev_err(&pdev->dev, "net device registration failed.\n");
+6 -7
drivers/net/ethernet/qualcomm/emac/emac.c
··· 239 239 /* Change the Maximum Transfer Unit (MTU) */ 240 240 static int emac_change_mtu(struct net_device *netdev, int new_mtu) 241 241 { 242 - unsigned int max_frame = new_mtu + ETH_HLEN + ETH_FCS_LEN + VLAN_HLEN; 243 242 struct emac_adapter *adpt = netdev_priv(netdev); 244 - 245 - if ((max_frame < EMAC_MIN_ETH_FRAME_SIZE) || 246 - (max_frame > EMAC_MAX_ETH_FRAME_SIZE)) { 247 - netdev_err(adpt->netdev, "error: invalid MTU setting\n"); 248 - return -EINVAL; 249 - } 250 243 251 244 netif_info(adpt, hw, adpt->netdev, 252 245 "changing MTU from %d to %d\n", netdev->mtu, ··· 671 678 672 679 netdev->vlan_features |= NETIF_F_SG | NETIF_F_HW_CSUM | 673 680 NETIF_F_TSO | NETIF_F_TSO6; 681 + 682 + /* MTU range: 46 - 9194 */ 683 + netdev->min_mtu = EMAC_MIN_ETH_FRAME_SIZE - 684 + (ETH_HLEN + ETH_FCS_LEN + VLAN_HLEN); 685 + netdev->max_mtu = EMAC_MAX_ETH_FRAME_SIZE - 686 + (ETH_HLEN + ETH_FCS_LEN + VLAN_HLEN); 674 687 675 688 INIT_WORK(&adpt->work_thread, emac_work_thread); 676 689
+4 -3
drivers/net/ethernet/xilinx/xilinx_axienet_main.c
··· 1034 1034 XAE_TRL_SIZE) > lp->rxmem) 1035 1035 return -EINVAL; 1036 1036 1037 - if ((new_mtu > XAE_JUMBO_MTU) || (new_mtu < 64)) 1038 - return -EINVAL; 1039 - 1040 1037 ndev->mtu = new_mtu; 1041 1038 1042 1039 return 0; ··· 1471 1474 ndev->features = NETIF_F_SG; 1472 1475 ndev->netdev_ops = &axienet_netdev_ops; 1473 1476 ndev->ethtool_ops = &axienet_ethtool_ops; 1477 + 1478 + /* MTU range: 64 - 9000 */ 1479 + ndev->min_mtu = 64; 1480 + ndev->max_mtu = XAE_JUMBO_MTU; 1474 1481 1475 1482 lp = netdev_priv(ndev); 1476 1483 lp->ndev = ndev;
-1
drivers/net/fddi/skfp/skfddi.c
··· 166 166 .ndo_stop = skfp_close, 167 167 .ndo_start_xmit = skfp_send_pkt, 168 168 .ndo_get_stats = skfp_ctl_get_stats, 169 - .ndo_change_mtu = fddi_change_mtu, 170 169 .ndo_set_rx_mode = skfp_ctl_set_multicast_list, 171 170 .ndo_set_mac_address = skfp_ctl_set_mac_address, 172 171 .ndo_do_ioctl = skfp_ioctl,
+2
drivers/net/fjes/fjes_main.c
··· 1316 1316 netdev->netdev_ops = &fjes_netdev_ops; 1317 1317 fjes_set_ethtool_ops(netdev); 1318 1318 netdev->mtu = fjes_support_mtu[3]; 1319 + netdev->min_mtu = fjes_support_mtu[0]; 1320 + netdev->max_mtu = fjes_support_mtu[3]; 1319 1321 netdev->flags |= IFF_BROADCAST; 1320 1322 netdev->features |= NETIF_F_HW_CSUM | NETIF_F_HW_VLAN_CTAG_FILTER; 1321 1323 }
+19 -29
drivers/net/geneve.c
··· 1034 1034 return geneve_xmit_skb(skb, dev, info); 1035 1035 } 1036 1036 1037 - static int __geneve_change_mtu(struct net_device *dev, int new_mtu, bool strict) 1037 + static int geneve_change_mtu(struct net_device *dev, int new_mtu) 1038 1038 { 1039 - struct geneve_dev *geneve = netdev_priv(dev); 1040 - /* The max_mtu calculation does not take account of GENEVE 1041 - * options, to avoid excluding potentially valid 1042 - * configurations. 1039 + /* Only possible if called internally, ndo_change_mtu path's new_mtu 1040 + * is guaranteed to be between dev->min_mtu and dev->max_mtu. 1043 1041 */ 1044 - int max_mtu = IP_MAX_MTU - GENEVE_BASE_HLEN - dev->hard_header_len; 1045 - 1046 - if (geneve->remote.sa.sa_family == AF_INET6) 1047 - max_mtu -= sizeof(struct ipv6hdr); 1048 - else 1049 - max_mtu -= sizeof(struct iphdr); 1050 - 1051 - if (new_mtu < 68) 1052 - return -EINVAL; 1053 - 1054 - if (new_mtu > max_mtu) { 1055 - if (strict) 1056 - return -EINVAL; 1057 - 1058 - new_mtu = max_mtu; 1059 - } 1042 + if (new_mtu > dev->max_mtu) 1043 + new_mtu = dev->max_mtu; 1060 1044 1061 1045 dev->mtu = new_mtu; 1062 1046 return 0; 1063 - } 1064 - 1065 - static int geneve_change_mtu(struct net_device *dev, int new_mtu) 1066 - { 1067 - return __geneve_change_mtu(dev, new_mtu, true); 1068 1047 } 1069 1048 1070 1049 static int geneve_fill_metadata_dst(struct net_device *dev, struct sk_buff *skb) ··· 1148 1169 1149 1170 dev->hw_features |= NETIF_F_SG | NETIF_F_HW_CSUM | NETIF_F_RXCSUM; 1150 1171 dev->hw_features |= NETIF_F_GSO_SOFTWARE; 1172 + 1173 + /* MTU range: 68 - (something less than 65535) */ 1174 + dev->min_mtu = ETH_MIN_MTU; 1175 + /* The max_mtu calculation does not take account of GENEVE 1176 + * options, to avoid excluding potentially valid 1177 + * configurations. This will be further reduced by IPvX hdr size. 1178 + */ 1179 + dev->max_mtu = IP_MAX_MTU - GENEVE_BASE_HLEN - dev->hard_header_len; 1151 1180 1152 1181 netif_keep_dst(dev); 1153 1182 dev->priv_flags &= ~IFF_TX_SKB_SHARING; ··· 1272 1285 1273 1286 /* make enough headroom for basic scenario */ 1274 1287 encap_len = GENEVE_BASE_HLEN + ETH_HLEN; 1275 - if (remote->sa.sa_family == AF_INET) 1288 + if (remote->sa.sa_family == AF_INET) { 1276 1289 encap_len += sizeof(struct iphdr); 1277 - else 1290 + dev->max_mtu -= sizeof(struct iphdr); 1291 + } else { 1278 1292 encap_len += sizeof(struct ipv6hdr); 1293 + dev->max_mtu -= sizeof(struct ipv6hdr); 1294 + } 1279 1295 dev->needed_headroom = encap_len + ETH_HLEN; 1280 1296 1281 1297 if (metadata) { ··· 1478 1488 /* openvswitch users expect packet sizes to be unrestricted, 1479 1489 * so set the largest MTU we can. 1480 1490 */ 1481 - err = __geneve_change_mtu(dev, IP_MAX_MTU, false); 1491 + err = geneve_change_mtu(dev, IP_MAX_MTU); 1482 1492 if (err) 1483 1493 goto err; 1484 1494
-1
drivers/net/hippi/rrunner.c
··· 68 68 .ndo_stop = rr_close, 69 69 .ndo_do_ioctl = rr_ioctl, 70 70 .ndo_start_xmit = rr_start_xmit, 71 - .ndo_change_mtu = hippi_change_mtu, 72 71 .ndo_set_mac_address = hippi_mac_addr, 73 72 }; 74 73
+2 -2
drivers/net/hyperv/hyperv_net.h
··· 606 606 } __packed; 607 607 608 608 609 - #define NETVSC_MTU 65536 610 - #define NETVSC_MTU_MIN 68 609 + #define NETVSC_MTU 65535 610 + #define NETVSC_MTU_MIN ETH_MIN_MTU 611 611 612 612 #define NETVSC_RECEIVE_BUFFER_SIZE (1024*1024*16) /* 16MB */ 613 613 #define NETVSC_RECEIVE_BUFFER_SIZE_LEGACY (1024*1024*15) /* 15MB */
+7 -7
drivers/net/hyperv/netvsc_drv.c
··· 872 872 struct netvsc_device *nvdev = ndevctx->nvdev; 873 873 struct hv_device *hdev = ndevctx->device_ctx; 874 874 struct netvsc_device_info device_info; 875 - int limit = ETH_DATA_LEN; 876 875 u32 num_chn; 877 876 int ret = 0; 878 877 879 878 if (ndevctx->start_remove || !nvdev || nvdev->destroy) 880 879 return -ENODEV; 881 - 882 - if (nvdev->nvsp_version >= NVSP_PROTOCOL_VERSION_2) 883 - limit = NETVSC_MTU - ETH_HLEN; 884 - 885 - if (mtu < NETVSC_MTU_MIN || mtu > limit) 886 - return -EINVAL; 887 880 888 881 ret = netvsc_close(ndev); 889 882 if (ret) ··· 1394 1401 nvdev = net_device_ctx->nvdev; 1395 1402 netif_set_real_num_tx_queues(net, nvdev->num_chn); 1396 1403 netif_set_real_num_rx_queues(net, nvdev->num_chn); 1404 + 1405 + /* MTU range: 68 - 1500 or 65521 */ 1406 + net->min_mtu = NETVSC_MTU_MIN; 1407 + if (nvdev->nvsp_version >= NVSP_PROTOCOL_VERSION_2) 1408 + net->max_mtu = NETVSC_MTU - ETH_HLEN; 1409 + else 1410 + net->max_mtu = ETH_DATA_LEN; 1397 1411 1398 1412 ret = register_netdev(net); 1399 1413 if (ret != 0) {
+2
drivers/net/macsec.c
··· 2970 2970 static void macsec_setup(struct net_device *dev) 2971 2971 { 2972 2972 ether_setup(dev); 2973 + dev->min_mtu = 0; 2974 + dev->max_mtu = ETH_MAX_MTU; 2973 2975 dev->priv_flags |= IFF_NO_QUEUE; 2974 2976 dev->netdev_ops = &macsec_netdev_ops; 2975 2977 dev->destructor = macsec_free_netdev;
+7 -1
drivers/net/macvlan.c
··· 777 777 { 778 778 struct macvlan_dev *vlan = netdev_priv(dev); 779 779 780 - if (new_mtu < 68 || vlan->lowerdev->mtu < new_mtu) 780 + if (vlan->lowerdev->mtu < new_mtu) 781 781 return -EINVAL; 782 782 dev->mtu = new_mtu; 783 783 return 0; ··· 1085 1085 { 1086 1086 ether_setup(dev); 1087 1087 1088 + dev->min_mtu = 0; 1089 + dev->max_mtu = ETH_MAX_MTU; 1088 1090 dev->priv_flags &= ~IFF_TX_SKB_SHARING; 1089 1091 netif_keep_dst(dev); 1090 1092 dev->priv_flags |= IFF_UNICAST_FLT; ··· 1298 1296 dev->mtu = lowerdev->mtu; 1299 1297 else if (dev->mtu > lowerdev->mtu) 1300 1298 return -EINVAL; 1299 + 1300 + /* MTU range: 68 - lowerdev->max_mtu */ 1301 + dev->min_mtu = ETH_MIN_MTU; 1302 + dev->max_mtu = lowerdev->max_mtu; 1301 1303 1302 1304 if (!tb[IFLA_ADDRESS]) 1303 1305 eth_hw_addr_random(dev);
+3
drivers/net/ntb_netdev.c
··· 433 433 ndev->netdev_ops = &ntb_netdev_ops; 434 434 ndev->ethtool_ops = &ntb_ethtool_ops; 435 435 436 + ndev->min_mtu = 0; 437 + ndev->max_mtu = ETH_MAX_MTU; 438 + 436 439 dev->qp = ntb_transport_create_queue(ndev, client_dev, 437 440 &ntb_netdev_handlers); 438 441 if (!dev->qp) {
+3 -12
drivers/net/rionet.c
··· 466 466 rnet->msg_enable = value; 467 467 } 468 468 469 - static int rionet_change_mtu(struct net_device *ndev, int new_mtu) 470 - { 471 - if ((new_mtu < 68) || (new_mtu > RIONET_MAX_MTU)) { 472 - printk(KERN_ERR "%s: Invalid MTU size %d\n", 473 - ndev->name, new_mtu); 474 - return -EINVAL; 475 - } 476 - ndev->mtu = new_mtu; 477 - return 0; 478 - } 479 - 480 469 static const struct ethtool_ops rionet_ethtool_ops = { 481 470 .get_drvinfo = rionet_get_drvinfo, 482 471 .get_msglevel = rionet_get_msglevel, ··· 477 488 .ndo_open = rionet_open, 478 489 .ndo_stop = rionet_close, 479 490 .ndo_start_xmit = rionet_start_xmit, 480 - .ndo_change_mtu = rionet_change_mtu, 481 491 .ndo_validate_addr = eth_validate_addr, 482 492 .ndo_set_mac_address = eth_mac_addr, 483 493 }; ··· 513 525 514 526 ndev->netdev_ops = &rionet_netdev_ops; 515 527 ndev->mtu = RIONET_MAX_MTU; 528 + /* MTU range: 68 - 4082 */ 529 + ndev->min_mtu = ETH_MIN_MTU; 530 + ndev->max_mtu = RIONET_MAX_MTU; 516 531 ndev->features = NETIF_F_LLTX; 517 532 SET_NETDEV_DEV(ndev, &mport->dev); 518 533 ndev->ethtool_ops = &rionet_ethtool_ops;
+5 -6
drivers/net/slip/slip.c
··· 561 561 { 562 562 struct slip *sl = netdev_priv(dev); 563 563 564 - if (new_mtu < 68 || new_mtu > 65534) 565 - return -EINVAL; 566 - 567 - if (new_mtu != dev->mtu) 568 - return sl_realloc_bufs(sl, new_mtu); 569 - return 0; 564 + return sl_realloc_bufs(sl, new_mtu); 570 565 } 571 566 572 567 /* Netdevice get statistics request */ ··· 657 662 dev->hard_header_len = 0; 658 663 dev->addr_len = 0; 659 664 dev->tx_queue_len = 10; 665 + 666 + /* MTU range: 68 - 65534 */ 667 + dev->min_mtu = 68; 668 + dev->max_mtu = 65534; 660 669 661 670 /* New-style flags. */ 662 671 dev->flags = IFF_NOARP|IFF_POINTOPOINT|IFF_MULTICAST;
+6 -14
drivers/net/tun.c
··· 925 925 */ 926 926 } 927 927 928 - #define MIN_MTU 68 929 - #define MAX_MTU 65535 930 - 931 - static int 932 - tun_net_change_mtu(struct net_device *dev, int new_mtu) 933 - { 934 - if (new_mtu < MIN_MTU || new_mtu + dev->hard_header_len > MAX_MTU) 935 - return -EINVAL; 936 - dev->mtu = new_mtu; 937 - return 0; 938 - } 939 - 940 928 static netdev_features_t tun_net_fix_features(struct net_device *dev, 941 929 netdev_features_t features) 942 930 { ··· 1002 1014 .ndo_open = tun_net_open, 1003 1015 .ndo_stop = tun_net_close, 1004 1016 .ndo_start_xmit = tun_net_xmit, 1005 - .ndo_change_mtu = tun_net_change_mtu, 1006 1017 .ndo_fix_features = tun_net_fix_features, 1007 1018 .ndo_select_queue = tun_select_queue, 1008 1019 #ifdef CONFIG_NET_POLL_CONTROLLER ··· 1016 1029 .ndo_open = tun_net_open, 1017 1030 .ndo_stop = tun_net_close, 1018 1031 .ndo_start_xmit = tun_net_xmit, 1019 - .ndo_change_mtu = tun_net_change_mtu, 1020 1032 .ndo_fix_features = tun_net_fix_features, 1021 1033 .ndo_set_rx_mode = tun_net_mclist, 1022 1034 .ndo_set_mac_address = eth_mac_addr, ··· 1048 1062 tun_flow_flush(tun); 1049 1063 } 1050 1064 1065 + #define MIN_MTU 68 1066 + #define MAX_MTU 65535 1067 + 1051 1068 /* Initialize net device. */ 1052 1069 static void tun_net_init(struct net_device *dev) 1053 1070 { ··· 1081 1092 1082 1093 break; 1083 1094 } 1095 + 1096 + dev->min_mtu = MIN_MTU; 1097 + dev->max_mtu = MAX_MTU - dev->hard_header_len; 1084 1098 } 1085 1099 1086 1100 /* Character device part */
+1 -3
drivers/net/usb/asix_devices.c
··· 1026 1026 1027 1027 netdev_dbg(dev->net, "ax88178_change_mtu() new_mtu=%d\n", new_mtu); 1028 1028 1029 - if (new_mtu <= 0 || ll_mtu > 16384) 1030 - return -EINVAL; 1031 - 1032 1029 if ((ll_mtu % dev->maxpacket) == 0) 1033 1030 return -EDOM; 1034 1031 ··· 1078 1081 1079 1082 dev->net->netdev_ops = &ax88178_netdev_ops; 1080 1083 dev->net->ethtool_ops = &ax88178_ethtool_ops; 1084 + dev->net->max_mtu = 16384 - (dev->net->hard_header_len + 4); 1081 1085 1082 1086 /* Blink LEDS so users know driver saw dongle */ 1083 1087 asix_sw_reset(dev, 0, 0);
+1 -3
drivers/net/usb/ax88179_178a.c
··· 907 907 struct usbnet *dev = netdev_priv(net); 908 908 u16 tmp16; 909 909 910 - if (new_mtu <= 0 || new_mtu > 4088) 911 - return -EINVAL; 912 - 913 910 net->mtu = new_mtu; 914 911 dev->hard_mtu = net->mtu + net->hard_header_len; 915 912 ··· 1263 1266 dev->net->netdev_ops = &ax88179_netdev_ops; 1264 1267 dev->net->ethtool_ops = &ax88179_ethtool_ops; 1265 1268 dev->net->needed_headroom = 8; 1269 + dev->net->max_mtu = 4088; 1266 1270 1267 1271 /* Initialize MII structure */ 1268 1272 dev->mii.dev = dev->net;
+2 -10
drivers/net/usb/cdc-phonet.c
··· 276 276 return -ENOIOCTLCMD; 277 277 } 278 278 279 - static int usbpn_set_mtu(struct net_device *dev, int new_mtu) 280 - { 281 - if ((new_mtu < PHONET_MIN_MTU) || (new_mtu > PHONET_MAX_MTU)) 282 - return -EINVAL; 283 - 284 - dev->mtu = new_mtu; 285 - return 0; 286 - } 287 - 288 279 static const struct net_device_ops usbpn_ops = { 289 280 .ndo_open = usbpn_open, 290 281 .ndo_stop = usbpn_close, 291 282 .ndo_start_xmit = usbpn_xmit, 292 283 .ndo_do_ioctl = usbpn_ioctl, 293 - .ndo_change_mtu = usbpn_set_mtu, 294 284 }; 295 285 296 286 static void usbpn_setup(struct net_device *dev) ··· 291 301 dev->type = ARPHRD_PHONET; 292 302 dev->flags = IFF_POINTOPOINT | IFF_NOARP; 293 303 dev->mtu = PHONET_MAX_MTU; 304 + dev->min_mtu = PHONET_MIN_MTU; 305 + dev->max_mtu = PHONET_MAX_MTU; 294 306 dev->hard_header_len = 1; 295 307 dev->dev_addr[0] = PN_MEDIA_USB; 296 308 dev->addr_len = 1;
+1 -4
drivers/net/usb/cdc_ncm.c
··· 740 740 int cdc_ncm_change_mtu(struct net_device *net, int new_mtu) 741 741 { 742 742 struct usbnet *dev = netdev_priv(net); 743 - int maxmtu = cdc_ncm_max_dgram_size(dev) - cdc_ncm_eth_hlen(dev); 744 - 745 - if (new_mtu <= 0 || new_mtu > maxmtu) 746 - return -EINVAL; 747 743 748 744 net->mtu = new_mtu; 749 745 cdc_ncm_set_dgram_size(dev, new_mtu + cdc_ncm_eth_hlen(dev)); ··· 905 909 906 910 /* must handle MTU changes */ 907 911 dev->net->netdev_ops = &cdc_ncm_netdev_ops; 912 + dev->net->max_mtu = cdc_ncm_max_dgram_size(dev) - cdc_ncm_eth_hlen(dev); 908 913 909 914 return 0; 910 915
+3 -5
drivers/net/usb/lan78xx.c
··· 1980 1980 int old_rx_urb_size = dev->rx_urb_size; 1981 1981 int ret; 1982 1982 1983 - if (new_mtu > MAX_SINGLE_PACKET_SIZE) 1984 - return -EINVAL; 1985 - 1986 - if (new_mtu <= 0) 1987 - return -EINVAL; 1988 1983 /* no second zero-length packet read wanted after mtu-sized packets */ 1989 1984 if ((ll_mtu % dev->maxpacket) == 0) 1990 1985 return -EDOM; ··· 3382 3387 3383 3388 if (netdev->mtu > (dev->hard_mtu - netdev->hard_header_len)) 3384 3389 netdev->mtu = dev->hard_mtu - netdev->hard_header_len; 3390 + 3391 + /* MTU range: 68 - 9000 */ 3392 + netdev->max_mtu = MAX_SINGLE_PACKET_SIZE; 3385 3393 3386 3394 dev->ep_blkin = (intf->cur_altsetting)->endpoint + 0; 3387 3395 dev->ep_blkout = (intf->cur_altsetting)->endpoint + 1;
+12 -3
drivers/net/usb/r8152.c
··· 4119 4119 break; 4120 4120 } 4121 4121 4122 - if (new_mtu < 68 || new_mtu > RTL8153_MAX_MTU) 4123 - return -EINVAL; 4124 - 4125 4122 ret = usb_autopm_get_interface(tp->intf); 4126 4123 if (ret < 0) 4127 4124 return ret; ··· 4307 4310 4308 4311 netdev->ethtool_ops = &ops; 4309 4312 netif_set_gso_max_size(netdev, RTL_LIMITED_TSO_SIZE); 4313 + 4314 + /* MTU range: 68 - 1500 or 9194 */ 4315 + netdev->min_mtu = ETH_MIN_MTU; 4316 + switch (tp->version) { 4317 + case RTL_VER_01: 4318 + case RTL_VER_02: 4319 + netdev->max_mtu = ETH_DATA_LEN; 4320 + break; 4321 + default: 4322 + netdev->max_mtu = RTL8153_MAX_MTU; 4323 + break; 4324 + } 4310 4325 4311 4326 tp->mii.dev = netdev; 4312 4327 tp->mii.mdio_read = read_mii_word;
+2 -11
drivers/net/usb/sierra_net.c
··· 165 165 166 166 /* Forward definitions */ 167 167 static void sierra_sync_timer(unsigned long syncdata); 168 - static int sierra_net_change_mtu(struct net_device *net, int new_mtu); 169 168 170 169 /* Our own net device operations structure */ 171 170 static const struct net_device_ops sierra_net_device_ops = { ··· 172 173 .ndo_stop = usbnet_stop, 173 174 .ndo_start_xmit = usbnet_start_xmit, 174 175 .ndo_tx_timeout = usbnet_tx_timeout, 175 - .ndo_change_mtu = sierra_net_change_mtu, 176 + .ndo_change_mtu = usbnet_change_mtu, 176 177 .ndo_set_mac_address = eth_mac_addr, 177 178 .ndo_validate_addr = eth_validate_addr, 178 179 }; ··· 621 622 .nway_reset = usbnet_nway_reset, 622 623 }; 623 624 624 - /* MTU can not be more than 1500 bytes, enforce it. */ 625 - static int sierra_net_change_mtu(struct net_device *net, int new_mtu) 626 - { 627 - if (new_mtu > SIERRA_NET_MAX_SUPPORTED_MTU) 628 - return -EINVAL; 629 - 630 - return usbnet_change_mtu(net, new_mtu); 631 - } 632 - 633 625 static int sierra_net_get_fw_attr(struct usbnet *dev, u16 *datap) 634 626 { 635 627 int result = 0; ··· 710 720 711 721 dev->net->hard_header_len += SIERRA_NET_HIP_EXT_HDR_LEN; 712 722 dev->hard_mtu = dev->net->mtu + dev->net->hard_header_len; 723 + dev->net->max_mtu = SIERRA_NET_MAX_SUPPORTED_MTU; 713 724 714 725 /* Set up the netdev */ 715 726 dev->net->flags |= IFF_NOARP;
+1 -3
drivers/net/usb/smsc75xx.c
··· 925 925 struct usbnet *dev = netdev_priv(netdev); 926 926 int ret; 927 927 928 - if (new_mtu > MAX_SINGLE_PACKET_SIZE) 929 - return -EINVAL; 930 - 931 928 ret = smsc75xx_set_rx_max_frame_length(dev, new_mtu + ETH_HLEN); 932 929 if (ret < 0) { 933 930 netdev_warn(dev->net, "Failed to set mac rx frame length\n"); ··· 1445 1448 dev->net->flags |= IFF_MULTICAST; 1446 1449 dev->net->hard_header_len += SMSC75XX_TX_OVERHEAD; 1447 1450 dev->hard_mtu = dev->net->mtu + dev->net->hard_header_len; 1451 + dev->net->max_mtu = MAX_SINGLE_PACKET_SIZE; 1448 1452 return 0; 1449 1453 } 1450 1454
+2 -2
drivers/net/usb/usbnet.c
··· 384 384 int old_hard_mtu = dev->hard_mtu; 385 385 int old_rx_urb_size = dev->rx_urb_size; 386 386 387 - if (new_mtu <= 0) 388 - return -EINVAL; 389 387 // no second zero-length packet read wanted after mtu-sized packets 390 388 if ((ll_mtu % dev->maxpacket) == 0) 391 389 return -EDOM; ··· 1667 1669 * bind() should set rx_urb_size in that case. 1668 1670 */ 1669 1671 dev->hard_mtu = net->mtu + net->hard_header_len; 1672 + net->min_mtu = 0; 1673 + net->max_mtu = ETH_MAX_MTU; 1670 1674 1671 1675 net->netdev_ops = &usbnet_netdev_ops; 1672 1676 net->watchdog_timeo = TX_TIMEOUT_JIFFIES;
+3 -14
drivers/net/veth.c
··· 23 23 #define DRV_NAME "veth" 24 24 #define DRV_VERSION "1.0" 25 25 26 - #define MIN_MTU 68 /* Min L3 MTU */ 27 - #define MAX_MTU 65535 /* Max L3 MTU (arbitrary) */ 28 - 29 26 struct pcpu_vstats { 30 27 u64 packets; 31 28 u64 bytes; ··· 213 216 return 0; 214 217 } 215 218 216 - static int is_valid_veth_mtu(int new_mtu) 219 + static int is_valid_veth_mtu(int mtu) 217 220 { 218 - return new_mtu >= MIN_MTU && new_mtu <= MAX_MTU; 219 - } 220 - 221 - static int veth_change_mtu(struct net_device *dev, int new_mtu) 222 - { 223 - if (!is_valid_veth_mtu(new_mtu)) 224 - return -EINVAL; 225 - dev->mtu = new_mtu; 226 - return 0; 221 + return mtu >= ETH_MIN_MTU && mtu <= ETH_MAX_MTU; 227 222 } 228 223 229 224 static int veth_dev_init(struct net_device *dev) ··· 289 300 .ndo_open = veth_open, 290 301 .ndo_stop = veth_close, 291 302 .ndo_start_xmit = veth_xmit, 292 - .ndo_change_mtu = veth_change_mtu, 293 303 .ndo_get_stats64 = veth_get_stats64, 294 304 .ndo_set_rx_mode = veth_set_multicast_list, 295 305 .ndo_set_mac_address = eth_mac_addr, ··· 325 337 NETIF_F_HW_VLAN_CTAG_RX | 326 338 NETIF_F_HW_VLAN_STAG_RX); 327 339 dev->destructor = veth_dev_free; 340 + dev->max_mtu = ETH_MAX_MTU; 328 341 329 342 dev->hw_features = VETH_FEATURES; 330 343 dev->hw_enc_features = VETH_FEATURES;
+10 -13
drivers/net/virtio_net.c
··· 1419 1419 .set_settings = virtnet_set_settings, 1420 1420 }; 1421 1421 1422 - #define MIN_MTU 68 1423 - #define MAX_MTU 65535 1424 - 1425 - static int virtnet_change_mtu(struct net_device *dev, int new_mtu) 1426 - { 1427 - if (new_mtu < MIN_MTU || new_mtu > MAX_MTU) 1428 - return -EINVAL; 1429 - dev->mtu = new_mtu; 1430 - return 0; 1431 - } 1432 - 1433 1422 static const struct net_device_ops virtnet_netdev = { 1434 1423 .ndo_open = virtnet_open, 1435 1424 .ndo_stop = virtnet_close, ··· 1426 1437 .ndo_validate_addr = eth_validate_addr, 1427 1438 .ndo_set_mac_address = virtnet_set_mac_address, 1428 1439 .ndo_set_rx_mode = virtnet_set_rx_mode, 1429 - .ndo_change_mtu = virtnet_change_mtu, 1430 1440 .ndo_get_stats64 = virtnet_stats, 1431 1441 .ndo_vlan_rx_add_vid = virtnet_vlan_rx_add_vid, 1432 1442 .ndo_vlan_rx_kill_vid = virtnet_vlan_rx_kill_vid, ··· 1736 1748 return true; 1737 1749 } 1738 1750 1751 + #define MIN_MTU ETH_MIN_MTU 1752 + #define MAX_MTU ETH_MAX_MTU 1753 + 1739 1754 static int virtnet_probe(struct virtio_device *vdev) 1740 1755 { 1741 1756 int i, err; ··· 1812 1821 1813 1822 dev->vlan_features = dev->features; 1814 1823 1824 + /* MTU range: 68 - 65535 */ 1825 + dev->min_mtu = MIN_MTU; 1826 + dev->max_mtu = MAX_MTU; 1827 + 1815 1828 /* Configuration may specify what MAC to use. Otherwise random. */ 1816 1829 if (virtio_has_feature(vdev, VIRTIO_NET_F_MAC)) 1817 1830 virtio_cread_bytes(vdev, ··· 1870 1875 mtu = virtio_cread16(vdev, 1871 1876 offsetof(struct virtio_net_config, 1872 1877 mtu)); 1873 - if (virtnet_change_mtu(dev, mtu)) 1878 + if (mtu < dev->min_mtu || mtu > dev->max_mtu) 1874 1879 __virtio_clear_bit(vdev, VIRTIO_NET_F_MTU); 1880 + else 1881 + dev->mtu = mtu; 1875 1882 } 1876 1883 1877 1884 if (vi->any_header_sg)
+4 -3
drivers/net/vmxnet3/vmxnet3_drv.c
··· 2969 2969 struct vmxnet3_adapter *adapter = netdev_priv(netdev); 2970 2970 int err = 0; 2971 2971 2972 - if (new_mtu < VMXNET3_MIN_MTU || new_mtu > VMXNET3_MAX_MTU) 2973 - return -EINVAL; 2974 - 2975 2972 netdev->mtu = new_mtu; 2976 2973 2977 2974 /* ··· 3424 3427 netdev->netdev_ops = &vmxnet3_netdev_ops; 3425 3428 vmxnet3_set_ethtool_ops(netdev); 3426 3429 netdev->watchdog_timeo = 5 * HZ; 3430 + 3431 + /* MTU range: 60 - 9000 */ 3432 + netdev->min_mtu = VMXNET3_MIN_MTU; 3433 + netdev->max_mtu = VMXNET3_MAX_MTU; 3427 3434 3428 3435 INIT_WORK(&adapter->work, vmxnet3_reset_work); 3429 3436 set_bit(VMXNET3_STATE_BIT_QUIESCED, &adapter->state);
+37 -33
drivers/net/vxlan.c
··· 2367 2367 { 2368 2368 } 2369 2369 2370 - static int __vxlan_change_mtu(struct net_device *dev, 2371 - struct net_device *lowerdev, 2372 - struct vxlan_rdst *dst, int new_mtu, bool strict) 2373 - { 2374 - int max_mtu = IP_MAX_MTU; 2375 - 2376 - if (lowerdev) 2377 - max_mtu = lowerdev->mtu; 2378 - 2379 - if (dst->remote_ip.sa.sa_family == AF_INET6) 2380 - max_mtu -= VXLAN6_HEADROOM; 2381 - else 2382 - max_mtu -= VXLAN_HEADROOM; 2383 - 2384 - if (new_mtu < 68) 2385 - return -EINVAL; 2386 - 2387 - if (new_mtu > max_mtu) { 2388 - if (strict) 2389 - return -EINVAL; 2390 - 2391 - new_mtu = max_mtu; 2392 - } 2393 - 2394 - dev->mtu = new_mtu; 2395 - return 0; 2396 - } 2397 - 2398 2370 static int vxlan_change_mtu(struct net_device *dev, int new_mtu) 2399 2371 { 2400 2372 struct vxlan_dev *vxlan = netdev_priv(dev); 2401 2373 struct vxlan_rdst *dst = &vxlan->default_dst; 2402 2374 struct net_device *lowerdev = __dev_get_by_index(vxlan->net, 2403 2375 dst->remote_ifindex); 2404 - return __vxlan_change_mtu(dev, lowerdev, dst, new_mtu, true); 2376 + bool use_ipv6 = false; 2377 + 2378 + if (dst->remote_ip.sa.sa_family == AF_INET6) 2379 + use_ipv6 = true; 2380 + 2381 + /* This check is different than dev->max_mtu, because it looks at 2382 + * the lowerdev->mtu, rather than the static dev->max_mtu 2383 + */ 2384 + if (lowerdev) { 2385 + int max_mtu = lowerdev->mtu - 2386 + (use_ipv6 ? VXLAN6_HEADROOM : VXLAN_HEADROOM); 2387 + if (new_mtu > max_mtu) 2388 + return -EINVAL; 2389 + } 2390 + 2391 + dev->mtu = new_mtu; 2392 + return 0; 2405 2393 } 2406 2394 2407 2395 static int vxlan_fill_metadata_dst(struct net_device *dev, struct sk_buff *skb) ··· 2783 2795 vxlan_ether_setup(dev); 2784 2796 } 2785 2797 2798 + /* MTU range: 68 - 65535 */ 2799 + dev->min_mtu = ETH_MIN_MTU; 2800 + dev->max_mtu = ETH_MAX_MTU; 2801 + 2786 2802 vxlan->net = src_net; 2787 2803 2788 2804 dst->remote_vni = conf->vni; ··· 2830 2838 #endif 2831 2839 2832 2840 if (!conf->mtu) 2833 - dev->mtu = lowerdev->mtu - (use_ipv6 ? VXLAN6_HEADROOM : VXLAN_HEADROOM); 2841 + dev->mtu = lowerdev->mtu - 2842 + (use_ipv6 ? VXLAN6_HEADROOM : VXLAN_HEADROOM); 2834 2843 2835 2844 needed_headroom = lowerdev->hard_header_len; 2836 2845 } else if (vxlan_addr_multicast(&dst->remote_ip)) { ··· 2840 2847 } 2841 2848 2842 2849 if (conf->mtu) { 2843 - err = __vxlan_change_mtu(dev, lowerdev, dst, conf->mtu, false); 2844 - if (err) 2845 - return err; 2850 + int max_mtu = ETH_MAX_MTU; 2851 + 2852 + if (lowerdev) 2853 + max_mtu = lowerdev->mtu; 2854 + 2855 + max_mtu -= (use_ipv6 ? VXLAN6_HEADROOM : VXLAN_HEADROOM); 2856 + 2857 + if (conf->mtu < dev->min_mtu || conf->mtu > dev->max_mtu) 2858 + return -EINVAL; 2859 + 2860 + dev->mtu = conf->mtu; 2861 + 2862 + if (conf->mtu > max_mtu) 2863 + dev->mtu = max_mtu; 2846 2864 } 2847 2865 2848 2866 if (use_ipv6 || conf->flags & VXLAN_F_COLLECT_METADATA)
-1
drivers/net/wan/c101.c
··· 302 302 static const struct net_device_ops c101_ops = { 303 303 .ndo_open = c101_open, 304 304 .ndo_stop = c101_close, 305 - .ndo_change_mtu = hdlc_change_mtu, 306 305 .ndo_start_xmit = hdlc_start_xmit, 307 306 .ndo_do_ioctl = c101_ioctl, 308 307 };
-1
drivers/net/wan/cosa.c
··· 432 432 static const struct net_device_ops cosa_ops = { 433 433 .ndo_open = cosa_net_open, 434 434 .ndo_stop = cosa_net_close, 435 - .ndo_change_mtu = hdlc_change_mtu, 436 435 .ndo_start_xmit = hdlc_start_xmit, 437 436 .ndo_do_ioctl = cosa_net_ioctl, 438 437 .ndo_tx_timeout = cosa_net_timeout,
-1
drivers/net/wan/dscc4.c
··· 887 887 static const struct net_device_ops dscc4_ops = { 888 888 .ndo_open = dscc4_open, 889 889 .ndo_stop = dscc4_close, 890 - .ndo_change_mtu = hdlc_change_mtu, 891 890 .ndo_start_xmit = hdlc_start_xmit, 892 891 .ndo_do_ioctl = dscc4_ioctl, 893 892 .ndo_tx_timeout = dscc4_tx_timeout,
-1
drivers/net/wan/farsync.c
··· 2394 2394 static const struct net_device_ops fst_ops = { 2395 2395 .ndo_open = fst_open, 2396 2396 .ndo_stop = fst_close, 2397 - .ndo_change_mtu = hdlc_change_mtu, 2398 2397 .ndo_start_xmit = hdlc_start_xmit, 2399 2398 .ndo_do_ioctl = fst_ioctl, 2400 2399 .ndo_tx_timeout = fst_tx_timeout,
-1
drivers/net/wan/fsl_ucc_hdlc.c
··· 992 992 static const struct net_device_ops uhdlc_ops = { 993 993 .ndo_open = uhdlc_open, 994 994 .ndo_stop = uhdlc_close, 995 - .ndo_change_mtu = hdlc_change_mtu, 996 995 .ndo_start_xmit = hdlc_start_xmit, 997 996 .ndo_do_ioctl = uhdlc_ioctl, 998 997 };
+2 -9
drivers/net/wan/hdlc.c
··· 46 46 47 47 static struct hdlc_proto *first_proto; 48 48 49 - int hdlc_change_mtu(struct net_device *dev, int new_mtu) 50 - { 51 - if ((new_mtu < 68) || (new_mtu > HDLC_MAX_MTU)) 52 - return -EINVAL; 53 - dev->mtu = new_mtu; 54 - return 0; 55 - } 56 - 57 49 static int hdlc_rcv(struct sk_buff *skb, struct net_device *dev, 58 50 struct packet_type *p, struct net_device *orig_dev) 59 51 { ··· 229 237 dev->flags = IFF_POINTOPOINT | IFF_NOARP; 230 238 dev->priv_flags = IFF_WAN_HDLC; 231 239 dev->mtu = HDLC_MAX_MTU; 240 + dev->min_mtu = 68; 241 + dev->max_mtu = HDLC_MAX_MTU; 232 242 dev->type = ARPHRD_RAWHDLC; 233 243 dev->hard_header_len = 16; 234 244 dev->addr_len = 0; ··· 347 353 MODULE_DESCRIPTION("HDLC support module"); 348 354 MODULE_LICENSE("GPL v2"); 349 355 350 - EXPORT_SYMBOL(hdlc_change_mtu); 351 356 EXPORT_SYMBOL(hdlc_start_xmit); 352 357 EXPORT_SYMBOL(hdlc_open); 353 358 EXPORT_SYMBOL(hdlc_close);
+2 -1
drivers/net/wan/hdlc_fr.c
··· 1053 1053 static const struct net_device_ops pvc_ops = { 1054 1054 .ndo_open = pvc_open, 1055 1055 .ndo_stop = pvc_close, 1056 - .ndo_change_mtu = hdlc_change_mtu, 1057 1056 .ndo_start_xmit = pvc_xmit, 1058 1057 .ndo_do_ioctl = pvc_ioctl, 1059 1058 }; ··· 1095 1096 } 1096 1097 dev->netdev_ops = &pvc_ops; 1097 1098 dev->mtu = HDLC_MAX_MTU; 1099 + dev->min_mtu = 68; 1100 + dev->max_mtu = HDLC_MAX_MTU; 1098 1101 dev->priv_flags |= IFF_NO_QUEUE; 1099 1102 dev->ml_priv = pvc; 1100 1103
-1
drivers/net/wan/hostess_sv11.c
··· 180 180 static const struct net_device_ops hostess_ops = { 181 181 .ndo_open = hostess_open, 182 182 .ndo_stop = hostess_close, 183 - .ndo_change_mtu = hdlc_change_mtu, 184 183 .ndo_start_xmit = hdlc_start_xmit, 185 184 .ndo_do_ioctl = hostess_ioctl, 186 185 };
-1
drivers/net/wan/ixp4xx_hss.c
··· 1321 1321 static const struct net_device_ops hss_hdlc_ops = { 1322 1322 .ndo_open = hss_hdlc_open, 1323 1323 .ndo_stop = hss_hdlc_close, 1324 - .ndo_change_mtu = hdlc_change_mtu, 1325 1324 .ndo_start_xmit = hdlc_start_xmit, 1326 1325 .ndo_do_ioctl = hss_hdlc_ioctl, 1327 1326 };
-1
drivers/net/wan/lmc/lmc_main.c
··· 808 808 static const struct net_device_ops lmc_ops = { 809 809 .ndo_open = lmc_open, 810 810 .ndo_stop = lmc_close, 811 - .ndo_change_mtu = hdlc_change_mtu, 812 811 .ndo_start_xmit = hdlc_start_xmit, 813 812 .ndo_do_ioctl = lmc_ioctl, 814 813 .ndo_tx_timeout = lmc_driver_timeout,
-1
drivers/net/wan/n2.c
··· 330 330 static const struct net_device_ops n2_ops = { 331 331 .ndo_open = n2_open, 332 332 .ndo_stop = n2_close, 333 - .ndo_change_mtu = hdlc_change_mtu, 334 333 .ndo_start_xmit = hdlc_start_xmit, 335 334 .ndo_do_ioctl = n2_ioctl, 336 335 };
-1
drivers/net/wan/pc300too.c
··· 291 291 static const struct net_device_ops pc300_ops = { 292 292 .ndo_open = pc300_open, 293 293 .ndo_stop = pc300_close, 294 - .ndo_change_mtu = hdlc_change_mtu, 295 294 .ndo_start_xmit = hdlc_start_xmit, 296 295 .ndo_do_ioctl = pc300_ioctl, 297 296 };
-1
drivers/net/wan/pci200syn.c
··· 270 270 static const struct net_device_ops pci200_ops = { 271 271 .ndo_open = pci200_open, 272 272 .ndo_stop = pci200_close, 273 - .ndo_change_mtu = hdlc_change_mtu, 274 273 .ndo_start_xmit = hdlc_start_xmit, 275 274 .ndo_do_ioctl = pci200_ioctl, 276 275 };
-1
drivers/net/wan/sealevel.c
··· 174 174 static const struct net_device_ops sealevel_ops = { 175 175 .ndo_open = sealevel_open, 176 176 .ndo_stop = sealevel_close, 177 - .ndo_change_mtu = hdlc_change_mtu, 178 177 .ndo_start_xmit = hdlc_start_xmit, 179 178 .ndo_do_ioctl = sealevel_ioctl, 180 179 };
-1
drivers/net/wan/wanxl.c
··· 551 551 static const struct net_device_ops wanxl_ops = { 552 552 .ndo_open = wanxl_open, 553 553 .ndo_stop = wanxl_close, 554 - .ndo_change_mtu = hdlc_change_mtu, 555 554 .ndo_start_xmit = hdlc_start_xmit, 556 555 .ndo_do_ioctl = wanxl_ioctl, 557 556 .ndo_get_stats = wanxl_get_stats,
+2 -3
drivers/net/wan/x25_asy.c
··· 124 124 unsigned char *xbuff, *rbuff; 125 125 int len; 126 126 127 - if (newmtu > 65534) 128 - return -EINVAL; 129 - 130 127 len = 2 * newmtu; 131 128 xbuff = kmalloc(len + 4, GFP_ATOMIC); 132 129 rbuff = kmalloc(len + 4, GFP_ATOMIC); ··· 748 751 */ 749 752 750 753 dev->mtu = SL_MTU; 754 + dev->min_mtu = 0; 755 + dev->max_mtu = 65534; 751 756 dev->netdev_ops = &x25_asy_netdev_ops; 752 757 dev->watchdog_timeo = HZ*20; 753 758 dev->hard_header_len = 0;
+2 -20
drivers/net/wimax/i2400m/netdev.c
··· 395 395 396 396 397 397 static 398 - int i2400m_change_mtu(struct net_device *net_dev, int new_mtu) 399 - { 400 - int result; 401 - struct i2400m *i2400m = net_dev_to_i2400m(net_dev); 402 - struct device *dev = i2400m_dev(i2400m); 403 - 404 - if (new_mtu >= I2400M_MAX_MTU) { 405 - dev_err(dev, "Cannot change MTU to %d (max is %d)\n", 406 - new_mtu, I2400M_MAX_MTU); 407 - result = -EINVAL; 408 - } else { 409 - net_dev->mtu = new_mtu; 410 - result = 0; 411 - } 412 - return result; 413 - } 414 - 415 - 416 - static 417 398 void i2400m_tx_timeout(struct net_device *net_dev) 418 399 { 419 400 /* ··· 571 590 .ndo_stop = i2400m_stop, 572 591 .ndo_start_xmit = i2400m_hard_start_xmit, 573 592 .ndo_tx_timeout = i2400m_tx_timeout, 574 - .ndo_change_mtu = i2400m_change_mtu, 575 593 }; 576 594 577 595 static void i2400m_get_drvinfo(struct net_device *net_dev, ··· 601 621 d_fnstart(3, NULL, "(net_dev %p)\n", net_dev); 602 622 ether_setup(net_dev); 603 623 net_dev->mtu = I2400M_MAX_MTU; 624 + net_dev->min_mtu = 0; 625 + net_dev->max_mtu = I2400M_MAX_MTU; 604 626 net_dev->tx_queue_len = I2400M_TX_QLEN; 605 627 net_dev->features = 606 628 NETIF_F_VLAN_CHALLENGED
+1 -16
drivers/net/wireless/ath/wil6210/netdev.c
··· 41 41 return wil_down(wil); 42 42 } 43 43 44 - static int wil_change_mtu(struct net_device *ndev, int new_mtu) 45 - { 46 - struct wil6210_priv *wil = ndev_to_wil(ndev); 47 - 48 - if (new_mtu < 68 || new_mtu > mtu_max) { 49 - wil_err(wil, "invalid MTU %d\n", new_mtu); 50 - return -EINVAL; 51 - } 52 - 53 - wil_dbg_misc(wil, "change MTU %d -> %d\n", ndev->mtu, new_mtu); 54 - ndev->mtu = new_mtu; 55 - 56 - return 0; 57 - } 58 - 59 44 static int wil_do_ioctl(struct net_device *ndev, struct ifreq *ifr, int cmd) 60 45 { 61 46 struct wil6210_priv *wil = ndev_to_wil(ndev); ··· 54 69 .ndo_start_xmit = wil_start_xmit, 55 70 .ndo_set_mac_address = eth_mac_addr, 56 71 .ndo_validate_addr = eth_validate_addr, 57 - .ndo_change_mtu = wil_change_mtu, 58 72 .ndo_do_ioctl = wil_do_ioctl, 59 73 }; 60 74 ··· 110 126 static void wil_dev_setup(struct net_device *dev) 111 127 { 112 128 ether_setup(dev); 129 + dev->max_mtu = mtu_max; 113 130 dev->tx_queue_len = WIL_TX_Q_LEN_DEFAULT; 114 131 } 115 132
+4 -9
drivers/net/wireless/atmel/atmel.c
··· 1295 1295 return &priv->wstats; 1296 1296 } 1297 1297 1298 - static int atmel_change_mtu(struct net_device *dev, int new_mtu) 1299 - { 1300 - if ((new_mtu < 68) || (new_mtu > 2312)) 1301 - return -EINVAL; 1302 - dev->mtu = new_mtu; 1303 - return 0; 1304 - } 1305 - 1306 1298 static int atmel_set_mac_address(struct net_device *dev, void *p) 1307 1299 { 1308 1300 struct sockaddr *addr = p; ··· 1498 1506 static const struct net_device_ops atmel_netdev_ops = { 1499 1507 .ndo_open = atmel_open, 1500 1508 .ndo_stop = atmel_close, 1501 - .ndo_change_mtu = atmel_change_mtu, 1502 1509 .ndo_set_mac_address = atmel_set_mac_address, 1503 1510 .ndo_start_xmit = start_tx, 1504 1511 .ndo_do_ioctl = atmel_ioctl, ··· 1590 1599 dev->wireless_handlers = &atmel_handler_def; 1591 1600 dev->irq = irq; 1592 1601 dev->base_addr = port; 1602 + 1603 + /* MTU range: 68 - 2312 */ 1604 + dev->min_mtu = 68; 1605 + dev->max_mtu = MAX_WIRELESS_BODY - ETH_FCS_LEN; 1593 1606 1594 1607 SET_NETDEV_DEV(dev, sys_dev); 1595 1608
+3 -11
drivers/net/wireless/cisco/airo.c
··· 2329 2329 return 0; 2330 2330 } 2331 2331 2332 - static int airo_change_mtu(struct net_device *dev, int new_mtu) 2333 - { 2334 - if ((new_mtu < 68) || (new_mtu > 2400)) 2335 - return -EINVAL; 2336 - dev->mtu = new_mtu; 2337 - return 0; 2338 - } 2339 - 2340 2332 static LIST_HEAD(airo_devices); 2341 2333 2342 2334 static void add_airo_dev(struct airo_info *ai) ··· 2648 2656 .ndo_get_stats = airo_get_stats, 2649 2657 .ndo_set_mac_address = airo_set_mac_address, 2650 2658 .ndo_do_ioctl = airo_ioctl, 2651 - .ndo_change_mtu = airo_change_mtu, 2652 2659 }; 2653 2660 2654 2661 static void wifi_setup(struct net_device *dev) ··· 2659 2668 dev->type = ARPHRD_IEEE80211; 2660 2669 dev->hard_header_len = ETH_HLEN; 2661 2670 dev->mtu = AIRO_DEF_MTU; 2671 + dev->min_mtu = 68; 2672 + dev->max_mtu = MIC_MSGLEN_MAX; 2662 2673 dev->addr_len = ETH_ALEN; 2663 2674 dev->tx_queue_len = 100; 2664 2675 ··· 2747 2754 .ndo_set_rx_mode = airo_set_multicast_list, 2748 2755 .ndo_set_mac_address = airo_set_mac_address, 2749 2756 .ndo_do_ioctl = airo_ioctl, 2750 - .ndo_change_mtu = airo_change_mtu, 2751 2757 .ndo_validate_addr = eth_validate_addr, 2752 2758 }; 2753 2759 ··· 2758 2766 .ndo_set_rx_mode = airo_set_multicast_list, 2759 2767 .ndo_set_mac_address = airo_set_mac_address, 2760 2768 .ndo_do_ioctl = airo_ioctl, 2761 - .ndo_change_mtu = airo_change_mtu, 2762 2769 .ndo_validate_addr = eth_validate_addr, 2763 2770 }; 2764 2771 ··· 2813 2822 dev->irq = irq; 2814 2823 dev->base_addr = port; 2815 2824 dev->priv_flags &= ~IFF_TX_SKB_SHARING; 2825 + dev->max_mtu = MIC_MSGLEN_MAX; 2816 2826 2817 2827 SET_NETDEV_DEV(dev, dmdev); 2818 2828
+2 -1
drivers/net/wireless/intel/ipw2x00/ipw2100.c
··· 6035 6035 .ndo_open = ipw2100_open, 6036 6036 .ndo_stop = ipw2100_close, 6037 6037 .ndo_start_xmit = libipw_xmit, 6038 - .ndo_change_mtu = libipw_change_mtu, 6039 6038 .ndo_tx_timeout = ipw2100_tx_timeout, 6040 6039 .ndo_set_mac_address = ipw2100_set_address, 6041 6040 .ndo_validate_addr = eth_validate_addr, ··· 6070 6071 dev->wireless_data = &priv->wireless_data; 6071 6072 dev->watchdog_timeo = 3 * HZ; 6072 6073 dev->irq = 0; 6074 + dev->min_mtu = 68; 6075 + dev->max_mtu = LIBIPW_DATA_LEN; 6073 6076 6074 6077 /* NOTE: We don't use the wireless_handlers hook 6075 6078 * in dev as the system will start throwing WX requests
+6 -2
drivers/net/wireless/intel/ipw2x00/ipw2200.c
··· 11561 11561 .ndo_open = ipw_prom_open, 11562 11562 .ndo_stop = ipw_prom_stop, 11563 11563 .ndo_start_xmit = ipw_prom_hard_start_xmit, 11564 - .ndo_change_mtu = libipw_change_mtu, 11565 11564 .ndo_set_mac_address = eth_mac_addr, 11566 11565 .ndo_validate_addr = eth_validate_addr, 11567 11566 }; ··· 11585 11586 11586 11587 priv->prom_net_dev->type = ARPHRD_IEEE80211_RADIOTAP; 11587 11588 priv->prom_net_dev->netdev_ops = &ipw_prom_netdev_ops; 11589 + 11590 + priv->prom_net_dev->min_mtu = 68; 11591 + priv->prom_net_dev->max_mtu = LIBIPW_DATA_LEN; 11588 11592 11589 11593 priv->prom_priv->ieee->iw_mode = IW_MODE_MONITOR; 11590 11594 SET_NETDEV_DEV(priv->prom_net_dev, &priv->pci_dev->dev); ··· 11621 11619 .ndo_set_rx_mode = ipw_net_set_multicast_list, 11622 11620 .ndo_set_mac_address = ipw_net_set_mac_address, 11623 11621 .ndo_start_xmit = libipw_xmit, 11624 - .ndo_change_mtu = libipw_change_mtu, 11625 11622 .ndo_validate_addr = eth_validate_addr, 11626 11623 }; 11627 11624 ··· 11729 11728 net_dev->wireless_data = &priv->wireless_data; 11730 11729 net_dev->wireless_handlers = &ipw_wx_handler_def; 11731 11730 net_dev->ethtool_ops = &ipw_ethtool_ops; 11731 + 11732 + net_dev->min_mtu = 68; 11733 + net_dev->max_mtu = LIBIPW_DATA_LEN; 11732 11734 11733 11735 err = sysfs_create_group(&pdev->dev.kobj, &ipw_attribute_group); 11734 11736 if (err) {
-1
drivers/net/wireless/intel/ipw2x00/libipw.h
··· 948 948 /* libipw.c */ 949 949 void free_libipw(struct net_device *dev, int monitor); 950 950 struct net_device *alloc_libipw(int sizeof_priv, int monitor); 951 - int libipw_change_mtu(struct net_device *dev, int new_mtu); 952 951 953 952 void libipw_networks_age(struct libipw_device *ieee, unsigned long age_secs); 954 953
-9
drivers/net/wireless/intel/ipw2x00/libipw_module.c
··· 118 118 &ieee->network_free_list); 119 119 } 120 120 121 - int libipw_change_mtu(struct net_device *dev, int new_mtu) 122 - { 123 - if ((new_mtu < 68) || (new_mtu > LIBIPW_DATA_LEN)) 124 - return -EINVAL; 125 - dev->mtu = new_mtu; 126 - return 0; 127 - } 128 - EXPORT_SYMBOL(libipw_change_mtu); 129 - 130 121 struct net_device *alloc_libipw(int sizeof_priv, int monitor) 131 122 { 132 123 struct libipw_device *ieee;
+2 -13
drivers/net/wireless/intersil/hostap/hostap_main.c
··· 765 765 } 766 766 767 767 768 - static int prism2_change_mtu(struct net_device *dev, int new_mtu) 769 - { 770 - if (new_mtu < PRISM2_MIN_MTU || new_mtu > PRISM2_MAX_MTU) 771 - return -EINVAL; 772 - 773 - dev->mtu = new_mtu; 774 - return 0; 775 - } 776 - 777 - 778 768 static void prism2_tx_timeout(struct net_device *dev) 779 769 { 780 770 struct hostap_interface *iface; ··· 803 813 .ndo_do_ioctl = hostap_ioctl, 804 814 .ndo_set_mac_address = prism2_set_mac_address, 805 815 .ndo_set_rx_mode = hostap_set_multicast_list, 806 - .ndo_change_mtu = prism2_change_mtu, 807 816 .ndo_tx_timeout = prism2_tx_timeout, 808 817 .ndo_validate_addr = eth_validate_addr, 809 818 }; ··· 815 826 .ndo_do_ioctl = hostap_ioctl, 816 827 .ndo_set_mac_address = prism2_set_mac_address, 817 828 .ndo_set_rx_mode = hostap_set_multicast_list, 818 - .ndo_change_mtu = prism2_change_mtu, 819 829 .ndo_tx_timeout = prism2_tx_timeout, 820 830 .ndo_validate_addr = eth_validate_addr, 821 831 }; ··· 827 839 .ndo_do_ioctl = hostap_ioctl, 828 840 .ndo_set_mac_address = prism2_set_mac_address, 829 841 .ndo_set_rx_mode = hostap_set_multicast_list, 830 - .ndo_change_mtu = prism2_change_mtu, 831 842 .ndo_tx_timeout = prism2_tx_timeout, 832 843 .ndo_validate_addr = eth_validate_addr, 833 844 }; ··· 838 851 839 852 iface = netdev_priv(dev); 840 853 ether_setup(dev); 854 + dev->min_mtu = PRISM2_MIN_MTU; 855 + dev->max_mtu = PRISM2_MAX_MTU; 841 856 dev->priv_flags &= ~IFF_TX_SKB_SHARING; 842 857 843 858 /* kernel callbacks */
+3 -3
drivers/net/wireless/intersil/orinoco/main.c
··· 322 322 { 323 323 struct orinoco_private *priv = ndev_priv(dev); 324 324 325 - if ((new_mtu < ORINOCO_MIN_MTU) || (new_mtu > ORINOCO_MAX_MTU)) 326 - return -EINVAL; 327 - 328 325 /* MTU + encapsulation + header length */ 329 326 if ((new_mtu + ENCAPS_OVERHEAD + sizeof(struct ieee80211_hdr)) > 330 327 (priv->nicbuf_size - ETH_HLEN)) ··· 2284 2287 2285 2288 dev->base_addr = base_addr; 2286 2289 dev->irq = irq; 2290 + 2291 + dev->min_mtu = ORINOCO_MIN_MTU; 2292 + dev->max_mtu = ORINOCO_MAX_MTU; 2287 2293 2288 2294 SET_NETDEV_DEV(dev, priv->dev); 2289 2295 ret = register_netdev(dev);
+4 -1
drivers/net/xen-netback/interface.c
··· 302 302 static int xenvif_change_mtu(struct net_device *dev, int mtu) 303 303 { 304 304 struct xenvif *vif = netdev_priv(dev); 305 - int max = vif->can_sg ? 65535 - VLAN_ETH_HLEN : ETH_DATA_LEN; 305 + int max = vif->can_sg ? ETH_MAX_MTU - VLAN_ETH_HLEN : ETH_DATA_LEN; 306 306 307 307 if (mtu > max) 308 308 return -EINVAL; ··· 470 470 dev->ethtool_ops = &xenvif_ethtool_ops; 471 471 472 472 dev->tx_queue_len = XENVIF_QUEUE_LENGTH; 473 + 474 + dev->min_mtu = 0; 475 + dev->max_mtu = ETH_MAX_MTU - VLAN_ETH_HLEN; 473 476 474 477 /* 475 478 * Initialise a dummy MAC address. We choose the numerically
+2
drivers/net/xen-netfront.c
··· 1329 1329 netdev->features |= netdev->hw_features; 1330 1330 1331 1331 netdev->ethtool_ops = &xennet_ethtool_ops; 1332 + netdev->min_mtu = 0; 1333 + netdev->max_mtu = XEN_NETIF_MAX_TX_SIZE; 1332 1334 SET_NETDEV_DEV(netdev, &dev->dev); 1333 1335 1334 1336 np->netdev = netdev;
+2 -3
drivers/s390/net/ctcm_main.c
··· 1032 1032 struct ctcm_priv *priv; 1033 1033 int max_bufsize; 1034 1034 1035 - if (new_mtu < 576 || new_mtu > 65527) 1036 - return -EINVAL; 1037 - 1038 1035 priv = dev->ml_priv; 1039 1036 max_bufsize = priv->channel[CTCM_READ]->max_bufsize; 1040 1037 ··· 1120 1123 dev->type = ARPHRD_SLIP; 1121 1124 dev->tx_queue_len = 100; 1122 1125 dev->flags = IFF_POINTOPOINT | IFF_NOARP; 1126 + dev->min_mtu = 576; 1127 + dev->max_mtu = 65527; 1123 1128 } 1124 1129 1125 1130 /*
+2 -22
drivers/s390/net/netiucv.c
··· 1428 1428 return &priv->stats; 1429 1429 } 1430 1430 1431 - /** 1432 - * netiucv_change_mtu 1433 - * @dev: Pointer to interface struct. 1434 - * @new_mtu: The new MTU to use for this interface. 1435 - * 1436 - * Sets MTU of an interface. 1437 - * 1438 - * Returns 0 on success, -EINVAL if MTU is out of valid range. 1439 - * (valid range is 576 .. NETIUCV_MTU_MAX). 1440 - */ 1441 - static int netiucv_change_mtu(struct net_device * dev, int new_mtu) 1442 - { 1443 - IUCV_DBF_TEXT(trace, 3, __func__); 1444 - if (new_mtu < 576 || new_mtu > NETIUCV_MTU_MAX) { 1445 - IUCV_DBF_TEXT(setup, 2, "given MTU out of valid range\n"); 1446 - return -EINVAL; 1447 - } 1448 - dev->mtu = new_mtu; 1449 - return 0; 1450 - } 1451 - 1452 1431 /* 1453 1432 * attributes in sysfs 1454 1433 */ ··· 1965 1986 .ndo_stop = netiucv_close, 1966 1987 .ndo_get_stats = netiucv_stats, 1967 1988 .ndo_start_xmit = netiucv_tx, 1968 - .ndo_change_mtu = netiucv_change_mtu, 1969 1989 }; 1970 1990 1971 1991 static void netiucv_setup_netdevice(struct net_device *dev) 1972 1992 { 1973 1993 dev->mtu = NETIUCV_MTU_DEFAULT; 1994 + dev->min_mtu = 576; 1995 + dev->max_mtu = NETIUCV_MTU_MAX; 1974 1996 dev->destructor = netiucv_free_netdevice; 1975 1997 dev->hard_header_len = NETIUCV_HDRLEN; 1976 1998 dev->addr_len = 0;
-4
drivers/s390/net/qeth_core_main.c
··· 4202 4202 sprintf(dbf_text, "%8x", new_mtu); 4203 4203 QETH_CARD_TEXT(card, 4, dbf_text); 4204 4204 4205 - if (new_mtu < 64) 4206 - return -EINVAL; 4207 - if (new_mtu > 65535) 4208 - return -EINVAL; 4209 4205 if ((!qeth_is_supported(card, IPA_IP_FRAGMENTATION)) && 4210 4206 (!qeth_mtu_is_valid(card, new_mtu))) 4211 4207 return -EINVAL;
+2
drivers/s390/net/qeth_l2_main.c
··· 1107 1107 card->dev->ml_priv = card; 1108 1108 card->dev->watchdog_timeo = QETH_TX_TIMEOUT; 1109 1109 card->dev->mtu = card->info.initial_mtu; 1110 + card->dev->min_mtu = 64; 1111 + card->dev->max_mtu = ETH_MAX_MTU; 1110 1112 card->dev->netdev_ops = &qeth_l2_netdev_ops; 1111 1113 card->dev->ethtool_ops = 1112 1114 (card->info.type != QETH_CARD_TYPE_OSN) ?
+2
drivers/s390/net/qeth_l3_main.c
··· 3140 3140 card->dev->ml_priv = card; 3141 3141 card->dev->watchdog_timeo = QETH_TX_TIMEOUT; 3142 3142 card->dev->mtu = card->info.initial_mtu; 3143 + card->dev->min_mtu = 64; 3144 + card->dev->max_mtu = ETH_MAX_MTU; 3143 3145 card->dev->ethtool_ops = &qeth_l3_ethtool_ops; 3144 3146 card->dev->features |= NETIF_F_HW_VLAN_CTAG_TX | 3145 3147 NETIF_F_HW_VLAN_CTAG_RX |
+4 -6
drivers/staging/unisys/include/iochannel.h
··· 113 113 114 114 }; 115 115 116 - #define ETH_HEADER_SIZE 14 /* size of ethernet header */ 117 - 118 116 #define ETH_MIN_DATA_SIZE 46 /* minimum eth data size */ 119 - #define ETH_MIN_PACKET_SIZE (ETH_HEADER_SIZE + ETH_MIN_DATA_SIZE) 117 + #define ETH_MIN_PACKET_SIZE (ETH_HLEN + ETH_MIN_DATA_SIZE) 120 118 121 - #define ETH_MAX_MTU 16384 /* maximum data size */ 119 + #define VISOR_ETH_MAX_MTU 16384 /* maximum data size */ 122 120 123 121 #ifndef MAX_MACADDR_LEN 124 122 #define MAX_MACADDR_LEN 6 /* number of bytes in MAC address */ ··· 286 288 int len; /* full length of data in the packet */ 287 289 int num_frags; /* number of fragments in frags containing data */ 288 290 struct phys_info frags[MAX_PHYS_INFO]; /* physical page information */ 289 - char ethhdr[ETH_HEADER_SIZE]; /* the ethernet header */ 291 + char ethhdr[ETH_HLEN]; /* the ethernet header */ 290 292 struct { 291 293 /* these are needed for csum at uisnic end */ 292 294 u8 valid; /* 1 = struct is valid - else ignore */ ··· 321 323 */ 322 324 #define RCVPOST_BUF_SIZE 4032 323 325 #define MAX_NET_RCV_CHAIN \ 324 - ((ETH_MAX_MTU + ETH_HEADER_SIZE + RCVPOST_BUF_SIZE - 1) \ 326 + ((VISOR_ETH_MAX_MTU + ETH_HLEN + RCVPOST_BUF_SIZE - 1) \ 325 327 / RCVPOST_BUF_SIZE) 326 328 327 329 struct net_pkt_rcvpost {
+2 -2
drivers/staging/unisys/visornic/visornic_main.c
··· 791 791 * pointing to 792 792 */ 793 793 firstfraglen = skb->len - skb->data_len; 794 - if (firstfraglen < ETH_HEADER_SIZE) { 794 + if (firstfraglen < ETH_HLEN) { 795 795 spin_unlock_irqrestore(&devdata->priv_lock, flags); 796 796 devdata->busy_cnt++; 797 797 dev_err(&netdev->dev, ··· 864 864 /* copy ethernet header from first frag into ocmdrsp 865 865 * - everything else will be pass in frags & DMA'ed 866 866 */ 867 - memcpy(cmdrsp->net.xmt.ethhdr, skb->data, ETH_HEADER_SIZE); 867 + memcpy(cmdrsp->net.xmt.ethhdr, skb->data, ETH_HLEN); 868 868 /* copy frags info - from skb->data we need to only provide access 869 869 * beyond eth header 870 870 */
+5 -13
drivers/staging/wlan-ng/p80211netdev.c
··· 669 669 return result; 670 670 } 671 671 672 - static int wlan_change_mtu(struct net_device *dev, int new_mtu) 673 - { 674 - /* 2312 is max 802.11 payload, 20 is overhead, (ether + llc +snap) 675 - and another 8 for wep. */ 676 - if ((new_mtu < 68) || (new_mtu > (2312 - 20 - 8))) 677 - return -EINVAL; 678 - 679 - dev->mtu = new_mtu; 680 - 681 - return 0; 682 - } 683 - 684 672 static const struct net_device_ops p80211_netdev_ops = { 685 673 .ndo_init = p80211knetdev_init, 686 674 .ndo_open = p80211knetdev_open, ··· 678 690 .ndo_do_ioctl = p80211knetdev_do_ioctl, 679 691 .ndo_set_mac_address = p80211knetdev_set_mac_address, 680 692 .ndo_tx_timeout = p80211knetdev_tx_timeout, 681 - .ndo_change_mtu = wlan_change_mtu, 682 693 .ndo_validate_addr = eth_validate_addr, 683 694 }; 684 695 ··· 743 756 wdev->wiphy = wiphy; 744 757 wdev->iftype = NL80211_IFTYPE_STATION; 745 758 netdev->ieee80211_ptr = wdev; 759 + netdev->min_mtu = 68; 760 + /* 2312 is max 802.11 payload, 20 is overhead, 761 + * (ether + llc + snap) and another 8 for wep. 762 + */ 763 + netdev->max_mtu = (2312 - 20 - 8); 746 764 747 765 netif_stop_queue(netdev); 748 766 netif_carrier_off(netdev);
+2 -10
drivers/tty/n_gsm.c
··· 2711 2711 return; 2712 2712 } 2713 2713 2714 - static int gsm_change_mtu(struct net_device *net, int new_mtu) 2715 - { 2716 - struct gsm_mux_net *mux_net = netdev_priv(net); 2717 - if ((new_mtu < 8) || (new_mtu > mux_net->dlci->gsm->mtu)) 2718 - return -EINVAL; 2719 - net->mtu = new_mtu; 2720 - return 0; 2721 - } 2722 - 2723 2714 static void gsm_mux_net_init(struct net_device *net) 2724 2715 { 2725 2716 static const struct net_device_ops gsm_netdev_ops = { ··· 2719 2728 .ndo_start_xmit = gsm_mux_net_start_xmit, 2720 2729 .ndo_tx_timeout = gsm_mux_net_tx_timeout, 2721 2730 .ndo_get_stats = gsm_mux_net_get_stats, 2722 - .ndo_change_mtu = gsm_change_mtu, 2723 2731 }; 2724 2732 2725 2733 net->netdev_ops = &gsm_netdev_ops; ··· 2777 2787 return -ENOMEM; 2778 2788 } 2779 2789 net->mtu = dlci->gsm->mtu; 2790 + net->min_mtu = 8; 2791 + net->max_mtu = dlci->gsm->mtu; 2780 2792 mux_net = netdev_priv(net); 2781 2793 mux_net->dlci = dlci; 2782 2794 kref_init(&mux_net->ref);
-1
drivers/tty/synclink.c
··· 7973 7973 static const struct net_device_ops hdlcdev_ops = { 7974 7974 .ndo_open = hdlcdev_open, 7975 7975 .ndo_stop = hdlcdev_close, 7976 - .ndo_change_mtu = hdlc_change_mtu, 7977 7976 .ndo_start_xmit = hdlc_start_xmit, 7978 7977 .ndo_do_ioctl = hdlcdev_ioctl, 7979 7978 .ndo_tx_timeout = hdlcdev_tx_timeout,
-1
drivers/tty/synclinkmp.c
··· 1887 1887 static const struct net_device_ops hdlcdev_ops = { 1888 1888 .ndo_open = hdlcdev_open, 1889 1889 .ndo_stop = hdlcdev_close, 1890 - .ndo_change_mtu = hdlc_change_mtu, 1891 1890 .ndo_start_xmit = hdlc_start_xmit, 1892 1891 .ndo_do_ioctl = hdlcdev_ioctl, 1893 1892 .ndo_tx_timeout = hdlcdev_tx_timeout,
+2 -9
drivers/usb/gadget/function/f_phonet.c
··· 261 261 return NETDEV_TX_OK; 262 262 } 263 263 264 - static int pn_net_mtu(struct net_device *dev, int new_mtu) 265 - { 266 - if ((new_mtu < PHONET_MIN_MTU) || (new_mtu > PHONET_MAX_MTU)) 267 - return -EINVAL; 268 - dev->mtu = new_mtu; 269 - return 0; 270 - } 271 - 272 264 static const struct net_device_ops pn_netdev_ops = { 273 265 .ndo_open = pn_net_open, 274 266 .ndo_stop = pn_net_close, 275 267 .ndo_start_xmit = pn_net_xmit, 276 - .ndo_change_mtu = pn_net_mtu, 277 268 }; 278 269 279 270 static void pn_net_setup(struct net_device *dev) ··· 273 282 dev->type = ARPHRD_PHONET; 274 283 dev->flags = IFF_POINTOPOINT | IFF_NOARP; 275 284 dev->mtu = PHONET_DEV_MTU; 285 + dev->min_mtu = PHONET_MIN_MTU; 286 + dev->max_mtu = PHONET_MAX_MTU; 276 287 dev->hard_header_len = 1; 277 288 dev->dev_addr[0] = PN_MEDIA_USB; 278 289 dev->addr_len = 1;
+4 -10
drivers/usb/gadget/function/u_ether.c
··· 142 142 143 143 /* NETWORK DRIVER HOOKUP (to the layer above this driver) */ 144 144 145 - static int ueth_change_mtu(struct net_device *net, int new_mtu) 146 - { 147 - if (new_mtu <= ETH_HLEN || new_mtu > GETHER_MAX_ETH_FRAME_LEN) 148 - return -ERANGE; 149 - net->mtu = new_mtu; 150 - 151 - return 0; 152 - } 153 - 154 145 static void eth_get_drvinfo(struct net_device *net, struct ethtool_drvinfo *p) 155 146 { 156 147 struct eth_dev *dev = netdev_priv(net); ··· 727 736 .ndo_open = eth_open, 728 737 .ndo_stop = eth_stop, 729 738 .ndo_start_xmit = eth_start_xmit, 730 - .ndo_change_mtu = ueth_change_mtu, 731 739 .ndo_set_mac_address = eth_mac_addr, 732 740 .ndo_validate_addr = eth_validate_addr, 733 741 }; ··· 788 798 net->netdev_ops = &eth_netdev_ops; 789 799 790 800 net->ethtool_ops = &ops; 801 + 802 + /* MTU range: 14 - 15412 */ 803 + net->min_mtu = ETH_HLEN; 804 + net->max_mtu = GETHER_MAX_ETH_FRAME_LEN; 791 805 792 806 dev->gadget = g; 793 807 SET_NETDEV_DEV(net, &g->dev);
-1
include/linux/fddidevice.h
··· 26 26 27 27 #ifdef __KERNEL__ 28 28 __be16 fddi_type_trans(struct sk_buff *skb, struct net_device *dev); 29 - int fddi_change_mtu(struct net_device *dev, int new_mtu); 30 29 struct net_device *alloc_fddidev(int sizeof_priv); 31 30 #endif 32 31
-2
include/linux/hdlc.h
··· 93 93 int hdlc_open(struct net_device *dev); 94 94 /* Must be called by hardware driver when HDLC device is being closed */ 95 95 void hdlc_close(struct net_device *dev); 96 - /* May be used by hardware driver */ 97 - int hdlc_change_mtu(struct net_device *dev, int new_mtu); 98 96 /* Must be pointed to by hw driver's dev->netdev_ops->ndo_start_xmit */ 99 97 netdev_tx_t hdlc_start_xmit(struct sk_buff *skb, struct net_device *dev); 100 98
-1
include/linux/hippidevice.h
··· 32 32 }; 33 33 34 34 __be16 hippi_type_trans(struct sk_buff *skb, struct net_device *dev); 35 - int hippi_change_mtu(struct net_device *dev, int new_mtu); 36 35 int hippi_mac_addr(struct net_device *dev, void *p); 37 36 int hippi_neigh_setup_dev(struct net_device *dev, struct neigh_parms *p); 38 37 struct net_device *alloc_hippi_dev(int sizeof_priv);
+1
include/uapi/linux/if_ether.h
··· 36 36 #define ETH_FCS_LEN 4 /* Octets in the FCS */ 37 37 38 38 #define ETH_MIN_MTU 68 /* Min IPv4 MTU per RFC791 */ 39 + #define ETH_MAX_MTU 0xFFFFU /* 65535, same as IP_MAX_MTU */ 39 40 40 41 /* 41 42 * These are the defined Ethernet Protocol ID's.
+2 -9
net/802/fddi.c
··· 141 141 142 142 EXPORT_SYMBOL(fddi_type_trans); 143 143 144 - int fddi_change_mtu(struct net_device *dev, int new_mtu) 145 - { 146 - if ((new_mtu < FDDI_K_SNAP_HLEN) || (new_mtu > FDDI_K_SNAP_DLEN)) 147 - return -EINVAL; 148 - dev->mtu = new_mtu; 149 - return 0; 150 - } 151 - EXPORT_SYMBOL(fddi_change_mtu); 152 - 153 144 static const struct header_ops fddi_header_ops = { 154 145 .create = fddi_header, 155 146 }; ··· 152 161 dev->type = ARPHRD_FDDI; 153 162 dev->hard_header_len = FDDI_K_SNAP_HLEN+3; /* Assume 802.2 SNAP hdr len + 3 pad bytes */ 154 163 dev->mtu = FDDI_K_SNAP_DLEN; /* Assume max payload of 802.2 SNAP frame */ 164 + dev->min_mtu = FDDI_K_SNAP_HLEN; 165 + dev->max_mtu = FDDI_K_SNAP_DLEN; 155 166 dev->addr_len = FDDI_K_ALEN; 156 167 dev->tx_queue_len = 100; /* Long queues on FDDI */ 157 168 dev->flags = IFF_BROADCAST | IFF_MULTICAST;
+2 -12
net/802/hippi.c
··· 116 116 117 117 EXPORT_SYMBOL(hippi_type_trans); 118 118 119 - int hippi_change_mtu(struct net_device *dev, int new_mtu) 120 - { 121 - /* 122 - * HIPPI's got these nice large MTUs. 123 - */ 124 - if ((new_mtu < 68) || (new_mtu > 65280)) 125 - return -EINVAL; 126 - dev->mtu = new_mtu; 127 - return 0; 128 - } 129 - EXPORT_SYMBOL(hippi_change_mtu); 130 - 131 119 /* 132 120 * For HIPPI we will actually use the lower 4 bytes of the hardware 133 121 * address as the I-FIELD rather than the actual hardware address. ··· 162 174 dev->type = ARPHRD_HIPPI; 163 175 dev->hard_header_len = HIPPI_HLEN; 164 176 dev->mtu = 65280; 177 + dev->min_mtu = 68; 178 + dev->max_mtu = 65280; 165 179 dev->addr_len = HIPPI_ALEN; 166 180 dev->tx_queue_len = 25 /* 5 */; 167 181 memset(dev->broadcast, 0xFF, HIPPI_ALEN);
+3
net/8021q/vlan_dev.c
··· 826 826 dev->destructor = vlan_dev_free; 827 827 dev->ethtool_ops = &vlan_ethtool_ops; 828 828 829 + dev->min_mtu = 0; 830 + dev->max_mtu = ETH_MAX_MTU; 831 + 829 832 eth_zero_addr(dev->broadcast); 830 833 }
+1 -10
net/atm/lec.c
··· 544 544 return 0; 545 545 } 546 546 547 - /* shamelessly stolen from drivers/net/net_init.c */ 548 - static int lec_change_mtu(struct net_device *dev, int new_mtu) 549 - { 550 - if ((new_mtu < 68) || (new_mtu > 18190)) 551 - return -EINVAL; 552 - dev->mtu = new_mtu; 553 - return 0; 554 - } 555 - 556 547 static void lec_set_multicast_list(struct net_device *dev) 557 548 { 558 549 /* ··· 556 565 .ndo_open = lec_open, 557 566 .ndo_stop = lec_close, 558 567 .ndo_start_xmit = lec_start_xmit, 559 - .ndo_change_mtu = lec_change_mtu, 560 568 .ndo_tx_timeout = lec_tx_timeout, 561 569 .ndo_set_rx_mode = lec_set_multicast_list, 562 570 }; ··· 732 742 if (!dev_lec[i]) 733 743 return -ENOMEM; 734 744 dev_lec[i]->netdev_ops = &lec_netdev_ops; 745 + dev_lec[i]->max_mtu = 18190; 735 746 snprintf(dev_lec[i]->name, IFNAMSIZ, "lec%d", i); 736 747 if (register_netdev(dev_lec[i])) { 737 748 free_netdev(dev_lec[i]);
+1 -12
net/batman-adv/soft-interface.c
··· 158 158 return 0; 159 159 } 160 160 161 - static int batadv_interface_change_mtu(struct net_device *dev, int new_mtu) 162 - { 163 - /* check ranges */ 164 - if ((new_mtu < 68) || (new_mtu > batadv_hardif_min_mtu(dev))) 165 - return -EINVAL; 166 - 167 - dev->mtu = new_mtu; 168 - 169 - return 0; 170 - } 171 - 172 161 /** 173 162 * batadv_interface_set_rx_mode - set the rx mode of a device 174 163 * @dev: registered network device to modify ··· 909 920 .ndo_vlan_rx_add_vid = batadv_interface_add_vid, 910 921 .ndo_vlan_rx_kill_vid = batadv_interface_kill_vid, 911 922 .ndo_set_mac_address = batadv_interface_set_mac_addr, 912 - .ndo_change_mtu = batadv_interface_change_mtu, 913 923 .ndo_set_rx_mode = batadv_interface_set_rx_mode, 914 924 .ndo_start_xmit = batadv_interface_tx, 915 925 .ndo_validate_addr = eth_validate_addr, ··· 975 987 dev_net_set(soft_iface, net); 976 988 977 989 soft_iface->rtnl_link_ops = &batadv_link_ops; 990 + soft_iface->max_mtu = batadv_hardif_min_mtu(soft_iface); 978 991 979 992 ret = register_netdevice(soft_iface); 980 993 if (ret < 0) {
+2 -1
net/bridge/br_device.c
··· 185 185 static int br_change_mtu(struct net_device *dev, int new_mtu) 186 186 { 187 187 struct net_bridge *br = netdev_priv(dev); 188 - if (new_mtu < 68 || new_mtu > br_min_mtu(br)) 188 + if (new_mtu > br_min_mtu(br)) 189 189 return -EINVAL; 190 190 191 191 dev->mtu = new_mtu; ··· 410 410 br->bridge_hello_time = br->hello_time = 2 * HZ; 411 411 br->bridge_forward_delay = br->forward_delay = 15 * HZ; 412 412 br->ageing_time = BR_DEFAULT_AGEING_TIME; 413 + dev->max_mtu = ETH_MAX_MTU; 413 414 414 415 br_netfilter_rtable_init(br); 415 416 br_stp_timer_init(br);
+1
net/hsr/hsr_device.c
··· 398 398 random_ether_addr(dev->dev_addr); 399 399 400 400 ether_setup(dev); 401 + dev->min_mtu = 0; 401 402 dev->header_ops = &hsr_header_ops; 402 403 dev->netdev_ops = &hsr_device_ops; 403 404 SET_NETDEV_DEVTYPE(dev, &hsr_type);
+5 -1
net/ipv4/ip_tunnel.c
··· 358 358 { 359 359 struct ip_tunnel *nt; 360 360 struct net_device *dev; 361 + int t_hlen; 361 362 362 363 BUG_ON(!itn->fb_tunnel_dev); 363 364 dev = __ip_tunnel_create(net, itn->fb_tunnel_dev->rtnl_link_ops, parms); ··· 368 367 dev->mtu = ip_tunnel_bind_dev(dev); 369 368 370 369 nt = netdev_priv(dev); 370 + t_hlen = nt->hlen + sizeof(struct iphdr); 371 + dev->min_mtu = ETH_MIN_MTU; 372 + dev->max_mtu = 0xFFF8 - dev->hard_header_len - t_hlen; 371 373 ip_tunnel_add(itn, nt); 372 374 return nt; 373 375 } ··· 933 929 int t_hlen = tunnel->hlen + sizeof(struct iphdr); 934 930 int max_mtu = 0xFFF8 - dev->hard_header_len - t_hlen; 935 931 936 - if (new_mtu < 68) 932 + if (new_mtu < ETH_MIN_MTU) 937 933 return -EINVAL; 938 934 939 935 if (new_mtu > max_mtu) {
+3 -1
net/ipv6/ip6_tunnel.c
··· 1634 1634 struct ip6_tnl *tnl = netdev_priv(dev); 1635 1635 1636 1636 if (tnl->parms.proto == IPPROTO_IPIP) { 1637 - if (new_mtu < 68) 1637 + if (new_mtu < ETH_MIN_MTU) 1638 1638 return -EINVAL; 1639 1639 } else { 1640 1640 if (new_mtu < IPV6_MIN_MTU) ··· 1787 1787 dev->mtu = ETH_DATA_LEN - t_hlen; 1788 1788 if (!(t->parms.flags & IP6_TNL_F_IGN_ENCAP_LIMIT)) 1789 1789 dev->mtu -= 8; 1790 + dev->min_mtu = ETH_MIN_MTU; 1791 + dev->max_mtu = 0xFFF8 - dev->hard_header_len; 1790 1792 1791 1793 return 0; 1792 1794
+2 -19
net/ipv6/ip6_vti.c
··· 812 812 return err; 813 813 } 814 814 815 - /** 816 - * vti6_tnl_change_mtu - change mtu manually for tunnel device 817 - * @dev: virtual device associated with tunnel 818 - * @new_mtu: the new mtu 819 - * 820 - * Return: 821 - * 0 on success, 822 - * %-EINVAL if mtu too small 823 - **/ 824 - static int vti6_change_mtu(struct net_device *dev, int new_mtu) 825 - { 826 - if (new_mtu < IPV6_MIN_MTU) 827 - return -EINVAL; 828 - 829 - dev->mtu = new_mtu; 830 - return 0; 831 - } 832 - 833 815 static const struct net_device_ops vti6_netdev_ops = { 834 816 .ndo_init = vti6_dev_init, 835 817 .ndo_uninit = vti6_dev_uninit, 836 818 .ndo_start_xmit = vti6_tnl_xmit, 837 819 .ndo_do_ioctl = vti6_ioctl, 838 - .ndo_change_mtu = vti6_change_mtu, 839 820 .ndo_get_stats64 = ip_tunnel_get_stats64, 840 821 .ndo_get_iflink = ip6_tnl_get_iflink, 841 822 }; ··· 836 855 dev->type = ARPHRD_TUNNEL6; 837 856 dev->hard_header_len = LL_MAX_HEADER + sizeof(struct ipv6hdr); 838 857 dev->mtu = ETH_DATA_LEN; 858 + dev->min_mtu = IPV6_MIN_MTU; 859 + dev->max_mtu = IP_MAX_MTU; 839 860 dev->flags |= IFF_NOARP; 840 861 dev->addr_len = sizeof(struct in6_addr); 841 862 netif_keep_dst(dev);
+2 -12
net/ipv6/sit.c
··· 1318 1318 return err; 1319 1319 } 1320 1320 1321 - static int ipip6_tunnel_change_mtu(struct net_device *dev, int new_mtu) 1322 - { 1323 - struct ip_tunnel *tunnel = netdev_priv(dev); 1324 - int t_hlen = tunnel->hlen + sizeof(struct iphdr); 1325 - 1326 - if (new_mtu < IPV6_MIN_MTU || new_mtu > 0xFFF8 - t_hlen) 1327 - return -EINVAL; 1328 - dev->mtu = new_mtu; 1329 - return 0; 1330 - } 1331 - 1332 1321 static const struct net_device_ops ipip6_netdev_ops = { 1333 1322 .ndo_init = ipip6_tunnel_init, 1334 1323 .ndo_uninit = ipip6_tunnel_uninit, 1335 1324 .ndo_start_xmit = sit_tunnel_xmit, 1336 1325 .ndo_do_ioctl = ipip6_tunnel_ioctl, 1337 - .ndo_change_mtu = ipip6_tunnel_change_mtu, 1338 1326 .ndo_get_stats64 = ip_tunnel_get_stats64, 1339 1327 .ndo_get_iflink = ip_tunnel_get_iflink, 1340 1328 }; ··· 1353 1365 dev->type = ARPHRD_SIT; 1354 1366 dev->hard_header_len = LL_MAX_HEADER + t_hlen; 1355 1367 dev->mtu = ETH_DATA_LEN - t_hlen; 1368 + dev->min_mtu = IPV6_MIN_MTU; 1369 + dev->max_mtu = 0xFFF8 - t_hlen; 1356 1370 dev->flags = IFF_NOARP; 1357 1371 netif_keep_dst(dev); 1358 1372 dev->addr_len = 4;
+4 -11
net/mac80211/iface.c
··· 150 150 ieee80211_hw_config(local, change); 151 151 } 152 152 153 - static int ieee80211_change_mtu(struct net_device *dev, int new_mtu) 154 - { 155 - if (new_mtu < 256 || new_mtu > IEEE80211_MAX_DATA_LEN) 156 - return -EINVAL; 157 - 158 - dev->mtu = new_mtu; 159 - return 0; 160 - } 161 - 162 153 static int ieee80211_verify_mac(struct ieee80211_sub_if_data *sdata, u8 *addr, 163 154 bool check_dup) 164 155 { ··· 1157 1166 .ndo_uninit = ieee80211_uninit, 1158 1167 .ndo_start_xmit = ieee80211_subif_start_xmit, 1159 1168 .ndo_set_rx_mode = ieee80211_set_multicast_list, 1160 - .ndo_change_mtu = ieee80211_change_mtu, 1161 1169 .ndo_set_mac_address = ieee80211_change_mac, 1162 1170 .ndo_select_queue = ieee80211_netdev_select_queue, 1163 1171 .ndo_get_stats64 = ieee80211_get_stats64, ··· 1190 1200 .ndo_uninit = ieee80211_uninit, 1191 1201 .ndo_start_xmit = ieee80211_monitor_start_xmit, 1192 1202 .ndo_set_rx_mode = ieee80211_set_multicast_list, 1193 - .ndo_change_mtu = ieee80211_change_mtu, 1194 1203 .ndo_set_mac_address = ieee80211_change_mac, 1195 1204 .ndo_select_queue = ieee80211_monitor_select_queue, 1196 1205 .ndo_get_stats64 = ieee80211_get_stats64, ··· 1872 1883 ndev->features |= local->hw.netdev_features; 1873 1884 1874 1885 netdev_set_default_ethtool_ops(ndev, &ieee80211_ethtool_ops); 1886 + 1887 + /* MTU range: 256 - 2304 */ 1888 + ndev->min_mtu = 256; 1889 + ndev->max_mtu = IEEE80211_MAX_DATA_LEN; 1875 1890 1876 1891 ret = register_netdevice(ndev); 1877 1892 if (ret) {
-10
net/openvswitch/vport-internal_dev.c
··· 89 89 .get_link = ethtool_op_get_link, 90 90 }; 91 91 92 - static int internal_dev_change_mtu(struct net_device *netdev, int new_mtu) 93 - { 94 - if (new_mtu < 68) 95 - return -EINVAL; 96 - 97 - netdev->mtu = new_mtu; 98 - return 0; 99 - } 100 - 101 92 static void internal_dev_destructor(struct net_device *dev) 102 93 { 103 94 struct vport *vport = ovs_internal_dev_get_vport(dev); ··· 139 148 .ndo_stop = internal_dev_stop, 140 149 .ndo_start_xmit = internal_dev_xmit, 141 150 .ndo_set_mac_address = eth_mac_addr, 142 - .ndo_change_mtu = internal_dev_change_mtu, 143 151 .ndo_get_stats64 = internal_get_stats, 144 152 .ndo_set_rx_headroom = internal_set_rx_headroom, 145 153 };
+2 -10
net/phonet/pep-gprs.c
··· 217 217 return NETDEV_TX_OK; 218 218 } 219 219 220 - static int gprs_set_mtu(struct net_device *dev, int new_mtu) 221 - { 222 - if ((new_mtu < 576) || (new_mtu > (PHONET_MAX_MTU - 11))) 223 - return -EINVAL; 224 - 225 - dev->mtu = new_mtu; 226 - return 0; 227 - } 228 - 229 220 static const struct net_device_ops gprs_netdev_ops = { 230 221 .ndo_open = gprs_open, 231 222 .ndo_stop = gprs_close, 232 223 .ndo_start_xmit = gprs_xmit, 233 - .ndo_change_mtu = gprs_set_mtu, 234 224 }; 235 225 236 226 static void gprs_setup(struct net_device *dev) ··· 229 239 dev->type = ARPHRD_PHONET_PIPE; 230 240 dev->flags = IFF_POINTOPOINT | IFF_NOARP; 231 241 dev->mtu = GPRS_DEFAULT_MTU; 242 + dev->min_mtu = 576; 243 + dev->max_mtu = (PHONET_MAX_MTU - 11); 232 244 dev->hard_header_len = 0; 233 245 dev->addr_len = 0; 234 246 dev->tx_queue_len = 10;
+2 -3
net/sched/sch_teql.c
··· 418 418 struct teql_master *m = netdev_priv(dev); 419 419 struct Qdisc *q; 420 420 421 - if (new_mtu < 68) 422 - return -EINVAL; 423 - 424 421 q = m->slaves; 425 422 if (q) { 426 423 do { ··· 457 460 dev->netdev_ops = &teql_netdev_ops; 458 461 dev->type = ARPHRD_VOID; 459 462 dev->mtu = 1500; 463 + dev->min_mtu = 68; 464 + dev->max_mtu = 65535; 460 465 dev->tx_queue_len = 100; 461 466 dev->flags = IFF_NOARP; 462 467 dev->hard_header_len = LL_MAX_HEADER;