[TCP] FRTO: Add missing ECN CWR sending to one of the responses
authorIlpo Järvinen <ilpo.jarvinen@helsinki.fi>
Sat, 19 May 2007 20:56:23 +0000 (13:56 -0700)
committerDavid S. Miller <davem@davemloft.net>
Sat, 19 May 2007 20:56:23 +0000 (13:56 -0700)
The conservative spurious RTO response did not queue CWR even
though the sending rate was lowered. Whenever reduction happens
regardless of reason, CWR should be sent (forgetting to send it
is not very fatal though).

A better approach would be to queue CWR when one of the sending
rate reducing responses (rate-halving one or this conservative
response) is used already at RTO. Doing that would allow CWR to
be sent along with the two new data segments that are sent
during FRTO. However, it's a bit "racy" because userland could
tune the response sysctl to a more aggressive one in between.

Signed-off-by: Ilpo Järvinen <ilpo.jarvinen@helsinki.fi>
Signed-off-by: David S. Miller <davem@davemloft.net>
net/ipv4/tcp_input.c

index 7641b2761a14869b1dfd9413b3d5be63a3610f2c..7ecdc89229e85c34758849040565f6447cfd33df 100644 (file)
@@ -2608,6 +2608,7 @@ static void tcp_conservative_spur_to_response(struct tcp_sock *tp)
 {
        tp->snd_cwnd = min(tp->snd_cwnd, tp->snd_ssthresh);
        tp->snd_cwnd_cnt = 0;
+       TCP_ECN_queue_cwr(tp);
        tcp_moderate_cwnd(tp);
 }