--- zzzz-none-000/linux-2.6.13.1/net/ipv4/tcp_timer.c 2005-09-10 02:42:58.000000000 +0000 +++ ohio-7170-487/linux-2.6.13.1/net/ipv4/tcp_timer.c 2007-07-11 12:26:55.000000000 +0000 @@ -604,7 +604,7 @@ elapsed = keepalive_time_when(tp); /* It is alive without keepalive 8) */ - if (tp->packets_out || sk->sk_send_head) + if (tp->retransmits == 0 && (tp->packets_out || sk->sk_send_head)) goto resched; elapsed = tcp_time_stamp - tp->rcv_tstamp;