aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorXin Long <lucien.xin@gmail.com>2017-11-07 12:33:36 +0800
committerJiri Pirko <jiri@mellanox.com>2017-11-07 07:28:43 +0100
commitc42cc9955a93bc4bed65adf9a506f92b8df290d7 (patch)
treeb944822bab80365230fb995eaa4699fe9df38a33
parent0164b6a460728b3a1fd3feee9e2901f1b810cf24 (diff)
downloadlibteam-c42cc9955a93bc4bed65adf9a506f92b8df290d7.tar.gz
teamd: add port_hwaddr_changed for lacp runner
To fix the same issue fixed in commit efaa6ae709bb ("teamd: add port_hwaddr_changed for ab runner") for lacp runner, this patch is to add .port_hwaddr_changed for lacp runner as well. Signed-off-by: Xin Long <lucien.xin@gmail.com> Signed-off-by: Jiri Pirko <jiri@mellanox.com>
-rw-r--r--teamd/teamd_runner_lacp.c26
1 files changed, 26 insertions, 0 deletions
diff --git a/teamd/teamd_runner_lacp.c b/teamd/teamd_runner_lacp.c
index 1310f67..7b8f0a7 100644
--- a/teamd/teamd_runner_lacp.c
+++ b/teamd/teamd_runner_lacp.c
@@ -1336,6 +1336,31 @@ static int lacp_event_watch_hwaddr_changed(struct teamd_context *ctx,
return 0;
}
+static int lacp_event_watch_port_hwaddr_changed(struct teamd_context *ctx,
+ struct teamd_port *tdport,
+ void *priv)
+{
+ struct lacp_port *lacp_port;
+ struct lacp *lacp = priv;
+ int err;
+
+ if (!teamd_port_present(ctx, tdport))
+ return 0;
+
+ if (!memcmp(team_get_ifinfo_hwaddr(tdport->team_ifinfo),
+ ctx->hwaddr, ctx->hwaddr_len))
+ return 0;
+
+ err = lacp_port_set_mac(ctx, tdport);
+ if (err)
+ return err;
+
+ lacp_port = lacp_port_get(lacp, tdport);
+ lacp_port_actor_system_update(lacp_port);
+
+ return 0;
+}
+
static int lacp_event_watch_admin_state_changed(struct teamd_context *ctx,
void *priv)
{
@@ -1389,6 +1414,7 @@ static int lacp_event_watch_port_changed(struct teamd_context *ctx,
static const struct teamd_event_watch_ops lacp_event_watch_ops = {
.hwaddr_changed = lacp_event_watch_hwaddr_changed,
+ .port_hwaddr_changed = lacp_event_watch_port_hwaddr_changed,
.port_added = lacp_event_watch_port_added,
.port_removed = lacp_event_watch_port_removed,
.port_changed = lacp_event_watch_port_changed,