diff options
-rw-r--r-- | drivers/net/team/team.c | 8 | ||||
-rw-r--r-- | include/linux/if_team.h | 1 |
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 | ||
509 | static void team_set_no_mode(struct team *team) | 509 | static 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 | ||
1711 | static int team_change_carrier(struct net_device *dev, bool new_carrier) | 1712 | static 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]; |