]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
tcp: move tp->chrono_type next tp->chrono_stat[]
authorEric Dumazet <edumazet@google.com>
Sun, 8 Mar 2026 12:23:02 +0000 (12:23 +0000)
committerJakub Kicinski <kuba@kernel.org>
Tue, 10 Mar 2026 02:33:43 +0000 (19:33 -0700)
chrono_type is currently in tcp_sock_read_txrx group, which
is supposed to hold read-mostly fields.

But chrono_type is mostly written in tx path, it should
be moved to tcp_sock_write_tx group, close to other
chrono fields (chrono_stat[], chrono_start).

Note this adds holes, but data locality is far more important.

Use a full u8 for the time being, compiler can generate
more efficient code.

Signed-off-by: Eric Dumazet <edumazet@google.com>
Reviewed-by: Neal Cardwell <ncardwell@google.com>
Link: https://patch.msgid.link/20260308122302.2895067-1-edumazet@google.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
include/linux/tcp.h

index f72eef31fa23cc584f2f0cefacdc35cae43aa52d..c44cf9ae8d16f5cc7808a6ca78c1dad03354dccf 100644 (file)
@@ -228,8 +228,7 @@ struct tcp_sock {
        u32     sacked_out;     /* SACK'd packets                       */
        u16     tcp_header_len; /* Bytes of tcp header to send          */
        u8      scaling_ratio;  /* see tcp_win_from_space() */
-       u8      chrono_type : 2,        /* current chronograph type */
-               repair      : 1,
+       u8      repair      : 1,
                tcp_usec_ts : 1, /* TSval values in usec */
                is_sack_reneg:1,    /* in recovery from loss with SACK reneg? */
                is_cwnd_limited:1,/* forward progress limited by snd_cwnd? */
@@ -264,6 +263,7 @@ struct tcp_sock {
                                 * total number of data bytes sent.
                                 */
        u32     snd_sml;        /* Last byte of the most recently transmitted small packet */
+       u8      chrono_type;    /* current chronograph type */
        u32     chrono_start;   /* Start time in jiffies of a TCP chrono */
        u32     chrono_stat[3]; /* Time in jiffies for chrono_stat stats */
        u32     write_seq;      /* Tail(+1) of data held in tcp send buffer */