diff options
Diffstat (limited to 'drivers/net/xen-netback/interface.c')
-rw-r--r-- | drivers/net/xen-netback/interface.c | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/drivers/net/xen-netback/interface.c b/drivers/net/xen-netback/interface.c index cb0d8ea3d9f2..e4aa26748f80 100644 --- a/drivers/net/xen-netback/interface.c +++ b/drivers/net/xen-netback/interface.c | |||
@@ -214,8 +214,10 @@ static netdev_features_t xenvif_fix_features(struct net_device *dev, | |||
214 | 214 | ||
215 | if (!vif->can_sg) | 215 | if (!vif->can_sg) |
216 | features &= ~NETIF_F_SG; | 216 | features &= ~NETIF_F_SG; |
217 | if (!vif->gso && !vif->gso_prefix) | 217 | if (~(vif->gso_mask | vif->gso_prefix_mask) & GSO_BIT(TCPV4)) |
218 | features &= ~NETIF_F_TSO; | 218 | features &= ~NETIF_F_TSO; |
219 | if (~(vif->gso_mask | vif->gso_prefix_mask) & GSO_BIT(TCPV6)) | ||
220 | features &= ~NETIF_F_TSO6; | ||
219 | if (!vif->ip_csum) | 221 | if (!vif->ip_csum) |
220 | features &= ~NETIF_F_IP_CSUM; | 222 | features &= ~NETIF_F_IP_CSUM; |
221 | if (!vif->ipv6_csum) | 223 | if (!vif->ipv6_csum) |
@@ -320,7 +322,7 @@ struct xenvif *xenvif_alloc(struct device *parent, domid_t domid, | |||
320 | dev->netdev_ops = &xenvif_netdev_ops; | 322 | dev->netdev_ops = &xenvif_netdev_ops; |
321 | dev->hw_features = NETIF_F_SG | | 323 | dev->hw_features = NETIF_F_SG | |
322 | NETIF_F_IP_CSUM | NETIF_F_IPV6_CSUM | | 324 | NETIF_F_IP_CSUM | NETIF_F_IPV6_CSUM | |
323 | NETIF_F_TSO; | 325 | NETIF_F_TSO | NETIF_F_TSO6; |
324 | dev->features = dev->hw_features | NETIF_F_RXCSUM; | 326 | dev->features = dev->hw_features | NETIF_F_RXCSUM; |
325 | SET_ETHTOOL_OPS(dev, &xenvif_ethtool_ops); | 327 | SET_ETHTOOL_OPS(dev, &xenvif_ethtool_ops); |
326 | 328 | ||