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

From: Stephen Hemminger <[email-masked]>
Date: Wed, 15 Sep 2010 23:21:25 -0700

On Wed, 15 Sep 2010 22:51:46 -0700 (PDT)
David Miller <[email-masked]> wrote:

> From: Stephen Hemminger <[email-masked]>
> Date: Wed, 15 Sep 2010 18:16:16 -0700
> 
> > On Thu, 16 Sep 2010 00:28:11 +0200
> > Eric Dumazet <[email-masked]> 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.

--