Add action RTE_FLOW_ACTION_TYPE_PORT, it can be used to redirect a packet to a network interface that connect to the same switch domain, rte_ethdev's port_id is used as an identification of the destination. A typical use case is: with a smart NIC for vSwitch acceleration, flow is defined to forward packets between the switch port that is managed by Port Representor.
Signed-off-by: Qi Zhang <qi.z.zh...@intel.com> --- doc/guides/prog_guide/rte_flow.rst | 22 ++++++++++++++++++++++ lib/librte_ether/rte_flow.h | 19 ++++++++++++++++++- 2 files changed, 40 insertions(+), 1 deletion(-) diff --git a/doc/guides/prog_guide/rte_flow.rst b/doc/guides/prog_guide/rte_flow.rst index 961943d..aa5c818 100644 --- a/doc/guides/prog_guide/rte_flow.rst +++ b/doc/guides/prog_guide/rte_flow.rst @@ -1486,6 +1486,28 @@ fields in the pattern items. | 1 | END | +-------+----------+ +Action: ``PORT`` +^^^^^^^^^^^^^^^^ + +Redirect packets to an interface that connect to the same switch domain. + +The desitnation should be managed by a rte_ethdev instance, port_id is +the identification of the destination. A typical use case is to define +a flow that redirect packet to a interface that mananged by a Port +Representor. + +- Terminating by default. + +.. _table_rte_flow_action_port: + +.. table:: PORT + + +--------------+-----------------------------------+ + | Field | Value | + +==============+===================================+ + | ``port_id`` | identification of the destination | + +--------------+-----------------------------------+ + Negative types ~~~~~~~~~~~~~~ diff --git a/lib/librte_ether/rte_flow.h b/lib/librte_ether/rte_flow.h index 13e4202..1080086 100644 --- a/lib/librte_ether/rte_flow.h +++ b/lib/librte_ether/rte_flow.h @@ -1010,7 +1010,14 @@ enum rte_flow_action_type { * * See struct rte_flow_action_security. */ - RTE_FLOW_ACTION_TYPE_SECURITY + RTE_FLOW_ACTION_TYPE_SECURITY, + + /** + * Redirect packets to a network interface in the same switch domain. + * + * See struct rte_flow_action_port. + */ + RTE_FLOW_ACTION_TYPE_PORT, }; /** @@ -1148,6 +1155,16 @@ struct rte_flow_action_security { void *security_session; /**< Pointer to security session structure. */ }; +/** RTE_FLOW_ACTION_TYPE_PORT + * + * Redirect packets to a network interface in the same switch domain. + * + * Terminating by default. + */ +struct rte_flow_action_port { + uint16_t port_id; /**< identification of the forward destination. */ +}; + /** * Definition of a single action. * -- 2.7.4