Re: [PATCH] sky2: don't do GRO on second port

Eric Dumazet
2010-09-02T09:31:54Z

Le jeudi 02 septembre 2010 à 08:33 +0000, Jarek Poplawski a écrit :
> On Wed, Sep 01, 2010 at 02:51:51PM -0700, David Miller wrote:
> > The only scenerio you can guarentee that all packets for a given
> > flow key will be treated the same is the one where the input device
> > is the same as well.
> >
> > When there is a single napi --> device mapping, it works, but without
> > that invariant it doesn't.
>
> Do you mean a single napi can't be used eg. for vlan_gro and napi_gro?
> (napi_gro handles flows for skb->dev different from napi->dev or I
> miss something?)
>

Same napi can be used both for vlan tagged trafic and "non tagged
trafic".

vlan_gro_common() does the right thing, when initializing skb->dev to
the vlan device, before doing the GRO loop.

So if we receive two packets on same ethernet device, two different
vlans, vlan_gro_common() automatically say they are not part of the same
flow, even if upper layers would say "it's ok for these two packets to
merge". Of course, we wont ask upper layers what they think :)

So we must keep the test against skb->dev, because of vlans,

diffs = (unsigned long)p->dev ^ (unsigned long)skb->dev;

(both in vlan_gro_common() and __napi_gro_receive())