Re: [E1000-devel] [PATCH] net: enable GRO by default for vlan devices

Stephen Hemminger
2010-09-16T06:21:28Z

On Wed, 15 Sep 2010 22:51:46 -0700 (PDT)
David Miller <davem@davemloft.net> wrote:

> From: Stephen Hemminger <shemminger@vyatta.com>
> Date: Wed, 15 Sep 2010 18:16:16 -0700
>
> > On Thu, 16 Sep 2010 00:28:11 +0200
> > Eric Dumazet <eric.dumazet@gmail.com> wrote:
> >
> >> BTW, we have a similar problem for bonding ( GRO is disabled )
> >>
> >> # ethtool -K bond0 gro off
> >> # ethtool -K bond0 gro on
> >> Cannot set device GRO settings: Invalid argument
> >>
> >> Same for vlans on top of bond0
> >
> > Bridge has same problem as well.
>
> Looking this over it should be a simple matter of:
>
> 1) Adding the generic get/set gro ethtool ops to bonding
> and bridge device ops.
>
> 2) Set NETIF_F_GRO in bond/bridge device flags
>
> 3) Maybe some minor fiddling with netdev_increment_features
> and the flag macros it uses?
>
> Patches welcome :-)

I think it is more complex than that. GRO is tied to NAPI,
and bridge/bond don't use NAPI directly. They use netif_rx() for receiving
because layered drivers can't directly up call because of possible
issues with stack depth.

To get GRO working for netif_rx case,
the logic in process_backlog would have to change.
But this queue is processing packets from multiple devices so
it is not clear if GRO could be used.

--