diff options
| author | Andre Oppermann <andre@FreeBSD.org> | 2012-10-28 17:16:09 +0000 | 
|---|---|---|
| committer | Andre Oppermann <andre@FreeBSD.org> | 2012-10-28 17:16:09 +0000 | 
| commit | 22efabd40c4ad415dbdf68a105a3fa654ac35f7f (patch) | |
| tree | 8602c0442ae6fd81ed0da1922e05cad0e77eb54e | |
| parent | b4380da796387d8104b15b50022e8e817ef471ac (diff) | |
Notes
| -rw-r--r-- | sys/netinet/tcp_input.c | 11 | 
1 files changed, 9 insertions, 2 deletions
diff --git a/sys/netinet/tcp_input.c b/sys/netinet/tcp_input.c index 1d56dfd9b4ea..62819cfd6d1d 100644 --- a/sys/netinet/tcp_input.c +++ b/sys/netinet/tcp_input.c @@ -351,8 +351,15 @@ cc_conn_init(struct tcpcb *tp)  	if (V_tcp_do_rfc3390)  		tp->snd_cwnd = min(4 * tp->t_maxseg,  		    max(2 * tp->t_maxseg, 4380)); -	else -		tp->snd_cwnd = tp->t_maxseg; +	else { +		/* Per RFC5681 Section 3.1 */ +		if (tp->t_maxseg > 2190) +			tp->snd_cwnd = 2 * tp->t_maxseg; +		else if (tp->t_maxseg > 1095) +			tp->snd_cwnd = 3 * tp->t_maxseg; +		else +			tp->snd_cwnd = 4 * tp->t_maxseg; +	}  	if (CC_ALGO(tp)->conn_init != NULL)  		CC_ALGO(tp)->conn_init(tp->ccv);  | 
