|
@@ -609,16 +609,18 @@ static int tipc_l2_device_event(struct notifier_block *nb, unsigned long evt,
|
|
|
|
|
|
switch (evt) {
|
|
switch (evt) {
|
|
case NETDEV_CHANGE:
|
|
case NETDEV_CHANGE:
|
|
- if (netif_carrier_ok(dev))
|
|
|
|
|
|
+ if (netif_carrier_ok(dev) && netif_oper_up(dev)) {
|
|
|
|
+ test_and_set_bit_lock(0, &b->up);
|
|
break;
|
|
break;
|
|
- /* else: fall through */
|
|
|
|
- case NETDEV_UP:
|
|
|
|
- test_and_set_bit_lock(0, &b->up);
|
|
|
|
- break;
|
|
|
|
|
|
+ }
|
|
|
|
+ /* fall through */
|
|
case NETDEV_GOING_DOWN:
|
|
case NETDEV_GOING_DOWN:
|
|
clear_bit_unlock(0, &b->up);
|
|
clear_bit_unlock(0, &b->up);
|
|
tipc_reset_bearer(net, b);
|
|
tipc_reset_bearer(net, b);
|
|
break;
|
|
break;
|
|
|
|
+ case NETDEV_UP:
|
|
|
|
+ test_and_set_bit_lock(0, &b->up);
|
|
|
|
+ break;
|
|
case NETDEV_CHANGEMTU:
|
|
case NETDEV_CHANGEMTU:
|
|
if (tipc_mtu_bad(dev, 0)) {
|
|
if (tipc_mtu_bad(dev, 0)) {
|
|
bearer_disable(net, b);
|
|
bearer_disable(net, b);
|