Changeset View
Changeset View
Standalone View
Standalone View
sys/netinet/cc/cc_dctcp.c
Show First 20 Lines • Show All 226 Lines • ▼ Show 20 Lines | |||||
/* | /* | ||||
* Perform any necessary tasks before we enter congestion recovery. | * Perform any necessary tasks before we enter congestion recovery. | ||||
*/ | */ | ||||
static void | static void | ||||
dctcp_cong_signal(struct cc_var *ccv, uint32_t type) | dctcp_cong_signal(struct cc_var *ccv, uint32_t type) | ||||
{ | { | ||||
struct dctcp *dctcp_data; | struct dctcp *dctcp_data; | ||||
u_int win, mss; | u_long win, mss; | ||||
dctcp_data = ccv->cc_data; | dctcp_data = ccv->cc_data; | ||||
win = CCV(ccv, snd_cwnd); | win = CCV(ccv, snd_cwnd); | ||||
mss = CCV(ccv, t_maxseg); | mss = CCV(ccv, t_maxseg); | ||||
switch (type) { | switch (type) { | ||||
case CC_NDUPACK: | case CC_NDUPACK: | ||||
if (!IN_FASTRECOVERY(CCV(ccv, t_flags))) { | if (!IN_FASTRECOVERY(CCV(ccv, t_flags))) { | ||||
Show All 38 Lines | case CC_ECN: | ||||
break; | break; | ||||
case CC_RTO: | case CC_RTO: | ||||
if (CCV(ccv, t_flags) & TF_ECN_PERMIT) { | if (CCV(ccv, t_flags) & TF_ECN_PERMIT) { | ||||
CCV(ccv, t_flags) |= TF_ECN_SND_CWR; | CCV(ccv, t_flags) |= TF_ECN_SND_CWR; | ||||
dctcp_update_alpha(ccv); | dctcp_update_alpha(ccv); | ||||
dctcp_data->save_sndnxt += CCV(ccv, t_maxseg); | dctcp_data->save_sndnxt += CCV(ccv, t_maxseg); | ||||
dctcp_data->num_cong_events++; | dctcp_data->num_cong_events++; | ||||
} | } | ||||
CCV(ccv, snd_ssthresh) = max(2*mss, win/2); | |||||
CCV(ccv, snd_cwnd) = mss; | |||||
break; | break; | ||||
} | } | ||||
} | } | ||||
static void | static void | ||||
dctcp_conn_init(struct cc_var *ccv) | dctcp_conn_init(struct cc_var *ccv) | ||||
{ | { | ||||
struct dctcp *dctcp_data; | struct dctcp *dctcp_data; | ||||
▲ Show 20 Lines • Show All 177 Lines • Show Last 20 Lines |