diff options
author | 2014-05-16 22:29:17 -0400 | |
---|---|---|
committer | 2014-05-16 22:29:17 -0400 | |
commit | a8d0d8417c0bdc870d28afb83bc12e61a818efa3 (patch) | |
tree | c9c13fc99aaa8f2c62d21b5ffbb1ece6d1a2c00b /include/linux/if_vlan.h | |
parent | Merge branch 'stacked_netdevice_locking' (diff) | |
parent | bonding: Fix alb mode to only use first level vlans. (diff) | |
download | wireguard-linux-a8d0d8417c0bdc870d28afb83bc12e61a818efa3.tar.xz wireguard-linux-a8d0d8417c0bdc870d28afb83bc12e61a818efa3.zip |
Merge branch 'bond_stacked_vlans'
Vlad Yasevich says:
====================
Fixed stacked vlan usage on top of bonds
Bonding device driver now support q-in-q on top for bonds. There are
a few issues here though.
First, when arp monitoring is used, bonding driver will not correctly
tag traffic if the source of the arp device was configured on top of
q-in-q. It may also incorrectly pick the wrong vlan id if the ordering
of that upper devices isn't as expected (there is no guarntee on ordering).
Second, the alb/tlb may use what would be considered 'inner' vlans in
its learning announcements, as it simply announces all vlans configured
on top of the bond without regard for encapsulation/stacking.
This series fixes the above 2 issues. This series also depends on the
functionality introduced in
http://patchwork.ozlabs.org/patch/349766/
Since v1:
- Changed how patch1 verifies the device path. We no longer use the
_all_upper version of the function. We find the path and if it was
found, then collect the vlan information.
- Use the constant to devine maximum vlan nest level support on top
of bonding. This can be changed if 2 is too low.
- Inlude patch2 into the series.
====================
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'include/linux/if_vlan.h')
-rw-r--r-- | include/linux/if_vlan.h | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/include/linux/if_vlan.h b/include/linux/if_vlan.h index 724bde8477b2..c901b13b6f03 100644 --- a/include/linux/if_vlan.h +++ b/include/linux/if_vlan.h @@ -484,4 +484,10 @@ static inline void vlan_set_encap_proto(struct sk_buff *skb, */ skb->protocol = htons(ETH_P_802_2); } + +static inline int vlan_get_encap_level(struct net_device *dev) +{ + BUG_ON(!is_vlan_dev(dev)); + return vlan_dev_priv(dev)->nest_level; +} #endif /* !(_LINUX_IF_VLAN_H_) */ |