Loading drivers/net/dsa/dsa_loop.c +1 −1 Original line number Diff line number Diff line Loading @@ -352,7 +352,7 @@ static void __exit dsa_loop_exit(void) mdio_driver_unregister(&dsa_loop_drv); for (i = 0; i < NUM_FIXED_PHYS; i++) if (phydevs[i]) if (!IS_ERR(phydevs[i])) fixed_phy_unregister(phydevs[i]); } module_exit(dsa_loop_exit); Loading include/net/inet_frag.h +9 −26 Original line number Diff line number Diff line #ifndef __NET_FRAG_H__ #define __NET_FRAG_H__ #include <linux/percpu_counter.h> struct netns_frags { /* The percpu_counter "mem" need to be cacheline aligned. * mem.count must not share cacheline with other writers */ struct percpu_counter mem ____cacheline_aligned_in_smp; /* Keep atomic mem on separate cachelines in structs that include it */ atomic_t mem ____cacheline_aligned_in_smp; /* sysctls */ int timeout; int high_thresh; Loading Loading @@ -108,15 +103,10 @@ struct inet_frags { int inet_frags_init(struct inet_frags *); void inet_frags_fini(struct inet_frags *); static inline int inet_frags_init_net(struct netns_frags *nf) { return percpu_counter_init(&nf->mem, 0, GFP_KERNEL); } static inline void inet_frags_uninit_net(struct netns_frags *nf) static inline void inet_frags_init_net(struct netns_frags *nf) { percpu_counter_destroy(&nf->mem); atomic_set(&nf->mem, 0); } void inet_frags_exit_net(struct netns_frags *nf, struct inet_frags *f); void inet_frag_kill(struct inet_frag_queue *q, struct inet_frags *f); Loading @@ -140,31 +130,24 @@ static inline bool inet_frag_evicting(struct inet_frag_queue *q) /* Memory Tracking Functions. */ /* The default percpu_counter batch size is not big enough to scale to * fragmentation mem acct sizes. * The mem size of a 64K fragment is approx: * (44 fragments * 2944 truesize) + frag_queue struct(200) = 129736 bytes */ static unsigned int frag_percpu_counter_batch = 130000; static inline int frag_mem_limit(struct netns_frags *nf) { return percpu_counter_read(&nf->mem); return atomic_read(&nf->mem); } static inline void sub_frag_mem_limit(struct netns_frags *nf, int i) { percpu_counter_add_batch(&nf->mem, -i, frag_percpu_counter_batch); atomic_sub(i, &nf->mem); } static inline void add_frag_mem_limit(struct netns_frags *nf, int i) { percpu_counter_add_batch(&nf->mem, i, frag_percpu_counter_batch); atomic_add(i, &nf->mem); } static inline unsigned int sum_frag_mem_limit(struct netns_frags *nf) static inline int sum_frag_mem_limit(struct netns_frags *nf) { return percpu_counter_sum_positive(&nf->mem); return atomic_read(&nf->mem); } /* RFC 3168 support : Loading include/net/route.h +4 −3 Original line number Diff line number Diff line Loading @@ -189,10 +189,11 @@ static inline int ip_route_input(struct sk_buff *skb, __be32 dst, __be32 src, rcu_read_lock(); err = ip_route_input_noref(skb, dst, src, tos, devin); if (!err) if (!err) { skb_dst_force_safe(skb); if (!skb_dst(skb)) err = -EINVAL; } rcu_read_unlock(); return err; Loading net/ieee802154/6lowpan/reassembly.c +3 −8 Original line number Diff line number Diff line Loading @@ -580,19 +580,14 @@ static int __net_init lowpan_frags_init_net(struct net *net) { struct netns_ieee802154_lowpan *ieee802154_lowpan = net_ieee802154_lowpan(net); int res; ieee802154_lowpan->frags.high_thresh = IPV6_FRAG_HIGH_THRESH; ieee802154_lowpan->frags.low_thresh = IPV6_FRAG_LOW_THRESH; ieee802154_lowpan->frags.timeout = IPV6_FRAG_TIMEOUT; res = inet_frags_init_net(&ieee802154_lowpan->frags); if (res) return res; res = lowpan_frags_ns_sysctl_register(net); if (res) inet_frags_uninit_net(&ieee802154_lowpan->frags); return res; inet_frags_init_net(&ieee802154_lowpan->frags); return lowpan_frags_ns_sysctl_register(net); } static void __net_exit lowpan_frags_exit_net(struct net *net) Loading net/ipv4/inet_fragment.c +1 −3 Original line number Diff line number Diff line Loading @@ -234,10 +234,8 @@ void inet_frags_exit_net(struct netns_frags *nf, struct inet_frags *f) cond_resched(); if (read_seqretry(&f->rnd_seqlock, seq) || percpu_counter_sum(&nf->mem)) sum_frag_mem_limit(nf)) goto evict_again; percpu_counter_destroy(&nf->mem); } EXPORT_SYMBOL(inet_frags_exit_net); Loading Loading
drivers/net/dsa/dsa_loop.c +1 −1 Original line number Diff line number Diff line Loading @@ -352,7 +352,7 @@ static void __exit dsa_loop_exit(void) mdio_driver_unregister(&dsa_loop_drv); for (i = 0; i < NUM_FIXED_PHYS; i++) if (phydevs[i]) if (!IS_ERR(phydevs[i])) fixed_phy_unregister(phydevs[i]); } module_exit(dsa_loop_exit); Loading
include/net/inet_frag.h +9 −26 Original line number Diff line number Diff line #ifndef __NET_FRAG_H__ #define __NET_FRAG_H__ #include <linux/percpu_counter.h> struct netns_frags { /* The percpu_counter "mem" need to be cacheline aligned. * mem.count must not share cacheline with other writers */ struct percpu_counter mem ____cacheline_aligned_in_smp; /* Keep atomic mem on separate cachelines in structs that include it */ atomic_t mem ____cacheline_aligned_in_smp; /* sysctls */ int timeout; int high_thresh; Loading Loading @@ -108,15 +103,10 @@ struct inet_frags { int inet_frags_init(struct inet_frags *); void inet_frags_fini(struct inet_frags *); static inline int inet_frags_init_net(struct netns_frags *nf) { return percpu_counter_init(&nf->mem, 0, GFP_KERNEL); } static inline void inet_frags_uninit_net(struct netns_frags *nf) static inline void inet_frags_init_net(struct netns_frags *nf) { percpu_counter_destroy(&nf->mem); atomic_set(&nf->mem, 0); } void inet_frags_exit_net(struct netns_frags *nf, struct inet_frags *f); void inet_frag_kill(struct inet_frag_queue *q, struct inet_frags *f); Loading @@ -140,31 +130,24 @@ static inline bool inet_frag_evicting(struct inet_frag_queue *q) /* Memory Tracking Functions. */ /* The default percpu_counter batch size is not big enough to scale to * fragmentation mem acct sizes. * The mem size of a 64K fragment is approx: * (44 fragments * 2944 truesize) + frag_queue struct(200) = 129736 bytes */ static unsigned int frag_percpu_counter_batch = 130000; static inline int frag_mem_limit(struct netns_frags *nf) { return percpu_counter_read(&nf->mem); return atomic_read(&nf->mem); } static inline void sub_frag_mem_limit(struct netns_frags *nf, int i) { percpu_counter_add_batch(&nf->mem, -i, frag_percpu_counter_batch); atomic_sub(i, &nf->mem); } static inline void add_frag_mem_limit(struct netns_frags *nf, int i) { percpu_counter_add_batch(&nf->mem, i, frag_percpu_counter_batch); atomic_add(i, &nf->mem); } static inline unsigned int sum_frag_mem_limit(struct netns_frags *nf) static inline int sum_frag_mem_limit(struct netns_frags *nf) { return percpu_counter_sum_positive(&nf->mem); return atomic_read(&nf->mem); } /* RFC 3168 support : Loading
include/net/route.h +4 −3 Original line number Diff line number Diff line Loading @@ -189,10 +189,11 @@ static inline int ip_route_input(struct sk_buff *skb, __be32 dst, __be32 src, rcu_read_lock(); err = ip_route_input_noref(skb, dst, src, tos, devin); if (!err) if (!err) { skb_dst_force_safe(skb); if (!skb_dst(skb)) err = -EINVAL; } rcu_read_unlock(); return err; Loading
net/ieee802154/6lowpan/reassembly.c +3 −8 Original line number Diff line number Diff line Loading @@ -580,19 +580,14 @@ static int __net_init lowpan_frags_init_net(struct net *net) { struct netns_ieee802154_lowpan *ieee802154_lowpan = net_ieee802154_lowpan(net); int res; ieee802154_lowpan->frags.high_thresh = IPV6_FRAG_HIGH_THRESH; ieee802154_lowpan->frags.low_thresh = IPV6_FRAG_LOW_THRESH; ieee802154_lowpan->frags.timeout = IPV6_FRAG_TIMEOUT; res = inet_frags_init_net(&ieee802154_lowpan->frags); if (res) return res; res = lowpan_frags_ns_sysctl_register(net); if (res) inet_frags_uninit_net(&ieee802154_lowpan->frags); return res; inet_frags_init_net(&ieee802154_lowpan->frags); return lowpan_frags_ns_sysctl_register(net); } static void __net_exit lowpan_frags_exit_net(struct net *net) Loading
net/ipv4/inet_fragment.c +1 −3 Original line number Diff line number Diff line Loading @@ -234,10 +234,8 @@ void inet_frags_exit_net(struct netns_frags *nf, struct inet_frags *f) cond_resched(); if (read_seqretry(&f->rnd_seqlock, seq) || percpu_counter_sum(&nf->mem)) sum_frag_mem_limit(nf)) goto evict_again; percpu_counter_destroy(&nf->mem); } EXPORT_SYMBOL(inet_frags_exit_net); Loading