PPPoE problem: "Too many LQR packets lost"

From: Stephen McKay (smckay_at_internode.on.net)
Date: 07/24/04

  • Next message: -=PeleoS=-: "about skey.access file..."
    To: freebsd-net@freebsd.org
    Date: Sat, 24 Jul 2004 12:47:26 +1000
    
    

    Hi!

    A few months ago my ADSL line started dropping out, claiming too many
    LQR packets lost. Seems like my telco changed the hardware at the other
    end. You get that a lot here. So, I just turned off LQR and left it at
    that.

    Unfortunately, when the other end loses its marbles the link just hangs
    now instead of ppp detecting it and reconnecting. I decided to patch ppp.

    I found Mike Tancsa's patch but didn't like it. I rolled my own, which
    seems to be working so far. It works by switching from LQR to simple
    echo requests when LQR times out.

    This should be tuned a bit so that people with working LQR (well, at least
    one correct LQR exchange in a given session) don't have to wait for the
    echo requests to time out too before a dead connection is detected. I'd
    have to have a carrier that supported LQR to test that though. :-)

    Stephen.

    (This is a patch against ppp in FreeBSD 4.8. I haven't tried the ppp in
    -current yet as -current is still a wild and woolly place that scares me.)

    Index: lqr.c
    ===================================================================
    RCS file: /cvs/src/usr.sbin/ppp/lqr.c,v
    retrieving revision 1.40.2.4
    diff -u -r1.40.2.4 lqr.c
    --- lqr.c 1 Sep 2002 02:12:28 -0000 1.40.2.4
    +++ lqr.c 24 Jul 2004 02:12:51 -0000
    @@ -165,8 +165,16 @@
                     lcp->fsm.link->name);
           log_Printf(LogLQM, "%s: Too many LQR packets lost\n",
                     lcp->fsm.link->name);
    - p->hdlc.lqm.method = 0;
    - datalink_Down(p->dl, CLOSE_NORMAL);
    + p->hdlc.lqm.method &= ~LQM_LQR;
    + if (p->hdlc.lqm.method == 0)
    + datalink_Down(p->dl, CLOSE_NORMAL);
    + else {
    + log_Printf(LogPHASE, "%s: ** Switching to LQR ECHO **\n",
    + lcp->fsm.link->name);
    + log_Printf(LogLQM, "%s: Switching to LQR ECHO\n",
    + lcp->fsm.link->name);
    + SendEchoReq(lcp);
    + }
         } else {
           SendLqrData(lcp);
           p->hdlc.lqm.lqr.resent++;
    _______________________________________________
    freebsd-net@freebsd.org mailing list
    http://lists.freebsd.org/mailman/listinfo/freebsd-net
    To unsubscribe, send any mail to "freebsd-net-unsubscribe@freebsd.org"


  • Next message: -=PeleoS=-: "about skey.access file..."

    Relevant Pages