On Thursday 29 September 2005 11:17 am, Alexey Kuznetsov wrote: > Hello! > > > >Anyway, ignoring this puzzle, the following patch for 2.4 should help. > > > > > > > > >--- net/ipv4/tcp_input.c.orig 2003-02-20 20:38:39.000000000 +0300 > > >+++ net/ipv4/tcp_input.c 2005-09-02 22:28:00.845952888 +0400 > > >@@ -343,8 +343,6 @@ > > > app_win -= tp->ack.rcv_mss; > > > app_win = max(app_win, 2U*tp->advmss); > > > > > >- if (!ofo_win) > > >- tp->window_clamp = min(tp->window_clamp, app_win); > > > tp->rcv_ssthresh = min(tp->window_clamp, 2U*tp->advmss); > > > } > > >} > > > > I'm very happy to report that the above patch, applied to 2.6.12.6, seems > > to have cured the TCP window problem we were experiencing. > > Good. I think the patch is to be applied to all mainstream kernels. Has anyone looked at the patch I sent out on Sept 9? It goes a few steps further, addressing some additional problems. Original message below. Thanks, -John ----- This is a patch for discussion addressing some receive buffer growing issues.   This is partially related to the thread "Possible BUG in IPv4 TCP window handling..." last week. Specifically it addresses the problem of an interaction between rcvbuf moderation (receiver autotuning) and rcv_ssthresh.  The problem occurs when sending small packets to a receiver with a larger MTU.  (A very common case I have is a host with a 1500 byte MTU sending to a host with a 9k MTU.)  In such a case, the rcv_ssthresh code is targeting a window size corresponding to filling up the current rcvbuf, not taking into account that the new rcvbuf moderation may increase the rcvbuf size. One hunk makes rcv_ssthresh use tcp_rmem[2] as the size target rather than rcvbuf.  The other changes the behavior when it overflows its memory bounds with in-order data so that it tries to grow rcvbuf (the same as with out-of-order data). These changes should help my problem of mixed MTUs, and should also help the case from last week's thread I think.  (In both cases though you still need tcp_rmem[2] to be set much larger than the TCP window.)  One question is if this is too aggressive at trying to increase rcvbuf if it's under memory stress.   -John Signed-off-by: John Heffner