app/testpmd: support meter color action in policy
PATCH 1/1 app/testpmd: support meter color action in policy
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.
--- app/test-pmd/cmdline_flow.c | 85 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 85 insertions(+)
app/test-pmd/cmdline_flow.c +85 -0
@@ -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,
Signature · 1 line
1.8.3.1
Quoted 11 lines · Haifei Luo
Currently action
RTE_FLOW_ACTION_TYPE_METER_COLORis 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 1g_actionscolor type green / endy_actions
color type yellow / endr_actionscolor type red / endIn the above command, the action type is
RTE_FLOW_ACTION_TYPE_METER_COLOR, the meter policy action list: green -> green, yellow -> yellow, red -> red.
Ori can you please review this patch too?
+Cristian for meter.
Quoted 137 lines
Signed-off-by Haifei Luo <[email protected]>--- app/test-pmd/cmdline_flow.c | 85 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 85 insertions(+)app/test-pmd/cmdline_flow.c +85
-0@@ -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,
Quoted 22 lines
-----Original Message-----
From: Yigit, Ferruh <[email protected]>
Sent: Friday, April 30, 2021 1:51 PM
To: Haifei Luo <[email protected]>; [email protected]; [email protected]; [email protected]; Dumitrescu, Cristian <[email protected]>
Cc: [email protected]; [email protected]; [email protected]; Iremonger, Bernard <[email protected]>; Xing, Beilei <[email protected]>; Lu, Wenzhuo <[email protected]>
Subject: Re: [PATCH] app/testpmd: support meter color action in policyQuoted 8 lines · Haifei Luo
Currently action
RTE_FLOW_ACTION_TYPE_METER_COLORis 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 1g_actionscolor type green / endy_actions
color type yellow / endr_actionscolor type red / end
Quoted 9 lines
Quoted 1 line
In the above command, the action type is
RTE_FLOW_ACTION_TYPE_METER_COLOR,Quoted 2 lines
the meter policy action list: green -> green, yellow -> yellow, red -> red.
Ori can you please review this patch too?
+Cristian for meter.
Cc Jasvinder
Quoted 143 lines
Quoted 3 lines
Signed-off-by Haifei Luo <[email protected]>--- app/test-pmd/cmdline_flow.c | 85+++++++++++++++++++++++++++++++++++++++++++++
app/test-pmd/cmdline_flow.c static int parse_vc_conf(struct context *, const
Quoted 40 lines
1 file changed, 85 insertions(+)app/test-pmd/cmdline_flow.c +12
-0@@ -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 *, conststruct token *,
app/test-pmd/cmdline_flow.c static int comp_set_modify_field_id(struct
Quoted 11 lines
app/test-pmd/cmdline_flow.c +4
-0static 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(structcontext *, const struct token *,
Quoted 6 lines
app/test-pmd/cmdline_flow.c +3
-0.next = NEXT(action_meter), .call = parse_vc, }, + [ACTION_METER_COLOR] = { + .name = "color", + .help = "meter color for the packets",app/test-pmd/cmdline_flow.c static int comp_set_modify_field_id(struct context *, const struct token *,
Quoted 10 lines
app/test-pmd/cmdline_flow.c +10
-0+ .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,
app/test-pmd/cmdline_flow.c static int comp_set_modify_field_id(struct
Quoted 22 lines
app/test-pmd/cmdline_flow.c +18
-0+ 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(structcontext *, const struct token *,
app/test-pmd/cmdline_flow.c static int comp_set_modify_field_id(struct context *, const struct token *,
Quoted 6 lines
app/test-pmd/cmdline_flow.c +3
-0return len; } +/** Parse meter color action type. */ +static int +parse_vc_action_meter_color_type(struct context *ctx, const structtoken *token,
Quoted 39 lines
app/test-pmd/cmdline_flow.c +35
-0+ 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,
Ori Kam
Acked-byHI Haifei,
Quoted 176 lines
-----Original Message-----
From: Dumitrescu, Cristian <[email protected]>
Sent: Monday, May 3, 2021 3:11 PM
Subject: RE: [PATCH] app/testpmd: support meter color action in policyQuoted 7 lines
-----Original Message-----
From: Yigit, Ferruh <[email protected]>
Sent: Friday, April 30, 2021 1:51 PM
To: Haifei Luo <[email protected]>; [email protected]; [email protected]; [email protected]; Dumitrescu, Cristian <[email protected]>
Cc: [email protected]; [email protected]; [email protected];Iremonger,
Quoted 13 lines
Bernard <[email protected]>; Xing, Beilei <[email protected]>; Lu, Wenzhuo <[email protected]>
Subject: Re: [PATCH] app/testpmd: support meter color action in policyQuoted 8 lines · Haifei Luo
Currently action
RTE_FLOW_ACTION_TYPE_METER_COLORis 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 1g_actionscolor type green / endy_actions
color type yellow / endr_actionscolor type red / endQuoted 9 lines
Quoted 1 line
In the above command, the action type is
RTE_FLOW_ACTION_TYPE_METER_COLOR,Quoted 2 lines
the meter policy action list: green -> green, yellow -> yellow, red -> red.
Ori can you please review this patch too?
+Cristian for meter.
Cc Jasvinder
Quoted 34 lines
Quoted 3 lines
Signed-off-by Haifei Luo <[email protected]>--- app/test-pmd/cmdline_flow.c | 85+++++++++++++++++++++++++++++++++++++++++++++
Quoted 30 lines
1 file changed, 85 insertions(+)(quoted diff) +0
-0
b/app/test-pmd/cmdline_flow.cindex 5947341..1c587bb 100644app/test-pmd/cmdline_flow.c +6
-0@@ -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, };Quoted 13 lines
Quoted 11 lines
app/test-pmd/cmdline_flow.c +6
-0+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 *,
Quoted 1 line
static int parse_vc_item_ecpri_type(struct context *, const struct token
*,
Quoted 88 lines
app/test-pmd/cmdline_flow.c static int comp_set_modify_field_id(struct
Quoted 10 lines
app/test-pmd/cmdline_flow.c +4
-0const 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(structcontext *, const struct token *,
Quoted 6 lines
app/test-pmd/cmdline_flow.c +3
-0.next = NEXT(action_meter), .call = parse_vc, }, + [ACTION_METER_COLOR] = { + .name = "color", + .help = "meter color for the packets",app/test-pmd/cmdline_flow.c static int comp_set_modify_field_id(struct context *, const struct token *,
Quoted 10 lines
app/test-pmd/cmdline_flow.c +10
-0+ .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,
app/test-pmd/cmdline_flow.c static int comp_set_modify_field_id(struct
Quoted 22 lines
app/test-pmd/cmdline_flow.c +18
-0+ 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(structcontext *, const struct token *,
app/test-pmd/cmdline_flow.c static int comp_set_modify_field_id(struct context *, const struct token *,
Quoted 5 lines
app/test-pmd/cmdline_flow.c +2
-0return len; } +/** Parse meter color action type. */ static int +parse_vc_action_meter_color_type(struct context *ctx, const structtoken *token,
Quoted 31 lines
app/test-pmd/cmdline_flow.c +31
-0+ 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);
Quoted 8 lines
Quoted 8 lines
app/test-pmd/cmdline_flow.c static int comp_set_modify_field_id(struct context *, const struct token *, · line 5408
Quoted 8 lines
app/test-pmd/cmdline_flow.c +4
-0+ conf->color = color; +return len; +} +/** Parse RSS action. */ static int parse_vc_action_rss(struct context *ctx, const struct token *token,
Best,
Ori
PATCH v2 1/1 app/testpmd: add CLI for action meter color
In reply to Haifei LuoCurrently 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.
--- app/test-pmd/cmdline_flow.c | 85 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 85 insertions(+)
app/test-pmd/cmdline_flow.c +85 -0
@@ -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,
Signature · 1 line
1.8.3.1
Re: [dpdk-dev] [PATCH v2] app/testpmd: add CLI for action meter color
Quoted 8 lines · Haifei Luo
Currently action
RTE_FLOW_ACTION_TYPE_METER_COLORis 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 1g_actionscolor type green / endy_actions
color type yellow / endr_actionscolor type red / end
Quoted 7 lines
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 <[email protected]>Acked-by Ori Kam <[email protected]>
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.
Re: [dpdk-dev] [PATCH v2] app/testpmd: add CLI for action meter color
Quoted 31 lines
-----Original Message-----
From: Yigit, Ferruh <[email protected]>
Sent: Tuesday, May 11, 2021 12:35 PM
To: Haifei Luo <[email protected]>; [email protected]; [email protected]; [email protected]; Li, Xiaoyun <[email protected]>
Cc: [email protected]; [email protected]; [email protected]; Singh, Jasvinder <[email protected]>; Dumitrescu, Cristian <[email protected]>
Subject: Re: [PATCH v2] app/testpmd: add CLI for action meter colorQuoted 9 lines · Haifei Luo
Currently action
RTE_FLOW_ACTION_TYPE_METER_COLORis 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 1g_actionscolor type green / endy_actions
color type yellow / endr_actionscolor type red / endIn the above command, the action type is
RTE_FLOW_ACTION_TYPE_METER_COLOR,Quoted 6 lines
the meter policy action list: green -> green, yellow -> yellow, red -> red.
V2: rebase the latest code.
Signed-off-by Haifei Luo <[email protected]>Acked-by Ori Kam <[email protected]>
Quoted 6 lines
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
Re: [dpdk-dev] [PATCH v2] app/testpmd: add CLI for action meter color
Quoted 33 lines · Cristian
Quoted 33 lines
-----Original Message-----
From: Yigit, Ferruh <[email protected]>
Sent: Tuesday, May 11, 2021 12:35 PM
To: Haifei Luo <[email protected]>; [email protected]; [email protected]; [email protected]; Li, Xiaoyun <[email protected]>
Cc: [email protected]; [email protected]; [email protected]; Singh, Jasvinder <[email protected]>; Dumitrescu, Cristian <[email protected]>
Subject: Re: [PATCH v2] app/testpmd: add CLI for action meter colorQuoted 9 lines · Haifei Luo
Currently action
RTE_FLOW_ACTION_TYPE_METER_COLORis 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 1g_actionscolor type green / endy_actions
color type yellow / endr_actionscolor type red / endIn the above command, the action type is
RTE_FLOW_ACTION_TYPE_METER_COLOR,Quoted 6 lines
the meter policy action list: green -> green, yellow -> yellow, red -> red.
V2: rebase the latest code.
Signed-off-by Haifei Luo <[email protected]>Acked-by Ori Kam <[email protected]>cc'ed Jasvinder & Cristian for review.
Quoted 9 lines
Quoted 4 lines
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 <[email protected]>
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..
Dumitrescu, Cristian
Acked-byRe: [dpdk-dev] [PATCH v2] app/testpmd: add CLI for action meter color
Quoted 56 lines
-----Original Message-----
From: Yigit, Ferruh <[email protected]>
Sent: Tuesday, May 11, 2021 2:21 PM
To: Dumitrescu, Cristian <[email protected]>; Haifei Luo <[email protected]>; [email protected]; [email protected]; [email protected]; Li, Xiaoyun <[email protected]>
Cc: [email protected]; [email protected]; [email protected]; Singh, Jasvinder <[email protected]>
Subject: Re: [PATCH v2] app/testpmd: add CLI for action meter colorQuoted 6 lines · Cristian
Quoted 6 lines
-----Original Message-----
From: Yigit, Ferruh <[email protected]>
Sent: Tuesday, May 11, 2021 12:35 PM
To: Haifei Luo <[email protected]>; [email protected];Quoted 21 lines
Quoted 21 lines
[email protected]; Li, Xiaoyun <[email protected]>
Cc: [email protected]; [email protected]; [email protected]; Singh, Jasvinder <[email protected]>; Dumitrescu, Cristian <[email protected]>
Subject: Re: [PATCH v2] app/testpmd: add CLI for action meter colorQuoted 9 lines · Haifei Luo
Currently action
RTE_FLOW_ACTION_TYPE_METER_COLORis 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 1g_actionscolor type green / endy_actions
color type yellow / endr_actionscolor type red / endIn the above command, the action type is
RTE_FLOW_ACTION_TYPE_METER_COLOR,Quoted 4 lines
the meter policy action list: green -> green, yellow -> yellow, red -> red.
V2: rebase the latest code.
Quoted 7 lines
Quoted 7 lines
Quoted 2 lines
Signed-off-by Haifei Luo <[email protected]>Acked-by Ori Kam <[email protected]>cc'ed Jasvinder & Cristian for review.
This patch is not a fix but adding support for testing new meter action
type,
Quoted 7 lines
Quoted 3 lines
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
Quoted 8 lines
Xiaoyun, the testpmd maintainer, who is already in the To: list?
Quoted 1 line
If so I will proceed with your explicit ack:
Cristian Dumitrescu <[email protected]>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..
Re: [dpdk-dev] [PATCH v2] app/testpmd: add CLI for action meter color
In reply to Haifei LuoQuoted 4 lines · Haifei Luo
Currently action
RTE_FLOW_ACTION_TYPE_METER_COLORis defined. Add the CLI for this action in meter policy: color type (types) There are three types: green, yellow and red.
Quoted 8 lines
Example for the new policy meter CLIs:
add port meter policy 0 1g_actionscolor type green / endy_actions
color type yellow / endr_actionscolor type red / endIn 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".
Quoted 7 lines
Signed-off-by Haifei Luo <[email protected]>Acked-by Ori Kam <[email protected]>--- 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.
Re: [dpdk-dev] [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 <[email protected]>
Sent: Wednesday, May 12, 2021 3:22 AM
To: Haifei Luo <[email protected]>; Matan Azrad <[email protected]>; Ori Kam <[email protected]>; Slava Ovsiienko <[email protected]>; Xiaoyun Li <[email protected]>
Cc: [email protected]; NBU-Contact-Thomas Monjalon <[email protected]>; Raslan Darawsheh <[email protected]>
Subject: Re: [PATCH v2] app/testpmd: add CLI for action meter color
External email: Use caution opening links or attachments
Quoted 4 lines · Haifei Luo
Currently action
RTE_FLOW_ACTION_TYPE_METER_COLORis defined. Add the CLI for this action in meter policy: color type (types) There are three types: green, yellow and red.
Quoted 8 lines
Example for the new policy meter CLIs:
add port meter policy 0 1g_actionscolor type green / endy_actions
color type yellow / endr_actionscolor type red / endIn 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".
Quoted 8 lines
Signed-off-by Haifei Luo <[email protected]>Acked-by Ori Kam <[email protected]>--- 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.
Re: [dpdk-dev] [PATCH v2] app/testpmd: add CLI for action meter color
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 <[email protected]>; Matan Azrad <[email protected]>; Ori Kam <[email protected]>; Slava Ovsiienko <[email protected]>; Xiaoyun Li <[email protected]>
Cc: [email protected]; NBU-Contact-Thomas Monjalon <[email protected]>; Raslan Darawsheh <[email protected]>
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 <[email protected]>
Sent: Wednesday, May 12, 2021 3:22 AM
To: Haifei Luo <[email protected]>; Matan Azrad <[email protected]>; Ori Kam <[email protected]>; Slava Ovsiienko <[email protected]>; Xiaoyun Li <[email protected]>
Cc: [email protected]; NBU-Contact-Thomas Monjalon <[email protected]>; Raslan Darawsheh <[email protected]>
Subject: Re: [PATCH v2] app/testpmd: add CLI for action meter color
External email: Use caution opening links or attachments
Quoted 4 lines · Haifei Luo
Currently action
RTE_FLOW_ACTION_TYPE_METER_COLORis defined. Add the CLI for this action in meter policy: color type (types) There are three types: green, yellow and red.
Quoted 8 lines
Example for the new policy meter CLIs:
add port meter policy 0 1g_actionscolor type green / endy_actions
color type yellow / endr_actionscolor type red / endIn 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".
Quoted 8 lines
Signed-off-by Haifei Luo <[email protected]>Acked-by Ori Kam <[email protected]>--- 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.
PATCH v3 1/1 app/testpmd: add CLI for action meter color
In reply to Haifei LuoCurrently action RTE_FLOW_ACTION_TYPE_METER_COLOR is defined. Add the CLI for this aciton: 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.
V3: update the document.
--- app/test-pmd/cmdline_flow.c | 85 +++++++++++++++++++++++++++++ doc/guides/rel_notes/release_21_05.rst | 3 + doc/guides/testpmd_app_ug/testpmd_funcs.rst | 4 ++ 3 files changed, 92 insertions(+)
app/test-pmd/cmdline_flow.c +85 -0
@@ -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,
doc/guides/rel_notes/release_21_05.rst +3 -0
@@ -269,6 +269,9 @@ New Features * Added commands to construct conntrack context and relevant indirect action handle creation, update for conntrack action as well as conntrack item matching. + * Added commands for action meter color to color the packet to reflect + the meter color result. + ``color type (green|yellow|red)`` * **Added support for the FIB lookup method in the l3fwd example app.**
doc/guides/testpmd_app_ug/testpmd_funcs.rst +4 -0
@@ -4089,6 +4089,10 @@ This section lists supported actions and their attributes, if any. - ``indirect_action_id {unsigned}``: Indirect action ID to use +- ``color``: Color the packet to reflect the meter color result + + - ``type {value}``: Set color type with specified value(green/yellow/red) + Destroying flow rules ~~~~~~~~~~~~~~~~~~~~~
Signature · 1 line
1.8.3.1
Re: [dpdk-dev] [PATCH v3] app/testpmd: add CLI for action meter color
Quoted 14 lines · Haifei Luo
Currently action
RTE_FLOW_ACTION_TYPE_METER_COLORis defined. Add the CLI for this aciton: color type (types) There are three types: green, yellow and red.Example for the new policy meter CLIs:
add port meter policy 0 1g_actionscolor type green / endy_actions
color type yellow / endr_actionscolor type red / endIn 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.
V3: update the document.
Quoted 7 lines
Signed-off-by Haifei Luo <[email protected]>Acked-by Ori Kam <[email protected]>--- app/test-pmd/cmdline_flow.c | 85 +++++++++++++++++++++++++++++ doc/guides/rel_notes/release_21_05.rst | 3 + doc/guides/testpmd_app_ug/testpmd_funcs.rst | 4 ++ 3 files changed, 92 insertions(+)
Thanks Haifei for the documentation update,
Can you also add a sample for the color in the 'testpmd_funcs.rst', in section "Flow rules management"?
If you check through end of the section you will see same samples sub-sections for various flow rules, since meter color action is new I think it would be helpful to have the sample. You already have one in the commit log but may be good to have it in the documentation too.
PATCH v4 1/1 app/testpmd: add CLI for action meter color
In reply to Haifei LuoCurrently action RTE_FLOW_ACTION_TYPE_METER_COLOR is defined. Add the CLI for this aciton: 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.
V3: update the document.
V4: add sample in the document.
--- app/test-pmd/cmdline_flow.c | 85 +++++++++++++++++++++++++++++ doc/guides/rel_notes/release_21_05.rst | 3 + doc/guides/testpmd_app_ug/testpmd_funcs.rst | 23 ++++++++ 3 files changed, 111 insertions(+)
app/test-pmd/cmdline_flow.c +85 -0
@@ -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,
doc/guides/rel_notes/release_21_05.rst +3 -0
@@ -269,6 +269,9 @@ New Features * Added commands to construct conntrack context and relevant indirect action handle creation, update for conntrack action as well as conntrack item matching. + * Added commands for action meter color to color the packet to reflect + the meter color result. + ``color type (green|yellow|red)`` * **Added support for the FIB lookup method in the l3fwd example app.**
doc/guides/testpmd_app_ug/testpmd_funcs.rst +23 -0
@@ -4089,6 +4089,10 @@ This section lists supported actions and their attributes, if any. - ``indirect_action_id {unsigned}``: Indirect action ID to use +- ``color``: Color the packet to reflect the meter color result + + - ``type {value}``: Set color type with specified value(green/yellow/red) + Destroying flow rules ~~~~~~~~~~~~~~~~~~~~~
@@ -5010,6 +5014,25 @@ rules like above for the peer port. testpmd> flow indirect_action 0 update 0 action conntrack_update dir / end +Sample meter with policy rules +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +Meter with policy rules can be created by the following commands: + +Need to create policy first and actions are set for green/yellow/red colors. +Create meter with policy id. Create flow with meter id. + +Example for policy with meter color action.The purpose is to color the packet +to reflect the meter color result.The meter policy action list: +green -> green, yellow -> yellow, red -> red. + +:: +testpmd> add port meter profile srtcm_rfc2697 0 13 21504 2688 0 0 +testpmd> add port meter policy 0 1 g_actions color type green / end y_actions color type yellow / end + r_actions color type red / end +testpmd> create port meter 0 1 13 1 yes 0xffff 0 0 +testpmd> flow create 0 priority 0 ingress group 1 pattern eth / end actions meter mtr_id 1 / end + BPF Functions --------------
Signature · 1 line
1.8.3.1
Re: [dpdk-dev] [PATCH v4] app/testpmd: add CLI for action meter color
Quoted 11 lines · Haifei Luo
Currently action
RTE_FLOW_ACTION_TYPE_METER_COLORis defined. Add the CLI for this aciton: color type (types) There are three types: green, yellow and red.Example for the new policy meter CLIs:
add port meter policy 0 1g_actionscolor type green / endy_actions
color type yellow / endr_actionscolor type red / endIn the above command, the action type is
RTE_FLOW_ACTION_TYPE_METER_COLOR, the meter policy action list: green -> green, yellow -> yellow, red -> red.
Quoted 6 lines
V2: rebase the latest code.
V3: update the document.
V4: add sample in the document.Signed-off-by Haifei Luo <[email protected]>Acked-by Ori Kam <[email protected]>
testpmd_funcs.rst:5033: WARNING: Block quote ends without a blank line; unexpected unindent.
<...>
Quoted 4 lines
doc/guides/testpmd_app_ug/testpmd_funcs.rst +0
-0@@ -5010,6 +5014,25 @@ rules like above for the peer port. testpmd> flow indirect_action 0 update 0 action conntrack_update dir / end
doc/guides/testpmd_app_ug/testpmd_funcs.rst rules like above for the peer port. · line 5026
Quoted 10 lines
doc/guides/testpmd_app_ug/testpmd_funcs.rst +10
-0+Sample meter with policy rules +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +Meter with policy rules can be created by the following commands: + +Need to create policy first and actions are set for green/yellow/red colors. +Create meter with policy id. Create flow with meter id. + +Example for policy with meter color action.The purpose is to color the packet +to reflect the meter color result.The meter policy action list:
Space is missing between sentences.
doc/guides/testpmd_app_ug/testpmd_funcs.rst rules like above for the peer port. · line 5035
Quoted 9 lines
doc/guides/testpmd_app_ug/testpmd_funcs.rst +9
-0+green -> green, yellow -> yellow, red -> red. + +:: +testpmd> add port meter profile srtcm_rfc2697 0 13 21504 2688 0 0 +testpmd> add port meter policy 0 1 g_actions color type green / end y_actions color type yellow / end + r_actions color type red / end +testpmd> create port meter 0 1 13 1 yes 0xffff 0 0 +testpmd> flow create 0 priority 0 ingress group 1 pattern eth / end actions meter mtr_id 1 / end +
Gives build warning:
testpmd_funcs.rst:5032: WARNING: Unexpected indentation. testpmd_funcs.rst:5033: WARNING: Block quote ends without a blank line; unexpected unindent.
Will fix above issues while merging.
Re: [dpdk-dev] [PATCH v4] app/testpmd: add CLI for action meter color
In reply to Haifei LuoQuoted 11 lines · Haifei Luo
Currently action
RTE_FLOW_ACTION_TYPE_METER_COLORis defined. Add the CLI for this aciton: color type (types) There are three types: green, yellow and red.Example for the new policy meter CLIs:
add port meter policy 0 1g_actionscolor type green / endy_actions
color type yellow / endr_actionscolor type red / endIn the above command, the action type is
RTE_FLOW_ACTION_TYPE_METER_COLOR, the meter policy action list: green -> green, yellow -> yellow, red -> red.
Quoted 6 lines
V2: rebase the latest code.
V3: update the document.
V4: add sample in the document.Signed-off-by Haifei Luo <[email protected]>Acked-by Ori Kam <[email protected]>
Carried ack from previous version:
Applied to dpdk-next-net/main, thanks.
(doc warnings fixed while merging)
PATCH v5 1/1 app/testpmd: add CLI for action meter color
In reply to Haifei LuoCurrently action RTE_FLOW_ACTION_TYPE_METER_COLOR is defined. Add the CLI for this aciton: 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.
V3: update the document.
V4: add sample in the document.
V5: fix indentation warning.
--- app/test-pmd/cmdline_flow.c | 85 +++++++++++++++++++++++++++++ doc/guides/rel_notes/release_21_05.rst | 3 + doc/guides/testpmd_app_ug/testpmd_funcs.rst | 24 ++++++++ 3 files changed, 112 insertions(+)
app/test-pmd/cmdline_flow.c +85 -0
@@ -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,
doc/guides/rel_notes/release_21_05.rst +3 -0
@@ -269,6 +269,9 @@ New Features * Added commands to construct conntrack context and relevant indirect action handle creation, update for conntrack action as well as conntrack item matching. + * Added commands for action meter color to color the packet to reflect + the meter color result. + ``color type (green|yellow|red)`` * **Added support for the FIB lookup method in the l3fwd example app.**
doc/guides/testpmd_app_ug/testpmd_funcs.rst +24 -0
@@ -4089,6 +4089,10 @@ This section lists supported actions and their attributes, if any. - ``indirect_action_id {unsigned}``: Indirect action ID to use +- ``color``: Color the packet to reflect the meter color result + + - ``type {value}``: Set color type with specified value(green/yellow/red) + Destroying flow rules ~~~~~~~~~~~~~~~~~~~~~
@@ -5010,6 +5014,26 @@ rules like above for the peer port. testpmd> flow indirect_action 0 update 0 action conntrack_update dir / end +Sample meter with policy rules +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +Meter with policy rules can be created by the following commands: + +Need to create policy first and actions are set for green/yellow/red colors. +Create meter with policy id. Create flow with meter id. + +Example for policy with meter color action.The purpose is to color the packet +to reflect the meter color result.The meter policy action list: +green -> green, yellow -> yellow, red -> red. + +:: + + testpmd> add port meter profile srtcm_rfc2697 0 13 21504 2688 0 0 + testpmd> add port meter policy 0 1 g_actions color type green / end y_actions color type yellow / end + r_actions color type red / end + testpmd> create port meter 0 1 13 1 yes 0xffff 0 0 + testpmd> flow create 0 priority 0 ingress group 1 pattern eth / end actions meter mtr_id 1 / end + BPF Functions --------------
Signature · 1 line
1.8.3.1