Changeset View
Changeset View
Standalone View
Standalone View
sys/netinet/tcp_input.c
Show First 20 Lines • Show All 454 Lines • ▼ Show 20 Lines | #endif | ||||
case CC_RTO: | case CC_RTO: | ||||
maxseg = tcp_maxseg(tp); | maxseg = tcp_maxseg(tp); | ||||
tp->t_dupacks = 0; | tp->t_dupacks = 0; | ||||
tp->t_bytes_acked = 0; | tp->t_bytes_acked = 0; | ||||
EXIT_RECOVERY(tp->t_flags); | EXIT_RECOVERY(tp->t_flags); | ||||
tp->snd_ssthresh = max(2, min(tp->snd_wnd, tp->snd_cwnd) / 2 / | tp->snd_ssthresh = max(2, min(tp->snd_wnd, tp->snd_cwnd) / 2 / | ||||
maxseg) * maxseg; | maxseg) * maxseg; | ||||
tp->snd_cwnd = maxseg; | tp->snd_cwnd = maxseg; | ||||
if (tp->t_flags2 & TF2_ECN_PERMIT) | |||||
tp->t_flags2 |= TF2_ECN_SND_CWR; | |||||
break; | break; | ||||
case CC_RTO_ERR: | case CC_RTO_ERR: | ||||
TCPSTAT_INC(tcps_sndrexmitbad); | TCPSTAT_INC(tcps_sndrexmitbad); | ||||
/* RTO was unnecessary, so reset everything. */ | /* RTO was unnecessary, so reset everything. */ | ||||
tp->snd_cwnd = tp->snd_cwnd_prev; | tp->snd_cwnd = tp->snd_cwnd_prev; | ||||
tp->snd_ssthresh = tp->snd_ssthresh_prev; | tp->snd_ssthresh = tp->snd_ssthresh_prev; | ||||
tp->snd_recover = tp->snd_recover_prev; | tp->snd_recover = tp->snd_recover_prev; | ||||
if (tp->t_flags & TF_WASFRECOVERY) | if (tp->t_flags & TF_WASFRECOVERY) | ||||
▲ Show 20 Lines • Show All 3,365 Lines • Show Last 20 Lines |