This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "".
The branch, master has been updated via 88deaa9611c7d16d8438b8b8c7732d74889fc4af (commit) via 2aaaa9ea1c1635961c3e96474dc096312297c0d5 (commit) via c5e7097a66e519d6196010d1777714a63963f3fc (commit) via d71c7629711ef2092719f308a6ea3d0329a8d78b (commit) via 6e159d34801e47ad5ade60b7da960450da15c9cb (commit) via 94a4858bc741bff8560771363f660fd7b3cb4e60 (commit) via 16f64683fb32aae3cb2d74a49e623bdb5d13d67f (commit) via 121a67e892d00f9f0e204d526eafd15c68cc536b (commit) via 8cfa7ecd452711dbb235ebb770df318d5ea2896f (commit) via af744065bf793b0c0350fdd0f2aebc527198d82a (commit) via aa8547777264d3274a29080139202848fe0585c8 (commit) via 85881d71fbfd4f7015ae37d475cbcb6920b6f680 (commit) via 0e4d52b760d199f7561d0ea4b6e798af3ecd8cd8 (commit) via 7a57b819d215b689b3c9ed0f4d766de809c5a431 (commit) from a3e06266d1d6063ad1bf7176b02634f456433ef4 (commit)
Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below.
- Log ----------------------------------------------------------------- commit 88deaa9611c7d16d8438b8b8c7732d74889fc4af Author: Petri Savolainen petri.savolainen@nokia.com Date: Wed Nov 13 12:24:38 2019 +0200
api: increment version to 1.23.1
Increment the minor API version digit to reflect addition of odp_packet_input_set() function and compress feature flag.
Signed-off-by: Petri Savolainen petri.savolainen@nokia.com Reviewed-by: Matias Elo matias.elo@nokia.com
diff --git a/configure.ac b/configure.ac index 4cff42913..030edb5e8 100644 --- a/configure.ac +++ b/configure.ac @@ -4,7 +4,7 @@ AC_PREREQ([2.5]) ########################################################################## m4_define([odpapi_generation_version], [1]) m4_define([odpapi_major_version], [23]) -m4_define([odpapi_minor_version], [0]) +m4_define([odpapi_minor_version], [1]) m4_define([odpapi_point_version], [0]) m4_define([odpapi_version], [odpapi_generation_version.odpapi_major_version.odpapi_minor_version.odpapi_point_version])
commit 2aaaa9ea1c1635961c3e96474dc096312297c0d5 Author: Petri Savolainen petri.savolainen@nokia.com Date: Wed Nov 13 10:37:34 2019 +0200
test: use compress not used flag
Use the new compression not used flag in test applications.
Signed-off-by: Petri Savolainen petri.savolainen@nokia.com Reviewed-by: Matias Elo matias.elo@nokia.com
diff --git a/example/timer/odp_timer_accuracy.c b/example/timer/odp_timer_accuracy.c index 622814a95..35c8c612d 100644 --- a/example/timer/odp_timer_accuracy.c +++ b/example/timer/odp_timer_accuracy.c @@ -421,10 +421,11 @@ int main(int argc, char *argv[])
/* List features not to be used (may optimize performance) */ odp_init_param_init(&init); - init.not_used.feat.cls = 1; - init.not_used.feat.crypto = 1; - init.not_used.feat.ipsec = 1; - init.not_used.feat.tm = 1; + init.not_used.feat.cls = 1; + init.not_used.feat.compress = 1; + init.not_used.feat.crypto = 1; + init.not_used.feat.ipsec = 1; + init.not_used.feat.tm = 1;
if (test_global.opt.init) init_ptr = &init; diff --git a/test/performance/odp_cpu_bench.c b/test/performance/odp_cpu_bench.c index 6a125a1c7..38c18513a 100644 --- a/test/performance/odp_cpu_bench.c +++ b/test/performance/odp_cpu_bench.c @@ -552,11 +552,12 @@ int main(int argc, char *argv[]) odp_init_param_init(&init);
/* List features not to be used (may optimize performance) */ - init.not_used.feat.cls = 1; - init.not_used.feat.crypto = 1; - init.not_used.feat.ipsec = 1; - init.not_used.feat.timer = 1; - init.not_used.feat.tm = 1; + init.not_used.feat.cls = 1; + init.not_used.feat.compress = 1; + init.not_used.feat.crypto = 1; + init.not_used.feat.ipsec = 1; + init.not_used.feat.timer = 1; + init.not_used.feat.tm = 1;
init.mem_model = helper_options.mem_model;
diff --git a/test/performance/odp_l2fwd.c b/test/performance/odp_l2fwd.c index 07777b8ec..fc1f04bd1 100644 --- a/test/performance/odp_l2fwd.c +++ b/test/performance/odp_l2fwd.c @@ -1480,11 +1480,12 @@ int main(int argc, char *argv[]) odp_init_param_init(&init);
/* List features not to be used (may optimize performance) */ - init.not_used.feat.cls = 1; - init.not_used.feat.crypto = 1; - init.not_used.feat.ipsec = 1; - init.not_used.feat.timer = 1; - init.not_used.feat.tm = 1; + init.not_used.feat.cls = 1; + init.not_used.feat.compress = 1; + init.not_used.feat.crypto = 1; + init.not_used.feat.ipsec = 1; + init.not_used.feat.timer = 1; + init.not_used.feat.tm = 1;
init.mem_model = helper_options.mem_model;
diff --git a/test/performance/odp_pool_perf.c b/test/performance/odp_pool_perf.c index 26fe44be5..85dd4ba12 100644 --- a/test/performance/odp_pool_perf.c +++ b/test/performance/odp_pool_perf.c @@ -528,6 +528,7 @@ int main(int argc, char **argv) /* List features not to be used */ odp_init_param_init(&init); init.not_used.feat.cls = 1; + init.not_used.feat.compress = 1; init.not_used.feat.crypto = 1; init.not_used.feat.ipsec = 1; init.not_used.feat.schedule = 1; diff --git a/test/performance/odp_queue_perf.c b/test/performance/odp_queue_perf.c index 2c132ba6a..893861688 100644 --- a/test/performance/odp_queue_perf.c +++ b/test/performance/odp_queue_perf.c @@ -535,6 +535,7 @@ int main(int argc, char **argv) /* List features not to be used */ odp_init_param_init(&init); init.not_used.feat.cls = 1; + init.not_used.feat.compress = 1; init.not_used.feat.crypto = 1; init.not_used.feat.ipsec = 1; init.not_used.feat.schedule = 1; diff --git a/test/performance/odp_sched_perf.c b/test/performance/odp_sched_perf.c index 04d125be0..08623d2a7 100644 --- a/test/performance/odp_sched_perf.c +++ b/test/performance/odp_sched_perf.c @@ -874,6 +874,7 @@ int main(int argc, char **argv) /* List features not to be used */ odp_init_param_init(&init); init.not_used.feat.cls = 1; + init.not_used.feat.compress = 1; init.not_used.feat.crypto = 1; init.not_used.feat.ipsec = 1; init.not_used.feat.timer = 1; diff --git a/test/performance/odp_sched_pktio.c b/test/performance/odp_sched_pktio.c index bc5da01f3..8eb094873 100644 --- a/test/performance/odp_sched_pktio.c +++ b/test/performance/odp_sched_pktio.c @@ -1446,11 +1446,12 @@ int main(int argc, char *argv[])
/* List features not to be used (may optimize performance) */ odp_init_param_init(&init); - init.not_used.feat.cls = 1; - init.not_used.feat.crypto = 1; - init.not_used.feat.ipsec = 1; - init.not_used.feat.tm = 1; - init.not_used.feat.timer = 1; + init.not_used.feat.cls = 1; + init.not_used.feat.compress = 1; + init.not_used.feat.crypto = 1; + init.not_used.feat.ipsec = 1; + init.not_used.feat.tm = 1; + init.not_used.feat.timer = 1;
if (test_options.timeout_us) init.not_used.feat.timer = 0; diff --git a/test/performance/odp_timer_perf.c b/test/performance/odp_timer_perf.c index c49baf0bd..5a2317aab 100644 --- a/test/performance/odp_timer_perf.c +++ b/test/performance/odp_timer_perf.c @@ -687,6 +687,7 @@ int main(int argc, char **argv) /* List features not to be used */ odp_init_param_init(&init); init.not_used.feat.cls = 1; + init.not_used.feat.compress = 1; init.not_used.feat.crypto = 1; init.not_used.feat.ipsec = 1; init.not_used.feat.tm = 1;
commit c5e7097a66e519d6196010d1777714a63963f3fc Author: Petri Savolainen petri.savolainen@nokia.com Date: Wed Nov 13 10:26:08 2019 +0200
validation: init: test compression not used flag
Signed-off-by: Petri Savolainen petri.savolainen@nokia.com Reviewed-by: Matias Elo matias.elo@nokia.com
diff --git a/test/validation/api/init/init_main.c b/test/validation/api/init/init_main.c index c250aeec3..e9c7f1b02 100644 --- a/test/validation/api/init/init_main.c +++ b/test/validation/api/init/init_main.c @@ -134,6 +134,7 @@ static void init_test_feature(int disable)
if (disable) { param.not_used.feat.cls = 1; + param.not_used.feat.compress = 1; param.not_used.feat.crypto = 1; param.not_used.feat.ipsec = 1; param.not_used.feat.schedule = 1;
commit d71c7629711ef2092719f308a6ea3d0329a8d78b Author: Petri Savolainen petri.savolainen@nokia.com Date: Wed Nov 13 10:23:45 2019 +0200
linux-gen: init: use compress not used flag
Disable compress when it is not used according to global init parameters.
Signed-off-by: Petri Savolainen petri.savolainen@nokia.com Reviewed-by: Matias Elo matias.elo@nokia.com
diff --git a/platform/linux-generic/odp_init.c b/platform/linux-generic/odp_init.c index bb8d13347..aff20e4cd 100644 --- a/platform/linux-generic/odp_init.c +++ b/platform/linux-generic/odp_init.c @@ -65,6 +65,7 @@ static void disable_features(odp_global_data_ro_t *global_ro, global_ro->disable.crypto = 1;
global_ro->disable.traffic_mngr = init_param->not_used.feat.tm; + global_ro->disable.compress = init_param->not_used.feat.compress; }
void odp_init_param_init(odp_init_t *param)
commit 6e159d34801e47ad5ade60b7da960450da15c9cb Author: Petri Savolainen petri.savolainen@nokia.com Date: Wed Nov 13 10:16:35 2019 +0200
api: feature: add compression feature flag
Added a flag for compression APIs into ODP features definition.
Signed-off-by: Petri Savolainen petri.savolainen@nokia.com Reviewed-by: Stanislaw Kardach skardach@marvell.com Reviewed-by: Matias Elo matias.elo@nokia.com
diff --git a/include/odp/api/spec/feature.h b/include/odp/api/spec/feature.h index f6a360e53..59f0b1282 100644 --- a/include/odp/api/spec/feature.h +++ b/include/odp/api/spec/feature.h @@ -37,6 +37,9 @@ typedef union odp_feature_t { /** Classifier APIs, e.g., odp_cls_xxx(), odp_cos_xxx() */ uint32_t cls:1;
+ /** Compression APIs, e.g., odp_comp_xxx() */ + uint32_t compress:1; + /** Crypto APIs, e.g., odp_crypto_xxx() */ uint32_t crypto:1;
@@ -55,6 +58,7 @@ typedef union odp_feature_t { /** Traffic Manager APIs, e.g., odp_tm_xxx() */ uint32_t tm:1; } feat; + } odp_feature_t;
/**
commit 94a4858bc741bff8560771363f660fd7b3cb4e60 Author: Petri Savolainen petri.savolainen@nokia.com Date: Wed Nov 13 10:09:56 2019 +0200
validation: init: test features enabled and disabled
Print system and SHM information with features enabled and disabled, so that difference in e.g. memory usage can be compared from logs.
Signed-off-by: Petri Savolainen petri.savolainen@nokia.com Reviewed-by: Matias Elo matias.elo@nokia.com
diff --git a/test/validation/api/Makefile.am b/test/validation/api/Makefile.am index 071499f18..0d5fa3ce8 100644 --- a/test/validation/api/Makefile.am +++ b/test/validation/api/Makefile.am @@ -47,7 +47,8 @@ TESTS = \ init/init_abort$(EXEEXT) \ init/init_log$(EXEEXT) \ init/init_num_thr$(EXEEXT) \ - init/init_feature$(EXEEXT) \ + init/init_feature_enabled$(EXEEXT) \ + init/init_feature_disabled$(EXEEXT) \ ipsec/ipsec_sync$(EXEEXT) \ ipsec/ipsec_async$(EXEEXT) \ ipsec/ipsec_inline_in$(EXEEXT) \ diff --git a/test/validation/api/init/.gitignore b/test/validation/api/init/.gitignore index 8311f2c3f..05301baac 100644 --- a/test/validation/api/init/.gitignore +++ b/test/validation/api/init/.gitignore @@ -2,4 +2,5 @@ init_defaults init_abort init_log init_num_thr -init_feature +init_feature_enabled +init_feature_disabled diff --git a/test/validation/api/init/Makefile.am b/test/validation/api/init/Makefile.am index 6c0ef301f..297f33dc4 100644 --- a/test/validation/api/init/Makefile.am +++ b/test/validation/api/init/Makefile.am @@ -2,16 +2,19 @@ include ../Makefile.inc
# Keep init test cases in separate binaries. Some implementations may not allow # the same application process to call odp_init_global() multiple times. -test_PROGRAMS = init_defaults init_abort init_log init_num_thr init_feature +test_PROGRAMS = init_defaults init_abort init_log init_num_thr \ + init_feature_enabled init_feature_disabled
init_defaults_CPPFLAGS = -DINIT_TEST=0 $(AM_CPPFLAGS) init_abort_CPPFLAGS = -DINIT_TEST=1 $(AM_CPPFLAGS) init_log_CPPFLAGS = -DINIT_TEST=2 $(AM_CPPFLAGS) init_num_thr_CPPFLAGS = -DINIT_TEST=3 $(AM_CPPFLAGS) -init_feature_CPPFLAGS = -DINIT_TEST=4 $(AM_CPPFLAGS) +init_feature_enabled_CPPFLAGS = -DINIT_TEST=4 $(AM_CPPFLAGS) +init_feature_disabled_CPPFLAGS = -DINIT_TEST=5 $(AM_CPPFLAGS)
init_defaults_SOURCES = init_main.c init_abort_SOURCES = init_main.c init_log_SOURCES = init_main.c init_num_thr_SOURCES = init_main.c -init_feature_SOURCES = init_main.c +init_feature_enabled_SOURCES = init_main.c +init_feature_disabled_SOURCES = init_main.c diff --git a/test/validation/api/init/init_main.c b/test/validation/api/init/init_main.c index 6878d36db..c250aeec3 100644 --- a/test/validation/api/init/init_main.c +++ b/test/validation/api/init/init_main.c @@ -123,21 +123,24 @@ static void init_test_num_thr(void) CU_ASSERT(ret == 0); }
-static void init_test_feature(void) +static void init_test_feature(int disable) { int ret; odp_instance_t instance; odp_init_t param;
odp_init_param_init(¶m); - param.not_used.all_feat = 0; - param.not_used.feat.cls = 1; - param.not_used.feat.crypto = 1; - param.not_used.feat.ipsec = 1; - param.not_used.feat.schedule = 1; - param.not_used.feat.time = 1; - param.not_used.feat.timer = 1; - param.not_used.feat.tm = 1; + param.not_used.all_feat = 0; + + if (disable) { + param.not_used.feat.cls = 1; + param.not_used.feat.crypto = 1; + param.not_used.feat.ipsec = 1; + param.not_used.feat.schedule = 1; + param.not_used.feat.time = 1; + param.not_used.feat.timer = 1; + param.not_used.feat.tm = 1; + }
ret = odp_init_global(&instance, ¶m, NULL); CU_ASSERT_FATAL(ret == 0); @@ -145,6 +148,11 @@ static void init_test_feature(void) ret = odp_init_local(instance, ODP_THREAD_CONTROL); CU_ASSERT_FATAL(ret == 0);
+ /* Print system and SHM information into test log. It may show + * e.g. memory usage difference when features are disabled. */ + odp_sys_info_print(); + odp_shm_print_all(); + ret = odp_term_local(); CU_ASSERT_FATAL(ret == 0);
@@ -152,12 +160,23 @@ static void init_test_feature(void) CU_ASSERT(ret == 0); }
+static void init_test_feature_enabled(void) +{ + init_test_feature(0); +} + +static void init_test_feature_disabled(void) +{ + init_test_feature(1); +} + odp_testinfo_t testinfo[] = { ODP_TEST_INFO(init_test_defaults), ODP_TEST_INFO(init_test_abort), ODP_TEST_INFO(init_test_log), ODP_TEST_INFO(init_test_num_thr), - ODP_TEST_INFO(init_test_feature) + ODP_TEST_INFO(init_test_feature_enabled), + ODP_TEST_INFO(init_test_feature_disabled) };
odp_testinfo_t init_suite[] = {
commit 16f64683fb32aae3cb2d74a49e623bdb5d13d67f Author: Petri Savolainen petri.savolainen@nokia.com Date: Fri Nov 8 17:04:26 2019 +0200
linux-gen: init: set disable feature flags
Read init parameter of odp_init_global() and set disable feature flags accordingly.
Signed-off-by: Petri Savolainen petri.savolainen@nokia.com Reviewed-by: Matias Elo matias.elo@nokia.com
diff --git a/platform/linux-generic/odp_init.c b/platform/linux-generic/odp_init.c index f68379cda..bb8d13347 100644 --- a/platform/linux-generic/odp_init.c +++ b/platform/linux-generic/odp_init.c @@ -48,6 +48,25 @@ enum init_stage { odp_global_data_ro_t odp_global_ro; odp_global_data_rw_t *odp_global_rw;
+static void disable_features(odp_global_data_ro_t *global_ro, + const odp_init_t *init_param) +{ + int disable_ipsec, disable_crypto; + + if (init_param == NULL) + return; + + disable_ipsec = init_param->not_used.feat.ipsec; + global_ro->disable.ipsec = disable_ipsec; + + disable_crypto = init_param->not_used.feat.crypto; + /* Crypto can be disabled only if IPSec is disabled */ + if (disable_ipsec && disable_crypto) + global_ro->disable.crypto = 1; + + global_ro->disable.traffic_mngr = init_param->not_used.feat.tm; +} + void odp_init_param_init(odp_init_t *param) { memset(param, 0, sizeof(odp_init_t)); @@ -291,6 +310,8 @@ int odp_init_global(odp_instance_t *instance, } stage = LIBCONFIG_INIT;
+ disable_features(&odp_global_ro, params); + if (_odp_cpumask_init_global(params)) { ODP_ERR("ODP cpumask init failed.\n"); goto init_failed;
commit 121a67e892d00f9f0e204d526eafd15c68cc536b Author: Petri Savolainen petri.savolainen@nokia.com Date: Fri Nov 8 16:50:30 2019 +0200
linux-gen: tm: support global disable
Check global disable flag to avoid shared memory consumption when traffic manager is not used.
Signed-off-by: Petri Savolainen petri.savolainen@nokia.com Reviewed-by: Matias Elo matias.elo@nokia.com
diff --git a/platform/linux-generic/odp_traffic_mngr.c b/platform/linux-generic/odp_traffic_mngr.c index 9a40d0716..0acfa9c76 100644 --- a/platform/linux-generic/odp_traffic_mngr.c +++ b/platform/linux-generic/odp_traffic_mngr.c @@ -30,6 +30,7 @@ #include <odp_macros_internal.h> #include <odp_init_internal.h> #include <odp_errno_define.h> +#include <odp_global_data.h>
/* Local vars */ static const @@ -2918,7 +2919,7 @@ odp_tm_t odp_tm_create(const char *name, uint32_t max_tm_queues, max_sorted_lists; int rc;
- if (odp_global_ro.init_param.not_used.feat.tm) { + if (odp_global_ro.disable.traffic_mngr) { ODP_ERR("TM has been disabled\n"); return ODP_TM_INVALID; } @@ -4724,8 +4725,8 @@ int _odp_tm_init_global(void) { odp_shm_t shm;
- if (odp_global_ro.init_param.not_used.feat.tm) { - ODP_DBG("TM disabled\n"); + if (odp_global_ro.disable.traffic_mngr) { + ODP_PRINT("\nODP traffic manager is DISABLED\n"); return 0; }
@@ -4758,7 +4759,7 @@ int _odp_tm_init_global(void)
int _odp_tm_term_global(void) { - if (odp_global_ro.init_param.not_used.feat.tm) + if (odp_global_ro.disable.traffic_mngr) return 0;
if (odp_shm_free(tm_glb->shm)) {
commit 8cfa7ecd452711dbb235ebb770df318d5ea2896f Author: Petri Savolainen petri.savolainen@nokia.com Date: Fri Nov 8 16:38:13 2019 +0200
linux-gen: comp: support global disable
Check global disable flag to avoid shared memory consumption when compression is not used.
Signed-off-by: Petri Savolainen petri.savolainen@nokia.com Reviewed-by: Matias Elo matias.elo@nokia.com
diff --git a/platform/linux-generic/odp_comp.c b/platform/linux-generic/odp_comp.c index a5dfb4aa7..0e9ce5a89 100644 --- a/platform/linux-generic/odp_comp.c +++ b/platform/linux-generic/odp_comp.c @@ -11,6 +11,7 @@ #include <odp/api/packet.h> #include <odp/api/plat/strong_types.h> #include <odp_packet_internal.h> +#include <odp_global_data.h>
#include <odp_debug_internal.h> #include <odp_init_internal.h> @@ -610,11 +611,17 @@ int _odp_comp_init_global(void) odp_shm_t shm; int idx;
+ if (odp_global_ro.disable.compress) { + ODP_PRINT("\nODP compress is DISABLED\n"); + return 0; + } + /* Calculate the memory size we need */ mem_size = sizeof(*global);
/* Allocate our globally shared memory */ - shm = odp_shm_reserve("comp_pool", mem_size, ODP_CACHE_LINE_SIZE, 0); + shm = odp_shm_reserve("_odp_comp_pool", mem_size, + ODP_CACHE_LINE_SIZE, 0);
global = odp_shm_addr(shm);
@@ -639,6 +646,9 @@ int _odp_comp_term_global(void) int count = 0; odp_comp_generic_session_t *session;
+ if (odp_global_ro.disable.compress) + return 0; + for (session = global->free; session != NULL; session = session->next) count++;
commit af744065bf793b0c0350fdd0f2aebc527198d82a Author: Petri Savolainen petri.savolainen@nokia.com Date: Fri Nov 8 16:22:58 2019 +0200
linux-gen: ipsec: support global disable
Check global disable flag to avoid shared memory consumption when ipsec is not used.
Signed-off-by: Petri Savolainen petri.savolainen@nokia.com Reviewed-by: Matias Elo matias.elo@nokia.com
diff --git a/platform/linux-generic/odp_ipsec.c b/platform/linux-generic/odp_ipsec.c index 4968c87d8..7bb38c5c8 100644 --- a/platform/linux-generic/odp_ipsec.c +++ b/platform/linux-generic/odp_ipsec.c @@ -33,6 +33,11 @@ int odp_ipsec_capability(odp_ipsec_capability_t *capa) odp_crypto_capability_t crypto_capa; odp_queue_capability_t queue_capa;
+ if (odp_global_ro.disable.ipsec) { + ODP_ERR("IPSec is disabled\n"); + return -1; + } + memset(capa, 0, sizeof(odp_ipsec_capability_t));
capa->op_mode_sync = ODP_SUPPORT_PREFERRED; @@ -1775,6 +1780,9 @@ int _odp_ipsec_try_inline(odp_packet_t *pkt) odp_ipsec_packet_result_t *result; odp_packet_hdr_t *pkt_hdr;
+ if (odp_global_ro.disable.ipsec) + return -1; + memset(&status, 0, sizeof(status));
ipsec_sa = ipsec_in_single(*pkt, ODP_IPSEC_SA_INVALID, pkt, &status); @@ -1937,6 +1945,9 @@ int _odp_ipsec_init_global(void) { odp_shm_t shm;
+ if (odp_global_ro.disable.ipsec) + return 0; + shm = odp_shm_reserve("_odp_ipsec", sizeof(odp_ipsec_config_t), ODP_CACHE_LINE_SIZE, 0);
@@ -1960,7 +1971,12 @@ int _odp_ipsec_init_global(void)
int _odp_ipsec_term_global(void) { - odp_shm_t shm = odp_shm_lookup("_odp_ipsec"); + odp_shm_t shm; + + if (odp_global_ro.disable.ipsec) + return 0; + + shm = odp_shm_lookup("_odp_ipsec");
if (shm == ODP_SHM_INVALID || odp_shm_free(shm)) { ODP_ERR("Shm free failed for odp_ipsec"); diff --git a/platform/linux-generic/odp_ipsec_events.c b/platform/linux-generic/odp_ipsec_events.c index cbeb43780..bb786614a 100644 --- a/platform/linux-generic/odp_ipsec_events.c +++ b/platform/linux-generic/odp_ipsec_events.c @@ -12,6 +12,7 @@ #include <odp_debug_internal.h> #include <odp_ipsec_internal.h> #include <odp_pool_internal.h> +#include <odp_global_data.h>
/* Inlined API functions */ #include <odp/api/plat/event_inlines.h> @@ -32,6 +33,11 @@ int _odp_ipsec_events_init_global(void) { odp_pool_param_t param;
+ if (odp_global_ro.disable.ipsec) { + ODP_PRINT("\nODP IPSec is DISABLED\n"); + return 0; + } + odp_pool_param_init(¶m);
param.buf.size = sizeof(ipsec_status_hdr_t); @@ -55,6 +61,9 @@ int _odp_ipsec_events_term_global(void) { int ret;
+ if (odp_global_ro.disable.ipsec) + return 0; + ret = odp_pool_destroy(ipsec_status_pool); if (ret < 0) { ODP_ERR("status pool destroy failed"); diff --git a/platform/linux-generic/odp_ipsec_sad.c b/platform/linux-generic/odp_ipsec_sad.c index 1fb814c5b..b22970791 100644 --- a/platform/linux-generic/odp_ipsec_sad.c +++ b/platform/linux-generic/odp_ipsec_sad.c @@ -13,6 +13,7 @@ #include <odp_debug_internal.h> #include <odp_ipsec_internal.h> #include <odp_ring_mpmc_internal.h> +#include <odp_global_data.h>
#include <odp/api/plat/atomic_inlines.h> #include <odp/api/plat/cpu_inlines.h> @@ -135,6 +136,9 @@ int _odp_ipsec_sad_init_global(void) odp_shm_t shm; unsigned i;
+ if (odp_global_ro.disable.ipsec) + return 0; + shm = odp_shm_reserve("_odp_ipsec_sa_table", sizeof(ipsec_sa_table_t), ODP_CACHE_LINE_SIZE, @@ -191,6 +195,9 @@ int _odp_ipsec_sad_term_global(void) int ret = 0; int rc = 0;
+ if (odp_global_ro.disable.ipsec) + return 0; + for (i = 0; i < ODP_CONFIG_IPSEC_SAS; i++) { ipsec_sa = ipsec_sa_entry(i);
diff --git a/platform/linux-generic/pktio/loop.c b/platform/linux-generic/pktio/loop.c index a79d015cb..e6d004d43 100644 --- a/platform/linux-generic/pktio/loop.c +++ b/platform/linux-generic/pktio/loop.c @@ -17,6 +17,7 @@ #include <odp/api/plat/byteorder_inlines.h> #include <odp_queue_if.h> #include <odp/api/plat/queue_inlines.h> +#include <odp_global_data.h>
#include <protocols/eth.h> #include <protocols/ip.h> @@ -390,8 +391,11 @@ static int loopback_init_capability(pktio_entry_t *pktio_entry) capa->config.pktout.bit.tcp_chksum = 1; capa->config.pktout.bit.udp_chksum = 1; capa->config.pktout.bit.sctp_chksum = 1; - capa->config.inbound_ipsec = 1; - capa->config.outbound_ipsec = 1; + + if (odp_global_ro.disable.ipsec == 0) { + capa->config.inbound_ipsec = 1; + capa->config.outbound_ipsec = 1; + }
capa->config.pktout.bit.ipv4_chksum_ena = capa->config.pktout.bit.ipv4_chksum;
commit aa8547777264d3274a29080139202848fe0585c8 Author: Petri Savolainen petri.savolainen@nokia.com Date: Fri Nov 8 15:45:47 2019 +0200
linux-gen: crypto: support global disable
Check global disable flag to avoid shared memory consumption when crypto is not used.
Signed-off-by: Petri Savolainen petri.savolainen@nokia.com Reviewed-by: Matias Elo matias.elo@nokia.com
diff --git a/platform/linux-generic/odp_crypto_openssl.c b/platform/linux-generic/odp_crypto_openssl.c index 29cd22c2f..fb4a0ddad 100644 --- a/platform/linux-generic/odp_crypto_openssl.c +++ b/platform/linux-generic/odp_crypto_openssl.c @@ -19,6 +19,7 @@ #include <odp/api/plat/thread_inlines.h> #include <odp_packet_internal.h> #include <odp/api/plat/queue_inlines.h> +#include <odp_global_data.h>
/* Inlined API functions */ #include <odp/api/plat/event_inlines.h> @@ -1832,6 +1833,11 @@ static int process_digest_param(odp_crypto_generic_session_t *session,
int odp_crypto_capability(odp_crypto_capability_t *capa) { + if (odp_global_ro.disable.crypto) { + ODP_ERR("Crypto is disabled\n"); + return -1; + } + if (NULL == capa) return -1;
@@ -2075,6 +2081,15 @@ odp_crypto_session_create(odp_crypto_session_param_t *param, odp_crypto_generic_session_t *session; int aes_gcm = 0;
+ if (odp_global_ro.disable.crypto) { + ODP_ERR("Crypto is disabled\n"); + /* Dummy output to avoid compiler warning about uninitialized + * variables */ + *status = ODP_CRYPTO_SES_CREATE_ERR_ENOMEM; + *session_out = ODP_CRYPTO_SESSION_INVALID; + return -1; + } + /* Allocate memory for this session */ session = alloc_session(); if (NULL == session) { @@ -2494,6 +2509,11 @@ int _odp_crypto_init_global(void) int idx; int nlocks = CRYPTO_num_locks();
+ if (odp_global_ro.disable.crypto) { + ODP_PRINT("\nODP crypto is DISABLED\n"); + return 0; + } + /* Calculate the memory size we need */ mem_size = sizeof(odp_crypto_global_t); mem_size += nlocks * sizeof(odp_ticketlock_t); @@ -2539,6 +2559,9 @@ int _odp_crypto_term_global(void) int count = 0; odp_crypto_generic_session_t *session;
+ if (odp_global_ro.disable.crypto) + return 0; + for (session = global->free; session != NULL; session = session->next) count++; if (count != MAX_SESSIONS) { @@ -2567,6 +2590,9 @@ int _odp_crypto_init_local(void)
memset(&local, 0, sizeof(local));
+ if (odp_global_ro.disable.crypto) + return 0; + for (i = 0; i < MAX_SESSIONS; i++) { local.hmac_ctx[i] = HMAC_CTX_new(); local.cmac_ctx[i] = CMAC_CTX_new(); @@ -2595,6 +2621,9 @@ int _odp_crypto_term_local(void) { unsigned i;
+ if (odp_global_ro.disable.crypto) + return 0; + for (i = 0; i < MAX_SESSIONS; i++) { if (local.cmac_ctx[i] != NULL) CMAC_CTX_free(local.cmac_ctx[i]);
commit 85881d71fbfd4f7015ae37d475cbcb6920b6f680 Author: Petri Savolainen petri.savolainen@nokia.com Date: Fri Nov 8 15:41:14 2019 +0200
linux-gen: init: add disabled feature globals
These flags will be set in global init phase according to application input and configuration file.
Signed-off-by: Petri Savolainen petri.savolainen@nokia.com Reviewed-by: Matias Elo matias.elo@nokia.com
diff --git a/platform/linux-generic/include/odp_global_data.h b/platform/linux-generic/include/odp_global_data.h index 08fd24f4a..4b3d72f5d 100644 --- a/platform/linux-generic/include/odp_global_data.h +++ b/platform/linux-generic/include/odp_global_data.h @@ -61,6 +61,15 @@ typedef struct odp_global_data_ro_t { config_t libconfig_runtime; odp_random_kind_t ipsec_rand_kind;
+ /* Disabled features during global init */ + struct { + uint8_t compress; + uint8_t crypto; + uint8_t ipsec; + uint8_t traffic_mngr; + + } disable; + } odp_global_data_ro_t;
/* Modifiable global data. Memory region is shared and synchronized amongst all
commit 0e4d52b760d199f7561d0ea4b6e798af3ecd8cd8 Author: Petri Savolainen petri.savolainen@nokia.com Date: Fri Nov 8 15:37:21 2019 +0200
example: sysinfo: allow crypto capa to fail
Continue system info print also when crypto capability fails. This may happen e.g. when crypto feature is disabled in the implementation. Other system info is still valid and interesting to the user
Signed-off-by: Petri Savolainen petri.savolainen@nokia.com Reviewed-by: Matias Elo matias.elo@nokia.com
diff --git a/example/sysinfo/odp_sysinfo.c b/example/sysinfo/odp_sysinfo.c index 709f25d92..00a32f658 100644 --- a/example/sysinfo/odp_sysinfo.c +++ b/example/sysinfo/odp_sysinfo.c @@ -243,6 +243,7 @@ int main(void) char ava_mask_str[ODP_CPUMASK_STR_SIZE]; char work_mask_str[ODP_CPUMASK_STR_SIZE]; char ctrl_mask_str[ODP_CPUMASK_STR_SIZE]; + int crypto_ret;
printf("\n"); printf("ODP system info example\n"); @@ -304,10 +305,9 @@ int main(void) return -1; }
- if (odp_crypto_capability(&crypto_capa)) { + crypto_ret = odp_crypto_capability(&crypto_capa); + if (crypto_ret < 0) printf("crypto capability failed\n"); - return -1; - }
printf("\n"); printf("S Y S T E M I N F O R M A T I O N\n"); @@ -417,22 +417,25 @@ int main(void) timer_capa.highest_res_ns);
printf("\n"); - printf(" CRYPTO\n"); - printf(" max sessions: %" PRIu32 "\n", - crypto_capa.max_sessions); - printf(" sync mode support: %s\n", - support_level(crypto_capa.sync_mode)); - printf(" async mode support: %s\n", - support_level(crypto_capa.async_mode)); - printf(" cipher algorithms: "); - print_cipher_algos(crypto_capa.ciphers); - printf("\n"); - print_cipher_caps(crypto_capa.ciphers); - printf(" auth algorithms: "); - print_auth_algos(crypto_capa.auths); - printf("\n"); - print_auth_caps(crypto_capa.auths); - printf("\n"); + + if (crypto_ret == 0) { + printf(" CRYPTO\n"); + printf(" max sessions: %" PRIu32 "\n", + crypto_capa.max_sessions); + printf(" sync mode support: %s\n", + support_level(crypto_capa.sync_mode)); + printf(" async mode support: %s\n", + support_level(crypto_capa.async_mode)); + printf(" cipher algorithms: "); + print_cipher_algos(crypto_capa.ciphers); + printf("\n"); + print_cipher_caps(crypto_capa.ciphers); + printf(" auth algorithms: "); + print_auth_algos(crypto_capa.auths); + printf("\n"); + print_auth_caps(crypto_capa.auths); + printf("\n"); + }
printf(" SHM MEMORY BLOCKS:\n"); odp_shm_print_all();
commit 7a57b819d215b689b3c9ed0f4d766de809c5a431 Author: Petri Savolainen petri.savolainen@nokia.com Date: Thu Nov 7 15:48:36 2019 +0200
linux-gen: init: type define global data structures
Signed-off-by: Petri Savolainen petri.savolainen@nokia.com Reviewed-by: Matias Elo matias.elo@nokia.com
diff --git a/platform/linux-generic/include/odp_global_data.h b/platform/linux-generic/include/odp_global_data.h index fdb057b3e..08fd24f4a 100644 --- a/platform/linux-generic/include/odp_global_data.h +++ b/platform/linux-generic/include/odp_global_data.h @@ -39,7 +39,7 @@ typedef struct {
/* Read-only global data. Members should not be modified after global init * to enable process more support. */ -struct odp_global_data_ro_t { +typedef struct odp_global_data_ro_t { odp_init_t init_param; /* directory for odp mmaped files */ char *shm_dir; @@ -60,17 +60,19 @@ struct odp_global_data_ro_t { config_t libconfig_default; config_t libconfig_runtime; odp_random_kind_t ipsec_rand_kind; -}; + +} odp_global_data_ro_t;
/* Modifiable global data. Memory region is shared and synchronized amongst all * worker processes. */ -struct odp_global_data_rw_t { +typedef struct odp_global_data_rw_t { odp_bool_t dpdk_initialized; odp_bool_t inline_timers; -};
-extern struct odp_global_data_ro_t odp_global_ro; -extern struct odp_global_data_rw_t *odp_global_rw; +} odp_global_data_rw_t; + +extern odp_global_data_ro_t odp_global_ro; +extern odp_global_data_rw_t *odp_global_rw;
#ifdef __cplusplus } diff --git a/platform/linux-generic/odp_init.c b/platform/linux-generic/odp_init.c index 8a5b884b5..f68379cda 100644 --- a/platform/linux-generic/odp_init.c +++ b/platform/linux-generic/odp_init.c @@ -45,8 +45,8 @@ enum init_stage { ALL_INIT /* All init stages completed */ };
-struct odp_global_data_ro_t odp_global_ro; -struct odp_global_data_rw_t *odp_global_rw; +odp_global_data_ro_t odp_global_ro; +odp_global_data_rw_t *odp_global_rw;
void odp_init_param_init(odp_init_t *param) { @@ -58,7 +58,7 @@ static int global_rw_data_init(void) odp_shm_t shm;
shm = odp_shm_reserve("_odp_global_rw_data", - sizeof(struct odp_global_data_rw_t), + sizeof(odp_global_data_rw_t), ODP_CACHE_LINE_SIZE, 0);
odp_global_rw = odp_shm_addr(shm); @@ -67,7 +67,7 @@ static int global_rw_data_init(void) return -1; }
- memset(odp_global_rw, 0, sizeof(struct odp_global_data_rw_t)); + memset(odp_global_rw, 0, sizeof(odp_global_data_rw_t));
return 0; } @@ -266,7 +266,7 @@ int odp_init_global(odp_instance_t *instance, const odp_init_t *params, const odp_platform_init_t *platform_params ODP_UNUSED) { - memset(&odp_global_ro, 0, sizeof(struct odp_global_data_ro_t)); + memset(&odp_global_ro, 0, sizeof(odp_global_data_ro_t)); odp_global_ro.main_pid = getpid();
enum init_stage stage = NO_INIT;
-----------------------------------------------------------------------
Summary of changes: configure.ac | 2 +- example/sysinfo/odp_sysinfo.c | 41 +++++++++++++----------- example/timer/odp_timer_accuracy.c | 9 +++--- include/odp/api/spec/feature.h | 4 +++ platform/linux-generic/include/odp_global_data.h | 23 +++++++++---- platform/linux-generic/odp_comp.c | 12 ++++++- platform/linux-generic/odp_crypto_openssl.c | 29 +++++++++++++++++ platform/linux-generic/odp_init.c | 32 +++++++++++++++--- platform/linux-generic/odp_ipsec.c | 18 ++++++++++- platform/linux-generic/odp_ipsec_events.c | 9 ++++++ platform/linux-generic/odp_ipsec_sad.c | 7 ++++ platform/linux-generic/odp_traffic_mngr.c | 9 +++--- platform/linux-generic/pktio/loop.c | 8 +++-- test/performance/odp_cpu_bench.c | 11 ++++--- test/performance/odp_l2fwd.c | 11 ++++--- test/performance/odp_pool_perf.c | 1 + test/performance/odp_queue_perf.c | 1 + test/performance/odp_sched_perf.c | 1 + test/performance/odp_sched_pktio.c | 11 ++++--- test/performance/odp_timer_perf.c | 1 + test/validation/api/Makefile.am | 3 +- test/validation/api/init/.gitignore | 3 +- test/validation/api/init/Makefile.am | 9 ++++-- test/validation/api/init/init_main.c | 40 +++++++++++++++++------ 24 files changed, 222 insertions(+), 73 deletions(-)
hooks/post-receive