summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJiri Pirko <jpirko@redhat.com>2012-06-19 07:54:11 +0200
committerDavid S. Miller <davem@davemloft.net>2012-06-20 00:00:23 +0200
commit0f1aad2b7f01d88782fbf4ab08b13a7d92b9b6b2 (patch)
treef37dde889cebd9168e0c8a0784d128a006367dd0
parentteam: push array_index and port into separate structure (diff)
downloadlinux-0f1aad2b7f01d88782fbf4ab08b13a7d92b9b6b2.tar.xz
linux-0f1aad2b7f01d88782fbf4ab08b13a7d92b9b6b2.zip
team: allow async option changes
This patch adds two exported functions. One allows to mark option instance as changed and the second processes change check and does transfer of changed options to userspace. Signed-off-by: Jiri Pirko <jpirko@redhat.com> Signed-off-by: David S. Miller <davem@davemloft.net>
-rw-r--r--drivers/net/team/team.c18
-rw-r--r--include/linux/if_team.h3
2 files changed, 21 insertions, 0 deletions
diff --git a/drivers/net/team/team.c b/drivers/net/team/team.c
index cff8e253df72..7988ba099b94 100644
--- a/drivers/net/team/team.c
+++ b/drivers/net/team/team.c
@@ -82,6 +82,7 @@ static void team_refresh_port_linkup(struct team_port *port)
port->state.linkup;
}
+
/*******************
* Options handling
*******************/
@@ -387,6 +388,22 @@ static int team_option_set(struct team *team,
return err;
}
+void team_option_inst_set_change(struct team_option_inst_info *opt_inst_info)
+{
+ struct team_option_inst *opt_inst;
+
+ opt_inst = container_of(opt_inst_info, struct team_option_inst, info);
+ opt_inst->changed = true;
+}
+EXPORT_SYMBOL(team_option_inst_set_change);
+
+void team_options_change_check(struct team *team)
+{
+ __team_options_change_check(team);
+}
+EXPORT_SYMBOL(team_options_change_check);
+
+
/****************
* Mode handling
****************/
@@ -2051,6 +2068,7 @@ static void team_port_change_check(struct team_port *port, bool linkup)
mutex_unlock(&team->lock);
}
+
/************************************
* Net device notifier event handler
************************************/
diff --git a/include/linux/if_team.h b/include/linux/if_team.h
index 30854cb0c855..2f2972535cc0 100644
--- a/include/linux/if_team.h
+++ b/include/linux/if_team.h
@@ -112,6 +112,9 @@ struct team_option {
int (*setter)(struct team *team, struct team_gsetter_ctx *ctx);
};
+extern void team_option_inst_set_change(struct team_option_inst_info *opt_inst_info);
+extern void team_options_change_check(struct team *team);
+
struct team_mode {
const char *kind;
struct module *owner;