Merge branch 'net-misplaced-fields'
Eric Dumazet says: ==================== net: more three misplaced fields We recently reorganized some structures for better data locality in networking fast paths. This series moves three fields that were not correctly classified. There probably more to come. Reference : https://lwn.net/Articles/951321/ ==================== Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
commit
bab091d546
@ -136,8 +136,8 @@ struct_netpoll_info* npinfo -
|
||||
possible_net_t nd_net - read_mostly (dev_net)napi_busy_loop,tcp_v(4/6)_rcv,ip(v6)_rcv,ip(6)_input,ip(6)_input_finish
|
||||
void* ml_priv
|
||||
enum_netdev_ml_priv_type ml_priv_type
|
||||
struct_pcpu_lstats__percpu* lstats
|
||||
struct_pcpu_sw_netstats__percpu* tstats
|
||||
struct_pcpu_lstats__percpu* lstats read_mostly dev_lstats_add()
|
||||
struct_pcpu_sw_netstats__percpu* tstats read_mostly dev_sw_netstats_tx_add()
|
||||
struct_pcpu_dstats__percpu* dstats
|
||||
struct_garp_port* garp_port
|
||||
struct_mrp_port* mrp_port
|
||||
|
@ -38,13 +38,13 @@ u32 max_window read_mostly -
|
||||
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)
|
||||
u32 window_clamp read_mostly read_write tcp_rcv_space_adjust,__tcp_select_window
|
||||
u32 rcv_ssthresh read_mostly - __tcp_select_window
|
||||
u82 scaling_ratio
|
||||
u8 scaling_ratio read_mostly read_mostly tcp_win_from_space
|
||||
struct tcp_rack
|
||||
u16 advmss - read_mostly tcp_rcv_space_adjust
|
||||
u8 compressed_ack
|
||||
u8:2 dup_ack_counter
|
||||
u8:1 tlp_retrans
|
||||
u8:1 tcp_usec_ts
|
||||
u8:1 tcp_usec_ts read_mostly read_mostly
|
||||
u32 chrono_start read_write - tcp_chrono_start/stop(tcp_write_xmit,tcp_cwnd_validate,tcp_send_syn_data)
|
||||
u32[3] chrono_stat read_write - tcp_chrono_start/stop(tcp_write_xmit,tcp_cwnd_validate,tcp_send_syn_data)
|
||||
u8:2 chrono_type read_write - tcp_chrono_start/stop(tcp_write_xmit,tcp_cwnd_validate,tcp_send_syn_data)
|
||||
|
@ -2141,6 +2141,11 @@ struct net_device {
|
||||
|
||||
/* TXRX read-mostly hotpath */
|
||||
__cacheline_group_begin(net_device_read_txrx);
|
||||
union {
|
||||
struct pcpu_lstats __percpu *lstats;
|
||||
struct pcpu_sw_netstats __percpu *tstats;
|
||||
struct pcpu_dstats __percpu *dstats;
|
||||
};
|
||||
unsigned int flags;
|
||||
unsigned short hard_header_len;
|
||||
netdev_features_t features;
|
||||
@ -2395,11 +2400,6 @@ struct net_device {
|
||||
enum netdev_ml_priv_type ml_priv_type;
|
||||
|
||||
enum netdev_stat_type pcpu_stat_type:8;
|
||||
union {
|
||||
struct pcpu_lstats __percpu *lstats;
|
||||
struct pcpu_sw_netstats __percpu *tstats;
|
||||
struct pcpu_dstats __percpu *dstats;
|
||||
};
|
||||
|
||||
#if IS_ENABLED(CONFIG_GARP)
|
||||
struct garp_port __rcu *garp_port;
|
||||
|
@ -221,8 +221,10 @@ struct tcp_sock {
|
||||
u32 lost_out; /* Lost packets */
|
||||
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,
|
||||
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? */
|
||||
__cacheline_group_end(tcp_sock_read_txrx);
|
||||
@ -352,7 +354,6 @@ struct tcp_sock {
|
||||
u32 compressed_ack_rcv_nxt;
|
||||
struct list_head tsq_node; /* anchor in tsq_tasklet.head list */
|
||||
|
||||
u8 scaling_ratio; /* see tcp_win_from_space() */
|
||||
/* Information of the most recently (s)acked skb */
|
||||
struct tcp_rack {
|
||||
u64 mstamp; /* (Re)sent time of the skb */
|
||||
@ -368,8 +369,7 @@ struct tcp_sock {
|
||||
u8 compressed_ack;
|
||||
u8 dup_ack_counter:2,
|
||||
tlp_retrans:1, /* TLP is a retransmission */
|
||||
tcp_usec_ts:1, /* TSval values in usec */
|
||||
unused:4;
|
||||
unused:5;
|
||||
u8 thin_lto : 1,/* Use linear timeouts for thin streams */
|
||||
recvmsg_inq : 1,/* Indicate # of bytes in queue upon recvmsg */
|
||||
fastopen_connect:1, /* FASTOPEN_CONNECT sockopt */
|
||||
|
@ -11652,11 +11652,12 @@ static void __init net_dev_struct_check(void)
|
||||
CACHELINE_ASSERT_GROUP_SIZE(struct net_device, net_device_read_tx, 160);
|
||||
|
||||
/* TXRX read-mostly hotpath */
|
||||
CACHELINE_ASSERT_GROUP_MEMBER(struct net_device, net_device_read_txrx, lstats);
|
||||
CACHELINE_ASSERT_GROUP_MEMBER(struct net_device, net_device_read_txrx, flags);
|
||||
CACHELINE_ASSERT_GROUP_MEMBER(struct net_device, net_device_read_txrx, hard_header_len);
|
||||
CACHELINE_ASSERT_GROUP_MEMBER(struct net_device, net_device_read_txrx, features);
|
||||
CACHELINE_ASSERT_GROUP_MEMBER(struct net_device, net_device_read_txrx, ip6_ptr);
|
||||
CACHELINE_ASSERT_GROUP_SIZE(struct net_device, net_device_read_txrx, 30);
|
||||
CACHELINE_ASSERT_GROUP_SIZE(struct net_device, net_device_read_txrx, 38);
|
||||
|
||||
/* RX read-mostly hotpath */
|
||||
CACHELINE_ASSERT_GROUP_MEMBER(struct net_device, net_device_read_rx, ptype_specific);
|
||||
|
@ -4615,7 +4615,8 @@ static void __init tcp_struct_check(void)
|
||||
CACHELINE_ASSERT_GROUP_MEMBER(struct tcp_sock, tcp_sock_read_txrx, prr_out);
|
||||
CACHELINE_ASSERT_GROUP_MEMBER(struct tcp_sock, tcp_sock_read_txrx, lost_out);
|
||||
CACHELINE_ASSERT_GROUP_MEMBER(struct tcp_sock, tcp_sock_read_txrx, sacked_out);
|
||||
CACHELINE_ASSERT_GROUP_SIZE(struct tcp_sock, tcp_sock_read_txrx, 31);
|
||||
CACHELINE_ASSERT_GROUP_MEMBER(struct tcp_sock, tcp_sock_read_txrx, scaling_ratio);
|
||||
CACHELINE_ASSERT_GROUP_SIZE(struct tcp_sock, tcp_sock_read_txrx, 32);
|
||||
|
||||
/* RX read-mostly hotpath cache lines */
|
||||
CACHELINE_ASSERT_GROUP_MEMBER(struct tcp_sock, tcp_sock_read_rx, copied_seq);
|
||||
|
Loading…
Reference in New Issue
Block a user