Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

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

ethtool: enable GSO and GRO by default

parent 9a279ea3
Loading
Loading
Loading
Loading
+3 −0
Original line number Diff line number Diff line
@@ -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;
+14 −4
Original line number Diff line number Diff line
@@ -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