Hi Jiawei, Please note that you are missing the doc changes.
Please update them. Best, Ori > -----Original Message----- > From: Jiawei Wang <jiaw...@mellanox.com> > Sent: Thursday, June 25, 2020 7:26 PM > To: Ori Kam <or...@mellanox.com>; Slava Ovsiienko > <viachesl...@mellanox.com>; Matan Azrad <ma...@mellanox.com> > Cc: dev@dpdk.org; Thomas Monjalon <tho...@monjalon.net>; Raslan > Darawsheh <rasl...@mellanox.com>; ian.sto...@intel.com; f...@redhat.com; > Jiawei(Jonny) Wang <jiaw...@mellanox.com> > Subject: [PATCH 1/8] ethdev: introduce sample action for rte flow > > When using full offload, all traffic will be handled by the HW, and > directed to the requested vf or wire, the control application loses > visibility on the traffic. > So there's a need for an action that will enable the control application > some visibility. > > The solution is introduced a new action that will sample the incoming > traffic and send a duplicated traffic in some predefined ratio to the > application, while the original packet will continue to the target > destination. > > The packets sampled equals is '1/ratio', if the ratio value be set to 1 > , means that the packets would be completely mirrored. The sample packet > can be assigned with different set of actions from the original packet. > > In order to support the sample packet in rte_flow, new rte_flow action > definition RTE_FLOW_ACTION_TYPE_SAMPLE and structure > rte_flow_action_sample > will be introduced. > > Signed-off-by: Jiawei Wang <jiaw...@mellanox.com> > --- > lib/librte_ethdev/rte_flow.c | 1 + > lib/librte_ethdev/rte_flow.h | 29 +++++++++++++++++++++++++++++ > 2 files changed, 30 insertions(+) > > diff --git a/lib/librte_ethdev/rte_flow.c b/lib/librte_ethdev/rte_flow.c > index 1685be5..733871d 100644 > --- a/lib/librte_ethdev/rte_flow.c > +++ b/lib/librte_ethdev/rte_flow.c > @@ -173,6 +173,7 @@ struct rte_flow_desc_data { > MK_FLOW_ACTION(SET_IPV4_DSCP, sizeof(struct > rte_flow_action_set_dscp)), > MK_FLOW_ACTION(SET_IPV6_DSCP, sizeof(struct > rte_flow_action_set_dscp)), > MK_FLOW_ACTION(AGE, sizeof(struct rte_flow_action_age)), > + MK_FLOW_ACTION(SAMPLE, sizeof(struct rte_flow_action_sample)), > }; > > int > diff --git a/lib/librte_ethdev/rte_flow.h b/lib/librte_ethdev/rte_flow.h > index b0e4199..71dd82c 100644 > --- a/lib/librte_ethdev/rte_flow.h > +++ b/lib/librte_ethdev/rte_flow.h > @@ -2099,6 +2099,13 @@ enum rte_flow_action_type { > * see enum RTE_ETH_EVENT_FLOW_AGED > */ > RTE_FLOW_ACTION_TYPE_AGE, > + > + /** > + * Redirects specific ratio of packets to vport or queue. > + * > + * See struct rte_flow_action_sample. > + */ > + RTE_FLOW_ACTION_TYPE_SAMPLE, > }; > > /** > @@ -2709,6 +2716,28 @@ struct rte_flow_action { > struct rte_flow; > > /** > + * @warning > + * @b EXPERIMENTAL: this structure may change without prior notice > + * > + * RTE_FLOW_ACTION_TYPE_SAMPLE > + * > + * Adds a sample action to a matched flow. > + * > + * The matching packets will be duplicated to a special queue or vport > + * in the predefined probabiilty, All the packets continues processing > + * on the default flow path. > + * > + * When the sample ratio is set to 1 then the packets will be 100% mirrored. > + * Additional action list be supported to add for sampled or mirrored > packets. > + */ > +struct rte_flow_action_sample { > + /* packets sampled equals to '1/ratio' */ > + const uint32_t ratio; > + /* sub-action list specific for the sampling hit cases */ > + const struct rte_flow_action *actions; > +}; > + > +/** > * Verbose error types. > * > * Most of them provide the type of the object referenced by struct > -- > 1.8.3.1