mbox

[Yakkety,PULL] fix for unable to set MTU larger than 1500

Message ID CAH10aOh9j5Rr3w+kHQNZ-2E1R7g8uC1RHS3zCitpkVQ6uuKe3w@mail.gmail.com
State New
Headers show

Pull-request

git://git.launchpad.net/~wenchien/+git/yakkety lp1679823

Message

Wen-chien Jesse Sung May 4, 2017, 4:44 p.m. UTC
BugLink: https://launchpad.net/bugs/1679823

There are two issues in this report.

The first one is unable to set MTU larger than 1500 on some devices.

Commit e84f31d (yakkety), "net: centralize net_device min/max MTU
checking", introduced net_device.min_mtu and net_device.max_mtu.
These values will be checked before net_device_ops.ndo_change_mtu().

Then the second commit 04db90d (yakkety) set the default value of
min_mtu to ETH_MIN_MTU(68) and max_mtu to ETH_DATA_LEN(1500), removed
ndo_change_mtu() callback in some NIC drivers, and initialize
min_mtu/max_mtu in each driver if it should be something different
than the default values.

Commits for other drivers are not included in yakkety, thus when one
try to set an MTU larger than ETH_DATA_LEN, it fails.

The second issue is it shows
"Invalid MTU 9000 requested, hw max 68"
instead of
"Invalid MTU 9000 requested, hw max 1500".
This is a typo in commit 04db90d and can be fixed by commit a0e65de.

These commits touch a lot of network drivers, but the changes are quite
trivial. So far we have positive test results for
* e1000e: comment 34
* bnx2x: comment 39
* ixgbe: comment 40
* Zerotier TAP interfaces: comment 45


The following changes since commit 86e762828b7506f5b776106018d7a867c15a0a84:

  nvme: Quirk APST off on "THNSF5256GPUK TOSHIBA" (2017-05-04 10:54:20 +0200)

are available in the git repository at:

  git://git.launchpad.net/~wenchien/+git/yakkety lp1679823

for you to fetch changes up to 3bc189cd9cc5a351b822adbacf1ad3867ca5d90e:

  team: use ETH_MAX_MTU as max mtu (2017-05-04 21:57:59 +0800)

----------------------------------------------------------------
Bert Kenward (2):
      sfc: check MTU against minimum threshold
      ethernet/sfc: use core min/max MTU checking

Jarno Rajahalme (1):
      openvswitch: Set internal device max mtu to ETH_MAX_MTU.

Jarod Wilson (25):
      ethernet/intel: use core min/max MTU checking
      ethernet/broadcom: use core min/max MTU checking
      ethernet/atheros: use core min/max MTU checking
      ethernet/qlogic: use core min/max MTU checking
      ethernet/mellanox: use core min/max MTU checking
      ethernet/marvell: use core min/max MTU checking
      ethernet/cavium: use core min/max MTU checking
      ethernet/neterion: use core min/max MTU checking
      ethernet/dlink: use core min/max MTU checking
      ethernet/sun: use core min/max MTU checking
      ethernet/realtek: use core min/max MTU checking
      ethernet/toshiba: use core min/max MTU checking
      ethernet/tile: use core min/max MTU checking
      ethernet/ibm: use core min/max MTU checking
      ethernet: use core min/max MTU checking
      net: use core MTU range checking in wireless drivers
      net: use core MTU range checking in USB NIC drivers
      net: use core MTU range checking in virt drivers
      net: use core MTU range checking in core net infra
      net: use core MTU range checking in WAN drivers
      ipv4/6: use core net MTU range checking
      s390/net: use net core MTU range checking
      net: use core MTU range checking in misc drivers
      net: remove MTU limits on a few ether_setup callers
      team: use ETH_MAX_MTU as max mtu

Stefan Richter (4):
      firewire: net: fix maximum possible MTU
      firewire: net: set initial MTU = 1500 unconditionally, fix IPv6
on some CardBus cards
      ethernet: fix min/max MTU typos
      firewire: net: really fix maximum possible MTU

Sven Eckelmann (1):
      batman-adv: Revert "use core MTU range checking in misc drivers"

Thomas Falcon (1):
      ibmvnic: Fix initial MTU settings

WANG Cong (1):
      bonding: use ETH_MAX_MTU as max mtu

