#include <net/dn.h>
/*
- * Fast timer is for delayed acks (200mS max)
* Slow timer is for everything else (n * 500mS)
*/
-#define FAST_INTERVAL (HZ/5)
#define SLOW_INTERVAL (HZ/2)
static void dn_slow_timer(unsigned long arg);
bh_unlock_sock(sk);
sock_put(sk);
}
-
-static void dn_fast_timer(unsigned long arg)
-{
- struct sock *sk = (struct sock *)arg;
- struct dn_scp *scp = DN_SK(sk);
-
- bh_lock_sock(sk);
- if (sock_owned_by_user(sk)) {
- scp->delack_timer.expires = jiffies + HZ / 20;
- add_timer(&scp->delack_timer);
- goto out;
- }
-
- scp->delack_pending = 0;
-
- if (scp->delack_fxn)
- scp->delack_fxn(sk);
-out:
- bh_unlock_sock(sk);
-}
-
-void dn_start_fast_timer(struct sock *sk)
-{
- struct dn_scp *scp = DN_SK(sk);
-
- if (!scp->delack_pending) {
- scp->delack_pending = 1;
- init_timer(&scp->delack_timer);
- scp->delack_timer.expires = jiffies + FAST_INTERVAL;
- scp->delack_timer.data = (unsigned long)sk;
- scp->delack_timer.function = dn_fast_timer;
- add_timer(&scp->delack_timer);
- }
-}
-
-void dn_stop_fast_timer(struct sock *sk)
-{
- struct dn_scp *scp = DN_SK(sk);
-
- if (scp->delack_pending) {
- scp->delack_pending = 0;
- del_timer(&scp->delack_timer);
- }
-}
-