mirror of https://gitee.com/openkylin/linux.git
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>
This commit is contained in:
parent
2681128f0c
commit
8093315a91
|
@ -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;
|
||||
}
|
||||
|
||||
/*
|
||||
|
|
Loading…
Reference in New Issue