usage: assuming you have this patch at ~/ppp.patch, $ patch -d /sys/net -p0 < ~/ppp.patch then recompile your kernel and reboot. Index: ppp/if_ppp.c =================================================================== RCS file: /home/source/dragonfly/cvs/src/sys/net/ppp/if_ppp.c,v retrieving revision 1.28 diff -u -p -r1.28 if_ppp.c --- ppp/if_ppp.c 11 Dec 2005 13:00:17 -0000 1.28 +++ ppp/if_ppp.c 4 Feb 2006 04:29:19 -0000 @@ -867,9 +867,8 @@ pppoutput(struct ifnet *ifp, struct mbuf error = 0; } } else { - lwkt_serialize_enter(sc->sc_if.if_serializer); + ASSERT_SERIALIZED(sc->sc_if.if_serializer); error = ifq_enqueue(&sc->sc_if.if_snd, m0, &pktattr); - lwkt_serialize_exit(sc->sc_if.if_serializer); } if (error) { crit_exit(); Index: ppp_layer/ppp_tty.c =================================================================== RCS file: /home/source/dragonfly/cvs/src/sys/net/ppp_layer/ppp_tty.c,v retrieving revision 1.14 diff -u -p -r1.14 ppp_tty.c --- ppp_layer/ppp_tty.c 11 Dec 2005 13:00:17 -0000 1.14 +++ ppp_layer/ppp_tty.c 1 Feb 2006 16:28:58 -0000 @@ -409,7 +409,9 @@ pppwrite(struct tty *tp, struct uio *uio m0->m_len -= PPP_HDRLEN; /* call the upper layer to "transmit" it... */ + lwkt_serialize_enter(sc->sc_if.if_serializer); error = pppoutput(&sc->sc_if, m0, &dst, (struct rtentry *)0); + lwkt_serialize_exit(sc->sc_if.if_serializer); crit_exit(); return (error); }