Skip to content

Commit

Permalink
tcp: use SACK RTTs for CC
Browse files Browse the repository at this point in the history
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 <kennetkl@ifi.uio.no>
Signed-off-by: David S. Miller <davem@davemloft.net>
  • Loading branch information
Kenneth Klette Jonassen authored and David S. Miller committed Feb 1, 2015
1 parent a994a09 commit 932eb76
Showing 1 changed file with 4 additions and 2 deletions.
6 changes: 4 additions & 2 deletions net/ipv4/tcp_input.c
Original file line number Diff line number Diff line change
Expand Up @@ -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)) {
Expand Down

0 comments on commit 932eb76

Please sign in to comment.