[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
|
struct dst_entry
|
||||||
{
|
{
|
||||||
union {
|
struct rcu_head rcu_head;
|
||||||
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 dst_entry *child;
|
struct dst_entry *child;
|
||||||
struct net_device *dev;
|
struct net_device *dev;
|
||||||
short error;
|
short error;
|
||||||
|
@ -55,7 +48,6 @@ struct dst_entry
|
||||||
#define DST_NOPOLICY 4
|
#define DST_NOPOLICY 4
|
||||||
#define DST_NOHASH 8
|
#define DST_NOHASH 8
|
||||||
#define DST_BALANCED 0x10
|
#define DST_BALANCED 0x10
|
||||||
unsigned long lastuse;
|
|
||||||
unsigned long expires;
|
unsigned long expires;
|
||||||
|
|
||||||
unsigned short header_len; /* more space at head required */
|
unsigned short header_len; /* more space at head required */
|
||||||
|
@ -80,8 +72,16 @@ struct dst_entry
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
struct dst_ops *ops;
|
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];
|
char info[0];
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
Загрузка…
Ссылка в новой задаче