Re: [PATCH] vlan: enable GRO if real_dev supports it

David Miller
2010-09-15T17:14:00Z

From: Eric Dumazet <eric.dumazet@gmail.com>
Date: Wed, 15 Sep 2010 19:08:40 +0200

> Le mercredi 15 septembre 2010 à 09:37 -0700, Brandon Philips a écrit :
>> Currently vlan devices don't have GRO by default as none of the Ethernet
>> drivers add NETIF_F_GRO to their vlan_features.
>>
>> As GRO is a software feature just propogate GRO from the real_dev in the
>> vlan core. There is no need to have the drivers each add NETIF_F_GRO to
>> their vlan_features.
>>
>> Signed-off-by: Brandon Philips <bphilips@suse.de>
>> ---
>> net/8021q/vlan_dev.c | 1 +
>> 1 files changed, 1 insertions(+), 0 deletions(-)
>>
>> diff --git a/net/8021q/vlan_dev.c b/net/8021q/vlan_dev.c
>> index 3bccdd1..6fbc445 100644
>> --- a/net/8021q/vlan_dev.c
>> +++ b/net/8021q/vlan_dev.c
>> @@ -735,6 +735,7 @@ static int vlan_dev_init(struct net_device *dev)
>> (1<<__LINK_STATE_DORMANT))) |
>> (1<<__LINK_STATE_PRESENT);
>>
>> + dev->features |= real_dev->features & NETIF_F_GRO;
>> dev->features |= real_dev->features & real_dev->vlan_features;
>> dev->gso_max_size = real_dev->gso_max_size;
>>
>
> Hmm, this is only part of a generic solution.
>
> If I enable gro with "ethtool -K eth0 gro on", should we propagate GRO
> on vlan eth0.555 ?

I think a better way to implement this is to set NETIF_F_GRO in
netdev->vlan_features at register_netdev() time if it is set in
netdev->features

That is the implementation I was implying earlier in this thread.