diff options
author | jayanth <jayanth@FreeBSD.org> | 2001-08-29 23:54:13 +0000 |
---|---|---|
committer | jayanth <jayanth@FreeBSD.org> | 2001-08-29 23:54:13 +0000 |
commit | 77d67fb5682dc550f62559210baf33988ee0f890 (patch) | |
tree | 3e450d0b6ddbace337727dea6b849ea7b1177824 /sys/netinet | |
parent | b093d3a26eaec4180495d37ba8e76768301f3b2d (diff) | |
download | FreeBSD-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.c | 2 | ||||
-rw-r--r-- | sys/netinet/tcp_reass.c | 2 |
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; |