From patchwork Thu Oct 24 15:55:25 2013 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Yuchung Cheng X-Patchwork-Id: 285959 X-Patchwork-Delegate: davem@davemloft.net Return-Path: X-Original-To: patchwork-incoming@ozlabs.org Delivered-To: patchwork-incoming@ozlabs.org Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id A7E982C00C8 for ; Fri, 25 Oct 2013 02:55:45 +1100 (EST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1756026Ab3JXPzl (ORCPT ); Thu, 24 Oct 2013 11:55:41 -0400 Received: from mail-vc0-f202.google.com ([209.85.220.202]:39035 "EHLO mail-vc0-f202.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1755432Ab3JXPzj (ORCPT ); Thu, 24 Oct 2013 11:55:39 -0400 Received: by mail-vc0-f202.google.com with SMTP id ld13so178081vcb.5 for ; Thu, 24 Oct 2013 08:55:39 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20120113; h=from:to:cc:subject:date:message-id; bh=soOvgGwPbFA/5dHJwNmZS/5PAHiptqkRGFzVLRHR7/I=; b=oIl4a9P6CnZp8JGG+WFlOK14ibZQHWPQWO/VACk5KyRaQin+sOXnZkYwFTBtOvL3km CsU3xq79xAw0GXpVRx3DR7yCo8cNTKnjDS+NfW+YMrJjt19LHCbDi5RqrgQx0NYDv89T gJ+J5EeNlGcG+2vKdRX0g11JZpo3THQtYuO6RNv4ZtA65MulfL/ihtKl2NiT8jw0YfPV f4tqT5pw+wyybqUvSxQoVZoRrucV4eLZsQaZDZcdkUm/dZW/G0tAB/lJXbYK07BVw1Ek fMeIBZRZnCccYDanq4C7NmCYZdmG6yTvZ6UlDv6uzLaTZF1YZBpB8ifCZsIdrYnqUQ+V RjEg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:from:to:cc:subject:date:message-id; bh=soOvgGwPbFA/5dHJwNmZS/5PAHiptqkRGFzVLRHR7/I=; b=GJ4qQUP/EuVKCW7la7WGBvtcH79I6ZMrzHYEbUB28b5tvCaL9egmRoUJgGk/+bhVAE dz5liEyEe0OESgcmRZ2yYT0YJ/MsycH9czTcEE1Lccm+BOuSbwAJg5mlH+XBOfpQePBc bQyjYSuRi/+XtPUaL5fpRqKLnz1UsvoI+8ZKL0qLL3P8ioTc/QGbVr4eru9WGGmxIGdO tPQZ6I8DR12fBldTV09qiaiMp4wJZniBK/z4CKp7PUW4Ja3R+oYuVcyxIJUrPU/97CHc 10dlmmJS7lD8LP+TcKk/N6bg/zcULZ+fY5T2WyxvaxfF0OBotCWwdgyZZswLqYj7ox78 ++9Q== X-Gm-Message-State: ALoCoQkcPpy+KqBLyr4ENSSIl4YS2WsVvorL4jfYlESs5I4a8MDOHmrEZWMtcdYnjHS3LrlunhM4cPPedZ0hKtNXR6xIG8gnBNte4gHQixsB7cB04/8Tez52yz3ica7g+gVPik/dBIuejNZ8kJfQIr4JUo2pE2udqTFxH3RCc0vGBxdZXDab7MU4RD3nOvq5Bj1sXWa1189FIzARqJGn3aRYZC8jWnMMrg== X-Received: by 10.58.133.197 with SMTP id pe5mr1276116veb.6.1382630138865; Thu, 24 Oct 2013 08:55:38 -0700 (PDT) Received: from corp2gmr1-1.hot.corp.google.com (corp2gmr1-1.hot.corp.google.com [172.24.189.92]) by gmr-mx.google.com with ESMTPS id x74si110118yhh.0.2013.10.24.08.55.38 for (version=TLSv1.1 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Thu, 24 Oct 2013 08:55:38 -0700 (PDT) Received: from blast2.mtv.corp.google.com (blast2.mtv.corp.google.com [172.17.132.164]) by corp2gmr1-1.hot.corp.google.com (Postfix) with ESMTP id AE7AC31C1EA; Thu, 24 Oct 2013 08:55:38 -0700 (PDT) Received: by blast2.mtv.corp.google.com (Postfix, from userid 5463) id 51EA522072C; Thu, 24 Oct 2013 08:55:38 -0700 (PDT) From: Yuchung Cheng To: davem@davemloft.net, ncardwell@google.com, edumazet@google.com Cc: netdev@vger.kernel.org, Yuchung Cheng Subject: [PATCH net] tcp: only take RTT from timestamps if new data is acked Date: Thu, 24 Oct 2013 08:55:25 -0700 Message-Id: <1382630125-21416-1-git-send-email-ycheng@google.com> X-Mailer: git-send-email 1.8.4.1 Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org Patch ed08495c3 "tcp: use RTT from SACK for RTO" has a bug that it does not check if the ACK acknowledge new data before taking the RTT sample from TCP timestamps. This patch adds the check back as required by the RFC. Signed-off-by: Yuchung Cheng Acked-by: Neal Cardwell Acked-by: Eric Dumazet --- net/ipv4/tcp_input.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/net/ipv4/tcp_input.c b/net/ipv4/tcp_input.c index 305cd05..6ffe41a 100644 --- a/net/ipv4/tcp_input.c +++ b/net/ipv4/tcp_input.c @@ -2856,7 +2856,8 @@ static inline bool tcp_ack_update_rtt(struct sock *sk, const int flag, * left edge of the send window. * See draft-ietf-tcplw-high-performance-00, section 3.3. */ - if (seq_rtt < 0 && tp->rx_opt.saw_tstamp && tp->rx_opt.rcv_tsecr) + if (seq_rtt < 0 && tp->rx_opt.saw_tstamp && tp->rx_opt.rcv_tsecr && + flag & FLAG_ACKED) seq_rtt = tcp_time_stamp - tp->rx_opt.rcv_tsecr; if (seq_rtt < 0)