diff options
Diffstat (limited to 'net/ipv4/tcp_output.c')
-rw-r--r-- | net/ipv4/tcp_output.c | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/net/ipv4/tcp_output.c b/net/ipv4/tcp_output.c index cd16eb06bebf..e21be13f74a6 100644 --- a/net/ipv4/tcp_output.c +++ b/net/ipv4/tcp_output.c | |||
@@ -1866,8 +1866,12 @@ static bool tcp_write_xmit(struct sock *sk, unsigned int mss_now, int nonagle, | |||
1866 | * - better RTT estimation and ACK scheduling | 1866 | * - better RTT estimation and ACK scheduling |
1867 | * - faster recovery | 1867 | * - faster recovery |
1868 | * - high rates | 1868 | * - high rates |
1869 | * Alas, some drivers / subsystems require a fair amount | ||
1870 | * of queued bytes to ensure line rate. | ||
1871 | * One example is wifi aggregation (802.11 AMPDU) | ||
1869 | */ | 1872 | */ |
1870 | limit = max(skb->truesize, sk->sk_pacing_rate >> 10); | 1873 | limit = max_t(unsigned int, sysctl_tcp_limit_output_bytes, |
1874 | sk->sk_pacing_rate >> 10); | ||
1871 | 1875 | ||
1872 | if (atomic_read(&sk->sk_wmem_alloc) > limit) { | 1876 | if (atomic_read(&sk->sk_wmem_alloc) > limit) { |
1873 | set_bit(TSQ_THROTTLED, &tp->tsq_flags); | 1877 | set_bit(TSQ_THROTTLED, &tp->tsq_flags); |