From: Ben Hutchings <ben@decadent.org.uk>
To: linux-kernel@vger.kernel.org, stable@vger.kernel.org
Cc: akpm@linux-foundation.org, "Neal Cardwell" <ncardwell@google.com>,
"Yuchung Cheng" <ycheng@google.com>,
"Eric Dumazet" <edumazet@google.com>,
"Tom Herbert" <therbert@google.com>,
"David S. Miller" <davem@davemloft.net>
Subject: [17/26] tcp: xps: fix reordering issues
Date: Wed, 26 Jun 2013 03:35:58 +0100 [thread overview]
Message-ID: <lsq.1372214158.646183620@decadent.org.uk> (raw)
In-Reply-To: <lsq.1372214158.425780530@decadent.org.uk>
3.2.48-rc1 review patch. If anyone has any objections, please let me know.
------------------
From: Eric Dumazet <edumazet@google.com>
[ Upstream commit 547669d483e5783d722772af1483fa474da7caf9 ]
commit 3853b5841c01a ("xps: Improvements in TX queue selection")
introduced ooo_okay flag, but the condition to set it is slightly wrong.
In our traces, we have seen ACK packets being received out of order,
and RST packets sent in response.
We should test if we have any packets still in host queue.
Signed-off-by: Eric Dumazet <edumazet@google.com>
Cc: Tom Herbert <therbert@google.com>
Cc: Yuchung Cheng <ycheng@google.com>
Cc: Neal Cardwell <ncardwell@google.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
---
net/ipv4/tcp_output.c | 10 ++++++----
1 file changed, 6 insertions(+), 4 deletions(-)
diff --git a/net/ipv4/tcp_output.c b/net/ipv4/tcp_output.c
index 5c1807c..3add486 100644
--- a/net/ipv4/tcp_output.c
+++ b/net/ipv4/tcp_output.c
@@ -835,11 +835,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);
next prev parent reply other threads:[~2013-06-26 2:49 UTC|newest]
Thread overview: 35+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-06-26 2:35 [00/26] 3.2.48-rc1 review Ben Hutchings
2013-06-26 2:35 ` [18/26] ip_tunnel: fix kernel panic with icmp_dest_unreach Ben Hutchings
2013-06-26 2:35 ` [05/26] KVM: x86: remove vcpu's CPL check in host-invoked XCR set Ben Hutchings
2013-06-26 2:35 ` [06/26] x86: fix build error and kconfig for ia32_emulation and binfmt Ben Hutchings
2013-06-26 2:35 ` [14/26] ipv6: fix possible crashes in ip6_cork_release() Ben Hutchings
2013-06-26 2:35 ` [13/26] gianfar: add missing iounmap() on error in gianfar_ptp_probe() Ben Hutchings
2013-06-26 2:35 ` [15/26] netlabel: improve domain mapping validation Ben Hutchings
2013-06-26 2:35 ` [03/26] ALSA: usb-audio: Fix invalid volume resolution for Logitech HD Webcam c310 Ben Hutchings
2013-06-26 2:35 ` [07/26] USB: serial: ti_usb_3410_5052: new device id for Abbot strip port cable Ben Hutchings
2013-06-26 8:21 ` Anders Hammarquist
2013-06-26 17:22 ` Greg Kroah-Hartman
2013-06-26 2:35 ` [16/26] r8169: fix 8168evl frame padding Ben Hutchings
2013-06-26 8:51 ` Stefan Bader
2013-06-26 18:37 ` David Miller
2013-06-26 20:00 ` Stefan Bader
2013-06-26 2:35 ` [10/26] Revert "drm/i915: GFX_MODE Flush TLB Invalidate Mode must be '1' for scanline waits" Ben Hutchings
2013-06-26 2:35 ` [12/26] tcp: fix tcp_md5_hash_skb_data() Ben Hutchings
2013-06-26 2:35 ` [11/26] virtio-blk: Call revalidate_disk() upon online disk resize Ben Hutchings
2013-06-26 2:35 ` [19/26] net: Block MSG_CMSG_COMPAT in send(m)msg and recv(m)msg Ben Hutchings
2013-06-26 2:35 ` [09/26] x86/efi: Fix dummy variable buffer allocation Ben Hutchings
2013-06-26 2:35 ` [04/26] ARM: 7755/1: handle user space mapped pages in flush_kernel_dcache_page Ben Hutchings
2013-06-26 9:04 ` Luis Henriques
2013-06-26 22:35 ` Simon Baatz
2013-06-27 8:21 ` Luis Henriques
2013-06-29 3:01 ` Ben Hutchings
2013-06-26 2:35 ` [02/26] ALSA: usb-audio: work around Android accessory firmware bug Ben Hutchings
2013-06-26 2:35 ` [01/26] tilepro: work around module link error with gcc 4.7 Ben Hutchings
2013-06-26 2:35 ` Ben Hutchings [this message]
2013-06-26 2:35 ` [26/26] ncpfs: fix rmdir returns Device or resource busy Ben Hutchings
2013-06-26 2:35 ` [25/26] l2tp: Fix sendmsg() return value Ben Hutchings
2013-06-26 2:35 ` [20/26] net: force a reload of first item in hlist_nulls_for_each_entry_rcu Ben Hutchings
2013-06-26 2:35 ` [21/26] ipv6: assign rt6_info to inet6_ifaddr in init_loopback Ben Hutchings
2013-06-26 2:35 ` [22/26] net: sctp: fix NULL pointer dereference in socket destruction Ben Hutchings
2013-06-26 2:35 ` [24/26] l2tp: Fix PPP header erasure and memory leak Ben Hutchings
2013-06-26 2:35 ` [23/26] packet: packet_getname_spkt: make sure string is always 0-terminated Ben Hutchings
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=lsq.1372214158.646183620@decadent.org.uk \
--to=ben@decadent.org.uk \
--cc=akpm@linux-foundation.org \
--cc=davem@davemloft.net \
--cc=edumazet@google.com \
--cc=linux-kernel@vger.kernel.org \
--cc=ncardwell@google.com \
--cc=stable@vger.kernel.org \
--cc=therbert@google.com \
--cc=ycheng@google.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®