summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDenis Du <dudenis2000@yahoo.ca>2018-02-24 22:51:42 +0100
committerDavid S. Miller <davem@davemloft.net>2018-02-26 20:38:12 +0100
commitb6c3bad1ba83af1062a7ff6986d9edc4f3d7fc8e (patch)
treef619e45d6401535f7b337378cfd228445ec7a0de
parenttuntap: correctly add the missing XDP flush (diff)
downloadlinux-b6c3bad1ba83af1062a7ff6986d9edc4f3d7fc8e.tar.xz
linux-b6c3bad1ba83af1062a7ff6986d9edc4f3d7fc8e.zip
hdlc_ppp: carrier detect ok, don't turn off negotiation
Sometimes when physical lines have a just good noise to make the protocol handshaking fail, but the carrier detect still good. Then after remove of the noise, nobody will trigger this protocol to be start again to cause the link to never come back. The fix is when the carrier is still on, not terminate the protocol handshaking. Signed-off-by: Denis Du <dudenis2000@yahoo.ca> Signed-off-by: David S. Miller <davem@davemloft.net>
-rw-r--r--drivers/net/wan/hdlc_ppp.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/drivers/net/wan/hdlc_ppp.c b/drivers/net/wan/hdlc_ppp.c
index afeca6bcdade..ab8b3cbbb205 100644
--- a/drivers/net/wan/hdlc_ppp.c
+++ b/drivers/net/wan/hdlc_ppp.c
@@ -574,7 +574,10 @@ static void ppp_timer(struct timer_list *t)
ppp_cp_event(proto->dev, proto->pid, TO_GOOD, 0, 0,
0, NULL);
proto->restart_counter--;
- } else
+ } else if (netif_carrier_ok(proto->dev))
+ ppp_cp_event(proto->dev, proto->pid, TO_GOOD, 0, 0,
+ 0, NULL);
+ else
ppp_cp_event(proto->dev, proto->pid, TO_BAD, 0, 0,
0, NULL);
break;