[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <CACSApvZ5GTrWLkR-i1YcAw608=xSOST_6uVsooafFo6P5Z6z=g@mail.gmail.com>
Date: Tue, 3 Dec 2019 11:08:21 -0500
From: Soheil Hassas Yeganeh <soheil@...gle.com>
To: Eric Dumazet <edumazet@...gle.com>
Cc: "David S . Miller" <davem@...emloft.net>,
netdev <netdev@...r.kernel.org>,
Eric Dumazet <eric.dumazet@...il.com>,
Neal Cardwell <ncardwell@...gle.com>,
Yuchung Cheng <ycheng@...gle.com>,
Willem de Bruijn <willemb@...gle.com>,
Greg Kroah-Hartman <gregkh@...uxfoundation.org>
Subject: Re: [PATCH net] tcp: refactor tcp_retransmit_timer()
On Tue, Dec 3, 2019 at 11:05 AM Eric Dumazet <edumazet@...gle.com> wrote:
>
> It appears linux-4.14 stable needs a backport of commit
> 88f8598d0a30 ("tcp: exit if nothing to retransmit on RTO timeout")
>
> Since tcp_rtx_queue_empty() is not in pre 4.15 kernels,
> let's refactor tcp_retransmit_timer() to only use tcp_rtx_queue_head()
>
> I will provide to stable teams the squashed patches.
>
> Signed-off-by: Eric Dumazet <edumazet@...gle.com>
> Cc: Willem de Bruijn <willemb@...gle.com>
> Cc: Greg Kroah-Hartman <gregkh@...uxfoundation.org>
Acked-by: Soheil Hassas Yeganeh <soheil@...gle.com>
Thanks, Eric!
> ---
> net/ipv4/tcp_timer.c | 10 ++++++++--
> 1 file changed, 8 insertions(+), 2 deletions(-)
>
> diff --git a/net/ipv4/tcp_timer.c b/net/ipv4/tcp_timer.c
> index dd5a6317a8018a45ad609f832ced6df2937ad453..1097b438befe14ae3f375f3dbcc1f2d375a93879 100644
> --- a/net/ipv4/tcp_timer.c
> +++ b/net/ipv4/tcp_timer.c
> @@ -434,6 +434,7 @@ void tcp_retransmit_timer(struct sock *sk)
> struct net *net = sock_net(sk);
> struct inet_connection_sock *icsk = inet_csk(sk);
> struct request_sock *req;
> + struct sk_buff *skb;
>
> req = rcu_dereference_protected(tp->fastopen_rsk,
> lockdep_sock_is_held(sk));
> @@ -446,7 +447,12 @@ void tcp_retransmit_timer(struct sock *sk)
> */
> return;
> }
> - if (!tp->packets_out || WARN_ON_ONCE(tcp_rtx_queue_empty(sk)))
> +
> + if (!tp->packets_out)
> + return;
> +
> + skb = tcp_rtx_queue_head(sk);
> + if (WARN_ON_ONCE(!skb))
> return;
>
> tp->tlp_high_seq = 0;
> @@ -480,7 +486,7 @@ void tcp_retransmit_timer(struct sock *sk)
> goto out;
> }
> tcp_enter_loss(sk);
> - tcp_retransmit_skb(sk, tcp_rtx_queue_head(sk), 1);
> + tcp_retransmit_skb(sk, skb, 1);
> __sk_dst_reset(sk);
> goto out_reset_timer;
> }
> --
> 2.24.0.393.g34dc348eaf-goog
>
Powered by blists - more mailing lists