diff options
author | Matias Elo <matias.elo@nokia.com> | 2021-01-08 09:31:27 +0200 |
---|---|---|
committer | Matias Elo <matias.elo@nokia.com> | 2021-01-15 15:15:12 +0200 |
commit | dd9dc51b107bcf9ea6afb2d4fafd7c453f5cc240 (patch) | |
tree | 40ab2cb2b6f1847383380e7939c485a204d6f784 | |
parent | 870b49483ce2ea973eff6e554ac0c98f5267dfb2 (diff) |
linux-gen: pool: add maximum packet length config option
Add configuration file option for the maximum packet data length in bytes.
Signed-off-by: Matias Elo <matias.elo@nokia.com>
Reviewed-by: Jere Leppänen <jere.leppanen@nokia.com>
-rw-r--r-- | config/odp-linux-generic.conf | 5 | ||||
-rw-r--r-- | platform/linux-generic/include/odp_config_internal.h | 5 | ||||
-rw-r--r-- | platform/linux-generic/include/odp_pool_internal.h | 1 | ||||
-rw-r--r-- | platform/linux-generic/m4/odp_libconfig.m4 | 2 | ||||
-rw-r--r-- | platform/linux-generic/odp_pool.c | 18 | ||||
-rw-r--r-- | platform/linux-generic/odp_system_info.c | 1 | ||||
-rw-r--r-- | platform/linux-generic/test/inline-timer.conf | 2 | ||||
-rw-r--r-- | platform/linux-generic/test/packet_align.conf | 2 | ||||
-rw-r--r-- | platform/linux-generic/test/process-mode.conf | 2 |
9 files changed, 25 insertions, 13 deletions
diff --git a/config/odp-linux-generic.conf b/config/odp-linux-generic.conf index ced837a29..a03c8568f 100644 --- a/config/odp-linux-generic.conf +++ b/config/odp-linux-generic.conf @@ -16,7 +16,7 @@ # Mandatory fields odp_implementation = "linux-generic" -config_file_version = "0.1.13" +config_file_version = "0.1.14" # System options system: { @@ -72,6 +72,9 @@ pool: { # Packet pool options pkt: { + # Maximum packet data length in bytes + max_len = 65536 + # Maximum number of packets per pool. Power of two minus one # results optimal memory usage (e.g. (256 * 1024) - 1). max_num = 262143 diff --git a/platform/linux-generic/include/odp_config_internal.h b/platform/linux-generic/include/odp_config_internal.h index bd7f710d2..35f1c9142 100644 --- a/platform/linux-generic/include/odp_config_internal.h +++ b/platform/linux-generic/include/odp_config_internal.h @@ -92,11 +92,6 @@ extern "C" { #define CONFIG_PACKET_TAILROOM 0 /* - * Maximum packet data length in bytes - */ -#define CONFIG_PACKET_MAX_LEN (64 * 1024) - -/* * Maximum packet segment size including head- and tailrooms */ #define CONFIG_PACKET_SEG_SIZE (60 * 1024) diff --git a/platform/linux-generic/include/odp_pool_internal.h b/platform/linux-generic/include/odp_pool_internal.h index a0b4591e3..9deb63cd0 100644 --- a/platform/linux-generic/include/odp_pool_internal.h +++ b/platform/linux-generic/include/odp_pool_internal.h @@ -104,6 +104,7 @@ typedef struct pool_global_t { odp_shm_t shm; struct { + uint32_t pkt_max_len; uint32_t pkt_max_num; uint32_t local_cache_size; uint32_t burst_size; diff --git a/platform/linux-generic/m4/odp_libconfig.m4 b/platform/linux-generic/m4/odp_libconfig.m4 index c3a83ed89..325c62ad0 100644 --- a/platform/linux-generic/m4/odp_libconfig.m4 +++ b/platform/linux-generic/m4/odp_libconfig.m4 @@ -3,7 +3,7 @@ ########################################################################## m4_define([_odp_config_version_generation], [0]) m4_define([_odp_config_version_major], [1]) -m4_define([_odp_config_version_minor], [13]) +m4_define([_odp_config_version_minor], [14]) m4_define([_odp_config_version], [_odp_config_version_generation._odp_config_version_major._odp_config_version_minor]) diff --git a/platform/linux-generic/odp_pool.c b/platform/linux-generic/odp_pool.c index d1fb7c933..9e6530eb6 100644 --- a/platform/linux-generic/odp_pool.c +++ b/platform/linux-generic/odp_pool.c @@ -210,6 +210,20 @@ static int read_config_file(pool_global_t *pool_glb) pool_glb->config.pkt_max_num = val; ODP_PRINT(" %s: %i\n", str, val); + str = "pool.pkt.max_len"; + if (!_odp_libconfig_lookup_int(str, &val)) { + ODP_ERR("Config option '%s' not found.\n", str); + return -1; + } + + if (val <= 0) { + ODP_ERR("Bad value %s = %i\n", str, val); + return -1; + } + + pool_glb->config.pkt_max_len = val; + ODP_PRINT(" %s: %i\n", str, val); + str = "pool.pkt.base_align"; if (!_odp_libconfig_lookup_int(str, &val)) { ODP_ERR("Config option '%s' not found.\n", str); @@ -571,7 +585,7 @@ static odp_pool_t pool_create(const char *name, const odp_pool_param_t *params, } seg_len = CONFIG_PACKET_MAX_SEG_LEN; - max_len = CONFIG_PACKET_MAX_LEN; + max_len = _odp_pool_glb->config.pkt_max_len; if (params->pkt.len && params->pkt.len < CONFIG_PACKET_MAX_SEG_LEN) @@ -1256,7 +1270,7 @@ int odp_pool_capability(odp_pool_capability_t *capa) /* Packet pools */ capa->pkt.max_pools = max_pools; - capa->pkt.max_len = CONFIG_PACKET_MAX_LEN; + capa->pkt.max_len = _odp_pool_glb->config.pkt_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; diff --git a/platform/linux-generic/odp_system_info.c b/platform/linux-generic/odp_system_info.c index 638c756e8..cbbadf336 100644 --- a/platform/linux-generic/odp_system_info.c +++ b/platform/linux-generic/odp_system_info.c @@ -595,7 +595,6 @@ void odp_sys_config_print(void) ODP_PRINT("ODP_CONFIG_PKTIO_ENTRIES: %i\n", ODP_CONFIG_PKTIO_ENTRIES); ODP_PRINT("CONFIG_PACKET_HEADROOM: %i\n", CONFIG_PACKET_HEADROOM); ODP_PRINT("CONFIG_PACKET_TAILROOM: %i\n", CONFIG_PACKET_TAILROOM); - ODP_PRINT("CONFIG_PACKET_MAX_LEN: %i\n", CONFIG_PACKET_MAX_LEN); ODP_PRINT("ODP_CONFIG_SHM_BLOCKS: %i\n", ODP_CONFIG_SHM_BLOCKS); ODP_PRINT("CONFIG_BURST_SIZE: %i\n", CONFIG_BURST_SIZE); ODP_PRINT("CONFIG_POOL_MAX_NUM: %i\n", CONFIG_POOL_MAX_NUM); diff --git a/platform/linux-generic/test/inline-timer.conf b/platform/linux-generic/test/inline-timer.conf index a7fec6a98..096aab055 100644 --- a/platform/linux-generic/test/inline-timer.conf +++ b/platform/linux-generic/test/inline-timer.conf @@ -1,6 +1,6 @@ # Mandatory fields odp_implementation = "linux-generic" -config_file_version = "0.1.13" +config_file_version = "0.1.14" timer: { # Enable inline timer implementation diff --git a/platform/linux-generic/test/packet_align.conf b/platform/linux-generic/test/packet_align.conf index 95ecaf413..24ed46b56 100644 --- a/platform/linux-generic/test/packet_align.conf +++ b/platform/linux-generic/test/packet_align.conf @@ -1,6 +1,6 @@ # Mandatory fields odp_implementation = "linux-generic" -config_file_version = "0.1.13" +config_file_version = "0.1.14" pool: { pkt: { diff --git a/platform/linux-generic/test/process-mode.conf b/platform/linux-generic/test/process-mode.conf index 7cbc176fd..8e18feb2c 100644 --- a/platform/linux-generic/test/process-mode.conf +++ b/platform/linux-generic/test/process-mode.conf @@ -1,6 +1,6 @@ # Mandatory fields odp_implementation = "linux-generic" -config_file_version = "0.1.13" +config_file_version = "0.1.14" # Shared memory options shm: { |