diff options
author | Jamie Bainbridge <jamie.bainbridge@gmail.com> | 2016-06-18 08:59:59 +1000 |
---|---|---|
committer | Jiri Pirko <jiri@mellanox.com> | 2016-06-19 12:59:38 +0200 |
commit | 14684953b1e50a9359d2cc38c5e35d5c36796ac8 (patch) | |
tree | 2a758d97592eebd1b898fb95f33dc4d8a5546684 | |
parent | 291d581ab503c673a37041645a0d8ba1a4f72ac4 (diff) | |
download | libteam-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.c | 2 |
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); |