Skip to content

Commit 0369722

Browse files
nikolay@redhat.comdavem330
authored andcommitted
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>
1 parent d9af2d6 commit 0369722

File tree

1 file changed

+6
-1
lines changed

1 file changed

+6
-1
lines changed

net/8021q/vlan_core.c

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -91,7 +91,12 @@ EXPORT_SYMBOL(__vlan_find_dev_deep);
9191

9292
struct net_device *vlan_dev_real_dev(const struct net_device *dev)
9393
{
94-
return vlan_dev_priv(dev)->real_dev;
94+
struct net_device *ret = vlan_dev_priv(dev)->real_dev;
95+
96+
while (is_vlan_dev(ret))
97+
ret = vlan_dev_priv(ret)->real_dev;
98+
99+
return ret;
95100
}
96101
EXPORT_SYMBOL(vlan_dev_real_dev);
97102

0 commit comments

Comments
 (0)