[lng-odp] [Bug 1441] ./configure CFLAGS=-DIPSEC_POLL_QUEUES does not compile

2015-04-07 Thread bugzilla-daemon
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

2015-04-07 Thread Taras Kondratiuk

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

2015-04-07 Thread Jerin Jacob
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

2015-04-07 Thread Maxim Uvarov
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

2015-04-07 Thread Maxim Uvarov

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

2015-04-07 Thread Jerin Jacob
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

2015-04-07 Thread Mike Holmes
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

2015-04-07 Thread Maxim Uvarov

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

2015-04-07 Thread Maxim Uvarov

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

2015-04-07 Thread Bill Fischofer
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

2015-04-07 Thread Mike Holmes
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

2015-04-07 Thread UberConference
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

2015-04-07 Thread Maxim Uvarov
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

2015-04-07 Thread Maxim Uvarov

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

2015-04-07 Thread Mike Holmes
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

2015-04-07 Thread Maxim Uvarov

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

2015-04-07 Thread Maxim Uvarov
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

2015-04-07 Thread Mike Holmes
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

2015-04-07 Thread Maxim Uvarov

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

2015-04-07 Thread Maxim Uvarov
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

2015-04-07 Thread Maxim Uvarov
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

2015-04-07 Thread Rosenboim, Leonid
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

2015-04-07 Thread Mike Holmes
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