aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDavid S. Miller <davem@davemloft.net>2005-07-05 18:43:58 -0400
committerDavid S. Miller <davem@davemloft.net>2005-07-05 18:43:58 -0400
commit908a75c17a9e5a888347c2c1d3572203d1b1c7db (patch)
tree9741bc479cedc00dec3eb123ed834527af7f3974
parent63d886c96b2a580b1bf764de238ba3c63515b5ee (diff)
[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>
-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_
909 if (TCP_SKB_CB(skb)->flags & TCPCB_FLAG_FIN) 909 if (TCP_SKB_CB(skb)->flags & TCPCB_FLAG_FIN)
910 return 0; 910 return 0;
911 911
912 if (tp->ca_state != TCP_CA_Open)
913 return 0;
914
912 in_flight = tcp_packets_in_flight(tp); 915 in_flight = tcp_packets_in_flight(tp);
913 916
914 BUG_ON(tcp_skb_pcount(skb) <= 1 || 917 BUG_ON(tcp_skb_pcount(skb) <= 1 ||