diff options
| author | Vlad Yasevich <vyasevic@redhat.com> | 2014-05-16 17:20:39 -0400 |
|---|---|---|
| committer | David S. Miller <davem@davemloft.net> | 2014-05-16 22:29:05 -0400 |
| commit | f60c3704e87d39356d00c71bf51e55c2c55ad4f5 (patch) | |
| tree | c9c13fc99aaa8f2c62d21b5ffbb1ece6d1a2c00b | |
| parent | 44a4085538c844e79d6ee6bcf46fabf7c57a9a38 (diff) | |
bonding: Fix alb mode to only use first level vlans.
ALB/TLB learning packets use all vlans configured on top
of the bond. This ends up being incorrect if we have a stack
of vlans on top of the bond. ALB/TLB should only use
first level/outer most vlans in its announcements.
Signed-off-by: Vlad Yasevich <vyasevic@redhat.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
| -rw-r--r-- | drivers/net/bonding/bond_alb.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/drivers/net/bonding/bond_alb.c b/drivers/net/bonding/bond_alb.c index 9f69e818b000..e53847884319 100644 --- a/drivers/net/bonding/bond_alb.c +++ b/drivers/net/bonding/bond_alb.c | |||
| @@ -1045,7 +1045,7 @@ static void alb_send_learning_packets(struct slave *slave, u8 mac_addr[]) | |||
| 1045 | /* loop through vlans and send one packet for each */ | 1045 | /* loop through vlans and send one packet for each */ |
| 1046 | rcu_read_lock(); | 1046 | rcu_read_lock(); |
| 1047 | netdev_for_each_all_upper_dev_rcu(bond->dev, upper, iter) { | 1047 | netdev_for_each_all_upper_dev_rcu(bond->dev, upper, iter) { |
| 1048 | if (upper->priv_flags & IFF_802_1Q_VLAN) | 1048 | if (is_vlan_dev(upper) && vlan_get_encap_level(upper) == 0) |
| 1049 | alb_send_lp_vid(slave, mac_addr, | 1049 | alb_send_lp_vid(slave, mac_addr, |
| 1050 | vlan_dev_vlan_id(upper)); | 1050 | vlan_dev_vlan_id(upper)); |
| 1051 | } | 1051 | } |
