From patchwork Sat Nov 4 00:46:55 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Priyaranjan Jha X-Patchwork-Id: 834147 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="DfMEPAkx"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 3yTKsc41y7z9sRW for ; Sat, 4 Nov 2017 11:47:16 +1100 (AEDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S932152AbdKDArN (ORCPT ); Fri, 3 Nov 2017 20:47:13 -0400 Received: from mail-io0-f193.google.com ([209.85.223.193]:50390 "EHLO mail-io0-f193.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751805AbdKDArM (ORCPT ); Fri, 3 Nov 2017 20:47:12 -0400 Received: by mail-io0-f193.google.com with SMTP id 97so9842293iok.7 for ; Fri, 03 Nov 2017 17:47:12 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20161025; h=from:to:cc:subject:date:message-id; bh=4zDM+IO9h62qnLSzIHguOucGq8EFO1/1ikuaiU6WUx8=; b=DfMEPAkxq8vOa1J7zdiCMXHnbu6ZG+W6UzbvQvtbivcS7heVg6kf7MPyxY25BtWMUj n44qS+fYOgo5N0xx4jJsJzncVjKYrkZguHvD4NXgjFy/jnV6hoKvmG8gW/XKu//zrOID SJCH9cG3SZRRY+Beu3zoTna+aPiQVA32BnSBI27ZrV0duNxXFQGY2okUsCF/Phf8EDjW gYLCEcyPwRYtWLG/owsNYDzJXjor3Fr8m+pOrYp6sRwEg5pmN0kD7Fadxrr+Eo/cdR0B TuiABWWihmxrjKD4YyFVCy2njFBJVxgpqUl7mdQ2bdAD3h4RbWz6ZR97lYq0aRBTu4bR IxAA== 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; bh=4zDM+IO9h62qnLSzIHguOucGq8EFO1/1ikuaiU6WUx8=; b=uSTCJtigf8WtLbwY322Ht1kQJ9L5Dz5ObvGvDPZXEWpXWkn39OuHAioIhj7ZrFJc8p EMSCYp/Ff0eWFMqNaoh16jsIt2TGdpWgzyP7FdQGOuZfVDkiRjx3FXh2AwiOKPkrp/OO 9t/p2/+yywzj8MrY0XL6V+D7HkDc8rGpl/up1xYlzIAJOjJMabrDtNKmvFFptUkhrq++ JVgK+3xjW1mzz0SAvvyQcwNKvbIuT89BVj2iBXwx0Kw6do3BAP/k8ApjVuFJeMyIryDt x5FViWP+SyZBxJmaewKXiJmtTj15beQWS7CY4LoRtvvFYw2ZQbHiXyxdTYx3yfS+Lymb PTDg== X-Gm-Message-State: AJaThX76Fa+qfOR34f2L2Iio6hX90vtrG/+gS7BtgsqqSNyIXGU5HNrz dD2SmUpyjAjb4yl3b/gylxma1w== X-Google-Smtp-Source: ABhQp+TENxoG3dEbJPi6aK9mH+VK8/C+rvODB4Dwj+WFwMArNpQnDG4Vu1JuReyCTMX7glXlb6n2wA== X-Received: by 10.36.219.87 with SMTP id c84mr968948itg.73.1509756431604; Fri, 03 Nov 2017 17:47:11 -0700 (PDT) Received: from priyarjha.svl.corp.google.com ([100.116.92.77]) by smtp.gmail.com with ESMTPSA id o207sm1738428itc.27.2017.11.03.17.47.10 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Fri, 03 Nov 2017 17:47:11 -0700 (PDT) From: Priyaranjan Jha To: David Miller Cc: netdev@vger.kernel.org, Priyaranjan Jha , Yuchung Cheng , Neal Cardwell Subject: [PATCH net] tcp: fix DSACK-based undo on non-duplicate ACK Date: Fri, 3 Nov 2017 17:46:55 -0700 Message-Id: <20171104004655.43335-1-priyarjha@google.com> X-Mailer: git-send-email 2.15.0.403.gc27cc4dac6-goog Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org Fixes DSACK-based undo when sender is in Open State and an ACK advances snd_una. Example scenario: - Sender goes into recovery and makes some spurious rtx. - It comes out of recovery and enters into open state. - It sends some more packets, let's say 4. - The receiver sends an ACK for the first two, but this ACK is lost. - The sender receives ack for first two, and DSACK for previous spurious rtx. Signed-off-by: Priyaranjan Jha Signed-off-by: Yuchung Cheng Signed-off-by: Neal Cardwell Acked-by: Yousuk Seung --- net/ipv4/tcp_input.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/net/ipv4/tcp_input.c b/net/ipv4/tcp_input.c index 7eec3383702b..bf69bfbe593b 100644 --- a/net/ipv4/tcp_input.c +++ b/net/ipv4/tcp_input.c @@ -114,7 +114,7 @@ int sysctl_tcp_invalid_ratelimit __read_mostly = HZ/2; #define FLAG_ACKED (FLAG_DATA_ACKED|FLAG_SYN_ACKED) #define FLAG_NOT_DUP (FLAG_DATA|FLAG_WIN_UPDATE|FLAG_ACKED) -#define FLAG_CA_ALERT (FLAG_DATA_SACKED|FLAG_ECE) +#define FLAG_CA_ALERT (FLAG_DATA_SACKED|FLAG_ECE|FLAG_DSACKING_ACK) #define FLAG_FORWARD_PROGRESS (FLAG_ACKED|FLAG_DATA_SACKED) #define TCP_REMNANT (TCP_FLAG_FIN|TCP_FLAG_URG|TCP_FLAG_SYN|TCP_FLAG_PSH)