Improve TCP CUBIC specific after idle reaction.

The adjustments are inspired by the Linux stack, which has had a
functionally equivalent implementation for more than a decade now.

Submitted by:		Richard Scheffenegger
Reviewed by:		Cheng Cui
Differential Revision:	https://reviews.freebsd.org/D18982
This commit is contained in:
Michael Tuexen 2019-11-16 11:57:12 +00:00
parent 35cd141b4b
commit b0c1a13e4e
Notes: svn2git 2020-12-20 02:59:44 +00:00
svn path=/head/; revision=354773

View File

@ -190,6 +190,8 @@ cubic_ack_received(struct cc_var *ccv, uint16_t type)
if (cubic_data->num_cong_events == 0 &&
cubic_data->max_cwnd < CCV(ccv, snd_cwnd))
cubic_data->max_cwnd = CCV(ccv, snd_cwnd);
cubic_data->K = cubic_k(cubic_data->max_cwnd /
CCV(ccv, t_maxseg));
}
}
}
@ -206,6 +208,9 @@ cubic_after_idle(struct cc_var *ccv)
cubic_data = ccv->cc_data;
cubic_data->max_cwnd = ulmax(cubic_data->max_cwnd, CCV(ccv, snd_cwnd));
cubic_data->K = cubic_k(cubic_data->max_cwnd / CCV(ccv, t_maxseg));
newreno_cc_algo.after_idle(ccv);
cubic_data->t_last_cong = ticks;
}