[Devel] [PATCH rh7] net: Fix vlan NETIF_F_VIRTUAL feature initialization

Kirill Tkhai ktkhai at odin.com
Tue Aug 4 09:01:03 PDT 2015


vlan_setup() is called when dev's net hasn't been set yet:

rtnl_create_link
    alloc_netdev_mqs
        dev_net_set(dev, &init_net)
        vlan_setup
           ...
           if (!ve_is_super(dev_net(dev)->owner_ve))
              dev->features |= NETIF_F_VIRTUAL
           ...
    dev_net_set(dev, net)

So vlan's dev has no NETIF_F_VIRTUAL feature, and further
check of ve_is_dev_movable() fails.

Patch makes the feature to be set always, independent
of dev_net(). Anyway, in further we test it only if
ve is not super. Also, others (loopback for exmple) set
it always too.

https://jira.sw.ru/browse/PSBM-35266

Signed-off-by: Kirill Tkhai <ktkhai at odin.com>
---
 net/8021q/vlan_dev.c |    3 +--
 1 file changed, 1 insertion(+), 2 deletions(-)

diff --git a/net/8021q/vlan_dev.c b/net/8021q/vlan_dev.c
index 80fa918..09205c3 100644
--- a/net/8021q/vlan_dev.c
+++ b/net/8021q/vlan_dev.c
@@ -794,6 +794,5 @@ void vlan_setup(struct net_device *dev)
 	dev->ethtool_ops	= &vlan_ethtool_ops;
 
 	memset(dev->broadcast, 0, ETH_ALEN);
-	if (!ve_is_super(dev_net(dev)->owner_ve))
-		dev->features |= NETIF_F_VIRTUAL;
+	dev->features |= NETIF_F_VIRTUAL;
 }




More information about the Devel mailing list