Skip to content

Commit

Permalink
net: cacheline adjust struct inet_frag_queue
Browse files Browse the repository at this point in the history
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 <[email protected]>
Signed-off-by: David S. Miller <[email protected]>
  • Loading branch information
netoptimizer authored and davem330 committed Jan 29, 2013
1 parent 5f8e1e8 commit 6e34a8b
Showing 1 changed file with 5 additions and 4 deletions.
9 changes: 5 additions & 4 deletions include/net/inet_frag.h
Original file line number Diff line number Diff line change
Expand Up @@ -16,12 +16,11 @@ struct netns_frags {
};

struct inet_frag_queue {
struct hlist_node list;
struct netns_frags *net;
struct list_head lru_list; /* lru list member */
spinlock_t lock;
atomic_t refcnt;
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_tail;
ktime_t stamp;
Expand All @@ -34,6 +33,8 @@ struct inet_frag_queue {
#define INET_FRAG_LAST_IN 1

u16 max_size;

struct netns_frags *net;
};

#define INETFRAGS_HASHSZ 64
Expand Down

0 comments on commit 6e34a8b

Please sign in to comment.