Hello, On Fri, Aug 06, 2021 at 12:26:10AM +0200, Alexander Bluhm wrote: > Hi, > > I have seen some stalling TCP connections while doing unidirectional > throughput tests. The sending machine is doing zero window probes, > but is not sending more data although the other machine announced > that it has space again. > > I guess this commit in tcp_input.c triggered it: > ---------------------------- > revision 1.362 > date: 2019/11/11 21:17:21; author: bluhm; state: Exp; lines: +9 -3; > commitid: wXndkYTLO9jvCPdW; > Prevent underflows in tp->snd_wnd if the remote side ACKs more than > tp->snd_wnd. This can happen, for example, when the remote side > responds to a window probe by ACKing the one byte it contains. > from FreeBSD; via markus@; OK sashan@ tobhe@ > ---------------------------- > > There we fixed an integer underflow. So we no longer have uint32 > max in the send window, but 0. I see this in my test case. Now > we need the machanism that writes the correct send window size. > > There is a commit in FreeBSD from 2002: > https://urldefense.com/v3/__https://github.com/freebsd/freebsd-src/commit/1645d0903ef7162f5c4516373f0c9df0501ac893__;!!ACWV5N9M2RV99hQ!bS5vG8TH_FAv1Bx-q4iPl5brhCeUQ-GvVeLnfT4b6mk4tY-ktVPZoOAX0zD5ySiQj4R416lx$ > > > The header prediction code did not update snd_wl2. If there is a > sequence number wrap, the send window update is not reached. > > Although I did not obverve it, there seems to be the same problem > for snd_wl1 and rcv_up. For rcv_up I copied the comparison with > rcv_nxt from urgent processing to keep future urgent data. > > ok? >
Looks good to me, OK sashan can you also share some details about testing you have done? (tool + command line options) thanks a lot regards sashan