From 83e3e75ba62705142ef0d5892a1fd2915c5e28c5 Mon Sep 17 00:00:00 2001 From: Jesse Gross Date: Tue, 23 Nov 2010 16:34:22 -0800 Subject: [PATCH] datapath: Use __read_mostly annotations where appropriate. Variables which are changed only infrequently should be annotated with __read_mostly, which will group them together in a special linker section. This prevents them from sharing cache lines with data on the hot path. Signed-off-by: Jesse Gross Acked-by: Ben Pfaff --- datapath/datapath.c | 1 - datapath/flow.c | 2 +- datapath/tunnel.c | 10 +++++----- 3 files changed, 6 insertions(+), 7 deletions(-) diff --git a/datapath/datapath.c b/datapath/datapath.c index 522d4ec1..bed48039 100644 --- a/datapath/datapath.c +++ b/datapath/datapath.c @@ -54,7 +54,6 @@ #include "compat.h" - int (*dp_ioctl_hook)(struct net_device *dev, struct ifreq *rq, int cmd); EXPORT_SYMBOL(dp_ioctl_hook); diff --git a/datapath/flow.c b/datapath/flow.c index 496f11cd..d30fb73f 100644 --- a/datapath/flow.c +++ b/datapath/flow.c @@ -32,7 +32,7 @@ #include "compat.h" struct kmem_cache *flow_cache; -static unsigned int hash_seed; +static unsigned int hash_seed __read_mostly; static inline bool arphdr_ok(struct sk_buff *skb) { diff --git a/datapath/tunnel.c b/datapath/tunnel.c index f0ae98d0..e666a917 100644 --- a/datapath/tunnel.c +++ b/datapath/tunnel.c @@ -68,7 +68,7 @@ #define CACHE_DATA_ALIGN 16 /* Protected by RCU. */ -static struct tbl *port_table; +static struct tbl *port_table __read_mostly; static void cache_cleaner(struct work_struct *work); DECLARE_DELAYED_WORK(cache_cleaner_wq, cache_cleaner); @@ -78,10 +78,10 @@ DECLARE_DELAYED_WORK(cache_cleaner_wq, cache_cleaner); * synchronization because we could have just as easily read the value before * the port change happened. */ -static unsigned int key_local_remote_ports; -static unsigned int key_remote_ports; -static unsigned int local_remote_ports; -static unsigned int remote_ports; +static unsigned int key_local_remote_ports __read_mostly; +static unsigned int key_remote_ports __read_mostly; +static unsigned int local_remote_ports __read_mostly; +static unsigned int remote_ports __read_mostly; #if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,36) #define rt_dst(rt) (rt->dst) -- 2.30.2