]> git.itanic.dy.fi Git - linux-stable/commitdiff
netfilter: flowtable: reorder nf_flowtable struct members
authorFlorian Westphal <fw@strlen.de>
Mon, 20 Nov 2023 16:29:58 +0000 (17:29 +0100)
committerPablo Neira Ayuso <pablo@netfilter.org>
Fri, 22 Dec 2023 11:08:38 +0000 (12:08 +0100)
Place the read-mostly parts accessed by the datapath first.

In particular, we do access ->flags member (to see if HW offload
is enabled) for every single packet, but this is placed in the 5th
cacheline.

priority could stay where it is, but move it too to cover a hole.

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

index 692d5955911c7dbf967110be2dd98e62c75f20af..956c752ceb3180115eec0b607d81cafe5f038ce8 100644 (file)
@@ -74,12 +74,13 @@ enum nf_flowtable_flags {
 };
 
 struct nf_flowtable {
-       struct list_head                list;
-       struct rhashtable               rhashtable;
-       int                             priority;
+       unsigned int                    flags;          /* readonly in datapath */
+       int                             priority;       /* control path (padding hole) */
+       struct rhashtable               rhashtable;     /* datapath, read-mostly members come first */
+
+       struct list_head                list;           /* slowpath parts */
        const struct nf_flowtable_type  *type;
        struct delayed_work             gc_work;
-       unsigned int                    flags;
        struct flow_block               flow_block;
        struct rw_semaphore             flow_block_lock; /* Guards flow_block */
        possible_net_t                  net;