From: Stephen Hemminger <stephen@networkplumber.org>
To: Bing Zhao <bingz@mellanox.com>
Cc: orika@mellanox.com, viacheslavo@mellanox.com,
rasland@mellanox.com, dev@dpdk.org
Subject: Re: [dpdk-dev] [PATCH] net/mlx5: introduce mlx5 hash list
Date: Tue, 5 Nov 2019 09:25:01 -0800 [thread overview]
Message-ID: <20191105092501.04521668@hermes.lan> (raw)
In-Reply-To: <1572967680-93338-1-git-send-email-bingz@mellanox.com>
On Tue, 5 Nov 2019 17:28:00 +0200
Bing Zhao <bingz@mellanox.com> wrote:
> +struct mlx5_hlist *
> +mlx5_hlist_create(char *name, uint64_t size, mlx5_hlist_destroy_callback_fn cb)
Name is unused in rte_malloc, so why bother with it here?
> +{
> + struct mlx5_hlist *h;
> + uint64_t act_size;
> + uint64_t alloc_size;
> +
> + if (!size)
> + return NULL;
> + /* If the low 32B is power of 2, then the 64B integer is too. */
> + if (!rte_is_power_of_2((uint32_t)size)) {
If you are doing cast, therefore you are truncating, therefore size
can't really be a uint64_t and should be size_t or uint32_t.
> + act_size = rte_align64pow2(size);
> + DRV_LOG(WARNING, "Size 0x%" PRIX64 " is not power of 2, will "
> + "be aligned to 0x%" PRIX64 ".\n", size, act_size);
> + } else {
> + act_size = size;
> + }
Power of 2 hash list size wastes significant amount of memory.
> + alloc_size = sizeof(struct mlx5_hlist) +
> + sizeof(struct mlx5_hlist_head) * act_size;
> + /* Using zmalloc, then no need to initialize the heads. */
> + h = rte_zmalloc(name, alloc_size, RTE_CACHE_LINE_SIZE);
Why not use rte_calloc?
Why use rte_malloc at all? Does this need to be accessed from hardware
or shared between primary/secondary. Also rte_malloc has less tooling
support (coverity, leak checking, etc) than standard malloc.
> + if (!h) {
> + DRV_LOG(ERR, "No memory for hash list %s creation\n",
> + name ? name : "None");
> + return NULL;
> + }
> + if (name)
> + snprintf(h->name, MLX5_HLIST_NAMESIZE, "%s", name);
> + if (!cb)
> + DRV_LOG(WARNING, "No callback function is specified, will use "
> + "rte_free when destroying hlist %p %s\n",
> + (void *)h, h->name);
> + else
> + h->cb = cb;
> + h->table_sz = act_size;
> + h->mask = act_size - 1;
> + DRV_LOG(DEBUG, "Hash list with %s size 0x%" PRIX64 ", callback "
> + "0x%" PRIX64 "is created.\n",
> + h->name, act_size, (uint64_t)(uintptr_t)cb);
> + return h;
> +}
next prev parent reply other threads:[~2019-11-05 17:25 UTC|newest]
Thread overview: 12+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-11-05 15:28 Bing Zhao
2019-11-05 15:29 ` Slava Ovsiienko
2019-11-05 16:02 ` Raslan Darawsheh
2019-11-05 17:26 ` Stephen Hemminger
2019-11-06 8:14 ` Raslan Darawsheh
2019-11-05 17:20 ` Stephen Hemminger
2019-11-05 18:49 ` Slava Ovsiienko
2019-11-05 17:25 ` Stephen Hemminger [this message]
2019-11-06 7:45 ` Bing Zhao
2019-11-06 13:07 ` [dpdk-dev] [PATCH v2] " Bing Zhao
2019-11-07 9:20 ` Bing Zhao
2019-11-07 22:46 ` Raslan Darawsheh
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20191105092501.04521668@hermes.lan \
--to=stephen@networkplumber.org \
--cc=bingz@mellanox.com \
--cc=dev@dpdk.org \
--cc=orika@mellanox.com \
--cc=rasland@mellanox.com \
--cc=viacheslavo@mellanox.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).