aboutsummaryrefslogtreecommitdiffstats
path: root/net/core/dev.c
diff options
context:
space:
mode:
Diffstat (limited to 'net/core/dev.c')
-rw-r--r--net/core/dev.c12
1 files changed, 11 insertions, 1 deletions
diff --git a/net/core/dev.c b/net/core/dev.c
index bcb05cb799c1..c7e305d13b71 100644
--- a/net/core/dev.c
+++ b/net/core/dev.c
@@ -1308,6 +1308,13 @@ void dev_disable_lro(struct net_device *dev)
1308{ 1308{
1309 u32 flags; 1309 u32 flags;
1310 1310
1311 /*
1312 * If we're trying to disable lro on a vlan device
1313 * use the underlying physical device instead
1314 */
1315 if (is_vlan_dev(dev))
1316 dev = vlan_dev_real_dev(dev);
1317
1311 if (dev->ethtool_ops && dev->ethtool_ops->get_flags) 1318 if (dev->ethtool_ops && dev->ethtool_ops->get_flags)
1312 flags = dev->ethtool_ops->get_flags(dev); 1319 flags = dev->ethtool_ops->get_flags(dev);
1313 else 1320 else
@@ -5954,7 +5961,10 @@ EXPORT_SYMBOL(free_netdev);
5954void synchronize_net(void) 5961void synchronize_net(void)
5955{ 5962{
5956 might_sleep(); 5963 might_sleep();
5957 synchronize_rcu(); 5964 if (rtnl_is_locked())
5965 synchronize_rcu_expedited();
5966 else
5967 synchronize_rcu();
5958} 5968}
5959EXPORT_SYMBOL(synchronize_net); 5969EXPORT_SYMBOL(synchronize_net);
5960 5970