> -----Original Message----- > From: dev [mailto:dev-bounces at dpdk.org] On Behalf Of Frederico.Cadete- > ext at oneaccess-net.com > Sent: Tuesday, August 23, 2016 5:11 PM > To: dev at dpdk.org > Cc: frederico at cadete.eu; Frederico Cadete > Subject: [dpdk-dev] [PATCH] testpmd: fix fdir command on MAC and tunnel > modes > > From: Frederico Cadete <Frederico.Cadete-ext at oneaccess-net.com> > > The flow_director_filter commands has a pf|vf option for most modes > except for MAC-VLAN and tunnel. On Intel NIC's these modes are not > supported under virtualized environments. > But the application was checking that this field was parsed for these cases, > even though this token is not registered with the cmdline parser. > > This patch skips checking of this field for the commands that don't accept it. > > Signed-off-by: Frederico Cadete <Frederico.Cadete-ext at oneaccess-net.com> > --- > app/test-pmd/cmdline.c | 32 ++++++++++++++++++-------------- > 1 file changed, 18 insertions(+), 14 deletions(-) > > diff --git a/app/test-pmd/cmdline.c b/app/test-pmd/cmdline.c index > f90befc..f516b1b 100644 > --- a/app/test-pmd/cmdline.c > +++ b/app/test-pmd/cmdline.c > @@ -8502,24 +8502,28 @@ cmd_flow_director_filter_parsed(void > *parsed_result, > else > entry.action.behavior = RTE_ETH_FDIR_ACCEPT; > > - if (!strcmp(res->pf_vf, "pf")) > - entry.input.flow_ext.is_vf = 0; > - else if (!strncmp(res->pf_vf, "vf", 2)) { > - struct rte_eth_dev_info dev_info; > + if (fdir_conf.mode != RTE_FDIR_MODE_PERFECT_MAC_VLAN && > + fdir_conf.mode != RTE_FDIR_MODE_PERFECT_TUNNEL){ > > - memset(&dev_info, 0, sizeof(dev_info)); > - rte_eth_dev_info_get(res->port_id, &dev_info); > - errno = 0; > - vf_id = strtoul(res->pf_vf + 2, &end, 10); > - if (errno != 0 || *end != '\0' || vf_id >= dev_info.max_vfs) { > + if (!strcmp(res->pf_vf, "pf")) > + entry.input.flow_ext.is_vf = 0; > + else if (!strncmp(res->pf_vf, "vf", 2)) { > + struct rte_eth_dev_info dev_info; > + > + memset(&dev_info, 0, sizeof(dev_info)); > + rte_eth_dev_info_get(res->port_id, &dev_info); > + errno = 0; > + vf_id = strtoul(res->pf_vf + 2, &end, 10); > + if (errno != 0 || *end != '\0' || vf_id >= > dev_info.max_vfs) { > + printf("invalid parameter %s.\n", res->pf_vf); > + return; > + } > + entry.input.flow_ext.is_vf = 1; > + entry.input.flow_ext.dst_id = (uint16_t)vf_id; > + } else { > printf("invalid parameter %s.\n", res->pf_vf); > return; > } > - entry.input.flow_ext.is_vf = 1; > - entry.input.flow_ext.dst_id = (uint16_t)vf_id; > - } else { > - printf("invalid parameter %s.\n", res->pf_vf); > - return; > }
Thanks for the patch. But with this change the field of pf_vf cannot omit either. I think it still looks confused because it will allow any meaningless string. In MAC_VLAN or TUNNEL mode, why not just use pf. Maybe an optional field supporting on DPDK cmdline library is exactly what we Are waiting for :) Thanks Jingjing