tcp_sock.rst 16 KB

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