summaryrefslogtreecommitdiffstats
path: root/freebsd/sys/netinet/cc
diff options
context:
space:
mode:
authorSebastian Huber <sebastian.huber@embedded-brains.de>2019-06-05 11:35:39 +0200
committerSebastian Huber <sebastian.huber@embedded-brains.de>2019-06-05 14:16:00 +0200
commit705e362ea5d6f711e987f5d370467b8873fc2255 (patch)
treebb2152c95b76783069419dcd1c24014ba0eb3a1b /freebsd/sys/netinet/cc
parentAdd RTEMS-specific getcredhostuuid() (diff)
downloadrtems-libbsd-705e362ea5d6f711e987f5d370467b8873fc2255.tar.bz2
Update to FreeBSD stable/12 2019-06-05
Git mirror commit 78576620f2689e23144a1cf1bf55106cc6abe2b7.
Diffstat (limited to 'freebsd/sys/netinet/cc')
-rw-r--r--freebsd/sys/netinet/cc/cc_newreno.c7
1 files changed, 6 insertions, 1 deletions
diff --git a/freebsd/sys/netinet/cc/cc_newreno.c b/freebsd/sys/netinet/cc/cc_newreno.c
index b1307c92..1ab85042 100644
--- a/freebsd/sys/netinet/cc/cc_newreno.c
+++ b/freebsd/sys/netinet/cc/cc_newreno.c
@@ -301,7 +301,12 @@ newreno_post_recovery(struct cc_var *ccv)
pipe = CCV(ccv, snd_max) - ccv->curack;
if (pipe < CCV(ccv, snd_ssthresh))
- CCV(ccv, snd_cwnd) = pipe + CCV(ccv, t_maxseg);
+ /*
+ * Ensure that cwnd does not collapse to 1 MSS under
+ * adverse conditons. Implements RFC6582
+ */
+ CCV(ccv, snd_cwnd) = max(pipe, CCV(ccv, t_maxseg)) +
+ CCV(ccv, t_maxseg);
else
CCV(ccv, snd_cwnd) = CCV(ccv, snd_ssthresh);
}