---- On Tue, 31 Jan 2017 17:27:09 +0100 Eric Dumazet <eric.dumazet@xxxxxxxxx> wrote ----
> On Tue, 2017-01-31 at 14:32 +0100, Fredrik Markstrom wrote:
> > ---- On Thu, 19 Jan 2017 19:53:47 +0100 Eric Dumazet <eric.dumazet@xxxxxxxxx> wrote ----
> > > On Thu, 2017-01-19 at 17:41 +0100, Fredrik Markstrom wrote:
> > > > Hello,
> > > >
> > > > I've noticed an inconsistency between how physical ethernet and
> > veth handles mtu.
> > > >
> > > > If I setup two physical interfaces (directly connected) with
> > different mtu:s, only the size of the outgoing packets are limited by
> > the mtu. But with veth a packet is dropped if the mtu of the receiving
> > interface is smaller then the packet size.
> > > >
> > > > This seems inconsistent to me, but maybe there is a reason for
> > it ?
> > > >
> > > > Can someone confirm if it's a deliberate inconsistency or just a
> > side effect of using dev_forward_skb() ?
> > >
> > > It looks this was added in commit
> > > 38d408152a86598a50680a82fe3353b506630409
> > > ("veth: Allow setting the L3 MTU")
> > >
> > > But what was really needed here was a way to change MRU :(
> >
> > Ok, do we consider this correct and/or something we need to be
> > backwards compatible with ? Is it insane to believe that we can fix
> > this "inconsistency" by removing the check ?
> >
> > The commit message reads "For consistency I drop packets on the
> > receive side when they are larger than the MTU", do we know what it's
> > supposed
> > to be consistent with or is that lost in history ?
>
> There is no consistency among existing Ethernet drivers.
>
> Many ethernet drivers size the buffers they post in RX ring buffer
> according to MTU.
>
> If MTU is set to 1500, RX buffers are sized to be about 1536 bytes,
> so you wont be able to receive a 1700 bytes frame.
>
> I guess that you could add a specific veth attribute to precisely
> control MRU, that would not break existing applications.
Ok, I will propose a patch shortly. And thanks, your response time is
awesome !