summaryrefslogtreecommitdiff
path: root/net/ipv4/tcp_output.c
diff options
context:
space:
mode:
authorDavid S. Miller <davem@davemloft.net>2005-07-05 15:43:58 -0700
committerDavid S. Miller <davem@davemloft.net>2005-07-05 15:43:58 -0700
commit908a75c17a9e5a888347c2c1d3572203d1b1c7db (patch)
tree9741bc479cedc00dec3eb123ed834527af7f3974 /net/ipv4/tcp_output.c
parent63d886c96b2a580b1bf764de238ba3c63515b5ee (diff)
downloadlwn-908a75c17a9e5a888347c2c1d3572203d1b1c7db.tar.gz
lwn-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/tcp_output.c')
-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 ||