aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJamie Bainbridge <jamie.bainbridge@gmail.com>2016-06-18 08:59:59 +1000
committerJiri Pirko <jiri@mellanox.com>2016-06-19 12:59:38 +0200
commit14684953b1e50a9359d2cc38c5e35d5c36796ac8 (patch)
tree2a758d97592eebd1b898fb95f33dc4d8a5546684
parent291d581ab503c673a37041645a0d8ba1a4f72ac4 (diff)
downloadlibteam-14684953b1e50a9359d2cc38c5e35d5c36796ac8.tar.gz
teamd: LACP runner does not set Agg bit on first slave
teamd's LACP runner does not set the INFO_STATE_AGGREGATION bit when there is only one slave in a team. This results in LACPDUs not being sent with this flag set, and the team never negotiates. A Cisco Nexus 5500 switch will report the switchport in "(s)uspended" state. This can be reproduced on some systems by booting with a LACP team with more than one port, or by slowly adding ports to a new team on the commandline. Change the check from "more than 1 port" to "more than zero ports" so that all LACP runner slaves have this bit set. Resolves https://github.com/jpirko/libteam/issues/15 Tested-by: Customer Signed-off-by: Jamie Bainbridge <jamie.bainbridge@gmail.com> Signed-off-by: Jiri Pirko <jiri@mellanox.com>
-rw-r--r--teamd/teamd_runner_lacp.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/teamd/teamd_runner_lacp.c b/teamd/teamd_runner_lacp.c
index dc03996..e959cb3 100644
--- a/teamd/teamd_runner_lacp.c
+++ b/teamd/teamd_runner_lacp.c
@@ -905,7 +905,7 @@ static void lacp_port_actor_update(struct lacp_port *lacp_port)
state |= INFO_STATE_EXPIRED;
if (lacp_port->state == PORT_STATE_DEFAULTED)
state |= INFO_STATE_DEFAULTED;
- if (teamd_port_count(lacp_port->ctx) > 1)
+ if (teamd_port_count(lacp_port->ctx) > 0)
state |= INFO_STATE_AGGREGATION;
teamd_log_dbg("%s: lacp info state: 0x%02X.", lacp_port->tdport->ifname,
state);