]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
hdlc_ppp: carrier detect ok, don't turn off negotiation
authorDenis Du <dudenis2000@yahoo.ca>
Sat, 24 Feb 2018 21:51:42 +0000 (16:51 -0500)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Sun, 11 Mar 2018 15:19:46 +0000 (16:19 +0100)
[ Upstream commit b6c3bad1ba83af1062a7ff6986d9edc4f3d7fc8e ]

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>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/net/wan/hdlc_ppp.c

index 0d7645581f912d04b79e4374fa46c2ed451b7617..4842344a96f1d3a38f6e7a50af0255915f21fe28 100644 (file)
@@ -574,7 +574,10 @@ static void ppp_timer(unsigned long arg)
                        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;