summaryrefslogtreecommitdiffstats
path: root/net/ipv4
diff options
context:
space:
mode:
authorDavid S. Miller2005-07-06 00:43:58 +0200
committerDavid S. Miller2005-07-06 00:43:58 +0200
commit908a75c17a9e5a888347c2c1d3572203d1b1c7db (patch)
tree9741bc479cedc00dec3eb123ed834527af7f3974 /net/ipv4
parent[PKT_SCHED]: Blackhole queueing discipline (diff)
downloadkernel-qcow2-linux-908a75c17a9e5a888347c2c1d3572203d1b1c7db.tar.gz
kernel-qcow2-linux-908a75c17a9e5a888347c2c1d3572203d1b1c7db.tar.xz
kernel-qcow2-linux-908a75c17a9e5a888347c2c1d3572203d1b1c7db.zip
[TCP]: Never TSO defer under periods of congestion.
Congestion window recover after loss depends upon the fact that if we have a full MSS sized frame at the head of the send queue, we will send it. TSO deferral can defeat the ACK clocking necessary to exit cleanly from recovery. Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/ipv4')
-rw-r--r--net/ipv4/tcp_output.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/net/ipv4/tcp_output.c b/net/ipv4/tcp_output.c
index fd3ce38184ae..e041d057ec86 100644
--- a/net/ipv4/tcp_output.c
+++ b/net/ipv4/tcp_output.c
@@ -909,6 +909,9 @@ static int tcp_tso_should_defer(struct sock *sk, struct tcp_sock *tp, struct sk_
if (TCP_SKB_CB(skb)->flags & TCPCB_FLAG_FIN)
return 0;
+ if (tp->ca_state != TCP_CA_Open)
+ return 0;
+
in_flight = tcp_packets_in_flight(tp);
BUG_ON(tcp_skb_pcount(skb) <= 1 ||