Hi,
> On 2/06/2020, at 9:41 AM, Brian Brombacher <[email protected]> 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);
>