patch-2_6_7-vs1_9_1_12
[linux-2.6.git] / net / ipv4 / tcp_timer.c
index 58796c6..cab2678 100644 (file)
@@ -68,18 +68,13 @@ void tcp_clear_xmit_timers(struct sock *sk)
        struct tcp_opt *tp = tcp_sk(sk);
 
        tp->pending = 0;
-       if (timer_pending(&tp->retransmit_timer) &&
-           del_timer(&tp->retransmit_timer))
-               __sock_put(sk);
+       sk_stop_timer(sk, &tp->retransmit_timer);
 
        tp->ack.pending = 0;
        tp->ack.blocked = 0;
-       if (timer_pending(&tp->delack_timer) &&
-           del_timer(&tp->delack_timer))
-               __sock_put(sk);
+       sk_stop_timer(sk, &tp->delack_timer);
 
-       if (timer_pending(&sk->sk_timer) && del_timer(&sk->sk_timer))
-               __sock_put(sk);
+       sk_stop_timer(sk, &sk->sk_timer);
 }
 
 static void tcp_write_err(struct sock *sk)
@@ -218,8 +213,7 @@ static void tcp_delack_timer(unsigned long data)
                /* Try again later. */
                tp->ack.blocked = 1;
                NET_INC_STATS_BH(DelayedACKLocked);
-               if (!mod_timer(&tp->delack_timer, jiffies + TCP_DELACK_MIN))
-                       sock_hold(sk);
+               sk_reset_timer(sk, &tp->delack_timer, jiffies + TCP_DELACK_MIN);
                goto out_unlock;
        }
 
@@ -229,8 +223,7 @@ static void tcp_delack_timer(unsigned long data)
                goto out;
 
        if (time_after(tp->ack.timeout, jiffies)) {
-               if (!mod_timer(&tp->delack_timer, tp->ack.timeout))
-                       sock_hold(sk);
+               sk_reset_timer(sk, &tp->delack_timer, tp->ack.timeout);
                goto out;
        }
        tp->ack.pending &= ~TCP_ACK_TIMER;
@@ -429,8 +422,7 @@ static void tcp_write_timer(unsigned long data)
        bh_lock_sock(sk);
        if (sock_owned_by_user(sk)) {
                /* Try again later */
-               if (!mod_timer(&tp->retransmit_timer, jiffies + (HZ/20)))
-                       sock_hold(sk);
+               sk_reset_timer(sk, &tp->retransmit_timer, jiffies + (HZ / 20));
                goto out_unlock;
        }
 
@@ -438,8 +430,7 @@ static void tcp_write_timer(unsigned long data)
                goto out;
 
        if (time_after(tp->timeout, jiffies)) {
-               if (!mod_timer(&tp->retransmit_timer, tp->timeout))
-                       sock_hold(sk);
+               sk_reset_timer(sk, &tp->retransmit_timer, tp->timeout);
                goto out;
        }
 
@@ -557,14 +548,12 @@ static void tcp_synack_timer(struct sock *sk)
 
 void tcp_delete_keepalive_timer (struct sock *sk)
 {
-       if (timer_pending(&sk->sk_timer) && del_timer (&sk->sk_timer))
-               __sock_put(sk);
+       sk_stop_timer(sk, &sk->sk_timer);
 }
 
 void tcp_reset_keepalive_timer (struct sock *sk, unsigned long len)
 {
-       if (!mod_timer(&sk->sk_timer, jiffies + len))
-               sock_hold(sk);
+       sk_reset_timer(sk, &sk->sk_timer, jiffies + len);
 }
 
 void tcp_set_keepalive(struct sock *sk, int val)