nfsd4.1: common slot allocation size calculation
[safe/jmp/linux-2.6] / net / dccp / timer.c
index 9369aca..162d1e6 100644 (file)
@@ -237,35 +237,32 @@ out:
        sock_put(sk);
 }
 
-/**
- * dccp_write_xmitlet  -  Workhorse for CCID packet dequeueing interface
- * See the comments above %ccid_dequeueing_decision for supported modes.
- */
-static void dccp_write_xmitlet(unsigned long data)
+/* Transmit-delay timer: used by the CCIDs to delay actual send time */
+static void dccp_write_xmit_timer(unsigned long data)
 {
        struct sock *sk = (struct sock *)data;
+       struct dccp_sock *dp = dccp_sk(sk);
 
        bh_lock_sock(sk);
        if (sock_owned_by_user(sk))
-               sk_reset_timer(sk, &dccp_sk(sk)->dccps_xmit_timer, jiffies + 1);
+               sk_reset_timer(sk, &dp->dccps_xmit_timer, jiffies+1);
        else
                dccp_write_xmit(sk, 0);
        bh_unlock_sock(sk);
+       sock_put(sk);
 }
 
-static void dccp_write_xmit_timer(unsigned long data)
+static void dccp_init_write_xmit_timer(struct sock *sk)
 {
-       dccp_write_xmitlet(data);
-       sock_put((struct sock *)data);
+       struct dccp_sock *dp = dccp_sk(sk);
+
+       setup_timer(&dp->dccps_xmit_timer, dccp_write_xmit_timer,
+                       (unsigned long)sk);
 }
 
 void dccp_init_xmit_timers(struct sock *sk)
 {
-       struct dccp_sock *dp = dccp_sk(sk);
-
-       tasklet_init(&dp->dccps_xmitlet, dccp_write_xmitlet, (unsigned long)sk);
-       setup_timer(&dp->dccps_xmit_timer, dccp_write_xmit_timer,
-                                                            (unsigned long)sk);
+       dccp_init_write_xmit_timer(sk);
        inet_csk_init_xmit_timers(sk, &dccp_write_timer, &dccp_delack_timer,
                                  &dccp_keepalive_timer);
 }