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 <shah...@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

Reply via email to