From mboxrd@z Thu Jan 1 00:00:00 1970 From: Kenneth Klette Jonassen Subject: [PATCH net-next] tcp: use SACK RTTs for CC Date: Thu, 29 Jan 2015 20:08:03 +0100 Message-ID: <1422558483-6168-1-git-send-email-kennetkl@ifi.uio.no> Cc: Kenneth Klette Jonassen To: netdev@vger.kernel.org Return-path: Received: from mail-out4.uio.no ([129.240.10.15]:44108 "EHLO mail-out4.uio.no" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751591AbbA2Tl1 (ORCPT ); Thu, 29 Jan 2015 14:41:27 -0500 Received: from mail-mx6.uio.no ([129.240.10.40]) by mail-out4.uio.no with esmtp (Exim 4.80.1) (envelope-from ) id 1YGuV2-0002wc-B0 for netdev@vger.kernel.org; Thu, 29 Jan 2015 20:11:32 +0100 Sender: netdev-owner@vger.kernel.org List-ID: Current behavior only passes RTTs from sequentially acked data to CC. If sender gets a combined ACK for segment 1 and SACK for segment 3, then the computed RTT for CC is the time between sending segment 1 and receiving SACK for segment 3. Pass the minimum computed RTT from any acked data to CC, i.e. time between sending segment 3 and receiving SACK for segment 3. Signed-off-by: Kenneth Klette Jonassen --- net/ipv4/tcp_input.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/net/ipv4/tcp_input.c b/net/ipv4/tcp_input.c index 71fb37c..ed11931 100644 --- a/net/ipv4/tcp_input.c +++ b/net/ipv4/tcp_input.c @@ -3183,8 +3183,10 @@ static int tcp_clean_rtx_queue(struct sock *sk, int prior_fackets, tp->fackets_out -= min(pkts_acked, tp->fackets_out); - if (ca_ops->pkts_acked) - ca_ops->pkts_acked(sk, pkts_acked, ca_seq_rtt_us); + if (ca_ops->pkts_acked) { + long rtt_us = min_t(ulong, ca_seq_rtt_us, sack_rtt_us); + ca_ops->pkts_acked(sk, pkts_acked, rtt_us); + } } else if (skb && rtt_update && sack_rtt_us >= 0 && sack_rtt_us > skb_mstamp_us_delta(&now, &skb->skb_mstamp)) { -- 1.9.1