aboutsummaryrefslogtreecommitdiff
path: root/platform/linux-dpdk/odp_pool.c
diff options
context:
space:
mode:
authorMatias Elo <matias.elo@nokia.com>2024-06-05 13:51:39 +0300
committerGitHub <noreply@github.com>2024-06-05 13:51:39 +0300
commit616034b9c9c789923f7ebe7f1c6d014c4ce8a5d2 (patch)
treedd1b579c93404d2d98b78944bbdf8313ec499bee /platform/linux-dpdk/odp_pool.c
parent8063101c4fac56e16c5a2bb9843f2fd9c5acbfd7 (diff)
parent87913e636da621d47a8d3bc91fbe131abc09c294 (diff)
Merge ODP linux-generic v1.45.0.0 into linux-dpdk.
Diffstat (limited to 'platform/linux-dpdk/odp_pool.c')
-rw-r--r--platform/linux-dpdk/odp_pool.c36
1 files changed, 17 insertions, 19 deletions
diff --git a/platform/linux-dpdk/odp_pool.c b/platform/linux-dpdk/odp_pool.c
index dfd14a978..8b15518c9 100644
--- a/platform/linux-dpdk/odp_pool.c
+++ b/platform/linux-dpdk/odp_pool.c
@@ -1,8 +1,6 @@
-/* Copyright (c) 2013-2018, Linaro Limited
- * Copyright (c) 2019-2023, Nokia
- * All rights reserved.
- *
- * SPDX-License-Identifier: BSD-3-Clause
+/* SPDX-License-Identifier: BSD-3-Clause
+ * Copyright (c) 2013-2018 Linaro Limited
+ * Copyright (c) 2019-2023 Nokia
*/
#include <odp/api/align.h>
@@ -24,6 +22,7 @@
#include <odp_macros_internal.h>
#include <odp_packet_internal.h>
#include <odp_pool_internal.h>
+#include <odp_string_internal.h>
#include <odp_timer_internal.h>
#include <rte_config.h>
@@ -57,8 +56,9 @@
/* Pool name format */
#define POOL_NAME_FORMAT "%" PRIu64 "-%d-%s"
-/* Define a practical limit for contiguous memory allocations */
-#define MAX_SIZE (CONFIG_PACKET_SEG_SIZE - CONFIG_BUFFER_ALIGN_MIN)
+/* Default alignment for buffers */
+#define BUFFER_ALIGN_DEFAULT ODP_CACHE_LINE_SIZE
+ODP_STATIC_ASSERT(_ODP_CHECK_IS_POWER2(BUFFER_ALIGN_DEFAULT), "Buffer align must be power of two");
/* Maximum packet user area size */
#define MAX_UAREA_SIZE 2048
@@ -263,7 +263,8 @@ int odp_pool_capability(odp_pool_capability_t *capa)
/* Buffer pools */
capa->buf.max_pools = max_pools;
capa->buf.max_align = CONFIG_BUFFER_ALIGN_MAX;
- capa->buf.max_size = MAX_SIZE;
+ capa->buf.max_size = _ODP_ROUNDDOWN_POWER2(CONFIG_PACKET_SEG_SIZE, BUFFER_ALIGN_DEFAULT) -
+ _ODP_EV_ENDMARK_SIZE;
capa->buf.max_num = CONFIG_POOL_MAX_NUM;
capa->buf.max_uarea_size = MAX_UAREA_SIZE;
capa->buf.uarea_persistence = true;
@@ -274,8 +275,8 @@ int odp_pool_capability(odp_pool_capability_t *capa)
/* Packet pools */
capa->pkt.max_align = CONFIG_BUFFER_ALIGN_MIN;
capa->pkt.max_pools = max_pools;
- capa->pkt.max_len = CONFIG_PACKET_MAX_SEG_LEN;
- capa->pkt.max_num = _odp_pool_glb->config.pkt_max_num;
+ capa->pkt.max_len = CONFIG_PACKET_MAX_SEG_LEN - _ODP_EV_ENDMARK_SIZE;
+ capa->pkt.max_num = _odp_pool_glb->config.pkt_max_num;
capa->pkt.min_headroom = RTE_PKTMBUF_HEADROOM;
capa->pkt.max_headroom = RTE_PKTMBUF_HEADROOM;
capa->pkt.min_tailroom = CONFIG_PACKET_TAILROOM;
@@ -657,7 +658,6 @@ static void init_obj_priv_data(struct rte_mempool *mp ODP_UNUSED, void *arg, voi
}
}
-
odp_pool_t _odp_pool_create(const char *name, const odp_pool_param_t *params,
odp_pool_type_t type_2)
{
@@ -677,14 +677,14 @@ odp_pool_t _odp_pool_create(const char *name, const odp_pool_param_t *params,
priv_data.type = params->type;
if (name)
- strncpy(pool->name, name, ODP_POOL_NAME_LEN - 1);
+ _odp_strcpy(pool->name, name, ODP_POOL_NAME_LEN);
switch (params->type) {
case ODP_POOL_BUFFER:
num = params->buf.num;
cache_size = params->buf.cache_size;
priv_size = get_mbuf_priv_size(sizeof(odp_buffer_hdr_t));
- align = params->buf.align > 0 ? params->buf.align : ODP_CACHE_LINE_SIZE;
+ align = params->buf.align > 0 ? params->buf.align : BUFFER_ALIGN_DEFAULT;
align = _ODP_MAX(align, (uint32_t)CONFIG_BUFFER_ALIGN_MIN);
data_size = _ODP_ROUNDUP_ALIGN(params->buf.size + trailer, align);
uarea_size = params->buf.uarea_size;
@@ -1118,7 +1118,7 @@ int odp_pool_ext_capability(odp_pool_type_t type,
capa->stats.all = supported_stats.all;
capa->pkt.max_num_buf = _odp_pool_glb->config.pkt_max_num;
- capa->pkt.max_buf_size = MAX_SIZE;
+ capa->pkt.max_buf_size = CONFIG_PACKET_SEG_SIZE - CONFIG_BUFFER_ALIGN_MIN;
capa->pkt.odp_header_size = SIZEOF_OBJHDR + sizeof(odp_packet_hdr_t);
capa->pkt.odp_trailer_size = _ODP_EV_ENDMARK_SIZE;
capa->pkt.min_mem_align = ODP_CACHE_LINE_SIZE;
@@ -1216,12 +1216,10 @@ odp_pool_t odp_pool_ext_create(const char *name,
if (check_pool_ext_param(params))
return ODP_POOL_INVALID;
- if (name == NULL) {
+ if (name == NULL)
pool_name[0] = 0;
- } else {
- strncpy(pool_name, name, ODP_POOL_NAME_LEN - 1);
- pool_name[ODP_POOL_NAME_LEN - 1] = 0;
- }
+ else
+ _odp_strcpy(pool_name, name, ODP_POOL_NAME_LEN);
/* Find an unused buffer pool slot and initialize it as requested */
for (i = 0; i < CONFIG_POOLS; i++) {