--- zzzz-none-000/linux-2.6.28.10/net/ipv4/tcp_timer.c 2009-05-02 18:54:43.000000000 +0000 +++ puma5-6360-529/linux-2.6.28.10/net/ipv4/tcp_timer.c 2009-10-23 13:23:35.000000000 +0000 @@ -496,7 +496,7 @@ elapsed = keepalive_time_when(tp); /* It is alive without keepalive 8) */ - if (tp->packets_out || tcp_send_head(sk)) + if (icsk->icsk_retransmits == 0 && (tp->packets_out || tcp_send_head(sk))) goto resched; elapsed = tcp_time_stamp - tp->rcv_tstamp;