svn commit: r361808 - stable/12/sys/netinet/cc
Richard Scheffenegger
rscheff at FreeBSD.org
Thu Jun 4 21:02:24 UTC 2020
Author: rscheff
Date: Thu Jun 4 21:02:24 2020
New Revision: 361808
URL: https://svnweb.freebsd.org/changeset/base/361808
Log:
MFC rS361348: DCTCP: update alpha only once after loss recovery.
In mixed ECN marking and loss scenarios it was found, that
the alpha value of DCTCP is updated two times. The second
update happens with freshly initialized counters indicating
to ECN loss. Overall this leads to alpha not adjusting as
quickly as expected to ECN markings, and therefore lead to
excessive loss.
Reported by: Cheng Cui
Reviewed by: chengc_netapp.com, rrs, tuexen (mentor)
Approved by: tuexen (mentor), rgrimes (mentor, blanket)
Sponsored by: NetApp, Inc.
Differential Revision: https://reviews.freebsd.org/D24817
Modified:
stable/12/sys/netinet/cc/cc_dctcp.c
Directory Properties:
stable/12/ (props changed)
Modified: stable/12/sys/netinet/cc/cc_dctcp.c
==============================================================================
--- stable/12/sys/netinet/cc/cc_dctcp.c Thu Jun 4 20:48:57 2020 (r361807)
+++ stable/12/sys/netinet/cc/cc_dctcp.c Thu Jun 4 21:02:24 2020 (r361808)
@@ -154,10 +154,8 @@ dctcp_ack_received(struct cc_var *ccv, uint16_t type)
* Update the fraction of marked bytes at the end of
* current window size.
*/
- if ((IN_FASTRECOVERY(CCV(ccv, t_flags)) &&
- SEQ_GEQ(ccv->curack, CCV(ccv, snd_recover))) ||
- (!IN_FASTRECOVERY(CCV(ccv, t_flags)) &&
- SEQ_GT(ccv->curack, dctcp_data->save_sndnxt)))
+ if (!IN_FASTRECOVERY(CCV(ccv, t_flags)) &&
+ SEQ_GT(ccv->curack, dctcp_data->save_sndnxt))
dctcp_update_alpha(ccv);
} else
newreno_cc_algo.ack_received(ccv, type);
More information about the svn-src-all
mailing list