Skip to content

Commit

Permalink
team: ab: set active port option as changed when port is leaving
Browse files Browse the repository at this point in the history
In case port is leaving the team, set the option "activeport" as changed
so the change can be properly propagated to userspace

Signed-off-by: Jiri Pirko <jiri@resnulli.us>
Signed-off-by: David S. Miller <davem@davemloft.net>
  • Loading branch information
Jiri Pirko authored and David S. Miller committed Feb 4, 2013
1 parent c3969d8 commit 675b804
Showing 1 changed file with 12 additions and 1 deletion.
13 changes: 12 additions & 1 deletion drivers/net/team/team_mode_activebackup.c
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@

struct ab_priv {
struct team_port __rcu *active_port;
struct team_option_inst_info *ap_opt_inst_info;
};

static struct ab_priv *ab_priv(struct team *team)
Expand Down Expand Up @@ -54,8 +55,17 @@ static bool ab_transmit(struct team *team, struct sk_buff *skb)

static void ab_port_leave(struct team *team, struct team_port *port)
{
if (ab_priv(team)->active_port == port)
if (ab_priv(team)->active_port == port) {
RCU_INIT_POINTER(ab_priv(team)->active_port, NULL);
team_option_inst_set_change(ab_priv(team)->ap_opt_inst_info);
}
}

static int ab_active_port_init(struct team *team,
struct team_option_inst_info *info)
{
ab_priv(team)->ap_opt_inst_info = info;
return 0;
}

static int ab_active_port_get(struct team *team, struct team_gsetter_ctx *ctx)
Expand Down Expand Up @@ -88,6 +98,7 @@ static const struct team_option ab_options[] = {
{
.name = "activeport",
.type = TEAM_OPTION_TYPE_U32,
.init = ab_active_port_init,
.getter = ab_active_port_get,
.setter = ab_active_port_set,
},
Expand Down

0 comments on commit 675b804

Please sign in to comment.