[dpdk-dev] [PATCH v2 2/3] eal: add new rte color definition

Dumitrescu, Cristian cristian.dumitrescu at intel.com
Mon Dec 10 19:24:20 CET 2018


Hi Reshma,

> -----Original Message-----
> From: Pattan, Reshma
> Sent: Friday, December 7, 2018 2:32 PM
> To: dev at dpdk.org; Dumitrescu, Cristian <cristian.dumitrescu at intel.com>;
> jerin.jacob at caviumnetworks.com; Singh, Jasvinder
> <jasvinder.singh at intel.com>
> Cc: Pattan, Reshma <reshma.pattan at intel.com>
> Subject: [PATCH v2 2/3] eal: add new rte color definition
> 
> Added new rte_color definition in eal to
> consolidate color definition which is currently replicated
> in various places such as rte_meter.h, rte_tm.h and rte_mtr.h
> 
> Removed rte_tm_color and rte_mtr_color and used the new color
> definition in rte_tm* and rte_mtr* files.
> 
> Updated softnic and testpmd to use new color definition.
> 
> Signed-off-by: Jasvinder Singh <jasvinder.singh at intel.com>
> Signed-off-by: Reshma Pattan <reshma.pattan at intel.com>
> ---
>  app/test-pmd/cmdline_mtr.c                  | 47 +++++++++++----------
>  app/test-pmd/cmdline_tm.c                   | 23 +++++-----
>  drivers/net/softnic/rte_eth_softnic_flow.c  | 10 +++--
>  drivers/net/softnic/rte_eth_softnic_meter.c | 28 ++++++------
>  drivers/net/softnic/rte_eth_softnic_tm.c    | 31 ++++++++------
>  lib/librte_eal/common/Makefile              |  2 +-
>  lib/librte_eal/common/include/rte_color.h   | 18 ++++++++
>  lib/librte_ethdev/rte_mtr.c                 |  2 +-
>  lib/librte_ethdev/rte_mtr.h                 | 21 +++------
>  lib/librte_ethdev/rte_mtr_driver.h          |  2 +-
>  lib/librte_ethdev/rte_tm.h                  | 25 ++++-------
>  lib/librte_meter/rte_meter.h                |  7 +++
>  12 files changed, 118 insertions(+), 98 deletions(-)
>  create mode 100644 lib/librte_eal/common/include/rte_color.h
> 

This patch should come first in the set, i.e. before the redefinition of the sched field in struct rte_mbuf, as it defines the format for the new sched color field.

At this point, we should not remove the usage of rte_meter_color, rte_mtr_color, rte_mtr_color in any of the files using them, as this will break people's apps. We should first deprecate them by adding a deprecation note in the current release and then in one of the next releases (hopefully 19.5) remove them completely by replacing with  the new rte_color, as you do in this patch. So, for now, please do not do this replacement in any of the above files. Bottom line: remove (for now) the above changes in the .c files of test-pmd, softnic, librte_ethdev; keep the above changes in  the .h files such as rte_meter.h, rte_tm.h, rte_mtr.h. Makes sense? This patch should be very small :)


<snip>

> diff --git a/lib/librte_eal/common/include/rte_color.h
> b/lib/librte_eal/common/include/rte_color.h
> new file mode 100644
> index 000000000..f4387071b
> --- /dev/null
> +++ b/lib/librte_eal/common/include/rte_color.h
> @@ -0,0 +1,18 @@
> +/* SPDX-License-Identifier: BSD-3-Clause
> + * Copyright(c) 2018 Intel Corporation
> + */
> +
> +#ifndef _RTE_COLOR_H_
> +#define _RTE_COLOR_H_
> +
> +/**
> + * Color
> + */
> +enum rte_color {
> +	RTE_COLOR_GREEN = 0, /**< Green */
> +	RTE_COLOR_YELLOW, /**< Yellow */
> +	RTE_COLOR_RED, /**< Red */
> +	RTE_COLORS /**< Number of colors */
> +};
> +
> +#endif /* _RTE_COLOR_H_ */

