team: introduce two default team_modeop functions and use them in modes
authorJiri Pirko <jiri@resnulli.us>
Wed, 6 Mar 2013 01:31:12 +0000 (01:31 +0000)
committerDavid S. Miller <davem@davemloft.net>
Wed, 6 Mar 2013 19:55:20 +0000 (14:55 -0500)
No need to duplicate code for this.

Signed-off-by: Jiri Pirko <jiri@resnulli.us>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/team/team.c
drivers/net/team/team_mode_broadcast.c
drivers/net/team/team_mode_roundrobin.c
include/linux/if_team.h

index 05c5efe..ece70a4 100644 (file)
@@ -73,11 +73,24 @@ static int team_port_set_orig_dev_addr(struct team_port *port)
        return __set_port_dev_addr(port->dev, port->orig.dev_addr);
 }
 
-int team_port_set_team_dev_addr(struct team_port *port)
+static int team_port_set_team_dev_addr(struct team *team,
+                                      struct team_port *port)
+{
+       return __set_port_dev_addr(port->dev, team->dev->dev_addr);
+}
+
+int team_modeop_port_enter(struct team *team, struct team_port *port)
+{
+       return team_port_set_team_dev_addr(team, port);
+}
+EXPORT_SYMBOL(team_modeop_port_enter);
+
+void team_modeop_port_change_dev_addr(struct team *team,
+                                     struct team_port *port)
 {
-       return __set_port_dev_addr(port->dev, port->team->dev->dev_addr);
+       team_port_set_team_dev_addr(team, port);
 }
-EXPORT_SYMBOL(team_port_set_team_dev_addr);
+EXPORT_SYMBOL(team_modeop_port_change_dev_addr);
 
 static void team_refresh_port_linkup(struct team_port *port)
 {
index c5db428..c366cd2 100644 (file)
@@ -46,20 +46,10 @@ static bool bc_transmit(struct team *team, struct sk_buff *skb)
        return sum_ret;
 }
 
-static int bc_port_enter(struct team *team, struct team_port *port)
-{
-       return team_port_set_team_dev_addr(port);
-}
-
-static void bc_port_change_dev_addr(struct team *team, struct team_port *port)
-{
-       team_port_set_team_dev_addr(port);
-}
-
 static const struct team_mode_ops bc_mode_ops = {
        .transmit               = bc_transmit,
-       .port_enter             = bc_port_enter,
-       .port_change_dev_addr   = bc_port_change_dev_addr,
+       .port_enter             = team_modeop_port_enter,
+       .port_change_dev_addr   = team_modeop_port_change_dev_addr,
 };
 
 static const struct team_mode bc_mode = {
index 105135a..ed63a6b 100644 (file)
@@ -64,20 +64,10 @@ drop:
        return false;
 }
 
-static int rr_port_enter(struct team *team, struct team_port *port)
-{
-       return team_port_set_team_dev_addr(port);
-}
-
-static void rr_port_change_dev_addr(struct team *team, struct team_port *port)
-{
-       team_port_set_team_dev_addr(port);
-}
-
 static const struct team_mode_ops rr_mode_ops = {
        .transmit               = rr_transmit,
-       .port_enter             = rr_port_enter,
-       .port_change_dev_addr   = rr_port_change_dev_addr,
+       .port_enter             = team_modeop_port_enter,
+       .port_change_dev_addr   = team_modeop_port_change_dev_addr,
 };
 
 static const struct team_mode rr_mode = {
index cfd21e3..3283def 100644 (file)
@@ -112,6 +112,10 @@ struct team_mode_ops {
        void (*port_disabled)(struct team *team, struct team_port *port);
 };
 
+extern int team_modeop_port_enter(struct team *team, struct team_port *port);
+extern void team_modeop_port_change_dev_addr(struct team *team,
+                                            struct team_port *port);
+
 enum team_option_type {
        TEAM_OPTION_TYPE_U32,
        TEAM_OPTION_TYPE_STRING,
@@ -236,7 +240,6 @@ static inline struct team_port *team_get_port_by_index_rcu(struct team *team,
        return NULL;
 }
 
-extern int team_port_set_team_dev_addr(struct team_port *port);
 extern int team_options_register(struct team *team,
                                 const struct team_option *option,
                                 size_t option_count);