Message ID | 4E0406C4.6060004@cn.fujitsu.com |
---|---|
State | RFC, archived |
Delegated to: | David Miller |
Headers | show |
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;
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
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;
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(-)