summaryrefslogtreecommitdiffstats
path: root/sys/netinet/tcp_input.c
diff options
context:
space:
mode:
authorprovos <provos@openbsd.org>2000-02-21 21:42:13 +0000
committerprovos <provos@openbsd.org>2000-02-21 21:42:13 +0000
commit6977aa136bdd127bdf17acfa8fb2abc315257fce (patch)
tree6b9606872ddb6c4abef47f48a02ce1dccf465a9e /sys/netinet/tcp_input.c
parentmove fpproc into the cpuinfo structure. (diff)
downloadwireguard-openbsd-6977aa136bdd127bdf17acfa8fb2abc315257fce.tar.xz
wireguard-openbsd-6977aa136bdd127bdf17acfa8fb2abc315257fce.zip
TCP SACK fixes via Tom Henderson (tomh@cs.berkeley.edu):
- tcp_sack_adjust() was completely rewritten, since it was erroneously referencing receiver side sequence numbers and comparing with sender side sequence numbers (thanks to Arun Desai (adesai@cisco.com) who discovered the problem) - in tcp_output(), moved assignment of sendalot=0 to the piece of code immediately following the search for sack-eligible retransmissions (bug identified by Arun Desai). - tcp_input() was not clearing t_dupacks if fewer than three dupacks arrived between acks of new data. (bug identified by Gaurav Banga (gaurav@netapp.com))
Diffstat (limited to 'sys/netinet/tcp_input.c')
-rw-r--r--sys/netinet/tcp_input.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/sys/netinet/tcp_input.c b/sys/netinet/tcp_input.c
index 5b28a0fd020..d84f9583b87 100644
--- a/sys/netinet/tcp_input.c
+++ b/sys/netinet/tcp_input.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: tcp_input.c,v 1.56 1999/12/21 17:49:28 provos Exp $ */
+/* $OpenBSD: tcp_input.c,v 1.57 2000/02/21 21:42:13 provos Exp $ */
/* $NetBSD: tcp_input.c,v 1.23 1996/02/13 23:43:44 christos Exp $ */
/*
@@ -1672,6 +1672,8 @@ trimthenstep6:
tp->t_dupacks = 0;
}
}
+ if (tp->t_dupacks < tcprexmtthresh)
+ tp->t_dupacks = 0;
#else /* else no TCP_SACK */
if (tp->t_dupacks >= tcprexmtthresh &&
tp->snd_cwnd > tp->snd_ssthresh)