From: Olivier Matz <olivier.matz@6wind.com>
To: Shahaf Shuler <shahafs@mellanox.com>
Cc: Thomas Monjalon <thomas@monjalon.net>, "dev@dpdk.org" <dev@dpdk.org>
Subject: Re: [dpdk-dev] [PATCH v2] mbuf: extend pktmbuf pool private structure
Date: Thu, 21 Nov 2019 15:31:54 +0100 [thread overview]
Message-ID: <20191121143154.GE14387@glumotte.dev.6wind.com> (raw)
In-Reply-To: <20191121122810.147351-1-shahafs@mellanox.com>
On Thu, Nov 21, 2019 at 12:28:18PM +0000, Shahaf Shuler wrote:
> With the API and ABI freeze ahead, it will be good to reserve
> some bits on the private structure for future use.
>
> Otherwise we will potentially need to maintain two different
> private structure during 2020 period.
>
> There is already one use case for those reserved bits[1]
>
> The reserved field should be set to 0 by the user.
>
> [1]
> https://patches.dpdk.org/patch/63077/
>
> Signed-off-by: Shahaf Shuler <shahafs@mellanox.com>
> ---
> On v2:
> - rename new field to flags
> - add extra validation in code that flags = 0
>
> ---
> lib/librte_mbuf/rte_mbuf.c | 10 +++++++---
> lib/librte_mbuf/rte_mbuf.h | 1 +
> 2 files changed, 8 insertions(+), 3 deletions(-)
>
> diff --git a/lib/librte_mbuf/rte_mbuf.c b/lib/librte_mbuf/rte_mbuf.c
> index 35df1c4c38..bd64c55fe6 100644
> --- a/lib/librte_mbuf/rte_mbuf.c
> +++ b/lib/librte_mbuf/rte_mbuf.c
> @@ -50,6 +50,7 @@ rte_pktmbuf_pool_init(struct rte_mempool *mp, void *opaque_arg)
> user_mbp_priv = opaque_arg;
> if (user_mbp_priv == NULL) {
> default_mbp_priv.mbuf_priv_size = 0;
> + default_mbp_priv.flags = 0;
> if (mp->elt_size > sizeof(struct rte_mbuf))
> roomsz = mp->elt_size - sizeof(struct rte_mbuf);
> else
> @@ -61,6 +62,7 @@ rte_pktmbuf_pool_init(struct rte_mempool *mp, void *opaque_arg)
> RTE_ASSERT(mp->elt_size >= sizeof(struct rte_mbuf) +
> user_mbp_priv->mbuf_data_room_size +
> user_mbp_priv->mbuf_priv_size);
> + RTE_ASSERT(user_mbp_priv->flags == 0);
>
> mbp_priv = rte_mempool_get_priv(mp);
> memcpy(mbp_priv, user_mbp_priv, sizeof(*mbp_priv));
> @@ -113,7 +115,11 @@ rte_pktmbuf_pool_create_by_ops(const char *name, unsigned int n,
> int socket_id, const char *ops_name)
> {
> struct rte_mempool *mp;
> - struct rte_pktmbuf_pool_private mbp_priv;
> + struct rte_pktmbuf_pool_private mbp_priv = {
> + .mbuf_data_room_size = data_room_size,
> + .mbuf_priv_size = priv_size,
> + .flags = 0,
> + };
> const char *mp_ops_name = ops_name;
> unsigned elt_size;
> int ret;
> @@ -126,8 +132,6 @@ rte_pktmbuf_pool_create_by_ops(const char *name, unsigned int n,
> }
> elt_size = sizeof(struct rte_mbuf) + (unsigned)priv_size +
> (unsigned)data_room_size;
> - mbp_priv.mbuf_data_room_size = data_room_size;
> - mbp_priv.mbuf_priv_size = priv_size;
>
> mp = rte_mempool_create_empty(name, n, elt_size, cache_size,
> sizeof(struct rte_pktmbuf_pool_private), socket_id, 0);
> diff --git a/lib/librte_mbuf/rte_mbuf.h b/lib/librte_mbuf/rte_mbuf.h
> index 92d81972ab..219b110b76 100644
> --- a/lib/librte_mbuf/rte_mbuf.h
> +++ b/lib/librte_mbuf/rte_mbuf.h
> @@ -303,6 +303,7 @@ rte_mbuf_to_priv(struct rte_mbuf *m)
> struct rte_pktmbuf_pool_private {
> uint16_t mbuf_data_room_size; /**< Size of data space in each mbuf. */
> uint16_t mbuf_priv_size; /**< Size of private area in each mbuf. */
> + uint32_t flags; /**< reserved for future use. */
> };
>
> #ifdef RTE_LIBRTE_MBUF_DEBUG
> --
> 2.12.0
>
Sorry I missed the last version in my previous mail.
I think in examples/ntb/ntb_fwd.c:ntb_mbuf_pool_create() should be
updated too. To me, it looks slightly better to not name "flags"
explicitly (ie. use a memset instead), to avoid doing the same
change again in the future.
Thanks,
Olivier
next prev parent reply other threads:[~2019-11-21 14:31 UTC|newest]
Thread overview: 22+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-11-18 10:02 [dpdk-dev] [PATCH] " Shahaf Shuler
2019-11-18 16:12 ` Stephen Hemminger
2019-11-19 6:35 ` Shahaf Shuler
2019-11-19 9:32 ` Thomas Monjalon
2019-11-19 15:23 ` Shahaf Shuler
2019-11-19 16:25 ` Stephen Hemminger
2019-11-19 22:30 ` Thomas Monjalon
2019-11-19 23:50 ` Stephen Hemminger
2019-11-20 7:01 ` Shahaf Shuler
2019-11-20 15:56 ` Stephen Hemminger
2019-11-21 14:15 ` Olivier Matz
2019-11-21 12:28 ` [dpdk-dev] [PATCH v2] " Shahaf Shuler
2019-11-21 14:31 ` Olivier Matz [this message]
2019-11-24 5:52 ` Shahaf Shuler
2019-11-24 5:53 ` [dpdk-dev] [PATCH v3] " Shahaf Shuler
2019-11-24 17:50 ` Stephen Hemminger
2019-11-24 18:05 ` Thomas Monjalon
2019-11-24 18:10 ` Shahaf Shuler
2019-11-25 8:12 ` Olivier Matz
2019-11-25 10:21 ` [dpdk-dev] [PATCH v4] " Shahaf Shuler
2019-11-25 10:27 ` Olivier Matz
2019-11-25 21:42 ` Thomas Monjalon
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=20191121143154.GE14387@glumotte.dev.6wind.com \
--to=olivier.matz@6wind.com \
--cc=dev@dpdk.org \
--cc=shahafs@mellanox.com \
--cc=thomas@monjalon.net \
/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).