hctx->ccid2hctx_srtt = val;
 }
 
-static void ccid2_change_pipe(struct ccid2_hc_tx_sock *hctx, long val)
-{
-       hctx->ccid2hctx_pipe = val;
-}
-
 static void ccid2_start_rto_timer(struct sock *sk);
 
 static void ccid2_hc_tx_rto_expire(unsigned long data)
        ccid2_start_rto_timer(sk);
 
        /* adjust pipe, cwnd etc */
-       ccid2_change_pipe(hctx, 0);
        hctx->ccid2hctx_ssthresh = hctx->ccid2hctx_cwnd / 2;
        if (hctx->ccid2hctx_ssthresh < 2)
                hctx->ccid2hctx_ssthresh = 2;
        hctx->ccid2hctx_cwnd     = 1;
+       hctx->ccid2hctx_pipe     = 0;
 
        /* clear state about stuff we sent */
        hctx->ccid2hctx_seqt    = hctx->ccid2hctx_seqh;
 
        BUG_ON(!hctx->ccid2hctx_sendwait);
        hctx->ccid2hctx_sendwait = 0;
-       ccid2_change_pipe(hctx, hctx->ccid2hctx_pipe + 1);
-       BUG_ON(hctx->ccid2hctx_pipe < 0);
+       hctx->ccid2hctx_pipe++;
 
        /* There is an issue.  What if another packet is sent between
         * packet_send() and packet_sent().  Then the sequence number would be
 {
        struct ccid2_hc_tx_sock *hctx = ccid2_hc_tx_sk(sk);
 
-       ccid2_change_pipe(hctx, hctx->ccid2hctx_pipe-1);
-       BUG_ON(hctx->ccid2hctx_pipe < 0);
+       if (hctx->ccid2hctx_pipe == 0)
+               DCCP_BUG("pipe == 0");
+       else
+               hctx->ccid2hctx_pipe--;
 
        if (hctx->ccid2hctx_pipe == 0)
                ccid2_hc_tx_kill_rto_timer(sk);
 
 
 /** struct ccid2_hc_tx_sock - CCID2 TX half connection
  *
+ * @ccid2hctx_{cwnd,ssthresh,pipe}: as per RFC 4341, section 5
  * @ccid2hctx_ssacks - ACKs recv in slow start
  * @ccid2hctx_acks - ACKS recv in AI phase
  * @ccid2hctx_lastrtt -time RTT was last measured
 struct ccid2_hc_tx_sock {
        u32                     ccid2hctx_cwnd;
        u32                     ccid2hctx_ssthresh;
+       u32                     ccid2hctx_pipe;
        int                     ccid2hctx_ssacks;
        int                     ccid2hctx_acks;
-       int                     ccid2hctx_pipe;
        struct ccid2_seq        *ccid2hctx_seqbuf[CCID2_SEQBUF_MAX];
        int                     ccid2hctx_seqbufc;
        struct ccid2_seq        *ccid2hctx_seqh;