From patchwork Thu Dec 7 19:33:32 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Yuchung Cheng X-Patchwork-Id: 845787 X-Patchwork-Delegate: davem@davemloft.net Return-Path: X-Original-To: patchwork-incoming@ozlabs.org Delivered-To: patchwork-incoming@ozlabs.org Authentication-Results: ozlabs.org; spf=none (mailfrom) smtp.mailfrom=vger.kernel.org (client-ip=209.132.180.67; helo=vger.kernel.org; envelope-from=netdev-owner@vger.kernel.org; receiver=) Authentication-Results: ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=google.com header.i=@google.com header.b="PZylRvdT"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 3yt5JY2KCJz9s9Y for ; Fri, 8 Dec 2017 06:34:05 +1100 (AEDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752449AbdLGTeC (ORCPT ); Thu, 7 Dec 2017 14:34:02 -0500 Received: from mail-it0-f67.google.com ([209.85.214.67]:39813 "EHLO mail-it0-f67.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751288AbdLGTdv (ORCPT ); Thu, 7 Dec 2017 14:33:51 -0500 Received: by mail-it0-f67.google.com with SMTP id 68so16977972ite.4 for ; Thu, 07 Dec 2017 11:33:51 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=uyA9dXwALTqYOUlsG6+vTp8MVdj9zwllr9uQ0SL8IBA=; b=PZylRvdTOl7efCbcWJhfqOrRyIdJSckjjtudx8mrTblibf80OOJq1AHDzNUucLxEEC l4sCdoZylYRV13FSDaAv6ZNF0araqGKJuiIb0Xpw1jgXBEiqQQvQ/jufI9a2/2mfGp7+ 2vUup/OV5Y3AwnjsmoW0bK9J4jeVnHQSIC0EVvnp5q0VWF1+QQj4R92bU8iyuAlD3DlE 2CqmiN0NRRiXyV74MSvKJq93odLdPAgsUvQETpX3k9Ia2SEuk6BtcYyg1Hp2mIkQtnrY PEaiApa+9FQn6rfoDwynbH2CfOxKYwMa+hHdWaooWvdegErhMTPr3w89sfxbua+Xdlor RVAA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=uyA9dXwALTqYOUlsG6+vTp8MVdj9zwllr9uQ0SL8IBA=; b=pqSSyRU3P5vbNzPdDukpKr4kdIuwn0pkwoN3WMAyIECOgtI0eQE5tbcAVRLVbCIayM nbe8cn6jX8AcuGhT/N8oMJ7Xv9Rrg16yMLPh7k7hHzdopjRTGUYmy+Jnb+3XEpJbqvnV O3DkibiSQ12VzcdtL3ouco+xSE8MpnaEdgDicQvPCfKPyAhI3hqtfygn8uujbDi+rMwv KSe8RFPQXF1tHZNGP7oOrozyq53p0hW6enljnGZmlHJ+8EXYplbUcPGVdHP+WZHF+M0Z iSL9/piUXBcxmID652xAWy24DU5aUpbOy/Z8r16XB2tOGKcbZSa6of6L1tPiTfKfPnRV gSeg== X-Gm-Message-State: AKGB3mI8GOwOJcisXmJLMhzG48wbnSgbpi3Xl0Vilt6um5YRAl3b9xyR RnrjUe3TgC0lzk9YSLQ8sWbahg== X-Google-Smtp-Source: AGs4zMY38CWyEXHv60RLxYqJxmvVATZXBu70sfwR/BoXQT8ZbZEKfzpYWEML6YXYrW8e/cPTaVGdMw== X-Received: by 10.36.103.213 with SMTP id u204mr2669512itc.91.1512675230671; Thu, 07 Dec 2017 11:33:50 -0800 (PST) Received: from ycheng2.svl.corp.google.com ([100.116.160.41]) by smtp.gmail.com with ESMTPSA id h128sm3078168ita.42.2017.12.07.11.33.48 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Thu, 07 Dec 2017 11:33:49 -0800 (PST) From: Yuchung Cheng To: davem@davemloft.net Cc: netdev@vger.kernel.org, edumazet@google.com, ncardwell@google.com, priyarjha@google.com, Yuchung Cheng Subject: [PATH net 3/4] tcp: fix off-by-one bug in RACK Date: Thu, 7 Dec 2017 11:33:32 -0800 Message-Id: <20171207193333.59039-4-ycheng@google.com> X-Mailer: git-send-email 2.15.1.424.g9478a66081-goog In-Reply-To: <20171207193333.59039-1-ycheng@google.com> References: <20171207193333.59039-1-ycheng@google.com> Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org RACK should mark a packet lost when remaining wait time is zero. Signed-off-by: Yuchung Cheng Reviewed-by: Neal Cardwell Reviewed-by: Priyaranjan Jha Reviewed-by: Eric Dumazet --- net/ipv4/tcp_recovery.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/net/ipv4/tcp_recovery.c b/net/ipv4/tcp_recovery.c index 3143664902e9..0c182303e62e 100644 --- a/net/ipv4/tcp_recovery.c +++ b/net/ipv4/tcp_recovery.c @@ -80,12 +80,12 @@ static void tcp_rack_detect_loss(struct sock *sk, u32 *reo_timeout) */ remaining = tp->rack.rtt_us + reo_wnd - tcp_stamp_us_delta(tp->tcp_mstamp, skb->skb_mstamp); - if (remaining < 0) { + if (remaining <= 0) { tcp_rack_mark_skb_lost(sk, skb); list_del_init(&skb->tcp_tsorted_anchor); } else { - /* Record maximum wait time (+1 to avoid 0) */ - *reo_timeout = max_t(u32, *reo_timeout, 1 + remaining); + /* Record maximum wait time */ + *reo_timeout = max_t(u32, *reo_timeout, remaining); } } }