Prevent cwnd to collapse down to 1 MSS after exiting recovery.
This is descrined in RFC 6582, which updates RFC 3782. Submitted by: Richard Scheffenegger Reviewed by: lstewart@ MFC after: 1 week Differential Revision: https://reviews.freebsd.org/D17614
This commit is contained in:
parent
6ca363eb7b
commit
5cc11a89db
sys/netinet/cc
@ -324,7 +324,12 @@ cubic_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 conditions. Implements RFC6582
|
||||
*/
|
||||
CCV(ccv, snd_cwnd) = max(pipe, CCV(ccv, t_maxseg)) +
|
||||
CCV(ccv, t_maxseg);
|
||||
else
|
||||
/* Update cwnd based on beta and adjusted max_cwnd. */
|
||||
CCV(ccv, snd_cwnd) = max(1, ((CUBIC_BETA *
|
||||
|
@ -366,7 +366,12 @@ htcp_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 down not collape to 1 MSS under
|
||||
* adverse conditions. Implements RFC6582
|
||||
*/
|
||||
CCV(ccv, snd_cwnd) = max(pipe, CCV(ccv, t_maxseg)) +
|
||||
CCV(ccv, t_maxseg);
|
||||
else
|
||||
CCV(ccv, snd_cwnd) = max(1, ((htcp_data->beta *
|
||||
htcp_data->prev_cwnd / CCV(ccv, t_maxseg))
|
||||
|
@ -295,7 +295,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);
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user