[v2] app/testpmd: add CLI for action meter color

Message ID 20210511092810.22801-1-haifeil@nvidia.com (mailing list archive)
State Changes Requested, archived
Delegated to: Ferruh Yigit
Headers
Series [v2] app/testpmd: add CLI for action meter color |

Checks

Context Check Description
ci/checkpatch success coding style OK
ci/Intel-compilation fail Compilation issues
ci/iol-intel-Performance success Performance Testing PASS
ci/iol-abi-testing success Testing PASS
ci/iol-testing success Testing PASS
ci/iol-intel-Functional success Functional Testing PASS
ci/github-robot success github build: passed

Commit Message

Haifei Luo May 11, 2021, 9:28 a.m. UTC
  Currently action RTE_FLOW_ACTION_TYPE_METER_COLOR is defined.
Add the CLI for this action in meter policy: color type (types)
There are three types: green, yellow and red.

Example for the new policy meter CLIs:
   add port meter policy 0 1 g_actions color type green / end y_actions
        color type yellow / end r_actions color type red / end

In the above command, the action type is RTE_FLOW_ACTION_TYPE_METER_COLOR,
the meter policy action list: green -> green, yellow -> yellow, red -> red.

V2: rebase the latest code.

Signed-off-by: Haifei Luo <haifeil@nvidia.com>
Acked-by: Ori Kam <orika@nvidia.com>

---
 app/test-pmd/cmdline_flow.c | 85 +++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 85 insertions(+)
  

Comments

Ferruh Yigit May 11, 2021, 11:35 a.m. UTC | #1
On 5/11/2021 10:28 AM, Haifei Luo wrote:
> Currently action RTE_FLOW_ACTION_TYPE_METER_COLOR is defined.
> Add the CLI for this action in meter policy: color type (types)
> There are three types: green, yellow and red.
> 
> Example for the new policy meter CLIs:
>    add port meter policy 0 1 g_actions color type green / end y_actions
>         color type yellow / end r_actions color type red / end
> 
> In the above command, the action type is RTE_FLOW_ACTION_TYPE_METER_COLOR,
> the meter policy action list: green -> green, yellow -> yellow, red -> red.
> 
> V2: rebase the latest code.
> 
> Signed-off-by: Haifei Luo <haifeil@nvidia.com>
> Acked-by: Ori Kam <orika@nvidia.com>


cc'ed Jasvinder & Cristian for review.

This patch is not a fix but adding support for testing new meter action type, so
I assume it can be postponed to next release if missing review from maintainers.
  
Cristian Dumitrescu May 11, 2021, 12:34 p.m. UTC | #2
> -----Original Message-----
> From: Yigit, Ferruh <ferruh.yigit@intel.com>
> Sent: Tuesday, May 11, 2021 12:35 PM
> To: Haifei Luo <haifeil@nvidia.com>; matan@nvidia.com; orika@nvidia.com;
> viacheslavo@nvidia.com; Li, Xiaoyun <xiaoyun.li@intel.com>
> Cc: dev@dpdk.org; thomas@monjalon.net; rasland@nvidia.com; Singh,
> Jasvinder <jasvinder.singh@intel.com>; Dumitrescu, Cristian
> <cristian.dumitrescu@intel.com>
> Subject: Re: [PATCH v2] app/testpmd: add CLI for action meter color
> 
> On 5/11/2021 10:28 AM, Haifei Luo wrote:
> > Currently action RTE_FLOW_ACTION_TYPE_METER_COLOR is defined.
> > Add the CLI for this action in meter policy: color type (types)
> > There are three types: green, yellow and red.
> >
> > Example for the new policy meter CLIs:
> >    add port meter policy 0 1 g_actions color type green / end y_actions
> >         color type yellow / end r_actions color type red / end
> >
> > In the above command, the action type is
> RTE_FLOW_ACTION_TYPE_METER_COLOR,
> > the meter policy action list: green -> green, yellow -> yellow, red -> red.
> >
> > V2: rebase the latest code.
> >
> > Signed-off-by: Haifei Luo <haifeil@nvidia.com>
> > Acked-by: Ori Kam <orika@nvidia.com>
> 
> 
> cc'ed Jasvinder & Cristian for review.
> 
> This patch is not a fix but adding support for testing new meter action type,
> so
> I assume it can be postponed to next release if missing review from
> maintainers.

Hi Ferruh,

