X-Git-Url: http://git.ozlabs.org/?a=blobdiff_plain;f=modules%2Fppp_ahdlc.c;h=cfde35d296ddac3e3f7d25c231005549b9bd54c5;hb=699e067418e4de59d75c0de252b1bc066d4fe8c0;hp=79a2d05d870b33f860cc597f66724ff89ee456b3;hpb=cac90e238d9c18c513cf0d45dfdd1e217df2a176;p=ppp.git diff --git a/modules/ppp_ahdlc.c b/modules/ppp_ahdlc.c index 79a2d05..cfde35d 100644 --- a/modules/ppp_ahdlc.c +++ b/modules/ppp_ahdlc.c @@ -24,7 +24,7 @@ * OBLIGATION TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, * OR MODIFICATIONS. * - * $Id: ppp_ahdlc.c,v 1.5 1997/03/04 03:31:51 paulus Exp $ + * $Id: ppp_ahdlc.c,v 1.8 1998/05/04 06:11:50 paulus Exp $ */ /* @@ -42,6 +42,9 @@ #include #else #include +#ifdef __osf__ +#include +#endif #endif /* SVR4 */ #include @@ -168,7 +171,7 @@ MOD_OPEN(ahdlc_open) WR(q)->q_ptr = (caddr_t) sp; sp->xaccm[0] = ~0; sp->xaccm[3] = 0x60000000; - sp->mru = 1500; + sp->mru = PPP_MRU; ++ppp_ahdlc_count; qprocson(q); } @@ -222,6 +225,10 @@ ahdlc_wput(q, mp) if (iop->ioc_count < sizeof(u_int32_t) || iop->ioc_count > sizeof(ext_accm)) break; + if (mp->b_cont == 0) { + DPRINT1("ahdlc_wput/%d: PPPIO_XACCM b_cont = 0!\n", state->unit); + break; + } bcopy((caddr_t)mp->b_cont->b_rptr, (caddr_t)state->xaccm, iop->ioc_count); state->xaccm[2] &= ~0x40000000; /* don't escape 0x5e */ @@ -233,6 +240,10 @@ ahdlc_wput(q, mp) case PPPIO_RACCM: if (iop->ioc_count != sizeof(u_int32_t)) break; + if (mp->b_cont == 0) { + DPRINT1("ahdlc_wput/%d: PPPIO_RACCM b_cont = 0!\n", state->unit); + break; + } bcopy((caddr_t)mp->b_cont->b_rptr, (caddr_t)&state->raccm, sizeof(u_int32_t)); iop->ioc_count = 0; @@ -384,12 +395,14 @@ stuff_frame(q, mp) goto bomb; /* - * Put in an initial flag for now. We'll remove it later - * if we decide we don't need it. + * Put in an initial flag, unless the serial driver currently has + * packets still to be transmitted in its queue. */ dp = op->b_wptr; - *dp++ = PPP_FLAG; - --olen; + if (qsize(q->q_next) == 0) { + *dp++ = PPP_FLAG; + --olen; + } /* * For LCP packets with code values between 1 and 7 (Conf-Req @@ -501,12 +514,6 @@ stuff_frame(q, mp) *dp++ = PPP_FLAG; op->b_wptr = dp; - /* - * Remove the initial flag, if possible. - */ - if (qsize(q->q_next) > 0) - ++omsg->b_rptr; - /* * Update statistics. */