From patchwork Thu Dec 21 02:35:15 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Qi Zhang X-Patchwork-Id: 32550 X-Patchwork-Delegate: ferruh.yigit@amd.com Return-Path: X-Original-To: patchwork@dpdk.org Delivered-To: patchwork@dpdk.org Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id A48B51B245; Thu, 21 Dec 2017 10:45:00 +0100 (CET) Received: from mga03.intel.com (mga03.intel.com [134.134.136.65]) by dpdk.org (Postfix) with ESMTP id 6659E29AC for ; Thu, 21 Dec 2017 10:44:57 +0100 (CET) X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from fmsmga006.fm.intel.com ([10.253.24.20]) by orsmga103.jf.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 21 Dec 2017 01:44:56 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.45,435,1508828400"; d="scan'208";a="188920486" Received: from dpdk27.sh.intel.com ([10.67.111.90]) by fmsmga006.fm.intel.com with ESMTP; 21 Dec 2017 01:44:55 -0800 From: Qi Zhang To: adrien.mazarguil@6wind.com Cc: dev@dpdk.org, declan.doherty@intel.com, Qi Zhang Date: Wed, 20 Dec 2017 21:35:15 -0500 Message-Id: <1513823719-36066-2-git-send-email-qi.z.zhang@intel.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1513823719-36066-1-git-send-email-qi.z.zhang@intel.com> References: <1513823719-36066-1-git-send-email-qi.z.zhang@intel.com> Subject: [dpdk-dev] [RFC v2 1/5] ether: add flow action to redirect packet in a switch domain X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" Add action RTE_FLOW_ACTION_TYPE_SWITCH_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 --- 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 d158be5..dcea2f6 100644 --- a/doc/guides/prog_guide/rte_flow.rst +++ b/doc/guides/prog_guide/rte_flow.rst @@ -1474,6 +1474,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 47c88ea..91706e2 100644 --- a/lib/librte_ether/rte_flow.h +++ b/lib/librte_ether/rte_flow.h @@ -1008,7 +1008,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, }; /** @@ -1146,6 +1153,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. + * + * Terminateing by default. + */ +struct rte_flow_action_port { + uint16_t port_id; /**< identification of the forward destination. */ +}; + /** * Definition of a single action. *