net: make ip_rt_acct a normal percpu var
Subsystems (3)
PATCH 1/1 net: make ip_rt_acct a normal percpu var
There's no reason for this to be dynamically allocated: we panic if allocation fails anyway.
Signed-off-by Rusty Russell <[email protected]>
include/net/route.h +2 -1
@@ -34,6 +34,7 @@#include <linux/ip.h> #include <linux/cache.h> #include <linux/security.h> +#include <linux/percpu.h> #ifndef __KERNEL__#warning This file is not supposed to be used outside of kernel.
@@ -105,7 +106,7 @@unsigned int out_hlist_search; }; -extern struct ip_rt_acct *ip_rt_acct; +DECLARE_PER_CPU(struct ip_rt_acct[256], ip_rt_acct);struct in_device ;extern int ip_rt_init (void );
net/ipv4/ip_input.c +1 -1
@@ -339,7 +339,7 @@#ifdef CONFIG_NET_CLS_ROUTE if (unlikely (skb->dst->tclassid)) { -struct ip_rt_acct *st =per_cpu_ptr (ip_rt_acct,smp_processor_id ()); +struct ip_rt_acct *st =__get_cpu_var (ip_rt_acct);u32 idx = skb->dst->tclassid; st[idx&0xFF ].o_packets++; st[idx&0xFF ].o_bytes+=skb->len;
net/ipv4/route.c +2 -8
@@ -541,7 +541,7 @@unsigned int j;u32 *src; - src = ((u32 *)per_cpu_ptr (ip_rt_acct, i)) + offset; + src = ((u32 *)per_cpu (ip_rt_acct, i)) + offset;for (j =0 ; j < length/4 ; j++) dst[j] += src[j]; }
@@ -3237,7 +3237,7 @@#ifdef CONFIG_NET_CLS_ROUTE -struct ip_rt_acct *ip_rt_acct__read_mostly ; +DEFINE_PER_CPU(struct ip_rt_acct[256], ip_rt_acct);#endif /* CONFIG_NET_CLS_ROUTE */ static __initdata unsigned long rhash_entries;
@@ -3253,12 +3253,6 @@int __init ip_rt_init (void ) {int rc =0 ; - -#ifdef CONFIG_NET_CLS_ROUTE - ip_rt_acct =__alloc_percpu (256 *sizeof (struct ip_rt_acct )); -if (!ip_rt_acct) -panic ("IP: failed to allocate ip_rt_acct\n" ); -#endif ipv4_dst_ops.kmem_cachep = kmem_cache_create("ip_dst_cache", sizeof(struct rtable), 0,