From 61e5edef917ce5e2daa2056bcde64e2e477f1e06 Mon Sep 17 00:00:00 2001 From: Eric Dumazet Date: Thu, 23 May 2013 07:44:20 +0000 Subject: [PATCH] --- yaml --- r: 376177 b: refs/heads/master c: 547669d483e5783d722772af1483fa474da7caf9 h: refs/heads/master i: 376175: 05548c2c45f14f5f30e8b7fe24366120642dce74 v: v3 --- [refs] | 2 +- trunk/net/ipv4/tcp_output.c | 10 ++++++---- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/[refs] b/[refs] index ca2b6ac4b754..0226e43c4deb 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 7a1a0cbfeb31f20acc10722642198e76bbc30cb9 +refs/heads/master: 547669d483e5783d722772af1483fa474da7caf9 diff --git a/trunk/net/ipv4/tcp_output.c b/trunk/net/ipv4/tcp_output.c index 536d40929ba6..ec335fabd5cc 100644 --- a/trunk/net/ipv4/tcp_output.c +++ b/trunk/net/ipv4/tcp_output.c @@ -874,11 +874,13 @@ static int tcp_transmit_skb(struct sock *sk, struct sk_buff *skb, int clone_it, &md5); tcp_header_size = tcp_options_size + sizeof(struct tcphdr); - if (tcp_packets_in_flight(tp) == 0) { + if (tcp_packets_in_flight(tp) == 0) tcp_ca_event(sk, CA_EVENT_TX_START); - skb->ooo_okay = 1; - } else - skb->ooo_okay = 0; + + /* if no packet is in qdisc/device queue, then allow XPS to select + * another queue. + */ + skb->ooo_okay = sk_wmem_alloc_get(sk) == 0; skb_push(skb, tcp_header_size); skb_reset_transport_header(skb);