Please add the C++ pattern at the beginning and end of this file:

#ifndef __INCLUDE_RTE_COLOR__
#define __INCLUDE_RTE_COLOR__

#ifdef __cplusplus
extern "C" {
#endif



#ifdef __cplusplus
}
#endif

#endif

<snip>

> diff --git a/lib/librte_ethdev/rte_mtr.h b/lib/librte_ethdev/rte_mtr.h
> index c4819b274..113db06a9 100644
> --- a/lib/librte_ethdev/rte_mtr.h
> +++ b/lib/librte_ethdev/rte_mtr.h
> @@ -76,21 +76,12 @@
>  #include <stdint.h>
>  #include <rte_compat.h>
>  #include <rte_common.h>
> +#include <rte_color.h>
> 
>  #ifdef __cplusplus
>  extern "C" {
>  #endif
> 
> -/**
> - * Color
> - */
> -enum rte_mtr_color {
> -	RTE_MTR_GREEN = 0, /**< Green */
> -	RTE_MTR_YELLOW, /**< Yellow */
> -	RTE_MTR_RED, /**< Red */
> -	RTE_MTR_COLORS /**< Number of colors. */
> -};
> -

We should not use rte_color yet, we should simply create alias of current rte_mtr_color enum and values to the new rte_color enum and enum values, just like you do it below for rte_meter.h. So please remove the rest of the changes for now.

<snip>

> diff --git a/lib/librte_ethdev/rte_tm.h b/lib/librte_ethdev/rte_tm.h
> index 646ef3880..95f322313 100644
> --- a/lib/librte_ethdev/rte_tm.h
> +++ b/lib/librte_ethdev/rte_tm.h
> @@ -51,6 +51,7 @@
>  #include <stdint.h>
> 
>  #include <rte_common.h>
> +#include <rte_color.h>
> 
>  #ifdef __cplusplus
>  extern "C" {
> @@ -115,16 +116,6 @@ extern "C" {
>   */
>  #define RTE_TM_NODE_LEVEL_ID_ANY                     UINT32_MAX
> 
> -/**
> - * Color
> - */
> -enum rte_tm_color {
> -	RTE_TM_GREEN = 0, /**< Green */
> -	RTE_TM_YELLOW, /**< Yellow */
> -	RTE_TM_RED, /**< Red */
> -	RTE_TM_COLORS /**< Number of colors */
> -};
> -

We should not use rte_color yet, we should simply create alias of current rte_tm_color enum and values to the new rte_color enum and enum values, just like you do it below for rte_meter.h. So please remove the rest of the changes for now.

<snip>


> diff --git a/lib/librte_meter/rte_meter.h b/lib/librte_meter/rte_meter.h
> index 58a051583..e6187c49d 100644
> --- a/lib/librte_meter/rte_meter.h
> +++ b/lib/librte_meter/rte_meter.h
> @@ -21,6 +21,7 @@ extern "C" {
> 
>  #include <stdint.h>
> 
> +#include <rte_color.h>
>  /*
>   * Application Programmer's Interface (API)
>   *
> @@ -34,6 +35,12 @@ enum rte_meter_color {
>  	e_RTE_METER_COLORS     /**< Number of available colors */
>  };
> 
> +/* New rte_color is defined and used to deprecate rte_meter_color soon.
> */
> +#define rte_meter_color rte_color
> +#define e_RTE_METER_GREEN RTE_COLOR_GREEN
> +#define e_RTE_METER_YELLOW RTE_COLOR_YELLOW
> +#define e_RTE_METER_RED RTE_COLOR_RED
> +
>  /** srTCM parameters per metered traffic flow. The CIR, CBS and EBS
> parameters only
>  count bytes of IP packets and do not include link specific headers. At least
> one of
>  the CBS or EBS parameters has to be greater than zero. */
> --
> 2.17.1

The changes for rte_meter.h are perfect, please do the same to rte_mtr.h and rte_tm.h.

Regards,
Cristian



More information about the dev mailing list