All of lore.kernel.org
 help / color / mirror / Atom feed
From: Jarod Wilson <jarod@redhat.com>
To: Andrew Lunn <andrew@lunn.ch>
Cc: Florian Fainelli <f.fainelli@gmail.com>,
	linux-kernel@vger.kernel.org, netdev@vger.kernel.org,
	Asbjoern Sloth Toennesen <asbjorn@asbjorn.st>,
	R Parameswaran <parameswaran.r7@gmail.com>,
	Vivien Didelot <vivien.didelot@savoirfairelinux.com>
Subject: Re: [PATCH net] net: remove MTU limits on a few ether_setup callers
Date: Fri, 21 Oct 2016 11:48:51 -0400	[thread overview]
Message-ID: <20161021154851.GE11396@redhat.com> (raw)
In-Reply-To: <20161021084441.GC16974@lunn.ch>

On Fri, Oct 21, 2016 at 10:44:41AM +0200, Andrew Lunn wrote:
> On Thu, Oct 20, 2016 at 08:42:46PM -0700, Florian Fainelli wrote:
> > Le 20/10/2016 à 20:25, Jarod Wilson a écrit :
> > > These few drivers call ether_setup(), but have no ndo_change_mtu, and thus
> > > were overlooked for changes to MTU range checking behavior. They
> > > previously had no range checks, so for feature-parity, set their min_mtu
> > > to 0 and max_mtu to ETH_MAX_MTU (65535), instead of the 68 and 1500
> > > inherited from the ether_setup() changes. Fine-tuning can come after we get
> > > back to full feature-parity here.
> > > 
> > > CC: netdev@vger.kernel.org
> > > Reported-by: Asbjoern Sloth Toennesen <asbjorn@asbjorn.st>
> > > CC: Asbjoern Sloth Toennesen <asbjorn@asbjorn.st>
> > > CC: R Parameswaran <parameswaran.r7@gmail.com>
> > > Signed-off-by: Jarod Wilson <jarod@redhat.com>
> > > ---
> > 
> > > diff --git a/net/dsa/slave.c b/net/dsa/slave.c
> > > index 68714a5..d0c7bce 100644
> > > --- a/net/dsa/slave.c
> > > +++ b/net/dsa/slave.c
> > > @@ -1247,6 +1247,8 @@ int dsa_slave_create(struct dsa_switch *ds, struct device *parent,
> > >  	slave_dev->priv_flags |= IFF_NO_QUEUE;
> > >  	slave_dev->netdev_ops = &dsa_slave_netdev_ops;
> > >  	slave_dev->switchdev_ops = &dsa_slave_switchdev_ops;
> > > +	slave_dev->min_mtu = 0;
> > > +	slave_dev->max_mtu = ETH_MAX_MTU;
> > >  	SET_NETDEV_DEVTYPE(slave_dev, &dsa_type);
> > 
> > Actually for DSA, a reasonable minimum is probably 68 for the following
> > reasons: ETH_ZLEN of 60 bytes + FCS (4 bytes) + 2/4/8 bytes of
> > Ethernet switch tag (which is dependent on the tagging protocol
> > used).
> 
> Humm, isn't the switch tag added by the layer below this? So this
> should be - 2/4/8 bytes, so that the assembled frame that actually
> hits the conduit interface has an MTU of 64.

I'm all for fine-tuning things to be more correct, but my initial approach
here was to restore the ranges that were previously there, and DSA had no
upper or lower bounds checks. I'm not at all familiar with DSA either way.

> > Such an Ethernet interface would submit packets through the conduit
> > interface which is connected to an Ethernet switches, and those
> > typically discard packets smaller than 64 bytes +/- their custom tag
> > length.
> 
> I have a purely theoretical observation, i.e. i have not checked the
> datasheets. You can also control some of the Marvell switches by
> sending it ethernet frames containing commands. Most commands are 4
> bytes long. So an Ethernet header + 4 bytes is < 64. I expect the
> switch will accept command frames which are padded to stop them being
> runts. Also, such frames will be submitted to the conduit interface,
> not the slave interface.

So presumably, slave_dev->min_mtu wouldn't come into play in that
scenario, and we wouldn't break that functionality if min_mtu did get get
to 64 or 68 or whatever > 0.

-- 
Jarod Wilson
jarod@redhat.com

  reply	other threads:[~2016-10-21 15:49 UTC|newest]

Thread overview: 6+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-10-21  3:25 [PATCH net] net: remove MTU limits on a few ether_setup callers Jarod Wilson
2016-10-21  3:42 ` Florian Fainelli
2016-10-21  8:44   ` Andrew Lunn
2016-10-21 15:48     ` Jarod Wilson [this message]
2016-10-21 15:59       ` Andrew Lunn
2016-10-21 17:58 ` David Miller

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20161021154851.GE11396@redhat.com \
    --to=jarod@redhat.com \
    --cc=andrew@lunn.ch \
    --cc=asbjorn@asbjorn.st \
    --cc=f.fainelli@gmail.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=netdev@vger.kernel.org \
    --cc=parameswaran.r7@gmail.com \
    --cc=vivien.didelot@savoirfairelinux.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.