diff options
Diffstat (limited to 'net/tipc/bearer.c')
-rw-r--r-- | net/tipc/bearer.c | 12 |
1 files changed, 7 insertions, 5 deletions
diff --git a/net/tipc/bearer.c b/net/tipc/bearer.c index 418f03d0be90..645c16052052 100644 --- a/net/tipc/bearer.c +++ b/net/tipc/bearer.c | |||
@@ -609,16 +609,18 @@ static int tipc_l2_device_event(struct notifier_block *nb, unsigned long evt, | |||
609 | 609 | ||
610 | switch (evt) { | 610 | switch (evt) { |
611 | case NETDEV_CHANGE: | 611 | case NETDEV_CHANGE: |
612 | if (netif_carrier_ok(dev)) | 612 | if (netif_carrier_ok(dev) && netif_oper_up(dev)) { |
613 | test_and_set_bit_lock(0, &b->up); | ||
613 | break; | 614 | break; |
614 | /* else: fall through */ | 615 | } |
615 | case NETDEV_UP: | 616 | /* fall through */ |
616 | test_and_set_bit_lock(0, &b->up); | ||
617 | break; | ||
618 | case NETDEV_GOING_DOWN: | 617 | case NETDEV_GOING_DOWN: |
619 | clear_bit_unlock(0, &b->up); | 618 | clear_bit_unlock(0, &b->up); |
620 | tipc_reset_bearer(net, b); | 619 | tipc_reset_bearer(net, b); |
621 | break; | 620 | break; |
621 | case NETDEV_UP: | ||
622 | test_and_set_bit_lock(0, &b->up); | ||
623 | break; | ||
622 | case NETDEV_CHANGEMTU: | 624 | case NETDEV_CHANGEMTU: |
623 | if (tipc_mtu_bad(dev, 0)) { | 625 | if (tipc_mtu_bad(dev, 0)) { |
624 | bearer_disable(net, b); | 626 | bearer_disable(net, b); |