Author: rscheff
Date: Fri Oct  9 09:33:45 2020
New Revision: 366564
URL: https://svnweb.freebsd.org/changeset/base/366564

Log:
  MFC r366149: TCP newreno: improve after_idle ssthresh
  
  Adjust ssthresh in after_idle to the maximum of
  the prior ssthresh, or 3/4 of the prior cwnd. See
  RFC2861 section 2 for an in depth explanation for
  the rationale around this.
  
  As newreno is the default "fall-through" reaction,
  most tcp variants will benefit from this.
  
  Reviewed by:  tuexen
  MFC after:    2 weeks
  Sponsored by: NetApp, Inc.
  Differential Revision:        https://reviews.freebsd.org/D22438

Modified:
  stable/12/sys/netinet/cc/cc_newreno.c
Directory Properties:
  stable/12/   (props changed)

Modified: stable/12/sys/netinet/cc/cc_newreno.c
==============================================================================
--- stable/12/sys/netinet/cc/cc_newreno.c       Fri Oct  9 05:28:32 2020        
(r366563)
+++ stable/12/sys/netinet/cc/cc_newreno.c       Fri Oct  9 09:33:45 2020        
(r366564)
@@ -213,12 +213,19 @@ newreno_after_idle(struct cc_var *ccv)
         * wirespeed, overloading router and switch buffers along the way.
         *
         * See RFC5681 Section 4.1. "Restarting Idle Connections".
+        *
+        * In addition, per RFC2861 Section 2, the ssthresh is set to the
+        * maximum of the former ssthresh or 3/4 of the old cwnd, to
+        * not exit slow-start prematurely.
         */
        if (V_tcp_do_rfc3390)
                rw = min(4 * CCV(ccv, t_maxseg),
                    max(2 * CCV(ccv, t_maxseg), 4380));
        else
                rw = CCV(ccv, t_maxseg) * 2;
+
+       CCV(ccv, snd_ssthresh) = max(CCV(ccv, snd_ssthresh),
+           CCV(ccv, snd_cwnd)-(CCV(ccv, snd_cwnd)>>2));
 
        CCV(ccv, snd_cwnd) = min(rw, CCV(ccv, snd_cwnd));
 }
_______________________________________________
svn-src-all@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to "svn-src-all-unsubscr...@freebsd.org"

Reply via email to