team: fix master carrier set when user linkup is enabled

[ Upstream commit f5e0d34382 ]

When user linkup is enabled and user sets linkup of individual port,
we need to recompute linkup (carrier) of master interface so the change
is reflected. Fix this by calling __team_carrier_check() which does the
needed work.

Please apply to all stable kernels as well. Thanks.

Reported-by: Jan Tluka <jtluka@redhat.com>
Signed-off-by: Jiri Pirko <jiri@resnulli.us>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
Jiri Pirko
2013-11-28 18:01:38 +01:00
committed by Greg Kroah-Hartman
parent 86a243440a
commit a52a9149f5

View File

@@ -1217,6 +1217,8 @@ static int team_user_linkup_option_get(struct team *team,
return 0;
}
static void __team_carrier_check(struct team *team);
static int team_user_linkup_option_set(struct team *team,
struct team_gsetter_ctx *ctx)
{
@@ -1224,6 +1226,7 @@ static int team_user_linkup_option_set(struct team *team,
port->user.linkup = ctx->data.bool_val;
team_refresh_port_linkup(port);
__team_carrier_check(port->team);
return 0;
}
@@ -1243,6 +1246,7 @@ static int team_user_linkup_en_option_set(struct team *team,
port->user.linkup_enabled = ctx->data.bool_val;
team_refresh_port_linkup(port);
__team_carrier_check(port->team);
return 0;
}