[TCP]: Increase the max_burst threshold from 3 to tp->reordering.
authorJohn Heffner <johnwheffner@gmail.com>
Tue, 15 Apr 2008 22:26:39 +0000 (15:26 -0700)
committerDavid S. Miller <davem@davemloft.net>
Wed, 16 Apr 2008 09:29:56 +0000 (02:29 -0700)
This change is necessary to allow cwnd to grow during persistent
reordering.  Cwnd moderation is applied when in the disorder state
and an ack that fills the hole comes in.  If the hole was greater
than 3 packets, but less than tp->reordering, cwnd will shrink when
it should not have.

Signed-off-by: John Heffner <jheffner@napa.(none)>
Signed-off-by: David S. Miller <davem@davemloft.net>
include/net/tcp.h

index 2c14edf7b076fde57fc9e504e768184dc04e9451..633147cb6bbc8967bc5ab04bdd6dd251a9dde90d 100644 (file)
@@ -787,11 +787,14 @@ extern void tcp_enter_cwr(struct sock *sk, const int set_ssthresh);
 extern __u32 tcp_init_cwnd(struct tcp_sock *tp, struct dst_entry *dst);
 
 /* Slow start with delack produces 3 packets of burst, so that
- * it is safe "de facto".
+ * it is safe "de facto".  This will be the default - same as
+ * the default reordering threshold - but if reordering increases,
+ * we must be able to allow cwnd to burst at least this much in order
+ * to not pull it back when holes are filled.
  */
 static __inline__ __u32 tcp_max_burst(const struct tcp_sock *tp)
 {
-       return 3;
+       return tp->reordering;
 }
 
 /* Returns end sequence number of the receiver's advertised window */