]> git.ozlabs.org Git - ppp.git/blobdiff - modules/ppp_ahdlc.c
Cleaned up major lint warnings.
[ppp.git] / modules / ppp_ahdlc.c
index c1853bbb9e437cd4be3e7f99109864a9582307c8..1828fe1e96fb40a1f20a48eb0267975aad083178 100644 (file)
@@ -24,7 +24,7 @@
  * OBLIGATION TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS,
  * OR MODIFICATIONS.
  *
- * $Id: ppp_ahdlc.c,v 1.7 1998/03/24 23:52:35 paulus Exp $
+ * $Id: ppp_ahdlc.c,v 1.11 1999/09/15 23:49:05 masputra Exp $
  */
 
 /*
@@ -190,6 +190,8 @@ MOD_CLOSE(ahdlc_close)
            state->cur_frame = 0;
        }
        FREE(q->q_ptr, sizeof(ahdlc_state_t));
+       q->q_ptr = NULL;
+       OTHERQ(q)->q_ptr = NULL;
        --ppp_ahdlc_count;
     }
     return 0;
@@ -207,6 +209,12 @@ ahdlc_wput(q, mp)
     struct ppp_stats *psp;
 
     state = (ahdlc_state_t *) q->q_ptr;
+    if (state == 0) {
+       DPRINT("state == 0 in ahdlc_wput\n");
+       freemsg(mp);
+       return 0;
+    }
+
     switch (mp->b_datap->db_type) {
     case M_DATA:
        /*
@@ -326,6 +334,7 @@ ahdlc_wput(q, mp)
     default:
        putnext(q, mp);
     }
+
     return 0;
 }
 
@@ -334,10 +343,15 @@ ahdlc_rput(q, mp)
     queue_t *q;
     mblk_t *mp;
 {
-    mblk_t *np;
-    uchar_t *cp;
     ahdlc_state_t *state;
 
+    state = (ahdlc_state_t *) q->q_ptr;
+    if (state == 0) {
+       DPRINT("state == 0 in ahdlc_rput\n");
+       freemsg(mp);
+       return 0;
+    }
+
     switch (mp->b_datap->db_type) {
     case M_DATA:
        unstuff_chars(q, mp);
@@ -345,7 +359,6 @@ ahdlc_rput(q, mp)
        break;
 
     case M_HANGUP:
-       state = (ahdlc_state_t *) q->q_ptr;
        if (state->cur_frame != 0) {
            /* XXX would like to send this up for debugging */
            freemsg(state->cur_frame);
@@ -372,13 +385,11 @@ stuff_frame(q, mp)
     mblk_t *mp;
 {
     ahdlc_state_t *state;
-    int ilen, olen, c, extra, i, code;
+    int ilen, olen, c, extra, code;
     mblk_t *omsg, *op, *np;
     uchar_t *sp, *sp0, *dp, *dp0, *spend;
     ushort_t fcs;
     u_int32_t *xaccm, lcp_xaccm[8];
-    static uchar_t lcphdr[PPP_HDRLEN] = { 0xff, 0x03, 0xc0, 0x21 };
-    uchar_t ppphdr[PPP_HDRLEN];
 
     state = (ahdlc_state_t *) q->q_ptr;
     ilen = msgdsize(mp);
@@ -395,12 +406,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
@@ -512,12 +525,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.
      */
@@ -559,7 +566,7 @@ unstuff_chars(q, mp)
     ahdlc_state_t *state;
     mblk_t *om;
     uchar_t *cp, *cpend, *dp, *dp0;
-    int c, len, extra, offset;
+    int c, len, extra;
     ushort_t fcs;
 
     state = (ahdlc_state_t *) q->q_ptr;