netfilter: nf_tables: add direct calls for all builtin expressions
With CONFIG_RETPOLINE its faster to add an if (ptr == &foo_func) check and and use direct calls for all the built-in expressions. ~15% improvement in pathological cases. checkpatch doesn't like the X macro due to the embedded return statement, but the macro has a very limited scope so I don't think its a problem. I would like to avoid bugs of the form If (e->ops->eval == (unsigned long)nft_foo_eval) nft_bar_eval(); and open-coded if ()/else if()/else cascade, thus the macro. Signed-off-by:Florian Westphal <fw@strlen.de> Signed-off-by:
Pablo Neira Ayuso <pablo@netfilter.org>
Showing
- include/net/netfilter/nf_tables_core.h 16 additions, 0 deletionsinclude/net/netfilter/nf_tables_core.h
- net/netfilter/nf_tables_core.c 18 additions, 7 deletionsnet/netfilter/nf_tables_core.c
- net/netfilter/nft_bitwise.c 2 additions, 3 deletionsnet/netfilter/nft_bitwise.c
- net/netfilter/nft_byteorder.c 3 additions, 3 deletionsnet/netfilter/nft_byteorder.c
- net/netfilter/nft_cmp.c 3 additions, 3 deletionsnet/netfilter/nft_cmp.c
- net/netfilter/nft_dynset.c 2 additions, 3 deletionsnet/netfilter/nft_dynset.c
- net/netfilter/nft_immediate.c 3 additions, 3 deletionsnet/netfilter/nft_immediate.c
- net/netfilter/nft_payload.c 3 additions, 3 deletionsnet/netfilter/nft_payload.c
- net/netfilter/nft_range.c 2 additions, 3 deletionsnet/netfilter/nft_range.c
- net/netfilter/nft_rt.c 3 additions, 3 deletionsnet/netfilter/nft_rt.c
Loading
Please register or sign in to comment