Comment 31 for bug 1670041

Revision history for this message
Eric Dumazet (edumazet) wrote :

skb_orphan() is not the way to go.

Can someone try the following patch ?

diff --git a/net/ipv4/tcp_output.c b/net/ipv4/tcp_output.c
index 4e985dea1dd24fdecfbf9b47d51cff698e97cd2f..5f394f2f524f6ac8d8d9bef50a1bfc99397d6724 100644
--- a/net/ipv4/tcp_output.c
+++ b/net/ipv4/tcp_output.c
@@ -2158,7 +2158,7 @@ static bool tcp_pacing_check(const struct sock *sk)
 }

 /* TCP Small Queues :
- * Control number of packets in qdisc/devices to two packets / or ~1 ms.
+ * Control number of packets in qdisc/devices to two packets / or ~4 ms.
  * (These limits are doubled for retransmits)
  * This allows for :
  * - better RTT estimation and ACK scheduling
@@ -2173,7 +2173,7 @@ static bool tcp_small_queue_check(struct sock *sk, const struct sk_buff *skb,
 {
        unsigned int limit;

- limit = max(2 * skb->truesize, sk->sk_pacing_rate >> 10);
+ limit = max(2 * skb->truesize, sk->sk_pacing_rate >> 8);
        limit = min_t(u32, limit, sysctl_tcp_limit_output_bytes);
        limit <<= factor;