This patch looks good to me, but I think it should be reviewed and acked by Xiaoyun, the testpmd maintainer, who is already in the To: list?

Regards,
Cristian
  
Ferruh Yigit May 11, 2021, 1:20 p.m. UTC | #3
On 5/11/2021 1:34 PM, Dumitrescu, Cristian wrote:
> 
> 
>> -----Original Message-----
>> From: Yigit, Ferruh <ferruh.yigit@intel.com>
>> Sent: Tuesday, May 11, 2021 12:35 PM
>> To: Haifei Luo <haifeil@nvidia.com>; matan@nvidia.com; orika@nvidia.com;
>> viacheslavo@nvidia.com; Li, Xiaoyun <xiaoyun.li@intel.com>
>> Cc: dev@dpdk.org; thomas@monjalon.net; rasland@nvidia.com; Singh,
>> Jasvinder <jasvinder.singh@intel.com>; Dumitrescu, Cristian
>> <cristian.dumitrescu@intel.com>
>> Subject: Re: [PATCH v2] app/testpmd: add CLI for action meter color
>>
>> On 5/11/2021 10:28 AM, Haifei Luo wrote:
>>> Currently action RTE_FLOW_ACTION_TYPE_METER_COLOR is defined.
>>> Add the CLI for this action in meter policy: color type (types)
>>> There are three types: green, yellow and red.
>>>
>>> Example for the new policy meter CLIs:
>>>    add port meter policy 0 1 g_actions color type green / end y_actions
>>>         color type yellow / end r_actions color type red / end
>>>
>>> In the above command, the action type is
>> RTE_FLOW_ACTION_TYPE_METER_COLOR,
>>> the meter policy action list: green -> green, yellow -> yellow, red -> red.
>>>
>>> V2: rebase the latest code.
>>>
>>> Signed-off-by: Haifei Luo <haifeil@nvidia.com>
>>> Acked-by: Ori Kam <orika@nvidia.com>
>>
>>
>> cc'ed Jasvinder & Cristian for review.
>>
>> This patch is not a fix but adding support for testing new meter action type,
>> so
>> I assume it can be postponed to next release if missing review from
>> maintainers.
> 
> Hi Ferruh,
> 
> This patch looks good to me, but I think it should be reviewed and acked by Xiaoyun, the testpmd maintainer, who is already in the To: list?
> 

If so I will proceed with your explicit ack:
Cristian Dumitrescu <cristian.dumitrescu@intel.com>

Xiaoyun is main maintainer but for some submodules we rely on the relevant
maintainer, like flow API related part to Ori or for meter/tm part to you etc..
  
Ferruh Yigit May 11, 2021, 7:22 p.m. UTC | #4
On 5/11/2021 10:28 AM, Haifei Luo wrote:
> Currently action RTE_FLOW_ACTION_TYPE_METER_COLOR is defined.
> Add the CLI for this action in meter policy: color type (types)
> There are three types: green, yellow and red.
> 
> Example for the new policy meter CLIs:
>    add port meter policy 0 1 g_actions color type green / end y_actions
>         color type yellow / end r_actions color type red / end
> 
> In the above command, the action type is RTE_FLOW_ACTION_TYPE_METER_COLOR,
> the meter policy action list: green -> green, yellow -> yellow, red -> red.
> 
> V2: rebase the latest code.

Hint: you can put the changelog as last thing in commit log after '---' marker,
than it will be taken as note and will automatically removed by "git am".

> 
> Signed-off-by: Haifei Luo <haifeil@nvidia.com>
> Acked-by: Ori Kam <orika@nvidia.com>
> 
> ---
>  app/test-pmd/cmdline_flow.c | 85 +++++++++++++++++++++++++++++++++++++++++++++
>  1 file changed, 85 insertions(+)

Hi Haifei,

Can you please document new command in the testpmd documentation,
'testpmd_funcs.rst' has already "add port meter policy ..." command documented,
you can extend it unless there is no better place to document this new command.

Can you also update release notes too, there is already a block there listing
new commands, this can go into same place.
  
Haifei Luo May 12, 2021, 1:41 a.m. UTC | #5
HI Ferruh,
     Will update the doc and send V3. Thank you.

