aboutsummaryrefslogtreecommitdiff
path: root/platform/linux-generic/odp_pool.c
diff options
context:
space:
mode:
authorMatias Elo <matias.elo@nokia.com>2018-11-27 10:22:45 +0200
committerMaxim Uvarov <maxim.uvarov@linaro.org>2018-11-30 14:17:20 +0300
commit33f6c963c4c43b6ed32ac2f9282b560f6016b682 (patch)
treeeb74fbd3c7af4df5221ab41baa71bc8615721e40 /platform/linux-generic/odp_pool.c
parentb498032d6f1388cf87f415367780a2dc54342d85 (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.c16
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. */