Zhang Shengju (1):
      nlmon: use core MTU range checking in nlmon driver

 arch/um/drivers/net_kern.c                         |  8 ---
 drivers/char/pcmcia/synclink_cs.c                  |  1 -
 drivers/firewire/net.c                             | 21 +------
 drivers/hsi/clients/ssi_protocol.c                 | 14 ++---
 drivers/infiniband/hw/nes/nes.c                    |  1 -
 drivers/infiniband/hw/nes/nes.h                    |  4 +-
 drivers/infiniband/hw/nes/nes_nic.c                | 10 +---
 drivers/infiniband/ulp/ipoib/ipoib_main.c          |  1 +
 drivers/message/fusion/mptlan.c                    | 15 ++---
 drivers/misc/sgi-xp/xpnet.c                        | 21 ++-----
 drivers/net/bonding/bond_main.c                    |  1 +
 drivers/net/ethernet/agere/et131x.c                |  7 ++-
 drivers/net/ethernet/altera/altera_tse.h           |  1 -
 drivers/net/ethernet/altera/altera_tse_main.c      | 14 +----
 drivers/net/ethernet/amd/amd8111e.c                |  5 +-
 drivers/net/ethernet/atheros/alx/hw.h              |  1 -
 drivers/net/ethernet/atheros/alx/main.c            | 10 +---
 drivers/net/ethernet/atheros/atl1c/atl1c_main.c    | 41 +++++++++-----
 drivers/net/ethernet/atheros/atl1e/atl1e_main.c    | 12 ++--
 drivers/net/ethernet/atheros/atlx/atl1.c           | 15 ++---
 drivers/net/ethernet/atheros/atlx/atl2.c           | 16 +++---
 drivers/net/ethernet/atheros/atlx/atl2.h           |  3 -
 drivers/net/ethernet/broadcom/b44.c                |  9 ++-
 drivers/net/ethernet/broadcom/bcm63xx_enet.c       | 35 ++++--------
 drivers/net/ethernet/broadcom/bnx2.c               | 16 +++---
 drivers/net/ethernet/broadcom/bnx2.h               |  6 +-
 drivers/net/ethernet/broadcom/bnx2x/bnx2x.h        |  6 +-
 drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c    |  8 +--
 drivers/net/ethernet/broadcom/bnx2x/bnx2x_link.c   | 22 +++-----
 drivers/net/ethernet/broadcom/bnx2x/bnx2x_main.c   |  7 ++-
 drivers/net/ethernet/broadcom/bnxt/bnxt.c          |  7 ++-
 drivers/net/ethernet/broadcom/sb1250-mac.c         |  2 +-
 drivers/net/ethernet/broadcom/tg3.c                |  9 +--
 drivers/net/ethernet/brocade/bna/bnad.c            |  7 ++-
 drivers/net/ethernet/cadence/macb.c                | 19 +++----
 drivers/net/ethernet/calxeda/xgmac.c               | 20 ++-----
 drivers/net/ethernet/cavium/liquidio/lio_main.c    | 15 ++---
 .../net/ethernet/cavium/liquidio/octeon_network.h  |  2 +-
 drivers/net/ethernet/cavium/octeon/octeon_mgmt.c   | 13 +----
 drivers/net/ethernet/cavium/thunder/nicvf_main.c   | 10 ++--
 drivers/net/ethernet/chelsio/cxgb/common.h         |  5 ++
 drivers/net/ethernet/chelsio/cxgb/cxgb2.c          | 18 +++++-
 drivers/net/ethernet/chelsio/cxgb/pm3393.c         |  8 +--
 drivers/net/ethernet/chelsio/cxgb/vsc7326.c        |  5 --
 drivers/net/ethernet/cisco/enic/enic_main.c        |  7 ++-
 drivers/net/ethernet/cisco/enic/enic_res.h         |  2 +-
 drivers/net/ethernet/dlink/dl2k.c                  | 22 ++------
 drivers/net/ethernet/dlink/sundance.c              |  6 +-
 drivers/net/ethernet/freescale/gianfar.c           |  9 +--
 drivers/net/ethernet/hisilicon/hns/hns_dsaf_mac.c  |  3 +-
 drivers/net/ethernet/hisilicon/hns/hns_enet.c      | 11 ++--
 drivers/net/ethernet/ibm/ehea/ehea_main.c          | 13 ++---
 drivers/net/ethernet/ibm/emac/core.c               |  9 +--
 drivers/net/ethernet/ibm/ibmveth.c                 |  2 +-
 drivers/net/ethernet/ibm/ibmvnic.c                 | 11 ++--
 drivers/net/ethernet/intel/e100.c                  |  9 ---
 drivers/net/ethernet/intel/e1000/e1000_main.c      | 12 ++--
 drivers/net/ethernet/intel/e1000e/netdev.c         | 14 ++---
 drivers/net/ethernet/intel/fm10k/fm10k_netdev.c    | 15 ++---
 drivers/net/ethernet/intel/i40e/i40e_main.c        | 10 ++--
 drivers/net/ethernet/intel/i40evf/i40evf_main.c    |  8 +--
 drivers/net/ethernet/intel/igb/e1000_defines.h     |  3 +-
 drivers/net/ethernet/intel/igb/igb_main.c          | 15 ++---
 drivers/net/ethernet/intel/igbvf/defines.h         |  3 +-
 drivers/net/ethernet/intel/igbvf/netdev.c          | 14 ++---
 drivers/net/ethernet/intel/ixgb/ixgb_main.c        | 16 ++----
 drivers/net/ethernet/intel/ixgbe/ixgbe_main.c      | 11 ++--
 drivers/net/ethernet/intel/ixgbevf/ixgbevf_main.c  | 33 +++++------
 drivers/net/ethernet/marvell/mvneta.c              | 36 ++++--------
 drivers/net/ethernet/marvell/mvpp2.c               | 36 +++---------
 drivers/net/ethernet/marvell/pxa168_eth.c          |  7 ++-
 drivers/net/ethernet/marvell/skge.c                |  7 ++-
 drivers/net/ethernet/marvell/sky2.c                | 18 +++---
 drivers/net/ethernet/mellanox/mlx4/en_netdev.c     |  8 +--
 drivers/net/ethernet/mellanox/mlx5/core/en_main.c  | 24 ++------
 drivers/net/ethernet/micrel/ksz884x.c              | 33 +++++------
 drivers/net/ethernet/myricom/myri10ge/myri10ge.c   | 20 ++++---
 drivers/net/ethernet/natsemi/natsemi.c             |  7 ++-
 drivers/net/ethernet/neterion/s2io.c               |  9 ++-
 drivers/net/ethernet/neterion/vxge/vxge-config.h   |  2 +-
 drivers/net/ethernet/neterion/vxge/vxge-main.c     |  9 ++-
 .../net/ethernet/netronome/nfp/nfp_net_common.c    | 10 ++--
 drivers/net/ethernet/nvidia/forcedeth.c            |  9 ++-
 .../net/ethernet/oki-semi/pch_gbe/pch_gbe_main.c   | 13 ++---
 drivers/net/ethernet/pasemi/pasemi_mac.c           | 12 ++--
 drivers/net/ethernet/qlogic/qede/qede.h            |  5 +-
 drivers/net/ethernet/qlogic/qede/qede_ethtool.c    |  8 ---
 drivers/net/ethernet/qlogic/qede/qede_main.c       |  4 ++
 drivers/net/ethernet/qlogic/qlcnic/qlcnic_hw.c     |  6 --
 drivers/net/ethernet/qlogic/qlcnic/qlcnic_main.c   |  4 ++
 drivers/net/ethernet/qualcomm/qca_framing.h        |  6 +-
 drivers/net/ethernet/qualcomm/qca_spi.c            | 16 ++----
 drivers/net/ethernet/realtek/8139cp.c              |  8 +--
 drivers/net/ethernet/realtek/8139too.c             | 13 ++---
 drivers/net/ethernet/realtek/r8169.c               |  8 +--
 drivers/net/ethernet/rocker/rocker_main.c          | 12 ++--
 drivers/net/ethernet/samsung/sxgbe/sxgbe_main.c    | 17 ++----
 drivers/net/ethernet/sfc/efx.c                     |  4 +-
 drivers/net/ethernet/sfc/net_driver.h              |  3 +
 drivers/net/ethernet/stmicro/stmmac/stmmac_main.c  | 25 +++------
 drivers/net/ethernet/sun/cassini.c                 |  7 ++-
 drivers/net/ethernet/sun/ldmvsw.c                  |  5 +-
 drivers/net/ethernet/sun/niu.c                     |  7 ++-
 drivers/net/ethernet/sun/sungem.c                  | 11 ++--
 drivers/net/ethernet/sun/sunvnet.c                 |  5 +-
 drivers/net/ethernet/sun/sunvnet_common.c          | 10 ----
 drivers/net/ethernet/sun/sunvnet_common.h          |  3 +-
 drivers/net/ethernet/tehuti/tehuti.c               | 14 ++---
 drivers/net/ethernet/tehuti/tehuti.h               |  3 +
 drivers/net/ethernet/ti/netcp_core.c               | 20 ++-----
 drivers/net/ethernet/tile/tilegx.c                 | 21 +++----
 drivers/net/ethernet/tile/tilepro.c                | 27 ++-------
 drivers/net/ethernet/toshiba/ps3_gelic_net.c       | 23 ++------
 drivers/net/ethernet/toshiba/ps3_gelic_net.h       |  1 -
 drivers/net/ethernet/toshiba/ps3_gelic_wireless.c  |  1 -
 drivers/net/ethernet/toshiba/spider_net.c          | 24 ++------
 drivers/net/ethernet/via/via-velocity.c            | 11 ++--
 drivers/net/fddi/skfp/skfddi.c                     |  1 -
 drivers/net/fjes/fjes_main.c                       |  2 +
 drivers/net/geneve.c                               | 48 +++++++---------
 drivers/net/hippi/rrunner.c                        |  1 -
 drivers/net/hyperv/netvsc_drv.c                    |  7 +++
 drivers/net/macsec.c                               |  2 +
 drivers/net/macvlan.c                              |  8 ++-
 drivers/net/nlmon.c                                | 20 +------
 drivers/net/ntb_netdev.c                           |  3 +
 drivers/net/rionet.c                               | 15 +----
 drivers/net/slip/slip.c                            | 11 ++--
 drivers/net/team/team.c                            |  1 +
 drivers/net/tun.c                                  | 20 ++-----
 drivers/net/usb/asix_devices.c                     |  4 +-
 drivers/net/usb/ax88179_178a.c                     |  4 +-
 drivers/net/usb/cdc-phonet.c                       | 12 +---
 drivers/net/usb/cdc_ncm.c                          |  5 +-
 drivers/net/usb/lan78xx.c                          |  8 +--
 drivers/net/usb/r8152.c                            | 15 ++++-
 drivers/net/usb/sierra_net.c                       | 13 +----
 drivers/net/usb/smsc75xx.c                         |  4 +-
 drivers/net/usb/usbnet.c                           |  4 +-
 drivers/net/veth.c                                 | 17 +-----
 drivers/net/vxlan.c                                | 64 ++++++++++++----------
 drivers/net/wan/c101.c                             |  1 -
 drivers/net/wan/cosa.c                             |  1 -
 drivers/net/wan/dscc4.c                            |  1 -
 drivers/net/wan/farsync.c                          |  1 -
 drivers/net/wan/fsl_ucc_hdlc.c                     |  1 -
 drivers/net/wan/hdlc.c                             | 11 +---
 drivers/net/wan/hdlc_fr.c                          |  3 +-
 drivers/net/wan/hostess_sv11.c                     |  1 -
 drivers/net/wan/ixp4xx_hss.c                       |  1 -
 drivers/net/wan/lmc/lmc_main.c                     |  1 -
 drivers/net/wan/n2.c                               |  1 -
 drivers/net/wan/pc300too.c                         |  1 -
 drivers/net/wan/pci200syn.c                        |  1 -
 drivers/net/wan/sealevel.c                         |  1 -
 drivers/net/wan/wanxl.c                            |  1 -
 drivers/net/wan/x25_asy.c                          |  5 +-
 drivers/net/wimax/i2400m/netdev.c                  | 22 +-------
 drivers/net/wireless/ath/wil6210/netdev.c          | 17 +-----
 drivers/net/wireless/atmel/atmel.c                 | 13 ++---
 drivers/net/wireless/cisco/airo.c                  | 14 +----
 drivers/net/wireless/intel/ipw2x00/ipw2100.c       |  3 +-
 drivers/net/wireless/intel/ipw2x00/ipw2200.c       |  8 ++-
 drivers/net/wireless/intel/ipw2x00/libipw.h        |  1 -
 drivers/net/wireless/intel/ipw2x00/libipw_module.c |  9 ---
 drivers/net/wireless/intersil/hostap/hostap_main.c | 15 +----
 drivers/net/wireless/intersil/orinoco/main.c       |  6 +-
 drivers/s390/net/ctcm_main.c                       |  5 +-
 drivers/s390/net/netiucv.c                         | 24 +-------
 drivers/s390/net/qeth_core_main.c                  |  4 --
 drivers/s390/net/qeth_l2_main.c                    |  2 +
 drivers/s390/net/qeth_l3_main.c                    |  2 +
 drivers/staging/octeon/ethernet.c                  | 21 ++++---
 drivers/staging/wlan-ng/p80211netdev.c             | 18 ++----
 drivers/tty/n_gsm.c                                | 12 +---
 drivers/tty/synclink.c                             |  1 -
 drivers/tty/synclink_gt.c                          |  1 -
 drivers/tty/synclinkmp.c                           |  1 -
 drivers/usb/gadget/function/f_phonet.c             | 11 +---
 drivers/usb/gadget/function/u_ether.c              | 14 ++---
 include/linux/fddidevice.h                         |  1 -
 include/linux/hdlc.h                               |  2 -
 include/linux/hippidevice.h                        |  1 -
 net/802/fddi.c                                     | 11 +---
 net/802/hippi.c                                    | 14 +----
 net/8021q/vlan_dev.c                               |  3 +
 net/atm/br2684.c                                   |  4 +-
 net/atm/lec.c                                      | 11 +---
 net/bluetooth/bnep/netdev.c                        |  2 +
 net/bridge/br_device.c                             |  3 +-
 net/dsa/slave.c                                    |  2 +
 net/hsr/hsr_device.c                               |  1 +
 net/ipv4/ip_tunnel.c                               |  6 +-
 net/ipv6/ip6_tunnel.c                              |  4 +-
 net/ipv6/ip6_vti.c                                 | 21 +------
 net/ipv6/sit.c                                     | 14 +----
 net/irda/irlan/irlan_eth.c                         |  3 +-
 net/l2tp/l2tp_eth.c                                |  2 +
 net/mac80211/iface.c                               | 15 ++---
 net/openvswitch/vport-internal_dev.c               | 12 +---
 net/phonet/pep-gprs.c                              | 12 +---
 net/sched/sch_teql.c                               |  5 +-
 202 files changed, 726 insertions(+), 1289 deletions(-)

