diff options
author | Jiri Pirko <jiri@resnulli.us> | 2013-03-05 20:31:12 -0500 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2013-03-06 14:55:20 -0500 |
commit | acbba0d0f88e2577b9d92b61b136d13f65831a52 (patch) | |
tree | 0ca36c3c25ea9bb8e73fd64e37972adf4bffbf60 | |
parent | 6fac41157252220678b210fcb13e2c3dad7a912a (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.c | 19 | ||||
-rw-r--r-- | drivers/net/team/team_mode_broadcast.c | 14 | ||||
-rw-r--r-- | drivers/net/team/team_mode_roundrobin.c | 14 | ||||
-rw-r--r-- | include/linux/if_team.h | 5 |
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 | ||
76 | int team_port_set_team_dev_addr(struct team_port *port) | 76 | static 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 | |||
82 | int team_modeop_port_enter(struct team *team, struct team_port *port) | ||
83 | { | ||
84 | return team_port_set_team_dev_addr(team, port); | ||
85 | } | ||
86 | EXPORT_SYMBOL(team_modeop_port_enter); | ||
87 | |||
88 | void 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 | } |
80 | EXPORT_SYMBOL(team_port_set_team_dev_addr); | 93 | EXPORT_SYMBOL(team_modeop_port_change_dev_addr); |
81 | 94 | ||
82 | static void team_refresh_port_linkup(struct team_port *port) | 95 | static 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 | ||
49 | static int bc_port_enter(struct team *team, struct team_port *port) | ||
50 | { | ||
51 | return team_port_set_team_dev_addr(port); | ||
52 | } | ||
53 | |||
54 | static void bc_port_change_dev_addr(struct team *team, struct team_port *port) | ||
55 | { | ||
56 | team_port_set_team_dev_addr(port); | ||
57 | } | ||
58 | |||
59 | static const struct team_mode_ops bc_mode_ops = { | 49 | static 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 | ||
65 | static const struct team_mode bc_mode = { | 55 | static 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 | ||
67 | static int rr_port_enter(struct team *team, struct team_port *port) | ||
68 | { | ||
69 | return team_port_set_team_dev_addr(port); | ||
70 | } | ||
71 | |||
72 | static void rr_port_change_dev_addr(struct team *team, struct team_port *port) | ||
73 | { | ||
74 | team_port_set_team_dev_addr(port); | ||
75 | } | ||
76 | |||
77 | static const struct team_mode_ops rr_mode_ops = { | 67 | static 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 | ||
83 | static const struct team_mode rr_mode = { | 73 | static 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 | ||
115 | extern int team_modeop_port_enter(struct team *team, struct team_port *port); | ||
116 | extern void team_modeop_port_change_dev_addr(struct team *team, | ||
117 | struct team_port *port); | ||
118 | |||
115 | enum team_option_type { | 119 | enum 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 | ||
239 | extern int team_port_set_team_dev_addr(struct team_port *port); | ||
240 | extern int team_options_register(struct team *team, | 243 | extern 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); |