Date: Sun, 13 Dec 1998 00:20:42 +0100 From: Poul-Henning Kamp <phk@FreeBSD.ORG> To: current@FreeBSD.ORG, isdn@FreeBSD.ORG Subject: if_sppp is BROKEN!!! Message-ID: <8711.913504842@critter.freebsd.dk>
next in thread | raw e-mail | index | archive | help
I think I have finally found out what the problem is with the state machine in the if_sppp implementation. Whoever wrote the implementation didn't carefully consider the inter-layer calls tls and tlf. If one applies a lot of patches like this one: case STATE_OPENED: - (cp->tld)(sp); sp->rst_counter[cp->protoidx] = 0; sppp_cp_change_state(cp, sp, STATE_STOPPING); + (cp->tld)(sp); goto sta; break; Then things actually start to make sense... The problem is that the tld and tlf functions often just call the pp_up and pp_down routines directly, and therefore most if not all of the expected up and down events happen in the previous state as opposed to the next state. Flipping it around like I have done above, on the other hand, may not be a good idea either, since it means we can nest another layer on the stack and get somewhat confused on the way down. It is quite obvious that this will need some more work to sort out, anybody interested in participating ? -- Poul-Henning Kamp FreeBSD coreteam member phk@FreeBSD.ORG "Real hackers run -current on their laptop." "ttyv0" -- What UNIX calls a $20K state-of-the-art, 3D, hi-res color terminal To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-current" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?8711.913504842>