Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > linux.kernel > #1502414 > unrolled thread
| Started by | Jarod Wilson <jarod@redhat.com> |
|---|---|
| First post | 2016-10-17 22:00 +0200 |
| Last post | 2016-10-18 17:40 +0200 |
| Articles | 8 — 2 participants |
Back to article view | Back to linux.kernel
[PATCH net-next 00/15] ethernet: use core min/max MTU checking Jarod Wilson <jarod@redhat.com> - 2016-10-17 22:00 +0200
[PATCH net-next 07/15] ethernet/realtek: use core min/max MTU checking Jarod Wilson <jarod@redhat.com> - 2016-10-17 22:10 +0200
Re: [PATCH net-next 00/15] ethernet: use core min/max MTU checking David Miller <davem@davemloft.net> - 2016-10-17 22:10 +0200
Re: [PATCH net-next 00/15] ethernet: use core min/max MTU checking Jarod Wilson <jarod@redhat.com> - 2016-10-17 22:30 +0200
Re: [PATCH net-next 00/15] ethernet: use core min/max MTU checking David Miller <davem@davemloft.net> - 2016-10-18 17:40 +0200
Re: [PATCH net-next 00/15] ethernet: use core min/max MTU checking Jarod Wilson <jarod@redhat.com> - 2016-10-19 00:30 +0200
Re: [PATCH net-next 00/15] ethernet: use core min/max MTU checking Jarod Wilson <jarod@redhat.com> - 2016-10-19 04:40 +0200
Re: [PATCH net-next 00/15] ethernet: use core min/max MTU checking David Miller <davem@davemloft.net> - 2016-10-18 17:40 +0200
| From | Jarod Wilson <jarod@redhat.com> |
|---|---|
| Date | 2016-10-17 22:00 +0200 |
| Subject | [PATCH net-next 00/15] ethernet: use core min/max MTU checking |
| Message-ID | <stmeJ-7YZ-3@gated-at.bofh.it> |
Now that the network stack core min/max MTU checking infrastructure is in place, time to start making drivers use it. We'll start with the easiest ones, the ethernet drivers, split roughly by vendor, with a catch-all patch at the end. For the most part, every patch does the same essential thing: removes the MTU range checking from the drivers' ndo_change_mtu function, puts those ranges into the core net_device min_mtu and max_mtu fields, and where possible, removes ndo_change_mtu functions entirely. These patches have all been built through the 0-day build infrastructure provided by Intel, on top of net-next as of October 17. Rebasing git tree with these patches can be found here: https://github.com/jarodwilson/linux-muck Jarod Wilson (15): ethernet/atheros: use core min/max MTU checking ethernet/broadcom: use core min/max MTU checking ethernet/intel: use core min/max MTU checking ethernet/marvell: use core min/max MTU checking ethernet/mellanox: use core min/max MTU checking ethernet/qlogic: use core min/max MTU checking ethernet/realtek: use core min/max MTU checking ethernet/sun: use core min/max MTU checking ethernet/dlink: use core min/max MTU checking ethernet/neterion: use core min/max MTU checking ethernet/cavium: use core min/max MTU checking ethernet/ibm: use core min/max MTU checking ethernet/tile: use core min/max MTU checking ethernet/toshiba: use core min/max MTU checking ethernet: use core min/max MTU checking CC: netdev@vger.kernel.org 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/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/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/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/staging/octeon/ethernet.c | 22 ++++++------ 102 files changed, 480 insertions(+), 744 deletions(-) -- 2.10.0
[toc] | [next] | [standalone]
| From | Jarod Wilson <jarod@redhat.com> |
|---|---|
| Date | 2016-10-17 22:10 +0200 |
| Subject | [PATCH net-next 07/15] ethernet/realtek: use core min/max MTU checking |
| Message-ID | <stmop-8jb-11@gated-at.bofh.it> |
| In reply to | #1502414 |
8139cp: min_mtu 60, max_mtu 4096
8139too: min_mtu 68, max_mtu 1770
r8169: min_mtu 60, max_mtu depends on chipset, 1500 to 9k-ish
CC: netdev@vger.kernel.org
CC: Realtek linux nic maintainers <nic_swsd@realtek.com>
Signed-off-by: Jarod Wilson <jarod@redhat.com>
---
drivers/net/ethernet/realtek/8139cp.c | 8 ++++----
drivers/net/ethernet/realtek/8139too.c | 13 ++++---------
drivers/net/ethernet/realtek/r8169.c | 8 ++++----
3 files changed, 12 insertions(+), 17 deletions(-)
diff --git a/drivers/net/ethernet/realtek/8139cp.c b/drivers/net/ethernet/realtek/8139cp.c
index 5297bf7..b7c89eb 100644
--- a/drivers/net/ethernet/realtek/8139cp.c
+++ b/drivers/net/ethernet/realtek/8139cp.c
@@ -1277,10 +1277,6 @@ static int cp_change_mtu(struct net_device *dev, int new_mtu)
{
struct cp_private *cp = netdev_priv(dev);
- /* check for invalid MTU, according to hardware limits */
- if (new_mtu < CP_MIN_MTU || new_mtu > CP_MAX_MTU)
- return -EINVAL;
-
/* if network interface not up, no need for complexity */
if (!netif_running(dev)) {
dev->mtu = new_mtu;
@@ -2010,6 +2006,10 @@ static int cp_init_one (struct pci_dev *pdev, const struct pci_device_id *ent)
dev->vlan_features = NETIF_F_SG | NETIF_F_IP_CSUM | NETIF_F_TSO |
NETIF_F_HIGHDMA;
+ /* MTU range: 60 - 4096 */
+ dev->min_mtu = CP_MIN_MTU;
+ dev->max_mtu = CP_MAX_MTU;
+
rc = register_netdev(dev);
if (rc)
goto err_out_iomap;
diff --git a/drivers/net/ethernet/realtek/8139too.c b/drivers/net/ethernet/realtek/8139too.c
index da4c2d8..9bc047a 100644
--- a/drivers/net/ethernet/realtek/8139too.c
+++ b/drivers/net/ethernet/realtek/8139too.c
@@ -924,19 +924,10 @@ static int rtl8139_set_features(struct net_device *dev, netdev_features_t featur
return 0;
}
-static int rtl8139_change_mtu(struct net_device *dev, int new_mtu)
-{
- if (new_mtu < 68 || new_mtu > MAX_ETH_DATA_SIZE)
- return -EINVAL;
- dev->mtu = new_mtu;
- return 0;
-}
-
static const struct net_device_ops rtl8139_netdev_ops = {
.ndo_open = rtl8139_open,
.ndo_stop = rtl8139_close,
.ndo_get_stats64 = rtl8139_get_stats64,
- .ndo_change_mtu = rtl8139_change_mtu,
.ndo_validate_addr = eth_validate_addr,
.ndo_set_mac_address = rtl8139_set_mac_address,
.ndo_start_xmit = rtl8139_start_xmit,
@@ -1022,6 +1013,10 @@ static int rtl8139_init_one(struct pci_dev *pdev,
dev->hw_features |= NETIF_F_RXALL;
dev->hw_features |= NETIF_F_RXFCS;
+ /* MTU range: 68 - 1770 */
+ dev->min_mtu = ETH_MIN_MTU;
+ dev->max_mtu = MAX_ETH_DATA_SIZE;
+
/* tp zeroed and aligned in alloc_etherdev */
tp = netdev_priv(dev);
diff --git a/drivers/net/ethernet/realtek/r8169.c b/drivers/net/ethernet/realtek/r8169.c
index e55638c..b698ea5 100644
--- a/drivers/net/ethernet/realtek/r8169.c
+++ b/drivers/net/ethernet/realtek/r8169.c
@@ -6673,10 +6673,6 @@ static int rtl8169_change_mtu(struct net_device *dev, int new_mtu)
{
struct rtl8169_private *tp = netdev_priv(dev);
- if (new_mtu < ETH_ZLEN ||
- new_mtu > rtl_chip_infos[tp->mac_version].jumbo_max)
- return -EINVAL;
-
if (new_mtu > ETH_DATA_LEN)
rtl_hw_jumbo_enable(tp);
else
@@ -8430,6 +8426,10 @@ static int rtl_init_one(struct pci_dev *pdev, const struct pci_device_id *ent)
dev->hw_features |= NETIF_F_RXALL;
dev->hw_features |= NETIF_F_RXFCS;
+ /* MTU range: 60 - hw-specific max */
+ dev->min_mtu = ETH_ZLEN;
+ dev->max_mtu = rtl_chip_infos[chipset].jumbo_max;
+
tp->hw_start = cfg->hw_start;
tp->event_slow = cfg->event_slow;
--
2.10.0
[toc] | [prev] | [next] | [standalone]
| From | David Miller <davem@davemloft.net> |
|---|---|
| Date | 2016-10-17 22:10 +0200 |
| Message-ID | <stmop-8jb-19@gated-at.bofh.it> |
| In reply to | #1502414 |
From: Jarod Wilson <jarod@redhat.com> Date: Mon, 17 Oct 2016 15:54:02 -0400 > For the most part, every patch does the same essential thing: removes the > MTU range checking from the drivers' ndo_change_mtu function, puts those > ranges into the core net_device min_mtu and max_mtu fields, and where > possible, removes ndo_change_mtu functions entirely. Jarod, please read my other posting. You've positively broken the maximum MTU for all of these drivers. That's not cool. And this series fixing things doesn't make things better, because now we've significanyly broken bisection for anyone running into this regression. You should have arranged this in such a way that the drivers needing > 1500 byte MTU were not impacted at all by your changes, but that isn't what happened.
[toc] | [prev] | [next] | [standalone]
| From | Jarod Wilson <jarod@redhat.com> |
|---|---|
| Date | 2016-10-17 22:30 +0200 |
| Message-ID | <stmHM-8sQ-23@gated-at.bofh.it> |
| In reply to | #1502419 |
On Mon, Oct 17, 2016 at 04:03:41PM -0400, David Miller wrote: > From: Jarod Wilson <jarod@redhat.com> > Date: Mon, 17 Oct 2016 15:54:02 -0400 > > > For the most part, every patch does the same essential thing: removes the > > MTU range checking from the drivers' ndo_change_mtu function, puts those > > ranges into the core net_device min_mtu and max_mtu fields, and where > > possible, removes ndo_change_mtu functions entirely. > > Jarod, please read my other posting. Done, didn't see it until just after I'd hit send, have replied there as well. > You've positively broken the maximum MTU for all of these drivers. > > That's not cool. > > And this series fixing things doesn't make things better, because now > we've significanyly broken bisection for anyone running into this > regression. Agreed, and my suggestion right now is to revert the 2nd patch from the prior series. I believe it can be resubmitted after all other callers of ether_setup() have been converted to have their own min/max_mtu. > You should have arranged this in such a way that the drivers needing > > 1500 byte MTU were not impacted at all by your changes, but that > isn't what happened. Yeah, I must admit to not looking closely enough at the state the first two patches left things in. It was absolutely my intention to not alter behaviour in any way, but I neglected to test sufficiently without this additional set applied. -- Jarod Wilson jarod@redhat.com
[toc] | [prev] | [next] | [standalone]
| From | David Miller <davem@davemloft.net> |
|---|---|
| Date | 2016-10-18 17:40 +0200 |
| Message-ID | <stEEG-3BE-61@gated-at.bofh.it> |
| In reply to | #1502435 |
From: Jarod Wilson <jarod@redhat.com> Date: Mon, 17 Oct 2016 16:29:43 -0400 > On Mon, Oct 17, 2016 at 04:03:41PM -0400, David Miller wrote: >> From: Jarod Wilson <jarod@redhat.com> >> Date: Mon, 17 Oct 2016 15:54:02 -0400 >> >> > For the most part, every patch does the same essential thing: removes the >> > MTU range checking from the drivers' ndo_change_mtu function, puts those >> > ranges into the core net_device min_mtu and max_mtu fields, and where >> > possible, removes ndo_change_mtu functions entirely. >> >> Jarod, please read my other posting. > > Done, didn't see it until just after I'd hit send, have replied there as > well. > >> You've positively broken the maximum MTU for all of these drivers. >> >> That's not cool. >> >> And this series fixing things doesn't make things better, because now >> we've significanyly broken bisection for anyone running into this >> regression. > > Agreed, and my suggestion right now is to revert the 2nd patch from the > prior series. I believe it can be resubmitted after all other callers of > ether_setup() have been converted to have their own min/max_mtu. > >> You should have arranged this in such a way that the drivers needing >> > 1500 byte MTU were not impacted at all by your changes, but that >> isn't what happened. > > Yeah, I must admit to not looking closely enough at the state the first > two patches left things in. It was absolutely my intention to not alter > behaviour in any way, but I neglected to test sufficiently without this > additional set applied. So what I'm going to do now it simply just apply your current patch series to net-next and hope this gets everything working again. I'm just happy that you acknowledged how badly things got broken, so let's move on and try to avoid this happening again in the future. Thanks.
[toc] | [prev] | [next] | [standalone]
| From | Jarod Wilson <jarod@redhat.com> |
|---|---|
| Date | 2016-10-19 00:30 +0200 |
| Message-ID | <stL3r-8sB-13@gated-at.bofh.it> |
| In reply to | #1503133 |
On Tue, Oct 18, 2016 at 11:33:27AM -0400, David Miller wrote: > From: Jarod Wilson <jarod@redhat.com> > Date: Mon, 17 Oct 2016 16:29:43 -0400 > > > On Mon, Oct 17, 2016 at 04:03:41PM -0400, David Miller wrote: > >> From: Jarod Wilson <jarod@redhat.com> > >> Date: Mon, 17 Oct 2016 15:54:02 -0400 > >> > >> > For the most part, every patch does the same essential thing: removes the > >> > MTU range checking from the drivers' ndo_change_mtu function, puts those > >> > ranges into the core net_device min_mtu and max_mtu fields, and where > >> > possible, removes ndo_change_mtu functions entirely. > >> > >> Jarod, please read my other posting. > > > > Done, didn't see it until just after I'd hit send, have replied there as > > well. > > > >> You've positively broken the maximum MTU for all of these drivers. > >> > >> That's not cool. > >> > >> And this series fixing things doesn't make things better, because now > >> we've significanyly broken bisection for anyone running into this > >> regression. > > > > Agreed, and my suggestion right now is to revert the 2nd patch from the > > prior series. I believe it can be resubmitted after all other callers of > > ether_setup() have been converted to have their own min/max_mtu. > > > >> You should have arranged this in such a way that the drivers needing > >> > 1500 byte MTU were not impacted at all by your changes, but that > >> isn't what happened. > > > > Yeah, I must admit to not looking closely enough at the state the first > > two patches left things in. It was absolutely my intention to not alter > > behaviour in any way, but I neglected to test sufficiently without this > > additional set applied. > > So what I'm going to do now it simply just apply your current patch series > to net-next and hope this gets everything working again. Unfortunately, no, it doesn't get *everything* working again, because... direct ether_setup() callers: drivers/misc/sgi-xp/xpnet.c drivers/net/geneve.c drivers/net/macvlan.c drivers/net/tun.c drivers/net/vxlan.c drivers/net/wan/hdlc.c drivers/net/wan/hdlc_fr.c drivers/net/wireless/ath/wil6210/netdev.c drivers/net/wireless/cisco/airo.c drivers/staging/wlan-ng/p80211netdev.c net/batman-adv/soft-interface.c net/bridge/br_device.c net/openvswitch/vport-internal_dev.c alloc_etherdev*() callers: drivers/infiniband/hw/nes/nes_nic.c drivers/net/hyperv/netvsc_drv.c drivers/net/rionet.c drivers/net/usb/lan78xx.c drivers/net/usb/r8152.c drivers/net/usb/usbnet.c drivers/net/virtio_net.c drivers/net/vmxnet3/vmxnet3_drv.c drivers/net/wireless/atmel/atmel.c drivers/net/wireless/cisco/airo.c drivers/net/wireless/intel/ipw2x00/libipw_module.c net/atm/lec.c I have additional patches for all of these that I haven't yet posted, so I'd still suggest backing out the one patch to keep the above working too until the subsequent patches are posted. > I'm just happy that you acknowledged how badly things got broken, so let's > move on and try to avoid this happening again in the future. > > Thanks. I profusely apologize again for the mess. Was trying to clean up a mess, made another one. Story of my life right now, it seems... :\ -- Jarod Wilson jarod@redhat.com
[toc] | [prev] | [next] | [standalone]
| From | Jarod Wilson <jarod@redhat.com> |
|---|---|
| Date | 2016-10-19 04:40 +0200 |
| Message-ID | <stOXo-2Tk-31@gated-at.bofh.it> |
| In reply to | #1503404 |
On Tue, Oct 18, 2016 at 06:28:20PM -0400, Jarod Wilson wrote: > On Tue, Oct 18, 2016 at 11:33:27AM -0400, David Miller wrote: > > From: Jarod Wilson <jarod@redhat.com> > > Date: Mon, 17 Oct 2016 16:29:43 -0400 > > > > > On Mon, Oct 17, 2016 at 04:03:41PM -0400, David Miller wrote: > > >> From: Jarod Wilson <jarod@redhat.com> > > >> Date: Mon, 17 Oct 2016 15:54:02 -0400 > > >> > > >> > For the most part, every patch does the same essential thing: removes the > > >> > MTU range checking from the drivers' ndo_change_mtu function, puts those > > >> > ranges into the core net_device min_mtu and max_mtu fields, and where > > >> > possible, removes ndo_change_mtu functions entirely. > > >> > > >> Jarod, please read my other posting. > > > > > > Done, didn't see it until just after I'd hit send, have replied there as > > > well. > > > > > >> You've positively broken the maximum MTU for all of these drivers. > > >> > > >> That's not cool. > > >> > > >> And this series fixing things doesn't make things better, because now > > >> we've significanyly broken bisection for anyone running into this > > >> regression. > > > > > > Agreed, and my suggestion right now is to revert the 2nd patch from the > > > prior series. I believe it can be resubmitted after all other callers of > > > ether_setup() have been converted to have their own min/max_mtu. > > > > > >> You should have arranged this in such a way that the drivers needing > > >> > 1500 byte MTU were not impacted at all by your changes, but that > > >> isn't what happened. > > > > > > Yeah, I must admit to not looking closely enough at the state the first > > > two patches left things in. It was absolutely my intention to not alter > > > behaviour in any way, but I neglected to test sufficiently without this > > > additional set applied. > > > > So what I'm going to do now it simply just apply your current patch series > > to net-next and hope this gets everything working again. > > Unfortunately, no, it doesn't get *everything* working again, because... > > direct ether_setup() callers: > > drivers/misc/sgi-xp/xpnet.c > drivers/net/geneve.c > drivers/net/macvlan.c > drivers/net/tun.c > drivers/net/vxlan.c > drivers/net/wan/hdlc.c > drivers/net/wan/hdlc_fr.c > drivers/net/wireless/ath/wil6210/netdev.c > drivers/net/wireless/cisco/airo.c > drivers/staging/wlan-ng/p80211netdev.c > net/batman-adv/soft-interface.c > net/bridge/br_device.c > net/openvswitch/vport-internal_dev.c > > alloc_etherdev*() callers: > drivers/infiniband/hw/nes/nes_nic.c > drivers/net/hyperv/netvsc_drv.c > drivers/net/rionet.c > drivers/net/usb/lan78xx.c > drivers/net/usb/r8152.c > drivers/net/usb/usbnet.c > drivers/net/virtio_net.c > drivers/net/vmxnet3/vmxnet3_drv.c > drivers/net/wireless/atmel/atmel.c > drivers/net/wireless/cisco/airo.c > drivers/net/wireless/intel/ipw2x00/libipw_module.c > net/atm/lec.c > > I have additional patches for all of these that I haven't yet posted, so > I'd still suggest backing out the one patch to keep the above working too > until the subsequent patches are posted. They're all posted now, just 6 more relatively small patches, though the ones touching geneve and vxlan are a bit more involved than any others, and could use a very close look (relevant people should all be cc'd). Still wouldn't have any objection at all to backing out the patch that touches min/max_mtu in ether_setup() though. -- Jarod Wilson jarod@redhat.com
[toc] | [prev] | [next] | [standalone]
| From | David Miller <davem@davemloft.net> |
|---|---|
| Date | 2016-10-18 17:40 +0200 |
| Message-ID | <stEEF-3BE-17@gated-at.bofh.it> |
| In reply to | #1502414 |
From: Jarod Wilson <jarod@redhat.com> Date: Mon, 17 Oct 2016 15:54:02 -0400 > Now that the network stack core min/max MTU checking infrastructure is in > place, time to start making drivers use it. We'll start with the easiest > ones, the ethernet drivers, split roughly by vendor, with a catch-all > patch at the end. > > For the most part, every patch does the same essential thing: removes the > MTU range checking from the drivers' ndo_change_mtu function, puts those > ranges into the core net_device min_mtu and max_mtu fields, and where > possible, removes ndo_change_mtu functions entirely. > > These patches have all been built through the 0-day build infrastructure > provided by Intel, on top of net-next as of October 17. Series applied, thanks Jarod.
[toc] | [prev] | [standalone]
Back to top | Article view | linux.kernel
csiph-web