diff options
author | Neil Horman <nhorman@tuxdriver.com> | 2011-05-24 04:31:09 -0400 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2011-05-25 17:55:25 -0400 |
commit | f11970e383acd6f505f492f1bc07fb1a4d884829 (patch) | |
tree | 5dfa4653fedb08174f1143146a6fb205033d5243 /net | |
parent | 6dcbbe25dcc9bd2bdeb4f685f8fb874ffc10e6be (diff) |
net: make dev_disable_lro use physical device if passed a vlan dev (v2)
If the device passed into dev_disable_lro is a vlan, then repoint the dev
poniter so that we actually modify the underlying physical device.
Signed-of-by: Neil Horman <nhorman@tuxdriver.com>
CC: davem@davemloft.net
CC: bhutchings@solarflare.com
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net')
-rw-r--r-- | net/core/dev.c | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/net/core/dev.c b/net/core/dev.c index ec11d757c1fc..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 |