xref: /linux/Documentation/networking/net_cachelines/tcp_sock.rst (revision fcc79e1714e8c2b8e216dc3149812edd37884eef)
1.. SPDX-License-Identifier: GPL-2.0
2.. Copyright (C) 2023 Google LLC
3
4=========================================
5tcp_sock struct fast path usage breakdown
6=========================================
7
8============================= ======================= =================== =================== ==================================================================================================================================================================================================================
9Type                          Name                    fastpath_tx_access  fastpath_rx_access  Comments
10============================= ======================= =================== =================== ==================================================================================================================================================================================================================
11struct inet_connection_sock   inet_conn
12u16                           tcp_header_len          read_mostly         read_mostly         tcp_bound_to_half_wnd,tcp_current_mss(tx);tcp_rcv_established(rx)
13u16                           gso_segs                read_mostly                             tcp_xmit_size_goal
14__be32                        pred_flags              read_write          read_mostly         tcp_select_window(tx);tcp_rcv_established(rx)
15u64                           bytes_received                              read_write          tcp_rcv_nxt_update(rx)
16u32                           segs_in                                     read_write          tcp_v6_rcv(rx)
17u32                           data_segs_in                                read_write          tcp_v6_rcv(rx)
18u32                           rcv_nxt                 read_mostly         read_write          tcp_cleanup_rbuf,tcp_send_ack,tcp_inq_hint,tcp_transmit_skb,tcp_receive_window(tx);tcp_v6_do_rcv,tcp_rcv_established,tcp_data_queue,tcp_receive_window,tcp_rcv_nxt_update(write)(rx)
19u32                           copied_seq                                  read_mostly         tcp_cleanup_rbuf,tcp_rcv_space_adjust,tcp_inq_hint
20u32                           rcv_wup                                     read_write          __tcp_cleanup_rbuf,tcp_receive_window,tcp_receive_established
21u32                           snd_nxt                 read_write          read_mostly         tcp_rate_check_app_limited,__tcp_transmit_skb,tcp_event_new_data_sent(write)(tx);tcp_rcv_established,tcp_ack,tcp_clean_rtx_queue(rx)
22u32                           segs_out                read_write                              __tcp_transmit_skb
23u32                           data_segs_out           read_write                              __tcp_transmit_skb,tcp_update_skb_after_send
24u64                           bytes_sent              read_write                              __tcp_transmit_skb
25u64                           bytes_acked                                 read_write          tcp_snd_una_update/tcp_ack
26u32                           dsack_dups
27u32                           snd_una                 read_mostly         read_write          tcp_wnd_end,tcp_urg_mode,tcp_minshall_check,tcp_cwnd_validate(tx);tcp_ack,tcp_may_update_window,tcp_clean_rtx_queue(write),tcp_ack_tstamp(rx)
28u32                           snd_sml                 read_write                              tcp_minshall_check,tcp_minshall_update
29u32                           rcv_tstamp                                  read_mostly         tcp_ack
30u32                           lsndtime                read_write                              tcp_slow_start_after_idle_check,tcp_event_data_sent
31u32                           last_oow_ack_time
32u32                           compressed_ack_rcv_nxt
33u32                           tsoffset                read_mostly         read_mostly         tcp_established_options(tx);tcp_fast_parse_options(rx)
34struct list_head              tsq_node
35struct list_head              tsorted_sent_queue      read_write                              tcp_update_skb_after_send
36u32                           snd_wl1                                     read_mostly         tcp_may_update_window
37u32                           snd_wnd                 read_mostly         read_mostly         tcp_wnd_end,tcp_tso_should_defer(tx);tcp_fast_path_on(rx)
38u32                           max_window              read_mostly                             tcp_bound_to_half_wnd,forced_push
39u32                           mss_cache               read_mostly         read_mostly         tcp_rate_check_app_limited,tcp_current_mss,tcp_sync_mss,tcp_sndbuf_expand,tcp_tso_should_defer(tx);tcp_update_pacing_rate,tcp_clean_rtx_queue(rx)
40u32                           window_clamp            read_mostly         read_write          tcp_rcv_space_adjust,__tcp_select_window
41u32                           rcv_ssthresh            read_mostly                             __tcp_select_window
42u8                            scaling_ratio           read_mostly         read_mostly         tcp_win_from_space
43struct                        tcp_rack
44u16                           advmss                                      read_mostly         tcp_rcv_space_adjust
45u8                            compressed_ack
46u8:2                          dup_ack_counter
47u8:1                          tlp_retrans
48u8:1                          tcp_usec_ts             read_mostly         read_mostly
49u32                           chrono_start            read_write                              tcp_chrono_start/stop(tcp_write_xmit,tcp_cwnd_validate,tcp_send_syn_data)
50u32[3]                        chrono_stat             read_write                              tcp_chrono_start/stop(tcp_write_xmit,tcp_cwnd_validate,tcp_send_syn_data)
51u8:2                          chrono_type             read_write                              tcp_chrono_start/stop(tcp_write_xmit,tcp_cwnd_validate,tcp_send_syn_data)
52u8:1                          rate_app_limited                            read_write          tcp_rate_gen
53u8:1                          fastopen_connect
54u8:1                          fastopen_no_cookie
55u8:1                          is_sack_reneg                               read_mostly         tcp_skb_entail,tcp_ack
56u8:2                          fastopen_client_fail
57u8:4                          nonagle                 read_write                              tcp_skb_entail,tcp_push_pending_frames
58u8:1                          thin_lto
59u8:1                          recvmsg_inq
60u8:1                          repair                  read_mostly                             tcp_write_xmit
61u8:1                          frto
62u8                            repair_queue
63u8:2                          save_syn
64u8:1                          syn_data
65u8:1                          syn_fastopen
66u8:1                          syn_fastopen_exp
67u8:1                          syn_fastopen_ch
68u8:1                          syn_data_acked
69u8:1                          is_cwnd_limited         read_mostly                             tcp_cwnd_validate,tcp_is_cwnd_limited
70u32                           tlp_high_seq                                read_mostly         tcp_ack
71u32                           tcp_tx_delay
72u64                           tcp_wstamp_ns           read_write                              tcp_pacing_check,tcp_tso_should_defer,tcp_update_skb_after_send
73u64                           tcp_clock_cache         read_write          read_write          tcp_mstamp_refresh(tcp_write_xmit/tcp_rcv_space_adjust),__tcp_transmit_skb,tcp_tso_should_defer;timer
74u64                           tcp_mstamp              read_write          read_write          tcp_mstamp_refresh(tcp_write_xmit/tcp_rcv_space_adjust)(tx);tcp_rcv_space_adjust,tcp_rate_gen,tcp_clean_rtx_queue,tcp_ack_update_rtt/tcp_time_stamp(rx);timer
75u32                           srtt_us                 read_mostly         read_write          tcp_tso_should_defer(tx);tcp_update_pacing_rate,__tcp_set_rto,tcp_rtt_estimator(rx)
76u32                           mdev_us                 read_write                              tcp_rtt_estimator
77u32                           mdev_max_us
78u32                           rttvar_us                                   read_mostly         __tcp_set_rto
79u32                           rtt_seq                 read_write                              tcp_rtt_estimator
80struct minmax                 rtt_min                                     read_mostly         tcp_min_rtt/tcp_rate_gen,tcp_min_rtttcp_update_rtt_min
81u32                           packets_out             read_write          read_write          tcp_packets_in_flight(tx/rx);tcp_slow_start_after_idle_check,tcp_nagle_check,tcp_rate_skb_sent,tcp_event_new_data_sent,tcp_cwnd_validate,tcp_write_xmit(tx);tcp_ack,tcp_clean_rtx_queue,tcp_update_pacing_rate(rx)
82u32                           retrans_out                                 read_mostly         tcp_packets_in_flight,tcp_rate_check_app_limited
83u32                           max_packets_out                             read_write          tcp_cwnd_validate
84u32                           cwnd_usage_seq                              read_write          tcp_cwnd_validate
85u16                           urg_data                                    read_mostly         tcp_fast_path_check
86u8                            ecn_flags               read_write                              tcp_ecn_send
87u8                            keepalive_probes
88u32                           reordering              read_mostly                             tcp_sndbuf_expand
89u32                           reord_seen
90u32                           snd_up                  read_write          read_mostly         tcp_mark_urg,tcp_urg_mode,__tcp_transmit_skb(tx);tcp_clean_rtx_queue(rx)
91struct tcp_options_received   rx_opt                  read_mostly         read_write          tcp_established_options(tx);tcp_fast_path_on,tcp_ack_update_window,tcp_is_sack,tcp_data_queue,tcp_rcv_established,tcp_ack_update_rtt(rx)
92u32                           snd_ssthresh                                read_mostly         tcp_update_pacing_rate
93u32                           snd_cwnd                read_mostly         read_mostly         tcp_snd_cwnd,tcp_rate_check_app_limited,tcp_tso_should_defer(tx);tcp_update_pacing_rate
94u32                           snd_cwnd_cnt
95u32                           snd_cwnd_clamp
96u32                           snd_cwnd_used
97u32                           snd_cwnd_stamp
98u32                           prior_cwnd
99u32                           prr_delivered
100u32                           prr_out                 read_mostly         read_mostly         tcp_rate_skb_sent,tcp_newly_delivered(tx);tcp_ack,tcp_rate_gen,tcp_clean_rtx_queue(rx)
101u32                           delivered               read_mostly         read_write          tcp_rate_skb_sent, tcp_newly_delivered(tx);tcp_ack, tcp_rate_gen, tcp_clean_rtx_queue (rx)
102u32                           delivered_ce            read_mostly         read_write          tcp_rate_skb_sent(tx);tcp_rate_gen(rx)
103u32                           lost                                        read_mostly         tcp_ack
104u32                           app_limited             read_write          read_mostly         tcp_rate_check_app_limited,tcp_rate_skb_sent(tx);tcp_rate_gen(rx)
105u64                           first_tx_mstamp         read_write                              tcp_rate_skb_sent
106u64                           delivered_mstamp        read_write                              tcp_rate_skb_sent
107u32                           rate_delivered                              read_mostly         tcp_rate_gen
108u32                           rate_interval_us                            read_mostly         rate_delivered,rate_app_limited
109u32                           rcv_wnd                 read_write          read_mostly         tcp_select_window,tcp_receive_window,tcp_fast_path_check
110u32                           write_seq               read_write                              tcp_rate_check_app_limited,tcp_write_queue_empty,tcp_skb_entail,forced_push,tcp_mark_push
111u32                           notsent_lowat           read_mostly                             tcp_stream_memory_free
112u32                           pushed_seq              read_write                              tcp_mark_push,forced_push
113u32                           lost_out                read_mostly         read_mostly         tcp_left_out(tx);tcp_packets_in_flight(tx/rx);tcp_rate_check_app_limited(rx)
114u32                           sacked_out              read_mostly         read_mostly         tcp_left_out(tx);tcp_packets_in_flight(tx/rx);tcp_clean_rtx_queue(rx)
115struct hrtimer                pacing_timer
116struct hrtimer                compressed_ack_timer
117struct sk_buff*               lost_skb_hint           read_mostly                             tcp_clean_rtx_queue
118struct sk_buff*               retransmit_skb_hint     read_mostly                             tcp_clean_rtx_queue
119struct rb_root                out_of_order_queue                          read_mostly         tcp_data_queue,tcp_fast_path_check
120struct sk_buff*               ooo_last_skb
121struct tcp_sack_block[1]      duplicate_sack
122struct tcp_sack_block[4]      selective_acks
123struct tcp_sack_block[4]      recv_sack_cache
124struct sk_buff*               highest_sack            read_write                              tcp_event_new_data_sent
125int                           lost_cnt_hint
126u32                           prior_ssthresh
127u32                           high_seq
128u32                           retrans_stamp
129u32                           undo_marker
130int                           undo_retrans
131u64                           bytes_retrans
132u32                           total_retrans
133u32                           rto_stamp
134u16                           total_rto
135u16                           total_rto_recoveries
136u32                           total_rto_time
137u32                           urg_seq
138unsigned_int                  keepalive_time
139unsigned_int                  keepalive_intvl
140int                           linger2
141u8                            bpf_sock_ops_cb_flags
142u8:1                          bpf_chg_cc_inprogress
143u16                           timeout_rehash
144u32                           rcv_ooopack
145u32                           rcv_rtt_last_tsecr
146struct                        rcv_rtt_est                                 read_write          tcp_rcv_space_adjust,tcp_rcv_established
147struct                        rcvq_space                                  read_write          tcp_rcv_space_adjust
148struct                        mtu_probe
149u32                           plb_rehash
150u32                           mtu_info
151bool                          is_mptcp
152bool                          smc_hs_congested
153bool                          syn_smc
154struct tcp_sock_af_ops*       af_specific
155struct tcp_md5sig_info*       md5sig_info
156struct tcp_fastopen_request*  fastopen_req
157struct request_sock*          fastopen_rsk
158struct saved_syn*             saved_syn
159============================= ======================= =================== =================== ==================================================================================================================================================================================================================
160