Yes, Nice catch. I will fix it.
Thanks. B.R. Jonny > -----Original Message----- > From: Ajit Khaparde <ajit.khapa...@broadcom.com> > Sent: Tuesday, September 22, 2020 6:28 AM > To: Jiawei(Jonny) Wang <jiaw...@nvidia.com> > Cc: Ori Kam <or...@nvidia.com>; Slava Ovsiienko <viachesl...@nvidia.com>; > Matan Azrad <ma...@nvidia.com>; NBU-Contact-Thomas Monjalon > <tho...@monjalon.net>; Ferruh Yigit <ferruh.yi...@intel.com>; Marko > Kovacevic <marko.kovace...@intel.com>; Andrew Rybchenko > <arybche...@solarflare.com>; dpdk-dev <dev@dpdk.org>; Raslan > Darawsheh <rasl...@nvidia.com>; ian.sto...@intel.com; f...@redhat.com; > Asaf Penso <as...@nvidia.com> > Subject: Re: [dpdk-dev] [PATCH v6 11/12] app/testpmd: add port and encap > support for sample action > > On Tue, Sep 8, 2020 at 11:50 PM Jiawei Wang <jiaw...@nvidia.com> wrote: > > > > Use sample action with ratio is 1 for mirroring flow, add supports to > > set the different port or encap action for mirrored packets. > > > > The example of test-pmd command: > > > > 1. set sample_actions 1 port_id id 1 / end > > flow create 0 ... pattern eth / end actions > > sample ratio 1 index 1 / port_id id 2... > > The flow will result in all the matched ingress packets will be sent > > to port 2, and also mirrored the packets and sent to port 2. > > ^ > > You probably meant "and also mirrored the packets and sent to port 1"? > > > > > 2. set raw_encap 0 eth src.../ ipv4.../... > > set raw_encap 1 eth src.../ ipv4.../... > > set sample_actions 2 raw_encap index 0 / port_id id 0 / end > > flow create 0 ... pattern eth / end actions > > sample ratio 1 index 2 / raw_encap index 1 / port_id id 0... > > The flow will result in all the matched egress packets will be > > encapsulated and sent to wire, and also mirrored the packets and with > > the different encapsulated data and sent to wire. > > > > Signed-off-by: Jiawei Wang <jiaw...@nvidia.com> > > --- > > app/test-pmd/cmdline_flow.c | 16 ++++++++++++++++ > > 1 file changed, 16 insertions(+) > > > > diff --git a/app/test-pmd/cmdline_flow.c b/app/test-pmd/cmdline_flow.c > > index 27fa294..1860657 100644 > > --- a/app/test-pmd/cmdline_flow.c > > +++ b/app/test-pmd/cmdline_flow.c > > @@ -514,6 +514,8 @@ struct raw_sample_conf { struct > > rte_flow_action_mark sample_mark[RAW_SAMPLE_CONFS_MAX_NUM]; > > struct rte_flow_action_queue > sample_queue[RAW_SAMPLE_CONFS_MAX_NUM]; > > struct rte_flow_action_count > sample_count[RAW_SAMPLE_CONFS_MAX_NUM]; > > +struct rte_flow_action_port_id > > +sample_port_id[RAW_SAMPLE_CONFS_MAX_NUM]; > > +struct rte_flow_action_raw_encap > > +sample_encap[RAW_SAMPLE_CONFS_MAX_NUM]; > > > > /** Maximum number of subsequent tokens and arguments on the stack. > > */ #define CTX_STACK_SIZE 16 @@ -1456,6 +1458,8 @@ struct > > parse_action_priv { > > ACTION_QUEUE, > > ACTION_MARK, > > ACTION_COUNT, > > + ACTION_PORT_ID, > > + ACTION_RAW_ENCAP, > > ACTION_NEXT, > > ZERO, > > }; > > @@ -7009,6 +7013,18 @@ static int comp_set_sample_index(struct > context *, const struct token *, > > (const void *)action->conf, size); > > action->conf = &sample_queue[idx]; > > break; > > + case RTE_FLOW_ACTION_TYPE_RAW_ENCAP: > > + size = sizeof(struct rte_flow_action_raw_encap); > > + rte_memcpy(&sample_encap[idx], > > + (const void *)action->conf, size); > > + action->conf = &sample_encap[idx]; > > + break; > > + case RTE_FLOW_ACTION_TYPE_PORT_ID: > > + size = sizeof(struct rte_flow_action_port_id); > > + rte_memcpy(&sample_port_id[idx], > > + (const void *)action->conf, size); > > + action->conf = &sample_port_id[idx]; > > + break; > > default: > > printf("Error - Not supported action\n"); > > return; > > -- > > 1.8.3.1 > >