team: add per-port option for enabling/disabling ports
authorJiri Pirko <jpirko@redhat.com>
Fri, 20 Apr 2012 04:42:06 +0000 (04:42 +0000)
committerDavid S. Miller <davem@davemloft.net>
Sat, 21 Apr 2012 20:26:33 +0000 (16:26 -0400)
Signed-off-by: Jiri Pirko <jpirko@redhat.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/team/team.c

index fe7ca40..c61ae35 100644 (file)
@@ -904,6 +904,23 @@ static int team_mode_option_set(struct team *team, struct team_gsetter_ctx *ctx)
        return team_change_mode(team, ctx->data.str_val);
 }
 
+static int team_port_en_option_get(struct team *team,
+                                  struct team_gsetter_ctx *ctx)
+{
+       ctx->data.bool_val = team_port_enabled(ctx->port);
+       return 0;
+}
+
+static int team_port_en_option_set(struct team *team,
+                                  struct team_gsetter_ctx *ctx)
+{
+       if (ctx->data.bool_val)
+               team_port_enable(team, ctx->port);
+       else
+               team_port_disable(team, ctx->port);
+       return 0;
+}
+
 static int team_user_linkup_option_get(struct team *team,
                                       struct team_gsetter_ctx *ctx)
 {
@@ -946,6 +963,13 @@ static const struct team_option team_options[] = {
                .setter = team_mode_option_set,
        },
        {
+               .name = "enabled",
+               .type = TEAM_OPTION_TYPE_BOOL,
+               .per_port = true,
+               .getter = team_port_en_option_get,
+               .setter = team_port_en_option_set,
+       },
+       {
                .name = "user_linkup",
                .type = TEAM_OPTION_TYPE_BOOL,
                .per_port = true,