aboutsummaryrefslogtreecommitdiffstats
path: root/net/ipv4
diff options
context:
space:
mode:
authorIlpo Järvinen <ilpo.jarvinen@helsinki.fi>2007-02-22 02:14:42 -0500
committerDavid S. Miller <davem@sunset.davemloft.net>2007-04-26 01:23:15 -0400
commit288035f915686a9a9e85e0358c5392bb5d7ae58d (patch)
treefcf6684a8750e12f5bb9d3a7f70062a574b3ff03 /net/ipv4
parent66e93e45c09affa407750cc06398492e8b897848 (diff)
[TCP]: Prevent reordering adjustments during FRTO
To be honest, I'm not too sure how the reord stuff works in the first place but this seems necessary. When FRTO has been active, the one and only retransmission could be unnecessary but the state and sending order might not be what the sacktag code expects it to be (to work correctly). Signed-off-by: Ilpo Järvinen <ilpo.jarvinen@helsinki.fi> Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/ipv4')
-rw-r--r--net/ipv4/tcp_input.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/net/ipv4/tcp_input.c b/net/ipv4/tcp_input.c
index 055721d8495e..df516d4eca96 100644
--- a/net/ipv4/tcp_input.c
+++ b/net/ipv4/tcp_input.c
@@ -1224,7 +1224,8 @@ tcp_sacktag_write_queue(struct sock *sk, struct sk_buff *ack_skb, u32 prior_snd_
1224 1224
1225 tp->left_out = tp->sacked_out + tp->lost_out; 1225 tp->left_out = tp->sacked_out + tp->lost_out;
1226 1226
1227 if ((reord < tp->fackets_out) && icsk->icsk_ca_state != TCP_CA_Loss) 1227 if ((reord < tp->fackets_out) && icsk->icsk_ca_state != TCP_CA_Loss &&
1228 (tp->frto_highmark && after(tp->snd_una, tp->frto_highmark)))
1228 tcp_update_reordering(sk, ((tp->fackets_out + 1) - reord), 0); 1229 tcp_update_reordering(sk, ((tp->fackets_out + 1) - reord), 0);
1229 1230
1230#if FASTRETRANS_DEBUG > 0 1231#if FASTRETRANS_DEBUG > 0