diff options
Diffstat (limited to 'net/core/dev.c')
| -rw-r--r-- | net/core/dev.c | 19 | 
1 files changed, 11 insertions, 8 deletions
diff --git a/net/core/dev.c b/net/core/dev.c index 0b88eba97da..f453370131a 100644 --- a/net/core/dev.c +++ b/net/core/dev.c @@ -1353,14 +1353,17 @@ EXPORT_SYMBOL(dev_close);   */  void dev_disable_lro(struct net_device *dev)  { -	if (dev->ethtool_ops && dev->ethtool_ops->get_flags && -	    dev->ethtool_ops->set_flags) { -		u32 flags = dev->ethtool_ops->get_flags(dev); -		if (flags & ETH_FLAG_LRO) { -			flags &= ~ETH_FLAG_LRO; -			dev->ethtool_ops->set_flags(dev, flags); -		} -	} +	u32 flags; + +	if (dev->ethtool_ops && dev->ethtool_ops->get_flags) +		flags = dev->ethtool_ops->get_flags(dev); +	else +		flags = ethtool_op_get_flags(dev); + +	if (!(flags & ETH_FLAG_LRO)) +		return; + +	__ethtool_set_flags(dev, flags & ~ETH_FLAG_LRO);  	WARN_ON(dev->features & NETIF_F_LRO);  }  EXPORT_SYMBOL(dev_disable_lro);  |