--- x/net/ipv4/tcp.c.~1~ 2003-04-05 06:02:23.000000000 +0200 +++ x/net/ipv4/tcp.c 2003-04-05 06:03:03.000000000 +0200 @@ -1318,7 +1318,7 @@ void cleanup_rbuf(struct sock *sk, int c __u32 rcv_window_now = tcp_receive_window(tp); /* Optimize, __tcp_select_window() is not cheap. */ - if (2*rcv_window_now <= tp->window_clamp) { + if (2*rcv_window_now < tp->window_clamp) { __u32 new_window = __tcp_select_window(sk); /* Send ACK now, if this read freed lots of space @@ -1326,7 +1326,7 @@ void cleanup_rbuf(struct sock *sk, int c * We can advertise it now, if it is not less than current one. * "Lots" means "at least twice" here. */ - if(new_window && new_window >= 2*rcv_window_now) + if(new_window && new_window > 2*rcv_window_now) time_to_ack = 1; } }