ethtool: enable GSO and GRO by default

Signed-off-by: Michał Mirosław <mirq-linux@rere.qmqm.pl>
Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
Michał Mirosław 2011-02-15 16:59:16 +00:00 committed by David S. Miller
parent 9a279ea3a7
commit 212b573f55
2 changed files with 17 additions and 4 deletions

View File

@ -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;

View File

@ -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