Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 675b8044 authored by Jiri Pirko's avatar Jiri Pirko Committed by David S. Miller
Browse files

team: ab: set active port option as changed when port is leaving



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: default avatarJiri Pirko <jiri@resnulli.us>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent c3969d80
Loading
Loading
Loading
Loading
+12 −1
Original line number Diff line number Diff line
@@ -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)
@@ -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)
@@ -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,
	},