diff options
Diffstat (limited to 'drivers/net/team/team.c')
-rw-r--r-- | drivers/net/team/team.c | 25 |
1 files changed, 5 insertions, 20 deletions
diff --git a/drivers/net/team/team.c b/drivers/net/team/team.c index 9e9d3e57a2f6..a7b391dfb3b0 100644 --- a/drivers/net/team/team.c +++ b/drivers/net/team/team.c | |||
@@ -347,24 +347,6 @@ void team_options_unregister(struct team *team, | |||
347 | } | 347 | } |
348 | EXPORT_SYMBOL(team_options_unregister); | 348 | EXPORT_SYMBOL(team_options_unregister); |
349 | 349 | ||
350 | static int team_option_port_add(struct team *team, struct team_port *port) | ||
351 | { | ||
352 | int err; | ||
353 | |||
354 | err = __team_option_inst_add_port(team, port); | ||
355 | if (err) | ||
356 | return err; | ||
357 | __team_options_change_check(team); | ||
358 | return 0; | ||
359 | } | ||
360 | |||
361 | static void team_option_port_del(struct team *team, struct team_port *port) | ||
362 | { | ||
363 | __team_option_inst_mark_removed_port(team, port); | ||
364 | __team_options_change_check(team); | ||
365 | __team_option_inst_del_port(team, port); | ||
366 | } | ||
367 | |||
368 | static int team_option_get(struct team *team, | 350 | static int team_option_get(struct team *team, |
369 | struct team_option_inst *opt_inst, | 351 | struct team_option_inst *opt_inst, |
370 | struct team_gsetter_ctx *ctx) | 352 | struct team_gsetter_ctx *ctx) |
@@ -891,7 +873,7 @@ static int team_port_add(struct team *team, struct net_device *port_dev) | |||
891 | goto err_handler_register; | 873 | goto err_handler_register; |
892 | } | 874 | } |
893 | 875 | ||
894 | err = team_option_port_add(team, port); | 876 | err = __team_option_inst_add_port(team, port); |
895 | if (err) { | 877 | if (err) { |
896 | netdev_err(dev, "Device %s failed to add per-port options\n", | 878 | netdev_err(dev, "Device %s failed to add per-port options\n", |
897 | portname); | 879 | portname); |
@@ -904,6 +886,7 @@ static int team_port_add(struct team *team, struct net_device *port_dev) | |||
904 | team_adjust_ops(team); | 886 | team_adjust_ops(team); |
905 | __team_compute_features(team); | 887 | __team_compute_features(team); |
906 | __team_port_change_check(port, !!netif_carrier_ok(port_dev)); | 888 | __team_port_change_check(port, !!netif_carrier_ok(port_dev)); |
889 | __team_options_change_check(team); | ||
907 | 890 | ||
908 | netdev_info(dev, "Port device %s added\n", portname); | 891 | netdev_info(dev, "Port device %s added\n", portname); |
909 | 892 | ||
@@ -947,12 +930,14 @@ static int team_port_del(struct team *team, struct net_device *port_dev) | |||
947 | return -ENOENT; | 930 | return -ENOENT; |
948 | } | 931 | } |
949 | 932 | ||
933 | __team_option_inst_mark_removed_port(team, port); | ||
934 | __team_options_change_check(team); | ||
935 | __team_option_inst_del_port(team, port); | ||
950 | port->removed = true; | 936 | port->removed = true; |
951 | __team_port_change_check(port, false); | 937 | __team_port_change_check(port, false); |
952 | team_port_disable(team, port); | 938 | team_port_disable(team, port); |
953 | list_del_rcu(&port->list); | 939 | list_del_rcu(&port->list); |
954 | team_adjust_ops(team); | 940 | team_adjust_ops(team); |
955 | team_option_port_del(team, port); | ||
956 | netdev_rx_handler_unregister(port_dev); | 941 | netdev_rx_handler_unregister(port_dev); |
957 | netdev_set_master(port_dev, NULL); | 942 | netdev_set_master(port_dev, NULL); |
958 | vlan_vids_del_by_dev(port_dev, dev); | 943 | vlan_vids_del_by_dev(port_dev, dev); |