summaryrefslogtreecommitdiffstats
path: root/include
diff options
context:
space:
mode:
authorDebabrata Banerjee <dbanerje@akamai.com>2018-05-09 19:32:11 -0400
committerDavid S. Miller <davem@davemloft.net>2018-05-11 11:50:41 -0400
commit21706ee8a47d3ede7fdae0be6d7c0a0e31a83229 (patch)
tree07139d8a58c94ef6397d8dccff26ec6ebfa368c4 /include
parent4fa8667ca3989ce14cf66301fa251544fbddbdd0 (diff)
downloadlinux-21706ee8a47d3ede7fdae0be6d7c0a0e31a83229.tar.bz2
bonding: send learning packets for vlans on slave
There was a regression at some point from the intended functionality of commit f60c3704e87d ("bonding: Fix alb mode to only use first level vlans.") Given the return value vlan_get_encap_level() we need to store the nest level of the bond device, and then compare the vlan's encap level to this. Without this, this check always fails and learning packets are never sent. In addition, this same commit caused a regression in the behavior of balance_alb, which requires learning packets be sent for all interfaces using the slave's mac in order to load balance properly. For vlan's that have not set a user mac, we can send after checking one bit. Otherwise we need send the set mac, albeit defeating rx load balancing for that vlan. Signed-off-by: Debabrata Banerjee <dbanerje@akamai.com> Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'include')
-rw-r--r--include/net/bonding.h1
1 files changed, 1 insertions, 0 deletions
diff --git a/include/net/bonding.h b/include/net/bonding.h
index f801fc940b29..b52235158836 100644
--- a/include/net/bonding.h
+++ b/include/net/bonding.h
@@ -198,6 +198,7 @@ struct bonding {
struct slave __rcu *primary_slave;
struct bond_up_slave __rcu *slave_arr; /* Array of usable slaves */
bool force_primary;
+ u32 nest_level;
s32 slave_cnt; /* never change this value outside the attach/detach wrappers */
int (*recv_probe)(const struct sk_buff *, struct bonding *,
struct slave *);