Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

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>

authored by

Jiri Pirko and committed by
David S. Miller
acbba0d0 6fac4115

+24 -28
+16 -3
drivers/net/team/team.c
··· 73 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) 77 78 { 78 - return __set_port_dev_addr(port->dev, port->team->dev->dev_addr); 79 + return __set_port_dev_addr(port->dev, team->dev->dev_addr); 79 80 } 80 - EXPORT_SYMBOL(team_port_set_team_dev_addr); 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) 90 + { 91 + team_port_set_team_dev_addr(team, port); 92 + } 93 + EXPORT_SYMBOL(team_modeop_port_change_dev_addr); 81 94 82 95 static void team_refresh_port_linkup(struct team_port *port) 83 96 {
+2 -12
drivers/net/team/team_mode_broadcast.c
··· 46 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 49 static const struct team_mode_ops bc_mode_ops = { 60 50 .transmit = bc_transmit, 61 - .port_enter = bc_port_enter, 62 - .port_change_dev_addr = bc_port_change_dev_addr, 51 + .port_enter = team_modeop_port_enter, 52 + .port_change_dev_addr = team_modeop_port_change_dev_addr, 63 53 }; 64 54 65 55 static const struct team_mode bc_mode = {
+2 -12
drivers/net/team/team_mode_roundrobin.c
··· 64 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 67 static const struct team_mode_ops rr_mode_ops = { 78 68 .transmit = rr_transmit, 79 - .port_enter = rr_port_enter, 80 - .port_change_dev_addr = rr_port_change_dev_addr, 69 + .port_enter = team_modeop_port_enter, 70 + .port_change_dev_addr = team_modeop_port_change_dev_addr, 81 71 }; 82 72 83 73 static const struct team_mode rr_mode = {
+4 -1
include/linux/if_team.h
··· 112 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 119 enum team_option_type { 116 120 TEAM_OPTION_TYPE_U32, 117 121 TEAM_OPTION_TYPE_STRING, ··· 240 236 return NULL; 241 237 } 242 238 243 - extern int team_port_set_team_dev_addr(struct team_port *port); 244 239 extern int team_options_register(struct team *team, 245 240 const struct team_option *option, 246 241 size_t option_count);