summaryrefslogtreecommitdiffstats
path: root/sys/netinet
diff options
context:
space:
mode:
authorjayanth <jayanth@FreeBSD.org>2001-08-29 23:54:13 +0000
committerjayanth <jayanth@FreeBSD.org>2001-08-29 23:54:13 +0000
commit77d67fb5682dc550f62559210baf33988ee0f890 (patch)
tree3e450d0b6ddbace337727dea6b849ea7b1177824 /sys/netinet
parentb093d3a26eaec4180495d37ba8e76768301f3b2d (diff)
downloadFreeBSD-src-77d67fb5682dc550f62559210baf33988ee0f890.zip
FreeBSD-src-77d67fb5682dc550f62559210baf33988ee0f890.tar.gz
when newreno is turned on, if dupacks = 1 or dupacks = 2 and
new data is acknowledged, reset the dupacks to 0. The problem was spotted when a connection had its send buffer full because the congestion window was only 1 MSS and was not being incremented because dupacks was not reset to 0. Obtained from: Yahoo!
Diffstat (limited to 'sys/netinet')
-rw-r--r--sys/netinet/tcp_input.c2
-rw-r--r--sys/netinet/tcp_reass.c2
2 files changed, 4 insertions, 0 deletions
diff --git a/sys/netinet/tcp_input.c b/sys/netinet/tcp_input.c
index 3592213..38f4a3e 100644
--- a/sys/netinet/tcp_input.c
+++ b/sys/netinet/tcp_input.c
@@ -1885,6 +1885,8 @@ trimthenstep6:
tp->snd_cwnd = tp->snd_ssthresh;
tp->t_dupacks = 0;
}
+ if (tp->t_dupacks < tcprexmtthresh)
+ tp->t_dupacks = 0;
if (SEQ_GT(th->th_ack, tp->snd_max)) {
tcpstat.tcps_rcvacktoomuch++;
goto dropafterack;
diff --git a/sys/netinet/tcp_reass.c b/sys/netinet/tcp_reass.c
index 3592213..38f4a3e 100644
--- a/sys/netinet/tcp_reass.c
+++ b/sys/netinet/tcp_reass.c
@@ -1885,6 +1885,8 @@ trimthenstep6:
tp->snd_cwnd = tp->snd_ssthresh;
tp->t_dupacks = 0;
}
+ if (tp->t_dupacks < tcprexmtthresh)
+ tp->t_dupacks = 0;
if (SEQ_GT(th->th_ack, tp->snd_max)) {
tcpstat.tcps_rcvacktoomuch++;
goto dropafterack;
OpenPOWER on IntegriCloud