netfilter: nf_queue: place volatile data in own cacheline
authorFlorian Westphal <fw@strlen.de>
Sun, 30 Oct 2016 23:35:07 +0000 (00:35 +0100)
committerPablo Neira Ayuso <pablo@netfilter.org>
Tue, 1 Nov 2016 19:50:33 +0000 (20:50 +0100)
As the comment indicates, the data at the end of nfqnl_instance struct is
written on every queue/dequeue, so it should reside in its own cacheline.

Before this change, 'lock' was in first cacheline so we dirtied both.

Signed-off-by: Florian Westphal <fw@strlen.de>
Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
net/netfilter/nfnetlink_queue.c

index af832c5260485f3f99a3dae8fdf0019f896350ef..5379f788a3721486a0406b54e093cbed4a7d1d89 100644 (file)
@@ -69,7 +69,7 @@ struct nfqnl_instance {
  * Following fields are dirtied for each queued packet,
  * keep them in same cache line if possible.
  */
-       spinlock_t      lock;
+       spinlock_t      lock    ____cacheline_aligned_in_smp;
        unsigned int    queue_total;
        unsigned int    id_sequence;            /* 'sequence' of pkt ids */
        struct list_head queue_list;            /* packets in queue */