Commit bab091d5 authored by David S. Miller's avatar David S. Miller
Browse files

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: default avatarDavid S. Miller <davem@davemloft.net>
parents 78e563f2 c353c7b7
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -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                                                        
+2 −2
Original line number Diff line number Diff line
@@ -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)
+5 −5
Original line number Diff line number Diff line
@@ -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;
+3 −3
Original line number Diff line number Diff line
@@ -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 */
+2 −1
Original line number Diff line number Diff line
@@ -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);
Loading