Hi Ori, Thanks for the review.
<snip> > Subject: RE: [dpdk-dev] [PATCH v2 01/10] app/testpmd: parse flow > command line for ESP > > Hi just small comment inside. > Thanks, > Ori > > > -----Original Message----- > > From: dev <dev-boun...@dpdk.org> On Behalf Of Bernard Iremonger > > Sent: Tuesday, December 17, 2019 12:16 PM > > To: dev@dpdk.org; beilei.x...@intel.com; qi.z.zh...@intel.com; > > declan.dohe...@intel.com > > Cc: konstantin.anan...@intel.com; bernard.iremon...@intel.com > > Subject: [dpdk-dev] [PATCH v2 01/10] app/testpmd: parse flow command > > line for ESP > > > > add ITEM_ESP > > add ITEM_ESP_SPI > > add debug to cmdline_flow.c > > > > Signed-off-by: Bernard Iremonger <bernard.iremon...@intel.com> > > --- > > app/test-pmd/cmdline_flow.c | 37 > > ++++++++++++++++++++++++++++++++++--- > > 1 file changed, 34 insertions(+), 3 deletions(-) > > > > diff --git a/app/test-pmd/cmdline_flow.c b/app/test-pmd/cmdline_flow.c > > index 99dade7..f1b0610 100644 > > --- a/app/test-pmd/cmdline_flow.c > > +++ b/app/test-pmd/cmdline_flow.c > > @@ -213,6 +213,8 @@ enum index { > > ITEM_TAG, > > ITEM_TAG_DATA, > > ITEM_TAG_INDEX, > > + ITEM_ESP, > > + ITEM_ESP_SPI, > > > > /* Validate/create actions. */ > > ACTIONS, > > @@ -746,6 +748,7 @@ static const enum index next_item[] = { > > ITEM_PPPOE_PROTO_ID, > > ITEM_HIGIG2, > > ITEM_TAG, > > + ITEM_ESP, > > END_SET, > > ZERO, > > }; > > @@ -1017,6 +1020,12 @@ static const enum index item_higig2[] = { > > ZERO, > > }; > > > > +static const enum index item_esp[] = { > > + ITEM_ESP_SPI, > > + ITEM_NEXT, > > + ZERO, > > +}; > > + > > static const enum index next_set_raw[] = { > > SET_RAW_INDEX, > > ITEM_ETH, > > @@ -2593,6 +2602,20 @@ static const struct token token_list[] = { > > NEXT_ENTRY(ITEM_PARAM_IS)), > > .args = ARGS(ARGS_ENTRY(struct rte_flow_item_tag, > index)), > > }, > > + [ITEM_ESP] = { > > + .name = "esp", > > + .help = "match ESP header", > > + .priv = PRIV_ITEM(ESP, sizeof(struct rte_flow_item_esp)), > > + .next = NEXT(item_esp), > > + .call = parse_vc, > > + }, > > + [ITEM_ESP_SPI] = { > > + .name = "spi", > > + .help = "security policy index", > > + .next = NEXT(item_esp, NEXT_ENTRY(UNSIGNED), > > item_param), > > + .args = ARGS(ARGS_ENTRY_HTON(struct rte_flow_item_esp, > > + hdr.spi)), > > + }, > > /* Validate/create actions. */ > > [ACTIONS] = { > > .name = "actions", > > @@ -6052,6 +6075,9 @@ cmd_flow_tok(cmdline_parse_token_hdr_t > **hdr, > > static void cmd_flow_parsed(const struct buffer *in) { > > + printf("Flow command line parsed successfully for > > command=%d.\n", > > + in->command); > > + > > Why adding this printf? It is useful to know that the parsing of the flow command line is successful before going into the PMD code. I will remove in the v3 if you think it is too verbose. > > > switch (in->command) { > > case VALIDATE: > > port_flow_validate(in->port, &in->args.vc.attr, @@ -6230,14 > > +6256,15 @@ flow_item_default_mask(const struct rte_flow_item *item) > > case RTE_FLOW_ITEM_TYPE_GTP: > > mask = &rte_flow_item_gtp_mask; > > break; > > - case RTE_FLOW_ITEM_TYPE_ESP: > > - mask = &rte_flow_item_esp_mask; > > - break; > > case RTE_FLOW_ITEM_TYPE_GTP_PSC: > > mask = &rte_flow_item_gtp_psc_mask; > > break; > > case RTE_FLOW_ITEM_TYPE_PPPOE_PROTO_ID: > > mask = &rte_flow_item_pppoe_proto_id_mask; > > + break; > > + case RTE_FLOW_ITEM_TYPE_ESP: > > + mask = &rte_flow_item_esp_mask; > > + break; > > default: > > break; > > } > > @@ -6327,6 +6354,10 @@ cmd_set_raw_parsed(const struct buffer *in) > > case RTE_FLOW_ITEM_TYPE_GENEVE: > > size = sizeof(struct rte_flow_item_geneve); > > break; > > + case RTE_FLOW_ITEM_TYPE_ESP: > > + size = sizeof(struct rte_flow_item_esp); > > + proto = 0x32; > > + break; > > default: > > printf("Error - Not supported item\n"); > > *total_size = 0; > > -- > > 2.7.4 Regards, Bernard.