Provide a possibility to configure the inital congestion window to the

value defined in RFC 4960.

MFC after: 3 months.
This commit is contained in:
Michael Tuexen 2010-12-22 19:04:14 +00:00
parent 886a0c5b95
commit 060bd88290
Notes: svn2git 2020-12-20 02:59:44 +00:00
svn path=/head/; revision=216672
2 changed files with 13 additions and 9 deletions

View File

@ -53,15 +53,19 @@ sctp_set_initial_cc_param(struct sctp_tcb *stcb, struct sctp_nets *net)
uint32_t cwnd_in_mtu;
assoc = &stcb->asoc;
/*
* We take the minimum of the burst limit and the initial congestion
* window. The initial congestion window is at least two times the
* MTU.
*/
cwnd_in_mtu = SCTP_BASE_SYSCTL(sctp_initial_cwnd);
if ((assoc->max_burst > 0) && (cwnd_in_mtu > assoc->max_burst))
cwnd_in_mtu = assoc->max_burst;
net->cwnd = (net->mtu - sizeof(struct sctphdr)) * cwnd_in_mtu;
if (cwnd_in_mtu == 0) {
/* Using 0 means that the value of RFC 4960 is used. */
net->cwnd = min((net->mtu * 4), max((2 * net->mtu), SCTP_INITIAL_CWND));
} else {
/*
* We take the minimum of the burst limit and the initial
* congestion window.
*/
if ((assoc->max_burst > 0) && (cwnd_in_mtu > assoc->max_burst))
cwnd_in_mtu = assoc->max_burst;
net->cwnd = (net->mtu - sizeof(struct sctphdr)) * cwnd_in_mtu;
}
net->ssthresh = assoc->peers_rwnd;
SDT_PROBE(sctp, cwnd, net, init,

View File

@ -500,7 +500,7 @@ struct sctp_sysctl {
/* Initial congestion window in MTU */
#define SCTPCTL_INITIAL_CWND_DESC "Initial congestion window in MTUs"
#define SCTPCTL_INITIAL_CWND_MIN 1
#define SCTPCTL_INITIAL_CWND_MIN 0
#define SCTPCTL_INITIAL_CWND_MAX 0xffffffff
#define SCTPCTL_INITIAL_CWND_DEFAULT 3