aboutsummaryrefslogtreecommitdiffstats
path: root/net
diff options
context:
space:
mode:
Diffstat (limited to 'net')
-rw-r--r--net/core/dev.c19
-rw-r--r--net/core/ethtool.c2
2 files changed, 12 insertions, 9 deletions
diff --git a/net/core/dev.c b/net/core/dev.c
index 0b88eba97dab..f453370131a0 100644
--- a/net/core/dev.c
+++ b/net/core/dev.c
@@ -1353,14 +1353,17 @@ EXPORT_SYMBOL(dev_close);
1353 */ 1353 */
1354void dev_disable_lro(struct net_device *dev) 1354void dev_disable_lro(struct net_device *dev)
1355{ 1355{
1356 if (dev->ethtool_ops && dev->ethtool_ops->get_flags && 1356 u32 flags;
1357 dev->ethtool_ops->set_flags) { 1357
1358 u32 flags = dev->ethtool_ops->get_flags(dev); 1358 if (dev->ethtool_ops && dev->ethtool_ops->get_flags)
1359 if (flags & ETH_FLAG_LRO) { 1359 flags = dev->ethtool_ops->get_flags(dev);
1360 flags &= ~ETH_FLAG_LRO; 1360 else
1361 dev->ethtool_ops->set_flags(dev, flags); 1361 flags = ethtool_op_get_flags(dev);
1362 } 1362
1363 } 1363 if (!(flags & ETH_FLAG_LRO))
1364 return;
1365
1366 __ethtool_set_flags(dev, flags & ~ETH_FLAG_LRO);
1364 WARN_ON(dev->features & NETIF_F_LRO); 1367 WARN_ON(dev->features & NETIF_F_LRO);
1365} 1368}
1366EXPORT_SYMBOL(dev_disable_lro); 1369EXPORT_SYMBOL(dev_disable_lro);
diff --git a/net/core/ethtool.c b/net/core/ethtool.c
index a1086fb0c0c7..24bd57493c0d 100644
--- a/net/core/ethtool.c
+++ b/net/core/ethtool.c
@@ -513,7 +513,7 @@ static int ethtool_set_one_feature(struct net_device *dev,
513 } 513 }
514} 514}
515 515
516static int __ethtool_set_flags(struct net_device *dev, u32 data) 516int __ethtool_set_flags(struct net_device *dev, u32 data)
517{ 517{
518 u32 changed; 518 u32 changed;
519 519