Commit 53f6b708f89668cfb5eb9e49384b64b237bae0b2

Authored by Toshiaki Makita
Committed by David S. Miller
1 parent 5fbea33740

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>

Showing 1 changed file with 4 additions and 3 deletions Side-by-side Diff

net/8021q/vlan_dev.c
... ... @@ -579,11 +579,12 @@
579 579 (1<<__LINK_STATE_PRESENT);
580 580  
581 581 dev->hw_features = NETIF_F_ALL_CSUM | NETIF_F_SG |
582   - NETIF_F_FRAGLIST | NETIF_F_ALL_TSO |
  582 + NETIF_F_FRAGLIST | NETIF_F_GSO_SOFTWARE |
583 583 NETIF_F_HIGHDMA | NETIF_F_SCTP_CSUM |
584 584 NETIF_F_ALL_FCOE;
585 585  
586   - dev->features |= real_dev->vlan_features | NETIF_F_LLTX;
  586 + dev->features |= real_dev->vlan_features | NETIF_F_LLTX |
  587 + NETIF_F_GSO_SOFTWARE;
587 588 dev->gso_max_size = real_dev->gso_max_size;
588 589 if (dev->features & NETIF_F_VLAN_FEATURES)
589 590 netdev_warn(real_dev, "VLAN features are set incorrectly. Q-in-Q configurations may not work correctly.\n");
... ... @@ -648,7 +649,7 @@
648 649 features |= NETIF_F_RXCSUM;
649 650 features = netdev_intersect_features(features, real_dev->features);
650 651  
651   - features |= old_features & NETIF_F_SOFT_FEATURES;
  652 + features |= old_features & (NETIF_F_SOFT_FEATURES | NETIF_F_GSO_SOFTWARE);
652 653 features |= NETIF_F_LLTX;
653 654  
654 655 return features;