提交 212b573f 编写于 作者: M Michał Mirosław 提交者: David S. Miller

ethtool: enable GSO and GRO by default

Signed-off-by: NMichał Mirosław <mirq-linux@rere.qmqm.pl>
Signed-off-by: NDavid S. Miller <davem@davemloft.net>
上级 9a279ea3
......@@ -984,6 +984,9 @@ struct net_device {
NETIF_F_SG | NETIF_F_HIGHDMA | \
NETIF_F_FRAGLIST)
/* changeable features with no special hardware requirements */
#define NETIF_F_SOFT_FEATURES (NETIF_F_GSO | NETIF_F_GRO)
/* Interface index. Unique device identifier */
int ifindex;
int iflink;
......
......@@ -5274,6 +5274,12 @@ u32 netdev_fix_features(struct net_device *dev, u32 features)
features &= ~NETIF_F_TSO;
}
/* Software GSO depends on SG. */
if ((features & NETIF_F_GSO) && !(features & NETIF_F_SG)) {
netdev_info(dev, "Dropping NETIF_F_GSO since no SG feature.\n");
features &= ~NETIF_F_GSO;
}
/* UFO needs SG and checksumming */
if (features & NETIF_F_UFO) {
/* maybe split UFO into V4 and V6? */
......@@ -5430,11 +5436,15 @@ int register_netdevice(struct net_device *dev)
if (dev->iflink == -1)
dev->iflink = dev->ifindex;
dev->features = netdev_fix_features(dev, dev->features);
/* Enable software offloads by default - will be stripped in
* netdev_fix_features() if not supported. */
dev->features |= NETIF_F_SOFT_FEATURES;
/* Enable software GSO if SG is supported. */
if (dev->features & NETIF_F_SG)
dev->features |= NETIF_F_GSO;
/* Avoid warning from netdev_fix_features() for GSO without SG */
if (!(dev->features & NETIF_F_SG))
dev->features &= ~NETIF_F_GSO;
dev->features = netdev_fix_features(dev, dev->features);
/* Enable GRO and NETIF_F_HIGHDMA for vlans by default,
* vlan_dev_init() will do the dev->features check, so these features
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册