[DCCP] ccid3: Fix bug in calculation of first t_nom and first t_ipi
authorGerrit Renker <gerrit@erg.abdn.ac.uk>
Mon, 27 Nov 2006 14:13:38 +0000 (12:13 -0200)
committerDavid S. Miller <davem@sunset.davemloft.net>
Sun, 3 Dec 2006 05:30:35 +0000 (21:30 -0800)
Problem:

net/dccp/ccids/ccid3.c
net/dccp/ccids/ccid3.h

index fb21f2d9ffc653e93205ddce25e532445c04f9a4..d7b688e9f983c997486d19268261348ec5adfa2a 100644 (file)
@@ -298,13 +298,14 @@ static int ccid3_hc_tx_send_packet(struct sock *sk,
                hctx->ccid3hctx_last_win_count   = 0;
                hctx->ccid3hctx_t_last_win_count = now;
                ccid3_hc_tx_set_state(sk, TFRC_SSTATE_NO_FBACK);
-               hctx->ccid3hctx_t_ipi = TFRC_INITIAL_IPI;
 
-               /* Set nominal send time for initial packet */
+               /* First timeout, according to [RFC 3448, 4.2], is 1 second */
+               hctx->ccid3hctx_t_ipi = USEC_PER_SEC;
+               /* Initial delta: minimum of 0.5 sec and t_gran/2 */
+               hctx->ccid3hctx_delta = TFRC_OPSYS_HALF_TIME_GRAN;
+
+               /* Set t_0 for initial packet */
                hctx->ccid3hctx_t_nom = now;
-               timeval_add_usecs(&hctx->ccid3hctx_t_nom,
-                                 hctx->ccid3hctx_t_ipi);
-               ccid3_calc_new_delta(hctx);
                rc = 0;
                break;
        case TFRC_SSTATE_NO_FBACK:
index e2e43c1a47267ce8247bd557db66d2da7de9b13f..462165234ff6620d54d1688a6184efbd3387a01f 100644 (file)
@@ -49,8 +49,6 @@
 /* Two seconds as per CCID3 spec */
 #define TFRC_INITIAL_TIMEOUT      (2 * USEC_PER_SEC)
 
-#define TFRC_INITIAL_IPI          (USEC_PER_SEC / 4)
-
 /* In usecs - half the scheduling granularity as per RFC3448 4.6 */
 #define TFRC_OPSYS_HALF_TIME_GRAN  (USEC_PER_SEC / (2 * HZ))