-----Original Message-----
From: Ferruh Yigit <ferruh.yigit@intel.com> 
Sent: Wednesday, May 12, 2021 3:22 AM
To: Haifei Luo <haifeil@nvidia.com>; Matan Azrad <matan@nvidia.com>; Ori Kam <orika@nvidia.com>; Slava Ovsiienko <viacheslavo@nvidia.com>; Xiaoyun Li <xiaoyun.li@intel.com>
Cc: dev@dpdk.org; NBU-Contact-Thomas Monjalon <thomas@monjalon.net>; Raslan Darawsheh <rasland@nvidia.com>
Subject: Re: [PATCH v2] app/testpmd: add CLI for action meter color

External email: Use caution opening links or attachments


On 5/11/2021 10:28 AM, Haifei Luo wrote:
> Currently action RTE_FLOW_ACTION_TYPE_METER_COLOR is defined.
> Add the CLI for this action in meter policy: color type (types) There 
> are three types: green, yellow and red.
>
> Example for the new policy meter CLIs:
>    add port meter policy 0 1 g_actions color type green / end y_actions
>         color type yellow / end r_actions color type red / end
>
> In the above command, the action type is 
> RTE_FLOW_ACTION_TYPE_METER_COLOR, the meter policy action list: green -> green, yellow -> yellow, red -> red.
>
> V2: rebase the latest code.

Hint: you can put the changelog as last thing in commit log after '---' marker, than it will be taken as note and will automatically removed by "git am".

>
> Signed-off-by: Haifei Luo <haifeil@nvidia.com>
> Acked-by: Ori Kam <orika@nvidia.com>
>
> ---
>  app/test-pmd/cmdline_flow.c | 85 
> +++++++++++++++++++++++++++++++++++++++++++++
>  1 file changed, 85 insertions(+)

Hi Haifei,

Can you please document new command in the testpmd documentation, 'testpmd_funcs.rst' has already "add port meter policy ..." command documented, you can extend it unless there is no better place to document this new command.

Can you also update release notes too, there is already a block there listing new commands, this can go into same place.
  
Haifei Luo May 12, 2021, 7:03 a.m. UTC | #6
HI Ferruh,
    Added the docs in V3 and please kindly check. Thank you.

-----Original Message-----
From: Haifei Luo 
Sent: Wednesday, May 12, 2021 9:42 AM
To: Ferruh Yigit <ferruh.yigit@intel.com>; Matan Azrad <matan@nvidia.com>; Ori Kam <orika@nvidia.com>; Slava Ovsiienko <viacheslavo@nvidia.com>; Xiaoyun Li <xiaoyun.li@intel.com>
Cc: dev@dpdk.org; NBU-Contact-Thomas Monjalon <thomas@monjalon.net>; Raslan Darawsheh <rasland@nvidia.com>
Subject: RE: [PATCH v2] app/testpmd: add CLI for action meter color

HI Ferruh,
     Will update the doc and send V3. Thank you.

-----Original Message-----
From: Ferruh Yigit <ferruh.yigit@intel.com>
Sent: Wednesday, May 12, 2021 3:22 AM
To: Haifei Luo <haifeil@nvidia.com>; Matan Azrad <matan@nvidia.com>; Ori Kam <orika@nvidia.com>; Slava Ovsiienko <viacheslavo@nvidia.com>; Xiaoyun Li <xiaoyun.li@intel.com>
Cc: dev@dpdk.org; NBU-Contact-Thomas Monjalon <thomas@monjalon.net>; Raslan Darawsheh <rasland@nvidia.com>
Subject: Re: [PATCH v2] app/testpmd: add CLI for action meter color

External email: Use caution opening links or attachments


On 5/11/2021 10:28 AM, Haifei Luo wrote:
> Currently action RTE_FLOW_ACTION_TYPE_METER_COLOR is defined.
> Add the CLI for this action in meter policy: color type (types) There 
> are three types: green, yellow and red.
>
> Example for the new policy meter CLIs:
>    add port meter policy 0 1 g_actions color type green / end y_actions
>         color type yellow / end r_actions color type red / end
>
> In the above command, the action type is 
> RTE_FLOW_ACTION_TYPE_METER_COLOR, the meter policy action list: green -> green, yellow -> yellow, red -> red.
>
> V2: rebase the latest code.

Hint: you can put the changelog as last thing in commit log after '---' marker, than it will be taken as note and will automatically removed by "git am".

>
> Signed-off-by: Haifei Luo <haifeil@nvidia.com>
> Acked-by: Ori Kam <orika@nvidia.com>
>
> ---
>  app/test-pmd/cmdline_flow.c | 85
> +++++++++++++++++++++++++++++++++++++++++++++
>  1 file changed, 85 insertions(+)

