Skip to content

Commit

Permalink
teamd: LACP runner does not set Agg bit on first slave
Browse files Browse the repository at this point in the history
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 #15

Tested-by: Customer
Signed-off-by: Jamie Bainbridge <jamie.bainbridge@gmail.com>
Signed-off-by: Jiri Pirko <jiri@mellanox.com>
  • Loading branch information
superjamie authored and jpirko committed Jun 19, 2016
1 parent 291d581 commit 1468495
Showing 1 changed file with 1 addition and 1 deletion.
2 changes: 1 addition & 1 deletion teamd/teamd_runner_lacp.c
Expand Up @@ -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);
Expand Down

0 comments on commit 1468495

Please sign in to comment.