diff options
author | Petri Savolainen <petri.savolainen@nokia.com> | 2020-01-10 13:39:38 +0200 |
---|---|---|
committer | Petri Savolainen <petri.savolainen@nokia.com> | 2020-01-28 13:15:54 +0200 |
commit | a072a42095fdd2d7b85343007e34bc424bcf5032 (patch) | |
tree | b4fba43fe1cb26da71bea0ef56a1d30755cb6956 | |
parent | f6cb2b6f9cd9c0218ec564f75a0cda543a4477ba (diff) |
linux-gen: pool: set packet pool max align capa
Implement the new packet align pool parameter with minimal
changes. Packet pools are aligned always to the base align,
so all application requests up to that value are supported.
Base align can be changed through the config file.
Signed-off-by: Petri Savolainen <petri.savolainen@nokia.com>
Reviewed-by: Stanislaw Kardach <skardach@marvell.com>
-rw-r--r-- | config/odp-linux-generic.conf | 3 | ||||
-rw-r--r-- | platform/linux-generic/odp_pool.c | 10 |
2 files changed, 12 insertions, 1 deletions
diff --git a/config/odp-linux-generic.conf b/config/odp-linux-generic.conf index 5a3ca72ff..b1f0e9009 100644 --- a/config/odp-linux-generic.conf +++ b/config/odp-linux-generic.conf @@ -62,7 +62,8 @@ pool: { max_num = 262143 # Base alignment for segment data. When set to zero, - # cache line size is used. Use power of two values. + # cache line size is used. Use power of two values. This is + # also the maximum value for the packet pool alignment param. base_align = 0 } diff --git a/platform/linux-generic/odp_pool.c b/platform/linux-generic/odp_pool.c index 5d5217aaf..e1964f840 100644 --- a/platform/linux-generic/odp_pool.c +++ b/platform/linux-generic/odp_pool.c @@ -503,6 +503,15 @@ static odp_pool_t pool_create(const char *name, odp_pool_param_t *params, align = 0; if (params->type == ODP_POOL_PACKET) { + uint32_t align_req = params->pkt.align; + + if (align_req && + (!CHECK_IS_POWER2(align_req) || + align_req > _odp_pool_glb->config.pkt_base_align)) { + ODP_ERR("Bad align requirement\n"); + return ODP_POOL_INVALID; + } + align = _odp_pool_glb->config.pkt_base_align; } else { if (params->type == ODP_POOL_BUFFER) @@ -1106,6 +1115,7 @@ int odp_pool_capability(odp_pool_capability_t *capa) capa->pkt.max_pools = max_pools; capa->pkt.max_len = CONFIG_PACKET_MAX_LEN; capa->pkt.max_num = _odp_pool_glb->config.pkt_max_num; + capa->pkt.max_align = _odp_pool_glb->config.pkt_base_align; capa->pkt.min_headroom = CONFIG_PACKET_HEADROOM; capa->pkt.max_headroom = CONFIG_PACKET_HEADROOM; capa->pkt.min_tailroom = CONFIG_PACKET_TAILROOM; |