diff options
| author | David S. Miller <davem@pizda.ninka.net> | 2002-02-10 07:08:02 -0800 |
|---|---|---|
| committer | David S. Miller <davem@pizda.ninka.net> | 2002-02-10 07:08:02 -0800 |
| commit | e210f5c42ee46545f3b34076bc4e5f9af1f9589a (patch) | |
| tree | 21157e614a5bce6a5e4c0e63b1fe4d7cf07be19c /net/netrom/nr_timer.c | |
| parent | 2672019f311c8679ae980ebc0cf4a61fb6434159 (diff) | |
Split protocol specific information out from struct sock.
Work done by Arnaldo Carvalho de Melo.
Diffstat (limited to 'net/netrom/nr_timer.c')
| -rw-r--r-- | net/netrom/nr_timer.c | 99 |
1 files changed, 56 insertions, 43 deletions
diff --git a/net/netrom/nr_timer.c b/net/netrom/nr_timer.c index 116770434ab5..ba9c70e5042a 100644 --- a/net/netrom/nr_timer.c +++ b/net/netrom/nr_timer.c @@ -30,6 +30,7 @@ #include <linux/netdevice.h> #include <linux/skbuff.h> #include <net/sock.h> +#include <net/tcp.h> #include <asm/uaccess.h> #include <asm/system.h> #include <linux/fcntl.h> @@ -45,47 +46,55 @@ static void nr_idletimer_expiry(unsigned long); void nr_start_t1timer(struct sock *sk) { - del_timer(&sk->protinfo.nr->t1timer); + nr_cb *nr = nr_sk(sk); - sk->protinfo.nr->t1timer.data = (unsigned long)sk; - sk->protinfo.nr->t1timer.function = &nr_t1timer_expiry; - sk->protinfo.nr->t1timer.expires = jiffies + sk->protinfo.nr->t1; + del_timer(&nr->t1timer); - add_timer(&sk->protinfo.nr->t1timer); + nr->t1timer.data = (unsigned long)sk; + nr->t1timer.function = &nr_t1timer_expiry; + nr->t1timer.expires = jiffies + nr->t1; + + add_timer(&nr->t1timer); } void nr_start_t2timer(struct sock *sk) { - del_timer(&sk->protinfo.nr->t2timer); + nr_cb *nr = nr_sk(sk); + + del_timer(&nr->t2timer); - sk->protinfo.nr->t2timer.data = (unsigned long)sk; - sk->protinfo.nr->t2timer.function = &nr_t2timer_expiry; - sk->protinfo.nr->t2timer.expires = jiffies + sk->protinfo.nr->t2; + nr->t2timer.data = (unsigned long)sk; + nr->t2timer.function = &nr_t2timer_expiry; + nr->t2timer.expires = jiffies + nr->t2; - add_timer(&sk->protinfo.nr->t2timer); + add_timer(&nr->t2timer); } void nr_start_t4timer(struct sock *sk) { - del_timer(&sk->protinfo.nr->t4timer); + nr_cb *nr = nr_sk(sk); - sk->protinfo.nr->t4timer.data = (unsigned long)sk; - sk->protinfo.nr->t4timer.function = &nr_t4timer_expiry; - sk->protinfo.nr->t4timer.expires = jiffies + sk->protinfo.nr->t4; + del_timer(&nr->t4timer); - add_timer(&sk->protinfo.nr->t4timer); + nr->t4timer.data = (unsigned long)sk; + nr->t4timer.function = &nr_t4timer_expiry; + nr->t4timer.expires = jiffies + nr->t4; + + add_timer(&nr->t4timer); } void nr_start_idletimer(struct sock *sk) { - del_timer(&sk->protinfo.nr->idletimer); + nr_cb *nr = nr_sk(sk); + + del_timer(&nr->idletimer); - if (sk->protinfo.nr->idle > 0) { - sk->protinfo.nr->idletimer.data = (unsigned long)sk; - sk->protinfo.nr->idletimer.function = &nr_idletimer_expiry; - sk->protinfo.nr->idletimer.expires = jiffies + sk->protinfo.nr->idle; + if (nr->idle > 0) { + nr->idletimer.data = (unsigned long)sk; + nr->idletimer.function = &nr_idletimer_expiry; + nr->idletimer.expires = jiffies + nr->idle; - add_timer(&sk->protinfo.nr->idletimer); + add_timer(&nr->idletimer); } } @@ -102,22 +111,22 @@ void nr_start_heartbeat(struct sock *sk) void nr_stop_t1timer(struct sock *sk) { - del_timer(&sk->protinfo.nr->t1timer); + del_timer(&nr_sk(sk)->t1timer); } void nr_stop_t2timer(struct sock *sk) { - del_timer(&sk->protinfo.nr->t2timer); + del_timer(&nr_sk(sk)->t2timer); } void nr_stop_t4timer(struct sock *sk) { - del_timer(&sk->protinfo.nr->t4timer); + del_timer(&nr_sk(sk)->t4timer); } void nr_stop_idletimer(struct sock *sk) { - del_timer(&sk->protinfo.nr->idletimer); + del_timer(&nr_sk(sk)->idletimer); } void nr_stop_heartbeat(struct sock *sk) @@ -127,14 +136,15 @@ void nr_stop_heartbeat(struct sock *sk) int nr_t1timer_running(struct sock *sk) { - return timer_pending(&sk->protinfo.nr->t1timer); + return timer_pending(&nr_sk(sk)->t1timer); } static void nr_heartbeat_expiry(unsigned long param) { struct sock *sk = (struct sock *)param; + nr_cb *nr = nr_sk(sk); - switch (sk->protinfo.nr->state) { + switch (nr->state) { case NR_STATE_0: /* Magic here: If we listen() and a new link dies before it @@ -150,10 +160,10 @@ static void nr_heartbeat_expiry(unsigned long param) * Check for the state of the receive buffer. */ if (atomic_read(&sk->rmem_alloc) < (sk->rcvbuf / 2) && - (sk->protinfo.nr->condition & NR_COND_OWN_RX_BUSY)) { - sk->protinfo.nr->condition &= ~NR_COND_OWN_RX_BUSY; - sk->protinfo.nr->condition &= ~NR_COND_ACK_PENDING; - sk->protinfo.nr->vl = sk->protinfo.nr->vr; + (nr->condition & NR_COND_OWN_RX_BUSY)) { + nr->condition &= ~NR_COND_OWN_RX_BUSY; + nr->condition &= ~NR_COND_ACK_PENDING; + nr->vl = nr->vr; nr_write_internal(sk, NR_INFOACK); break; } @@ -166,9 +176,10 @@ static void nr_heartbeat_expiry(unsigned long param) static void nr_t2timer_expiry(unsigned long param) { struct sock *sk = (struct sock *)param; + nr_cb *nr = nr_sk(sk); - if (sk->protinfo.nr->condition & NR_COND_ACK_PENDING) { - sk->protinfo.nr->condition &= ~NR_COND_ACK_PENDING; + if (nr->condition & NR_COND_ACK_PENDING) { + nr->condition &= ~NR_COND_ACK_PENDING; nr_enquiry_response(sk); } } @@ -177,18 +188,19 @@ static void nr_t4timer_expiry(unsigned long param) { struct sock *sk = (struct sock *)param; - sk->protinfo.nr->condition &= ~NR_COND_PEER_RX_BUSY; + nr_sk(sk)->condition &= ~NR_COND_PEER_RX_BUSY; } static void nr_idletimer_expiry(unsigned long param) { struct sock *sk = (struct sock *)param; + nr_cb *nr = nr_sk(sk); nr_clear_queues(sk); - sk->protinfo.nr->n2count = 0; + nr->n2count = 0; nr_write_internal(sk, NR_DISCREQ); - sk->protinfo.nr->state = NR_STATE_2; + nr->state = NR_STATE_2; nr_start_t1timer(sk); nr_stop_t2timer(sk); @@ -207,35 +219,36 @@ static void nr_idletimer_expiry(unsigned long param) static void nr_t1timer_expiry(unsigned long param) { struct sock *sk = (struct sock *)param; + nr_cb *nr = nr_sk(sk); - switch (sk->protinfo.nr->state) { + switch (nr->state) { case NR_STATE_1: - if (sk->protinfo.nr->n2count == sk->protinfo.nr->n2) { + if (nr->n2count == nr->n2) { nr_disconnect(sk, ETIMEDOUT); return; } else { - sk->protinfo.nr->n2count++; + nr->n2count++; nr_write_internal(sk, NR_CONNREQ); } break; case NR_STATE_2: - if (sk->protinfo.nr->n2count == sk->protinfo.nr->n2) { + if (nr->n2count == nr->n2) { nr_disconnect(sk, ETIMEDOUT); return; } else { - sk->protinfo.nr->n2count++; + nr->n2count++; nr_write_internal(sk, NR_DISCREQ); } break; case NR_STATE_3: - if (sk->protinfo.nr->n2count == sk->protinfo.nr->n2) { + if (nr->n2count == nr->n2) { nr_disconnect(sk, ETIMEDOUT); return; } else { - sk->protinfo.nr->n2count++; + nr->n2count++; nr_requeue_frames(sk); } break; |
