netfilter: nft_set_hash: add nft_hash_buckets()
authorPablo Neira Ayuso <pablo@netfilter.org>
Mon, 22 May 2017 16:47:56 +0000 (17:47 +0100)
committerPablo Neira Ayuso <pablo@netfilter.org>
Mon, 29 May 2017 10:46:19 +0000 (12:46 +0200)
Add nft_hash_buckets() helper function to calculate the number of
hashtable buckets based on the elements. This function can be reused
from the follow up patch to add non-resizable hashtables.

Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
net/netfilter/nft_set_hash.c

index 455a11ce8cd06be4b11fa5ead67b12a21cecea61..466cb7092dfa6433376f8b309c67e1b75a96783c 100644 (file)
@@ -363,12 +363,17 @@ static void nft_rhash_destroy(const struct nft_set *set)
                                    (void *)set);
 }
 
+static u32 nft_hash_buckets(u32 size)
+{
+       return roundup_pow_of_two(size * 4 / 3);
+}
+
 static bool nft_rhash_estimate(const struct nft_set_desc *desc, u32 features,
                               struct nft_set_estimate *est)
 {
        if (desc->size)
                est->size = sizeof(struct nft_rhash) +
-                           roundup_pow_of_two(desc->size * 4 / 3) *
+                           nft_hash_buckets(desc->size) *
                            sizeof(struct nft_rhash_elem *) +
                            desc->size * sizeof(struct nft_rhash_elem);
        else