aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRobert Watson <rwatson@FreeBSD.org>2004-10-30 20:50:06 +0000
committerRobert Watson <rwatson@FreeBSD.org>2004-10-30 20:50:06 +0000
commit82d4c1675e2d0ff99df2b5ed2fab8c6e74f69cf3 (patch)
tree3a2a0e6e6245e8a360e4b741df3e2e2dbc1edc8c
parentca8592a606c0096bf0366faf2230b675a2fca876 (diff)
downloadsrc-82d4c1675e2d0ff99df2b5ed2fab8c6e74f69cf3.tar.gz
src-82d4c1675e2d0ff99df2b5ed2fab8c6e74f69cf3.zip
Merge tcp_output:1.104 from HEAD to RELENG_5_3:
date: 2004/10/30 12:02:50; author: rwatson; state: Exp; lines: +2 -2 Correct a bug in TCP SACK that could result in wedging of the TCP stack under high load: only set function state to loop and continuing sending if there is no data left to send. RELENG_5_3 candidate. Feet provided: Peter Losher <Peter underscore Losher at isc dot org> Diagnosed by: Aniel Hartmeier <daniel at benzedrine dot cx> Submitted by: mohan <mohans at yahoo-inc dot com> Approved by: re (kensmith)
Notes
Notes: svn path=/releng/5.3/; revision=137082
-rw-r--r--sys/netinet/tcp_output.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/sys/netinet/tcp_output.c b/sys/netinet/tcp_output.c
index 37df139859f0..c64c9f064c3e 100644
--- a/sys/netinet/tcp_output.c
+++ b/sys/netinet/tcp_output.c
@@ -226,12 +226,12 @@ again:
tp->snd_recover - p->rxmit));
} else
len = ((long)ulmin(tp->snd_cwnd, p->end - p->rxmit));
- sack_rxmit = 1;
- sendalot = 1;
off = p->rxmit - tp->snd_una;
KASSERT(off >= 0,("%s: sack block to the left of una : %d",
__func__, off));
if (len > 0) {
+ sack_rxmit = 1;
+ sendalot = 1;
tcpstat.tcps_sack_rexmits++;
tcpstat.tcps_sack_rexmit_bytes +=
min(len, tp->t_maxseg);