aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJiri Pirko <jiri@nvidia.com>2023-02-02 17:00:51 +0100
committerJiri Pirko <jiri@nvidia.com>2023-02-02 17:08:05 +0100
commit23ab49c4df0c06eb629ce2e3bb4c4dd7c527975a (patch)
treeb627a69a699e9c9487ebb4adca44fa35a919a35e
parentfd26b370d85d63cca0736d7e666736bb15c395aa (diff)
downloadlibteam-23ab49c4df0c06eb629ce2e3bb4c4dd7c527975a.tar.gz
teamd: lacp: don't move the port state from disabled when admin state is down
When the team admin state is down, the port should stay in disabled state, no matter what's happening. So check the admin state and bail out in that case. Signed-off-by: Jiri Pirko <jiri@nvidia.com>
-rw-r--r--teamd/teamd_runner_lacp.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/teamd/teamd_runner_lacp.c b/teamd/teamd_runner_lacp.c
index 51c7714..a76c372 100644
--- a/teamd/teamd_runner_lacp.c
+++ b/teamd/teamd_runner_lacp.c
@@ -956,9 +956,11 @@ static int lacpdu_send(struct lacp_port *lacp_port);
static int lacp_port_set_state(struct lacp_port *lacp_port,
enum lacp_port_state new_state)
{
+ bool admin_state = team_get_ifinfo_admin_state(lacp_port->ctx->ifinfo);
int err;
- if (new_state == lacp_port->state)
+ if (new_state == lacp_port->state ||
+ (!admin_state && new_state != PORT_STATE_DISABLED))
return 0;
if (new_state == PORT_STATE_DISABLED)
lacp_port_periodic_off(lacp_port);