Hi Haifei,

Can you please document new command in the testpmd documentation, 'testpmd_funcs.rst' has already "add port meter policy ..." command documented, you can extend it unless there is no better place to document this new command.

Can you also update release notes too, there is already a block there listing new commands, this can go into same place.
  
Cristian Dumitrescu May 12, 2021, 7:54 p.m. UTC | #7
> -----Original Message-----
> From: Yigit, Ferruh <ferruh.yigit@intel.com>
> Sent: Tuesday, May 11, 2021 2:21 PM
> To: Dumitrescu, Cristian <cristian.dumitrescu@intel.com>; Haifei Luo
> <haifeil@nvidia.com>; matan@nvidia.com; orika@nvidia.com;
> viacheslavo@nvidia.com; Li, Xiaoyun <xiaoyun.li@intel.com>
> Cc: dev@dpdk.org; thomas@monjalon.net; rasland@nvidia.com; Singh,
> Jasvinder <jasvinder.singh@intel.com>
> Subject: Re: [PATCH v2] app/testpmd: add CLI for action meter color
> 
> On 5/11/2021 1:34 PM, Dumitrescu, Cristian wrote:
> >
> >
> >> -----Original Message-----
> >> From: Yigit, Ferruh <ferruh.yigit@intel.com>
> >> Sent: Tuesday, May 11, 2021 12:35 PM
> >> To: Haifei Luo <haifeil@nvidia.com>; matan@nvidia.com;
> orika@nvidia.com;
> >> viacheslavo@nvidia.com; Li, Xiaoyun <xiaoyun.li@intel.com>
> >> Cc: dev@dpdk.org; thomas@monjalon.net; rasland@nvidia.com; Singh,
> >> Jasvinder <jasvinder.singh@intel.com>; Dumitrescu, Cristian
> >> <cristian.dumitrescu@intel.com>
> >> Subject: Re: [PATCH v2] app/testpmd: add CLI for action meter color
> >>
> >> On 5/11/2021 10:28 AM, Haifei Luo wrote:
> >>> Currently action RTE_FLOW_ACTION_TYPE_METER_COLOR is defined.
> >>> Add the CLI for this action in meter policy: color type (types)
> >>> There are three types: green, yellow and red.
> >>>
> >>> Example for the new policy meter CLIs:
> >>>    add port meter policy 0 1 g_actions color type green / end y_actions
> >>>         color type yellow / end r_actions color type red / end
> >>>
> >>> In the above command, the action type is
> >> RTE_FLOW_ACTION_TYPE_METER_COLOR,
> >>> the meter policy action list: green -> green, yellow -> yellow, red -> red.
> >>>
> >>> V2: rebase the latest code.
> >>>
> >>> Signed-off-by: Haifei Luo <haifeil@nvidia.com>
> >>> Acked-by: Ori Kam <orika@nvidia.com>
> >>
> >>
> >> cc'ed Jasvinder & Cristian for review.
> >>
> >> This patch is not a fix but adding support for testing new meter action
> type,
> >> so
> >> I assume it can be postponed to next release if missing review from
> >> maintainers.
> >
> > Hi Ferruh,
> >
> > This patch looks good to me, but I think it should be reviewed and acked by
> Xiaoyun, the testpmd maintainer, who is already in the To: list?
> >
> 
> If so I will proceed with your explicit ack:
> Cristian Dumitrescu <cristian.dumitrescu@intel.com>
> 
> Xiaoyun is main maintainer but for some submodules we rely on the relevant
> maintainer, like flow API related part to Ori or for meter/tm part to you etc..

Acked-by: Cristian Dumitrescu <cristian.dumitrescu@intel.com>
  

Patch

