Hi, > On 2/06/2020, at 9:41 AM, Brian Brombacher <br...@planetunix.net> wrote: > > Hi, > > RFC 5681 Section 3.1 has an Implementation Note that covers the bug fixed by > the following patch. I ran into this bug testing on a high latency link. My > congestion window was pinned to a specific value and could not open further, > causing a lack of bandwidth utilization. > > I chose if/assign rather than max(9) for clarity with the RFC; however, both > work fine.
As discussed off-list, I am setting up a test harness for this. cheers, Richard. > Index: tcp_input.c > =================================================================== > RCS file: /home/brian/cvs/src/sys/netinet/tcp_input.c,v > retrieving revision 1.364 > diff -u -r1.364 tcp_input.c > --- tcp_input.c 6 Dec 2019 14:43:14 -0000 1.364 > +++ tcp_input.c 1 Jun 2020 21:16:26 -0000 > @@ -1707,8 +1707,11 @@ > u_int cw = tp->snd_cwnd; > u_int incr = tp->t_maxseg; > > - if (cw > tp->snd_ssthresh) > + if (cw > tp->snd_ssthresh) { > incr = incr * incr / cw; > + if (incr == 0) > + incr = 1; > + } > if (tp->t_dupacks < tcprexmtthresh) > tp->snd_cwnd = ulmin(cw + incr, > TCP_MAXWIN << tp->snd_scale); >