fib: use indirect call wrappers in the most common fib_rules_ops
This avoids another inderect call per RX packet which save us around 20-40 ns. Changelog: v1 -> v2: - Move declaraions to fib_rules.h to remove warnings Reported-by: kernel test robot <lkp@intel.com> Signed-off-by: Brian Vazquez <brianvv@google.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:

committed by
David S. Miller

parent
608b4adab1
commit
b9aaec8f0b
@@ -29,6 +29,7 @@
|
||||
#include <net/ip_fib.h>
|
||||
#include <net/nexthop.h>
|
||||
#include <net/fib_rules.h>
|
||||
#include <linux/indirect_call_wrapper.h>
|
||||
|
||||
struct fib4_rule {
|
||||
struct fib_rule common;
|
||||
@@ -103,8 +104,9 @@ int __fib_lookup(struct net *net, struct flowi4 *flp,
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(__fib_lookup);
|
||||
|
||||
static int fib4_rule_action(struct fib_rule *rule, struct flowi *flp,
|
||||
int flags, struct fib_lookup_arg *arg)
|
||||
INDIRECT_CALLABLE_SCOPE int fib4_rule_action(struct fib_rule *rule,
|
||||
struct flowi *flp, int flags,
|
||||
struct fib_lookup_arg *arg)
|
||||
{
|
||||
int err = -EAGAIN;
|
||||
struct fib_table *tbl;
|
||||
@@ -138,7 +140,8 @@ static int fib4_rule_action(struct fib_rule *rule, struct flowi *flp,
|
||||
return err;
|
||||
}
|
||||
|
||||
static bool fib4_rule_suppress(struct fib_rule *rule, struct fib_lookup_arg *arg)
|
||||
INDIRECT_CALLABLE_SCOPE bool fib4_rule_suppress(struct fib_rule *rule,
|
||||
struct fib_lookup_arg *arg)
|
||||
{
|
||||
struct fib_result *result = (struct fib_result *) arg->result;
|
||||
struct net_device *dev = NULL;
|
||||
@@ -169,7 +172,8 @@ suppress_route:
|
||||
return true;
|
||||
}
|
||||
|
||||
static int fib4_rule_match(struct fib_rule *rule, struct flowi *fl, int flags)
|
||||
INDIRECT_CALLABLE_SCOPE int fib4_rule_match(struct fib_rule *rule,
|
||||
struct flowi *fl, int flags)
|
||||
{
|
||||
struct fib4_rule *r = (struct fib4_rule *) rule;
|
||||
struct flowi4 *fl4 = &fl->u.ip4;
|
||||
|
Reference in New Issue
Block a user