diff --git a/app/test-pmd/cmdline_flow.c b/app/test-pmd/cmdline_flow.c
index 5947341..1c587bb 100644
--- a/app/test-pmd/cmdline_flow.c
+++ b/app/test-pmd/cmdline_flow.c
@@ -348,6 +348,11 @@  enum index {
 	ACTION_PORT_ID_ORIGINAL,
 	ACTION_PORT_ID_ID,
 	ACTION_METER,
+	ACTION_METER_COLOR,
+	ACTION_METER_COLOR_TYPE,
+	ACTION_METER_COLOR_GREEN,
+	ACTION_METER_COLOR_YELLOW,
+	ACTION_METER_COLOR_RED,
 	ACTION_METER_ID,
 	ACTION_OF_SET_MPLS_TTL,
 	ACTION_OF_SET_MPLS_TTL_MPLS_TTL,
@@ -1377,6 +1382,7 @@  struct parse_action_priv {
 	ACTION_PHY_PORT,
 	ACTION_PORT_ID,
 	ACTION_METER,
+	ACTION_METER_COLOR,
 	ACTION_OF_SET_MPLS_TTL,
 	ACTION_OF_DEC_MPLS_TTL,
 	ACTION_OF_SET_NW_TTL,
@@ -1486,6 +1492,12 @@  struct parse_action_priv {
 	ZERO,
 };
 
+static const enum index action_meter_color[] = {
+	ACTION_METER_COLOR_TYPE,
+	ACTION_NEXT,
+	ZERO,
+};
+
 static const enum index action_of_set_mpls_ttl[] = {
 	ACTION_OF_SET_MPLS_TTL_MPLS_TTL,
 	ACTION_NEXT,
@@ -1723,6 +1735,10 @@  static int parse_vc_conf(struct context *, const struct token *,
 static int parse_vc_item_ecpri_type(struct context *, const struct token *,
 				    const char *, unsigned int,
 				    void *, unsigned int);
+static int parse_vc_action_meter_color_type(struct context *,
+					const struct token *,
+					const char *, unsigned int, void *,
+					unsigned int);
 static int parse_vc_action_rss(struct context *, const struct token *,
 			       const char *, unsigned int, void *,
 			       unsigned int);
@@ -3801,6 +3817,37 @@  static int comp_set_modify_field_id(struct context *, const struct token *,
 		.next = NEXT(action_meter),
 		.call = parse_vc,
 	},
+	[ACTION_METER_COLOR] = {
+		.name = "color",
+		.help = "meter color for the packets",
+		.priv = PRIV_ACTION(METER_COLOR,
+				sizeof(struct rte_flow_action_meter_color)),
+		.next = NEXT(action_meter_color),
+		.call = parse_vc,
+	},
+	[ACTION_METER_COLOR_TYPE] = {
+		.name = "type",
+		.help = "specific meter color",
+		.next = NEXT(NEXT_ENTRY(ACTION_NEXT),
+				NEXT_ENTRY(ACTION_METER_COLOR_GREEN,
+					ACTION_METER_COLOR_YELLOW,
+					ACTION_METER_COLOR_RED)),
+	},
+	[ACTION_METER_COLOR_GREEN] = {
+		.name = "green",
+		.help = "meter color green",
+		.call = parse_vc_action_meter_color_type,
+	},
+	[ACTION_METER_COLOR_YELLOW] = {
+		.name = "yellow",
+		.help = "meter color yellow",
+		.call = parse_vc_action_meter_color_type,
+	},
+	[ACTION_METER_COLOR_RED] = {
+		.name = "red",
+		.help = "meter color red",
+		.call = parse_vc_action_meter_color_type,
+	},
 	[ACTION_METER_ID] = {
 		.name = "mtr_id",
 		.help = "meter id to use",
@@ -5318,6 +5365,44 @@  static int comp_set_modify_field_id(struct context *, const struct token *,
 	return len;
 }
 
+/** Parse meter color action type. */
+static int
+parse_vc_action_meter_color_type(struct context *ctx, const struct token *token,
+				const char *str, unsigned int len,
+				void *buf, unsigned int size)
+{
+	struct rte_flow_action *action_data;
+	struct rte_flow_action_meter_color *conf;
+	enum rte_color color;
+
+	(void)buf;
+	(void)size;
+	/* Token name must match. */
+	if (parse_default(ctx, token, str, len, NULL, 0) < 0)
+		return -1;
+	switch (ctx->curr) {
+	case ACTION_METER_COLOR_GREEN:
+		color = RTE_COLOR_GREEN;
+	break;
+	case ACTION_METER_COLOR_YELLOW:
+		color = RTE_COLOR_YELLOW;
+	break;
+	case ACTION_METER_COLOR_RED:
+		color = RTE_COLOR_RED;
+	break;
+	default:
+		return -1;
+	}
+
+	if (!ctx->object)
+		return len;
+	action_data = ctx->object;
+	conf = (struct rte_flow_action_meter_color *)
+					(uintptr_t)(action_data->conf);
+	conf->color = color;
+	return len;
+}
+
 /** Parse RSS action. */
 static int
 parse_vc_action_rss(struct context *ctx, const struct token *token,