|
|
Log in / Subscribe / Register

tcp: provide better locality for retransmit timer

From:  Eric Dumazet <edumazet-AT-google.com>
To:  "David S . Miller" <davem-AT-davemloft.net>, Jakub Kicinski <kuba-AT-kernel.org>, Paolo Abeni <pabeni-AT-redhat.com>
Subject:  [PATCH net-next 0/4] tcp: provide better locality for retransmit timer
Date:  Mon, 24 Nov 2025 17:50:09 +0000
Message-ID:  <20251124175013.1473655-1-edumazet@google.com>
Cc:  Simon Horman <horms-AT-kernel.org>, Neal Cardwell <ncardwell-AT-google.com>, Kuniyuki Iwashima <kuniyu-AT-google.com>, Matthieu Baerts <matttbe-AT-kernel.org>, Mat Martineau <martineau-AT-kernel.org>, Geliang Tang <geliang-AT-kernel.org>, netdev-AT-vger.kernel.org, eric.dumazet-AT-gmail.com, Eric Dumazet <edumazet-AT-google.com>
Archive-link:  Article

TCP stack uses three timers per flow, currently spread this way:

- sk->sk_timer : keepalive timer
- icsk->icsk_retransmit_timer : retransmit timer
- icsk->icsk_delack_timer : delayed ack timer

This series moves the retransmit timer to sk->sk_timer location,
to increase data locality in TX paths.

keepalive timers are not often used, this change should be neutral for them.

After the series we have following fields:

- sk->tcp_retransmit_timer : retransmit timer, in sock_write_tx group
- icsk->icsk_delack_timer : delayed ack timer
- icsk->icsk_keepalive_timer : keepalive timer

Moving icsk_delack_timer in a beter location would also be welcomed.

Eric Dumazet (4):
  tcp: rename icsk_timeout() to tcp_timeout_expires()
  net: move sk_dst_pending_confirm and sk_pacing_status to sock_read_tx
    group
  tcp: introduce icsk->icsk_keepalive_timer
  tcp: remove icsk->icsk_retransmit_timer

 .../net_cachelines/inet_connection_sock.rst   |  2 +-
 include/net/inet_connection_sock.h            | 20 ++++++++------
 include/net/sock.h                            | 13 ++++++---
 net/core/sock.c                               |  4 +--
 net/ipv4/inet_connection_sock.c               | 12 ++++-----
 net/ipv4/inet_diag.c                          |  8 +++---
 net/ipv4/tcp_ipv4.c                           |  8 +++---
 net/ipv4/tcp_timer.c                          | 23 ++++++++--------
 net/ipv6/tcp_ipv6.c                           |  8 +++---
 net/mptcp/protocol.c                          | 27 +++++++++----------
 net/mptcp/protocol.h                          |  2 +-
 .../selftests/bpf/progs/bpf_iter_tcp4.c       |  8 +++---
 .../selftests/bpf/progs/bpf_iter_tcp6.c       |  8 +++---
 13 files changed, 74 insertions(+), 69 deletions(-)

-- 
2.52.0.460.gd25c4c69ec-goog




Copyright © 2025, Eklektix, Inc.
Comments and public postings are copyrighted by their creators.
Linux is a registered trademark of Linus Torvalds