diff options
author | Ralf Baechle <ralf@linux-mips.org> | 1999-02-15 02:15:32 +0000 |
---|---|---|
committer | Ralf Baechle <ralf@linux-mips.org> | 1999-02-15 02:15:32 +0000 |
commit | 86464aed71025541805e7b1515541aee89879e33 (patch) | |
tree | e01a457a4912a8553bc65524aa3125d51f29f810 /net/ipv4/tcp_timer.c | |
parent | 88f99939ecc6a95a79614574cb7d95ffccfc3466 (diff) |
Merge with Linux 2.2.1.
Diffstat (limited to 'net/ipv4/tcp_timer.c')
-rw-r--r-- | net/ipv4/tcp_timer.c | 12 |
1 files changed, 9 insertions, 3 deletions
diff --git a/net/ipv4/tcp_timer.c b/net/ipv4/tcp_timer.c index ea46d3268..41e54309c 100644 --- a/net/ipv4/tcp_timer.c +++ b/net/ipv4/tcp_timer.c @@ -5,7 +5,7 @@ * * Implementation of the Transmission Control Protocol(TCP). * - * Version: $Id: tcp_timer.c,v 1.55 1998/11/07 11:55:42 davem Exp $ + * Version: $Id: tcp_timer.c,v 1.57 1999/01/20 07:20:21 davem Exp $ * * Authors: Ross Biro, <bir7@leland.Stanford.Edu> * Fred N. van Kempen, <waltje@uWalt.NL.Mugnet.ORG> @@ -170,8 +170,13 @@ void tcp_delack_timer(unsigned long data) if(!sk->zapped && sk->tp_pinfo.af_tcp.delayed_acks && - sk->state != TCP_CLOSE) - tcp_send_ack(sk); + sk->state != TCP_CLOSE) { + /* If socket is currently locked, defer the ACK. */ + if (!atomic_read(&sk->sock_readers)) + tcp_send_ack(sk); + else + tcp_send_delayed_ack(&(sk->tp_pinfo.af_tcp), HZ/10); + } } void tcp_probe_timer(unsigned long data) @@ -463,6 +468,7 @@ void tcp_retransmit_timer(unsigned long data) /* Retransmission. */ tp->retrans_head = NULL; + tp->rexmt_done = 0; tp->fackets_out = 0; tp->retrans_out = 0; if (tp->retransmits == 0) { |