Hi, I'm trying to connect to some old banking code, which has a limited TCP implementation. When trying to connect with stock 2.4 and 2.6 kernels it fails. I want to know if there is a way of working around the problem that doesn't break anything. The server doesn't reassemble fragments, so I need to send 311 bytes of data on a TCP stream, in one fragment. Since the MSS is 1460 (Ethernet), this shouldn't be a problem. However, the server sets it's window size to 536 (with a MSS of 1460). Again, I should be able to do this, but I can't. In net/ipv4/tcp_output.c there is a chunk of code: /* Bound mss with half of window */ if (tp->max_window && mss_now > (tp->max_window>>1)) mss_now = max((tp->max_window>>1), 68U - tp->tcp_header_len); which means the first packet is half of 536, or 268 bytes. If I change it, I can connect. Why /2? Why not run: /* Bound mss with window */ if (tp->max_window && mss_now > (tp->max_window)) mss_now = max((tp->max_window), 68U - tp->tcp_header_len); -- Regards, Berend - : send the line "unsubscribe linux-net" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html