net: make dev_disable_lro use physical device if passed a vlan dev (v2)
authorNeil Horman <nhorman@tuxdriver.com>
Tue, 24 May 2011 08:31:09 +0000 (08:31 +0000)
committerDavid S. Miller <davem@davemloft.net>
Wed, 25 May 2011 21:55:25 +0000 (17:55 -0400)
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>
net/core/dev.c

index ec11d757c1fc2a87221afb50490eb1a8117aac66..c7e305d13b71b9371aa8973354c2b4cbe09889f6 100644 (file)
@@ -1308,6 +1308,13 @@ void dev_disable_lro(struct net_device *dev)
 {
        u32 flags;
 
+       /*
+        * If we're trying to disable lro on a vlan device
+        * use the underlying physical device instead
+        */
+       if (is_vlan_dev(dev))
+               dev = vlan_dev_real_dev(dev);
+
        if (dev->ethtool_ops && dev->ethtool_ops->get_flags)
                flags = dev->ethtool_ops->get_flags(dev);
        else