From: Martin Zielinski <mz@seh.de> Date: Mon, 10 Feb 2003 09:44:21 +0100 There seems to be a bug in net/ipv4/tcp_output.c - tcp_send_probe0(...): During a tcp write the receiver can hold the connection by respondig with ACKs window size 0. In this situation the sender (linux) has timeouts between sending ACKs to test, if the connection is still valid. This timeout is controlled by "min(tp->rto << tp->backoff, TCP_RTO_MAX)". tp->backoff is allways increased by 1. On a 32 bit machine at least a tp->backoff value of 32 results in a 0 for this expression. For retransmits it can never reach the value 32 bacause the backoff bumping there is capped by sysctl_tcp_retries2 which by default is TCP_RETR2 or 16. And for the probe case, it is limited also by the same value. See the tests in tcp_probe_timer(), where 'max_probes' is assigned to sysctl_tcp_retries2, and tcp_send_probe0() is only invoked if "tp->probes_out" is less than this. Every time tcp_send_probe0() increases "tp->probes_out" it also increases "tp->backoff". So I don't think tp->backoff can ever reach 32. Did you add debugging statements to tcp_send_probe0() to find this out? What exactly did these debugging statements print out for you? - : 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