Re: [PATCH v3 net-next 2/2] net: deprecate eth_change_mtu, remove usage

From: Jarod Wilson
Date: Mon Oct 17 2016 - 16:07:33 EST


On Mon, Oct 17, 2016 at 01:25:53PM -0400, David Miller wrote:
> From: Jakub Kicinski <kubakici@xxxxx>
> Date: Mon, 17 Oct 2016 18:20:49 +0100
>
> > Hm. I must be missing something really obvious. I just booted
> > net-next an hour ago and couldn't set MTU to anything larger than 1500
> > on either nfp or igb. As far as I can read the code it will set the
> > max_mtu to 1500 in setup_ether() but none of the jumbo-capable drivers
> > had been touched by Jarod so far...
>
> Indeed.
>
> Jarod, this doesn't work.
>
> I guess the idea was that if the driver overrides ndo_change_mtu and
> enforeced it's limits there, the driver would still work after your
> changes.
>
> But that isn't what is happening, look at the IGB example.
>
> It uses ether_setup(), which sets those new defaults, but now when
> the MTU is changed you enforce those default min/max before the
> driver's ->ndo_change_mtu() has a change to step in front and make
> the decision on it's own.
>
> This means your changes pretty much did indeed break a lot of
> drivers's ability to set larger than a 1500 byte MTU.

Argh. Yeah, I see it now. I was primarily operating with the follow-on
patches also in play, which do touch all the ethernet drivers and set
max_mtu to match current behavior, didn't consider the max_mtu case where
only the initial patches were applied and the follow-on ones weren't. I've
sent that set, which should theoretically make this problem go away, but I
can also try to rework things if need be to restore intermediate jumbo
frames functionality. (And there are actually non-ethernet devices that
also call ether_setup and may or may not have larger than 1500 mtu that
aren't yet addressed by that follow-on set).

--
Jarod Wilson
jarod@xxxxxxxxxx