| From c69b7d9b46b518012e9b61f4e3ee2b350895c00c Mon Sep 17 00:00:00 2001 |
| From: Jiri Pirko <jiri@resnulli.us> |
| Date: Thu, 28 Nov 2013 18:01:38 +0100 |
| Subject: team: fix master carrier set when user linkup is enabled |
| |
| From: Jiri Pirko <jiri@resnulli.us> |
| |
| [ Upstream commit f5e0d34382e18f396d7673a84df8e3342bea7eb6 ] |
| |
| 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> |
| --- |
| drivers/net/team/team.c | 4 ++++ |
| 1 file changed, 4 insertions(+) |
| |
| --- a/drivers/net/team/team.c |
| +++ b/drivers/net/team/team.c |
| @@ -1217,6 +1217,8 @@ static int team_user_linkup_option_get(s |
| 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(s |
| |
| 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_se |
| |
| port->user.linkup_enabled = ctx->data.bool_val; |
| team_refresh_port_linkup(port); |
| + __team_carrier_check(port->team); |
| return 0; |
| } |
| |