aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJiri Pirko <jiri@resnulli.us>2013-03-05 20:31:12 -0500
committerDavid S. Miller <davem@davemloft.net>2013-03-06 14:55:20 -0500
commitacbba0d0f88e2577b9d92b61b136d13f65831a52 (patch)
tree0ca36c3c25ea9bb8e73fd64e37972adf4bffbf60
parent6fac41157252220678b210fcb13e2c3dad7a912a (diff)
team: introduce two default team_modeop functions and use them in modes
No need to duplicate code for this. Signed-off-by: Jiri Pirko <jiri@resnulli.us> Signed-off-by: David S. Miller <davem@davemloft.net>
-rw-r--r--drivers/net/team/team.c19
-rw-r--r--drivers/net/team/team_mode_broadcast.c14
-rw-r--r--drivers/net/team/team_mode_roundrobin.c14
-rw-r--r--include/linux/if_team.h5
4 files changed, 24 insertions, 28 deletions
diff --git a/drivers/net/team/team.c b/drivers/net/team/team.c
index 05c5efe84591..ece70a4abbb1 100644
--- a/drivers/net/team/team.c
+++ b/drivers/net/team/team.c
@@ -73,11 +73,24 @@ static int team_port_set_orig_dev_addr(struct team_port *port)
73 return __set_port_dev_addr(port->dev, port->orig.dev_addr); 73 return __set_port_dev_addr(port->dev, port->orig.dev_addr);
74} 74}
75 75
76int team_port_set_team_dev_addr(struct team_port *port) 76static int team_port_set_team_dev_addr(struct team *team,
77 struct team_port *port)
78{
79 return __set_port_dev_addr(port->dev, team->dev->dev_addr);
80}
81
82int team_modeop_port_enter(struct team *team, struct team_port *port)
83{
84 return team_port_set_team_dev_addr(team, port);
85}
86EXPORT_SYMBOL(team_modeop_port_enter);
87
88void team_modeop_port_change_dev_addr(struct team *team,
89 struct team_port *port)
77{ 90{
78 return __set_port_dev_addr(port->dev, port->team->dev->dev_addr); 91 team_port_set_team_dev_addr(team, port);
79} 92}
80EXPORT_SYMBOL(team_port_set_team_dev_addr); 93EXPORT_SYMBOL(team_modeop_port_change_dev_addr);
81 94
82static void team_refresh_port_linkup(struct team_port *port) 95static void team_refresh_port_linkup(struct team_port *port)
83{ 96{
diff --git a/drivers/net/team/team_mode_broadcast.c b/drivers/net/team/team_mode_broadcast.c
index c5db428e73fa..c366cd299c06 100644
--- a/drivers/net/team/team_mode_broadcast.c
+++ b/drivers/net/team/team_mode_broadcast.c
@@ -46,20 +46,10 @@ static bool bc_transmit(struct team *team, struct sk_buff *skb)
46 return sum_ret; 46 return sum_ret;
47} 47}
48 48
49static int bc_port_enter(struct team *team, struct team_port *port)
50{
51 return team_port_set_team_dev_addr(port);
52}
53
54static void bc_port_change_dev_addr(struct team *team, struct team_port *port)
55{
56 team_port_set_team_dev_addr(port);
57}
58
59static const struct team_mode_ops bc_mode_ops = { 49static const struct team_mode_ops bc_mode_ops = {
60 .transmit = bc_transmit, 50 .transmit = bc_transmit,
61 .port_enter = bc_port_enter, 51 .port_enter = team_modeop_port_enter,
62 .port_change_dev_addr = bc_port_change_dev_addr, 52 .port_change_dev_addr = team_modeop_port_change_dev_addr,
63}; 53};
64 54
65static const struct team_mode bc_mode = { 55static const struct team_mode bc_mode = {
diff --git a/drivers/net/team/team_mode_roundrobin.c b/drivers/net/team/team_mode_roundrobin.c
index 105135aa8f05..ed63a6bc66ce 100644
--- a/drivers/net/team/team_mode_roundrobin.c
+++ b/drivers/net/team/team_mode_roundrobin.c
@@ -64,20 +64,10 @@ drop:
64 return false; 64 return false;
65} 65}
66 66
67static int rr_port_enter(struct team *team, struct team_port *port)
68{
69 return team_port_set_team_dev_addr(port);
70}
71
72static void rr_port_change_dev_addr(struct team *team, struct team_port *port)
73{
74 team_port_set_team_dev_addr(port);
75}
76
77static const struct team_mode_ops rr_mode_ops = { 67static const struct team_mode_ops rr_mode_ops = {
78 .transmit = rr_transmit, 68 .transmit = rr_transmit,
79 .port_enter = rr_port_enter, 69 .port_enter = team_modeop_port_enter,
80 .port_change_dev_addr = rr_port_change_dev_addr, 70 .port_change_dev_addr = team_modeop_port_change_dev_addr,
81}; 71};
82 72
83static const struct team_mode rr_mode = { 73static const struct team_mode rr_mode = {
diff --git a/include/linux/if_team.h b/include/linux/if_team.h
index cfd21e3d5506..3283def74483 100644
--- a/include/linux/if_team.h
+++ b/include/linux/if_team.h
@@ -112,6 +112,10 @@ struct team_mode_ops {
112 void (*port_disabled)(struct team *team, struct team_port *port); 112 void (*port_disabled)(struct team *team, struct team_port *port);
113}; 113};
114 114
115extern int team_modeop_port_enter(struct team *team, struct team_port *port);
116extern void team_modeop_port_change_dev_addr(struct team *team,
117 struct team_port *port);
118
115enum team_option_type { 119enum team_option_type {
116 TEAM_OPTION_TYPE_U32, 120 TEAM_OPTION_TYPE_U32,
117 TEAM_OPTION_TYPE_STRING, 121 TEAM_OPTION_TYPE_STRING,
@@ -236,7 +240,6 @@ static inline struct team_port *team_get_port_by_index_rcu(struct team *team,
236 return NULL; 240 return NULL;
237} 241}
238 242
239extern int team_port_set_team_dev_addr(struct team_port *port);
240extern int team_options_register(struct team *team, 243extern int team_options_register(struct team *team,
241 const struct team_option *option, 244 const struct team_option *option,
242 size_t option_count); 245 size_t option_count);