[CCID3]: Reintroduce ccid3hctx_t_rto
authorArnaldo Carvalho de Melo <acme@mandriva.com>
Sun, 21 Aug 2005 08:07:37 +0000 (05:07 -0300)
committerDavid S. Miller <davem@sunset.davemloft.net>
Mon, 29 Aug 2005 23:03:18 +0000 (16:03 -0700)
CCID3 keeps this variable in usecs, inet_connection_socks in jiffies,
so to avoid Mars orbiter losses lets reintroduce ccid3hctx_t_rto 8)

Signed-off-by: Arnaldo Carvalho de Melo <acme@mandriva.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
net/dccp/ccids/ccid3.c
net/dccp/ccids/ccid3.h

index 6941490..ffd5b44 100644 (file)
@@ -905,7 +905,7 @@ static void ccid3_hc_tx_no_feedback_timer(unsigned long data)
                        hctx->ccid3hctx_x = 10;
                }
                /* Schedule no feedback timer to expire in max(4 * R, 2 * s / X) */
-               next_tmout = max_t(u32, inet_csk(sk)->icsk_rto, 
+               next_tmout = max_t(u32, hctx->ccid3hctx_t_rto, 
                                   2 * (hctx->ccid3hctx_s * 100000) / (hctx->ccid3hctx_x / 10));
                break;
        default:
@@ -1180,8 +1180,8 @@ static void ccid3_hc_tx_packet_recv(struct sock *sk, struct sk_buff *skb)
                               r_sample);
 
                /* Update timeout interval */
-               inet_csk(sk)->icsk_rto = max_t(u32, 4 * hctx->ccid3hctx_rtt,
-                                              USEC_PER_SEC);
+               hctx->ccid3hctx_t_rto = max_t(u32, 4 * hctx->ccid3hctx_rtt,
+                                             USEC_PER_SEC);
 
                /* Update receive rate */
                hctx->ccid3hctx_x_recv = x_recv;   /* x_recv in bytes per second */
@@ -1227,7 +1227,7 @@ static void ccid3_hc_tx_packet_recv(struct sock *sk, struct sk_buff *skb)
                /* to prevent divide by zero below */
 
                /* Schedule no feedback timer to expire in max(4 * R, 2 * s / X) */
-               next_tmout = max(inet_csk(sk)->icsk_rto,
+               next_tmout = max(hctx->ccid3hctx_t_rto,
                                 (2 * (hctx->ccid3hctx_s * 100000) /
                                  (hctx->ccid3hctx_x / 10)));
                /* maths with 100000 and 10 is to prevent overflow with 32 bit */
@@ -1340,7 +1340,7 @@ static int ccid3_hc_tx_init(struct sock *sk)
 
        hctx->ccid3hctx_x     = hctx->ccid3hctx_s; /* set transmission rate to 1 packet per second */
        hctx->ccid3hctx_rtt   = 4; /* See ccid3_hc_tx_packet_sent win_count calculatation */
-       inet_csk(sk)->icsk_rto = USEC_PER_SEC;
+       hctx->ccid3hctx_t_rto = USEC_PER_SEC;
        hctx->ccid3hctx_state = TFRC_SSTATE_NO_SENT;
        INIT_LIST_HEAD(&hctx->ccid3hctx_hist);
        init_timer(&hctx->ccid3hctx_no_feedback_timer);
index d2705fb..5ef72cd 100644 (file)
@@ -80,6 +80,7 @@ struct ccid3_hc_tx_sock {
        struct timer_list               ccid3hctx_no_feedback_timer;
        struct timeval                  ccid3hctx_t_ld;
        struct timeval                  ccid3hctx_t_nom;
+       u32                             ccid3hctx_t_rto;
        u32                             ccid3hctx_t_ipi;
        u32                             ccid3hctx_delta;
        struct list_head                ccid3hctx_hist;