Message ID | 1551172852-18056-1-git-send-email-lirongqing@baidu.com |
---|---|
State | Accepted |
Delegated to: | Pablo Neira |
Headers | show |
Series | [v2] netfilter: ensure that CONNTRACK_LOCKS is power of 2 | expand |
On Tue, Feb 26, 2019 at 05:20:52PM +0800, Li RongQing wrote: > CONNTRACK_LOCKS is divisor when computer array index, > if it is power of 2, compiler will optimize modulo > operation as bitwise AND, or else modulo will lower > performance Applied, thanks.
diff --git a/net/netfilter/nf_conntrack_core.c b/net/netfilter/nf_conntrack_core.c index e139c256e269..f708c376f225 100644 --- a/net/netfilter/nf_conntrack_core.c +++ b/net/netfilter/nf_conntrack_core.c @@ -2482,6 +2482,7 @@ int nf_conntrack_init_net(struct net *net) int cpu; BUILD_BUG_ON(IP_CT_UNTRACKED == IP_CT_NUMBER); + BUILD_BUG_ON_NOT_POWER_OF_2(CONNTRACK_LOCKS); atomic_set(&net->ct.count, 0); net->ct.pcpu_lists = alloc_percpu(struct ct_pcpu);
CONNTRACK_LOCKS is divisor when computer array index, if it is power of 2, compiler will optimize modulo operation as bitwise AND, or else modulo will lower performance Suggested-by: Florian Westphal <fw@strlen.de> Signed-off-by: Li RongQing <lirongqing@baidu.com> --- v1-->v2: do not replace modulo operation with AND, only ensure that CONNTRACK_LOCKS is power of 2 net/netfilter/nf_conntrack_core.c | 1 + 1 file changed, 1 insertion(+)