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