From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-pf0-f193.google.com ([209.85.192.193]:34058 "EHLO mail-pf0-f193.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S933883AbeCGPum (ORCPT ); Wed, 7 Mar 2018 10:50:42 -0500 Received: by mail-pf0-f193.google.com with SMTP id j20so1087230pfi.1 for ; Wed, 07 Mar 2018 07:50:42 -0800 (PST) Message-ID: <1520437839.109662.40.camel@gmail.com> Subject: Re: [PATCH net 3/5] tcp: move false FR condition into tcp_false_fast_retrans_possible() From: Eric Dumazet To: Ilpo =?ISO-8859-1?Q?J=E4rvinen?= , netdev@vger.kernel.org Date: Wed, 07 Mar 2018 07:50:39 -0800 In-Reply-To: <1520427569-14365-4-git-send-email-ilpo.jarvinen@helsinki.fi> References: <1520427569-14365-1-git-send-email-ilpo.jarvinen@helsinki.fi> <1520427569-14365-4-git-send-email-ilpo.jarvinen@helsinki.fi> Content-Type: text/plain; charset="UTF-8" Mime-Version: 1.0 Content-Transfer-Encoding: 8bit Sender: netdev-owner@vger.kernel.org List-ID: On Wed, 2018-03-07 at 14:59 +0200, Ilpo Järvinen wrote: > No functional changes. > > Signed-off-by: Ilpo Järvinen > --- >  net/ipv4/tcp_input.c | 21 +++++++++++++++++---- >  1 file changed, 17 insertions(+), 4 deletions(-) > > diff --git a/net/ipv4/tcp_input.c b/net/ipv4/tcp_input.c > index 1a33752..e20f9ad 100644 > --- a/net/ipv4/tcp_input.c > +++ b/net/ipv4/tcp_input.c > @@ -2211,6 +2211,19 @@ static void tcp_update_scoreboard(struct sock > *sk, int fast_rexmit) >   } >  } >   > +/* False fast retransmits may occur when SACK is not in use under > certain > + * conditions (RFC6582). The sender MUST hold old state until > something > + * *above* high_seq is ACKed to prevent triggering such false fast > + * retransmits. SACK TCP is safe. > + */ > +static bool tcp_false_fast_retrans_possible(const struct sock *sk, > +     const u32 snd_una) > +{ > + const struct tcp_sock *tp = tcp_sk(sk); > + > + return ((snd_una == tp->high_seq) && tcp_is_reno(tp)); return (EXPR); should use instead : return EXPR; > +} > + >  static bool tcp_tsopt_ecr_before(const struct tcp_sock *tp, u32 > when) >  { >   return tp->rx_opt.saw_tstamp && tp->rx_opt.rcv_tsecr && > @@ -2350,10 +2363,10 @@ static bool tcp_try_undo_recovery(struct sock > *sk) >   } else if (tp->rack.reo_wnd_persist) { >   tp->rack.reo_wnd_persist--; >   } > - if (tp->snd_una == tp->high_seq && tcp_is_reno(tp)) { > - /* Hold old state until something *above* high_seq > -  * is ACKed. For Reno it is MUST to prevent false > -  * fast retransmits (RFC2582). SACK TCP is safe. */ > + if (tcp_false_fast_retrans_possible(sk, tp->snd_una)) { > + /* Hold old state until something *above* high_seq > is ACKed > +  * if false fast retransmit is possible. > +  */ >   if (!tcp_any_retrans_done(sk)) >   tp->retrans_stamp = 0; >   return true;