Patch "tcp: Honor the eor bit in tcp_mtu_probe" has been added to the 4.9-stable tree
Subsystems (3)
This is a note to let you know that I've just added the patch titled
tcp: Honor the eor bit in tcp_mtu_probe
to the 4.9-stable tree which can be found at:
http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary
The filename of the patch is:
tcp-honor-the-eor-bit-in-tcp_mtu_probe.patch
and it can be found in the queue-4.9 subdirectory.
If you, or anyone else, feels it should not be added to the stable tree, please let <[email protected]> know about it.
Quoted 1 line
From foo@baz Thu Mar 8 06:55:02 PST 2018
From: Ilya Lesokhin <[email protected]>
Date: Mon, 12 Feb 2018 12:57:04 +0200
Subject: tcp: Honor the eor bit in tcp_mtu_probe
From: Ilya Lesokhin <[email protected]>
[ Upstream commit 808cf9e38cd7923036a99f459ccc8cf2955e47af ]
Avoid SKB coalescing if eor bit is set in one of the relevant SKBs.
--- net/ipv4/tcp_output.c | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+)
net/ipv4/tcp_output.c +25 -0
@@ -1907,6 +1907,24 @@ static inline void tcp_mtu_check_reprobe } } +static bool tcp_can_coalesce_send_queue_head (struct sock *sk,int len) +{ +struct sk_buff *skb, *next; + + skb =tcp_send_head (sk); + tcp_for_write_queue_from_safe(skb, next, sk) { +if (len <= skb->len) +break ; + +if (unlikely (TCP_SKB_CB (skb)->eor)) +return false; + + len -= skb->len; + } + +return true; +} +/* Create a new MTU probe if we are ready. * MTU probe is regularly attempting to increase the path MTU by * deliberately sending larger packets. This discovers routing
@@ -1979,6 +1997,9 @@ static int tcp_mtu_probe(struct sock *skreturn 0 ; } +if (!tcp_can_coalesce_send_queue_head (sk, probe_size)) +return -1 ; +/* We're allowed to probe. Build it now. */ nskb =sk_stream_alloc_skb (sk, probe_size,GFP_ATOMIC , false);if (!nskb)
@@ -2014,6 +2035,10 @@ static int tcp_mtu_probe(struct sock *sk/* We've eaten all the data from this skb. * Throw it away. */ TCP_SKB_CB (nskb)->tcp_flags |=TCP_SKB_CB (skb)->tcp_flags; +/* If this is the last SKB we copy and eor is set +* we need to propagate it to the new skb. +*/ +TCP_SKB_CB (nskb)->eor =TCP_SKB_CB (skb)->eor;tcp_unlink_write_queue (skb, sk);sk_wmem_free_skb (sk, skb); }else {
Patches currently in stable-queue which might be from [email protected] are
queue-4.9/tcp-honor-the-eor-bit-in-tcp_mtu_probe.patch