X-Git-Url: http://pileus.org/git/?a=blobdiff_plain;f=drivers%2Fnet%2Fteam%2Fteam.c;h=05c5efe8459148be152db604da421fe35e95ba41;hb=e185483e6b84c127d0b1c890b6b703701ae52d35;hp=694ccf6d71a3bca9d502ac670c543f2e70149d64;hpb=3b72c2fe0c6bbec42ed7f899931daef227b80322;p=~andy%2Flinux diff --git a/drivers/net/team/team.c b/drivers/net/team/team.c index 694ccf6d71a..05c5efe8459 100644 --- a/drivers/net/team/team.c +++ b/drivers/net/team/team.c @@ -508,6 +508,7 @@ static bool team_is_mode_set(struct team *team) static void team_set_no_mode(struct team *team) { + team->user_carrier_enabled = false; team->mode = &__team_no_mode; } @@ -1710,6 +1711,10 @@ static netdev_features_t team_fix_features(struct net_device *dev, static int team_change_carrier(struct net_device *dev, bool new_carrier) { + struct team *team = netdev_priv(dev); + + team->user_carrier_enabled = true; + if (new_carrier) netif_carrier_on(dev); else @@ -2573,6 +2578,9 @@ static void __team_carrier_check(struct team *team) struct team_port *port; bool team_linkup; + if (team->user_carrier_enabled) + return; + team_linkup = false; list_for_each_entry(port, &team->port_list, list) { if (port->linkup) {