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 /platform/linux-generic/odp_pool.c | |
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>
Diffstat (limited to 'platform/linux-generic/odp_pool.c')
-rw-r--r-- | platform/linux-generic/odp_pool.c | 10 |
1 files changed, 10 insertions, 0 deletions
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; |