fib_rules: reorder struct fib_rules fields

Move refcnt, pref, suppress_ifgroup, suppress_prefixlen out of first
cache line, as they are not used in fast path.

Make sure ctarget & fr_net are in first cache line.

(Assuming 64 bit arches and 64 bytes cache lines)

Signed-off-by: Eric Dumazet <edumazet@google.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
Eric Dumazet 2013-08-03 11:50:35 -07:00 committed by David S. Miller
parent 73f5698e77
commit fba3679d34

View File

@ -10,23 +10,25 @@
struct fib_rule { struct fib_rule {
struct list_head list; struct list_head list;
atomic_t refcnt;
int iifindex; int iifindex;
int oifindex; int oifindex;
u32 mark; u32 mark;
u32 mark_mask; u32 mark_mask;
u32 pref;
u32 flags; u32 flags;
u32 table; u32 table;
int suppress_ifgroup;
int suppress_prefixlen;
u8 action; u8 action;
/* 3 bytes hole, try to use */
u32 target; u32 target;
struct fib_rule __rcu *ctarget; struct fib_rule __rcu *ctarget;
struct net *fr_net;
atomic_t refcnt;
u32 pref;
int suppress_ifgroup;
int suppress_prefixlen;
char iifname[IFNAMSIZ]; char iifname[IFNAMSIZ];
char oifname[IFNAMSIZ]; char oifname[IFNAMSIZ];
struct rcu_head rcu; struct rcu_head rcu;
struct net * fr_net;
}; };
struct fib_lookup_arg { struct fib_lookup_arg {