Comments

Stefan Bader May 5, 2017, 4:42 p.m. UTC | #1
On 04.05.2017 18:44, Jesse Sung wrote:
> BugLink: https://launchpad.net/bugs/1679823
> 
> There are two issues in this report.

A slightly hesitant ack as this really is a massive number of changes from a
wide range of upstream (like the first in series was in 4.10 and the last one in
4.11). Luckily Zesty seems ok as of upstream stable 4.10.5.

All of this was caused as part of rebasing the hyperv driver to 4.10
(https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1670544) which,
given the impact, we should think about twice before also doing to Xenial.

-Stefan

> 
> The first one is unable to set MTU larger than 1500 on some devices.
> 
> Commit e84f31d (yakkety), "net: centralize net_device min/max MTU
> checking", introduced net_device.min_mtu and net_device.max_mtu.
> These values will be checked before net_device_ops.ndo_change_mtu().
> 
> Then the second commit 04db90d (yakkety) set the default value of
> min_mtu to ETH_MIN_MTU(68) and max_mtu to ETH_DATA_LEN(1500), removed
> ndo_change_mtu() callback in some NIC drivers, and initialize
> min_mtu/max_mtu in each driver if it should be something different
> than the default values.
> 
> Commits for other drivers are not included in yakkety, thus when one
> try to set an MTU larger than ETH_DATA_LEN, it fails.
> 
> The second issue is it shows
> "Invalid MTU 9000 requested, hw max 68"
> instead of
> "Invalid MTU 9000 requested, hw max 1500".
> This is a typo in commit 04db90d and can be fixed by commit a0e65de.
> 
> These commits touch a lot of network drivers, but the changes are quite
> trivial. So far we have positive test results for
> * e1000e: comment 34
> * bnx2x: comment 39
> * ixgbe: comment 40
> * Zerotier TAP interfaces: comment 45
> 
> 
> The following changes since commit 86e762828b7506f5b776106018d7a867c15a0a84:
> 
>   nvme: Quirk APST off on "THNSF5256GPUK TOSHIBA" (2017-05-04 10:54:20 +0200)
> 
> are available in the git repository at:
> 
>   git://git.launchpad.net/~wenchien/+git/yakkety lp1679823
> 
> for you to fetch changes up to 3bc189cd9cc5a351b822adbacf1ad3867ca5d90e:
> 
>   team: use ETH_MAX_MTU as max mtu (2017-05-04 21:57:59 +0800)
> 
> ----------------------------------------------------------------
> Bert Kenward (2):
>       sfc: check MTU against minimum threshold
>       ethernet/sfc: use core min/max MTU checking
> 
> Jarno Rajahalme (1):
>       openvswitch: Set internal device max mtu to ETH_MAX_MTU.
> 
> Jarod Wilson (25):
>       ethernet/intel: use core min/max MTU checking
>       ethernet/broadcom: use core min/max MTU checking
>       ethernet/atheros: use core min/max MTU checking
>       ethernet/qlogic: use core min/max MTU checking
>       ethernet/mellanox: use core min/max MTU checking
>       ethernet/marvell: use core min/max MTU checking
>       ethernet/cavium: use core min/max MTU checking
>       ethernet/neterion: use core min/max MTU checking
>       ethernet/dlink: use core min/max MTU checking
>       ethernet/sun: use core min/max MTU checking
>       ethernet/realtek: use core min/max MTU checking
>       ethernet/toshiba: use core min/max MTU checking
>       ethernet/tile: use core min/max MTU checking
>       ethernet/ibm: use core min/max MTU checking
>       ethernet: use core min/max MTU checking
>       net: use core MTU range checking in wireless drivers
>       net: use core MTU range checking in USB NIC drivers
>       net: use core MTU range checking in virt drivers
>       net: use core MTU range checking in core net infra
>       net: use core MTU range checking in WAN drivers
>       ipv4/6: use core net MTU range checking
>       s390/net: use net core MTU range checking
>       net: use core MTU range checking in misc drivers
>       net: remove MTU limits on a few ether_setup callers
>       team: use ETH_MAX_MTU as max mtu
> 
> Stefan Richter (4):
>       firewire: net: fix maximum possible MTU
>       firewire: net: set initial MTU = 1500 unconditionally, fix IPv6
> on some CardBus cards
>       ethernet: fix min/max MTU typos
>       firewire: net: really fix maximum possible MTU
> 
> Sven Eckelmann (1):
>       batman-adv: Revert "use core MTU range checking in misc drivers"
> 
> Thomas Falcon (1):
>       ibmvnic: Fix initial MTU settings
> 
> WANG Cong (1):
>       bonding: use ETH_MAX_MTU as max mtu
> 
> Zhang Shengju (1):
>       nlmon: use core MTU range checking in nlmon driver
> 
>  arch/um/drivers/net_kern.c                         |  8 ---
>  drivers/char/pcmcia/synclink_cs.c                  |  1 -
>  drivers/firewire/net.c                             | 21 +------
>  drivers/hsi/clients/ssi_protocol.c                 | 14 ++---
>  drivers/infiniband/hw/nes/nes.c                    |  1 -
>  drivers/infiniband/hw/nes/nes.h                    |  4 +-
>  drivers/infiniband/hw/nes/nes_nic.c                | 10 +---
>  drivers/infiniband/ulp/ipoib/ipoib_main.c          |  1 +
>  drivers/message/fusion/mptlan.c                    | 15 ++---
>  drivers/misc/sgi-xp/xpnet.c                        | 21 ++-----
>  drivers/net/bonding/bond_main.c                    |  1 +
>  drivers/net/ethernet/agere/et131x.c                |  7 ++-
>  drivers/net/ethernet/altera/altera_tse.h           |  1 -
>  drivers/net/ethernet/altera/altera_tse_main.c      | 14 +----
>  drivers/net/ethernet/amd/amd8111e.c                |  5 +-
>  drivers/net/ethernet/atheros/alx/hw.h              |  1 -
>  drivers/net/ethernet/atheros/alx/main.c            | 10 +---
>  drivers/net/ethernet/atheros/atl1c/atl1c_main.c    | 41 +++++++++-----
>  drivers/net/ethernet/atheros/atl1e/atl1e_main.c    | 12 ++--
>  drivers/net/ethernet/atheros/atlx/atl1.c           | 15 ++---
>  drivers/net/ethernet/atheros/atlx/atl2.c           | 16 +++---
>  drivers/net/ethernet/atheros/atlx/atl2.h           |  3 -
>  drivers/net/ethernet/broadcom/b44.c                |  9 ++-
>  drivers/net/ethernet/broadcom/bcm63xx_enet.c       | 35 ++++--------
>  drivers/net/ethernet/broadcom/bnx2.c               | 16 +++---
>  drivers/net/ethernet/broadcom/bnx2.h               |  6 +-
>  drivers/net/ethernet/broadcom/bnx2x/bnx2x.h        |  6 +-
>  drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c    |  8 +--
>  drivers/net/ethernet/broadcom/bnx2x/bnx2x_link.c   | 22 +++-----
>  drivers/net/ethernet/broadcom/bnx2x/bnx2x_main.c   |  7 ++-
>  drivers/net/ethernet/broadcom/bnxt/bnxt.c          |  7 ++-
>  drivers/net/ethernet/broadcom/sb1250-mac.c         |  2 +-
>  drivers/net/ethernet/broadcom/tg3.c                |  9 +--
>  drivers/net/ethernet/brocade/bna/bnad.c            |  7 ++-
>  drivers/net/ethernet/cadence/macb.c                | 19 +++----
>  drivers/net/ethernet/calxeda/xgmac.c               | 20 ++-----
>  drivers/net/ethernet/cavium/liquidio/lio_main.c    | 15 ++---
>  .../net/ethernet/cavium/liquidio/octeon_network.h  |  2 +-
>  drivers/net/ethernet/cavium/octeon/octeon_mgmt.c   | 13 +----
>  drivers/net/ethernet/cavium/thunder/nicvf_main.c   | 10 ++--
>  drivers/net/ethernet/chelsio/cxgb/common.h         |  5 ++
>  drivers/net/ethernet/chelsio/cxgb/cxgb2.c          | 18 +++++-
>  drivers/net/ethernet/chelsio/cxgb/pm3393.c         |  8 +--
>  drivers/net/ethernet/chelsio/cxgb/vsc7326.c        |  5 --
>  drivers/net/ethernet/cisco/enic/enic_main.c        |  7 ++-
>  drivers/net/ethernet/cisco/enic/enic_res.h         |  2 +-
>  drivers/net/ethernet/dlink/dl2k.c                  | 22 ++------
>  drivers/net/ethernet/dlink/sundance.c              |  6 +-
>  drivers/net/ethernet/freescale/gianfar.c           |  9 +--
>  drivers/net/ethernet/hisilicon/hns/hns_dsaf_mac.c  |  3 +-
>  drivers/net/ethernet/hisilicon/hns/hns_enet.c      | 11 ++--
>  drivers/net/ethernet/ibm/ehea/ehea_main.c          | 13 ++---
>  drivers/net/ethernet/ibm/emac/core.c               |  9 +--
>  drivers/net/ethernet/ibm/ibmveth.c                 |  2 +-
>  drivers/net/ethernet/ibm/ibmvnic.c                 | 11 ++--
>  drivers/net/ethernet/intel/e100.c                  |  9 ---
>  drivers/net/ethernet/intel/e1000/e1000_main.c      | 12 ++--
>  drivers/net/ethernet/intel/e1000e/netdev.c         | 14 ++---
>  drivers/net/ethernet/intel/fm10k/fm10k_netdev.c    | 15 ++---
>  drivers/net/ethernet/intel/i40e/i40e_main.c        | 10 ++--
>  drivers/net/ethernet/intel/i40evf/i40evf_main.c    |  8 +--
>  drivers/net/ethernet/intel/igb/e1000_defines.h     |  3 +-
>  drivers/net/ethernet/intel/igb/igb_main.c          | 15 ++---
>  drivers/net/ethernet/intel/igbvf/defines.h         |  3 +-
>  drivers/net/ethernet/intel/igbvf/netdev.c          | 14 ++---
>  drivers/net/ethernet/intel/ixgb/ixgb_main.c        | 16 ++----
>  drivers/net/ethernet/intel/ixgbe/ixgbe_main.c      | 11 ++--
>  drivers/net/ethernet/intel/ixgbevf/ixgbevf_main.c  | 33 +++++------
>  drivers/net/ethernet/marvell/mvneta.c              | 36 ++++--------
>  drivers/net/ethernet/marvell/mvpp2.c               | 36 +++---------
>  drivers/net/ethernet/marvell/pxa168_eth.c          |  7 ++-
>  drivers/net/ethernet/marvell/skge.c                |  7 ++-
>  drivers/net/ethernet/marvell/sky2.c                | 18 +++---
>  drivers/net/ethernet/mellanox/mlx4/en_netdev.c     |  8 +--
>  drivers/net/ethernet/mellanox/mlx5/core/en_main.c  | 24 ++------
>  drivers/net/ethernet/micrel/ksz884x.c              | 33 +++++------
>  drivers/net/ethernet/myricom/myri10ge/myri10ge.c   | 20 ++++---
>  drivers/net/ethernet/natsemi/natsemi.c             |  7 ++-
>  drivers/net/ethernet/neterion/s2io.c               |  9 ++-
>  drivers/net/ethernet/neterion/vxge/vxge-config.h   |  2 +-
>  drivers/net/ethernet/neterion/vxge/vxge-main.c     |  9 ++-
>  .../net/ethernet/netronome/nfp/nfp_net_common.c    | 10 ++--
>  drivers/net/ethernet/nvidia/forcedeth.c            |  9 ++-
>  .../net/ethernet/oki-semi/pch_gbe/pch_gbe_main.c   | 13 ++---
>  drivers/net/ethernet/pasemi/pasemi_mac.c           | 12 ++--
>  drivers/net/ethernet/qlogic/qede/qede.h            |  5 +-
>  drivers/net/ethernet/qlogic/qede/qede_ethtool.c    |  8 ---
>  drivers/net/ethernet/qlogic/qede/qede_main.c       |  4 ++
>  drivers/net/ethernet/qlogic/qlcnic/qlcnic_hw.c     |  6 --
>  drivers/net/ethernet/qlogic/qlcnic/qlcnic_main.c   |  4 ++
>  drivers/net/ethernet/qualcomm/qca_framing.h        |  6 +-
>  drivers/net/ethernet/qualcomm/qca_spi.c            | 16 ++----
>  drivers/net/ethernet/realtek/8139cp.c              |  8 +--
>  drivers/net/ethernet/realtek/8139too.c             | 13 ++---
>  drivers/net/ethernet/realtek/r8169.c               |  8 +--
>  drivers/net/ethernet/rocker/rocker_main.c          | 12 ++--
>  drivers/net/ethernet/samsung/sxgbe/sxgbe_main.c    | 17 ++----
>  drivers/net/ethernet/sfc/efx.c                     |  4 +-
>  drivers/net/ethernet/sfc/net_driver.h              |  3 +
>  drivers/net/ethernet/stmicro/stmmac/stmmac_main.c  | 25 +++------
>  drivers/net/ethernet/sun/cassini.c                 |  7 ++-
>  drivers/net/ethernet/sun/ldmvsw.c                  |  5 +-
>  drivers/net/ethernet/sun/niu.c                     |  7 ++-
>  drivers/net/ethernet/sun/sungem.c                  | 11 ++--
>  drivers/net/ethernet/sun/sunvnet.c                 |  5 +-
>  drivers/net/ethernet/sun/sunvnet_common.c          | 10 ----
>  drivers/net/ethernet/sun/sunvnet_common.h          |  3 +-
>  drivers/net/ethernet/tehuti/tehuti.c               | 14 ++---
>  drivers/net/ethernet/tehuti/tehuti.h               |  3 +
>  drivers/net/ethernet/ti/netcp_core.c               | 20 ++-----
>  drivers/net/ethernet/tile/tilegx.c                 | 21 +++----
>  drivers/net/ethernet/tile/tilepro.c                | 27 ++-------
>  drivers/net/ethernet/toshiba/ps3_gelic_net.c       | 23 ++------
>  drivers/net/ethernet/toshiba/ps3_gelic_net.h       |  1 -
>  drivers/net/ethernet/toshiba/ps3_gelic_wireless.c  |  1 -
>  drivers/net/ethernet/toshiba/spider_net.c          | 24 ++------
>  drivers/net/ethernet/via/via-velocity.c            | 11 ++--
>  drivers/net/fddi/skfp/skfddi.c                     |  1 -
>  drivers/net/fjes/fjes_main.c                       |  2 +
>  drivers/net/geneve.c                               | 48 +++++++---------
>  drivers/net/hippi/rrunner.c                        |  1 -
>  drivers/net/hyperv/netvsc_drv.c                    |  7 +++
>  drivers/net/macsec.c                               |  2 +
>  drivers/net/macvlan.c                              |  8 ++-
>  drivers/net/nlmon.c                                | 20 +------
>  drivers/net/ntb_netdev.c                           |  3 +
>  drivers/net/rionet.c                               | 15 +----
>  drivers/net/slip/slip.c                            | 11 ++--
>  drivers/net/team/team.c                            |  1 +
>  drivers/net/tun.c                                  | 20 ++-----
>  drivers/net/usb/asix_devices.c                     |  4 +-
>  drivers/net/usb/ax88179_178a.c                     |  4 +-
>  drivers/net/usb/cdc-phonet.c                       | 12 +---
>  drivers/net/usb/cdc_ncm.c                          |  5 +-
>  drivers/net/usb/lan78xx.c                          |  8 +--
>  drivers/net/usb/r8152.c                            | 15 ++++-
>  drivers/net/usb/sierra_net.c                       | 13 +----
>  drivers/net/usb/smsc75xx.c                         |  4 +-
>  drivers/net/usb/usbnet.c                           |  4 +-
>  drivers/net/veth.c                                 | 17 +-----
>  drivers/net/vxlan.c                                | 64 ++++++++++++----------
>  drivers/net/wan/c101.c                             |  1 -
>  drivers/net/wan/cosa.c                             |  1 -
>  drivers/net/wan/dscc4.c                            |  1 -
>  drivers/net/wan/farsync.c                          |  1 -
>  drivers/net/wan/fsl_ucc_hdlc.c                     |  1 -
>  drivers/net/wan/hdlc.c                             | 11 +---
>  drivers/net/wan/hdlc_fr.c                          |  3 +-
>  drivers/net/wan/hostess_sv11.c                     |  1 -
>  drivers/net/wan/ixp4xx_hss.c                       |  1 -
>  drivers/net/wan/lmc/lmc_main.c                     |  1 -
>  drivers/net/wan/n2.c                               |  1 -
>  drivers/net/wan/pc300too.c                         |  1 -
>  drivers/net/wan/pci200syn.c                        |  1 -
>  drivers/net/wan/sealevel.c                         |  1 -
>  drivers/net/wan/wanxl.c                            |  1 -
>  drivers/net/wan/x25_asy.c                          |  5 +-
>  drivers/net/wimax/i2400m/netdev.c                  | 22 +-------
>  drivers/net/wireless/ath/wil6210/netdev.c          | 17 +-----
>  drivers/net/wireless/atmel/atmel.c                 | 13 ++---
>  drivers/net/wireless/cisco/airo.c                  | 14 +----
>  drivers/net/wireless/intel/ipw2x00/ipw2100.c       |  3 +-
>  drivers/net/wireless/intel/ipw2x00/ipw2200.c       |  8 ++-
>  drivers/net/wireless/intel/ipw2x00/libipw.h        |  1 -
>  drivers/net/wireless/intel/ipw2x00/libipw_module.c |  9 ---
>  drivers/net/wireless/intersil/hostap/hostap_main.c | 15 +----
>  drivers/net/wireless/intersil/orinoco/main.c       |  6 +-
>  drivers/s390/net/ctcm_main.c                       |  5 +-
>  drivers/s390/net/netiucv.c                         | 24 +-------
>  drivers/s390/net/qeth_core_main.c                  |  4 --
>  drivers/s390/net/qeth_l2_main.c                    |  2 +
>  drivers/s390/net/qeth_l3_main.c                    |  2 +
>  drivers/staging/octeon/ethernet.c                  | 21 ++++---
>  drivers/staging/wlan-ng/p80211netdev.c             | 18 ++----
>  drivers/tty/n_gsm.c                                | 12 +---
>  drivers/tty/synclink.c                             |  1 -
>  drivers/tty/synclink_gt.c                          |  1 -
>  drivers/tty/synclinkmp.c                           |  1 -
>  drivers/usb/gadget/function/f_phonet.c             | 11 +---
>  drivers/usb/gadget/function/u_ether.c              | 14 ++---
>  include/linux/fddidevice.h                         |  1 -
>  include/linux/hdlc.h                               |  2 -
>  include/linux/hippidevice.h                        |  1 -
>  net/802/fddi.c                                     | 11 +---
>  net/802/hippi.c                                    | 14 +----
>  net/8021q/vlan_dev.c                               |  3 +
>  net/atm/br2684.c                                   |  4 +-
>  net/atm/lec.c                                      | 11 +---
>  net/bluetooth/bnep/netdev.c                        |  2 +
>  net/bridge/br_device.c                             |  3 +-
>  net/dsa/slave.c                                    |  2 +
>  net/hsr/hsr_device.c                               |  1 +
>  net/ipv4/ip_tunnel.c                               |  6 +-
>  net/ipv6/ip6_tunnel.c                              |  4 +-
>  net/ipv6/ip6_vti.c                                 | 21 +------
>  net/ipv6/sit.c                                     | 14 +----
>  net/irda/irlan/irlan_eth.c                         |  3 +-
>  net/l2tp/l2tp_eth.c                                |  2 +
>  net/mac80211/iface.c                               | 15 ++---
>  net/openvswitch/vport-internal_dev.c               | 12 +---
>  net/phonet/pep-gprs.c                              | 12 +---
>  net/sched/sch_teql.c                               |  5 +-
>  202 files changed, 726 insertions(+), 1289 deletions(-)
>
Seth Forshee May 11, 2017, 2:36 p.m. UTC | #2
On Fri, May 05, 2017 at 12:44:47AM +0800, Jesse Sung wrote:
> BugLink: https://launchpad.net/bugs/1679823
> 
> There are two issues in this report.
> 
> The first one is unable to set MTU larger than 1500 on some devices.
> 
> Commit e84f31d (yakkety), "net: centralize net_device min/max MTU
> checking", introduced net_device.min_mtu and net_device.max_mtu.
> These values will be checked before net_device_ops.ndo_change_mtu().
> 
> Then the second commit 04db90d (yakkety) set the default value of
> min_mtu to ETH_MIN_MTU(68) and max_mtu to ETH_DATA_LEN(1500), removed
> ndo_change_mtu() callback in some NIC drivers, and initialize
> min_mtu/max_mtu in each driver if it should be something different
> than the default values.
> 
> Commits for other drivers are not included in yakkety, thus when one
> try to set an MTU larger than ETH_DATA_LEN, it fails.
> 
> The second issue is it shows
> "Invalid MTU 9000 requested, hw max 68"
> instead of
> "Invalid MTU 9000 requested, hw max 1500".
> This is a typo in commit 04db90d and can be fixed by commit a0e65de.
> 
> These commits touch a lot of network drivers, but the changes are quite
> trivial. So far we have positive test results for
> * e1000e: comment 34
> * bnx2x: comment 39
> * ixgbe: comment 40
> * Zerotier TAP interfaces: comment 45
> 
> 
> The following changes since commit 86e762828b7506f5b776106018d7a867c15a0a84:
> 
>   nvme: Quirk APST off on "THNSF5256GPUK TOSHIBA" (2017-05-04 10:54:20 +0200)
> 
> are available in the git repository at:
> 
>   git://git.launchpad.net/~wenchien/+git/yakkety lp1679823
> 
> for you to fetch changes up to 3bc189cd9cc5a351b822adbacf1ad3867ca5d90e:
> 
>   team: use ETH_MAX_MTU as max mtu (2017-05-04 21:57:59 +0800)

