diff options
author | Toshiaki Makita <makita.toshiaki@lab.ntt.co.jp> | 2014-12-10 11:43:13 +0900 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2014-12-12 10:58:53 -0500 |
commit | 53f6b708f89668cfb5eb9e49384b64b237bae0b2 (patch) | |
tree | 1189164adb4f6654cd99bfe4cafa38bfd8a9296b /net/8021q/vlan_dev.c | |
parent | 5fbea33740aeb948422d7b7e8aafbeac362264b2 (diff) | |
download | linux-stable-53f6b708f89668cfb5eb9e49384b64b237bae0b2.tar.gz linux-stable-53f6b708f89668cfb5eb9e49384b64b237bae0b2.tar.bz2 linux-stable-53f6b708f89668cfb5eb9e49384b64b237bae0b2.zip |
vlan: Add ability to always enable TSO/UFO
Since the real device can segment packets by software, a vlan device
can set TSO/UFO even when the real device doesn't have those features.
Unlike GSO, this allows packets to be segmented after Qdisc.
Signed-off-by: Toshiaki Makita <makita.toshiaki@lab.ntt.co.jp>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/8021q/vlan_dev.c')
-rw-r--r-- | net/8021q/vlan_dev.c | 7 |
1 files changed, 4 insertions, 3 deletions
diff --git a/net/8021q/vlan_dev.c b/net/8021q/vlan_dev.c index 376805005cc7..118956448cf6 100644 --- a/net/8021q/vlan_dev.c +++ b/net/8021q/vlan_dev.c @@ -579,11 +579,12 @@ static int vlan_dev_init(struct net_device *dev) (1<<__LINK_STATE_PRESENT); dev->hw_features = NETIF_F_ALL_CSUM | NETIF_F_SG | - NETIF_F_FRAGLIST | NETIF_F_ALL_TSO | + NETIF_F_FRAGLIST | NETIF_F_GSO_SOFTWARE | NETIF_F_HIGHDMA | NETIF_F_SCTP_CSUM | NETIF_F_ALL_FCOE; - dev->features |= real_dev->vlan_features | NETIF_F_LLTX; + dev->features |= real_dev->vlan_features | NETIF_F_LLTX | + NETIF_F_GSO_SOFTWARE; dev->gso_max_size = real_dev->gso_max_size; if (dev->features & NETIF_F_VLAN_FEATURES) netdev_warn(real_dev, "VLAN features are set incorrectly. Q-in-Q configurations may not work correctly.\n"); @@ -648,7 +649,7 @@ static netdev_features_t vlan_dev_fix_features(struct net_device *dev, features |= NETIF_F_RXCSUM; features = netdev_intersect_features(features, real_dev->features); - features |= old_features & NETIF_F_SOFT_FEATURES; + features |= old_features & (NETIF_F_SOFT_FEATURES | NETIF_F_GSO_SOFTWARE); features |= NETIF_F_LLTX; return features; |