From mboxrd@z Thu Jan 1 00:00:00 1970 From: Qi Zhang Subject: [RFC 2/7] lib/mbuf: enable parse flags when create mempool Date: Tue, 27 Feb 2018 17:33:01 +0800 Message-ID: <20180227093306.23854-3-qi.z.zhang@intel.com> References: <20180227093306.23854-1-qi.z.zhang@intel.com> Cc: magnus.karlsson@intei.com, bjorn.topel@intel.com, Qi Zhang To: dev@dpdk.org Return-path: Received: from mga04.intel.com (mga04.intel.com [192.55.52.120]) by dpdk.org (Postfix) with ESMTP id A90C84CA2 for ; Tue, 27 Feb 2018 10:33:11 +0100 (CET) In-Reply-To: <20180227093306.23854-1-qi.z.zhang@intel.com> List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" This give the option that applicaiton can configure each memory chunk's size precisely. (by MEMPOOL_F_NO_SPREAD). Signed-off-by: Qi Zhang --- lib/librte_mbuf/rte_mbuf.c | 15 ++++++++++++--- lib/librte_mbuf/rte_mbuf.h | 8 +++++++- 2 files changed, 19 insertions(+), 4 deletions(-) diff --git a/lib/librte_mbuf/rte_mbuf.c b/lib/librte_mbuf/rte_mbuf.c index 091d388d3..5fd91c87c 100644 --- a/lib/librte_mbuf/rte_mbuf.c +++ b/lib/librte_mbuf/rte_mbuf.c @@ -125,7 +125,7 @@ rte_pktmbuf_init(struct rte_mempool *mp, struct rte_mempool * __rte_experimental rte_pktmbuf_pool_create_by_ops(const char *name, unsigned int n, unsigned int cache_size, uint16_t priv_size, uint16_t data_room_size, - int socket_id, const char *ops_name) + unsigned int flags, int socket_id, const char *ops_name) { struct rte_mempool *mp; struct rte_pktmbuf_pool_private mbp_priv; @@ -145,7 +145,7 @@ rte_pktmbuf_pool_create_by_ops(const char *name, unsigned int n, 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); + sizeof(struct rte_pktmbuf_pool_private), socket_id, flags); if (mp == NULL) return NULL; @@ -179,9 +179,18 @@ rte_pktmbuf_pool_create(const char *name, unsigned int n, int socket_id) { return rte_pktmbuf_pool_create_by_ops(name, n, cache_size, priv_size, - data_room_size, socket_id, NULL); + data_room_size, 0, socket_id, NULL); } +/* helper to create a mbuf pool with NO_SPREAD */ +struct rte_mempool * +rte_pktmbuf_pool_create_with_flags(const char *name, unsigned int n, + unsigned int cache_size, uint16_t priv_size, uint16_t data_room_size, + unsigned int flags, int socket_id) +{ + return rte_pktmbuf_pool_create_by_ops(name, n, cache_size, priv_size, + data_room_size, flags, socket_id, NULL); +} /* do some sanity checks on a mbuf: panic if it fails */ void rte_mbuf_sanity_check(const struct rte_mbuf *m, int is_header) diff --git a/lib/librte_mbuf/rte_mbuf.h b/lib/librte_mbuf/rte_mbuf.h index 62740254d..6f6af42a8 100644 --- a/lib/librte_mbuf/rte_mbuf.h +++ b/lib/librte_mbuf/rte_mbuf.h @@ -1079,6 +1079,12 @@ rte_pktmbuf_pool_create(const char *name, unsigned n, unsigned cache_size, uint16_t priv_size, uint16_t data_room_size, int socket_id); +struct rte_mempool * +rte_pktmbuf_pool_create_with_flags(const char *name, unsigned int n, + unsigned cache_size, uint16_t priv_size, uint16_t data_room_size, + unsigned flags, int socket_id); + + /** * Create a mbuf pool with a given mempool ops name * @@ -1119,7 +1125,7 @@ rte_pktmbuf_pool_create(const char *name, unsigned n, struct rte_mempool * __rte_experimental rte_pktmbuf_pool_create_by_ops(const char *name, unsigned int n, unsigned int cache_size, uint16_t priv_size, uint16_t data_room_size, - int socket_id, const char *ops_name); + unsigned int flags, int socket_id, const char *ops_name); /** * Get the data room size of mbufs stored in a pktmbuf_pool -- 2.13.6