tipc: reset bearer if device carrier not ok
If we detect that under lying carrier detects errors and goes down, we reset the bearer. Signed-off-by: Parthasarathy Bhuvaragan <parthasarathy.bhuvaragan@ericsson.com> Signed-off-by: Jon Maloy <jon.maloy@ericsson.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
92ef12b32f
commit
94b6ddce71
@ -609,16 +609,18 @@ static int tipc_l2_device_event(struct notifier_block *nb, unsigned long evt,
|
||||
|
||||
switch (evt) {
|
||||
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;
|
||||
/* else: fall through */
|
||||
case NETDEV_UP:
|
||||
test_and_set_bit_lock(0, &b->up);
|
||||
break;
|
||||
}
|
||||
/* fall through */
|
||||
case NETDEV_GOING_DOWN:
|
||||
clear_bit_unlock(0, &b->up);
|
||||
tipc_reset_bearer(net, b);
|
||||
break;
|
||||
case NETDEV_UP:
|
||||
test_and_set_bit_lock(0, &b->up);
|
||||
break;
|
||||
case NETDEV_CHANGEMTU:
|
||||
if (tipc_mtu_bad(dev, 0)) {
|
||||
bearer_disable(net, b);
|
||||
|
Loading…
Reference in New Issue
Block a user