aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/net/team/team.c8
-rw-r--r--include/linux/if_team.h1
2 files changed, 9 insertions, 0 deletions
diff --git a/drivers/net/team/team.c b/drivers/net/team/team.c
index 694ccf6d71a3..05c5efe84591 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)
508 508
509static void team_set_no_mode(struct team *team) 509static void team_set_no_mode(struct team *team)
510{ 510{
511 team->user_carrier_enabled = false;
511 team->mode = &__team_no_mode; 512 team->mode = &__team_no_mode;
512} 513}
513 514
@@ -1710,6 +1711,10 @@ static netdev_features_t team_fix_features(struct net_device *dev,
1710 1711
1711static int team_change_carrier(struct net_device *dev, bool new_carrier) 1712static int team_change_carrier(struct net_device *dev, bool new_carrier)
1712{ 1713{
1714 struct team *team = netdev_priv(dev);
1715
1716 team->user_carrier_enabled = true;
1717
1713 if (new_carrier) 1718 if (new_carrier)
1714 netif_carrier_on(dev); 1719 netif_carrier_on(dev);
1715 else 1720 else
@@ -2573,6 +2578,9 @@ static void __team_carrier_check(struct team *team)
2573 struct team_port *port; 2578 struct team_port *port;
2574 bool team_linkup; 2579 bool team_linkup;
2575 2580
2581 if (team->user_carrier_enabled)
2582 return;
2583
2576 team_linkup = false; 2584 team_linkup = false;
2577 list_for_each_entry(port, &team->port_list, list) { 2585 list_for_each_entry(port, &team->port_list, list) {
2578 if (port->linkup) { 2586 if (port->linkup) {
diff --git a/include/linux/if_team.h b/include/linux/if_team.h
index 0245def2aa93..4648d8021244 100644
--- a/include/linux/if_team.h
+++ b/include/linux/if_team.h
@@ -186,6 +186,7 @@ struct team {
186 186
187 const struct team_mode *mode; 187 const struct team_mode *mode;
188 struct team_mode_ops ops; 188 struct team_mode_ops ops;
189 bool user_carrier_enabled;
189 bool queue_override_enabled; 190 bool queue_override_enabled;
190 struct list_head *qom_lists; /* array of queue override mapping lists */ 191 struct list_head *qom_lists; /* array of queue override mapping lists */
191 long mode_priv[TEAM_MODE_PRIV_LONGS]; 192 long mode_priv[TEAM_MODE_PRIV_LONGS];