[NET]: Reorder fields of struct dst_entry
This last patch (but not least :) ) finally moves the next pointer at the end of struct dst_entry. This permits to perform route cache lookups with a minimal cost of one cache line per entry, instead of two. Both 32bits and 64bits platforms benefit from this new layout. Signed-off-by: Eric Dumazet <dada1@cosmosbay.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
Родитель
0c195c3fc4
Коммит
1e19e02ca0
|
@ -37,14 +37,7 @@ struct sk_buff;
|
|||
|
||||
struct dst_entry
|
||||
{
|
||||
union {
|
||||
struct dst_entry *next;
|
||||
struct rtable *rt_next;
|
||||
struct rt6_info *rt6_next;
|
||||
struct dn_route *dn_next;
|
||||
};
|
||||
atomic_t __refcnt; /* client references */
|
||||
int __use;
|
||||
struct rcu_head rcu_head;
|
||||
struct dst_entry *child;
|
||||
struct net_device *dev;
|
||||
short error;
|
||||
|
@ -55,7 +48,6 @@ struct dst_entry
|
|||
#define DST_NOPOLICY 4
|
||||
#define DST_NOHASH 8
|
||||
#define DST_BALANCED 0x10
|
||||
unsigned long lastuse;
|
||||
unsigned long expires;
|
||||
|
||||
unsigned short header_len; /* more space at head required */
|
||||
|
@ -80,8 +72,16 @@ struct dst_entry
|
|||
#endif
|
||||
|
||||
struct dst_ops *ops;
|
||||
struct rcu_head rcu_head;
|
||||
|
||||
unsigned long lastuse;
|
||||
atomic_t __refcnt; /* client references */
|
||||
int __use;
|
||||
union {
|
||||
struct dst_entry *next;
|
||||
struct rtable *rt_next;
|
||||
struct rt6_info *rt6_next;
|
||||
struct dn_route *dn_next;
|
||||
};
|
||||
char info[0];
|
||||
};
|
||||
|
||||
|
|
Загрузка…
Ссылка в новой задаче