mempool: allocate in several memory chunks by default
authorOlivier Matz <olivier.matz@6wind.com>
Wed, 18 May 2016 11:04:41 +0000 (13:04 +0200)
committerThomas Monjalon <thomas.monjalon@6wind.com>
Thu, 19 May 2016 12:40:13 +0000 (14:40 +0200)
commitd1d914ebbc2514f334a3ed24057e63c8bb76363d
treefd8224029abeccec4a6578d1231aa086183adc56
parentdf25b24bde5b7c5d3a0693cbd43d09f8855ea503
mempool: allocate in several memory chunks by default

Introduce rte_mempool_populate_default() which allocates
mempool objects in several memzones.

The mempool header is now always allocated in a specific memzone
(not with its objects). Thanks to this modification, we can remove
many specific behavior that was required when hugepages are not
enabled in case we are using rte_mempool_xmem_create().

This change requires to update how kni and mellanox drivers lookup for
mbuf memory. For now, this will only work if there is only one memory
chunk (like today), but we could make use of rte_mempool_mem_iter() to
support more memory chunks.

We can also remove RTE_MEMPOOL_OBJ_NAME that is not required anymore for
the lookup, as memory chunks are referenced by the mempool.

Note that rte_mempool_create() is still broken (it was the case before)
when there is no hugepages support (rte_mempool_create_xmem() has to be
used). This is fixed in next commit.

Signed-off-by: Olivier Matz <olivier.matz@6wind.com>
drivers/net/mlx4/mlx4.c
drivers/net/mlx5/mlx5_rxtx.c
drivers/net/mlx5/mlx5_rxtx.h
lib/librte_kni/rte_kni.c
lib/librte_mempool/rte_dom0_mempool.c
lib/librte_mempool/rte_mempool.c
lib/librte_mempool/rte_mempool.h