vlan: make vlan_dev_real_dev work over stacked vlans
Sometimes we might have stacked vlans on top of each other, and we're interested in the first non-vlan real device on the path, so transform vlan_dev_real_dev to go over the stacked vlans and extract the first non-vlan device. Signed-off-by: Nikolay Aleksandrov <nikolay@redhat.com> Signed-off-by: Veaceslav Falico <vfalico@redhat.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
d9af2d67e4
commit
0369722f02
|
@ -91,7 +91,12 @@ EXPORT_SYMBOL(__vlan_find_dev_deep);
|
||||||
|
|
||||||
struct net_device *vlan_dev_real_dev(const struct net_device *dev)
|
struct net_device *vlan_dev_real_dev(const struct net_device *dev)
|
||||||
{
|
{
|
||||||
return vlan_dev_priv(dev)->real_dev;
|
struct net_device *ret = vlan_dev_priv(dev)->real_dev;
|
||||||
|
|
||||||
|
while (is_vlan_dev(ret))
|
||||||
|
ret = vlan_dev_priv(ret)->real_dev;
|
||||||
|
|
||||||
|
return ret;
|
||||||
}
|
}
|
||||||
EXPORT_SYMBOL(vlan_dev_real_dev);
|
EXPORT_SYMBOL(vlan_dev_real_dev);
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue