From mboxrd@z Thu Jan 1 00:00:00 1970 From: David Miller Subject: Re: [PATCH net] tcp: invalidate rate samples during SACK reneging Date: Fri, 08 Dec 2017 10:07:31 -0500 (EST) Message-ID: <20171208.100731.1229600099191622499.davem@davemloft.net> References: <20171207214134.90015-1-ysseung@google.com> Mime-Version: 1.0 Content-Type: Text/Plain; charset=us-ascii Content-Transfer-Encoding: 7bit Cc: netdev@vger.kernel.org, ncardwell@google.com, ycheng@google.com To: ysseung@google.com Return-path: Received: from shards.monkeyblade.net ([184.105.139.130]:54296 "EHLO shards.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753542AbdLHPHc (ORCPT ); Fri, 8 Dec 2017 10:07:32 -0500 In-Reply-To: <20171207214134.90015-1-ysseung@google.com> Sender: netdev-owner@vger.kernel.org List-ID: From: Yousuk Seung Date: Thu, 7 Dec 2017 13:41:34 -0800 > Mark tcp_sock during a SACK reneging event and invalidate rate samples > while marked. Such rate samples may overestimate bw by including packets > that were SACKed before reneging. > > < ack 6001 win 10000 sack 7001:38001 > < ack 7001 win 0 sack 8001:38001 // Reneg detected >> seq 7001:8001 // RTO, SACK cleared. > < ack 38001 win 10000 > > In above example the rate sample taken after the last ack will count > 7001-38001 as delivered while the actual delivery rate likely could > be much lower i.e. 7001-8001. > > This patch adds a new field tcp_sock.sack_reneg and marks it when we > declare SACK reneging and entering TCP_CA_Loss, and unmarks it after > the last rate sample was taken before moving back to TCP_CA_Open. This > patch also invalidates rate samples taken while tcp_sock.is_sack_reneg > is set. > > Fixes: b9f64820fb22 ("tcp: track data delivery rate for a TCP connection") > Signed-off-by: Yousuk Seung > Signed-off-by: Neal Cardwell > Signed-off-by: Yuchung Cheng > Acked-by: Soheil Hassas Yeganeh > Acked-by: Eric Dumazet > Acked-by: Priyaranjan Jha Applied and queued up for -stable.