Re: [PATCH net-next 00/15] ethernet: use core min/max MTU checking
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 > > 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 > > >> 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 ja...@redhat.com
Re: [PATCH net-next 00/15] ethernet: use core min/max MTU checking
On Tue, Oct 18, 2016 at 11:33:27AM -0400, David Miller wrote: > From: Jarod Wilson > 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 > >> 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 ja...@redhat.com
Re: [PATCH net-next 00/15] ethernet: use core min/max MTU checking
From: Jarod Wilson 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.
Re: [PATCH net-next 00/15] ethernet: use core min/max MTU checking
From: Jarod Wilson 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 >> 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.
Re: [PATCH net-next 00/15] ethernet: use core min/max MTU checking
On Mon, Oct 17, 2016 at 04:03:41PM -0400, David Miller wrote: > From: Jarod Wilson > 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 ja...@redhat.com
Re: [PATCH net-next 00/15] ethernet: use core min/max MTU checking
From: Jarod Wilson 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.
[PATCH net-next 00/15] ethernet: use core min/max MTU checking
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 - dri