Commit 2111515a authored by Pablo Neira Ayuso's avatar Pablo Neira Ayuso

netfilter: nft_set_hash: add nft_hash_buckets()

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: default avatarPablo Neira Ayuso <pablo@netfilter.org>
parent 347b408d
...@@ -363,12 +363,17 @@ static void nft_rhash_destroy(const struct nft_set *set) ...@@ -363,12 +363,17 @@ static void nft_rhash_destroy(const struct nft_set *set)
(void *)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, static bool nft_rhash_estimate(const struct nft_set_desc *desc, u32 features,
struct nft_set_estimate *est) struct nft_set_estimate *est)
{ {
if (desc->size) if (desc->size)
est->size = sizeof(struct nft_rhash) + est->size = sizeof(struct nft_rhash) +
roundup_pow_of_two(desc->size * 4 / 3) * nft_hash_buckets(desc->size) *
sizeof(struct nft_rhash_elem *) + sizeof(struct nft_rhash_elem *) +
desc->size * sizeof(struct nft_rhash_elem); desc->size * sizeof(struct nft_rhash_elem);
else else
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment