DPDK patches and discussions
 help / color / mirror / Atom feed
From: Andrew Rybchenko <arybchenko@solarflare.com>
To: <dev@dpdk.org>
Cc: Olivier Matz <olivier.matz@6wind.com>
Subject: [dpdk-dev] [RFC v2 04/17] mempool: add op to populate objects using provided memory
Date: Tue, 23 Jan 2018 13:15:59 +0000	[thread overview]
Message-ID: <1516713372-10572-5-git-send-email-arybchenko@solarflare.com> (raw)
In-Reply-To: <1516713372-10572-1-git-send-email-arybchenko@solarflare.com>

The callback allows to customize how objects are stored in the
memory chunk. Default implementation of the callback which simply
puts objects one by one is available.

Suggested-by: Olivier Matz <olivier.matz@6wind.com>
Signed-off-by: Andrew Rybchenko <arybchenko@solarflare.com>
---
 lib/librte_mempool/rte_mempool.c           | 44 +++++++++++-----
 lib/librte_mempool/rte_mempool.h           | 83 ++++++++++++++++++++++++++++++
 lib/librte_mempool/rte_mempool_ops.c       | 18 +++++++
 lib/librte_mempool/rte_mempool_version.map |  1 +
 4 files changed, 133 insertions(+), 13 deletions(-)

diff --git a/lib/librte_mempool/rte_mempool.c b/lib/librte_mempool/rte_mempool.c
index 1f54f95..c5003a9 100644
--- a/lib/librte_mempool/rte_mempool.c
+++ b/lib/librte_mempool/rte_mempool.c
@@ -145,9 +145,6 @@ mempool_add_elem(struct rte_mempool *mp, void *obj, rte_iova_t iova)
 	tlr = __mempool_get_trailer(obj);
 	tlr->cookie = RTE_MEMPOOL_TRAILER_COOKIE;
 #endif
-
-	/* enqueue in ring */
-	rte_mempool_ops_enqueue_bulk(mp, &obj, 1);
 }
 
 /* call obj_cb() for each mempool element */
@@ -396,6 +393,30 @@ rte_mempool_free_memchunks(struct rte_mempool *mp)
 	}
 }
 
+int
+rte_mempool_populate_one_by_one(struct rte_mempool *mp, unsigned int max_objs,
+		void *vaddr, rte_iova_t iova, size_t len,
+		rte_mempool_populate_obj_cb_t *obj_cb)
+{
+	size_t total_elt_sz;
+	size_t off;
+	unsigned int i;
+	void *obj;
+
+	total_elt_sz = mp->header_size + mp->elt_size + mp->trailer_size;
+
+	for (off = 0, i = 0; off + total_elt_sz <= len && i < max_objs; i++) {
+		off += mp->header_size;
+		obj = (char *)vaddr + off;
+		obj_cb(mp, obj,
+		       (iova == RTE_BAD_IOVA) ? RTE_BAD_IOVA : (iova + off));
+		rte_mempool_ops_enqueue_bulk(mp, &obj, 1);
+		off += mp->elt_size + mp->trailer_size;
+	}
+
+	return i;
+}
+
 /* Add objects in the pool, using a physically contiguous memory
  * zone. Return the number of objects added, or a negative value
  * on error.
@@ -466,16 +487,13 @@ rte_mempool_populate_iova(struct rte_mempool *mp, char *vaddr,
 	else
 		off = RTE_PTR_ALIGN_CEIL(vaddr, RTE_CACHE_LINE_SIZE) - vaddr;
 
-	while (off + total_elt_sz <= len && mp->populated_size < mp->size) {
-		off += mp->header_size;
-		if (iova == RTE_BAD_IOVA)
-			mempool_add_elem(mp, (char *)vaddr + off,
-				RTE_BAD_IOVA);
-		else
-			mempool_add_elem(mp, (char *)vaddr + off, iova + off);
-		off += mp->elt_size + mp->trailer_size;
-		i++;
-	}
+	if (off > len)
+		return -EINVAL;
+
+	i = rte_mempool_ops_populate(mp, mp->size - mp->populated_size,
+		(char *)vaddr + off,
+		(iova == RTE_BAD_IOVA) ? RTE_BAD_IOVA : (iova + off),
+		len - off, mempool_add_elem);
 
 	/* not enough room to store one object */
 	if (i == 0)
