On Thu, Jun 25, 2020 at 10:20 PM Jiawei Wang <jiaw...@mellanox.com> wrote: > > 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
Isn't mirroring the packet? How about, RTE_FLOW_ACTION_TYPE_MIRROR I am not able to understand, Why it is called 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(+) > > + * 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 */ Why not use, RTE_FLOW_ACTION_TYPE_PASSTHRU action to append further action for this ACTION. > + 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 >