<snip>

>  202 files changed, 726 insertions(+), 1289 deletions(-)

The changes themselves aren't all that scary, but the sheer amount of
them is. The fact that several commits are bug fixes for "let's make
theoretically non-functional changes to a load of drivers" is
evidence that these things frequently go bad.

I wonder, did you try reverting all the mtu patches in that original
hyperv series? It looks to me like they were included for completeness
rather than for any functional change. Fwiw I was able to revert this
set of commits without difficulty, which looks to be the complete set
required (I didn't do any testing with them reverted though):

 e84f31d24fa5c099bb48590c7714bc9dba9c08fc
 04db90d2c4254941fb50d4d63b88ab7b06b7cd5f
 89110d95423b39a3e85f9a397c70afcb4c88f544
 6426a881fe5b176516bd579b2969e57438cfc154
 d37117d2f412885a149638c5b4211c92e1a78609

Seth
Seth Forshee May 12, 2017, 6 p.m. UTC | #3
On Fri, May 05, 2017 at 12:44:47AM +0800, Jesse Sung wrote:
> BugLink: https://launchpad.net/bugs/1679823
> 
> There are two issues in this report.
> 
> The first one is unable to set MTU larger than 1500 on some devices.
> 
> Commit e84f31d (yakkety), "net: centralize net_device min/max MTU
> checking", introduced net_device.min_mtu and net_device.max_mtu.
> These values will be checked before net_device_ops.ndo_change_mtu().
> 
> Then the second commit 04db90d (yakkety) set the default value of
> min_mtu to ETH_MIN_MTU(68) and max_mtu to ETH_DATA_LEN(1500), removed
> ndo_change_mtu() callback in some NIC drivers, and initialize
> min_mtu/max_mtu in each driver if it should be something different
> than the default values.
> 
> Commits for other drivers are not included in yakkety, thus when one
> try to set an MTU larger than ETH_DATA_LEN, it fails.
> 
> The second issue is it shows
> "Invalid MTU 9000 requested, hw max 68"
> instead of
> "Invalid MTU 9000 requested, hw max 1500".
> This is a typo in commit 04db90d and can be fixed by commit a0e65de.
> 
> These commits touch a lot of network drivers, but the changes are quite
> trivial. So far we have positive test results for
> * e1000e: comment 34
> * bnx2x: comment 39
> * ixgbe: comment 40
> * Zerotier TAP interfaces: comment 45

I've sent a pull request which reverts the series which introduced the
bug.

Thanks,
Seth