aboutsummaryrefslogtreecommitdiff
path: root/platform/linux-generic/odp_pool.c
diff options
context:
space:
mode:
authorMatias Elo <matias.elo@nokia.com>2019-08-09 11:48:05 +0300
committerMatias Elo <matias.elo@nokia.com>2019-08-16 12:58:25 +0300
commitf56bfbfbc5660de3b0c31d31ab5fc907c63e7649 (patch)
tree48ad2373c888f09e7b0d6c2b7d0a78118f60fb15 /platform/linux-generic/odp_pool.c
parentd36f4571f48632f377b9b58f2efd3e0553f0d002 (diff)
linux-gen: dpdk: remove unnecessary zero-copy block size round up
The blocks size is already rounded up by rte_mempool_calc_obj_size(). Signed-off-by: Matias Elo <matias.elo@nokia.com> Reviewed-by: Petri Savolainen <petri.savolainen@nokia.com>
Diffstat (limited to 'platform/linux-generic/odp_pool.c')
-rw-r--r--platform/linux-generic/odp_pool.c36
1 files changed, 18 insertions, 18 deletions
diff --git a/platform/linux-generic/odp_pool.c b/platform/linux-generic/odp_pool.c
index 6fc2e0d91..f021d903d 100644
--- a/platform/linux-generic/odp_pool.c
+++ b/platform/linux-generic/odp_pool.c
@@ -560,11 +560,27 @@ static odp_pool_t pool_create(const char *name, odp_pool_param_t *params,
strcpy(&uarea_name[name_len], postfix);
pool->params = *params;
+ pool->block_offset = 0;
if (params->type == ODP_POOL_PACKET) {
+ uint32_t dpdk_obj_size;
+
hdr_size = ROUNDUP_CACHE_LINE(sizeof(odp_packet_hdr_t));
- block_size = ROUNDUP_CACHE_LINE(hdr_size + align + headroom +
- seg_len + tailroom);
+ block_size = hdr_size + align + headroom + seg_len + tailroom;
+ /* Calculate extra space required for storing DPDK objects and
+ * mbuf headers. NOP if no DPDK pktio used or zero-copy mode is
+ * disabled. */
+ dpdk_obj_size = _odp_dpdk_pool_obj_size(pool, block_size);
+ if (!dpdk_obj_size) {
+ ODP_ERR("Calculating DPDK mempool obj size failed\n");
+ return ODP_POOL_INVALID;
+ }
+ if (dpdk_obj_size != block_size) {
+ shmflags |= ODP_SHM_HP;
+ block_size = dpdk_obj_size;
+ } else {
+ block_size = ROUNDUP_CACHE_LINE(block_size);
+ }
} else {
/* Header size is rounded up to cache line size, so the
* following data can be cache line aligned without extra
@@ -579,22 +595,6 @@ static odp_pool_t pool_create(const char *name, odp_pool_param_t *params,
block_size = ROUNDUP_CACHE_LINE(hdr_size + align_pad + seg_len);
}
- /* Calculate extra space required for storing DPDK objects and mbuf
- * headers. NOP if zero-copy is disabled. */
- pool->block_offset = 0;
- if (params->type == ODP_POOL_PACKET) {
- uint32_t dpdk_obj_size;
-
- dpdk_obj_size = _odp_dpdk_pool_obj_size(pool, block_size);
- if (!dpdk_obj_size) {
- ODP_ERR("Calculating DPDK mempool obj size failed\n");
- return ODP_POOL_INVALID;
- }
- if (dpdk_obj_size != block_size)
- shmflags |= ODP_SHM_HP;
- block_size = dpdk_obj_size;
- }
-
/* Allocate extra memory for skipping packet buffers which cross huge
* page boundaries. */
if (params->type == ODP_POOL_PACKET) {