Commit 212b573f authored by Michał Mirosław's avatar Michał Mirosław Committed by David S. Miller

ethtool: enable GSO and GRO by default

Signed-off-by: default avatarMichał Mirosław <mirq-linux@rere.qmqm.pl>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 9a279ea3
...@@ -984,6 +984,9 @@ struct net_device { ...@@ -984,6 +984,9 @@ struct net_device {
NETIF_F_SG | NETIF_F_HIGHDMA | \ NETIF_F_SG | NETIF_F_HIGHDMA | \
NETIF_F_FRAGLIST) 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 */ /* Interface index. Unique device identifier */
int ifindex; int ifindex;
int iflink; int iflink;
......
...@@ -5274,6 +5274,12 @@ u32 netdev_fix_features(struct net_device *dev, u32 features) ...@@ -5274,6 +5274,12 @@ u32 netdev_fix_features(struct net_device *dev, u32 features)
features &= ~NETIF_F_TSO; 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 */ /* UFO needs SG and checksumming */
if (features & NETIF_F_UFO) { if (features & NETIF_F_UFO) {
/* maybe split UFO into V4 and V6? */ /* maybe split UFO into V4 and V6? */
...@@ -5430,11 +5436,15 @@ int register_netdevice(struct net_device *dev) ...@@ -5430,11 +5436,15 @@ int register_netdevice(struct net_device *dev)
if (dev->iflink == -1) if (dev->iflink == -1)
dev->iflink = dev->ifindex; 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. */ /* Avoid warning from netdev_fix_features() for GSO without SG */
if (dev->features & NETIF_F_SG) if (!(dev->features & NETIF_F_SG))
dev->features |= NETIF_F_GSO; dev->features &= ~NETIF_F_GSO;
dev->features = netdev_fix_features(dev, dev->features);
/* Enable GRO and NETIF_F_HIGHDMA for vlans by default, /* Enable GRO and NETIF_F_HIGHDMA for vlans by default,
* vlan_dev_init() will do the dev->features check, so these features * vlan_dev_init() will do the dev->features check, so these features
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment