Re: [lng-odp] [PATCH v2] example: introducing multi-threaded traffic management case

2017-02-06 Thread Forrest Shi
Hi Maxim,

Thank you. I will fix it in the next version.

Forrest

On 6 February 2017 at 21:10, Maxim Uvarov  wrote:

> Hello Xuelin,
>
> new example also needs 'make check' test.
>
> please see some comments bellow also.
>
> On 02/06/17 04:35, forrest@linaro.org wrote:
> > From: Xuelin Shi 
> >
> > introduce a new example of traffic management with following features:
> >   - multiple TM threads: one TM thread for each pktio
> >   - for small system less than 4 cores, only one TM thread created.
> >   - receiving packets from multiple pktios other than generating packets
> >   - identifying TM user by ip with individual class of service
> >   - print the user service while starting the program
> >   - print the packets counts every 10 seconds for each user
> >
> > Signed-off-by: Xuelin Shi 
> > ---
> > change history:
> >   v2: rebase to latest code
> >
> >  example/Makefile.am|   3 +-
> >  example/m4/configure.m4|   1 +
> >  example/traffic_mgmt_multi/.gitignore  |   3 +
> >  example/traffic_mgmt_multi/Makefile.am |  10 +
> >  example/traffic_mgmt_multi/odp_traffic_mgmt.c  | 864
> +
> >  example/traffic_mgmt_multi/odp_traffic_mgmt.h  |  48 ++
> >  example/traffic_mgmt_multi/odp_traffic_pktio.c | 794
> +++
> >  7 files changed, 1722 insertions(+), 1 deletion(-)
> >  create mode 100644 example/traffic_mgmt_multi/.gitignore
> >  create mode 100644 example/traffic_mgmt_multi/Makefile.am
> >  create mode 100644 example/traffic_mgmt_multi/odp_traffic_mgmt.c
> >  create mode 100644 example/traffic_mgmt_multi/odp_traffic_mgmt.h
> >  create mode 100644 example/traffic_mgmt_multi/odp_traffic_pktio.c
> >
> > diff --git a/example/Makefile.am b/example/Makefile.am
> > index dfc07b6..9e21989 100644
> > --- a/example/Makefile.am
> > +++ b/example/Makefile.am
> > @@ -8,4 +8,5 @@ SUBDIRS = classifier \
> > switch \
> > time \
> > timer \
> > -   traffic_mgmt
> > +   traffic_mgmt \
> > +   traffic_mgmt_multi
> > diff --git a/example/m4/configure.m4 b/example/m4/configure.m4
> > index 620db04..3bf48bd 100644
> > --- a/example/m4/configure.m4
> > +++ b/example/m4/configure.m4
> > @@ -21,4 +21,5 @@ AC_CONFIG_FILES([example/classifier/Makefile
> >example/time/Makefile
> >example/timer/Makefile
> >example/traffic_mgmt/Makefile
> > +  example/traffic_mgmt_multi/Makefile
> >example/Makefile])
> > diff --git a/example/traffic_mgmt_multi/.gitignore
> b/example/traffic_mgmt_multi/.gitignore
> > new file mode 100644
> > index 000..d8f5468
> > --- /dev/null
> > +++ b/example/traffic_mgmt_multi/.gitignore
> > @@ -0,0 +1,3 @@
> > +odp_traffic_mgmt
> > +*.log
> > +*.trs
> > diff --git a/example/traffic_mgmt_multi/Makefile.am
> b/example/traffic_mgmt_multi/Makefile.am
> > new file mode 100644
> > index 000..3f68e11
> > --- /dev/null
> > +++ b/example/traffic_mgmt_multi/Makefile.am
> > @@ -0,0 +1,10 @@
> > +include $(top_srcdir)/example/Makefile.inc
> > +
> > +bin_PROGRAMS = odp_traffic_mgmt$(EXEEXT)
> > +odp_traffic_mgmt_LDFLAGS = $(AM_LDFLAGS) -static
> > +odp_traffic_mgmt_CFLAGS = $(AM_CFLAGS) -I${top_srcdir}/example
> -I${top_srcdir}/test
> > +
> > +noinst_HEADERS = $(top_srcdir)/example/example_debug.h \
> > +  $(top_srcdir)/example/traffic_
> mgmt_multi/odp_traffic_mgmt.h
> > +
> > +dist_odp_traffic_mgmt_SOURCES = odp_traffic_mgmt.c odp_traffic_pktio.c
> > diff --git a/example/traffic_mgmt_multi/odp_traffic_mgmt.c
> b/example/traffic_mgmt_multi/odp_traffic_mgmt.c
> > new file mode 100644
> > index 000..3879f8e
> > --- /dev/null
> > +++ b/example/traffic_mgmt_multi/odp_traffic_mgmt.c
> > @@ -0,0 +1,864 @@
> > +/* Copyright 2015 EZchip Semiconductor Ltd. All Rights Reserved.
> > + *
>
> New example is not from EZchip. This needs to be removed.
>
>
> > + * Copyright (c) 2015, Linaro Limited
>
>
> year has to be 2017.
>
> > + * All rights reserved.
> > + *
> > + * SPDX-License-Identifier: BSD-3-Clause
> > + */
> > +
> > +#define _GNU_SOURCE
> > +
> > +#include 
> > +#include 
> > +#include 
> > +#include 
> > +#include 
> > +#include 
> > +#include 
> > +#include 
> > +#include 
> > +
> > +#include "odp_traffic_mgmt.h"
> > +
> > +#define TM_USER_IP_START 0x01010101
> > +#define NUM_SVC_CLASSES 4
> > +#define USERS_PER_SVC_CLASS 2
> > +#define APPS_PER_USER   1
> > +#define TM_QUEUES_PER_APP   1
> > +#define NUM_USERS   (USERS_PER_SVC_CLASS * NUM_SVC_CLASSES)
> > +#define NUM_TM_QUEUES   (NUM_USERS * APPS_PER_USER *
> TM_QUEUES_PER_APP)
> > +#define TM_QUEUES_PER_USER  (TM_QUEUES_PER_APP * APPS_PER_USER)
> > +#define TM_QUEUES_PER_CLASS (USERS_PER_SVC_CLASS * TM_QUEUES_PER_USER)
> > +#define MAX_NODES_PER_LEVEL (NUM_USERS * APPS_PER_USER)
> > +
> > +#define MAX_NB_PKTIO 32
> > +#define MAX_NB_USERS (NUM_USERS * APPS_PER_USER * MAX_NB_PKTIO)
> > +
> > +#define KBP

