diff options
author | Matias Elo <matias.elo@nokia.com> | 2018-11-27 10:22:45 +0200 |
---|---|---|
committer | Maxim Uvarov <maxim.uvarov@linaro.org> | 2018-11-30 14:17:20 +0300 |
commit | 33f6c963c4c43b6ed32ac2f9282b560f6016b682 (patch) | |
tree | eb74fbd3c7af4df5221ab41baa71bc8615721e40 /platform/linux-generic/odp_pool.c | |
parent | b498032d6f1388cf87f415367780a2dc54342d85 (diff) |
linux-gen: pool: reduce buffer memory usage
Calculate memory block size using pool type specific header.
Signed-off-by: Matias Elo <matias.elo@nokia.com>
Reviewed-by: Bill Fischofer <bill.fischofer@linaro.org>
Signed-off-by: Maxim Uvarov <maxim.uvarov@linaro.org>
Diffstat (limited to 'platform/linux-generic/odp_pool.c')
-rw-r--r-- | platform/linux-generic/odp_pool.c | 16 |
1 files changed, 11 insertions, 5 deletions
diff --git a/platform/linux-generic/odp_pool.c b/platform/linux-generic/odp_pool.c index 2262f3558..2f8110ead 100644 --- a/platform/linux-generic/odp_pool.c +++ b/platform/linux-generic/odp_pool.c @@ -23,6 +23,7 @@ #include <odp_global_data.h> #include <odp_libconfig_internal.h> #include <odp_shm_internal.h> +#include <odp_timer_internal.h> #include <string.h> #include <stdio.h> @@ -479,11 +480,16 @@ static odp_pool_t pool_create(const char *name, odp_pool_param_t *params, pool->params = *params; - hdr_size = sizeof(odp_packet_hdr_t); - hdr_size = ROUNDUP_CACHE_LINE(hdr_size); - - block_size = ROUNDUP_CACHE_LINE(hdr_size + align + headroom + seg_len + - tailroom); + if (params->type == ODP_POOL_PACKET) { + hdr_size = ROUNDUP_CACHE_LINE(sizeof(odp_packet_hdr_t)); + block_size = ROUNDUP_CACHE_LINE(hdr_size + align + headroom + + seg_len + tailroom); + } else { + hdr_size = (params->type == ODP_POOL_BUFFER) ? + ROUNDUP_CACHE_LINE(sizeof(odp_buffer_hdr_t)) : + ROUNDUP_CACHE_LINE(sizeof(odp_timeout_hdr_t)); + block_size = ROUNDUP_CACHE_LINE(hdr_size + align + seg_len); + } /* Calculate extra space required for storing DPDK objects and mbuf * headers. NOP if zero-copy is disabled. */ |