summaryrefslogtreecommitdiff
path: root/net/ipv4/tcp_timer.c
diff options
context:
space:
mode:
authorDavid S. Miller <davem@davemloft.net>2020-04-30 13:24:01 -0700
committerDavid S. Miller <davem@davemloft.net>2020-04-30 13:24:01 -0700
commit1b2e788490deef5e570ebe604b5cc50f82877c11 (patch)
tree2160cfb6274072fcc4350afbbd5aa7ebf1580a4c /net/ipv4/tcp_timer.c
parent3857c776240f0edef8639d7833626ab2ee7c7723 (diff)
parenta70437cc09a11771870e9f6bfc0ba1237161daa8 (diff)
Merge branch 'tcp-sack-compression-changes'
Eric Dumazet says: ==================== tcp: sack compression changes Patch series refines SACK compression. We had issues with missing SACK when TCP option space is tight. Uses hrtimer slack to improve performance. ==================== Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/ipv4/tcp_timer.c')
-rw-r--r--net/ipv4/tcp_timer.c8
1 files changed, 7 insertions, 1 deletions
diff --git a/net/ipv4/tcp_timer.c b/net/ipv4/tcp_timer.c
index c3f26dcd6704..ada046f425d2 100644
--- a/net/ipv4/tcp_timer.c
+++ b/net/ipv4/tcp_timer.c
@@ -753,8 +753,14 @@ static enum hrtimer_restart tcp_compressed_ack_kick(struct hrtimer *timer)
bh_lock_sock(sk);
if (!sock_owned_by_user(sk)) {
- if (tp->compressed_ack > TCP_FASTRETRANS_THRESH)
+ if (tp->compressed_ack) {
+ /* Since we have to send one ack finally,
+ * substract one from tp->compressed_ack to keep
+ * LINUX_MIB_TCPACKCOMPRESSED accurate.
+ */
+ tp->compressed_ack--;
tcp_send_ack(sk);
+ }
} else {
if (!test_and_set_bit(TCP_DELACK_TIMER_DEFERRED,
&sk->sk_tsq_flags))