Sending CWR after an RTO is according to RFC 3168 generally required
and not only for the DCTCP congestion control. Submitted by: Richard Scheffenegger Reviewed by: rgrimes, tuexen@, Cheng Cui MFC after: 1 week Differential Revision: https://reviews.freebsd.org/D23119
This commit is contained in:
parent
e6f7ffd056
commit
f779ce9ed3
@ -284,7 +284,6 @@ dctcp_cong_signal(struct cc_var *ccv, uint32_t type)
|
||||
dctcp_data->ece_curr = 1;
|
||||
break;
|
||||
case CC_RTO:
|
||||
CCV(ccv, t_flags2) |= TF2_ECN_SND_CWR;
|
||||
dctcp_update_alpha(ccv);
|
||||
dctcp_data->save_sndnxt += CCV(ccv, t_maxseg);
|
||||
dctcp_data->num_cong_events++;
|
||||
|
@ -460,6 +460,8 @@ cc_cong_signal(struct tcpcb *tp, struct tcphdr *th, uint32_t type)
|
||||
tp->snd_ssthresh = max(2, min(tp->snd_wnd, tp->snd_cwnd) / 2 /
|
||||
maxseg) * maxseg;
|
||||
tp->snd_cwnd = maxseg;
|
||||
if (tp->t_flags2 & TF2_ECN_PERMIT)
|
||||
tp->t_flags2 |= TF2_ECN_SND_CWR;
|
||||
break;
|
||||
case CC_RTO_ERR:
|
||||
TCPSTAT_INC(tcps_sndrexmitbad);
|
||||
|
@ -1813,6 +1813,8 @@ rack_cong_signal(struct tcpcb *tp, struct tcphdr *th, uint32_t type)
|
||||
tp->snd_ssthresh = max(2, min(tp->snd_wnd, tp->snd_cwnd) / 2 /
|
||||
ctf_fixed_maxseg(tp)) * ctf_fixed_maxseg(tp);
|
||||
tp->snd_cwnd = ctf_fixed_maxseg(tp);
|
||||
if (tp->t_flags2 & TF2_ECN_PERMIT)
|
||||
tp->t_flags2 |= TF2_ECN_SND_CWR;
|
||||
break;
|
||||
case CC_RTO_ERR:
|
||||
TCPSTAT_INC(tcps_sndrexmitbad);
|
||||
|
Loading…
Reference in New Issue
Block a user