Re: [lng-odp] [PATCH v2] example: introducing multi-threaded traffic management case

2017-02-06 Thread Maxim Uvarov
Hello Xuelin,

new example also needs 'make check' test.

please see some comments bellow also.

On 02/06/17 04:35, forrest@linaro.org wrote:
> From: Xuelin Shi 
> 
> introduce a new example of traffic management with following features:
>   - multiple TM threads: one TM thread for each pktio
>   - for small system less than 4 cores, only one TM thread created.
>   - receiving packets from multiple pktios other than generating packets
>   - identifying TM user by ip with individual class of service
>   - print the user service while starting the program
>   - print the packets counts every 10 seconds for each user
> 
> Signed-off-by: Xuelin Shi 
> ---
> change history:
>   v2: rebase to latest code
> 
>  example/Makefile.am|   3 +-
>  example/m4/configure.m4|   1 +
>  example/traffic_mgmt_multi/.gitignore  |   3 +
>  example/traffic_mgmt_multi/Makefile.am |  10 +
>  example/traffic_mgmt_multi/odp_traffic_mgmt.c  | 864 
> +
>  example/traffic_mgmt_multi/odp_traffic_mgmt.h  |  48 ++
>  example/traffic_mgmt_multi/odp_traffic_pktio.c | 794 +++
>  7 files changed, 1722 insertions(+), 1 deletion(-)
>  create mode 100644 example/traffic_mgmt_multi/.gitignore
>  create mode 100644 example/traffic_mgmt_multi/Makefile.am
>  create mode 100644 example/traffic_mgmt_multi/odp_traffic_mgmt.c
>  create mode 100644 example/traffic_mgmt_multi/odp_traffic_mgmt.h
>  create mode 100644 example/traffic_mgmt_multi/odp_traffic_pktio.c
> 
> diff --git a/example/Makefile.am b/example/Makefile.am
> index dfc07b6..9e21989 100644
> --- a/example/Makefile.am
> +++ b/example/Makefile.am
> @@ -8,4 +8,5 @@ SUBDIRS = classifier \
> switch \
> time \
> timer \
> -   traffic_mgmt
> +   traffic_mgmt \
> +   traffic_mgmt_multi
> diff --git a/example/m4/configure.m4 b/example/m4/configure.m4
> index 620db04..3bf48bd 100644
> --- a/example/m4/configure.m4
> +++ b/example/m4/configure.m4
> @@ -21,4 +21,5 @@ AC_CONFIG_FILES([example/classifier/Makefile
>example/time/Makefile
>example/timer/Makefile
>example/traffic_mgmt/Makefile
> +  example/traffic_mgmt_multi/Makefile
>example/Makefile])
> diff --git a/example/traffic_mgmt_multi/.gitignore 
> b/example/traffic_mgmt_multi/.gitignore
> new file mode 100644
> index 000..d8f5468
> --- /dev/null
> +++ b/example/traffic_mgmt_multi/.gitignore
> @@ -0,0 +1,3 @@
> +odp_traffic_mgmt
> +*.log
> +*.trs
> diff --git a/example/traffic_mgmt_multi/Makefile.am 
> b/example/traffic_mgmt_multi/Makefile.am
> new file mode 100644
> index 000..3f68e11
> --- /dev/null
> +++ b/example/traffic_mgmt_multi/Makefile.am
> @@ -0,0 +1,10 @@
> +include $(top_srcdir)/example/Makefile.inc
> +
> +bin_PROGRAMS = odp_traffic_mgmt$(EXEEXT)
> +odp_traffic_mgmt_LDFLAGS = $(AM_LDFLAGS) -static
> +odp_traffic_mgmt_CFLAGS = $(AM_CFLAGS) -I${top_srcdir}/example 
> -I${top_srcdir}/test
> +
> +noinst_HEADERS = $(top_srcdir)/example/example_debug.h \
> +  $(top_srcdir)/example/traffic_mgmt_multi/odp_traffic_mgmt.h
> +
> +dist_odp_traffic_mgmt_SOURCES = odp_traffic_mgmt.c odp_traffic_pktio.c
> diff --git a/example/traffic_mgmt_multi/odp_traffic_mgmt.c 
> b/example/traffic_mgmt_multi/odp_traffic_mgmt.c
> new file mode 100644
> index 000..3879f8e
> --- /dev/null
> +++ b/example/traffic_mgmt_multi/odp_traffic_mgmt.c
> @@ -0,0 +1,864 @@
> +/* Copyright 2015 EZchip Semiconductor Ltd. All Rights Reserved.
> + *

New example is not from EZchip. This needs to be removed.


> + * Copyright (c) 2015, Linaro Limited


year has to be 2017.

> + * All rights reserved.
> + *
> + * SPDX-License-Identifier: BSD-3-Clause
> + */
> +
> +#define _GNU_SOURCE
> +
> +#include 
> +#include 
> +#include 
> +#include 
> +#include 
> +#include 
> +#include 
> +#include 
> +#include 
> +
> +#include "odp_traffic_mgmt.h"
> +
> +#define TM_USER_IP_START 0x01010101
> +#define NUM_SVC_CLASSES 4
> +#define USERS_PER_SVC_CLASS 2
> +#define APPS_PER_USER   1
> +#define TM_QUEUES_PER_APP   1
> +#define NUM_USERS   (USERS_PER_SVC_CLASS * NUM_SVC_CLASSES)
> +#define NUM_TM_QUEUES   (NUM_USERS * APPS_PER_USER * TM_QUEUES_PER_APP)
> +#define TM_QUEUES_PER_USER  (TM_QUEUES_PER_APP * APPS_PER_USER)
> +#define TM_QUEUES_PER_CLASS (USERS_PER_SVC_CLASS * TM_QUEUES_PER_USER)
> +#define MAX_NODES_PER_LEVEL (NUM_USERS * APPS_PER_USER)
> +
> +#define MAX_NB_PKTIO 32
> +#define MAX_NB_USERS (NUM_USERS * APPS_PER_USER * MAX_NB_PKTIO)
> +
> +#define KBPS   1000
> +#define MBPS   100
> +#define PERCENT(percent)  (100 * percent)
> +
> +#define FALSE  0
> +#define TRUE   1
> +
> +#define MAX(a, b) (((a) > (b)) ? (a) : (b))
> +#define MIN(a, b) (((a) < (b)) ? (a) : (b))
> +
> +#define RANDOM_BUF_LEN  1024
> +
> +typedef struct {
> + odp_tm_shaper_params_tshaper_params;
> + odp_tm_threshold_params_t threshol