Skip to content

Commit

Permalink
linux-gen: pool: add max num packets in config file
Browse files Browse the repository at this point in the history
This config is used to for maximum capability. The default
capability needs to be modest so that system memory limit is
not exceeded. User may increase maximum number of packets when
system memory size allows (and SHM single VA is not used).

Signed-off-by: Petri Savolainen <petri.savolainen@linaro.org>
Signed-off-by: Maxim Uvarov <maxim.uvarov@linaro.org>
  • Loading branch information
Petri Savolainen authored and muvarov committed Nov 6, 2018
1 parent ebff1c1 commit 168d716
Show file tree
Hide file tree
Showing 4 changed files with 53 additions and 5 deletions.
12 changes: 11 additions & 1 deletion config/odp-linux-generic.conf
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@

# Mandatory fields
odp_implementation = "linux-generic"
config_file_version = "0.1.0"
config_file_version = "0.1.1"

# Shared memory options
shm: {
Expand All @@ -39,6 +39,16 @@ shm: {
single_va = 0
}

# Pool options
pool: {
# Packet pool options
pkt: {
# Maximum number of packets per pool. Power of two minus one
# results optimal memory usage (e.g. (256 * 1024) - 1).
max_num = 262143
}
}

# DPDK pktio options
pktio_dpdk: {
# Default options
Expand Down
5 changes: 5 additions & 0 deletions platform/linux-generic/include/odp_pool_internal.h
Original file line number Diff line number Diff line change
Expand Up @@ -89,6 +89,11 @@ typedef struct pool_t {
typedef struct pool_table_t {
pool_t pool[ODP_CONFIG_POOLS];
odp_shm_t shm;

struct {
uint32_t pkt_max_num;
} config;

} pool_table_t;

extern pool_table_t *pool_tbl;
Expand Down
39 changes: 36 additions & 3 deletions platform/linux-generic/odp_pool.c
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@
#include <odp_ring_internal.h>
#include <odp_shm_internal.h>
#include <odp_global_data.h>
#include <odp_libconfig_internal.h>

#include <string.h>
#include <stdio.h>
Expand All @@ -33,8 +34,9 @@
#define UNLOCK(a) odp_ticketlock_unlock(a)
#define LOCK_INIT(a) odp_ticketlock_init(a)

#define CACHE_BURST 32
#define RING_SIZE_MIN (2 * CACHE_BURST)
#define CACHE_BURST 32
#define RING_SIZE_MIN (2 * CACHE_BURST)
#define POOL_MAX_NUM_MIN RING_SIZE_MIN

/* Make sure packet buffers don't cross huge page boundaries starting from this
* page size. 2MB is typically the smallest used huge page size. */
Expand Down Expand Up @@ -83,6 +85,32 @@ static inline pool_t *pool_from_buf(odp_buffer_t buf)
return buf_hdr->pool_ptr;
}

static int read_config_file(pool_table_t *pool_tbl)
{
const char *str;
int val = 0;

ODP_PRINT("Pool config:\n");

str = "pool.pkt.max_num";
if (!_odp_libconfig_lookup_int(str, &val)) {
ODP_ERR("Config option '%s' not found.\n", str);
return -1;
}

if (val > CONFIG_POOL_MAX_NUM || val < POOL_MAX_NUM_MIN) {
ODP_ERR("Bad value %s = %u\n", str, val);
return -1;
}

pool_tbl->config.pkt_max_num = val;
ODP_PRINT(" %s: %i\n", str, val);

ODP_PRINT("\n");

return 0;
}

int odp_pool_init_global(void)
{
uint32_t i;
Expand All @@ -101,6 +129,11 @@ int odp_pool_init_global(void)
memset(pool_tbl, 0, sizeof(pool_table_t));
pool_tbl->shm = shm;

if (read_config_file(pool_tbl)) {
odp_shm_free(shm);
return -1;
}

for (i = 0; i < ODP_CONFIG_POOLS; i++) {
pool_t *pool = pool_entry(i);

Expand Down Expand Up @@ -950,7 +983,7 @@ int odp_pool_capability(odp_pool_capability_t *capa)
/* Packet pools */
capa->pkt.max_pools = ODP_CONFIG_POOLS;
capa->pkt.max_len = CONFIG_PACKET_MAX_LEN;
capa->pkt.max_num = CONFIG_POOL_MAX_NUM;
capa->pkt.max_num = pool_tbl->config.pkt_max_num;
capa->pkt.min_headroom = CONFIG_PACKET_HEADROOM;
capa->pkt.max_headroom = CONFIG_PACKET_HEADROOM;
capa->pkt.min_tailroom = CONFIG_PACKET_TAILROOM;
Expand Down
2 changes: 1 addition & 1 deletion platform/linux-generic/test/process-mode.conf
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# Mandatory fields
odp_implementation = "linux-generic"
config_file_version = "0.1.0"
config_file_version = "0.1.1"

# Shared memory options
shm: {
Expand Down

0 comments on commit 168d716

Please sign in to comment.