summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorShahaf Shuler <shahafs@mellanox.com>2019-11-25 10:21:32 +0000
committerThomas Monjalon <thomas@monjalon.net>2019-11-25 22:44:46 +0100
commit39a19ae03d8fe6210f3e7919b29378bd3223621c (patch)
tree2dd26333c55d6443431d3071f5f62b2b657437b0
parent3eb485c64444b01f79c67f9a591df916056633dd (diff)
downloaddpdk-39a19ae03d8fe6210f3e7919b29378bd3223621c.zip
dpdk-39a19ae03d8fe6210f3e7919b29378bd3223621c.tar.gz
dpdk-39a19ae03d8fe6210f3e7919b29378bd3223621c.tar.xz
mbuf: extend mbuf pool private structure
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> Acked-by: Olivier Matz <olivier.matz@6wind.com>
-rw-r--r--doc/guides/rel_notes/release_19_11.rst7
-rw-r--r--examples/ntb/ntb_fwd.c1
-rw-r--r--lib/librte_mbuf/rte_mbuf.c4
-rw-r--r--lib/librte_mbuf/rte_mbuf.h1
4 files changed, 12 insertions, 1 deletions
diff --git a/doc/guides/rel_notes/release_19_11.rst b/doc/guides/rel_notes/release_19_11.rst
index 48c80e5..49dcac3 100644
--- a/doc/guides/rel_notes/release_19_11.rst
+++ b/doc/guides/rel_notes/release_19_11.rst
@@ -65,6 +65,13 @@ New Features
The lock-free stack implementation is enabled for aarch64 platforms.
+* **Extended pktmbuf mempool private structure.**
+
+ rte_pktmbuf_pool_private structure was extended to include flags field
+ for future compatibility.
+ As per 19.11 release this field is reserved and should be set to 0
+ by the user.
+
* **Changed mempool allocation behaviour.**
Objects are no longer across pages by default.
diff --git a/examples/ntb/ntb_fwd.c b/examples/ntb/ntb_fwd.c
index edce77e..c914256 100644
--- a/examples/ntb/ntb_fwd.c
+++ b/examples/ntb/ntb_fwd.c
@@ -1256,6 +1256,7 @@ ntb_mbuf_pool_create(uint16_t mbuf_seg_size, uint32_t nb_mbuf,
if (mp == NULL)
return NULL;
+ memset(&mbp_priv, 0, sizeof(mbp_priv));
mbp_priv.mbuf_data_room_size = mbuf_seg_size;
mbp_priv.mbuf_priv_size = 0;
rte_pktmbuf_pool_init(mp, &mbp_priv);
diff --git a/lib/librte_mbuf/rte_mbuf.c b/lib/librte_mbuf/rte_mbuf.c
index 35df1c4..8fa7f49 100644
--- a/lib/librte_mbuf/rte_mbuf.c
+++ b/lib/librte_mbuf/rte_mbuf.c
@@ -49,7 +49,7 @@ rte_pktmbuf_pool_init(struct rte_mempool *mp, void *opaque_arg)
/* if no structure is provided, assume no mbuf private area */
user_mbp_priv = opaque_arg;
if (user_mbp_priv == NULL) {
- default_mbp_priv.mbuf_priv_size = 0;
+ memset(&default_mbp_priv, 0, sizeof(default_mbp_priv));
if (mp->elt_size > sizeof(struct rte_mbuf))
roomsz = mp->elt_size - sizeof(struct rte_mbuf);
else
@@ -61,6 +61,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));
@@ -126,6 +127,7 @@ 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;
+ memset(&mbp_priv, 0, sizeof(mbp_priv));
mbp_priv.mbuf_data_room_size = data_room_size;
mbp_priv.mbuf_priv_size = priv_size;
diff --git a/lib/librte_mbuf/rte_mbuf.h b/lib/librte_mbuf/rte_mbuf.h
index 92d8197..219b110 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