diff options
| author | Andre Oppermann <andre@FreeBSD.org> | 2012-10-28 17:25:08 +0000 |
|---|---|---|
| committer | Andre Oppermann <andre@FreeBSD.org> | 2012-10-28 17:25:08 +0000 |
| commit | cf8f04f4c0328ef2386b561d705b6a0f6e3129f5 (patch) | |
| tree | 1c72efa27b238febe6da8532f840afcd3d5ea1cd /sys/netinet/tcp_timer.c | |
| parent | 22efabd40c4ad415dbdf68a105a3fa654ac35f7f (diff) | |
Notes
Diffstat (limited to 'sys/netinet/tcp_timer.c')
| -rw-r--r-- | sys/netinet/tcp_timer.c | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/sys/netinet/tcp_timer.c b/sys/netinet/tcp_timer.c index e01600cd33c8..979c4b353e3b 100644 --- a/sys/netinet/tcp_timer.c +++ b/sys/netinet/tcp_timer.c @@ -539,7 +539,13 @@ tcp_timer_rexmt(void * xtp) } INP_INFO_RUNLOCK(&V_tcbinfo); headlocked = 0; - if (tp->t_rxtshift == 1) { + if (tp->t_state == TCPS_SYN_SENT) { + /* + * If the SYN was retransmitted, indicate CWND to be + * limited to 1 segment in cc_conn_init(). + */ + tp->snd_cwnd = 1; + } else if (tp->t_rxtshift == 1) { /* * first retransmit; record ssthresh and cwnd so they can * be recovered if this turns out to be a "bad" retransmit. |
