net: cacheline adjust struct inet_frag_queue
Fragmentation code cacheline adjusting of struct inet_frag_queue. Take advantage of the size of struct timer_list, and move all but spinlock_t lock, below the timer struct. On 64-bit 'lru_list', 'list' and 'refcnt', fits exactly into the next cacheline, and a new cacheline starts at 'fragments'. The netns_frags *net pointer is moved to the end of the struct, because its used in a compare, with "next/close-by" elements of which this struct is embedded into. Signed-off-by: Jesper Dangaard Brouer <brouer@redhat.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
committed by
David S. Miller
parent
5f8e1e8b76
commit
6e34a8b37a
@@ -16,12 +16,11 @@ struct netns_frags {
|
|||||||
};
|
};
|
||||||
|
|
||||||
struct inet_frag_queue {
|
struct inet_frag_queue {
|
||||||
struct hlist_node list;
|
|
||||||
struct netns_frags *net;
|
|
||||||
struct list_head lru_list; /* lru list member */
|
|
||||||
spinlock_t lock;
|
spinlock_t lock;
|
||||||
atomic_t refcnt;
|
|
||||||
struct timer_list timer; /* when will this queue expire? */
|
struct timer_list timer; /* when will this queue expire? */
|
||||||
|
struct list_head lru_list; /* lru list member */
|
||||||
|
struct hlist_node list;
|
||||||
|
atomic_t refcnt;
|
||||||
struct sk_buff *fragments; /* list of received fragments */
|
struct sk_buff *fragments; /* list of received fragments */
|
||||||
struct sk_buff *fragments_tail;
|
struct sk_buff *fragments_tail;
|
||||||
ktime_t stamp;
|
ktime_t stamp;
|
||||||
@@ -34,6 +33,8 @@ struct inet_frag_queue {
|
|||||||
#define INET_FRAG_LAST_IN 1
|
#define INET_FRAG_LAST_IN 1
|
||||||
|
|
||||||
u16 max_size;
|
u16 max_size;
|
||||||
|
|
||||||
|
struct netns_frags *net;
|
||||||
};
|
};
|
||||||
|
|
||||||
#define INETFRAGS_HASHSZ 64
|
#define INETFRAGS_HASHSZ 64
|
||||||
|
Reference in New Issue
Block a user