[lng-odp] [Bug 1441] ./configure CFLAGS=-DIPSEC_POLL_QUEUES does not compile
https://bugs.linaro.org/show_bug.cgi?id=1441 Alexandru Badicioiu alexandru.badici...@linaro.org changed: What|Removed |Added CC||alexandru.badicioiu@linaro. ||org --- Comment #1 from Alexandru Badicioiu alexandru.badici...@linaro.org --- This bug should not be fixed , it is obsoleted by https://cards.linaro.org/browse/LNG-872. -- You are receiving this mail because: You are the assignee for the bug.___ lng-odp mailing list lng-odp@lists.linaro.org https://lists.linaro.org/mailman/listinfo/lng-odp
Re: [lng-odp] NO ODP API for Packet classification and Packet Shaping
On 04/06/2015 07:41 PM, Bill Fischofer wrote: I would call these pool groups for symmetry with queue groups and so the API would be odp_pool_create_group(), odp_pool_destroy_group(), etc. If it is called pool group, then it sounds like a separate abstraction. Which in turn needs a separate type and new API functions to destroy or attach to somewhere (pktio, CoS, etc.). ___ lng-odp mailing list lng-odp@lists.linaro.org https://lists.linaro.org/mailman/listinfo/lng-odp
Re: [lng-odp] NO ODP API for Packet classification and Packet Shaping
On Tue, Apr 07, 2015 at 12:01:30PM +0300, Taras Kondratiuk wrote: On 04/06/2015 07:41 PM, Bill Fischofer wrote: I would call these pool groups for symmetry with queue groups and so the API would be odp_pool_create_group(), odp_pool_destroy_group(), etc. If it is called pool group, then it sounds like a separate abstraction. Which in turn needs a separate type and new API functions to destroy or attach to somewhere (pktio, CoS, etc.). We have introduced the new classification term ODP_PMR_LEN to address Segmentation optimization use case by attaching different pools based on packet len. Are we introducing the new composite pool schematics because ODP_PMR_LEN cannot implemented in hardware ? ___ lng-odp mailing list lng-odp@lists.linaro.org https://lists.linaro.org/mailman/listinfo/lng-odp ___ lng-odp mailing list lng-odp@lists.linaro.org https://lists.linaro.org/mailman/listinfo/lng-odp
[lng-odp] [PATCH] configure.ac: include configure.m4 if platform explicitly selected
configure script selects linux-generic as default platform and includes platfrom specific configure scripts: ./platform/linux-generic/m4/configure.m4 In case if --with-platfrom=linux-generic was provided to configure platform specific file is not included and that branch of code does not run. This change has to be done for each platform since we have there pktio_env scripts but m4_include macro does not recognize bash variables. So that there is if check. Signed-off-by: Maxim Uvarov maxim.uva...@linaro.org --- configure.ac | 9 - 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/configure.ac b/configure.ac index 57054c5..7db2186 100644 --- a/configure.ac +++ b/configure.ac @@ -58,11 +58,18 @@ AC_ARG_WITH([platform], [select platform to be used, default linux-generic])], [], [with_platform=linux-generic - m4_include([./platform/linux-generic/m4/configure.m4]) ]) AC_SUBST([with_platform]) +if test ${with_platform} == linux-generic; +then + m4_include([./platform/linux-generic/m4/configure.m4]) +else + echo UNSUPPORTED PLATFORM: ${with_platform} + exit 1 +fi + AC_ARG_WITH([sdk-install-path], AC_HELP_STRING([--with-sdk-install-path=DIR path to external libs and headers], [(or in the default path if not specified).]), -- 1.9.1 ___ lng-odp mailing list lng-odp@lists.linaro.org https://lists.linaro.org/mailman/listinfo/lng-odp
Re: [lng-odp] [PATCH 1/1] odp_ipsec: runtime select scheduled vs poll queues
On 04/06/15 20:50, Mike Holmes wrote: Subject needs to localize to examples example: odp_ipsec: runtime select scheduled vs poll queues This patch also fixes the compile of ./configure CFLAGS=-DIPSEC_POLL_QUEUES https://bugs.linaro.org/show_bug.cgi?id=1441 so it should be a separate patch referencing this bug. Can we on each build build 2 versions of binaries with poll queues and without. In that case if something will stop to compile we can find it earlier. Maxim. On 2 April 2015 at 03:29, alexandru.badici...@linaro.org mailto:alexandru.badici...@linaro.org wrote: From: Alexandru Badicioiu alexandru.badici...@linaro.org mailto:alexandru.badici...@linaro.org Signed-off-by: Alexandru Badicioiu alexandru.badici...@linaro.org mailto:alexandru.badici...@linaro.org --- example/ipsec/odp_ipsec.c | 64 +++- 1 files changed, 33 insertions(+), 31 deletions(-) diff --git a/example/ipsec/odp_ipsec.c b/example/ipsec/odp_ipsec.c index 0cbf5b4..9fb048a 100644 --- a/example/ipsec/odp_ipsec.c +++ b/example/ipsec/odp_ipsec.c @@ -211,14 +211,14 @@ void free_pkt_ctx(pkt_ctx_t *ctx) /** * Example supports either polling queues or using odp_schedule - * - * Specify CFLAGS=-DIPSEC_POLL_QUEUES during configure to enable polling - * versus calling odp_schedule - * - * @todo Make this command line driven versus compile time - * (see https://bugs.linaro.org/show_bug.cgi?id=625) */ -#ifdef IPSEC_POLL_QUEUES +typedef odp_queue_t (*queue_create_func_t) + (const char *, odp_queue_type_t, odp_queue_param_t *); +typedef odp_event_t (*schedule_func_t) +(odp_queue_t *, uint64_t); + +static queue_create_func_t queue_create; +static schedule_func_t schedule; #define MAX_POLL_QUEUES 256 @@ -245,7 +245,8 @@ odp_queue_t polled_odp_queue_create(const char *name, if ((ODP_QUEUE_TYPE_SCHED == type) || (ODP_QUEUE_TYPE_PKTIN == type)) { poll_queues[num_polled_queues++] = my_queue; - printf(%s: adding %d\n, __func__, my_queue); + printf(%s: adding %PRIu64\n, __func__, + odp_queue_to_u64(my_queue)); } return my_queue; @@ -255,7 +256,7 @@ odp_queue_t polled_odp_queue_create(const char *name, * odp_schedule replacement to poll queues versus using ODP scheduler */ static -odp_buffer_t polled_odp_schedule(odp_queue_t *from, uint64_t wait) +odp_event_t polled_odp_schedule(odp_queue_t *from, uint64_t wait) { uint64_t start_cycle; uint64_t cycle; @@ -268,11 +269,11 @@ odp_buffer_t polled_odp_schedule(odp_queue_t *from, uint64_t wait) for (idx = 0; idx num_polled_queues; idx++) { odp_queue_t queue = poll_queues[idx]; - odp_buffer_t buf; + odp_event_t buf; buf = odp_queue_deq(queue); - if (ODP_BUFFER_INVALID != buf) { + if (ODP_EVENT_INVALID != buf) { *from = queue; return buf; } @@ -285,11 +286,11 @@ odp_buffer_t polled_odp_schedule(odp_queue_t *from, uint64_t wait) break; if (0 == start_cycle) { - start_cycle = odp_time_get_cycles(); + start_cycle = odp_time_cycles(); continue; } - cycle = odp_time_get_cycles(); + cycle = odp_time_cycles(); diff = odp_time_diff_cycles(start_cycle, cycle); if (wait diff) @@ -297,20 +298,9 @@ odp_buffer_t polled_odp_schedule(odp_queue_t *from, uint64_t wait) } *from = ODP_QUEUE_INVALID; - return ODP_BUFFER_INVALID; + return ODP_EVENT_INVALID; } - -#define QUEUE_CREATE(n, t, p) polled_odp_queue_create(n, t, p) -#define SCHEDULE(q, w)polled_odp_schedule(q, w) - -#else - -#define QUEUE_CREATE(n, t, p) odp_queue_create(n, t, p) -#define SCHEDULE(q, w)odp_schedule(q, w) - -#endif - /** * IPsec pre argument processing intialization */ @@ -330,7 +320,7 @@ void ipsec_init_pre(void) qparam.sched.sync = ODP_SCHED_SYNC_ATOMIC; qparam.sched.group = ODP_SCHED_GROUP_DEFAULT; - completionq = QUEUE_CREATE(completion, + completionq = queue_create(completion, ODP_QUEUE_TYPE_SCHED, qparam); if (ODP_QUEUE_INVALID ==
Re: [lng-odp] NO ODP API for Packet classification and Packet Shaping
On Tue, Apr 07, 2015 at 01:58:51PM +0300, Taras Kondratiuk wrote: On 04/07/2015 12:40 PM, Jerin Jacob wrote: On Tue, Apr 07, 2015 at 12:01:30PM +0300, Taras Kondratiuk wrote: On 04/06/2015 07:41 PM, Bill Fischofer wrote: I would call these pool groups for symmetry with queue groups and so the API would be odp_pool_create_group(), odp_pool_destroy_group(), etc. If it is called pool group, then it sounds like a separate abstraction. Which in turn needs a separate type and new API functions to destroy or attach to somewhere (pktio, CoS, etc.). We have introduced the new classification term ODP_PMR_LEN to address Segmentation optimization use case by attaching different pools based on packet len. Are we introducing the new composite pool schematics because ODP_PMR_LEN cannot implemented in hardware ? Hi Jerin, I've described in this thread why ODP_PMR_LEN does not address this use-case correctly. It sets too strict classification rules, which are not needed in this use-case. Hi Taras, Got the use-case description from the thread. If application really _demands_ for such fine grained memory optimization then composite pool OR additional hint in the pool creation is the way to go ___ lng-odp mailing list lng-odp@lists.linaro.org https://lists.linaro.org/mailman/listinfo/lng-odp
Re: [lng-odp] [PATCH 1/1] odp_ipsec: runtime select scheduled vs poll queues
On 7 April 2015 at 08:07, Maxim Uvarov maxim.uva...@linaro.org wrote: On 04/06/15 20:50, Mike Holmes wrote: Subject needs to localize to examples example: odp_ipsec: runtime select scheduled vs poll queues This patch also fixes the compile of ./configure CFLAGS=-DIPSEC_POLL_QUEUES https://bugs.linaro.org/show_bug.cgi?id=1441 so it should be a separate patch referencing this bug. Can we on each build build 2 versions of binaries with poll queues and without. In that case if something will stop to compile we can find it earlier. This patch removes the @defines so the code cannot go stale it becomes a run time decision which is good. We just need to fix the bug from when buffers - events that we did not notice that it was not converted so that we complete that change first I think. Should be a simple split of the patch. Maxim. On 2 April 2015 at 03:29, alexandru.badici...@linaro.org mailto: alexandru.badici...@linaro.org wrote: From: Alexandru Badicioiu alexandru.badici...@linaro.org mailto:alexandru.badici...@linaro.org Signed-off-by: Alexandru Badicioiu alexandru.badici...@linaro.org mailto:alexandru.badici...@linaro.org --- example/ipsec/odp_ipsec.c | 64 +++- 1 files changed, 33 insertions(+), 31 deletions(-) diff --git a/example/ipsec/odp_ipsec.c b/example/ipsec/odp_ipsec.c index 0cbf5b4..9fb048a 100644 --- a/example/ipsec/odp_ipsec.c +++ b/example/ipsec/odp_ipsec.c @@ -211,14 +211,14 @@ void free_pkt_ctx(pkt_ctx_t *ctx) /** * Example supports either polling queues or using odp_schedule - * - * Specify CFLAGS=-DIPSEC_POLL_QUEUES during configure to enable polling - * versus calling odp_schedule - * - * @todo Make this command line driven versus compile time - * (see https://bugs.linaro.org/show_bug.cgi?id=625) */ -#ifdef IPSEC_POLL_QUEUES +typedef odp_queue_t (*queue_create_func_t) + (const char *, odp_queue_type_t, odp_queue_param_t *); +typedef odp_event_t (*schedule_func_t) +(odp_queue_t *, uint64_t); + +static queue_create_func_t queue_create; +static schedule_func_t schedule; #define MAX_POLL_QUEUES 256 @@ -245,7 +245,8 @@ odp_queue_t polled_odp_queue_create(const char *name, if ((ODP_QUEUE_TYPE_SCHED == type) || (ODP_QUEUE_TYPE_PKTIN == type)) { poll_queues[num_polled_queues++] = my_queue; - printf(%s: adding %d\n, __func__, my_queue); + printf(%s: adding %PRIu64\n, __func__, + odp_queue_to_u64(my_queue)); } return my_queue; @@ -255,7 +256,7 @@ odp_queue_t polled_odp_queue_create(const char *name, * odp_schedule replacement to poll queues versus using ODP scheduler */ static -odp_buffer_t polled_odp_schedule(odp_queue_t *from, uint64_t wait) +odp_event_t polled_odp_schedule(odp_queue_t *from, uint64_t wait) { uint64_t start_cycle; uint64_t cycle; @@ -268,11 +269,11 @@ odp_buffer_t polled_odp_schedule(odp_queue_t *from, uint64_t wait) for (idx = 0; idx num_polled_queues; idx++) { odp_queue_t queue = poll_queues[idx]; - odp_buffer_t buf; + odp_event_t buf; buf = odp_queue_deq(queue); - if (ODP_BUFFER_INVALID != buf) { + if (ODP_EVENT_INVALID != buf) { *from = queue; return buf; } @@ -285,11 +286,11 @@ odp_buffer_t polled_odp_schedule(odp_queue_t *from, uint64_t wait) break; if (0 == start_cycle) { - start_cycle = odp_time_get_cycles(); + start_cycle = odp_time_cycles(); continue; } - cycle = odp_time_get_cycles(); + cycle = odp_time_cycles(); diff = odp_time_diff_cycles(start_cycle, cycle); if (wait diff) @@ -297,20 +298,9 @@ odp_buffer_t polled_odp_schedule(odp_queue_t *from, uint64_t wait) } *from = ODP_QUEUE_INVALID; - return ODP_BUFFER_INVALID; + return ODP_EVENT_INVALID; } - -#define QUEUE_CREATE(n, t, p) polled_odp_queue_create(n, t, p) -#define SCHEDULE(q, w)polled_odp_schedule(q, w) - -#else - -#define QUEUE_CREATE(n, t, p) odp_queue_create(n, t, p) -#define SCHEDULE(q, w)odp_schedule(q, w) - -#endif - /** *
Re: [lng-odp] [PATCH 1/1] odp_ipsec: runtime select scheduled vs poll queues
On 04/07/15 15:31, Mike Holmes wrote: On 7 April 2015 at 08:07, Maxim Uvarov maxim.uva...@linaro.org mailto:maxim.uva...@linaro.org wrote: On 04/06/15 20:50, Mike Holmes wrote: Subject needs to localize to examples example: odp_ipsec: runtime select scheduled vs poll queues This patch also fixes the compile of ./configure CFLAGS=-DIPSEC_POLL_QUEUES https://bugs.linaro.org/show_bug.cgi?id=1441 so it should be a separate patch referencing this bug. Can we on each build build 2 versions of binaries with poll queues and without. In that case if something will stop to compile we can find it earlier. This patch removes the @defines so the code cannot go stale it becomes a run time decision which is good. We just need to fix the bug from when buffers - events that we did not notice that it was not converted so that we complete that change first I think. Should be a simple split of the patch. ah, yes, that is ok. Maxim. On 2 April 2015 at 03:29, alexandru.badici...@linaro.org mailto:alexandru.badici...@linaro.org mailto:alexandru.badici...@linaro.org mailto:alexandru.badici...@linaro.org wrote: From: Alexandru Badicioiu alexandru.badici...@linaro.org mailto:alexandru.badici...@linaro.org mailto:alexandru.badici...@linaro.org mailto:alexandru.badici...@linaro.org Signed-off-by: Alexandru Badicioiu alexandru.badici...@linaro.org mailto:alexandru.badici...@linaro.org mailto:alexandru.badici...@linaro.org mailto:alexandru.badici...@linaro.org --- example/ipsec/odp_ipsec.c | 64 +++- 1 files changed, 33 insertions(+), 31 deletions(-) diff --git a/example/ipsec/odp_ipsec.c b/example/ipsec/odp_ipsec.c index 0cbf5b4..9fb048a 100644 --- a/example/ipsec/odp_ipsec.c +++ b/example/ipsec/odp_ipsec.c @@ -211,14 +211,14 @@ void free_pkt_ctx(pkt_ctx_t *ctx) /** * Example supports either polling queues or using odp_schedule - * - * Specify CFLAGS=-DIPSEC_POLL_QUEUES during configure to enable polling - * versus calling odp_schedule - * - * @todo Make this command line driven versus compile time - * (see https://bugs.linaro.org/show_bug.cgi?id=625) */ -#ifdef IPSEC_POLL_QUEUES +typedef odp_queue_t (*queue_create_func_t) + (const char *, odp_queue_type_t, odp_queue_param_t *); +typedef odp_event_t (*schedule_func_t) +(odp_queue_t *, uint64_t); + +static queue_create_func_t queue_create; +static schedule_func_t schedule; #define MAX_POLL_QUEUES 256 @@ -245,7 +245,8 @@ odp_queue_t polled_odp_queue_create(const char *name, if ((ODP_QUEUE_TYPE_SCHED == type) || (ODP_QUEUE_TYPE_PKTIN == type)) { poll_queues[num_polled_queues++] = my_queue; - printf(%s: adding %d\n, __func__, my_queue); + printf(%s: adding %PRIu64\n, __func__, + odp_queue_to_u64(my_queue)); } return my_queue; @@ -255,7 +256,7 @@ odp_queue_t polled_odp_queue_create(const char *name, * odp_schedule replacement to poll queues versus using ODP scheduler */ static -odp_buffer_t polled_odp_schedule(odp_queue_t *from, uint64_t wait) +odp_event_t polled_odp_schedule(odp_queue_t *from, uint64_t wait) { uint64_t start_cycle; uint64_t cycle; @@ -268,11 +269,11 @@ odp_buffer_t polled_odp_schedule(odp_queue_t *from, uint64_t wait) for (idx = 0; idx num_polled_queues; idx++) { odp_queue_t queue = poll_queues[idx]; - odp_buffer_t buf; + odp_event_t buf; buf = odp_queue_deq(queue); - if (ODP_BUFFER_INVALID != buf) { + if (ODP_EVENT_INVALID != buf) { *from = queue; return buf; } @@ -285,11 +286,11 @@ odp_buffer_t polled_odp_schedule(odp_queue_t *from, uint64_t wait) break;
Re: [lng-odp] [PATCH v2 1/2] configure: add ARCH optimisation support by directory
I'm ok with that patches. Anders do you want also to take a look? Thanks, Maxim. On 04/06/15 22:34, Mike Holmes wrote: Signed-off-by: Mike Holmes mike.hol...@linaro.org --- configure.ac | 11 +++ 1 file changed, 11 insertions(+) diff --git a/configure.ac b/configure.ac index 57054c5..f14648c 100644 --- a/configure.ac +++ b/configure.ac @@ -44,6 +44,16 @@ AC_TYPE_UINT32_T AC_TYPE_UINT64_T ## +# Which archetecture optimizations will we use +## +AS_CASE([$host], + [x86*], [ARCH=x86], + [mips64*], [ARCH=mips64], + [ARCH=linux] +) +AC_SUBST([ARCH]) + +## # Set correct platform library version ## AGE=0 @@ -286,6 +296,7 @@ AC_MSG_RESULT([ Library version: ${ODP_LIBSO_VERSION} + arch ${ARCH} with_platform: ${with_platform} prefix: ${prefix} sysconfdir: ${sysconfdir} ___ lng-odp mailing list lng-odp@lists.linaro.org https://lists.linaro.org/mailman/listinfo/lng-odp
Re: [lng-odp] NO ODP API for Packet classification and Packet Shaping
I'd like to discuss this during today's ODP call as there are lots of good ideas being discussed here. Bill On Tue, Apr 7, 2015 at 7:28 AM, Jerin Jacob jerin.ja...@caviumnetworks.com wrote: On Tue, Apr 07, 2015 at 01:58:51PM +0300, Taras Kondratiuk wrote: On 04/07/2015 12:40 PM, Jerin Jacob wrote: On Tue, Apr 07, 2015 at 12:01:30PM +0300, Taras Kondratiuk wrote: On 04/06/2015 07:41 PM, Bill Fischofer wrote: I would call these pool groups for symmetry with queue groups and so the API would be odp_pool_create_group(), odp_pool_destroy_group(), etc. If it is called pool group, then it sounds like a separate abstraction. Which in turn needs a separate type and new API functions to destroy or attach to somewhere (pktio, CoS, etc.). We have introduced the new classification term ODP_PMR_LEN to address Segmentation optimization use case by attaching different pools based on packet len. Are we introducing the new composite pool schematics because ODP_PMR_LEN cannot implemented in hardware ? Hi Jerin, I've described in this thread why ODP_PMR_LEN does not address this use-case correctly. It sets too strict classification rules, which are not needed in this use-case. Hi Taras, Got the use-case description from the thread. If application really _demands_ for such fine grained memory optimization then composite pool OR additional hint in the pool creation is the way to go ___ lng-odp mailing list lng-odp@lists.linaro.org https://lists.linaro.org/mailman/listinfo/lng-odp
[lng-odp] [PATCH] linux-generic: odp_linux: migrate helpers to helper dir
The odph helper src files do not belong in linux-generic, move them out to the helper directory. From the helper directory they may be more cleanly extended to support other execution environments beyond Linux. Clean up checkpatch whitespace warning in the migrated code. Signed-off-by: Mike Holmes mike.hol...@linaro.org --- platform/linux-generic/odp_linux.c = helper/src/linux.c | 1 - platform/linux-generic/odp_ring.c = helper/src/ring.c | 0 platform/linux-generic/Makefile.am | 4 ++-- 3 files changed, 2 insertions(+), 3 deletions(-) rename platform/linux-generic/odp_linux.c = helper/src/linux.c (99%) rename platform/linux-generic/odp_ring.c = helper/src/ring.c (100%) diff --git a/platform/linux-generic/odp_linux.c b/helper/src/linux.c similarity index 99% rename from platform/linux-generic/odp_linux.c rename to helper/src/linux.c index 6865ab1..b753e4d 100644 --- a/platform/linux-generic/odp_linux.c +++ b/helper/src/linux.c @@ -141,7 +141,6 @@ void odph_linux_pthread_join(odph_linux_pthread_t *thread_tbl, int num) pthread_attr_destroy(thread_tbl[i].attr); free(thread_tbl[i].start_args); } - } diff --git a/platform/linux-generic/odp_ring.c b/helper/src/ring.c similarity index 100% rename from platform/linux-generic/odp_ring.c rename to helper/src/ring.c diff --git a/platform/linux-generic/Makefile.am b/platform/linux-generic/Makefile.am index e5558ac..aa8973b 100644 --- a/platform/linux-generic/Makefile.am +++ b/platform/linux-generic/Makefile.am @@ -149,14 +149,14 @@ __LIB__libodp_la_SOURCES = \ odp_event.c \ odp_init.c \ odp_impl.c \ - odp_linux.c \ + ../../helper/src/linux.c \ odp_packet.c \ odp_packet_flags.c \ odp_packet_io.c \ odp_packet_socket.c \ odp_pool.c \ odp_queue.c \ - odp_ring.c \ + ../../helper/src/ring.c \ odp_rwlock.c \ odp_schedule.c \ odp_shared_memory.c \ -- 2.1.0 ___ lng-odp mailing list lng-odp@lists.linaro.org https://lists.linaro.org/mailman/listinfo/lng-odp
[lng-odp] UberConference Reminder
UberConference Reminder___ lng-odp mailing list lng-odp@lists.linaro.org https://lists.linaro.org/mailman/listinfo/lng-odp
[lng-odp] [PATCHv11 4/4] validation: add new test l2fwd_run
Signed-off-by: Maxim Uvarov maxim.uva...@linaro.org --- test/performance/Makefile.am | 2 +- test/performance/odp_l2fwd_run | 65 ++ 2 files changed, 66 insertions(+), 1 deletion(-) create mode 100755 test/performance/odp_l2fwd_run diff --git a/test/performance/Makefile.am b/test/performance/Makefile.am index b501584..63f73e0 100644 --- a/test/performance/Makefile.am +++ b/test/performance/Makefile.am @@ -6,7 +6,7 @@ EXECUTABLES = odp_atomic COMPILE_ONLY = odp_scheduling odp_l2fwd -TESTSCRIPTS = odp_scheduling_run +TESTSCRIPTS = odp_scheduling_run odp_l2fwd_run if test_perf TESTS = $(EXECUTABLES) $(TESTSCRIPTS) diff --git a/test/performance/odp_l2fwd_run b/test/performance/odp_l2fwd_run new file mode 100755 index 000..434c66f --- /dev/null +++ b/test/performance/odp_l2fwd_run @@ -0,0 +1,65 @@ +#!/bin/sh +# +# Copyright (c) 2015, Linaro Limited +# All rights reserved. +# +# SPDX-License-Identifier: BSD-3-Clause +# + +TEST_DIR=${TEST_DIR:-$(dirname $0)} + +PATH=$TEST_DIR:$TEST_DIR/../../example/generator:$PATH + +# exit codes expected by automake for skipped tests +TEST_SKIPPED=77 + +# Use installed pktio env or for make check take it from platform directory +if [ -f ./pktio_env ]; then + . ./pktio_env +else if [ $ODP_PLATFORM = ]; then + echo $0: error: ODP_PLATFORM must be defined + # not skipped as this should never happen via make check + exit 1 +else if [ -f ${TEST_DIR}/../../platform/$ODP_PLATFORM/test/pktio_env ]; then + . ${TEST_DIR}/../../platform/$ODP_PLATFORM/test/pktio_env +else + echo BUG: unable to find pktio_env! + echo pktio_env has to be in current directory or in platform/\$ODP_PLATFORM/test. + echo ODP_PLATFORM=\$ODP_PLATFORM\ + exit 1 + fi +fi +fi + +run_l2fwd() +{ + setup_pktio_env + if [ $? -ne 0 ]; then + echo setup_pktio_env error $? + exit $TEST_SKIPPED + fi + + #@todo: limit odp_generator to cores + #https://bugs.linaro.org/show_bug.cgi?id=1398 + (odp_generator -I $IF0 \ + --srcmac fe:0f:97:c9:e0:44 --dstmac 32:cb:9b:27:2f:1a \ + --srcip 192.168.0.1 --dstip 192.168.0.2 -m u 21 /dev/null) \ + 21 /dev/null + + echo Run odp_l2fwd -i $IF1,$IF2 -m 0 -t 30 -c 2 + odp_l2fwd -i $IF1,$IF2 -m 0 -t 30 -c 2 + + cleanup_pktio_env + if [ $? -ne 0 ]; then + echo cleanup_pktio_env error $? + exit $TEST_SKIPPED + fi + + exit 0 +} + +case $1 in + setup) setup_pktio_env ;; + cleanup) cleanup_pktio_env ;; + *) run_l2fwd ;; +esac -- 1.9.1 ___ lng-odp mailing list lng-odp@lists.linaro.org https://lists.linaro.org/mailman/listinfo/lng-odp
Re: [lng-odp] [PATCH v2 1/2] scripts: odp_check: remove astyle
Bill, I think Mike fixes renaming and it has to be ok now. Thanks, Maxim. On 04/07/15 18:21, Mike Holmes wrote: Ping On 1 April 2015 at 17:46, Mike Holmes mike.hol...@linaro.org mailto:mike.hol...@linaro.org wrote: ODP has not adopted a style that can be universally applied with a tool such as astyle. Remove astyle leaving only the cleanup for whitespace and checkpatch elements for checking src files before a patch is created. Signed-off-by: Mike Holmes mike.hol...@linaro.org mailto:mike.hol...@linaro.org --- scripts/odp_check | 10 +- 1 file changed, 1 insertion(+), 9 deletions(-) diff --git a/scripts/odp_check b/scripts/odp_check index 09c859b..33809dc 100755 --- a/scripts/odp_check +++ b/scripts/odp_check @@ -1,8 +1,6 @@ #!/bin/bash # -# This script is an indenter, white space remover, -# formatter, and beautifier and general source file -# clean up for the ODP project. +# This script is a clean up for the ODP project src files. # # Usage # ./scripts/opd_check path/filename @@ -10,11 +8,5 @@ set -e DIR=$( cd $( dirname ${BASH_SOURCE[0]} ) pwd ) -if ! type astyle /dev/null /dev/null; then - echo Please install astyle from http://astyle.sourceforge.net/; - exit -1 -fi - -astyle --style=linux --indent=force-tab=8 --align-pointer=name $1 $DIR/cleanfile $1 $DIR/checkpatch.pl http://checkpatch.pl -f $1 -- 2.1.0 -- Mike Holmes Technical Manager - Linaro Networking Group Linaro.org http://www.linaro.org/***│ *Open source software for ARM SoCs ___ lng-odp mailing list lng-odp@lists.linaro.org https://lists.linaro.org/mailman/listinfo/lng-odp ___ lng-odp mailing list lng-odp@lists.linaro.org https://lists.linaro.org/mailman/listinfo/lng-odp
Re: [lng-odp] [PATCH v2 2/2] scripts: odp_check: rename to odp_clean_and_check
yes - looks wrong, thanks - fixing now On 7 April 2015 at 12:39, Maxim Uvarov maxim.uva...@linaro.org wrote: On 04/02/15 00:46, Mike Holmes wrote: diff --git a/scripts/odp_check b/odp_clean_and_check similarity index 100% should be in scripts. Maxim. ___ lng-odp mailing list lng-odp@lists.linaro.org https://lists.linaro.org/mailman/listinfo/lng-odp -- Mike Holmes Technical Manager - Linaro Networking Group Linaro.org http://www.linaro.org/ *│ *Open source software for ARM SoCs ___ lng-odp mailing list lng-odp@lists.linaro.org https://lists.linaro.org/mailman/listinfo/lng-odp
Re: [lng-odp] [PATCH 1/2] linux-generic: system_info: use global data struct
On 04/07/15 18:24, Mike Holmes wrote: ping - this consolidates the global data making the helper and other platform specific clean up easier. If it was one patch, not 2 it will be absolutely the same number of changes. I would merge that to 1 on applying. Maxim. On 1 April 2015 at 18:29, Mike Holmes mike.hol...@linaro.org mailto:mike.hol...@linaro.org wrote: Don't store ODP global data in multiple locations, gather global data into odp_global_data. Move the static odp_system_info into odp_global_data Signed-off-by: Mike Holmes mike.hol...@linaro.org mailto:mike.hol...@linaro.org --- platform/linux-generic/include/odp_internal.h | 11 + platform/linux-generic/odp_system_info.c | 33 +-- 2 files changed, 22 insertions(+), 22 deletions(-) diff --git a/platform/linux-generic/include/odp_internal.h b/platform/linux-generic/include/odp_internal.h index 0961cce..64dee42 100644 --- a/platform/linux-generic/include/odp_internal.h +++ b/platform/linux-generic/include/odp_internal.h @@ -22,9 +22,20 @@ extern C { extern __thread int __odp_errno; +typedef struct { + uint64_t cpu_hz; + uint64_t huge_page_size; + uint64_t page_size; + int cache_line_size; + int cpu_count; + char model_str[128]; + +} odp_system_info_t; + struct odp_global_data_s { odp_log_func_t log_fn; odp_abort_func_t abort_fn; + odp_system_info_t odp_system_info; }; extern struct odp_global_data_s odp_global_data; diff --git a/platform/linux-generic/odp_system_info.c b/platform/linux-generic/odp_system_info.c index 6b6c723..cae310f 100644 --- a/platform/linux-generic/odp_system_info.c +++ b/platform/linux-generic/odp_system_info.c @@ -20,15 +20,7 @@ #include sys/types.h #include dirent.h -typedef struct { - uint64_t cpu_hz; - uint64_t huge_page_size; - uint64_t page_size; - int cache_line_size; - int cpu_count; - char model_str[128]; -} odp_system_info_t; typedef struct { const char *cpu_arch_str; @@ -36,9 +28,6 @@ typedef struct { } odp_compiler_info_t; -static odp_system_info_t odp_system_info; - - #define CACHE_LNSZ_FILE \ /sys/devices/system/cpu/cpu0/cache/index0/coherency_line_size @@ -310,7 +299,7 @@ static int systemcpu(odp_system_info_t *sysinfo) return -1; } - odp_system_info.huge_page_size = huge_page_size(); + odp_global_data.odp_system_info.huge_page_size = huge_page_size(); return 0; } @@ -354,9 +343,9 @@ int odp_system_info_init(void) { FILE *file; - memset(odp_system_info, 0, sizeof(odp_system_info_t)); + memset(odp_global_data.odp_system_info, 0, sizeof(odp_system_info_t)); - odp_system_info.page_size = ODP_PAGE_SIZE; + odp_global_data.odp_system_info.page_size = ODP_PAGE_SIZE; file = fopen(/proc/cpuinfo, rt); if (file == NULL) { @@ -364,11 +353,11 @@ int odp_system_info_init(void) return -1; } - compiler_info.cpuinfo_parser(file, odp_system_info); + compiler_info.cpuinfo_parser(file, odp_global_data.odp_system_info); fclose(file); - if (systemcpu(odp_system_info)) { + if (systemcpu(odp_global_data.odp_system_info)) { ODP_ERR(systemcpu failed\n); return -1; } @@ -383,30 +372,30 @@ int odp_system_info_init(void) */ uint64_t odp_sys_cpu_hz(void) { - return odp_system_info.cpu_hz; + return odp_global_data.odp_system_info.cpu_hz; } uint64_t odp_sys_huge_page_size(void) { - return odp_system_info.huge_page_size; + return odp_global_data.odp_system_info.huge_page_size; } uint64_t odp_sys_page_size(void) { - return odp_system_info.page_size; + return odp_global_data.odp_system_info.page_size; } const char *odp_sys_cpu_model_str(void) { - return odp_system_info.model_str; + return odp_global_data.odp_system_info.model_str; } int odp_sys_cache_line_size(void) { - return odp_system_info.cache_line_size; + return odp_global_data.odp_system_info.cache_line_size; } int odp_cpu_count(void) { - return odp_system_info.cpu_count; + return odp_global_data.odp_system_info.cpu_count; } -- 2.1.0 -- Mike Holmes Technical Manager - Linaro Networking Group Linaro.org http://www.linaro.org/***│ *Open source software for ARM SoCs ___ lng-odp
[lng-odp] [PATCHv11 2/4] validation: move l2fwd from example to performance tests
Signed-off-by: Maxim Uvarov maxim.uva...@linaro.org --- configure.ac | 1 - example/Makefile.am | 2 +- example/l2fwd/.gitignore | 1 - example/l2fwd/Makefile.am| 10 - example/l2fwd/odp_l2fwd.c| 685 --- test/performance/.gitignore | 3 +- test/performance/Makefile.am | 4 +- test/performance/odp_l2fwd.c | 685 +++ 8 files changed, 690 insertions(+), 701 deletions(-) delete mode 100644 example/l2fwd/.gitignore delete mode 100644 example/l2fwd/Makefile.am delete mode 100644 example/l2fwd/odp_l2fwd.c create mode 100644 test/performance/odp_l2fwd.c diff --git a/configure.ac b/configure.ac index 57054c5..0ec83f2 100644 --- a/configure.ac +++ b/configure.ac @@ -252,7 +252,6 @@ AC_CONFIG_FILES([Makefile example/Makefile example/generator/Makefile example/ipsec/Makefile -example/l2fwd/Makefile example/packet/Makefile example/timer/Makefile pkgconfig/libodp.pc diff --git a/example/Makefile.am b/example/Makefile.am index 3021571..6bb4f5c 100644 --- a/example/Makefile.am +++ b/example/Makefile.am @@ -1 +1 @@ -SUBDIRS = generator ipsec l2fwd packet timer +SUBDIRS = generator ipsec packet timer diff --git a/example/l2fwd/.gitignore b/example/l2fwd/.gitignore deleted file mode 100644 index 8563319..000 --- a/example/l2fwd/.gitignore +++ /dev/null @@ -1 +0,0 @@ -odp_l2fwd diff --git a/example/l2fwd/Makefile.am b/example/l2fwd/Makefile.am deleted file mode 100644 index feced2a..000 --- a/example/l2fwd/Makefile.am +++ /dev/null @@ -1,10 +0,0 @@ -include $(top_srcdir)/example/Makefile.inc - -bin_PROGRAMS = odp_l2fwd -odp_l2fwd_LDFLAGS = $(AM_LDFLAGS) -static -odp_l2fwd_CFLAGS = $(AM_CFLAGS) -I${top_srcdir}/example - -noinst_HEADERS = \ - $(top_srcdir)/example/example_debug.h - -dist_odp_l2fwd_SOURCES = odp_l2fwd.c diff --git a/example/l2fwd/odp_l2fwd.c b/example/l2fwd/odp_l2fwd.c deleted file mode 100644 index 4a49008..000 --- a/example/l2fwd/odp_l2fwd.c +++ /dev/null @@ -1,685 +0,0 @@ -/* Copyright (c) 2014, Linaro Limited - * All rights reserved. - * - * SPDX-License-Identifier: BSD-3-Clause - */ - -/** - * @file - * - * @example odp_l2fwd.c ODP basic forwarding application - */ - -/** enable strtok */ -#define _POSIX_C_SOURCE 200112L - -#include stdlib.h -#include getopt.h -#include unistd.h -#include errno.h - -#include example_debug.h - -#include odp.h -#include odp/helper/linux.h -#include odp/helper/eth.h -#include odp/helper/ip.h - -/** @def MAX_WORKERS - * @brief Maximum number of worker threads - */ -#define MAX_WORKERS32 - -/** @def SHM_PKT_POOL_SIZE - * @brief Size of the shared memory block - */ -#define SHM_PKT_POOL_SIZE (512*2048) - -/** @def SHM_PKT_POOL_BUF_SIZE - * @brief Buffer size of the packet pool buffer - */ -#define SHM_PKT_POOL_BUF_SIZE 1856 - -/** @def MAX_PKT_BURST - * @brief Maximum number of packet bursts - */ -#define MAX_PKT_BURST 16 - -/** @def APPL_MODE_PKT_BURST - * @brief The application will handle pakcets in bursts - */ -#define APPL_MODE_PKT_BURST0 - -/** @def APPL_MODE_PKT_QUEUE - * @brief The application will handle packets in queues - */ -#define APPL_MODE_PKT_QUEUE1 - -/** @def PRINT_APPL_MODE(x) - * @brief Macro to print the current status of how the application handles - * packets. - */ -#define PRINT_APPL_MODE(x) printf(%s(%i)\n, #x, (x)) - -/** Get rid of path in filename - only for unix-type paths using '/' */ -#define NO_PATH(file_name) (strrchr((file_name), '/') ? \ - strrchr((file_name), '/') + 1 : (file_name)) -/** - * Parsed command line application arguments - */ -typedef struct { - int cpu_count; - int if_count; /** Number of interfaces to be used */ - char **if_names;/** Array of pointers to interface names */ - int mode; /** Packet IO mode */ - int time; /** Time in seconds to run. */ - int accuracy; /** Number of seconds to get and print statistics */ - char *if_str; /** Storage for interface names */ -} appl_args_t; - -static int exit_threads; /** Break workers loop if set to 1 */ - -/** - * Statistics - */ -typedef struct { - uint64_t packets; /** Number of forwarded packets. */ - uint64_t drops; /** Number of dropped packets. */ -} stats_t; - -/** - * Thread specific arguments - */ -typedef struct { - int src_idx;/** Source interface identifier */ - stats_t **stats;/** Per thread packet stats */ -} thread_args_t; - -/** - * Grouping of all global data - */ -typedef struct { - /** Application (parsed) arguments */ - appl_args_t appl; - /** Thread specific arguments */ - thread_args_t thread[MAX_WORKERS]; - /** Table of
Re: [lng-odp] [PATCH v2 1/2] scripts: odp_check: remove astyle
Ping On 1 April 2015 at 17:46, Mike Holmes mike.hol...@linaro.org wrote: ODP has not adopted a style that can be universally applied with a tool such as astyle. Remove astyle leaving only the cleanup for whitespace and checkpatch elements for checking src files before a patch is created. Signed-off-by: Mike Holmes mike.hol...@linaro.org --- scripts/odp_check | 10 +- 1 file changed, 1 insertion(+), 9 deletions(-) diff --git a/scripts/odp_check b/scripts/odp_check index 09c859b..33809dc 100755 --- a/scripts/odp_check +++ b/scripts/odp_check @@ -1,8 +1,6 @@ #!/bin/bash # -# This script is an indenter, white space remover, -# formatter, and beautifier and general source file -# clean up for the ODP project. +# This script is a clean up for the ODP project src files. # # Usage # ./scripts/opd_check path/filename @@ -10,11 +8,5 @@ set -e DIR=$( cd $( dirname ${BASH_SOURCE[0]} ) pwd ) -if ! type astyle /dev/null /dev/null; then - echo Please install astyle from http://astyle.sourceforge.net/; - exit -1 -fi - -astyle --style=linux --indent=force-tab=8 --align-pointer=name $1 $DIR/cleanfile $1 $DIR/checkpatch.pl -f $1 -- 2.1.0 -- Mike Holmes Technical Manager - Linaro Networking Group Linaro.org http://www.linaro.org/ *│ *Open source software for ARM SoCs ___ lng-odp mailing list lng-odp@lists.linaro.org https://lists.linaro.org/mailman/listinfo/lng-odp
Re: [lng-odp] [PATCH] validation: classification: un-checked return
Merged, Maxim. On 04/06/15 15:21, Bill Fischofer wrote: No problem with that as a reason, so: Reviewed-by: Bill Fischofer bill.fischo...@linaro.org mailto:bill.fischo...@linaro.org On Mon, Apr 6, 2015 at 7:18 AM, Mike Holmes mike.hol...@linaro.org mailto:mike.hol...@linaro.org wrote: On 6 April 2015 at 08:00, Bill Fischofer bill.fischo...@linaro.org mailto:bill.fischo...@linaro.org wrote: On Mon, Apr 6, 2015 at 6:54 AM, Mike Holmes mike.hol...@linaro.org mailto:mike.hol...@linaro.org wrote: Fixes CID 89196 Signed-off-by: Mike Holmes mike.hol...@linaro.org mailto:mike.hol...@linaro.org --- test/validation/classification/odp_classification_tests.c | 7 --- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/test/validation/classification/odp_classification_tests.c b/test/validation/classification/odp_classification_tests.c index 0530f99..1bf080f 100644 --- a/test/validation/classification/odp_classification_tests.c +++ b/test/validation/classification/odp_classification_tests.c @@ -126,6 +126,7 @@ static int cls_pkt_set_seq(odp_packet_t pkt) static uint32_t seq; cls_test_packet_t data; uint32_t offset; + int status; data.magic = DATA_MAGIC; data.seq = ++seq; @@ -133,10 +134,10 @@ static int cls_pkt_set_seq(odp_packet_t pkt) offset = odp_packet_l4_offset(pkt); CU_ASSERT_FATAL(offset != 0); - odp_packet_copydata_in(pkt, offset + ODPH_UDPHDR_LEN, - sizeof(data), data); + status = odp_packet_copydata_in(pkt, offset + ODPH_UDPHDR_LEN, +sizeof(data), data); Wouldn't it be simpler to say: return odp_packet_copydata_in(...); ? I find it easier to read a return which is not also a function call. I also find it easier to single step in a debugger with this because I can stop in the function after the call more clearly. - return 0; + return status; } static uint32_t cls_pkt_get_seq(odp_packet_t pkt) -- 2.1.0 ___ lng-odp mailing list lng-odp@lists.linaro.org mailto:lng-odp@lists.linaro.org https://lists.linaro.org/mailman/listinfo/lng-odp -- Mike Holmes Technical Manager - Linaro Networking Group Linaro.org http://www.linaro.org/***│ *Open source software for ARM SoCs ___ lng-odp mailing list lng-odp@lists.linaro.org https://lists.linaro.org/mailman/listinfo/lng-odp ___ lng-odp mailing list lng-odp@lists.linaro.org https://lists.linaro.org/mailman/listinfo/lng-odp
[lng-odp] [PATCHv11 1/4] validation: implement platform env
Different platforms need different steps to set up pktio for testing. That might be veth devices for linux-generic, kernel modules and extended set up for dpdk and simple set pktio testing names for other platforms. This patch implements platform/test/pktio_env file which sets up global envs for pktio. Signed-off-by: Maxim Uvarov maxim.uva...@linaro.org --- platform/linux-generic/Makefile.am | 2 + platform/linux-generic/m4/configure.m4 | 2 + platform/linux-generic/test/Makefile.am | 1 + platform/linux-generic/test/pktio_env | 120 + test/README | 6 ++ test/validation/odp_pktio_run | 129 +++- 6 files changed, 157 insertions(+), 103 deletions(-) create mode 100644 platform/linux-generic/test/Makefile.am create mode 100644 platform/linux-generic/test/pktio_env diff --git a/platform/linux-generic/Makefile.am b/platform/linux-generic/Makefile.am index e5558ac..033be51 100644 --- a/platform/linux-generic/Makefile.am +++ b/platform/linux-generic/Makefile.am @@ -5,6 +5,8 @@ AM_CFLAGS += -I$(srcdir)/include AM_CFLAGS += -I$(top_srcdir)/include AM_CFLAGS += -I$(top_srcdir)/helper/include +SUBDIRS = test + include_HEADERS = \ $(top_srcdir)/include/odp.h diff --git a/platform/linux-generic/m4/configure.m4 b/platform/linux-generic/m4/configure.m4 index 00f2f89..55124f1 100644 --- a/platform/linux-generic/m4/configure.m4 +++ b/platform/linux-generic/m4/configure.m4 @@ -15,3 +15,5 @@ AC_LINK_IFELSE( echo GCC-style __atomic builtins not supported by the compiler. echo Use newer version. For gcc 4.7.0 exit -1) + +AC_CONFIG_FILES([platform/linux-generic/test/Makefile]) diff --git a/platform/linux-generic/test/Makefile.am b/platform/linux-generic/test/Makefile.am new file mode 100644 index 000..91e361c --- /dev/null +++ b/platform/linux-generic/test/Makefile.am @@ -0,0 +1 @@ +dist_bin_SCRIPTS = $(srcdir)/pktio_env diff --git a/platform/linux-generic/test/pktio_env b/platform/linux-generic/test/pktio_env new file mode 100644 index 000..5e547e4 --- /dev/null +++ b/platform/linux-generic/test/pktio_env @@ -0,0 +1,120 @@ +#!/bin/sh +# +# Copyright (c) 2015, Linaro Limited +# All rights reserved. +# +# SPDX-License-Identifier: BSD-3-Clause +# +# Test script wrapper for running ODP pktio apps on linux-generic. +# +# For linux-generic the default behavior is to create two pairs of +# virtual Ethernet interfaces and provide the names of these via +# environment variables to pktio apps, the interfaces will be removed +# before the script exits. +# +# Note that the creation of virtual Ethernet devices depends on having +# CONFIG_VETH enabled in the kernel, if not enabled the env setup will be skipped. +# +# Network set up +# IF0 --- IF1 +# IF2 --- IF3 +IF0=pktio-p0-p1 +IF1=pktio-p1-p0 +IF2=pktio-p2-p3 +IF3=pktio-p3-p2 + +if [ $0 = $BASH_SOURCE ]; then + echo Error: Platform specific env file has to be sourced. +fi + +check_for_root() +{ + if [ $(id -u) != 0 ]; then + echo check_for_root(): need to be root to setup VETH + return 1 + fi + return 0 +} + +# wait for a network interface's operational state to be up +wait_for_iface_up() +{ + iface=$1 + cnt=0 + + while [ $cnt -lt 50 ]; do + read operstate /sys/class/net/$iface/operstate + + if [ $? -ne 0 ]; then + break + elif [ $operstate = up ]; then + return 0 + fi + + sleep 0.1 + cnt=`expr $cnt + 1` + done + + return 1 +} + +setup_pktio_env() +{ + echo pktio: setting up test interfaces $IF0, $IF1, $IF2, $IF3. + + check_for_root + if [ $? -ne 0 ]; then + return 1 + fi + + for iface in $IF0 $IF1 $IF2 $IF3; do + ip link show $iface 2 /dev/null + if [ $? -eq 0 ]; then + echo pktio: interface $iface already exist $? + return 2 + fi + done + + if [ $1 = clean ]; then + trap cleanup_pktio_env EXIT + fi + + ip link add $IF0 type veth peer name $IF1 + if [ $? -ne 0 ]; then + echo pktio: error: unable to create veth pair + return 3 + fi + ip link add $IF2 type veth peer name $IF3 + if [ $? -ne 0 ]; then + echo pktio: error: unable to create veth pair + return 4 + fi + + for iface in $IF0 $IF1 $IF2 $IF3; do + ip link set $iface mtu 9216 up + ifconfig $iface -arp + done + + # check that the interface has come up before starting the test + for iface in $IF0 $IF1 $IF2 $IF3; do + wait_for_iface_up $iface + if [ $? -ne 0 ]; then + echo pktio: interface $iface failed to
[lng-odp] [PATCHv11 0/4] validation: implement platform env and add performance/odp_example_l2fwd_run
v11: fix Ciprian comment to build out of tree. The same changes as pktio_run has for TEST_DIR. (But I have no idea how to test that.). v9: in last patch I referenced for for binary in example directory. Script worked because I had binary from previous build, before move. Thanks, Mike for finding that. v8: add messages about ODP_PLATFROM variable to test/README and to scipts. v7: fix more Mike comments and split patch. Maxim Uvarov (4): validation: implement platform env validation: move l2fwd from example to performance tests validation: sched: add missing copyright validation: add new test l2fwd_run configure.ac| 1 - example/Makefile.am | 2 +- example/l2fwd/.gitignore| 1 - example/l2fwd/Makefile.am | 10 - example/l2fwd/odp_l2fwd.c | 685 platform/linux-generic/Makefile.am | 2 + platform/linux-generic/m4/configure.m4 | 2 + platform/linux-generic/test/Makefile.am | 1 + platform/linux-generic/test/pktio_env | 120 ++ test/README | 6 + test/performance/.gitignore | 3 +- test/performance/Makefile.am| 6 +- test/performance/odp_l2fwd.c| 685 test/performance/odp_l2fwd_run | 65 +++ test/performance/odp_scheduling_run | 5 + test/validation/odp_pktio_run | 129 ++ 16 files changed, 918 insertions(+), 805 deletions(-) delete mode 100644 example/l2fwd/.gitignore delete mode 100644 example/l2fwd/Makefile.am delete mode 100644 example/l2fwd/odp_l2fwd.c create mode 100644 platform/linux-generic/test/Makefile.am create mode 100644 platform/linux-generic/test/pktio_env create mode 100644 test/performance/odp_l2fwd.c create mode 100755 test/performance/odp_l2fwd_run -- 1.9.1 ___ lng-odp mailing list lng-odp@lists.linaro.org https://lists.linaro.org/mailman/listinfo/lng-odp
Re: [lng-odp] Classification API implementation issue
Taras, I have seen similar limitations on other platforms, and in my opinion, the solution could be to simply decouple the odp_queue_t identifier from the HW queue number, and have each odp_queue_t identify a table entry, which contains a HW queue number, which can be changed by the implementation without application knowledge when it is necessary. From another point of view, the odp_queue_t when initially created will not be associated with a real HW queue, until it is assigned to a CoS, at which point it is assigned with the hardware resources needed to pass traffic. An odp_queue_t that of the PKTIN type will not be able to pass traffic until it is assigned a CoS source anyway. Hope this helps, - Leo From: Taras Kondratiuk taras.kondrat...@linaro.org Sent: Thursday, April 2, 2015 8:29 AM To: Rosenboim, Leonid; Bala Manoharan; Petri Savolainen; Robbie King (robking) Cc: lng-odp@lists.linaro.org Subject: Classification API implementation issue Hi I'm having an issue with implementation of some Classification API functions on Keystone2 platform: odp_cos_with_l2_priority() odp_cos_with_l3_qos() Keystone SDK has very similar functionality, but destination HW queue numbers are specified as base queue + offsets. Max offset is 128 while total number of queues is 16k. It is not possible to represent an arbitrary set of queues (passed to odp_cos_with_l*() inside of CoS) in form of base + offset. I couldn't find a way to workaround this limitation at implementation level, so API change may be needed. The least intrusive change is to allow implementation to create queues and assign them to CoS'es passed to odp_cos_with_l*() functions. So application should pass 'empty' CoS'es. odp_cos_queue() function will be needed to read created queue handles from CoS. Do you see possible issues with this approach? ___ lng-odp mailing list lng-odp@lists.linaro.org https://lists.linaro.org/mailman/listinfo/lng-odp
[lng-odp] [PATCH v3 2/2] scripts: odp_check: rename to odp_clean_and_check
Signed-off-by: Mike Holmes mike.hol...@linaro.org --- scripts/{odp_check = odp_clean_and_check} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename scripts/{odp_check = odp_clean_and_check} (100%) diff --git a/scripts/odp_check b/scripts/odp_clean_and_check similarity index 100% rename from scripts/odp_check rename to scripts/odp_clean_and_check -- 2.1.0 ___ lng-odp mailing list lng-odp@lists.linaro.org https://lists.linaro.org/mailman/listinfo/lng-odp