Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 328032
b: refs/heads/master
c: 10f3f51
h: refs/heads/master
v: v3
  • Loading branch information
Jiri Pirko authored and David S. Miller committed Sep 21, 2012
1 parent 8a73c0f commit 99e720a
Show file tree
Hide file tree
Showing 2 changed files with 26 additions and 9 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: 5e953778a2aab04929a5e7b69f53dc26e39b079e
refs/heads/master: 10f3f51d56648f4eaf5c9f7aee27c418b833c3c0
33 changes: 25 additions & 8 deletions trunk/drivers/net/team/team.c
Original file line number Diff line number Diff line change
Expand Up @@ -966,7 +966,8 @@ static struct netpoll_info *team_netpoll_info(struct team *team)
}
#endif

static void __team_port_change_check(struct team_port *port, bool linkup);
static void __team_port_change_port_added(struct team_port *port, bool linkup);

static int team_dev_type_check_change(struct net_device *dev,
struct net_device *port_dev);

Expand Down Expand Up @@ -1079,7 +1080,7 @@ static int team_port_add(struct team *team, struct net_device *port_dev)
team_port_enable(team, port);
list_add_tail_rcu(&port->list, &team->port_list);
__team_compute_features(team);
__team_port_change_check(port, !!netif_carrier_ok(port_dev));
__team_port_change_port_added(port, !!netif_carrier_ok(port_dev));
__team_options_change_check(team);

netdev_info(dev, "Port device %s added\n", portname);
Expand Down Expand Up @@ -1114,6 +1115,8 @@ static int team_port_add(struct team *team, struct net_device *port_dev)
return err;
}

static void __team_port_change_port_removed(struct team_port *port);

static int team_port_del(struct team *team, struct net_device *port_dev)
{
struct net_device *dev = team->dev;
Expand All @@ -1130,8 +1133,7 @@ static int team_port_del(struct team *team, struct net_device *port_dev)
__team_option_inst_mark_removed_port(team, port);
__team_options_change_check(team);
__team_option_inst_del_port(team, port);
port->removed = true;
__team_port_change_check(port, false);
__team_port_change_port_removed(port);
team_port_disable(team, port);
list_del_rcu(&port->list);
netdev_rx_handler_unregister(port_dev);
Expand Down Expand Up @@ -2499,13 +2501,11 @@ static void __team_options_change_check(struct team *team)
}

/* rtnl lock is held */
static void __team_port_change_check(struct team_port *port, bool linkup)

static void __team_port_change_send(struct team_port *port, bool linkup)
{
int err;

if (!port->removed && port->state.linkup == linkup)
return;

port->changed = true;
port->state.linkup = linkup;
team_refresh_port_linkup(port);
Expand All @@ -2530,6 +2530,23 @@ static void __team_port_change_check(struct team_port *port, bool linkup)

}

static void __team_port_change_check(struct team_port *port, bool linkup)
{
if (port->state.linkup != linkup)
__team_port_change_send(port, linkup);
}

static void __team_port_change_port_added(struct team_port *port, bool linkup)
{
__team_port_change_send(port, linkup);
}

static void __team_port_change_port_removed(struct team_port *port)
{
port->removed = true;
__team_port_change_send(port, false);
}

static void team_port_change_check(struct team_port *port, bool linkup)
{
struct team *team = port->team;
Expand Down

0 comments on commit 99e720a

Please sign in to comment.