diff --git a/lib/librte_mempool/rte_mempool.h b/lib/librte_mempool/rte_mempool.h
index be8a371..f6ffab9 100644
--- a/lib/librte_mempool/rte_mempool.h
+++ b/lib/librte_mempool/rte_mempool.h
@@ -461,6 +461,59 @@ ssize_t rte_mempool_calc_mem_size_def(const struct rte_mempool *mp,
 				      uint32_t obj_num, uint32_t pg_shift,
 				      size_t *min_chunk_size, size_t *align);
 
+/**
+ * Function to be called for each populated object.
+ *
+ * @param mp
+ *   A pointer to the mempool structure.
+ * @param vaddr
+ *   Object virtual address.
+ * @param iova
+ *   Input/output virtual addresss of the object or #RTE_BAD_IOVA.
+ */
+typedef void (rte_mempool_populate_obj_cb_t)(struct rte_mempool *mp,
+		void *vaddr, rte_iova_t iova);
+
+/**
+ * Populate memory pool objects using provided memory chunk.
+ *
+ * Populated objects should be enqueued to the pool, e.g. using
+ * rte_mempool_ops_enqueue_bulk().
+ *
+ * If the given IO address is unknown (iova = RTE_BAD_IOVA),
+ * the chunk doesn't need to be physically contiguous (only virtually),
+ * and allocated objects may span two pages.
+ *
+ * @param mp
+ *   A pointer to the mempool structure.
+ * @param max_objs
+ *   Maximum number of objects to be populated.
+ * @param vaddr
+ *   The virtual address of memory that should be used to store objects.
+ * @param iova
+ *   The IO address
+ * @param len
+ *   The length of memory in bytes.
+ * @param obj_cb
+ *   Callback function to be executed for each populated object.
+ * @return
+ *   The number of objects added on success.
+ *   On error, no objects are populated and a negative errno is returned.
+ */
+typedef int (*rte_mempool_populate_t)(struct rte_mempool *mp,
+		unsigned int max_objs,
+		void *vaddr, rte_iova_t iova, size_t len,
+		rte_mempool_populate_obj_cb_t *obj_cb);
+
+/**
+ * Default way to populate memory pool object using provided memory
+ * chunk: just slice objects one by one.
+ */
+int rte_mempool_populate_one_by_one(struct rte_mempool *mp,
+		unsigned int max_objs,
+		void *vaddr, rte_iova_t iova, size_t len,
+		rte_mempool_populate_obj_cb_t *obj_cb);
+
 /** Structure defining mempool operations structure */
 struct rte_mempool_ops {
 	char name[RTE_MEMPOOL_OPS_NAMESIZE]; /**< Name of mempool ops struct. */
@@ -482,6 +535,11 @@ struct rte_mempool_ops {
 	 * store specified number of objects.
 	 */
 	rte_mempool_calc_mem_size_t calc_mem_size;
+	/**
+	 * Optional callback to populate mempool objects using
+	 * provided memory chunk.
+	 */
+	rte_mempool_populate_t populate;
 } __rte_cache_aligned;
 
 #define RTE_MEMPOOL_MAX_OPS_IDX 16  /**< Max registered ops structs */
@@ -654,6 +712,31 @@ ssize_t rte_mempool_ops_calc_mem_size(const struct rte_mempool *mp,
 				      size_t *min_chunk_size, size_t *align);
 
 /**
+ * @internal wrapper for mempool_ops populate callback.
+ *
+ * Populate memory pool objects using provided memory chunk.
+ *
+ * @param mp
+ *   A pointer to the mempool structure.
+ * @param max_objs
+ *   Maximum number of objects to be populated.
+ * @param vaddr
+ *   The virtual address of memory that should be used to store objects.
+ * @param iova
+ *   The IO address
+ * @param len
+ *   The length of memory in bytes.
+ * @param obj_cb
+ *   Callback function to be executed for each populated object.
+ * @return
+ *   The number of objects added on success.
+ *   On error, no objects are populated and a negative errno is returned.
+ */
+int rte_mempool_ops_populate(struct rte_mempool *mp, unsigned int max_objs,
+			     void *vaddr, rte_iova_t iova, size_t len,
+			     rte_mempool_populate_obj_cb_t *obj_cb);
+
+/**
  * @internal wrapper for mempool_ops free callback.
  *
  * @param mp
diff --git a/lib/librte_mempool/rte_mempool_ops.c b/lib/librte_mempool/rte_mempool_ops.c
index d048b37..7c4a22b 100644
--- a/lib/librte_mempool/rte_mempool_ops.c
+++ b/lib/librte_mempool/rte_mempool_ops.c
@@ -89,6 +89,7 @@ rte_mempool_register_ops(const struct rte_mempool_ops *h)
 	ops->get_capabilities = h->get_capabilities;
 	ops->register_memory_area = h->register_memory_area;
 	ops->calc_mem_size = h->calc_mem_size;
+	ops->populate = h->populate;
 
 	rte_spinlock_unlock(&rte_mempool_ops_table.sl);
 
@@ -170,6 +171,23 @@ rte_mempool_ops_calc_mem_size(const struct rte_mempool *mp,
 	return ops->calc_mem_size(mp, obj_num, pg_shift, min_chunk_size, align);
 }
 
+/* wrapper to populate memory pool objects using provided memory chunk */
+int
+rte_mempool_ops_populate(struct rte_mempool *mp, unsigned int max_objs,
+				void *vaddr, rte_iova_t iova, size_t len,
+				rte_mempool_populate_obj_cb_t *obj_cb)
+{
+	struct rte_mempool_ops *ops;
+
+	ops = rte_mempool_get_ops(mp->ops_index);
+
+	if (ops->populate == NULL)
+		return rte_mempool_populate_one_by_one(mp, max_objs, vaddr,
+						       iova, len, obj_cb);
+
+	return ops->populate(mp, max_objs, vaddr, iova, len, obj_cb);
+}
+
 /* sets mempool ops previously registered by rte_mempool_register_ops. */
 int
 rte_mempool_set_ops_byname(struct rte_mempool *mp, const char *name,
diff --git a/lib/librte_mempool/rte_mempool_version.map b/lib/librte_mempool/rte_mempool_version.map
index 9fa7270..00288de 100644
--- a/lib/librte_mempool/rte_mempool_version.map
+++ b/lib/librte_mempool/rte_mempool_version.map
@@ -56,6 +56,7 @@ DPDK_18.05 {
 	global:
 
 	rte_mempool_calc_mem_size_def;
+	rte_mempool_populate_one_by_one;
 
 } DPDK_17.11;
 
-- 
2.7.4

  parent reply	other threads:[~2018-01-23 13:16 UTC|newest]

Thread overview: 197+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-11-24 16:06 [dpdk-dev] [RFC PATCH 0/6] mempool: add bucket mempool driver Andrew Rybchenko
2017-11-24 16:06 ` [dpdk-dev] [RFC PATCH 1/6] mempool: implement abstract mempool info API Andrew Rybchenko
2017-12-14 13:36   ` Olivier MATZ
2018-01-17 15:03     ` Andrew Rybchenko
2017-11-24 16:06 ` [dpdk-dev] [RFC PATCH 2/6] mempool: implement clustered object allocation Andrew Rybchenko
2017-12-14 13:37   ` Olivier MATZ
2018-01-17 15:03     ` Andrew Rybchenko
2018-01-17 15:55       ` santosh
2018-01-17 16:37         ` Andrew Rybchenko
2017-11-24 16:06 ` [dpdk-dev] [RFC PATCH 3/6] mempool/bucket: implement bucket mempool manager Andrew Rybchenko
2017-12-14 13:38   ` Olivier MATZ
2018-01-17 15:06     ` Andrew Rybchenko
2017-11-24 16:06 ` [dpdk-dev] [RFC PATCH 4/6] mempool: add a function to flush default cache Andrew Rybchenko
2017-12-14 13:38   ` Olivier MATZ
2018-01-17 15:07     ` Andrew Rybchenko
2017-11-24 16:06 ` [dpdk-dev] [RFC PATCH 5/6] mempool: support block dequeue operation Andrew Rybchenko
2017-12-14 13:38   ` Olivier MATZ
2017-11-24 16:06 ` [dpdk-dev] [RFC PATCH 6/6] mempool/bucket: implement " Andrew Rybchenko
2017-12-14 13:36 ` [dpdk-dev] [RFC PATCH 0/6] mempool: add bucket mempool driver Olivier MATZ
2018-01-17 15:03   ` Andrew Rybchenko
2018-01-23 13:15 ` [dpdk-dev] [RFC v2 00/17] " Andrew Rybchenko
2018-01-23 13:15   ` [dpdk-dev] [RFC v2 01/17] mempool: fix phys contig check if populate default skipped Andrew Rybchenko
2018-01-31 16:45     ` Olivier Matz
2018-02-01  5:05       ` santosh
2018-02-01  6:54         ` Andrew Rybchenko
2018-02-01  9:09           ` santosh
2018-02-01  9:18             ` Andrew Rybchenko
2018-02-01  9:30               ` santosh
2018-02-01 10:00                 ` Andrew Rybchenko
2018-02-01 10:14                   ` Olivier Matz
2018-02-01 10:33                     ` santosh
2018-02-01 14:02                       ` Andrew Rybchenko
2018-02-01 10:17                   ` santosh
2018-02-01 14:02     ` [dpdk-dev] [PATCH] " Andrew Rybchenko
2018-02-05 23:53       ` [dpdk-dev] [dpdk-stable] " Thomas Monjalon
2018-01-23 13:15   ` [dpdk-dev] [RFC v2 02/17] mempool: add op to calculate memory size to be allocated Andrew Rybchenko
2018-01-31 16:45     ` Olivier Matz
2018-02-01  7:15       ` Andrew Rybchenko
2018-01-23 13:15   ` [dpdk-dev] [RFC v2 03/17] mempool/octeontx: add callback to calculate memory size Andrew Rybchenko
     [not found]     ` <BN3PR07MB2513732462EB5FE5E1B05713E3FA0@BN3PR07MB2513.namprd07.prod.outlook.com>
2018-02-01 10:01       ` santosh
2018-02-01 13:40         ` santosh
2018-03-10 15:49           ` Andrew Rybchenko
2018-03-11  6:31             ` santosh
2018-01-23 13:15   ` Andrew Rybchenko [this message]
2018-01-31 16:45     ` [dpdk-dev] [RFC v2 04/17] mempool: add op to populate objects using provided memory Olivier Matz
2018-02-01  8:51       ` Andrew Rybchenko
2018-01-23 13:16   ` [dpdk-dev] [RFC v2 05/17] mempool/octeontx: implement callback to populate objects Andrew Rybchenko
2018-01-23 13:16   ` [dpdk-dev] [RFC v2 06/17] mempool: remove callback to get capabilities Andrew Rybchenko
2018-01-23 13:16   ` [dpdk-dev] [RFC v2 07/17] mempool: deprecate xmem functions Andrew Rybchenko
2018-01-23 13:16   ` [dpdk-dev] [RFC v2 08/17] mempool/octeontx: prepare to remove register memory area op Andrew Rybchenko
2018-01-23 13:16   ` [dpdk-dev] [RFC v2 09/17] mempool/dpaa: convert to use populate driver op Andrew Rybchenko
2018-01-23 13:16   ` [dpdk-dev] [RFC v2 10/17] mempool: remove callback to register memory area Andrew Rybchenko
2018-01-23 13:16   ` [dpdk-dev] [RFC v2 11/17] mempool: ensure the mempool is initialized before populating Andrew Rybchenko
2018-01-31 16:45     ` Olivier Matz
2018-02-01  8:53       ` Andrew Rybchenko
2018-01-23 13:16   ` [dpdk-dev] [RFC v2 12/17] mempool/bucket: implement bucket mempool manager Andrew Rybchenko
2018-01-23 13:16   ` [dpdk-dev] [RFC v2 13/17] mempool: support flushing the default cache of the mempool Andrew Rybchenko
2018-01-23 13:16   ` [dpdk-dev] [RFC v2 14/17] mempool: implement abstract mempool info API Andrew Rybchenko
2018-01-23 13:16   ` [dpdk-dev] [RFC v2 15/17] mempool: support block dequeue operation Andrew Rybchenko
2018-01-23 13:16   ` [dpdk-dev] [RFC v2 16/17] mempool/bucket: implement " Andrew Rybchenko
2018-01-23 13:16   ` [dpdk-dev] [RFC v2 17/17] mempool/bucket: do not allow one lcore to grab all buckets Andrew Rybchenko
2018-01-31 16:44   ` [dpdk-dev] [RFC v2 00/17] mempool: add bucket mempool driver Olivier Matz
2018-03-10 15:39   ` [dpdk-dev] [PATCH v1 0/9] mempool: prepare to add bucket driver Andrew Rybchenko
2018-03-10 15:39     ` [dpdk-dev] [PATCH v1 1/9] mempool: add op to calculate memory size to be allocated Andrew Rybchenko
2018-03-11 12:51       ` santosh
2018-03-12  6:53         ` Andrew Rybchenko
2018-03-19 17:03       ` Olivier Matz
2018-03-20 10:29         ` Andrew Rybchenko
2018-03-20 14:41         ` Bruce Richardson
2018-03-10 15:39     ` [dpdk-dev] [PATCH v1 2/9] mempool: add op to populate objects using provided memory Andrew Rybchenko
2018-03-19 17:04       ` Olivier Matz
2018-03-21  7:05         ` Andrew Rybchenko
2018-03-10 15:39     ` [dpdk-dev] [PATCH v1 3/9] mempool: remove callback to get capabilities Andrew Rybchenko
2018-03-14 14:40       ` Burakov, Anatoly
2018-03-14 16:12         ` Andrew Rybchenko
2018-03-14 16:53           ` Burakov, Anatoly
2018-03-14 17:24             ` Andrew Rybchenko
2018-03-15  9:48               ` Burakov, Anatoly
2018-03-15 11:49                 ` Andrew Rybchenko
2018-03-15 12:00                   ` Burakov, Anatoly
2018-03-15 12:44                     ` Andrew Rybchenko
2018-03-19 17:05                       ` Olivier Matz
2018-03-19 17:06       ` Olivier Matz
2018-03-10 15:39     ` [dpdk-dev] [PATCH v1 4/9] mempool: deprecate xmem functions Andrew Rybchenko
2018-03-10 15:39     ` [dpdk-dev] [PATCH v1 5/9] mempool/octeontx: prepare to remove register memory area op Andrew Rybchenko
2018-03-10 15:39     ` [dpdk-dev] [PATCH v1 6/9] mempool/dpaa: " Andrew Rybchenko
2018-03-10 15:39     ` [dpdk-dev] [PATCH v1 7/9] mempool: remove callback to register memory area Andrew Rybchenko
2018-03-10 15:39     ` [dpdk-dev] [PATCH v1 8/9] mempool: ensure the mempool is initialized before populating Andrew Rybchenko
2018-03-19 17:06       ` Olivier Matz
2018-03-20 13:32         ` Andrew Rybchenko
2018-03-20 16:57           ` Olivier Matz
2018-03-10 15:39     ` [dpdk-dev] [PATCH v1 9/9] mempool: support flushing the default cache of the mempool Andrew Rybchenko
2018-03-14 15:49     ` [dpdk-dev] [PATCH v1 0/9] mempool: prepare to add bucket driver santosh
2018-03-14 15:57       ` Andrew Rybchenko
2018-03-19 17:03     ` Olivier Matz
2018-03-20 10:09       ` Andrew Rybchenko
2018-03-20 11:04         ` Thomas Monjalon
2018-03-25 16:20   ` [dpdk-dev] [PATCH v2 00/11] " Andrew Rybchenko
2018-03-25 16:20     ` [dpdk-dev] [PATCH v2 01/11] mempool: fix memhdr leak when no objects are populated Andrew Rybchenko
2018-03-25 16:20     ` [dpdk-dev] [PATCH v2 02/11] mempool: rename flag to control IOVA-contiguous objects Andrew Rybchenko
2018-03-25 16:20     ` [dpdk-dev] [PATCH v2 03/11] mempool: ensure the mempool is initialized before populating Andrew Rybchenko
2018-03-25 16:20     ` [dpdk-dev] [PATCH v2 04/11] mempool: add op to calculate memory size to be allocated Andrew Rybchenko
2018-03-25 16:20     ` [dpdk-dev] [PATCH v2 05/11] mempool: add op to populate objects using provided memory Andrew Rybchenko
2018-03-25 16:20     ` [dpdk-dev] [PATCH v2 06/11] mempool: remove callback to get capabilities Andrew Rybchenko
2018-03-25 16:20     ` [dpdk-dev] [PATCH v2 07/11] mempool: deprecate xmem functions Andrew Rybchenko
2018-03-25 16:20     ` [dpdk-dev] [PATCH v2 08/11] mempool/octeontx: prepare to remove register memory area op Andrew Rybchenko
2018-03-25 16:20     ` [dpdk-dev] [PATCH v2 09/11] mempool/dpaa: " Andrew Rybchenko
2018-03-26  7:13       ` Andrew Rybchenko
2018-03-25 16:20     ` [dpdk-dev] [PATCH v2 10/11] mempool: remove callback to register memory area Andrew Rybchenko
2018-03-25 16:20     ` [dpdk-dev] [PATCH v2 11/11] mempool: support flushing the default cache of the mempool Andrew Rybchenko
2018-03-26 16:09   ` [dpdk-dev] [PATCH v3 00/11] mempool: prepare to add bucket driver Andrew Rybchenko
2018-03-26 16:09     ` [dpdk-dev] [PATCH v3 01/11] mempool: fix memhdr leak when no objects are populated Andrew Rybchenko
2018-04-06 15:50       ` Olivier Matz
2018-03-26 16:09     ` [dpdk-dev] [PATCH v3 02/11] mempool: rename flag to control IOVA-contiguous objects Andrew Rybchenko
2018-04-06 15:50       ` Olivier Matz
2018-03-26 16:09     ` [dpdk-dev] [PATCH v3 03/11] mempool: ensure the mempool is initialized before populating Andrew Rybchenko
2018-04-04 15:06       ` santosh
2018-04-06 15:50       ` Olivier Matz
2018-03-26 16:09     ` [dpdk-dev] [PATCH v3 04/11] mempool: add op to calculate memory size to be allocated Andrew Rybchenko
2018-04-04 15:08       ` santosh
2018-04-06 15:51       ` Olivier Matz
2018-04-12 15:22       ` Burakov, Anatoly
2018-03-26 16:09     ` [dpdk-dev] [PATCH v3 05/11] mempool: add op to populate objects using provided memory Andrew Rybchenko
2018-04-04 15:09       ` santosh
2018-04-06 15:51       ` Olivier Matz
2018-03-26 16:09     ` [dpdk-dev] [PATCH v3 06/11] mempool: remove callback to get capabilities Andrew Rybchenko
2018-04-04 15:10       ` santosh
2018-04-06 15:51       ` Olivier Matz
2018-03-26 16:09     ` [dpdk-dev] [PATCH v3 07/11] mempool: deprecate xmem functions Andrew Rybchenko
2018-04-06 15:52       ` Olivier Matz
2018-03-26 16:09     ` [dpdk-dev] [PATCH v3 08/11] mempool/octeontx: prepare to remove register memory area op Andrew Rybchenko
2018-04-04 15:12       ` santosh
2018-03-26 16:09     ` [dpdk-dev] [PATCH v3 09/11] mempool/dpaa: " Andrew Rybchenko
2018-04-05  8:25       ` Hemant Agrawal
2018-03-26 16:09     ` [dpdk-dev] [PATCH v3 10/11] mempool: remove callback to register memory area Andrew Rybchenko
2018-04-04 15:13       ` santosh
2018-04-06 15:52       ` Olivier Matz
2018-03-26 16:09     ` [dpdk-dev] [PATCH v3 11/11] mempool: support flushing the default cache of the mempool Andrew Rybchenko
2018-04-06 15:53       ` Olivier Matz
2018-03-26 16:12   ` [dpdk-dev] [PATCH v1 0/6] mempool: add bucket driver Andrew Rybchenko
2018-03-26 16:12     ` [dpdk-dev] [PATCH v1 1/6] mempool/bucket: implement bucket mempool manager Andrew Rybchenko
2018-03-26 16:12     ` [dpdk-dev] [PATCH v1 2/6] mempool: implement abstract mempool info API Andrew Rybchenko
2018-04-19 16:42       ` Olivier Matz
2018-04-25  9:57         ` Andrew Rybchenko
2018-04-25 10:26           ` Olivier Matz
2018-03-26 16:12     ` [dpdk-dev] [PATCH v1 3/6] mempool: support block dequeue operation Andrew Rybchenko
2018-04-19 16:41       ` Olivier Matz
2018-04-25  9:49         ` Andrew Rybchenko
2018-03-26 16:12     ` [dpdk-dev] [PATCH v1 4/6] mempool/bucket: implement " Andrew Rybchenko
2018-03-26 16:12     ` [dpdk-dev] [PATCH v1 5/6] mempool/bucket: do not allow one lcore to grab all buckets Andrew Rybchenko
2018-03-26 16:12     ` [dpdk-dev] [PATCH v1 6/6] doc: advertise bucket mempool driver Andrew Rybchenko
2018-04-19 16:43       ` Olivier Matz
2018-04-19 16:41     ` [dpdk-dev] [PATCH v1 0/6] mempool: add bucket driver Olivier Matz
2018-04-16 13:24 ` [dpdk-dev] [PATCH v4 00/11] mempool: prepare to " Andrew Rybchenko
2018-04-16 13:24   ` [dpdk-dev] [PATCH v4 01/11] mempool: fix memhdr leak when no objects are populated Andrew Rybchenko
2018-04-16 13:24   ` [dpdk-dev] [PATCH v4 02/11] mempool: rename flag to control IOVA-contiguous objects Andrew Rybchenko
2018-04-16 13:24   ` [dpdk-dev] [PATCH v4 03/11] mempool: ensure the mempool is initialized before populating Andrew Rybchenko
2018-04-16 13:24   ` [dpdk-dev] [PATCH v4 04/11] mempool: add op to calculate memory size to be allocated Andrew Rybchenko
2018-04-16 15:33     ` Olivier Matz
2018-04-16 15:41       ` Andrew Rybchenko
2018-04-17 10:23     ` Burakov, Anatoly
2018-04-16 13:24   ` [dpdk-dev] [PATCH v4 05/11] mempool: add op to populate objects using provided memory Andrew Rybchenko
2018-04-16 13:24   ` [dpdk-dev] [PATCH v4 06/11] mempool: remove callback to get capabilities Andrew Rybchenko
2018-04-16 13:24   ` [dpdk-dev] [PATCH v4 07/11] mempool: deprecate xmem functions Andrew Rybchenko
2018-04-16 13:24   ` [dpdk-dev] [PATCH v4 08/11] mempool/octeontx: prepare to remove register memory area op Andrew Rybchenko
2018-04-16 13:24   ` [dpdk-dev] [PATCH v4 09/11] mempool/dpaa: " Andrew Rybchenko
2018-04-16 13:24   ` [dpdk-dev] [PATCH v4 10/11] mempool: remove callback to register memory area Andrew Rybchenko
2018-04-16 13:24   ` [dpdk-dev] [PATCH v4 11/11] mempool: support flushing the default cache of the mempool Andrew Rybchenko
2018-04-24  0:20   ` [dpdk-dev] [PATCH v4 00/11] mempool: prepare to add bucket driver Thomas Monjalon
2018-04-16 13:33 ` [dpdk-dev] [PATCH v2 0/6] mempool: " Andrew Rybchenko
2018-04-16 13:33   ` [dpdk-dev] [PATCH v2 1/6] mempool/bucket: implement bucket mempool manager Andrew Rybchenko
2018-04-16 13:33   ` [dpdk-dev] [PATCH v2 2/6] mempool: implement abstract mempool info API Andrew Rybchenko
2018-04-25  8:44     ` Olivier Matz
2018-04-16 13:33   ` [dpdk-dev] [PATCH v2 3/6] mempool: support block dequeue operation Andrew Rybchenko
2018-04-25  8:45     ` Olivier Matz
2018-04-16 13:33   ` [dpdk-dev] [PATCH v2 4/6] mempool/bucket: implement " Andrew Rybchenko
2018-04-16 13:33   ` [dpdk-dev] [PATCH v2 5/6] mempool/bucket: do not allow one lcore to grab all buckets Andrew Rybchenko
2018-04-16 13:33   ` [dpdk-dev] [PATCH v2 6/6] doc: advertise bucket mempool driver Andrew Rybchenko
2018-04-24 23:00   ` [dpdk-dev] [PATCH v2 0/6] mempool: add bucket driver Thomas Monjalon
2018-04-25  8:43     ` Olivier Matz
2018-04-25 16:32 ` [dpdk-dev] [PATCH v3 " Andrew Rybchenko
2018-04-25 16:32   ` [dpdk-dev] [PATCH v3 1/6] mempool/bucket: implement bucket mempool manager Andrew Rybchenko
2018-04-25 16:32   ` [dpdk-dev] [PATCH v3 2/6] mempool: implement abstract mempool info API Andrew Rybchenko
2018-04-25 16:32   ` [dpdk-dev] [PATCH v3 3/6] mempool: support block dequeue operation Andrew Rybchenko
2018-04-25 16:32   ` [dpdk-dev] [PATCH v3 4/6] mempool/bucket: implement " Andrew Rybchenko
2018-04-25 16:32   ` [dpdk-dev] [PATCH v3 5/6] mempool/bucket: do not allow one lcore to grab all buckets Andrew Rybchenko
2018-04-25 16:32   ` [dpdk-dev] [PATCH v3 6/6] doc: advertise bucket mempool driver Andrew Rybchenko
2018-04-25 21:56     ` Thomas Monjalon
2018-04-25 22:04       ` Thomas Monjalon
2018-04-26  9:50         ` Andrew Rybchenko
2018-04-26 10:59 ` [dpdk-dev] [PATCH v4 0/5] mempool: add bucket driver Andrew Rybchenko
2018-04-26 10:59   ` [dpdk-dev] [PATCH v4 1/5] mempool/bucket: implement bucket mempool manager Andrew Rybchenko
2018-04-26 10:59   ` [dpdk-dev] [PATCH v4 2/5] mempool: implement abstract mempool info API Andrew Rybchenko
2018-04-26 10:59   ` [dpdk-dev] [PATCH v4 3/5] mempool: support block dequeue operation Andrew Rybchenko
2018-04-26 10:59   ` [dpdk-dev] [PATCH v4 4/5] mempool/bucket: implement " Andrew Rybchenko
2018-04-26 10:59   ` [dpdk-dev] [PATCH v4 5/5] mempool/bucket: do not allow one lcore to grab all buckets Andrew Rybchenko
2018-04-26 21:35   ` [dpdk-dev] [PATCH v4 0/5] mempool: add bucket driver 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=1516713372-10572-5-git-send-email-arybchenko@solarflare.com \
    --to=arybchenko@solarflare.com \
    --cc=dev@dpdk.org \
    --cc=olivier.matz@6wind.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).