diff options
author | Eric Dumazet <edumazet@google.com> | 2012-12-29 16:26:10 +0000 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2012-12-30 02:31:59 -0800 |
commit | 8093315a91340bca52549044975d8c7f673b28a1 (patch) | |
tree | ee859ec659115fb11da91c849b81adb3769a8b2c /drivers/net/veth.c | |
parent | 2681128f0ced8aa4e66f221197e183cc16d244fe (diff) | |
download | op-kernel-dev-8093315a91340bca52549044975d8c7f673b28a1.zip op-kernel-dev-8093315a91340bca52549044975d8c7f673b28a1.tar.gz |
veth: extend device features
veth is lacking most modern facilities, like SG, checksums, TSO.
It makes sense to extend dev->features to get them, or GRO aggregation
is defeated by a forced segmentation.
Reported-by: Andrew Vagin <avagin@parallels.com>
Signed-off-by: Eric Dumazet <edumazet@google.com>
Cc: Michał Mirosław <mirq-linux@rere.qmqm.pl>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'drivers/net/veth.c')
-rw-r--r-- | drivers/net/veth.c | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/drivers/net/veth.c b/drivers/net/veth.c index c048f8d..8b2e112 100644 --- a/drivers/net/veth.c +++ b/drivers/net/veth.c @@ -238,6 +238,10 @@ static const struct net_device_ops veth_netdev_ops = { .ndo_set_mac_address = eth_mac_addr, }; +#define VETH_FEATURES (NETIF_F_SG | NETIF_F_FRAGLIST | NETIF_F_ALL_TSO | \ + NETIF_F_HW_CSUM | NETIF_F_RXCSUM | NETIF_F_HIGHDMA | \ + NETIF_F_HW_VLAN_TX | NETIF_F_HW_VLAN_RX) + static void veth_setup(struct net_device *dev) { ether_setup(dev); @@ -248,9 +252,10 @@ static void veth_setup(struct net_device *dev) dev->netdev_ops = &veth_netdev_ops; dev->ethtool_ops = &veth_ethtool_ops; dev->features |= NETIF_F_LLTX; + dev->features |= VETH_FEATURES; dev->destructor = veth_dev_free; - dev->hw_features = NETIF_F_HW_CSUM | NETIF_F_SG | NETIF_F_RXCSUM; + dev->hw_features = VETH_FEATURES; } /* |