Patchwork [RFC,1/2] net: vlan: enable GSO by default

login
register
mail settings
Submitter Shan Wei
Date June 24, 2011, 3:38 a.m.
Message ID <4E0406C4.6060004@cn.fujitsu.com>
Download mbox | patch
Permalink /patch/101714/
State RFC
Delegated to: David Miller
Headers show

Comments

Shan Wei - June 24, 2011, 3:38 a.m.
Currently, GSO for vlan device is off, and can't be set to on.
Although underlying device don't support TSO, we still
should use software segments for vlan device.

In vlan_dev_fix_features(), final features is decided by
features of real device and vlan_features of real device.

real_dev->vlan_features is initialized in register_netdevice()
only with NETIF_F_GRO, not NETIF_F_GSO.

So, now GRO is ok, but GSO is broken by default.


Signed-off-by: Shan Wei <shanwei@cn.fujitsu.com>
---
 net/8021q/vlan_dev.c |    5 +++++
 1 files changed, 5 insertions(+), 0 deletions(-)
Shan Wei - July 5, 2011, 9:35 a.m.
Ping....

Shan Wei wrote, at 06/24/2011 11:38 AM:
> Currently, GSO for vlan device is off, and can't be set to on.
> Although underlying device don't support TSO, we still
> should use software segments for vlan device.
> 
> In vlan_dev_fix_features(), final features is decided by
> features of real device and vlan_features of real device.
> 
> real_dev->vlan_features is initialized in register_netdevice()
> only with NETIF_F_GRO, not NETIF_F_GSO.
> 
> So, now GRO is ok, but GSO is broken by default.
> 
> 
> Signed-off-by: Shan Wei <shanwei@cn.fujitsu.com>
> ---
>  net/8021q/vlan_dev.c |    5 +++++
>  1 files changed, 5 insertions(+), 0 deletions(-)
> 
> diff --git a/net/8021q/vlan_dev.c b/net/8021q/vlan_dev.c
> index 1c9aa8c..d8f45ba 100644
> --- a/net/8021q/vlan_dev.c
> +++ b/net/8021q/vlan_dev.c
> @@ -588,9 +588,14 @@ static void vlan_dev_uninit(struct net_device *dev)
>  static u32 vlan_dev_fix_features(struct net_device *dev, u32 features)
>  {
>  	struct net_device *real_dev = vlan_dev_info(dev)->real_dev;
> +	u32 old_features = features;
>  
>  	features &= real_dev->features;
>  	features &= real_dev->vlan_features;
> +
> +	if (old_features & NETIF_F_SOFT_FEATURES)
> +		features |= old_features & NETIF_F_SOFT_FEATURES;
> +
>  	if (dev_ethtool_get_rx_csum(real_dev))
>  		features |= NETIF_F_RXCSUM;
>  	features |= NETIF_F_LLTX;
David Miller - July 5, 2011, 10:08 a.m.
From: Shan Wei <shanwei@cn.fujitsu.com>
Date: Tue, 05 Jul 2011 17:35:31 +0800

> Ping....

I hope you're not waiting for something from me.  If you mean for me
to seriously review and apply this patch, resubmit it without "RFC" in
subject.
--
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Patch

diff --git a/net/8021q/vlan_dev.c b/net/8021q/vlan_dev.c
index 1c9aa8c..d8f45ba 100644
--- a/net/8021q/vlan_dev.c
+++ b/net/8021q/vlan_dev.c
@@ -588,9 +588,14 @@  static void vlan_dev_uninit(struct net_device *dev)
 static u32 vlan_dev_fix_features(struct net_device *dev, u32 features)
 {
 	struct net_device *real_dev = vlan_dev_info(dev)->real_dev;
+	u32 old_features = features;
 
 	features &= real_dev->features;
 	features &= real_dev->vlan_features;
+
+	if (old_features & NETIF_F_SOFT_FEATURES)
+		features |= old_features & NETIF_F_SOFT_FEATURES;
+
 	if (dev_ethtool_get_rx_csum(real_dev))
 		features |= NETIF_F_RXCSUM;
 	features |= NETIF_F_LLTX;