From patchwork Fri Aug 12 19:18:15 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ivan Malov X-Patchwork-Id: 114932 X-Patchwork-Delegate: thomas@monjalon.net Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id 8CB8AA0543; Fri, 12 Aug 2022 21:18:32 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 458A940A83; Fri, 12 Aug 2022 21:18:31 +0200 (CEST) Received: from shelob.oktetlabs.ru (shelob.oktetlabs.ru [91.220.146.113]) by mails.dpdk.org (Postfix) with ESMTP id 2898F40A7F for ; Fri, 12 Aug 2022 21:18:30 +0200 (CEST) Received: from bree.oktetlabs.ru (bree.oktetlabs.ru [192.168.34.5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by shelob.oktetlabs.ru (Postfix) with ESMTPS id BB983B3; Fri, 12 Aug 2022 22:18:29 +0300 (MSK) DKIM-Filter: OpenDKIM Filter v2.11.0 shelob.oktetlabs.ru BB983B3 Authentication-Results: shelob.oktetlabs.ru/BB983B3; dkim=none; dkim-atps=neutral From: Ivan Malov To: dev@dpdk.org Cc: Ori Kam , Eli Britstein , Ilya Maximets , Thomas Monjalon , Stephen Hemminger , Jerin Jacob , Andrew Rybchenko , Ferruh Yigit , Ray Kinsella Subject: [PATCH 01/13] ethdev: strip experimental tag off Rx metadata negotiate API Date: Fri, 12 Aug 2022 22:18:15 +0300 Message-Id: <20220812191827.3187441-2-ivan.malov@oktetlabs.ru> X-Mailer: git-send-email 2.30.2 In-Reply-To: <20220812191827.3187441-1-ivan.malov@oktetlabs.ru> References: <20220812191827.3187441-1-ivan.malov@oktetlabs.ru> MIME-Version: 1.0 X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org rte_eth_rx_metadata_negotiate() was introduced in DPDK 21.11. Since then, no one has requested any fixes. At the same time, the API is required by series [1] in OvS for the new release. [1] http://patchwork.ozlabs.org/project/openvswitch/list/?series=310415 Signed-off-by: Ivan Malov Reviewed-by: Andrew Rybchenko --- doc/guides/rel_notes/release_22_11.rst | 3 +++ lib/ethdev/rte_ethdev.h | 4 ---- lib/ethdev/version.map | 2 +- 3 files changed, 4 insertions(+), 5 deletions(-) diff --git a/doc/guides/rel_notes/release_22_11.rst b/doc/guides/rel_notes/release_22_11.rst index 8c021cf050..6760ab8b87 100644 --- a/doc/guides/rel_notes/release_22_11.rst +++ b/doc/guides/rel_notes/release_22_11.rst @@ -84,6 +84,9 @@ API Changes Also, make sure to start the actual text at the margin. ======================================================= +* ethdev: promoted ``rte_eth_rx_metadata_negotiate()`` + from experimental to stable. + ABI Changes ----------- diff --git a/lib/ethdev/rte_ethdev.h b/lib/ethdev/rte_ethdev.h index de9e970d4d..e3f28283ce 100644 --- a/lib/ethdev/rte_ethdev.h +++ b/lib/ethdev/rte_ethdev.h @@ -5315,9 +5315,6 @@ int rte_eth_representor_info_get(uint16_t port_id, #define RTE_ETH_RX_METADATA_TUNNEL_ID RTE_BIT64(2) /** - * @warning - * @b EXPERIMENTAL: this API may change without prior notice - * * Negotiate the NIC's ability to deliver specific kinds of metadata to the PMD. * * Invoke this API before the first rte_eth_dev_configure() invocation @@ -5356,7 +5353,6 @@ int rte_eth_representor_info_get(uint16_t port_id, * - (-EIO) if the device is removed; * - (0) on success */ -__rte_experimental int rte_eth_rx_metadata_negotiate(uint16_t port_id, uint64_t *features); /** Flag to offload IP reassembly for IPv4 packets. */ diff --git a/lib/ethdev/version.map b/lib/ethdev/version.map index 03f52fee91..2ecc1af571 100644 --- a/lib/ethdev/version.map +++ b/lib/ethdev/version.map @@ -98,6 +98,7 @@ DPDK_23 { rte_eth_remove_rx_callback; rte_eth_remove_tx_callback; rte_eth_rx_burst_mode_get; + rte_eth_rx_metadata_negotiate; rte_eth_rx_queue_info_get; rte_eth_rx_queue_setup; rte_eth_set_queue_rate_limit; @@ -250,7 +251,6 @@ EXPERIMENTAL { rte_eth_dev_capability_name; rte_eth_dev_conf_get; rte_eth_macaddrs_get; - rte_eth_rx_metadata_negotiate; rte_flow_flex_item_create; rte_flow_flex_item_release; rte_flow_pick_transfer_proxy; From patchwork Fri Aug 12 19:18:16 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ivan Malov X-Patchwork-Id: 114934 X-Patchwork-Delegate: thomas@monjalon.net Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id 93745A0543; Fri, 12 Aug 2022 21:18:43 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id E6D6242C06; Fri, 12 Aug 2022 21:18:32 +0200 (CEST) Received: from shelob.oktetlabs.ru (shelob.oktetlabs.ru [91.220.146.113]) by mails.dpdk.org (Postfix) with ESMTP id 4365140A83 for ; Fri, 12 Aug 2022 21:18:30 +0200 (CEST) Received: from bree.oktetlabs.ru (bree.oktetlabs.ru [192.168.34.5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by shelob.oktetlabs.ru (Postfix) with ESMTPS id E8465B5; Fri, 12 Aug 2022 22:18:29 +0300 (MSK) DKIM-Filter: OpenDKIM Filter v2.11.0 shelob.oktetlabs.ru E8465B5 Authentication-Results: shelob.oktetlabs.ru/E8465B5; dkim=none; dkim-atps=neutral From: Ivan Malov To: dev@dpdk.org Cc: Ori Kam , Eli Britstein , Ilya Maximets , Thomas Monjalon , Stephen Hemminger , Jerin Jacob , Andrew Rybchenko , Ferruh Yigit Subject: [PATCH 02/13] ethdev: strip experimental tag off port ID items and actions Date: Fri, 12 Aug 2022 22:18:16 +0300 Message-Id: <20220812191827.3187441-3-ivan.malov@oktetlabs.ru> X-Mailer: git-send-email 2.30.2 In-Reply-To: <20220812191827.3187441-1-ivan.malov@oktetlabs.ru> References: <20220812191827.3187441-1-ivan.malov@oktetlabs.ru> MIME-Version: 1.0 X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org The following set of primitives has been introduced in 21.11: - RTE_FLOW_ACTION_TYPE_PORT_REPRESENTOR - RTE_FLOW_ACTION_TYPE_REPRESENTED_PORT - RTE_FLOW_ITEM_TYPE_PORT_REPRESENTOR - RTE_FLOW_ITEM_TYPE_REPRESENTED_PORT Since then, no one has requested any fixes. At the same time, the set is required by series [1] in OvS for the new release. [1] http://patchwork.ozlabs.org/project/openvswitch/list/?series=310415 Signed-off-by: Ivan Malov Reviewed-by: Andrew Rybchenko Acked-by: Ori Kam --- doc/guides/rel_notes/release_22_11.rst | 8 ++++++++ lib/ethdev/rte_flow.h | 6 ------ 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/doc/guides/rel_notes/release_22_11.rst b/doc/guides/rel_notes/release_22_11.rst index 6760ab8b87..f039b857e2 100644 --- a/doc/guides/rel_notes/release_22_11.rst +++ b/doc/guides/rel_notes/release_22_11.rst @@ -87,6 +87,14 @@ API Changes * ethdev: promoted ``rte_eth_rx_metadata_negotiate()`` from experimental to stable. +* ethdev: promoted the following flow primitives + from experimental to stable: + + - ``RTE_FLOW_ACTION_TYPE_PORT_REPRESENTOR`` + - ``RTE_FLOW_ACTION_TYPE_REPRESENTED_PORT`` + - ``RTE_FLOW_ITEM_TYPE_PORT_REPRESENTOR`` + - ``RTE_FLOW_ITEM_TYPE_REPRESENTED_PORT`` + ABI Changes ----------- diff --git a/lib/ethdev/rte_flow.h b/lib/ethdev/rte_flow.h index a79f1e7ef0..e5d2d87403 100644 --- a/lib/ethdev/rte_flow.h +++ b/lib/ethdev/rte_flow.h @@ -1918,9 +1918,6 @@ static const struct rte_flow_item_conntrack rte_flow_item_conntrack_mask = { #endif /** - * @warning - * @b EXPERIMENTAL: this structure may change without prior notice - * * Provides an ethdev port ID for use with the following items: * RTE_FLOW_ITEM_TYPE_PORT_REPRESENTOR, * RTE_FLOW_ITEM_TYPE_REPRESENTED_PORT. @@ -3643,9 +3640,6 @@ struct rte_flow_action_meter_color { }; /** - * @warning - * @b EXPERIMENTAL: this structure may change without prior notice - * * Provides an ethdev port ID for use with the following actions: * RTE_FLOW_ACTION_TYPE_PORT_REPRESENTOR, * RTE_FLOW_ACTION_TYPE_REPRESENTED_PORT. From patchwork Fri Aug 12 19:18:17 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ivan Malov X-Patchwork-Id: 114935 X-Patchwork-Delegate: thomas@monjalon.net Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id 3ED5FA0543; Fri, 12 Aug 2022 21:18:49 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id B7AB942C15; Fri, 12 Aug 2022 21:18:33 +0200 (CEST) Received: from shelob.oktetlabs.ru (shelob.oktetlabs.ru [91.220.146.113]) by mails.dpdk.org (Postfix) with ESMTP id 8B75940A7F for ; Fri, 12 Aug 2022 21:18:30 +0200 (CEST) Received: from bree.oktetlabs.ru (bree.oktetlabs.ru [192.168.34.5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by shelob.oktetlabs.ru (Postfix) with ESMTPS id 26BB8B7; Fri, 12 Aug 2022 22:18:30 +0300 (MSK) DKIM-Filter: OpenDKIM Filter v2.11.0 shelob.oktetlabs.ru 26BB8B7 Authentication-Results: shelob.oktetlabs.ru/26BB8B7; dkim=none; dkim-atps=neutral From: Ivan Malov To: dev@dpdk.org Cc: Ori Kam , Eli Britstein , Ilya Maximets , Thomas Monjalon , Stephen Hemminger , Jerin Jacob , Andrew Rybchenko , Ferruh Yigit , Ray Kinsella Subject: [PATCH 03/13] ethdev: remove experimental tag from flow transfer proxy API Date: Fri, 12 Aug 2022 22:18:17 +0300 Message-Id: <20220812191827.3187441-4-ivan.malov@oktetlabs.ru> X-Mailer: git-send-email 2.30.2 In-Reply-To: <20220812191827.3187441-1-ivan.malov@oktetlabs.ru> References: <20220812191827.3187441-1-ivan.malov@oktetlabs.ru> MIME-Version: 1.0 X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org rte_flow_pick_transfer_proxy() was first added to DPDK 21.11. Since then, no one has requested any fixes. At the same time, the API is required by series [1] in OvS for the new release. [1] http://patchwork.ozlabs.org/project/openvswitch/list/?series=310415 Signed-off-by: Ivan Malov Reviewed-by: Andrew Rybchenko Acked-by: Ori Kam --- doc/guides/rel_notes/release_22_11.rst | 3 +++ lib/ethdev/rte_flow.h | 4 ---- lib/ethdev/version.map | 2 +- 3 files changed, 4 insertions(+), 5 deletions(-) diff --git a/doc/guides/rel_notes/release_22_11.rst b/doc/guides/rel_notes/release_22_11.rst index f039b857e2..b74e90d27f 100644 --- a/doc/guides/rel_notes/release_22_11.rst +++ b/doc/guides/rel_notes/release_22_11.rst @@ -95,6 +95,9 @@ API Changes - ``RTE_FLOW_ITEM_TYPE_PORT_REPRESENTOR`` - ``RTE_FLOW_ITEM_TYPE_REPRESENTED_PORT`` +* ethdev: promoted ``rte_flow_pick_transfer_proxy()`` + from experimental to stable. + ABI Changes ----------- diff --git a/lib/ethdev/rte_flow.h b/lib/ethdev/rte_flow.h index e5d2d87403..bc68fd5631 100644 --- a/lib/ethdev/rte_flow.h +++ b/lib/ethdev/rte_flow.h @@ -4792,9 +4792,6 @@ rte_flow_tunnel_item_release(uint16_t port_id, struct rte_flow_error *error); /** - * @warning - * @b EXPERIMENTAL: this API may change without prior notice. - * * Get a proxy port to manage "transfer" flows. * * Managing "transfer" flows requires that the user communicate them @@ -4819,7 +4816,6 @@ rte_flow_tunnel_item_release(uint16_t port_id, * @return * 0 on success, a negative error code otherwise */ -__rte_experimental int rte_flow_pick_transfer_proxy(uint16_t port_id, uint16_t *proxy_port_id, struct rte_flow_error *error); diff --git a/lib/ethdev/version.map b/lib/ethdev/version.map index 2ecc1af571..25e54f9d3e 100644 --- a/lib/ethdev/version.map +++ b/lib/ethdev/version.map @@ -132,6 +132,7 @@ DPDK_23 { rte_flow_error_set; rte_flow_flush; rte_flow_isolate; + rte_flow_pick_transfer_proxy; rte_flow_query; rte_flow_validate; @@ -253,7 +254,6 @@ EXPERIMENTAL { rte_eth_macaddrs_get; rte_flow_flex_item_create; rte_flow_flex_item_release; - rte_flow_pick_transfer_proxy; # added in 22.03 rte_eth_dev_priority_flow_ctrl_queue_configure; From patchwork Fri Aug 12 19:18:18 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ivan Malov X-Patchwork-Id: 114937 X-Patchwork-Delegate: thomas@monjalon.net Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id 5C0A9A0543; Fri, 12 Aug 2022 21:19:00 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 67ADF42C29; Fri, 12 Aug 2022 21:18:35 +0200 (CEST) Received: from shelob.oktetlabs.ru (shelob.oktetlabs.ru [91.220.146.113]) by mails.dpdk.org (Postfix) with ESMTP id B9D9240A83 for ; Fri, 12 Aug 2022 21:18:30 +0200 (CEST) Received: from bree.oktetlabs.ru (bree.oktetlabs.ru [192.168.34.5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by shelob.oktetlabs.ru (Postfix) with ESMTPS id 5AFA7B9; Fri, 12 Aug 2022 22:18:30 +0300 (MSK) DKIM-Filter: OpenDKIM Filter v2.11.0 shelob.oktetlabs.ru 5AFA7B9 Authentication-Results: shelob.oktetlabs.ru/5AFA7B9; dkim=none; dkim-atps=neutral From: Ivan Malov To: dev@dpdk.org Cc: Ori Kam , Eli Britstein , Ilya Maximets , Thomas Monjalon , Stephen Hemminger , Jerin Jacob , Andrew Rybchenko , Hemant Agrawal , Sachin Saxena Subject: [PATCH 04/13] net/dpaa2: support represented port flow action Date: Fri, 12 Aug 2022 22:18:18 +0300 Message-Id: <20220812191827.3187441-5-ivan.malov@oktetlabs.ru> X-Mailer: git-send-email 2.30.2 In-Reply-To: <20220812191827.3187441-1-ivan.malov@oktetlabs.ru> References: <20220812191827.3187441-1-ivan.malov@oktetlabs.ru> MIME-Version: 1.0 X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org There's been support for similar actions PHY_PORT and PORT_ID for some time already, but these actions are being deprecated. Support action REPRESENTED_PORT to prepare for the transition. Signed-off-by: Ivan Malov Reviewed-by: Andrew Rybchenko --- doc/guides/nics/features/dpaa2.ini | 1 + doc/guides/rel_notes/release_22_11.rst | 4 ++++ drivers/net/dpaa2/dpaa2_flow.c | 12 +++++++++++- 3 files changed, 16 insertions(+), 1 deletion(-) diff --git a/doc/guides/nics/features/dpaa2.ini b/doc/guides/nics/features/dpaa2.ini index 4c06841a87..53148ad467 100644 --- a/doc/guides/nics/features/dpaa2.ini +++ b/doc/guides/nics/features/dpaa2.ini @@ -48,4 +48,5 @@ drop = Y phy_port = Y port_id = Y queue = Y +represented_port = Y rss = Y diff --git a/doc/guides/rel_notes/release_22_11.rst b/doc/guides/rel_notes/release_22_11.rst index b74e90d27f..6ab0cae78b 100644 --- a/doc/guides/rel_notes/release_22_11.rst +++ b/doc/guides/rel_notes/release_22_11.rst @@ -55,6 +55,10 @@ New Features Also, make sure to start the actual text at the margin. ======================================================= +* **Updated dpaa2 PMD.** + + * Added support for flow action REPRESENTED_PORT. + Removed Items ------------- diff --git a/drivers/net/dpaa2/dpaa2_flow.c b/drivers/net/dpaa2/dpaa2_flow.c index bf55eb70a3..25616b0035 100644 --- a/drivers/net/dpaa2/dpaa2_flow.c +++ b/drivers/net/dpaa2/dpaa2_flow.c @@ -85,6 +85,7 @@ enum rte_flow_action_type dpaa2_supported_action_type[] = { RTE_FLOW_ACTION_TYPE_QUEUE, RTE_FLOW_ACTION_TYPE_PHY_PORT, RTE_FLOW_ACTION_TYPE_PORT_ID, + RTE_FLOW_ACTION_TYPE_REPRESENTED_PORT, RTE_FLOW_ACTION_TYPE_RSS }; @@ -92,7 +93,8 @@ static const enum rte_flow_action_type dpaa2_supported_fs_action_type[] = { RTE_FLOW_ACTION_TYPE_QUEUE, RTE_FLOW_ACTION_TYPE_PHY_PORT, - RTE_FLOW_ACTION_TYPE_PORT_ID + RTE_FLOW_ACTION_TYPE_PORT_ID, + RTE_FLOW_ACTION_TYPE_REPRESENTED_PORT, }; /* Max of enum rte_flow_item_type + 1, for both IPv4 and IPv6*/ @@ -3294,6 +3296,11 @@ dpaa2_flow_redirect_dev(struct dpaa2_dev_priv *priv, action->conf; if (!port_id->original) idx = port_id->id; + } else if (action->type == RTE_FLOW_ACTION_TYPE_REPRESENTED_PORT) { + const struct rte_flow_action_ethdev *ethdev; + + ethdev = (const struct rte_flow_action_ethdev *)action->conf; + idx = ethdev->port_id; } else { return NULL; } @@ -3337,6 +3344,7 @@ dpaa2_flow_verify_action( return -1; } break; + case RTE_FLOW_ACTION_TYPE_REPRESENTED_PORT: case RTE_FLOW_ACTION_TYPE_PHY_PORT: case RTE_FLOW_ACTION_TYPE_PORT_ID: if (!dpaa2_flow_redirect_dev(priv, &actions[j])) { @@ -3514,6 +3522,7 @@ dpaa2_generic_flow_set(struct rte_flow *flow, while (!end_of_list) { switch (actions[j].type) { case RTE_FLOW_ACTION_TYPE_QUEUE: + case RTE_FLOW_ACTION_TYPE_REPRESENTED_PORT: case RTE_FLOW_ACTION_TYPE_PHY_PORT: case RTE_FLOW_ACTION_TYPE_PORT_ID: memset(&action, 0, sizeof(struct dpni_fs_action_cfg)); @@ -4088,6 +4097,7 @@ int dpaa2_flow_destroy(struct rte_eth_dev *dev, switch (flow->action) { case RTE_FLOW_ACTION_TYPE_QUEUE: + case RTE_FLOW_ACTION_TYPE_REPRESENTED_PORT: case RTE_FLOW_ACTION_TYPE_PHY_PORT: case RTE_FLOW_ACTION_TYPE_PORT_ID: if (priv->num_rx_tc > 1) { From patchwork Fri Aug 12 19:18:19 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ivan Malov X-Patchwork-Id: 114936 X-Patchwork-Delegate: thomas@monjalon.net Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id 8C0B8A0543; Fri, 12 Aug 2022 21:18:54 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 8BDA042C21; Fri, 12 Aug 2022 21:18:34 +0200 (CEST) Received: from shelob.oktetlabs.ru (shelob.oktetlabs.ru [91.220.146.113]) by mails.dpdk.org (Postfix) with ESMTP id B0F9A40A82 for ; Fri, 12 Aug 2022 21:18:30 +0200 (CEST) Received: from bree.oktetlabs.ru (bree.oktetlabs.ru [192.168.34.5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by shelob.oktetlabs.ru (Postfix) with ESMTPS id 85E96BC; Fri, 12 Aug 2022 22:18:30 +0300 (MSK) DKIM-Filter: OpenDKIM Filter v2.11.0 shelob.oktetlabs.ru 85E96BC Authentication-Results: shelob.oktetlabs.ru/85E96BC; dkim=none; dkim-atps=neutral From: Ivan Malov To: dev@dpdk.org Cc: Ori Kam , Eli Britstein , Ilya Maximets , Thomas Monjalon , Stephen Hemminger , Jerin Jacob , Andrew Rybchenko , Nithin Dabilpuram , Kiran Kumar K , Sunil Kumar Kori , Satha Rao Subject: [PATCH 05/13] net/cnxk: support represented port flow action Date: Fri, 12 Aug 2022 22:18:19 +0300 Message-Id: <20220812191827.3187441-6-ivan.malov@oktetlabs.ru> X-Mailer: git-send-email 2.30.2 In-Reply-To: <20220812191827.3187441-1-ivan.malov@oktetlabs.ru> References: <20220812191827.3187441-1-ivan.malov@oktetlabs.ru> MIME-Version: 1.0 X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org There has been support for similar action PORT_ID for some time already, but this action will be deprecated. Support action REPRESENTED_PORT before the transition. Signed-off-by: Ivan Malov Reviewed-by: Andrew Rybchenko --- doc/guides/nics/cnxk.rst | 5 +++++ doc/guides/nics/features/cnxk.ini | 1 + doc/guides/rel_notes/release_22_11.rst | 4 ++++ drivers/net/cnxk/cnxk_flow.c | 9 +++++++-- 4 files changed, 17 insertions(+), 2 deletions(-) diff --git a/doc/guides/nics/cnxk.rst b/doc/guides/nics/cnxk.rst index e24eaa8bc4..cbf5f2de54 100644 --- a/doc/guides/nics/cnxk.rst +++ b/doc/guides/nics/cnxk.rst @@ -386,6 +386,11 @@ RTE flow GRE support - ``RTE_FLOW_ITEM_TYPE_GRE_KEY`` works only when checksum and routing bits in the GRE header are equal to 0. +RTE flow action represented_port support +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +- ``RTE_FLOW_ACTION_TYPE_REPRESENTED_PORT`` only works between a PF and its VFs. + RTE flow action port_id support ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ diff --git a/doc/guides/nics/features/cnxk.ini b/doc/guides/nics/features/cnxk.ini index 1876fe86c7..5f14b3be08 100644 --- a/doc/guides/nics/features/cnxk.ini +++ b/doc/guides/nics/features/cnxk.ini @@ -90,6 +90,7 @@ of_set_vlan_vid = Y pf = Y port_id = Y queue = Y +represented_port = Y rss = Y security = Y vf = Y diff --git a/doc/guides/rel_notes/release_22_11.rst b/doc/guides/rel_notes/release_22_11.rst index 6ab0cae78b..c4ce32daed 100644 --- a/doc/guides/rel_notes/release_22_11.rst +++ b/doc/guides/rel_notes/release_22_11.rst @@ -59,6 +59,10 @@ New Features * Added support for flow action REPRESENTED_PORT. +* **Updated cnxk PMD.** + + * Added support for flow action REPRESENTED_PORT. + Removed Items ------------- diff --git a/drivers/net/cnxk/cnxk_flow.c b/drivers/net/cnxk/cnxk_flow.c index 06301b9ecb..6d155d924c 100644 --- a/drivers/net/cnxk/cnxk_flow.c +++ b/drivers/net/cnxk/cnxk_flow.c @@ -115,6 +115,7 @@ cnxk_map_actions(struct rte_eth_dev *eth_dev, const struct rte_flow_attr *attr, struct roc_npc_action in_actions[], uint32_t *flowkey_cfg) { struct cnxk_eth_dev *dev = cnxk_eth_pmd_priv(eth_dev); + const struct rte_flow_action_ethdev *act_ethdev; const struct rte_flow_action_port_id *port_act; const struct rte_flow_action_queue *act_q; struct roc_npc *roc_npc_src = &dev->npc; @@ -157,13 +158,17 @@ cnxk_map_actions(struct rte_eth_dev *eth_dev, const struct rte_flow_attr *attr, in_actions[i].conf = actions->conf; break; + case RTE_FLOW_ACTION_TYPE_REPRESENTED_PORT: case RTE_FLOW_ACTION_TYPE_PORT_ID: in_actions[i].type = ROC_NPC_ACTION_TYPE_PORT_ID; in_actions[i].conf = actions->conf; + act_ethdev = (const struct rte_flow_action_ethdev *) + actions->conf; port_act = (const struct rte_flow_action_port_id *) actions->conf; - if (rte_eth_dev_get_name_by_port(port_act->id, - if_name)) { + if (rte_eth_dev_get_name_by_port( + actions->type != RTE_FLOW_ACTION_TYPE_PORT_ID ? + act_ethdev->port_id : port_act->id, if_name)) { plt_err("Name not found for output port id"); goto err_exit; } From patchwork Fri Aug 12 19:18:20 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ivan Malov X-Patchwork-Id: 114938 X-Patchwork-Delegate: thomas@monjalon.net Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id D3BC6A0543; Fri, 12 Aug 2022 21:19:05 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 3937A42C30; Fri, 12 Aug 2022 21:18:36 +0200 (CEST) Received: from shelob.oktetlabs.ru (shelob.oktetlabs.ru [91.220.146.113]) by mails.dpdk.org (Postfix) with ESMTP id D4ED040A7F for ; Fri, 12 Aug 2022 21:18:30 +0200 (CEST) Received: from bree.oktetlabs.ru (bree.oktetlabs.ru [192.168.34.5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by shelob.oktetlabs.ru (Postfix) with ESMTPS id ACB45BD; Fri, 12 Aug 2022 22:18:30 +0300 (MSK) DKIM-Filter: OpenDKIM Filter v2.11.0 shelob.oktetlabs.ru ACB45BD Authentication-Results: shelob.oktetlabs.ru/ACB45BD; dkim=none; dkim-atps=neutral From: Ivan Malov To: dev@dpdk.org Cc: Ori Kam , Eli Britstein , Ilya Maximets , Thomas Monjalon , Stephen Hemminger , Jerin Jacob , Andrew Rybchenko , Aman Singh , Yuying Zhang Subject: [PATCH 06/13] app/testpmd: add port steering targets to sample flow action Date: Fri, 12 Aug 2022 22:18:20 +0300 Message-Id: <20220812191827.3187441-7-ivan.malov@oktetlabs.ru> X-Mailer: git-send-email 2.30.2 In-Reply-To: <20220812191827.3187441-1-ivan.malov@oktetlabs.ru> References: <20220812191827.3187441-1-ivan.malov@oktetlabs.ru> MIME-Version: 1.0 X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Allow the use of actions PORT_REPRESENTOR / REPRESENTED_PORT as targets in "set sample_actions" command. Signed-off-by: Ivan Malov Reviewed-by: Andrew Rybchenko --- app/test-pmd/cmdline_flow.c | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/app/test-pmd/cmdline_flow.c b/app/test-pmd/cmdline_flow.c index 7f50028eb7..23889f7ab1 100644 --- a/app/test-pmd/cmdline_flow.c +++ b/app/test-pmd/cmdline_flow.c @@ -781,6 +781,8 @@ struct action_vxlan_encap_data sample_vxlan_encap[RAW_SAMPLE_CONFS_MAX_NUM]; struct action_nvgre_encap_data sample_nvgre_encap[RAW_SAMPLE_CONFS_MAX_NUM]; struct action_rss_data sample_rss_data[RAW_SAMPLE_CONFS_MAX_NUM]; struct rte_flow_action_vf sample_vf[RAW_SAMPLE_CONFS_MAX_NUM]; +struct rte_flow_action_ethdev sample_port_representor[RAW_SAMPLE_CONFS_MAX_NUM]; +struct rte_flow_action_ethdev sample_represented_port[RAW_SAMPLE_CONFS_MAX_NUM]; static const char *const modify_field_ops[] = { "set", "add", "sub", NULL @@ -10872,6 +10874,18 @@ cmd_set_raw_parsed_sample(const struct buffer *in) parse_setup_nvgre_encap_data(&sample_nvgre_encap[idx]); action->conf = &sample_nvgre_encap[idx]; break; + case RTE_FLOW_ACTION_TYPE_PORT_REPRESENTOR: + size = sizeof(struct rte_flow_action_ethdev); + rte_memcpy(&sample_port_representor[idx], + (const void *)action->conf, size); + action->conf = &sample_port_representor[idx]; + break; + case RTE_FLOW_ACTION_TYPE_REPRESENTED_PORT: + size = sizeof(struct rte_flow_action_ethdev); + rte_memcpy(&sample_represented_port[idx], + (const void *)action->conf, size); + action->conf = &sample_represented_port[idx]; + break; default: fprintf(stderr, "Error - Not supported action\n"); return; From patchwork Fri Aug 12 19:18:21 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ivan Malov X-Patchwork-Id: 114939 X-Patchwork-Delegate: thomas@monjalon.net Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id 8E14BA0543; Fri, 12 Aug 2022 21:19:13 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 5406642C04; Fri, 12 Aug 2022 21:18:37 +0200 (CEST) Received: from shelob.oktetlabs.ru (shelob.oktetlabs.ru [91.220.146.113]) by mails.dpdk.org (Postfix) with ESMTP id 27FD540A7F for ; Fri, 12 Aug 2022 21:18:31 +0200 (CEST) Received: from bree.oktetlabs.ru (bree.oktetlabs.ru [192.168.34.5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by shelob.oktetlabs.ru (Postfix) with ESMTPS id D48CEC1; Fri, 12 Aug 2022 22:18:30 +0300 (MSK) DKIM-Filter: OpenDKIM Filter v2.11.0 shelob.oktetlabs.ru D48CEC1 Authentication-Results: shelob.oktetlabs.ru/D48CEC1; dkim=none; dkim-atps=neutral From: Ivan Malov To: dev@dpdk.org Cc: Ori Kam , Eli Britstein , Ilya Maximets , Thomas Monjalon , Stephen Hemminger , Jerin Jacob , Andrew Rybchenko , Aman Singh , Yuying Zhang Subject: [PATCH 07/13] doc: revisit outdated flow rule examples in testpmd tutorial Date: Fri, 12 Aug 2022 22:18:21 +0300 Message-Id: <20220812191827.3187441-8-ivan.malov@oktetlabs.ru> X-Mailer: git-send-email 2.30.2 In-Reply-To: <20220812191827.3187441-1-ivan.malov@oktetlabs.ru> References: <20220812191827.3187441-1-ivan.malov@oktetlabs.ru> MIME-Version: 1.0 X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org There are testpmd examples which demonstrate flow alteration and steering between endpoints using outdated action PORT_ID. Revisit these examples to make use of new port-based actions. Signed-off-by: Ivan Malov Reviewed-by: Andrew Rybchenko --- doc/guides/testpmd_app_ug/testpmd_funcs.rst | 48 +++++---------------- 1 file changed, 11 insertions(+), 37 deletions(-) diff --git a/doc/guides/testpmd_app_ug/testpmd_funcs.rst b/doc/guides/testpmd_app_ug/testpmd_funcs.rst index 330e34427d..c105200fe7 100644 --- a/doc/guides/testpmd_app_ug/testpmd_funcs.rst +++ b/doc/guides/testpmd_app_ug/testpmd_funcs.rst @@ -5098,49 +5098,23 @@ and 50% packets are duplicated and marked with 0x1234 and sent to queue 0. testpmd> flow create 0 ingress group 1 pattern eth / end actions sample ratio 2 index 0 / queue index 1 / end -Mirroring rule with port representors (with "transfer" attribute), the matched -ingress packets with encapsulation header are sent to port id 0, and also -mirrored the packets and sent to port id 2. +Match packets coming from a VM which is referred to by means of +its representor ethdev (port 1), mirror 50% of them to the +said representor (for bookkeeping) as well as encapsulate +all the packets and steer them to the physical port: :: - testpmd> set sample_actions 0 port_id id 2 / end - testpmd> flow create 1 ingress transfer pattern eth / end actions - sample ratio 1 index 0 / raw_encap / port_id id 0 / end + testpmd> set sample_actions 0 port_representor ethdev_port_id 1 / end -Mirroring rule with port representors (with "transfer" attribute), the matched -ingress packets are sent to port id 2, and also mirrored the packets with -encapsulation header and sent to port id 0. + testpmd> set vxlan ip-version ipv4 vni 4 udp-src 32 udp-dst 4789 ip-src 127.0.0.1 + ip-dst 127.0.0.2 eth-src 11:11:11:11:11:11 eth-dst 22:22:22:22:22:22 -:: - - testpmd> set sample_actions 0 raw_encap / port_id id 0 / end - testpmd> flow create 0 ingress transfer pattern eth / end actions - sample ratio 1 index 0 / port_id id 2 / end + testpmd> flow create 0 transfer pattern represented_port ethdev_port_id is 1 / end + actions sample ratio 2 index 0 / vxlan_encap / + represented_port ethdev_port_id 0 / end -Mirroring rule with port representors (with "transfer" attribute), the matched -ingress packets are sent to port id 2, and also mirrored the packets with -VXLAN encapsulation header and sent to port id 0. - -:: - - testpmd> set vxlan ip-version ipv4 vni 4 udp-src 4 udp-dst 4 ip-src 127.0.0.1 - ip-dst 128.0.0.1 eth-src 11:11:11:11:11:11 eth-dst 22:22:22:22:22:22 - testpmd> set sample_actions 0 vxlan_encap / port_id id 0 / end - testpmd> flow create 0 ingress transfer pattern eth / end actions - sample ratio 1 index 0 / port_id id 2 / end - -Mirroring rule with port representors (with "transfer" attribute), the matched -ingress packets are sent to port id 2, and also mirrored the packets with -NVGRE encapsulation header and sent to port id 0. - -:: - - testpmd> set nvgre ip-version ipv4 tni 4 ip-src 127.0.0.1 ip-dst 128.0.0.1 - eth-src 11:11:11:11:11:11 eth-dst 22:22:22:22:22:22 - testpmd> set sample_actions 0 nvgre_encap / port_id id 0 / end - testpmd> flow create 0 ingress transfer pattern eth / end actions - sample ratio 1 index 0 / port_id id 2 / end +The rule is inserted via port 0 (assumed to have "transfer" privilege). Sample integrity rules ~~~~~~~~~~~~~~~~~~~~~~ From patchwork Fri Aug 12 19:18:22 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ivan Malov X-Patchwork-Id: 114940 X-Patchwork-Delegate: thomas@monjalon.net Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id 868D2A0543; Fri, 12 Aug 2022 21:19:19 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 17F9842C47; Fri, 12 Aug 2022 21:18:38 +0200 (CEST) Received: from shelob.oktetlabs.ru (shelob.oktetlabs.ru [91.220.146.113]) by mails.dpdk.org (Postfix) with ESMTP id 4F15A40C35 for ; Fri, 12 Aug 2022 21:18:31 +0200 (CEST) Received: from bree.oktetlabs.ru (bree.oktetlabs.ru [192.168.34.5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by shelob.oktetlabs.ru (Postfix) with ESMTPS id 110AAC3; Fri, 12 Aug 2022 22:18:31 +0300 (MSK) DKIM-Filter: OpenDKIM Filter v2.11.0 shelob.oktetlabs.ru 110AAC3 Authentication-Results: shelob.oktetlabs.ru/110AAC3; dkim=none; dkim-atps=neutral From: Ivan Malov To: dev@dpdk.org Cc: Ori Kam , Eli Britstein , Ilya Maximets , Thomas Monjalon , Stephen Hemminger , Jerin Jacob , Andrew Rybchenko , Ferruh Yigit Subject: [PATCH 08/13] doc: add new port items and actions to switch representation Date: Fri, 12 Aug 2022 22:18:22 +0300 Message-Id: <20220812191827.3187441-9-ivan.malov@oktetlabs.ru> X-Mailer: git-send-email 2.30.2 In-Reply-To: <20220812191827.3187441-1-ivan.malov@oktetlabs.ru> References: <20220812191827.3187441-1-ivan.malov@oktetlabs.ru> MIME-Version: 1.0 X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Items PORT_REPRESENTOR and REPRESENTED_PORT as well as their action counterparts have been a part of the flow library for a year already. However, these haven't been described in the switch representation guide. Provide the missing description. Also, update relevant testpmd flow rule examples accordingly. Signed-off-by: Ivan Malov Reviewed-by: Andrew Rybchenko --- .../prog_guide/switch_representation.rst | 126 +++++++++++++----- 1 file changed, 89 insertions(+), 37 deletions(-) diff --git a/doc/guides/prog_guide/switch_representation.rst b/doc/guides/prog_guide/switch_representation.rst index 4f2532a91e..9369e6e04c 100644 --- a/doc/guides/prog_guide/switch_representation.rst +++ b/doc/guides/prog_guide/switch_representation.rst @@ -538,8 +538,8 @@ exist between them and their represented resources. These may be immutable. In this case, traffic is received by default through the representor and neither the "transfer" attribute nor traffic origin in flow rule patterns are necessary. They simply have to be created on the representor port -directly and may target a different representor as described in `PORT_ID -action`_. +directly and may target a different representor as described +in `PORT_REPRESENTOR Action`_. Implicit traffic flow with port representor @@ -575,6 +575,36 @@ Implicit traffic flow with port representor Pattern Items And Actions ~~~~~~~~~~~~~~~~~~~~~~~~~ +PORT_REPRESENTOR Pattern Item +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Matches traffic entering the embedded switch from the given ethdev. + +- Matches **A**, **B** or **C** in `traffic steering`_. + +PORT_REPRESENTOR Action +^^^^^^^^^^^^^^^^^^^^^^^ + +At embedded switch level, sends matching traffic to the given ethdev. + +- Targets **A**, **B** or **C** in `traffic steering`_. + +REPRESENTED_PORT Pattern Item +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Matches traffic entering the embedded switch from +the entity represented by the given ethdev. + +- Matches **D**, **E** or **F** in `traffic steering`_. + +REPRESENTED_PORT Action +^^^^^^^^^^^^^^^^^^^^^^^ + +At embedded switch level, send matching traffic to +the entity represented by the given ethdev. + +- Targets **D**, **E** or **F** in `traffic steering`_. + PORT Pattern Item ^^^^^^^^^^^^^^^^^ @@ -672,7 +702,7 @@ with (e.g. ``VXLAN_ENCAP``) and using specific parameters (e.g. VNI for VXLAN). While they modify traffic and can be used multiple times (order matters), -unlike `PORT_ID action`_ and friends, they have no impact on steering. +unlike `PORT_REPRESENTOR Action`_ and friends, they don't impact on steering. As described in `actions order and repetition`_ this means they are useless if used alone in an action list, the resulting traffic gets dropped unless @@ -771,22 +801,15 @@ their representors :: - flow create 3 ingress pattern / end actions port_id id 4 / end - flow create 4 ingress pattern / end actions port_id id 3 / end - -More practical example with MAC address restrictions - -:: - - flow create 3 ingress - pattern eth dst is {VF 1 MAC} / end - actions port_id id 4 / end + flow create 3 transfer + pattern represented_port ethdev_port_id is 3 / end + actions represented_port ethdev_port_id 4 / end :: - flow create 4 ingress - pattern eth src is {VF 1 MAC} / end - actions port_id id 3 / end + flow create 3 transfer + pattern represented_port ethdev_port_id is 4 / end + actions represented_port ethdev_port_id 3 / end Sharing Broadcasts @@ -796,32 +819,58 @@ From outside to PF and VFs :: - flow create 3 ingress - pattern eth dst is ff:ff:ff:ff:ff:ff / end - actions port_id id 3 / port_id id 4 / port_id id 5 / end - -Note ``port_id id 3`` is necessary otherwise only VFs would receive matching + flow create 3 transfer + pattern + represented_port ethdev_port_id is 3 / + eth dst is ff:ff:ff:ff:ff:ff / + end + actions + port_representor ethdev_port_id 3 / + represented_port ethdev_port_id 4 / + represented_port ethdev_port_id 5 / + end + +Note ``port_representor ethdev_port_id 3`` is necessary otherwise only VFs would receive matching traffic. From PF to outside and VFs :: - flow create 3 egress - pattern eth dst is ff:ff:ff:ff:ff:ff / end - actions port / port_id id 4 / port_id id 5 / end + flow create 3 transfer + pattern + port_representor ethdev_port_id is 3 / + eth dst is ff:ff:ff:ff:ff:ff / + end + actions + represented_port ethdev_port_id 3 / + represented_port ethdev_port_id 4 / + represented_port ethdev_port_id 5 / + end From VFs to outside and PF :: - flow create 4 ingress - pattern eth dst is ff:ff:ff:ff:ff:ff src is {VF 1 MAC} / end - actions port_id id 3 / port_id id 5 / end - - flow create 5 ingress - pattern eth dst is ff:ff:ff:ff:ff:ff src is {VF 2 MAC} / end - actions port_id id 4 / port_id id 4 / end + flow create 3 transfer + pattern + represented_port ethdev_port_id is 4 / + eth dst is ff:ff:ff:ff:ff:ff / + end + actions + represented_port ethdev_port_id 3 / + port_representor ethdev_port_id 3 / + end + + flow create 3 transfer + pattern + represented_port ethdev_port_id is 5 / + eth dst is ff:ff:ff:ff:ff:ff / + end + actions + represented_port ethdev_port_id 3 / + port_representor ethdev_port_id 3 / + end Similar ``33:33:*`` rules based on known MAC addresses should be added for IPv6 traffic. @@ -852,10 +901,13 @@ endpoint might not be supported and action list must provide one :: - flow create 5 ingress - pattern eth src is {VF 2 MAC} / end - actions vxlan_encap vni 42 / port_id id 3 / end + flow create 3 transfer + pattern represented_port ethdev_port_id is 5 / end + actions vxlan_encap vni 42 / represented_port ethdev_port_id 3 / end - flow create 3 ingress - pattern vxlan vni is 42 / end - actions vxlan_decap / port_id id 5 / end + flow create 3 transfer + pattern + represented_port ethdev_port_id is 3 / + vxlan vni is 42 / + end + actions vxlan_decap / represented_port ethdev_port_id 5 / end From patchwork Fri Aug 12 19:18:23 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ivan Malov X-Patchwork-Id: 114941 X-Patchwork-Delegate: thomas@monjalon.net Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id 54BFAA0543; Fri, 12 Aug 2022 21:19:25 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id CE23642C4D; Fri, 12 Aug 2022 21:18:38 +0200 (CEST) Received: from shelob.oktetlabs.ru (shelob.oktetlabs.ru [91.220.146.113]) by mails.dpdk.org (Postfix) with ESMTP id 6606540A7F for ; Fri, 12 Aug 2022 21:18:31 +0200 (CEST) Received: from bree.oktetlabs.ru (bree.oktetlabs.ru [192.168.34.5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by shelob.oktetlabs.ru (Postfix) with ESMTPS id 38B90C5; Fri, 12 Aug 2022 22:18:31 +0300 (MSK) DKIM-Filter: OpenDKIM Filter v2.11.0 shelob.oktetlabs.ru 38B90C5 Authentication-Results: shelob.oktetlabs.ru/38B90C5; dkim=none; dkim-atps=neutral From: Ivan Malov To: dev@dpdk.org Cc: Ori Kam , Eli Britstein , Ilya Maximets , Thomas Monjalon , Stephen Hemminger , Jerin Jacob , Andrew Rybchenko , Ferruh Yigit Subject: [PATCH 09/13] doc: rework VF-related explanations in switch representation Date: Fri, 12 Aug 2022 22:18:23 +0300 Message-Id: <20220812191827.3187441-10-ivan.malov@oktetlabs.ru> X-Mailer: git-send-email 2.30.2 In-Reply-To: <20220812191827.3187441-1-ivan.malov@oktetlabs.ru> References: <20220812191827.3187441-1-ivan.malov@oktetlabs.ru> MIME-Version: 1.0 X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org The paragraph describing flow operation without representors shows the use of traffic direction attributes in combination with attribute "transfer". Such scenario has been deprecated. Also, the paragraph mentions the use of deprecated action VF. Drop irrelevant parts, adjust remaining text and the diagram. Signed-off-by: Ivan Malov Reviewed-by: Andrew Rybchenko --- .../prog_guide/switch_representation.rst | 83 +++++++------------ 1 file changed, 29 insertions(+), 54 deletions(-) diff --git a/doc/guides/prog_guide/switch_representation.rst b/doc/guides/prog_guide/switch_representation.rst index 9369e6e04c..3da30fc779 100644 --- a/doc/guides/prog_guide/switch_representation.rst +++ b/doc/guides/prog_guide/switch_representation.rst @@ -468,64 +468,39 @@ Without Port Representors `Traffic direction`_ describes how an application could match traffic coming from or going to a specific place reachable from a DPDK port ID. This makes sense when the traffic in question is normally seen (i.e. sent or received) -by the application creating the flow rule (e.g. as in "redirect all traffic -coming from VF 1 to local queue 6"). - -However this does not force such traffic to take a specific route. Creating -a flow rule on **A** matching traffic coming from **D** is only meaningful -if it can be received by **A** in the first place, otherwise doing so simply -has no effect. - -A new flow rule attribute named "transfer" is necessary for that. Combining -it with "ingress" or "egress" and a specific origin requests a flow rule to -be applied at the lowest level - -:: - - ingress only : ingress + transfer - : - .-------------. .-------------. : .-------------. .-------------. - | hypervisor | | VM 1 | : | hypervisor | | VM 1 | - | application | | application | : | application | | application | - `------+------' `--+----------' : `------+------' `--+----------' - | | | traffic : | | | traffic - .----(A)----. | v : .----(A)----. | v - | port_id 3 | | : | port_id 3 | | - `-----+-----' | : `-----+-----' | - | | : | ^ | - | | : | | traffic | - .-+--. .---+--. : .-+--. .---+--. - | PF | | VF 1 | : | PF | | VF 1 | - `-+--' `--(D)-' : `-+--' `--(D)-' - | | | traffic : | ^ | | traffic - | | v : | | traffic | v - .--+-----------+--. : .--+-----------+--. - | interconnection | : | interconnection | - `--------+--------' : `--------+--------' - | | traffic : | - | v : | - .---(F)----. : .---(F)----. - | physical | : | physical | - | port 0 | : | port 0 | - `----------' : `----------' - -With "ingress" only, traffic is matched on **A** thus still goes to physical -port **F** by default - - -:: - - testpmd> flow create 3 ingress pattern vf id is 1 / end - actions queue index 6 / end - -With "ingress + transfer", traffic is matched on **D** and is therefore -successfully assigned to queue 6 on **A** +by the application creating the flow rule. +However, if there is an entity (VF **D**, for instance) not associated with +a DPDK port (representor), the application (**A**) won't be able to match +traffic generated by such entity. The traffic goes directly to its +default destination (to physical port **F**, for instance). :: - testpmd> flow create 3 ingress transfer pattern vf id is 1 / end - actions queue index 6 / end + .-------------. .-------------. + | hypervisor | | VM 1 | + | application | | application | + `------+------' `--+----------' + | | | traffic + .----(A)----. | v + | port_id 3 | | + `-----+-----' | + | | + | | + .-+--. .---+--. + | PF | | VF 1 | + `-+--' `--(D)-' + | | | traffic + | | v + .--+-----------+--. + | interconnection | + `--------+--------' + | | traffic + | v + .---(F)----. + | physical | + | port 0 | + `----------' With Port Representors From patchwork Fri Aug 12 19:18:24 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ivan Malov X-Patchwork-Id: 114942 X-Patchwork-Delegate: thomas@monjalon.net Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id EA67FA0543; Fri, 12 Aug 2022 21:19:30 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 9E1AE42C3E; Fri, 12 Aug 2022 21:18:39 +0200 (CEST) Received: from shelob.oktetlabs.ru (shelob.oktetlabs.ru [91.220.146.113]) by mails.dpdk.org (Postfix) with ESMTP id CB49840A7F for ; Fri, 12 Aug 2022 21:18:31 +0200 (CEST) Received: from bree.oktetlabs.ru (bree.oktetlabs.ru [192.168.34.5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by shelob.oktetlabs.ru (Postfix) with ESMTPS id 7C7B4C6; Fri, 12 Aug 2022 22:18:31 +0300 (MSK) DKIM-Filter: OpenDKIM Filter v2.11.0 shelob.oktetlabs.ru 7C7B4C6 Authentication-Results: shelob.oktetlabs.ru/7C7B4C6; dkim=none; dkim-atps=neutral From: Ivan Malov To: dev@dpdk.org Cc: Ori Kam , Eli Britstein , Ilya Maximets , Thomas Monjalon , Stephen Hemminger , Jerin Jacob , Andrew Rybchenko , Aman Singh , Yuying Zhang , Ajit Khaparde , Somnath Kotur , Rahul Lakkireddy , Ferruh Yigit Subject: [PATCH 10/13] ethdev: remove deprecated flow item PF Date: Fri, 12 Aug 2022 22:18:24 +0300 Message-Id: <20220812191827.3187441-11-ivan.malov@oktetlabs.ru> X-Mailer: git-send-email 2.30.2 In-Reply-To: <20220812191827.3187441-1-ivan.malov@oktetlabs.ru> References: <20220812191827.3187441-1-ivan.malov@oktetlabs.ru> MIME-Version: 1.0 X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Such deprecation was commenced in DPDK 21.11. Since then, no parties have objected. Remove. The patch breaks ABI. Signed-off-by: Ivan Malov Reviewed-by: Andrew Rybchenko Acked-by: Ori Kam --- app/test-pmd/cmdline_flow.c | 9 ---- doc/guides/nics/features/bnxt.ini | 1 - doc/guides/nics/features/cxgbe.ini | 1 - doc/guides/nics/features/default.ini | 1 - doc/guides/nics/features/sfc.ini | 1 - doc/guides/nics/sfc_efx.rst | 2 - doc/guides/prog_guide/rte_flow.rst | 34 ------------- .../prog_guide/switch_representation.rst | 14 ------ doc/guides/rel_notes/release_22_11.rst | 5 ++ doc/guides/testpmd_app_ug/testpmd_funcs.rst | 2 - drivers/net/bnxt/tf_ulp/ulp_rte_handler_tbl.c | 4 -- drivers/net/bnxt/tf_ulp/ulp_rte_parser.c | 25 ---------- drivers/net/bnxt/tf_ulp/ulp_rte_parser.h | 5 -- drivers/net/cxgbe/cxgbe_flow.c | 21 -------- drivers/net/sfc/sfc_mae.c | 48 ------------------- lib/ethdev/rte_flow.c | 1 - lib/ethdev/rte_flow.h | 15 ------ 17 files changed, 5 insertions(+), 184 deletions(-) diff --git a/app/test-pmd/cmdline_flow.c b/app/test-pmd/cmdline_flow.c index 23889f7ab1..2722d5a48d 100644 --- a/app/test-pmd/cmdline_flow.c +++ b/app/test-pmd/cmdline_flow.c @@ -249,7 +249,6 @@ enum index { ITEM_INVERT, ITEM_ANY, ITEM_ANY_NUM, - ITEM_PF, ITEM_VF, ITEM_VF_ID, ITEM_PHY_PORT, @@ -1278,7 +1277,6 @@ static const enum index next_item[] = { ITEM_VOID, ITEM_INVERT, ITEM_ANY, - ITEM_PF, ITEM_VF, ITEM_PHY_PORT, ITEM_PORT_ID, @@ -3461,13 +3459,6 @@ static const struct token token_list[] = { .next = NEXT(item_any, NEXT_ENTRY(COMMON_UNSIGNED), item_param), .args = ARGS(ARGS_ENTRY(struct rte_flow_item_any, num)), }, - [ITEM_PF] = { - .name = "pf", - .help = "match traffic from/to the physical function", - .priv = PRIV_ITEM(PF, 0), - .next = NEXT(NEXT_ENTRY(ITEM_NEXT)), - .call = parse_vc, - }, [ITEM_VF] = { .name = "vf", .help = "match traffic from/to a virtual function ID", diff --git a/doc/guides/nics/features/bnxt.ini b/doc/guides/nics/features/bnxt.ini index afb5414b49..259480d1df 100644 --- a/doc/guides/nics/features/bnxt.ini +++ b/doc/guides/nics/features/bnxt.ini @@ -63,7 +63,6 @@ ipv6 = Y gre = Y icmp = Y icmp6 = Y -pf = Y phy_port = Y port_id = Y port_representor = Y diff --git a/doc/guides/nics/features/cxgbe.ini b/doc/guides/nics/features/cxgbe.ini index f674803ec4..d869f2100f 100644 --- a/doc/guides/nics/features/cxgbe.ini +++ b/doc/guides/nics/features/cxgbe.ini @@ -39,7 +39,6 @@ Usage doc = Y eth = Y ipv4 = Y ipv6 = Y -pf = Y phy_port = Y tcp = Y udp = Y diff --git a/doc/guides/nics/features/default.ini b/doc/guides/nics/features/default.ini index d1db0c256a..aff236134e 100644 --- a/doc/guides/nics/features/default.ini +++ b/doc/guides/nics/features/default.ini @@ -121,7 +121,6 @@ meta = mpls = nsh = nvgre = -pf = pfcp = phy_port = port_id = diff --git a/doc/guides/nics/features/sfc.ini b/doc/guides/nics/features/sfc.ini index 2e798b5ef5..355174d5c2 100644 --- a/doc/guides/nics/features/sfc.ini +++ b/doc/guides/nics/features/sfc.ini @@ -47,7 +47,6 @@ ipv4 = Y ipv6 = Y mark = P nvgre = Y -pf = Y phy_port = Y port_id = Y port_representor = Y diff --git a/doc/guides/nics/sfc_efx.rst b/doc/guides/nics/sfc_efx.rst index 39c6e23d5b..2dbc59e8f7 100644 --- a/doc/guides/nics/sfc_efx.rst +++ b/doc/guides/nics/sfc_efx.rst @@ -200,8 +200,6 @@ Supported pattern items (***transfer*** rules): - PHY_PORT (cannot repeat; conflicts with other traffic source items) -- PF (cannot repeat; conflicts with other traffic source items) - - VF (cannot repeat; conflicts with other traffic source items) - ETH diff --git a/doc/guides/prog_guide/rte_flow.rst b/doc/guides/prog_guide/rte_flow.rst index 588914b231..72f0c3d346 100644 --- a/doc/guides/prog_guide/rte_flow.rst +++ b/doc/guides/prog_guide/rte_flow.rst @@ -535,37 +535,6 @@ Usage example, matching non-TCPv4 packets only: | 4 | END | +-------+----------+ -Item: ``PF`` -^^^^^^^^^^^^ - -This item is deprecated. Consider: - - `Item: PORT_REPRESENTOR`_ - - `Item: REPRESENTED_PORT`_ - -Matches traffic originating from (ingress) or going to (egress) the physical -function of the current device. - -If supported, should work even if the physical function is not managed by -the application and thus not associated with a DPDK port ID. - -- Can be combined with any number of `Item: VF`_ to match both PF and VF - traffic. -- ``spec``, ``last`` and ``mask`` must not be set. - -.. _table_rte_flow_item_pf: - -.. table:: PF - - +----------+-------+ - | Field | Value | - +==========+=======+ - | ``spec`` | unset | - +----------+-------+ - | ``last`` | unset | - +----------+-------+ - | ``mask`` | unset | - +----------+-------+ - Item: ``VF`` ^^^^^^^^^^^^ @@ -584,7 +553,6 @@ separate entities, should be addressed through their own DPDK port IDs. - Can be specified multiple times to match traffic addressed to several VF IDs. -- Can be combined with a PF item to match both PF and VF traffic. - Default ``mask`` matches any VF ID. .. _table_rte_flow_item_vf: @@ -2074,8 +2042,6 @@ This action is deprecated. Consider: Directs matching traffic to the physical function (PF) of the current device. -See `Item: PF`_. - - No configurable properties. .. _table_rte_flow_action_pf: diff --git a/doc/guides/prog_guide/switch_representation.rst b/doc/guides/prog_guide/switch_representation.rst index 3da30fc779..6fd7b98bdc 100644 --- a/doc/guides/prog_guide/switch_representation.rst +++ b/doc/guides/prog_guide/switch_representation.rst @@ -624,25 +624,11 @@ Same restrictions as `PORT_ID pattern item`_. - Targets **A**, **B** or **C** in `traffic steering`_. -PF Pattern Item -^^^^^^^^^^^^^^^ - -Matches traffic originating from (ingress) or going to (egress) the physical -function of the current device. - -If supported, should work even if the physical function is not managed by -the application and thus not associated with a DPDK port ID. Its behavior is -otherwise similar to `PORT_ID pattern item`_ using PF port ID. - -- Matches **A** in `traffic steering`_. - PF Action ^^^^^^^^^ Directs matching traffic to the physical function of the current device. -Same restrictions as `PF pattern item`_. - - Targets **A** in `traffic steering`_. VF Pattern Item diff --git a/doc/guides/rel_notes/release_22_11.rst b/doc/guides/rel_notes/release_22_11.rst index c4ce32daed..b7469708af 100644 --- a/doc/guides/rel_notes/release_22_11.rst +++ b/doc/guides/rel_notes/release_22_11.rst @@ -76,6 +76,9 @@ Removed Items Also, make sure to start the actual text at the margin. ======================================================= +* ethdev: removed ``RTE_FLOW_ITEM_TYPE_PF``; + use ``RTE_FLOW_ITEM_TYPE_REPRESENTED_PORT``. + API Changes ----------- @@ -122,6 +125,8 @@ ABI Changes Also, make sure to start the actual text at the margin. ======================================================= +* ethdev: enum ``RTE_FLOW_ITEM`` was affected by deprecation procedure. + Known Issues ------------ diff --git a/doc/guides/testpmd_app_ug/testpmd_funcs.rst b/doc/guides/testpmd_app_ug/testpmd_funcs.rst index c105200fe7..4446560369 100644 --- a/doc/guides/testpmd_app_ug/testpmd_funcs.rst +++ b/doc/guides/testpmd_app_ug/testpmd_funcs.rst @@ -3665,8 +3665,6 @@ This section lists supported pattern items and their attributes, if any. - ``num {unsigned}``: number of layers covered. -- ``pf``: match traffic from/to the physical function. - - ``vf``: match traffic from/to a virtual function ID. - ``id {unsigned}``: VF ID. diff --git a/drivers/net/bnxt/tf_ulp/ulp_rte_handler_tbl.c b/drivers/net/bnxt/tf_ulp/ulp_rte_handler_tbl.c index e9337ecd2c..17216426d8 100644 --- a/drivers/net/bnxt/tf_ulp/ulp_rte_handler_tbl.c +++ b/drivers/net/bnxt/tf_ulp/ulp_rte_handler_tbl.c @@ -260,10 +260,6 @@ struct bnxt_ulp_rte_hdr_info ulp_hdr_info[] = { .hdr_type = BNXT_ULP_HDR_TYPE_SUPPORTED, .proto_hdr_func = ulp_rte_item_any_handler }, - [RTE_FLOW_ITEM_TYPE_PF] = { - .hdr_type = BNXT_ULP_HDR_TYPE_SUPPORTED, - .proto_hdr_func = ulp_rte_pf_hdr_handler - }, [RTE_FLOW_ITEM_TYPE_VF] = { .hdr_type = BNXT_ULP_HDR_TYPE_SUPPORTED, .proto_hdr_func = ulp_rte_vf_hdr_handler diff --git a/drivers/net/bnxt/tf_ulp/ulp_rte_parser.c b/drivers/net/bnxt/tf_ulp/ulp_rte_parser.c index 9edf3e8799..6a1d235f77 100644 --- a/drivers/net/bnxt/tf_ulp/ulp_rte_parser.c +++ b/drivers/net/bnxt/tf_ulp/ulp_rte_parser.c @@ -507,31 +507,6 @@ ulp_rte_parser_implicit_act_port_process(struct ulp_rte_parser_params *params) return BNXT_TF_RC_SUCCESS; } -/* Function to handle the parsing of RTE Flow item PF Header. */ -int32_t -ulp_rte_pf_hdr_handler(const struct rte_flow_item *item __rte_unused, - struct ulp_rte_parser_params *params) -{ - uint16_t port_id = 0; - uint16_t svif_mask = 0xFFFF; - uint32_t ifindex; - - /* Get the implicit port id */ - port_id = ULP_COMP_FLD_IDX_RD(params, BNXT_ULP_CF_IDX_INCOMING_IF); - - /* perform the conversion from dpdk port to bnxt ifindex */ - if (ulp_port_db_dev_port_to_ulp_index(params->ulp_ctx, - port_id, - &ifindex)) { - BNXT_TF_DBG(ERR, "ParseErr:Portid is not valid\n"); - return BNXT_TF_RC_ERROR; - } - - /* Update the SVIF details */ - return ulp_rte_parser_svif_set(params, ifindex, svif_mask, - BNXT_ULP_DIR_INVALID); -} - /* Function to handle the parsing of RTE Flow item VF Header. */ int32_t ulp_rte_vf_hdr_handler(const struct rte_flow_item *item, diff --git a/drivers/net/bnxt/tf_ulp/ulp_rte_parser.h b/drivers/net/bnxt/tf_ulp/ulp_rte_parser.h index e4225d00f8..94918f6b4a 100644 --- a/drivers/net/bnxt/tf_ulp/ulp_rte_parser.h +++ b/drivers/net/bnxt/tf_ulp/ulp_rte_parser.h @@ -80,11 +80,6 @@ bnxt_ulp_rte_parser_act_parse(const struct rte_flow_action actions[], void bnxt_ulp_rte_parser_post_process(struct ulp_rte_parser_params *params); -/* Function to handle the parsing of RTE Flow item PF Header. */ -int32_t -ulp_rte_pf_hdr_handler(const struct rte_flow_item *item, - struct ulp_rte_parser_params *params); - /* Function to handle the parsing of RTE Flow item VF Header. */ int32_t ulp_rte_vf_hdr_handler(const struct rte_flow_item *item, diff --git a/drivers/net/cxgbe/cxgbe_flow.c b/drivers/net/cxgbe/cxgbe_flow.c index 6e460dfe2e..e4f9c152b5 100644 --- a/drivers/net/cxgbe/cxgbe_flow.c +++ b/drivers/net/cxgbe/cxgbe_flow.c @@ -288,22 +288,6 @@ ch_rte_parsetype_vlan(const void *dmask, const struct rte_flow_item *item, return 0; } -static int -ch_rte_parsetype_pf(const void *dmask __rte_unused, - const struct rte_flow_item *item __rte_unused, - struct ch_filter_specification *fs, - struct rte_flow_error *e __rte_unused) -{ - struct rte_flow *flow = (struct rte_flow *)fs->private; - struct rte_eth_dev *dev = flow->dev; - struct adapter *adap = ethdev2adap(dev); - - CXGBE_FILL_FS(1, 1, pfvf_vld); - - CXGBE_FILL_FS(adap->pf, 0x7, pf); - return 0; -} - static int ch_rte_parsetype_vf(const void *dmask, const struct rte_flow_item *item, struct ch_filter_specification *fs, @@ -1022,11 +1006,6 @@ static struct chrte_fparse parseitem[] = { .dmask = &rte_flow_item_tcp_mask, }, - [RTE_FLOW_ITEM_TYPE_PF] = { - .fptr = ch_rte_parsetype_pf, - .dmask = NULL, - }, - [RTE_FLOW_ITEM_TYPE_VF] = { .fptr = ch_rte_parsetype_vf, .dmask = &(const struct rte_flow_item_vf){ diff --git a/drivers/net/sfc/sfc_mae.c b/drivers/net/sfc/sfc_mae.c index eb197fbdeb..e8da2d2a0d 100644 --- a/drivers/net/sfc/sfc_mae.c +++ b/drivers/net/sfc/sfc_mae.c @@ -1685,42 +1685,6 @@ sfc_mae_rule_parse_item_phy_port(const struct rte_flow_item *item, return 0; } -static int -sfc_mae_rule_parse_item_pf(const struct rte_flow_item *item, - struct sfc_flow_parse_ctx *ctx, - struct rte_flow_error *error) -{ - struct sfc_mae_parse_ctx *ctx_mae = ctx->mae; - const efx_nic_cfg_t *encp = efx_nic_cfg_get(ctx_mae->sa->nic); - efx_mport_sel_t mport_v; - int rc; - - if (ctx_mae->match_mport_set) { - return rte_flow_error_set(error, ENOTSUP, - RTE_FLOW_ERROR_TYPE_ITEM, item, - "Can't handle multiple traffic source items"); - } - - rc = efx_mae_mport_by_pcie_function(encp->enc_pf, EFX_PCI_VF_INVALID, - &mport_v); - if (rc != 0) { - return rte_flow_error_set(error, rc, - RTE_FLOW_ERROR_TYPE_ITEM, item, - "Failed to convert the PF ID"); - } - - rc = efx_mae_match_spec_mport_set(ctx_mae->match_spec, &mport_v, NULL); - if (rc != 0) { - return rte_flow_error_set(error, rc, - RTE_FLOW_ERROR_TYPE_ITEM, item, - "Failed to set MPORT for the PF"); - } - - ctx_mae->match_mport_set = B_TRUE; - - return 0; -} - static int sfc_mae_rule_parse_item_vf(const struct rte_flow_item *item, struct sfc_flow_parse_ctx *ctx, @@ -2591,18 +2555,6 @@ static const struct sfc_flow_item sfc_flow_items[] = { .ctx_type = SFC_FLOW_PARSE_CTX_MAE, .parse = sfc_mae_rule_parse_item_phy_port, }, - { - .type = RTE_FLOW_ITEM_TYPE_PF, - .name = "PF", - /* - * In terms of RTE flow, this item is a META one, - * and its position in the pattern is don't care. - */ - .prev_layer = SFC_FLOW_ITEM_ANY_LAYER, - .layer = SFC_FLOW_ITEM_ANY_LAYER, - .ctx_type = SFC_FLOW_PARSE_CTX_MAE, - .parse = sfc_mae_rule_parse_item_pf, - }, { .type = RTE_FLOW_ITEM_TYPE_VF, .name = "VF", diff --git a/lib/ethdev/rte_flow.c b/lib/ethdev/rte_flow.c index 501be9d602..6ece72bf36 100644 --- a/lib/ethdev/rte_flow.c +++ b/lib/ethdev/rte_flow.c @@ -97,7 +97,6 @@ static const struct rte_flow_desc_data rte_flow_desc_item[] = { MK_FLOW_ITEM(VOID, 0), MK_FLOW_ITEM(INVERT, 0), MK_FLOW_ITEM(ANY, sizeof(struct rte_flow_item_any)), - MK_FLOW_ITEM(PF, 0), MK_FLOW_ITEM(VF, sizeof(struct rte_flow_item_vf)), MK_FLOW_ITEM(PHY_PORT, sizeof(struct rte_flow_item_phy_port)), MK_FLOW_ITEM(PORT_ID, sizeof(struct rte_flow_item_port_id)), diff --git a/lib/ethdev/rte_flow.h b/lib/ethdev/rte_flow.h index bc68fd5631..97de98e232 100644 --- a/lib/ethdev/rte_flow.h +++ b/lib/ethdev/rte_flow.h @@ -188,20 +188,6 @@ enum rte_flow_item_type { */ RTE_FLOW_ITEM_TYPE_ANY, - /** - * @deprecated - * @see RTE_FLOW_ITEM_TYPE_PORT_REPRESENTOR - * @see RTE_FLOW_ITEM_TYPE_REPRESENTED_PORT - * - * [META] - * - * Matches traffic originating from (ingress) or going to (egress) - * the physical function of the current device. - * - * No associated specification structure. - */ - RTE_FLOW_ITEM_TYPE_PF, - /** * @deprecated * @see RTE_FLOW_ITEM_TYPE_PORT_REPRESENTOR @@ -732,7 +718,6 @@ static const struct rte_flow_item_any rte_flow_item_any_mask = { * * - Can be specified multiple times to match traffic addressed to several * VF IDs. - * - Can be combined with a PF item to match both PF and VF traffic. * * A zeroed mask can be used to match any VF ID. */ From patchwork Fri Aug 12 19:18:25 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ivan Malov X-Patchwork-Id: 114943 X-Patchwork-Delegate: thomas@monjalon.net Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id B32F0A0543; Fri, 12 Aug 2022 21:19:36 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 71A1242C5D; Fri, 12 Aug 2022 21:18:40 +0200 (CEST) Received: from shelob.oktetlabs.ru (shelob.oktetlabs.ru [91.220.146.113]) by mails.dpdk.org (Postfix) with ESMTP id 0CFFB410F1 for ; Fri, 12 Aug 2022 21:18:32 +0200 (CEST) Received: from bree.oktetlabs.ru (bree.oktetlabs.ru [192.168.34.5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by shelob.oktetlabs.ru (Postfix) with ESMTPS id C9938C7; Fri, 12 Aug 2022 22:18:31 +0300 (MSK) DKIM-Filter: OpenDKIM Filter v2.11.0 shelob.oktetlabs.ru C9938C7 Authentication-Results: shelob.oktetlabs.ru/C9938C7; dkim=none; dkim-atps=neutral From: Ivan Malov To: dev@dpdk.org Cc: Ori Kam , Eli Britstein , Ilya Maximets , Thomas Monjalon , Stephen Hemminger , Jerin Jacob , Andrew Rybchenko , Aman Singh , Yuying Zhang , Ajit Khaparde , Somnath Kotur , Rahul Lakkireddy , Ferruh Yigit , Beilei Xing Subject: [PATCH 11/13] ethdev: remove deprecated flow item VF Date: Fri, 12 Aug 2022 22:18:25 +0300 Message-Id: <20220812191827.3187441-12-ivan.malov@oktetlabs.ru> X-Mailer: git-send-email 2.30.2 In-Reply-To: <20220812191827.3187441-1-ivan.malov@oktetlabs.ru> References: <20220812191827.3187441-1-ivan.malov@oktetlabs.ru> MIME-Version: 1.0 X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Such deprecation was commenced in DPDK 21.11. Since then, no parties have objected. Remove. The patch breaks ABI. Signed-off-by: Ivan Malov Reviewed-by: Andrew Rybchenko Acked-by: Ori Kam --- app/test-pmd/cmdline_flow.c | 25 - doc/guides/nics/features/bnxt.ini | 1 - doc/guides/nics/features/cxgbe.ini | 1 - doc/guides/nics/features/default.ini | 1 - doc/guides/nics/features/i40e.ini | 1 - doc/guides/nics/features/sfc.ini | 1 - doc/guides/nics/sfc_efx.rst | 2 - doc/guides/prog_guide/rte_flow.rst | 40 +- doc/guides/rel_notes/release_22_11.rst | 3 + doc/guides/testpmd_app_ug/testpmd_funcs.rst | 4 - drivers/net/bnxt/bnxt_flow.c | 58 +- drivers/net/bnxt/tf_ulp/ulp_rte_handler_tbl.c | 4 - drivers/net/bnxt/tf_ulp/ulp_rte_parser.c | 34 - drivers/net/bnxt/tf_ulp/ulp_rte_parser.h | 5 - drivers/net/cxgbe/cxgbe_flow.c | 36 - drivers/net/i40e/i40e_flow.c | 987 ++---------------- drivers/net/sfc/sfc_mae.c | 77 -- lib/ethdev/rte_flow.c | 1 - lib/ethdev/rte_flow.h | 46 - 19 files changed, 110 insertions(+), 1217 deletions(-) diff --git a/app/test-pmd/cmdline_flow.c b/app/test-pmd/cmdline_flow.c index 2722d5a48d..31b906178c 100644 --- a/app/test-pmd/cmdline_flow.c +++ b/app/test-pmd/cmdline_flow.c @@ -249,8 +249,6 @@ enum index { ITEM_INVERT, ITEM_ANY, ITEM_ANY_NUM, - ITEM_VF, - ITEM_VF_ID, ITEM_PHY_PORT, ITEM_PHY_PORT_INDEX, ITEM_PORT_ID, @@ -1277,7 +1275,6 @@ static const enum index next_item[] = { ITEM_VOID, ITEM_INVERT, ITEM_ANY, - ITEM_VF, ITEM_PHY_PORT, ITEM_PORT_ID, ITEM_MARK, @@ -1348,12 +1345,6 @@ static const enum index item_any[] = { ZERO, }; -static const enum index item_vf[] = { - ITEM_VF_ID, - ITEM_NEXT, - ZERO, -}; - static const enum index item_phy_port[] = { ITEM_PHY_PORT_INDEX, ITEM_NEXT, @@ -3459,19 +3450,6 @@ static const struct token token_list[] = { .next = NEXT(item_any, NEXT_ENTRY(COMMON_UNSIGNED), item_param), .args = ARGS(ARGS_ENTRY(struct rte_flow_item_any, num)), }, - [ITEM_VF] = { - .name = "vf", - .help = "match traffic from/to a virtual function ID", - .priv = PRIV_ITEM(VF, sizeof(struct rte_flow_item_vf)), - .next = NEXT(item_vf), - .call = parse_vc, - }, - [ITEM_VF_ID] = { - .name = "id", - .help = "VF ID", - .next = NEXT(item_vf, NEXT_ENTRY(COMMON_UNSIGNED), item_param), - .args = ARGS(ARGS_ENTRY(struct rte_flow_item_vf, id)), - }, [ITEM_PHY_PORT] = { .name = "phy_port", .help = "match traffic from/to a specific physical port", @@ -10669,9 +10647,6 @@ flow_item_default_mask(const struct rte_flow_item *item) case RTE_FLOW_ITEM_TYPE_ANY: mask = &rte_flow_item_any_mask; break; - case RTE_FLOW_ITEM_TYPE_VF: - mask = &rte_flow_item_vf_mask; - break; case RTE_FLOW_ITEM_TYPE_PORT_ID: mask = &rte_flow_item_port_id_mask; break; diff --git a/doc/guides/nics/features/bnxt.ini b/doc/guides/nics/features/bnxt.ini index 259480d1df..860a0a8cf6 100644 --- a/doc/guides/nics/features/bnxt.ini +++ b/doc/guides/nics/features/bnxt.ini @@ -69,7 +69,6 @@ port_representor = Y represented_port = Y tcp = Y udp = Y -vf = Y vlan = Y vxlan = Y diff --git a/doc/guides/nics/features/cxgbe.ini b/doc/guides/nics/features/cxgbe.ini index d869f2100f..3f11cc2ac0 100644 --- a/doc/guides/nics/features/cxgbe.ini +++ b/doc/guides/nics/features/cxgbe.ini @@ -42,7 +42,6 @@ ipv6 = Y phy_port = Y tcp = Y udp = Y -vf = Y vlan = Y [rte_flow actions] diff --git a/doc/guides/nics/features/default.ini b/doc/guides/nics/features/default.ini index aff236134e..8fbe1de46a 100644 --- a/doc/guides/nics/features/default.ini +++ b/doc/guides/nics/features/default.ini @@ -135,7 +135,6 @@ sctp = tag = tcp = udp = -vf = vlan = vxlan = vxlan_gpe = diff --git a/doc/guides/nics/features/i40e.ini b/doc/guides/nics/features/i40e.ini index dd18fec217..95e39aaba0 100644 --- a/doc/guides/nics/features/i40e.ini +++ b/doc/guides/nics/features/i40e.ini @@ -68,7 +68,6 @@ raw = Y sctp = Y tcp = Y udp = Y -vf = Y vlan = Y vxlan = Y diff --git a/doc/guides/nics/features/sfc.ini b/doc/guides/nics/features/sfc.ini index 355174d5c2..363fc6d0ec 100644 --- a/doc/guides/nics/features/sfc.ini +++ b/doc/guides/nics/features/sfc.ini @@ -55,7 +55,6 @@ pppoes = Y represented_port = Y tcp = Y udp = Y -vf = Y vlan = Y vxlan = Y diff --git a/doc/guides/nics/sfc_efx.rst b/doc/guides/nics/sfc_efx.rst index 2dbc59e8f7..0e0088b09f 100644 --- a/doc/guides/nics/sfc_efx.rst +++ b/doc/guides/nics/sfc_efx.rst @@ -200,8 +200,6 @@ Supported pattern items (***transfer*** rules): - PHY_PORT (cannot repeat; conflicts with other traffic source items) -- VF (cannot repeat; conflicts with other traffic source items) - - ETH - VLAN (double-tagging is supported) diff --git a/doc/guides/prog_guide/rte_flow.rst b/doc/guides/prog_guide/rte_flow.rst index 72f0c3d346..85bf2bf123 100644 --- a/doc/guides/prog_guide/rte_flow.rst +++ b/doc/guides/prog_guide/rte_flow.rst @@ -535,40 +535,6 @@ Usage example, matching non-TCPv4 packets only: | 4 | END | +-------+----------+ -Item: ``VF`` -^^^^^^^^^^^^ - -This item is deprecated. Consider: - - `Item: PORT_REPRESENTOR`_ - - `Item: REPRESENTED_PORT`_ - -Matches traffic originating from (ingress) or going to (egress) a given -virtual function of the current device. - -If supported, should work even if the virtual function is not managed by the -application and thus not associated with a DPDK port ID. - -Note this pattern item does not match VF representors traffic which, as -separate entities, should be addressed through their own DPDK port IDs. - -- Can be specified multiple times to match traffic addressed to several VF - IDs. -- Default ``mask`` matches any VF ID. - -.. _table_rte_flow_item_vf: - -.. table:: VF - - +----------+----------+---------------------------+ - | Field | Subfield | Value | - +==========+==========+===========================+ - | ``spec`` | ``id`` | destination VF ID | - +----------+----------+---------------------------+ - | ``last`` | ``id`` | upper range value | - +----------+----------+---------------------------+ - | ``mask`` | ``id`` | zeroed to match any VF ID | - +----------+----------+---------------------------+ - Item: ``PHY_PORT`` ^^^^^^^^^^^^^^^^^^ @@ -2063,13 +2029,11 @@ This action is deprecated. Consider: Directs matching traffic to a given virtual function of the current device. -Packets matched by a VF pattern item can be redirected to their original VF -ID instead of the specified one. This parameter may not be available and is +Packets can be redirected to the VF they originate from, +instead of the specified one. This parameter may not be available and is not guaranteed to work properly if the VF part is matched by a prior flow rule or if packets are not addressed to a VF in the first place. -See `Item: VF`_. - .. _table_rte_flow_action_vf: .. table:: VF diff --git a/doc/guides/rel_notes/release_22_11.rst b/doc/guides/rel_notes/release_22_11.rst index b7469708af..cf3d6e4efb 100644 --- a/doc/guides/rel_notes/release_22_11.rst +++ b/doc/guides/rel_notes/release_22_11.rst @@ -79,6 +79,9 @@ Removed Items * ethdev: removed ``RTE_FLOW_ITEM_TYPE_PF``; use ``RTE_FLOW_ITEM_TYPE_REPRESENTED_PORT``. +* ethdev: removed ``RTE_FLOW_ITEM_TYPE_VF``; + use ``RTE_FLOW_ITEM_TYPE_REPRESENTED_PORT``. + API Changes ----------- diff --git a/doc/guides/testpmd_app_ug/testpmd_funcs.rst b/doc/guides/testpmd_app_ug/testpmd_funcs.rst index 4446560369..17049e59f8 100644 --- a/doc/guides/testpmd_app_ug/testpmd_funcs.rst +++ b/doc/guides/testpmd_app_ug/testpmd_funcs.rst @@ -3665,10 +3665,6 @@ This section lists supported pattern items and their attributes, if any. - ``num {unsigned}``: number of layers covered. -- ``vf``: match traffic from/to a virtual function ID. - - - ``id {unsigned}``: VF ID. - - ``phy_port``: match traffic from/to a specific physical port. - ``index {unsigned}``: physical port index. diff --git a/drivers/net/bnxt/bnxt_flow.c b/drivers/net/bnxt/bnxt_flow.c index f8e10968e3..96ef00460c 100644 --- a/drivers/net/bnxt/bnxt_flow.c +++ b/drivers/net/bnxt/bnxt_flow.c @@ -126,8 +126,7 @@ bnxt_filter_type_check(const struct rte_flow_item pattern[], } static int -bnxt_validate_and_parse_flow_type(struct bnxt *bp, - const struct rte_flow_attr *attr, +bnxt_validate_and_parse_flow_type(const struct rte_flow_attr *attr, const struct rte_flow_item pattern[], struct rte_flow_error *error, struct bnxt_filter_info *filter) @@ -148,16 +147,13 @@ bnxt_validate_and_parse_flow_type(struct bnxt *bp, const struct rte_flow_item_vxlan *vxlan_mask; uint8_t vni_mask[] = {0xFF, 0xFF, 0xFF}; uint8_t tni_mask[] = {0xFF, 0xFF, 0xFF}; - const struct rte_flow_item_vf *vf_spec; uint32_t tenant_id_be = 0, valid_flags = 0; bool vni_masked = 0; bool tni_masked = 0; uint32_t en_ethertype; uint8_t inner = 0; - uint32_t vf = 0; uint32_t en = 0; int use_ntuple; - int dflt_vnic; use_ntuple = bnxt_filter_type_check(pattern, error); if (use_ntuple < 0) @@ -680,56 +676,6 @@ bnxt_validate_and_parse_flow_type(struct bnxt *bp, } break; - case RTE_FLOW_ITEM_TYPE_VF: - vf_spec = item->spec; - vf = vf_spec->id; - if (!BNXT_PF(bp)) { - rte_flow_error_set(error, - EINVAL, - RTE_FLOW_ERROR_TYPE_ITEM, - item, - "Configuring on a VF!"); - return -rte_errno; - } - - if (vf >= bp->pdev->max_vfs) { - rte_flow_error_set(error, - EINVAL, - RTE_FLOW_ERROR_TYPE_ITEM, - item, - "Incorrect VF id!"); - return -rte_errno; - } - - if (!attr->transfer) { - rte_flow_error_set(error, - ENOTSUP, - RTE_FLOW_ERROR_TYPE_ITEM, - item, - "Matching VF traffic without" - " affecting it (transfer attribute)" - " is unsupported"); - return -rte_errno; - } - - filter->mirror_vnic_id = - dflt_vnic = bnxt_hwrm_func_qcfg_vf_dflt_vnic_id(bp, vf); - if (dflt_vnic < 0) { - /* This simply indicates there's no driver - * loaded. This is not an error. - */ - rte_flow_error_set - (error, - EINVAL, - RTE_FLOW_ERROR_TYPE_ITEM, - item, - "Unable to get default VNIC for VF"); - return -rte_errno; - } - - filter->mirror_vnic_id = dflt_vnic; - en |= NTUPLE_FLTR_ALLOC_INPUT_EN_MIRROR_VNIC_ID; - break; default: break; } @@ -1298,7 +1244,7 @@ bnxt_validate_and_parse_flow(struct rte_eth_dev *dev, int rc, use_ntuple; rc = - bnxt_validate_and_parse_flow_type(bp, attr, pattern, error, filter); + bnxt_validate_and_parse_flow_type(attr, pattern, error, filter); if (rc != 0) goto ret; diff --git a/drivers/net/bnxt/tf_ulp/ulp_rte_handler_tbl.c b/drivers/net/bnxt/tf_ulp/ulp_rte_handler_tbl.c index 17216426d8..23081fc99b 100644 --- a/drivers/net/bnxt/tf_ulp/ulp_rte_handler_tbl.c +++ b/drivers/net/bnxt/tf_ulp/ulp_rte_handler_tbl.c @@ -260,10 +260,6 @@ struct bnxt_ulp_rte_hdr_info ulp_hdr_info[] = { .hdr_type = BNXT_ULP_HDR_TYPE_SUPPORTED, .proto_hdr_func = ulp_rte_item_any_handler }, - [RTE_FLOW_ITEM_TYPE_VF] = { - .hdr_type = BNXT_ULP_HDR_TYPE_SUPPORTED, - .proto_hdr_func = ulp_rte_vf_hdr_handler - }, [RTE_FLOW_ITEM_TYPE_PHY_PORT] = { .hdr_type = BNXT_ULP_HDR_TYPE_SUPPORTED, .proto_hdr_func = ulp_rte_phy_port_hdr_handler diff --git a/drivers/net/bnxt/tf_ulp/ulp_rte_parser.c b/drivers/net/bnxt/tf_ulp/ulp_rte_parser.c index 6a1d235f77..38799840dd 100644 --- a/drivers/net/bnxt/tf_ulp/ulp_rte_parser.c +++ b/drivers/net/bnxt/tf_ulp/ulp_rte_parser.c @@ -507,40 +507,6 @@ ulp_rte_parser_implicit_act_port_process(struct ulp_rte_parser_params *params) return BNXT_TF_RC_SUCCESS; } -/* Function to handle the parsing of RTE Flow item VF Header. */ -int32_t -ulp_rte_vf_hdr_handler(const struct rte_flow_item *item, - struct ulp_rte_parser_params *params) -{ - const struct rte_flow_item_vf *vf_spec = item->spec; - const struct rte_flow_item_vf *vf_mask = item->mask; - uint16_t mask = 0; - uint32_t ifindex; - int32_t rc = BNXT_TF_RC_PARSE_ERR; - - /* Get VF rte_flow_item for Port details */ - if (!vf_spec) { - BNXT_TF_DBG(ERR, "ParseErr:VF id is not valid\n"); - return rc; - } - if (!vf_mask) { - BNXT_TF_DBG(ERR, "ParseErr:VF mask is not valid\n"); - return rc; - } - mask = vf_mask->id; - - /* perform the conversion from VF Func id to bnxt ifindex */ - if (ulp_port_db_dev_func_id_to_ulp_index(params->ulp_ctx, - vf_spec->id, - &ifindex)) { - BNXT_TF_DBG(ERR, "ParseErr:Portid is not valid\n"); - return rc; - } - /* Update the SVIF details */ - return ulp_rte_parser_svif_set(params, ifindex, mask, - BNXT_ULP_DIR_INVALID); -} - /* Parse items PORT_ID, PORT_REPRESENTOR and REPRESENTED_PORT. */ int32_t ulp_rte_port_hdr_handler(const struct rte_flow_item *item, diff --git a/drivers/net/bnxt/tf_ulp/ulp_rte_parser.h b/drivers/net/bnxt/tf_ulp/ulp_rte_parser.h index 94918f6b4a..0e246abbd8 100644 --- a/drivers/net/bnxt/tf_ulp/ulp_rte_parser.h +++ b/drivers/net/bnxt/tf_ulp/ulp_rte_parser.h @@ -80,11 +80,6 @@ bnxt_ulp_rte_parser_act_parse(const struct rte_flow_action actions[], void bnxt_ulp_rte_parser_post_process(struct ulp_rte_parser_params *params); -/* Function to handle the parsing of RTE Flow item VF Header. */ -int32_t -ulp_rte_vf_hdr_handler(const struct rte_flow_item *item, - struct ulp_rte_parser_params *params); - /* Parse items PORT_ID, PORT_REPRESENTOR and REPRESENTED_PORT. */ int32_t ulp_rte_port_hdr_handler(const struct rte_flow_item *item, diff --git a/drivers/net/cxgbe/cxgbe_flow.c b/drivers/net/cxgbe/cxgbe_flow.c index e4f9c152b5..8b4efc697b 100644 --- a/drivers/net/cxgbe/cxgbe_flow.c +++ b/drivers/net/cxgbe/cxgbe_flow.c @@ -288,35 +288,6 @@ ch_rte_parsetype_vlan(const void *dmask, const struct rte_flow_item *item, return 0; } -static int -ch_rte_parsetype_vf(const void *dmask, const struct rte_flow_item *item, - struct ch_filter_specification *fs, - struct rte_flow_error *e) -{ - const struct rte_flow_item_vf *umask = item->mask; - const struct rte_flow_item_vf *val = item->spec; - const struct rte_flow_item_vf *mask; - - /* If user has not given any mask, then use chelsio supported mask. */ - mask = umask ? umask : (const struct rte_flow_item_vf *)dmask; - - CXGBE_FILL_FS(1, 1, pfvf_vld); - - if (!val) - return 0; /* Wildcard, match all Vf */ - - if (val->id > UCHAR_MAX) - return rte_flow_error_set(e, EINVAL, - RTE_FLOW_ERROR_TYPE_ITEM, - item, - "VF ID > MAX(255)"); - - if (val->id || (umask && umask->id)) - CXGBE_FILL_FS(val->id, mask->id, vf); - - return 0; -} - static int ch_rte_parsetype_udp(const void *dmask, const struct rte_flow_item *item, struct ch_filter_specification *fs, @@ -1005,13 +976,6 @@ static struct chrte_fparse parseitem[] = { .fptr = ch_rte_parsetype_tcp, .dmask = &rte_flow_item_tcp_mask, }, - - [RTE_FLOW_ITEM_TYPE_VF] = { - .fptr = ch_rte_parsetype_vf, - .dmask = &(const struct rte_flow_item_vf){ - .id = 0xffffffff, - } - }, }; static int diff --git a/drivers/net/i40e/i40e_flow.c b/drivers/net/i40e/i40e_flow.c index 4f3808cb5f..65a826d51c 100644 --- a/drivers/net/i40e/i40e_flow.c +++ b/drivers/net/i40e/i40e_flow.c @@ -62,7 +62,6 @@ static int i40e_flow_parse_ethertype_action(struct rte_eth_dev *dev, struct rte_flow_error *error, struct rte_eth_ethertype_filter *filter); static int i40e_flow_parse_fdir_pattern(struct rte_eth_dev *dev, - const struct rte_flow_attr *attr, const struct rte_flow_item *pattern, struct rte_flow_error *error, struct i40e_fdir_filter_conf *filter); @@ -148,1171 +147,508 @@ const struct rte_flow_ops i40e_flow_ops = { static union i40e_filter_t cons_filter; static enum rte_filter_type cons_filter_type = RTE_ETH_FILTER_NONE; -/* internal pattern w/o VOID items */ -struct rte_flow_item g_items[32]; - -/* Pattern matched ethertype filter */ -static enum rte_flow_item_type pattern_ethertype[] = { - RTE_FLOW_ITEM_TYPE_ETH, - RTE_FLOW_ITEM_TYPE_END, -}; - -/* Pattern matched flow director filter */ -static enum rte_flow_item_type pattern_fdir_ipv4[] = { - RTE_FLOW_ITEM_TYPE_ETH, - RTE_FLOW_ITEM_TYPE_IPV4, - RTE_FLOW_ITEM_TYPE_END, -}; - -static enum rte_flow_item_type pattern_fdir_ipv4_udp[] = { - RTE_FLOW_ITEM_TYPE_ETH, - RTE_FLOW_ITEM_TYPE_IPV4, - RTE_FLOW_ITEM_TYPE_UDP, - RTE_FLOW_ITEM_TYPE_END, -}; - -static enum rte_flow_item_type pattern_fdir_ipv4_tcp[] = { - RTE_FLOW_ITEM_TYPE_ETH, - RTE_FLOW_ITEM_TYPE_IPV4, - RTE_FLOW_ITEM_TYPE_TCP, - RTE_FLOW_ITEM_TYPE_END, -}; - -static enum rte_flow_item_type pattern_fdir_ipv4_sctp[] = { - RTE_FLOW_ITEM_TYPE_ETH, - RTE_FLOW_ITEM_TYPE_IPV4, - RTE_FLOW_ITEM_TYPE_SCTP, - RTE_FLOW_ITEM_TYPE_END, -}; - -static enum rte_flow_item_type pattern_fdir_ipv4_gtpc[] = { - RTE_FLOW_ITEM_TYPE_ETH, - RTE_FLOW_ITEM_TYPE_IPV4, - RTE_FLOW_ITEM_TYPE_UDP, - RTE_FLOW_ITEM_TYPE_GTPC, - RTE_FLOW_ITEM_TYPE_END, -}; - -static enum rte_flow_item_type pattern_fdir_ipv4_gtpu[] = { - RTE_FLOW_ITEM_TYPE_ETH, - RTE_FLOW_ITEM_TYPE_IPV4, - RTE_FLOW_ITEM_TYPE_UDP, - RTE_FLOW_ITEM_TYPE_GTPU, - RTE_FLOW_ITEM_TYPE_END, -}; - -static enum rte_flow_item_type pattern_fdir_ipv4_gtpu_ipv4[] = { - RTE_FLOW_ITEM_TYPE_ETH, - RTE_FLOW_ITEM_TYPE_IPV4, - RTE_FLOW_ITEM_TYPE_UDP, - RTE_FLOW_ITEM_TYPE_GTPU, - RTE_FLOW_ITEM_TYPE_IPV4, - RTE_FLOW_ITEM_TYPE_END, -}; - -static enum rte_flow_item_type pattern_fdir_ipv4_gtpu_ipv6[] = { - RTE_FLOW_ITEM_TYPE_ETH, - RTE_FLOW_ITEM_TYPE_IPV4, - RTE_FLOW_ITEM_TYPE_UDP, - RTE_FLOW_ITEM_TYPE_GTPU, - RTE_FLOW_ITEM_TYPE_IPV6, - RTE_FLOW_ITEM_TYPE_END, -}; - -static enum rte_flow_item_type pattern_fdir_ipv6[] = { - RTE_FLOW_ITEM_TYPE_ETH, - RTE_FLOW_ITEM_TYPE_IPV6, - RTE_FLOW_ITEM_TYPE_END, -}; - -static enum rte_flow_item_type pattern_fdir_ipv6_udp[] = { - RTE_FLOW_ITEM_TYPE_ETH, - RTE_FLOW_ITEM_TYPE_IPV6, - RTE_FLOW_ITEM_TYPE_UDP, - RTE_FLOW_ITEM_TYPE_END, -}; - -static enum rte_flow_item_type pattern_fdir_ipv6_tcp[] = { - RTE_FLOW_ITEM_TYPE_ETH, - RTE_FLOW_ITEM_TYPE_IPV6, - RTE_FLOW_ITEM_TYPE_TCP, - RTE_FLOW_ITEM_TYPE_END, -}; - -static enum rte_flow_item_type pattern_fdir_ipv6_sctp[] = { - RTE_FLOW_ITEM_TYPE_ETH, - RTE_FLOW_ITEM_TYPE_IPV6, - RTE_FLOW_ITEM_TYPE_SCTP, - RTE_FLOW_ITEM_TYPE_END, -}; - -static enum rte_flow_item_type pattern_fdir_ipv6_gtpc[] = { - RTE_FLOW_ITEM_TYPE_ETH, - RTE_FLOW_ITEM_TYPE_IPV6, - RTE_FLOW_ITEM_TYPE_UDP, - RTE_FLOW_ITEM_TYPE_GTPC, - RTE_FLOW_ITEM_TYPE_END, -}; - -static enum rte_flow_item_type pattern_fdir_ipv6_gtpu[] = { - RTE_FLOW_ITEM_TYPE_ETH, - RTE_FLOW_ITEM_TYPE_IPV6, - RTE_FLOW_ITEM_TYPE_UDP, - RTE_FLOW_ITEM_TYPE_GTPU, - RTE_FLOW_ITEM_TYPE_END, -}; - -static enum rte_flow_item_type pattern_fdir_ipv6_gtpu_ipv4[] = { - RTE_FLOW_ITEM_TYPE_ETH, - RTE_FLOW_ITEM_TYPE_IPV6, - RTE_FLOW_ITEM_TYPE_UDP, - RTE_FLOW_ITEM_TYPE_GTPU, - RTE_FLOW_ITEM_TYPE_IPV4, - RTE_FLOW_ITEM_TYPE_END, -}; - -static enum rte_flow_item_type pattern_fdir_ipv6_gtpu_ipv6[] = { - RTE_FLOW_ITEM_TYPE_ETH, - RTE_FLOW_ITEM_TYPE_IPV6, - RTE_FLOW_ITEM_TYPE_UDP, - RTE_FLOW_ITEM_TYPE_GTPU, - RTE_FLOW_ITEM_TYPE_IPV6, - RTE_FLOW_ITEM_TYPE_END, -}; - -static enum rte_flow_item_type pattern_fdir_ethertype_raw_1[] = { - RTE_FLOW_ITEM_TYPE_ETH, - RTE_FLOW_ITEM_TYPE_RAW, - RTE_FLOW_ITEM_TYPE_END, -}; - -static enum rte_flow_item_type pattern_fdir_ethertype_raw_2[] = { - RTE_FLOW_ITEM_TYPE_ETH, - RTE_FLOW_ITEM_TYPE_RAW, - RTE_FLOW_ITEM_TYPE_RAW, - RTE_FLOW_ITEM_TYPE_END, -}; - -static enum rte_flow_item_type pattern_fdir_ethertype_raw_3[] = { - RTE_FLOW_ITEM_TYPE_ETH, - RTE_FLOW_ITEM_TYPE_RAW, - RTE_FLOW_ITEM_TYPE_RAW, - RTE_FLOW_ITEM_TYPE_RAW, - RTE_FLOW_ITEM_TYPE_END, -}; - -static enum rte_flow_item_type pattern_fdir_ipv4_raw_1[] = { - RTE_FLOW_ITEM_TYPE_ETH, - RTE_FLOW_ITEM_TYPE_IPV4, - RTE_FLOW_ITEM_TYPE_RAW, - RTE_FLOW_ITEM_TYPE_END, -}; - -static enum rte_flow_item_type pattern_fdir_ipv4_raw_2[] = { - RTE_FLOW_ITEM_TYPE_ETH, - RTE_FLOW_ITEM_TYPE_IPV4, - RTE_FLOW_ITEM_TYPE_RAW, - RTE_FLOW_ITEM_TYPE_RAW, - RTE_FLOW_ITEM_TYPE_END, -}; - -static enum rte_flow_item_type pattern_fdir_ipv4_raw_3[] = { - RTE_FLOW_ITEM_TYPE_ETH, - RTE_FLOW_ITEM_TYPE_IPV4, - RTE_FLOW_ITEM_TYPE_RAW, - RTE_FLOW_ITEM_TYPE_RAW, - RTE_FLOW_ITEM_TYPE_RAW, - RTE_FLOW_ITEM_TYPE_END, -}; - -static enum rte_flow_item_type pattern_fdir_ipv4_udp_raw_1[] = { - RTE_FLOW_ITEM_TYPE_ETH, - RTE_FLOW_ITEM_TYPE_IPV4, - RTE_FLOW_ITEM_TYPE_UDP, - RTE_FLOW_ITEM_TYPE_RAW, - RTE_FLOW_ITEM_TYPE_END, -}; - -static enum rte_flow_item_type pattern_fdir_ipv4_udp_raw_2[] = { - RTE_FLOW_ITEM_TYPE_ETH, - RTE_FLOW_ITEM_TYPE_IPV4, - RTE_FLOW_ITEM_TYPE_UDP, - RTE_FLOW_ITEM_TYPE_RAW, - RTE_FLOW_ITEM_TYPE_RAW, - RTE_FLOW_ITEM_TYPE_END, -}; - -static enum rte_flow_item_type pattern_fdir_ipv4_udp_raw_3[] = { - RTE_FLOW_ITEM_TYPE_ETH, - RTE_FLOW_ITEM_TYPE_IPV4, - RTE_FLOW_ITEM_TYPE_UDP, - RTE_FLOW_ITEM_TYPE_RAW, - RTE_FLOW_ITEM_TYPE_RAW, - RTE_FLOW_ITEM_TYPE_RAW, - RTE_FLOW_ITEM_TYPE_END, -}; - -static enum rte_flow_item_type pattern_fdir_ipv4_tcp_raw_1[] = { - RTE_FLOW_ITEM_TYPE_ETH, - RTE_FLOW_ITEM_TYPE_IPV4, - RTE_FLOW_ITEM_TYPE_TCP, - RTE_FLOW_ITEM_TYPE_RAW, - RTE_FLOW_ITEM_TYPE_END, -}; - -static enum rte_flow_item_type pattern_fdir_ipv4_tcp_raw_2[] = { - RTE_FLOW_ITEM_TYPE_ETH, - RTE_FLOW_ITEM_TYPE_IPV4, - RTE_FLOW_ITEM_TYPE_TCP, - RTE_FLOW_ITEM_TYPE_RAW, - RTE_FLOW_ITEM_TYPE_RAW, - RTE_FLOW_ITEM_TYPE_END, -}; - -static enum rte_flow_item_type pattern_fdir_ipv4_tcp_raw_3[] = { - RTE_FLOW_ITEM_TYPE_ETH, - RTE_FLOW_ITEM_TYPE_IPV4, - RTE_FLOW_ITEM_TYPE_TCP, - RTE_FLOW_ITEM_TYPE_RAW, - RTE_FLOW_ITEM_TYPE_RAW, - RTE_FLOW_ITEM_TYPE_RAW, - RTE_FLOW_ITEM_TYPE_END, -}; - -static enum rte_flow_item_type pattern_fdir_ipv4_sctp_raw_1[] = { - RTE_FLOW_ITEM_TYPE_ETH, - RTE_FLOW_ITEM_TYPE_IPV4, - RTE_FLOW_ITEM_TYPE_SCTP, - RTE_FLOW_ITEM_TYPE_RAW, - RTE_FLOW_ITEM_TYPE_END, -}; - -static enum rte_flow_item_type pattern_fdir_ipv4_sctp_raw_2[] = { - RTE_FLOW_ITEM_TYPE_ETH, - RTE_FLOW_ITEM_TYPE_IPV4, - RTE_FLOW_ITEM_TYPE_SCTP, - RTE_FLOW_ITEM_TYPE_RAW, - RTE_FLOW_ITEM_TYPE_RAW, - RTE_FLOW_ITEM_TYPE_END, -}; - -static enum rte_flow_item_type pattern_fdir_ipv4_sctp_raw_3[] = { - RTE_FLOW_ITEM_TYPE_ETH, - RTE_FLOW_ITEM_TYPE_IPV4, - RTE_FLOW_ITEM_TYPE_SCTP, - RTE_FLOW_ITEM_TYPE_RAW, - RTE_FLOW_ITEM_TYPE_RAW, - RTE_FLOW_ITEM_TYPE_RAW, - RTE_FLOW_ITEM_TYPE_END, -}; - -static enum rte_flow_item_type pattern_fdir_ipv6_raw_1[] = { - RTE_FLOW_ITEM_TYPE_ETH, - RTE_FLOW_ITEM_TYPE_IPV6, - RTE_FLOW_ITEM_TYPE_RAW, - RTE_FLOW_ITEM_TYPE_END, -}; - -static enum rte_flow_item_type pattern_fdir_ipv6_raw_2[] = { - RTE_FLOW_ITEM_TYPE_ETH, - RTE_FLOW_ITEM_TYPE_IPV6, - RTE_FLOW_ITEM_TYPE_RAW, - RTE_FLOW_ITEM_TYPE_RAW, - RTE_FLOW_ITEM_TYPE_END, -}; - -static enum rte_flow_item_type pattern_fdir_ipv6_raw_3[] = { - RTE_FLOW_ITEM_TYPE_ETH, - RTE_FLOW_ITEM_TYPE_IPV6, - RTE_FLOW_ITEM_TYPE_RAW, - RTE_FLOW_ITEM_TYPE_RAW, - RTE_FLOW_ITEM_TYPE_RAW, - RTE_FLOW_ITEM_TYPE_END, -}; - -static enum rte_flow_item_type pattern_fdir_ipv6_udp_raw_1[] = { - RTE_FLOW_ITEM_TYPE_ETH, - RTE_FLOW_ITEM_TYPE_IPV6, - RTE_FLOW_ITEM_TYPE_UDP, - RTE_FLOW_ITEM_TYPE_RAW, - RTE_FLOW_ITEM_TYPE_END, -}; - -static enum rte_flow_item_type pattern_fdir_ipv6_udp_raw_2[] = { - RTE_FLOW_ITEM_TYPE_ETH, - RTE_FLOW_ITEM_TYPE_IPV6, - RTE_FLOW_ITEM_TYPE_UDP, - RTE_FLOW_ITEM_TYPE_RAW, - RTE_FLOW_ITEM_TYPE_RAW, - RTE_FLOW_ITEM_TYPE_END, -}; - -static enum rte_flow_item_type pattern_fdir_ipv6_udp_raw_3[] = { - RTE_FLOW_ITEM_TYPE_ETH, - RTE_FLOW_ITEM_TYPE_IPV6, - RTE_FLOW_ITEM_TYPE_UDP, - RTE_FLOW_ITEM_TYPE_RAW, - RTE_FLOW_ITEM_TYPE_RAW, - RTE_FLOW_ITEM_TYPE_RAW, - RTE_FLOW_ITEM_TYPE_END, -}; - -static enum rte_flow_item_type pattern_fdir_ipv6_tcp_raw_1[] = { - RTE_FLOW_ITEM_TYPE_ETH, - RTE_FLOW_ITEM_TYPE_IPV6, - RTE_FLOW_ITEM_TYPE_TCP, - RTE_FLOW_ITEM_TYPE_RAW, - RTE_FLOW_ITEM_TYPE_END, -}; - -static enum rte_flow_item_type pattern_fdir_ipv6_tcp_raw_2[] = { - RTE_FLOW_ITEM_TYPE_ETH, - RTE_FLOW_ITEM_TYPE_IPV6, - RTE_FLOW_ITEM_TYPE_TCP, - RTE_FLOW_ITEM_TYPE_RAW, - RTE_FLOW_ITEM_TYPE_RAW, - RTE_FLOW_ITEM_TYPE_END, -}; - -static enum rte_flow_item_type pattern_fdir_ipv6_tcp_raw_3[] = { - RTE_FLOW_ITEM_TYPE_ETH, - RTE_FLOW_ITEM_TYPE_IPV6, - RTE_FLOW_ITEM_TYPE_TCP, - RTE_FLOW_ITEM_TYPE_RAW, - RTE_FLOW_ITEM_TYPE_RAW, - RTE_FLOW_ITEM_TYPE_RAW, - RTE_FLOW_ITEM_TYPE_END, -}; - -static enum rte_flow_item_type pattern_fdir_ipv6_sctp_raw_1[] = { - RTE_FLOW_ITEM_TYPE_ETH, - RTE_FLOW_ITEM_TYPE_IPV6, - RTE_FLOW_ITEM_TYPE_SCTP, - RTE_FLOW_ITEM_TYPE_RAW, - RTE_FLOW_ITEM_TYPE_END, -}; - -static enum rte_flow_item_type pattern_fdir_ipv6_sctp_raw_2[] = { - RTE_FLOW_ITEM_TYPE_ETH, - RTE_FLOW_ITEM_TYPE_IPV6, - RTE_FLOW_ITEM_TYPE_SCTP, - RTE_FLOW_ITEM_TYPE_RAW, - RTE_FLOW_ITEM_TYPE_RAW, - RTE_FLOW_ITEM_TYPE_END, -}; - -static enum rte_flow_item_type pattern_fdir_ipv6_sctp_raw_3[] = { - RTE_FLOW_ITEM_TYPE_ETH, - RTE_FLOW_ITEM_TYPE_IPV6, - RTE_FLOW_ITEM_TYPE_SCTP, - RTE_FLOW_ITEM_TYPE_RAW, - RTE_FLOW_ITEM_TYPE_RAW, - RTE_FLOW_ITEM_TYPE_RAW, - RTE_FLOW_ITEM_TYPE_END, -}; - -static enum rte_flow_item_type pattern_fdir_ethertype_vlan[] = { - RTE_FLOW_ITEM_TYPE_ETH, - RTE_FLOW_ITEM_TYPE_VLAN, - RTE_FLOW_ITEM_TYPE_END, -}; - -static enum rte_flow_item_type pattern_fdir_vlan_ipv4[] = { - RTE_FLOW_ITEM_TYPE_ETH, - RTE_FLOW_ITEM_TYPE_VLAN, - RTE_FLOW_ITEM_TYPE_IPV4, - RTE_FLOW_ITEM_TYPE_END, -}; - -static enum rte_flow_item_type pattern_fdir_vlan_ipv4_udp[] = { - RTE_FLOW_ITEM_TYPE_ETH, - RTE_FLOW_ITEM_TYPE_VLAN, - RTE_FLOW_ITEM_TYPE_IPV4, - RTE_FLOW_ITEM_TYPE_UDP, - RTE_FLOW_ITEM_TYPE_END, -}; - -static enum rte_flow_item_type pattern_fdir_vlan_ipv4_tcp[] = { - RTE_FLOW_ITEM_TYPE_ETH, - RTE_FLOW_ITEM_TYPE_VLAN, - RTE_FLOW_ITEM_TYPE_IPV4, - RTE_FLOW_ITEM_TYPE_TCP, - RTE_FLOW_ITEM_TYPE_END, -}; - -static enum rte_flow_item_type pattern_fdir_vlan_ipv4_sctp[] = { - RTE_FLOW_ITEM_TYPE_ETH, - RTE_FLOW_ITEM_TYPE_VLAN, - RTE_FLOW_ITEM_TYPE_IPV4, - RTE_FLOW_ITEM_TYPE_SCTP, - RTE_FLOW_ITEM_TYPE_END, -}; - -static enum rte_flow_item_type pattern_fdir_vlan_ipv6[] = { - RTE_FLOW_ITEM_TYPE_ETH, - RTE_FLOW_ITEM_TYPE_VLAN, - RTE_FLOW_ITEM_TYPE_IPV6, - RTE_FLOW_ITEM_TYPE_END, -}; - -static enum rte_flow_item_type pattern_fdir_vlan_ipv6_udp[] = { - RTE_FLOW_ITEM_TYPE_ETH, - RTE_FLOW_ITEM_TYPE_VLAN, - RTE_FLOW_ITEM_TYPE_IPV6, - RTE_FLOW_ITEM_TYPE_UDP, - RTE_FLOW_ITEM_TYPE_END, -}; - -static enum rte_flow_item_type pattern_fdir_vlan_ipv6_tcp[] = { - RTE_FLOW_ITEM_TYPE_ETH, - RTE_FLOW_ITEM_TYPE_VLAN, - RTE_FLOW_ITEM_TYPE_IPV6, - RTE_FLOW_ITEM_TYPE_TCP, - RTE_FLOW_ITEM_TYPE_END, -}; - -static enum rte_flow_item_type pattern_fdir_vlan_ipv6_sctp[] = { - RTE_FLOW_ITEM_TYPE_ETH, - RTE_FLOW_ITEM_TYPE_VLAN, - RTE_FLOW_ITEM_TYPE_IPV6, - RTE_FLOW_ITEM_TYPE_SCTP, - RTE_FLOW_ITEM_TYPE_END, -}; - -static enum rte_flow_item_type pattern_fdir_ethertype_vlan_raw_1[] = { - RTE_FLOW_ITEM_TYPE_ETH, - RTE_FLOW_ITEM_TYPE_VLAN, - RTE_FLOW_ITEM_TYPE_RAW, - RTE_FLOW_ITEM_TYPE_END, -}; - -static enum rte_flow_item_type pattern_fdir_ethertype_vlan_raw_2[] = { - RTE_FLOW_ITEM_TYPE_ETH, - RTE_FLOW_ITEM_TYPE_VLAN, - RTE_FLOW_ITEM_TYPE_RAW, - RTE_FLOW_ITEM_TYPE_RAW, - RTE_FLOW_ITEM_TYPE_END, -}; - -static enum rte_flow_item_type pattern_fdir_ethertype_vlan_raw_3[] = { - RTE_FLOW_ITEM_TYPE_ETH, - RTE_FLOW_ITEM_TYPE_VLAN, - RTE_FLOW_ITEM_TYPE_RAW, - RTE_FLOW_ITEM_TYPE_RAW, - RTE_FLOW_ITEM_TYPE_RAW, - RTE_FLOW_ITEM_TYPE_END, -}; - -static enum rte_flow_item_type pattern_fdir_vlan_ipv4_raw_1[] = { - RTE_FLOW_ITEM_TYPE_ETH, - RTE_FLOW_ITEM_TYPE_VLAN, - RTE_FLOW_ITEM_TYPE_IPV4, - RTE_FLOW_ITEM_TYPE_RAW, - RTE_FLOW_ITEM_TYPE_END, -}; - -static enum rte_flow_item_type pattern_fdir_vlan_ipv4_raw_2[] = { - RTE_FLOW_ITEM_TYPE_ETH, - RTE_FLOW_ITEM_TYPE_VLAN, - RTE_FLOW_ITEM_TYPE_IPV4, - RTE_FLOW_ITEM_TYPE_RAW, - RTE_FLOW_ITEM_TYPE_RAW, - RTE_FLOW_ITEM_TYPE_END, -}; - -static enum rte_flow_item_type pattern_fdir_vlan_ipv4_raw_3[] = { - RTE_FLOW_ITEM_TYPE_ETH, - RTE_FLOW_ITEM_TYPE_VLAN, - RTE_FLOW_ITEM_TYPE_IPV4, - RTE_FLOW_ITEM_TYPE_RAW, - RTE_FLOW_ITEM_TYPE_RAW, - RTE_FLOW_ITEM_TYPE_RAW, - RTE_FLOW_ITEM_TYPE_END, -}; - -static enum rte_flow_item_type pattern_fdir_vlan_ipv4_udp_raw_1[] = { - RTE_FLOW_ITEM_TYPE_ETH, - RTE_FLOW_ITEM_TYPE_VLAN, - RTE_FLOW_ITEM_TYPE_IPV4, - RTE_FLOW_ITEM_TYPE_UDP, - RTE_FLOW_ITEM_TYPE_RAW, - RTE_FLOW_ITEM_TYPE_END, -}; - -static enum rte_flow_item_type pattern_fdir_vlan_ipv4_udp_raw_2[] = { - RTE_FLOW_ITEM_TYPE_ETH, - RTE_FLOW_ITEM_TYPE_VLAN, - RTE_FLOW_ITEM_TYPE_IPV4, - RTE_FLOW_ITEM_TYPE_UDP, - RTE_FLOW_ITEM_TYPE_RAW, - RTE_FLOW_ITEM_TYPE_RAW, - RTE_FLOW_ITEM_TYPE_END, -}; +/* internal pattern w/o VOID items */ +struct rte_flow_item g_items[32]; -static enum rte_flow_item_type pattern_fdir_vlan_ipv4_udp_raw_3[] = { +/* Pattern matched ethertype filter */ +static enum rte_flow_item_type pattern_ethertype[] = { RTE_FLOW_ITEM_TYPE_ETH, - RTE_FLOW_ITEM_TYPE_VLAN, - RTE_FLOW_ITEM_TYPE_IPV4, - RTE_FLOW_ITEM_TYPE_UDP, - RTE_FLOW_ITEM_TYPE_RAW, - RTE_FLOW_ITEM_TYPE_RAW, - RTE_FLOW_ITEM_TYPE_RAW, RTE_FLOW_ITEM_TYPE_END, }; -static enum rte_flow_item_type pattern_fdir_vlan_ipv4_tcp_raw_1[] = { +/* Pattern matched flow director filter */ +static enum rte_flow_item_type pattern_fdir_ipv4[] = { RTE_FLOW_ITEM_TYPE_ETH, - RTE_FLOW_ITEM_TYPE_VLAN, RTE_FLOW_ITEM_TYPE_IPV4, - RTE_FLOW_ITEM_TYPE_TCP, - RTE_FLOW_ITEM_TYPE_RAW, RTE_FLOW_ITEM_TYPE_END, }; -static enum rte_flow_item_type pattern_fdir_vlan_ipv4_tcp_raw_2[] = { +static enum rte_flow_item_type pattern_fdir_ipv4_udp[] = { RTE_FLOW_ITEM_TYPE_ETH, - RTE_FLOW_ITEM_TYPE_VLAN, RTE_FLOW_ITEM_TYPE_IPV4, - RTE_FLOW_ITEM_TYPE_TCP, - RTE_FLOW_ITEM_TYPE_RAW, - RTE_FLOW_ITEM_TYPE_RAW, + RTE_FLOW_ITEM_TYPE_UDP, RTE_FLOW_ITEM_TYPE_END, }; -static enum rte_flow_item_type pattern_fdir_vlan_ipv4_tcp_raw_3[] = { +static enum rte_flow_item_type pattern_fdir_ipv4_tcp[] = { RTE_FLOW_ITEM_TYPE_ETH, - RTE_FLOW_ITEM_TYPE_VLAN, RTE_FLOW_ITEM_TYPE_IPV4, RTE_FLOW_ITEM_TYPE_TCP, - RTE_FLOW_ITEM_TYPE_RAW, - RTE_FLOW_ITEM_TYPE_RAW, - RTE_FLOW_ITEM_TYPE_RAW, RTE_FLOW_ITEM_TYPE_END, }; -static enum rte_flow_item_type pattern_fdir_vlan_ipv4_sctp_raw_1[] = { +static enum rte_flow_item_type pattern_fdir_ipv4_sctp[] = { RTE_FLOW_ITEM_TYPE_ETH, - RTE_FLOW_ITEM_TYPE_VLAN, RTE_FLOW_ITEM_TYPE_IPV4, RTE_FLOW_ITEM_TYPE_SCTP, - RTE_FLOW_ITEM_TYPE_RAW, RTE_FLOW_ITEM_TYPE_END, }; -static enum rte_flow_item_type pattern_fdir_vlan_ipv4_sctp_raw_2[] = { +static enum rte_flow_item_type pattern_fdir_ipv4_gtpc[] = { RTE_FLOW_ITEM_TYPE_ETH, - RTE_FLOW_ITEM_TYPE_VLAN, RTE_FLOW_ITEM_TYPE_IPV4, - RTE_FLOW_ITEM_TYPE_SCTP, - RTE_FLOW_ITEM_TYPE_RAW, - RTE_FLOW_ITEM_TYPE_RAW, + RTE_FLOW_ITEM_TYPE_UDP, + RTE_FLOW_ITEM_TYPE_GTPC, RTE_FLOW_ITEM_TYPE_END, }; -static enum rte_flow_item_type pattern_fdir_vlan_ipv4_sctp_raw_3[] = { +static enum rte_flow_item_type pattern_fdir_ipv4_gtpu[] = { RTE_FLOW_ITEM_TYPE_ETH, - RTE_FLOW_ITEM_TYPE_VLAN, RTE_FLOW_ITEM_TYPE_IPV4, - RTE_FLOW_ITEM_TYPE_SCTP, - RTE_FLOW_ITEM_TYPE_RAW, - RTE_FLOW_ITEM_TYPE_RAW, - RTE_FLOW_ITEM_TYPE_RAW, - RTE_FLOW_ITEM_TYPE_END, -}; - -static enum rte_flow_item_type pattern_fdir_vlan_ipv6_raw_1[] = { - RTE_FLOW_ITEM_TYPE_ETH, - RTE_FLOW_ITEM_TYPE_VLAN, - RTE_FLOW_ITEM_TYPE_IPV6, - RTE_FLOW_ITEM_TYPE_RAW, - RTE_FLOW_ITEM_TYPE_END, -}; - -static enum rte_flow_item_type pattern_fdir_vlan_ipv6_raw_2[] = { - RTE_FLOW_ITEM_TYPE_ETH, - RTE_FLOW_ITEM_TYPE_VLAN, - RTE_FLOW_ITEM_TYPE_IPV6, - RTE_FLOW_ITEM_TYPE_RAW, - RTE_FLOW_ITEM_TYPE_RAW, - RTE_FLOW_ITEM_TYPE_END, -}; - -static enum rte_flow_item_type pattern_fdir_vlan_ipv6_raw_3[] = { - RTE_FLOW_ITEM_TYPE_ETH, - RTE_FLOW_ITEM_TYPE_VLAN, - RTE_FLOW_ITEM_TYPE_IPV6, - RTE_FLOW_ITEM_TYPE_RAW, - RTE_FLOW_ITEM_TYPE_RAW, - RTE_FLOW_ITEM_TYPE_RAW, - RTE_FLOW_ITEM_TYPE_END, -}; - -static enum rte_flow_item_type pattern_fdir_vlan_ipv6_udp_raw_1[] = { - RTE_FLOW_ITEM_TYPE_ETH, - RTE_FLOW_ITEM_TYPE_VLAN, - RTE_FLOW_ITEM_TYPE_IPV6, RTE_FLOW_ITEM_TYPE_UDP, - RTE_FLOW_ITEM_TYPE_RAW, + RTE_FLOW_ITEM_TYPE_GTPU, RTE_FLOW_ITEM_TYPE_END, }; -static enum rte_flow_item_type pattern_fdir_vlan_ipv6_udp_raw_2[] = { +static enum rte_flow_item_type pattern_fdir_ipv4_gtpu_ipv4[] = { RTE_FLOW_ITEM_TYPE_ETH, - RTE_FLOW_ITEM_TYPE_VLAN, - RTE_FLOW_ITEM_TYPE_IPV6, + RTE_FLOW_ITEM_TYPE_IPV4, RTE_FLOW_ITEM_TYPE_UDP, - RTE_FLOW_ITEM_TYPE_RAW, - RTE_FLOW_ITEM_TYPE_RAW, + RTE_FLOW_ITEM_TYPE_GTPU, + RTE_FLOW_ITEM_TYPE_IPV4, RTE_FLOW_ITEM_TYPE_END, }; -static enum rte_flow_item_type pattern_fdir_vlan_ipv6_udp_raw_3[] = { +static enum rte_flow_item_type pattern_fdir_ipv4_gtpu_ipv6[] = { RTE_FLOW_ITEM_TYPE_ETH, - RTE_FLOW_ITEM_TYPE_VLAN, - RTE_FLOW_ITEM_TYPE_IPV6, + RTE_FLOW_ITEM_TYPE_IPV4, RTE_FLOW_ITEM_TYPE_UDP, - RTE_FLOW_ITEM_TYPE_RAW, - RTE_FLOW_ITEM_TYPE_RAW, - RTE_FLOW_ITEM_TYPE_RAW, - RTE_FLOW_ITEM_TYPE_END, -}; - -static enum rte_flow_item_type pattern_fdir_vlan_ipv6_tcp_raw_1[] = { - RTE_FLOW_ITEM_TYPE_ETH, - RTE_FLOW_ITEM_TYPE_VLAN, + RTE_FLOW_ITEM_TYPE_GTPU, RTE_FLOW_ITEM_TYPE_IPV6, - RTE_FLOW_ITEM_TYPE_TCP, - RTE_FLOW_ITEM_TYPE_RAW, RTE_FLOW_ITEM_TYPE_END, }; -static enum rte_flow_item_type pattern_fdir_vlan_ipv6_tcp_raw_2[] = { +static enum rte_flow_item_type pattern_fdir_ipv6[] = { RTE_FLOW_ITEM_TYPE_ETH, - RTE_FLOW_ITEM_TYPE_VLAN, RTE_FLOW_ITEM_TYPE_IPV6, - RTE_FLOW_ITEM_TYPE_TCP, - RTE_FLOW_ITEM_TYPE_RAW, - RTE_FLOW_ITEM_TYPE_RAW, RTE_FLOW_ITEM_TYPE_END, }; -static enum rte_flow_item_type pattern_fdir_vlan_ipv6_tcp_raw_3[] = { +static enum rte_flow_item_type pattern_fdir_ipv6_udp[] = { RTE_FLOW_ITEM_TYPE_ETH, - RTE_FLOW_ITEM_TYPE_VLAN, RTE_FLOW_ITEM_TYPE_IPV6, - RTE_FLOW_ITEM_TYPE_TCP, - RTE_FLOW_ITEM_TYPE_RAW, - RTE_FLOW_ITEM_TYPE_RAW, - RTE_FLOW_ITEM_TYPE_RAW, + RTE_FLOW_ITEM_TYPE_UDP, RTE_FLOW_ITEM_TYPE_END, }; -static enum rte_flow_item_type pattern_fdir_vlan_ipv6_sctp_raw_1[] = { +static enum rte_flow_item_type pattern_fdir_ipv6_tcp[] = { RTE_FLOW_ITEM_TYPE_ETH, - RTE_FLOW_ITEM_TYPE_VLAN, RTE_FLOW_ITEM_TYPE_IPV6, - RTE_FLOW_ITEM_TYPE_SCTP, - RTE_FLOW_ITEM_TYPE_RAW, + RTE_FLOW_ITEM_TYPE_TCP, RTE_FLOW_ITEM_TYPE_END, }; -static enum rte_flow_item_type pattern_fdir_vlan_ipv6_sctp_raw_2[] = { +static enum rte_flow_item_type pattern_fdir_ipv6_sctp[] = { RTE_FLOW_ITEM_TYPE_ETH, - RTE_FLOW_ITEM_TYPE_VLAN, RTE_FLOW_ITEM_TYPE_IPV6, RTE_FLOW_ITEM_TYPE_SCTP, - RTE_FLOW_ITEM_TYPE_RAW, - RTE_FLOW_ITEM_TYPE_RAW, RTE_FLOW_ITEM_TYPE_END, }; -static enum rte_flow_item_type pattern_fdir_vlan_ipv6_sctp_raw_3[] = { +static enum rte_flow_item_type pattern_fdir_ipv6_gtpc[] = { RTE_FLOW_ITEM_TYPE_ETH, - RTE_FLOW_ITEM_TYPE_VLAN, RTE_FLOW_ITEM_TYPE_IPV6, - RTE_FLOW_ITEM_TYPE_SCTP, - RTE_FLOW_ITEM_TYPE_RAW, - RTE_FLOW_ITEM_TYPE_RAW, - RTE_FLOW_ITEM_TYPE_RAW, - RTE_FLOW_ITEM_TYPE_END, -}; - -static enum rte_flow_item_type pattern_fdir_ipv4_vf[] = { - RTE_FLOW_ITEM_TYPE_ETH, - RTE_FLOW_ITEM_TYPE_IPV4, - RTE_FLOW_ITEM_TYPE_VF, - RTE_FLOW_ITEM_TYPE_END, -}; - -static enum rte_flow_item_type pattern_fdir_ipv4_udp_vf[] = { - RTE_FLOW_ITEM_TYPE_ETH, - RTE_FLOW_ITEM_TYPE_IPV4, RTE_FLOW_ITEM_TYPE_UDP, - RTE_FLOW_ITEM_TYPE_VF, - RTE_FLOW_ITEM_TYPE_END, -}; - -static enum rte_flow_item_type pattern_fdir_ipv4_tcp_vf[] = { - RTE_FLOW_ITEM_TYPE_ETH, - RTE_FLOW_ITEM_TYPE_IPV4, - RTE_FLOW_ITEM_TYPE_TCP, - RTE_FLOW_ITEM_TYPE_VF, - RTE_FLOW_ITEM_TYPE_END, -}; - -static enum rte_flow_item_type pattern_fdir_ipv4_sctp_vf[] = { - RTE_FLOW_ITEM_TYPE_ETH, - RTE_FLOW_ITEM_TYPE_IPV4, - RTE_FLOW_ITEM_TYPE_SCTP, - RTE_FLOW_ITEM_TYPE_VF, + RTE_FLOW_ITEM_TYPE_GTPC, RTE_FLOW_ITEM_TYPE_END, }; -static enum rte_flow_item_type pattern_fdir_ipv6_vf[] = { +static enum rte_flow_item_type pattern_fdir_ipv6_gtpu[] = { RTE_FLOW_ITEM_TYPE_ETH, RTE_FLOW_ITEM_TYPE_IPV6, - RTE_FLOW_ITEM_TYPE_VF, + RTE_FLOW_ITEM_TYPE_UDP, + RTE_FLOW_ITEM_TYPE_GTPU, RTE_FLOW_ITEM_TYPE_END, }; -static enum rte_flow_item_type pattern_fdir_ipv6_udp_vf[] = { +static enum rte_flow_item_type pattern_fdir_ipv6_gtpu_ipv4[] = { RTE_FLOW_ITEM_TYPE_ETH, RTE_FLOW_ITEM_TYPE_IPV6, RTE_FLOW_ITEM_TYPE_UDP, - RTE_FLOW_ITEM_TYPE_VF, + RTE_FLOW_ITEM_TYPE_GTPU, + RTE_FLOW_ITEM_TYPE_IPV4, RTE_FLOW_ITEM_TYPE_END, }; -static enum rte_flow_item_type pattern_fdir_ipv6_tcp_vf[] = { +static enum rte_flow_item_type pattern_fdir_ipv6_gtpu_ipv6[] = { RTE_FLOW_ITEM_TYPE_ETH, RTE_FLOW_ITEM_TYPE_IPV6, - RTE_FLOW_ITEM_TYPE_TCP, - RTE_FLOW_ITEM_TYPE_VF, - RTE_FLOW_ITEM_TYPE_END, -}; - -static enum rte_flow_item_type pattern_fdir_ipv6_sctp_vf[] = { - RTE_FLOW_ITEM_TYPE_ETH, + RTE_FLOW_ITEM_TYPE_UDP, + RTE_FLOW_ITEM_TYPE_GTPU, RTE_FLOW_ITEM_TYPE_IPV6, - RTE_FLOW_ITEM_TYPE_SCTP, - RTE_FLOW_ITEM_TYPE_VF, RTE_FLOW_ITEM_TYPE_END, }; -static enum rte_flow_item_type pattern_fdir_ethertype_raw_1_vf[] = { +static enum rte_flow_item_type pattern_fdir_ethertype_raw_1[] = { RTE_FLOW_ITEM_TYPE_ETH, RTE_FLOW_ITEM_TYPE_RAW, - RTE_FLOW_ITEM_TYPE_VF, RTE_FLOW_ITEM_TYPE_END, }; -static enum rte_flow_item_type pattern_fdir_ethertype_raw_2_vf[] = { +static enum rte_flow_item_type pattern_fdir_ethertype_raw_2[] = { RTE_FLOW_ITEM_TYPE_ETH, RTE_FLOW_ITEM_TYPE_RAW, RTE_FLOW_ITEM_TYPE_RAW, - RTE_FLOW_ITEM_TYPE_VF, RTE_FLOW_ITEM_TYPE_END, }; -static enum rte_flow_item_type pattern_fdir_ethertype_raw_3_vf[] = { +static enum rte_flow_item_type pattern_fdir_ethertype_raw_3[] = { RTE_FLOW_ITEM_TYPE_ETH, RTE_FLOW_ITEM_TYPE_RAW, RTE_FLOW_ITEM_TYPE_RAW, RTE_FLOW_ITEM_TYPE_RAW, - RTE_FLOW_ITEM_TYPE_VF, RTE_FLOW_ITEM_TYPE_END, }; -static enum rte_flow_item_type pattern_fdir_ipv4_raw_1_vf[] = { +static enum rte_flow_item_type pattern_fdir_ipv4_raw_1[] = { RTE_FLOW_ITEM_TYPE_ETH, RTE_FLOW_ITEM_TYPE_IPV4, RTE_FLOW_ITEM_TYPE_RAW, - RTE_FLOW_ITEM_TYPE_VF, RTE_FLOW_ITEM_TYPE_END, }; -static enum rte_flow_item_type pattern_fdir_ipv4_raw_2_vf[] = { +static enum rte_flow_item_type pattern_fdir_ipv4_raw_2[] = { RTE_FLOW_ITEM_TYPE_ETH, RTE_FLOW_ITEM_TYPE_IPV4, RTE_FLOW_ITEM_TYPE_RAW, RTE_FLOW_ITEM_TYPE_RAW, - RTE_FLOW_ITEM_TYPE_VF, RTE_FLOW_ITEM_TYPE_END, }; -static enum rte_flow_item_type pattern_fdir_ipv4_raw_3_vf[] = { +static enum rte_flow_item_type pattern_fdir_ipv4_raw_3[] = { RTE_FLOW_ITEM_TYPE_ETH, RTE_FLOW_ITEM_TYPE_IPV4, RTE_FLOW_ITEM_TYPE_RAW, RTE_FLOW_ITEM_TYPE_RAW, RTE_FLOW_ITEM_TYPE_RAW, - RTE_FLOW_ITEM_TYPE_VF, RTE_FLOW_ITEM_TYPE_END, }; -static enum rte_flow_item_type pattern_fdir_ipv4_udp_raw_1_vf[] = { +static enum rte_flow_item_type pattern_fdir_ipv4_udp_raw_1[] = { RTE_FLOW_ITEM_TYPE_ETH, RTE_FLOW_ITEM_TYPE_IPV4, RTE_FLOW_ITEM_TYPE_UDP, RTE_FLOW_ITEM_TYPE_RAW, - RTE_FLOW_ITEM_TYPE_VF, RTE_FLOW_ITEM_TYPE_END, }; -static enum rte_flow_item_type pattern_fdir_ipv4_udp_raw_2_vf[] = { +static enum rte_flow_item_type pattern_fdir_ipv4_udp_raw_2[] = { RTE_FLOW_ITEM_TYPE_ETH, RTE_FLOW_ITEM_TYPE_IPV4, RTE_FLOW_ITEM_TYPE_UDP, RTE_FLOW_ITEM_TYPE_RAW, RTE_FLOW_ITEM_TYPE_RAW, - RTE_FLOW_ITEM_TYPE_VF, RTE_FLOW_ITEM_TYPE_END, }; -static enum rte_flow_item_type pattern_fdir_ipv4_udp_raw_3_vf[] = { +static enum rte_flow_item_type pattern_fdir_ipv4_udp_raw_3[] = { RTE_FLOW_ITEM_TYPE_ETH, RTE_FLOW_ITEM_TYPE_IPV4, RTE_FLOW_ITEM_TYPE_UDP, RTE_FLOW_ITEM_TYPE_RAW, RTE_FLOW_ITEM_TYPE_RAW, RTE_FLOW_ITEM_TYPE_RAW, - RTE_FLOW_ITEM_TYPE_VF, RTE_FLOW_ITEM_TYPE_END, }; -static enum rte_flow_item_type pattern_fdir_ipv4_tcp_raw_1_vf[] = { +static enum rte_flow_item_type pattern_fdir_ipv4_tcp_raw_1[] = { RTE_FLOW_ITEM_TYPE_ETH, RTE_FLOW_ITEM_TYPE_IPV4, RTE_FLOW_ITEM_TYPE_TCP, RTE_FLOW_ITEM_TYPE_RAW, - RTE_FLOW_ITEM_TYPE_VF, RTE_FLOW_ITEM_TYPE_END, }; -static enum rte_flow_item_type pattern_fdir_ipv4_tcp_raw_2_vf[] = { +static enum rte_flow_item_type pattern_fdir_ipv4_tcp_raw_2[] = { RTE_FLOW_ITEM_TYPE_ETH, RTE_FLOW_ITEM_TYPE_IPV4, RTE_FLOW_ITEM_TYPE_TCP, RTE_FLOW_ITEM_TYPE_RAW, RTE_FLOW_ITEM_TYPE_RAW, - RTE_FLOW_ITEM_TYPE_VF, RTE_FLOW_ITEM_TYPE_END, }; -static enum rte_flow_item_type pattern_fdir_ipv4_tcp_raw_3_vf[] = { +static enum rte_flow_item_type pattern_fdir_ipv4_tcp_raw_3[] = { RTE_FLOW_ITEM_TYPE_ETH, RTE_FLOW_ITEM_TYPE_IPV4, RTE_FLOW_ITEM_TYPE_TCP, RTE_FLOW_ITEM_TYPE_RAW, RTE_FLOW_ITEM_TYPE_RAW, RTE_FLOW_ITEM_TYPE_RAW, - RTE_FLOW_ITEM_TYPE_VF, RTE_FLOW_ITEM_TYPE_END, }; -static enum rte_flow_item_type pattern_fdir_ipv4_sctp_raw_1_vf[] = { +static enum rte_flow_item_type pattern_fdir_ipv4_sctp_raw_1[] = { RTE_FLOW_ITEM_TYPE_ETH, RTE_FLOW_ITEM_TYPE_IPV4, RTE_FLOW_ITEM_TYPE_SCTP, RTE_FLOW_ITEM_TYPE_RAW, - RTE_FLOW_ITEM_TYPE_VF, RTE_FLOW_ITEM_TYPE_END, }; -static enum rte_flow_item_type pattern_fdir_ipv4_sctp_raw_2_vf[] = { +static enum rte_flow_item_type pattern_fdir_ipv4_sctp_raw_2[] = { RTE_FLOW_ITEM_TYPE_ETH, RTE_FLOW_ITEM_TYPE_IPV4, RTE_FLOW_ITEM_TYPE_SCTP, RTE_FLOW_ITEM_TYPE_RAW, RTE_FLOW_ITEM_TYPE_RAW, - RTE_FLOW_ITEM_TYPE_VF, RTE_FLOW_ITEM_TYPE_END, }; -static enum rte_flow_item_type pattern_fdir_ipv4_sctp_raw_3_vf[] = { +static enum rte_flow_item_type pattern_fdir_ipv4_sctp_raw_3[] = { RTE_FLOW_ITEM_TYPE_ETH, RTE_FLOW_ITEM_TYPE_IPV4, RTE_FLOW_ITEM_TYPE_SCTP, RTE_FLOW_ITEM_TYPE_RAW, RTE_FLOW_ITEM_TYPE_RAW, RTE_FLOW_ITEM_TYPE_RAW, - RTE_FLOW_ITEM_TYPE_VF, RTE_FLOW_ITEM_TYPE_END, }; -static enum rte_flow_item_type pattern_fdir_ipv6_raw_1_vf[] = { +static enum rte_flow_item_type pattern_fdir_ipv6_raw_1[] = { RTE_FLOW_ITEM_TYPE_ETH, RTE_FLOW_ITEM_TYPE_IPV6, RTE_FLOW_ITEM_TYPE_RAW, - RTE_FLOW_ITEM_TYPE_VF, RTE_FLOW_ITEM_TYPE_END, }; -static enum rte_flow_item_type pattern_fdir_ipv6_raw_2_vf[] = { +static enum rte_flow_item_type pattern_fdir_ipv6_raw_2[] = { RTE_FLOW_ITEM_TYPE_ETH, RTE_FLOW_ITEM_TYPE_IPV6, RTE_FLOW_ITEM_TYPE_RAW, RTE_FLOW_ITEM_TYPE_RAW, - RTE_FLOW_ITEM_TYPE_VF, RTE_FLOW_ITEM_TYPE_END, }; -static enum rte_flow_item_type pattern_fdir_ipv6_raw_3_vf[] = { +static enum rte_flow_item_type pattern_fdir_ipv6_raw_3[] = { RTE_FLOW_ITEM_TYPE_ETH, RTE_FLOW_ITEM_TYPE_IPV6, RTE_FLOW_ITEM_TYPE_RAW, RTE_FLOW_ITEM_TYPE_RAW, RTE_FLOW_ITEM_TYPE_RAW, - RTE_FLOW_ITEM_TYPE_VF, RTE_FLOW_ITEM_TYPE_END, }; -static enum rte_flow_item_type pattern_fdir_ipv6_udp_raw_1_vf[] = { +static enum rte_flow_item_type pattern_fdir_ipv6_udp_raw_1[] = { RTE_FLOW_ITEM_TYPE_ETH, RTE_FLOW_ITEM_TYPE_IPV6, RTE_FLOW_ITEM_TYPE_UDP, RTE_FLOW_ITEM_TYPE_RAW, - RTE_FLOW_ITEM_TYPE_VF, RTE_FLOW_ITEM_TYPE_END, }; -static enum rte_flow_item_type pattern_fdir_ipv6_udp_raw_2_vf[] = { +static enum rte_flow_item_type pattern_fdir_ipv6_udp_raw_2[] = { RTE_FLOW_ITEM_TYPE_ETH, RTE_FLOW_ITEM_TYPE_IPV6, RTE_FLOW_ITEM_TYPE_UDP, RTE_FLOW_ITEM_TYPE_RAW, RTE_FLOW_ITEM_TYPE_RAW, - RTE_FLOW_ITEM_TYPE_VF, RTE_FLOW_ITEM_TYPE_END, }; -static enum rte_flow_item_type pattern_fdir_ipv6_udp_raw_3_vf[] = { +static enum rte_flow_item_type pattern_fdir_ipv6_udp_raw_3[] = { RTE_FLOW_ITEM_TYPE_ETH, RTE_FLOW_ITEM_TYPE_IPV6, RTE_FLOW_ITEM_TYPE_UDP, RTE_FLOW_ITEM_TYPE_RAW, RTE_FLOW_ITEM_TYPE_RAW, RTE_FLOW_ITEM_TYPE_RAW, - RTE_FLOW_ITEM_TYPE_VF, RTE_FLOW_ITEM_TYPE_END, }; -static enum rte_flow_item_type pattern_fdir_ipv6_tcp_raw_1_vf[] = { +static enum rte_flow_item_type pattern_fdir_ipv6_tcp_raw_1[] = { RTE_FLOW_ITEM_TYPE_ETH, RTE_FLOW_ITEM_TYPE_IPV6, RTE_FLOW_ITEM_TYPE_TCP, RTE_FLOW_ITEM_TYPE_RAW, - RTE_FLOW_ITEM_TYPE_VF, RTE_FLOW_ITEM_TYPE_END, }; -static enum rte_flow_item_type pattern_fdir_ipv6_tcp_raw_2_vf[] = { +static enum rte_flow_item_type pattern_fdir_ipv6_tcp_raw_2[] = { RTE_FLOW_ITEM_TYPE_ETH, RTE_FLOW_ITEM_TYPE_IPV6, RTE_FLOW_ITEM_TYPE_TCP, RTE_FLOW_ITEM_TYPE_RAW, RTE_FLOW_ITEM_TYPE_RAW, - RTE_FLOW_ITEM_TYPE_VF, RTE_FLOW_ITEM_TYPE_END, }; -static enum rte_flow_item_type pattern_fdir_ipv6_tcp_raw_3_vf[] = { +static enum rte_flow_item_type pattern_fdir_ipv6_tcp_raw_3[] = { RTE_FLOW_ITEM_TYPE_ETH, RTE_FLOW_ITEM_TYPE_IPV6, RTE_FLOW_ITEM_TYPE_TCP, RTE_FLOW_ITEM_TYPE_RAW, RTE_FLOW_ITEM_TYPE_RAW, RTE_FLOW_ITEM_TYPE_RAW, - RTE_FLOW_ITEM_TYPE_VF, RTE_FLOW_ITEM_TYPE_END, }; -static enum rte_flow_item_type pattern_fdir_ipv6_sctp_raw_1_vf[] = { +static enum rte_flow_item_type pattern_fdir_ipv6_sctp_raw_1[] = { RTE_FLOW_ITEM_TYPE_ETH, RTE_FLOW_ITEM_TYPE_IPV6, RTE_FLOW_ITEM_TYPE_SCTP, RTE_FLOW_ITEM_TYPE_RAW, - RTE_FLOW_ITEM_TYPE_VF, RTE_FLOW_ITEM_TYPE_END, }; -static enum rte_flow_item_type pattern_fdir_ipv6_sctp_raw_2_vf[] = { +static enum rte_flow_item_type pattern_fdir_ipv6_sctp_raw_2[] = { RTE_FLOW_ITEM_TYPE_ETH, RTE_FLOW_ITEM_TYPE_IPV6, RTE_FLOW_ITEM_TYPE_SCTP, RTE_FLOW_ITEM_TYPE_RAW, RTE_FLOW_ITEM_TYPE_RAW, - RTE_FLOW_ITEM_TYPE_VF, RTE_FLOW_ITEM_TYPE_END, }; -static enum rte_flow_item_type pattern_fdir_ipv6_sctp_raw_3_vf[] = { +static enum rte_flow_item_type pattern_fdir_ipv6_sctp_raw_3[] = { RTE_FLOW_ITEM_TYPE_ETH, RTE_FLOW_ITEM_TYPE_IPV6, RTE_FLOW_ITEM_TYPE_SCTP, RTE_FLOW_ITEM_TYPE_RAW, RTE_FLOW_ITEM_TYPE_RAW, RTE_FLOW_ITEM_TYPE_RAW, - RTE_FLOW_ITEM_TYPE_VF, RTE_FLOW_ITEM_TYPE_END, }; -static enum rte_flow_item_type pattern_fdir_ethertype_vlan_vf[] = { +static enum rte_flow_item_type pattern_fdir_ethertype_vlan[] = { RTE_FLOW_ITEM_TYPE_ETH, RTE_FLOW_ITEM_TYPE_VLAN, - RTE_FLOW_ITEM_TYPE_VF, RTE_FLOW_ITEM_TYPE_END, }; -static enum rte_flow_item_type pattern_fdir_vlan_ipv4_vf[] = { +static enum rte_flow_item_type pattern_fdir_vlan_ipv4[] = { RTE_FLOW_ITEM_TYPE_ETH, RTE_FLOW_ITEM_TYPE_VLAN, RTE_FLOW_ITEM_TYPE_IPV4, - RTE_FLOW_ITEM_TYPE_VF, RTE_FLOW_ITEM_TYPE_END, }; -static enum rte_flow_item_type pattern_fdir_vlan_ipv4_udp_vf[] = { +static enum rte_flow_item_type pattern_fdir_vlan_ipv4_udp[] = { RTE_FLOW_ITEM_TYPE_ETH, RTE_FLOW_ITEM_TYPE_VLAN, RTE_FLOW_ITEM_TYPE_IPV4, RTE_FLOW_ITEM_TYPE_UDP, - RTE_FLOW_ITEM_TYPE_VF, RTE_FLOW_ITEM_TYPE_END, }; -static enum rte_flow_item_type pattern_fdir_vlan_ipv4_tcp_vf[] = { +static enum rte_flow_item_type pattern_fdir_vlan_ipv4_tcp[] = { RTE_FLOW_ITEM_TYPE_ETH, RTE_FLOW_ITEM_TYPE_VLAN, RTE_FLOW_ITEM_TYPE_IPV4, RTE_FLOW_ITEM_TYPE_TCP, - RTE_FLOW_ITEM_TYPE_VF, RTE_FLOW_ITEM_TYPE_END, }; -static enum rte_flow_item_type pattern_fdir_vlan_ipv4_sctp_vf[] = { +static enum rte_flow_item_type pattern_fdir_vlan_ipv4_sctp[] = { RTE_FLOW_ITEM_TYPE_ETH, RTE_FLOW_ITEM_TYPE_VLAN, RTE_FLOW_ITEM_TYPE_IPV4, RTE_FLOW_ITEM_TYPE_SCTP, - RTE_FLOW_ITEM_TYPE_VF, RTE_FLOW_ITEM_TYPE_END, }; -static enum rte_flow_item_type pattern_fdir_vlan_ipv6_vf[] = { +static enum rte_flow_item_type pattern_fdir_vlan_ipv6[] = { RTE_FLOW_ITEM_TYPE_ETH, RTE_FLOW_ITEM_TYPE_VLAN, RTE_FLOW_ITEM_TYPE_IPV6, - RTE_FLOW_ITEM_TYPE_VF, RTE_FLOW_ITEM_TYPE_END, }; -static enum rte_flow_item_type pattern_fdir_vlan_ipv6_udp_vf[] = { +static enum rte_flow_item_type pattern_fdir_vlan_ipv6_udp[] = { RTE_FLOW_ITEM_TYPE_ETH, RTE_FLOW_ITEM_TYPE_VLAN, RTE_FLOW_ITEM_TYPE_IPV6, RTE_FLOW_ITEM_TYPE_UDP, - RTE_FLOW_ITEM_TYPE_VF, RTE_FLOW_ITEM_TYPE_END, }; -static enum rte_flow_item_type pattern_fdir_vlan_ipv6_tcp_vf[] = { +static enum rte_flow_item_type pattern_fdir_vlan_ipv6_tcp[] = { RTE_FLOW_ITEM_TYPE_ETH, RTE_FLOW_ITEM_TYPE_VLAN, RTE_FLOW_ITEM_TYPE_IPV6, RTE_FLOW_ITEM_TYPE_TCP, - RTE_FLOW_ITEM_TYPE_VF, RTE_FLOW_ITEM_TYPE_END, }; -static enum rte_flow_item_type pattern_fdir_vlan_ipv6_sctp_vf[] = { +static enum rte_flow_item_type pattern_fdir_vlan_ipv6_sctp[] = { RTE_FLOW_ITEM_TYPE_ETH, RTE_FLOW_ITEM_TYPE_VLAN, RTE_FLOW_ITEM_TYPE_IPV6, RTE_FLOW_ITEM_TYPE_SCTP, - RTE_FLOW_ITEM_TYPE_VF, RTE_FLOW_ITEM_TYPE_END, }; -static enum rte_flow_item_type pattern_fdir_ethertype_vlan_raw_1_vf[] = { +static enum rte_flow_item_type pattern_fdir_ethertype_vlan_raw_1[] = { RTE_FLOW_ITEM_TYPE_ETH, RTE_FLOW_ITEM_TYPE_VLAN, RTE_FLOW_ITEM_TYPE_RAW, - RTE_FLOW_ITEM_TYPE_VF, RTE_FLOW_ITEM_TYPE_END, }; -static enum rte_flow_item_type pattern_fdir_ethertype_vlan_raw_2_vf[] = { +static enum rte_flow_item_type pattern_fdir_ethertype_vlan_raw_2[] = { RTE_FLOW_ITEM_TYPE_ETH, RTE_FLOW_ITEM_TYPE_VLAN, RTE_FLOW_ITEM_TYPE_RAW, RTE_FLOW_ITEM_TYPE_RAW, - RTE_FLOW_ITEM_TYPE_VF, RTE_FLOW_ITEM_TYPE_END, }; -static enum rte_flow_item_type pattern_fdir_ethertype_vlan_raw_3_vf[] = { +static enum rte_flow_item_type pattern_fdir_ethertype_vlan_raw_3[] = { RTE_FLOW_ITEM_TYPE_ETH, RTE_FLOW_ITEM_TYPE_VLAN, RTE_FLOW_ITEM_TYPE_RAW, RTE_FLOW_ITEM_TYPE_RAW, RTE_FLOW_ITEM_TYPE_RAW, - RTE_FLOW_ITEM_TYPE_VF, RTE_FLOW_ITEM_TYPE_END, }; -static enum rte_flow_item_type pattern_fdir_vlan_ipv4_raw_1_vf[] = { +static enum rte_flow_item_type pattern_fdir_vlan_ipv4_raw_1[] = { RTE_FLOW_ITEM_TYPE_ETH, RTE_FLOW_ITEM_TYPE_VLAN, RTE_FLOW_ITEM_TYPE_IPV4, RTE_FLOW_ITEM_TYPE_RAW, - RTE_FLOW_ITEM_TYPE_VF, RTE_FLOW_ITEM_TYPE_END, }; -static enum rte_flow_item_type pattern_fdir_vlan_ipv4_raw_2_vf[] = { +static enum rte_flow_item_type pattern_fdir_vlan_ipv4_raw_2[] = { RTE_FLOW_ITEM_TYPE_ETH, RTE_FLOW_ITEM_TYPE_VLAN, RTE_FLOW_ITEM_TYPE_IPV4, RTE_FLOW_ITEM_TYPE_RAW, RTE_FLOW_ITEM_TYPE_RAW, - RTE_FLOW_ITEM_TYPE_VF, RTE_FLOW_ITEM_TYPE_END, }; -static enum rte_flow_item_type pattern_fdir_vlan_ipv4_raw_3_vf[] = { +static enum rte_flow_item_type pattern_fdir_vlan_ipv4_raw_3[] = { RTE_FLOW_ITEM_TYPE_ETH, RTE_FLOW_ITEM_TYPE_VLAN, RTE_FLOW_ITEM_TYPE_IPV4, RTE_FLOW_ITEM_TYPE_RAW, RTE_FLOW_ITEM_TYPE_RAW, RTE_FLOW_ITEM_TYPE_RAW, - RTE_FLOW_ITEM_TYPE_VF, RTE_FLOW_ITEM_TYPE_END, }; -static enum rte_flow_item_type pattern_fdir_vlan_ipv4_udp_raw_1_vf[] = { +static enum rte_flow_item_type pattern_fdir_vlan_ipv4_udp_raw_1[] = { RTE_FLOW_ITEM_TYPE_ETH, RTE_FLOW_ITEM_TYPE_VLAN, RTE_FLOW_ITEM_TYPE_IPV4, RTE_FLOW_ITEM_TYPE_UDP, RTE_FLOW_ITEM_TYPE_RAW, - RTE_FLOW_ITEM_TYPE_VF, RTE_FLOW_ITEM_TYPE_END, }; -static enum rte_flow_item_type pattern_fdir_vlan_ipv4_udp_raw_2_vf[] = { +static enum rte_flow_item_type pattern_fdir_vlan_ipv4_udp_raw_2[] = { RTE_FLOW_ITEM_TYPE_ETH, RTE_FLOW_ITEM_TYPE_VLAN, RTE_FLOW_ITEM_TYPE_IPV4, RTE_FLOW_ITEM_TYPE_UDP, RTE_FLOW_ITEM_TYPE_RAW, RTE_FLOW_ITEM_TYPE_RAW, - RTE_FLOW_ITEM_TYPE_VF, RTE_FLOW_ITEM_TYPE_END, }; -static enum rte_flow_item_type pattern_fdir_vlan_ipv4_udp_raw_3_vf[] = { +static enum rte_flow_item_type pattern_fdir_vlan_ipv4_udp_raw_3[] = { RTE_FLOW_ITEM_TYPE_ETH, RTE_FLOW_ITEM_TYPE_VLAN, RTE_FLOW_ITEM_TYPE_IPV4, @@ -1320,32 +656,29 @@ static enum rte_flow_item_type pattern_fdir_vlan_ipv4_udp_raw_3_vf[] = { RTE_FLOW_ITEM_TYPE_RAW, RTE_FLOW_ITEM_TYPE_RAW, RTE_FLOW_ITEM_TYPE_RAW, - RTE_FLOW_ITEM_TYPE_VF, RTE_FLOW_ITEM_TYPE_END, }; -static enum rte_flow_item_type pattern_fdir_vlan_ipv4_tcp_raw_1_vf[] = { +static enum rte_flow_item_type pattern_fdir_vlan_ipv4_tcp_raw_1[] = { RTE_FLOW_ITEM_TYPE_ETH, RTE_FLOW_ITEM_TYPE_VLAN, RTE_FLOW_ITEM_TYPE_IPV4, RTE_FLOW_ITEM_TYPE_TCP, RTE_FLOW_ITEM_TYPE_RAW, - RTE_FLOW_ITEM_TYPE_VF, RTE_FLOW_ITEM_TYPE_END, }; -static enum rte_flow_item_type pattern_fdir_vlan_ipv4_tcp_raw_2_vf[] = { +static enum rte_flow_item_type pattern_fdir_vlan_ipv4_tcp_raw_2[] = { RTE_FLOW_ITEM_TYPE_ETH, RTE_FLOW_ITEM_TYPE_VLAN, RTE_FLOW_ITEM_TYPE_IPV4, RTE_FLOW_ITEM_TYPE_TCP, RTE_FLOW_ITEM_TYPE_RAW, RTE_FLOW_ITEM_TYPE_RAW, - RTE_FLOW_ITEM_TYPE_VF, RTE_FLOW_ITEM_TYPE_END, }; -static enum rte_flow_item_type pattern_fdir_vlan_ipv4_tcp_raw_3_vf[] = { +static enum rte_flow_item_type pattern_fdir_vlan_ipv4_tcp_raw_3[] = { RTE_FLOW_ITEM_TYPE_ETH, RTE_FLOW_ITEM_TYPE_VLAN, RTE_FLOW_ITEM_TYPE_IPV4, @@ -1353,32 +686,29 @@ static enum rte_flow_item_type pattern_fdir_vlan_ipv4_tcp_raw_3_vf[] = { RTE_FLOW_ITEM_TYPE_RAW, RTE_FLOW_ITEM_TYPE_RAW, RTE_FLOW_ITEM_TYPE_RAW, - RTE_FLOW_ITEM_TYPE_VF, RTE_FLOW_ITEM_TYPE_END, }; -static enum rte_flow_item_type pattern_fdir_vlan_ipv4_sctp_raw_1_vf[] = { +static enum rte_flow_item_type pattern_fdir_vlan_ipv4_sctp_raw_1[] = { RTE_FLOW_ITEM_TYPE_ETH, RTE_FLOW_ITEM_TYPE_VLAN, RTE_FLOW_ITEM_TYPE_IPV4, RTE_FLOW_ITEM_TYPE_SCTP, RTE_FLOW_ITEM_TYPE_RAW, - RTE_FLOW_ITEM_TYPE_VF, RTE_FLOW_ITEM_TYPE_END, }; -static enum rte_flow_item_type pattern_fdir_vlan_ipv4_sctp_raw_2_vf[] = { +static enum rte_flow_item_type pattern_fdir_vlan_ipv4_sctp_raw_2[] = { RTE_FLOW_ITEM_TYPE_ETH, RTE_FLOW_ITEM_TYPE_VLAN, RTE_FLOW_ITEM_TYPE_IPV4, RTE_FLOW_ITEM_TYPE_SCTP, RTE_FLOW_ITEM_TYPE_RAW, RTE_FLOW_ITEM_TYPE_RAW, - RTE_FLOW_ITEM_TYPE_VF, RTE_FLOW_ITEM_TYPE_END, }; -static enum rte_flow_item_type pattern_fdir_vlan_ipv4_sctp_raw_3_vf[] = { +static enum rte_flow_item_type pattern_fdir_vlan_ipv4_sctp_raw_3[] = { RTE_FLOW_ITEM_TYPE_ETH, RTE_FLOW_ITEM_TYPE_VLAN, RTE_FLOW_ITEM_TYPE_IPV4, @@ -1386,62 +716,56 @@ static enum rte_flow_item_type pattern_fdir_vlan_ipv4_sctp_raw_3_vf[] = { RTE_FLOW_ITEM_TYPE_RAW, RTE_FLOW_ITEM_TYPE_RAW, RTE_FLOW_ITEM_TYPE_RAW, - RTE_FLOW_ITEM_TYPE_VF, RTE_FLOW_ITEM_TYPE_END, }; -static enum rte_flow_item_type pattern_fdir_vlan_ipv6_raw_1_vf[] = { +static enum rte_flow_item_type pattern_fdir_vlan_ipv6_raw_1[] = { RTE_FLOW_ITEM_TYPE_ETH, RTE_FLOW_ITEM_TYPE_VLAN, RTE_FLOW_ITEM_TYPE_IPV6, RTE_FLOW_ITEM_TYPE_RAW, - RTE_FLOW_ITEM_TYPE_VF, RTE_FLOW_ITEM_TYPE_END, }; -static enum rte_flow_item_type pattern_fdir_vlan_ipv6_raw_2_vf[] = { +static enum rte_flow_item_type pattern_fdir_vlan_ipv6_raw_2[] = { RTE_FLOW_ITEM_TYPE_ETH, RTE_FLOW_ITEM_TYPE_VLAN, RTE_FLOW_ITEM_TYPE_IPV6, RTE_FLOW_ITEM_TYPE_RAW, RTE_FLOW_ITEM_TYPE_RAW, - RTE_FLOW_ITEM_TYPE_VF, RTE_FLOW_ITEM_TYPE_END, }; -static enum rte_flow_item_type pattern_fdir_vlan_ipv6_raw_3_vf[] = { +static enum rte_flow_item_type pattern_fdir_vlan_ipv6_raw_3[] = { RTE_FLOW_ITEM_TYPE_ETH, RTE_FLOW_ITEM_TYPE_VLAN, RTE_FLOW_ITEM_TYPE_IPV6, RTE_FLOW_ITEM_TYPE_RAW, RTE_FLOW_ITEM_TYPE_RAW, RTE_FLOW_ITEM_TYPE_RAW, - RTE_FLOW_ITEM_TYPE_VF, RTE_FLOW_ITEM_TYPE_END, }; -static enum rte_flow_item_type pattern_fdir_vlan_ipv6_udp_raw_1_vf[] = { +static enum rte_flow_item_type pattern_fdir_vlan_ipv6_udp_raw_1[] = { RTE_FLOW_ITEM_TYPE_ETH, RTE_FLOW_ITEM_TYPE_VLAN, RTE_FLOW_ITEM_TYPE_IPV6, RTE_FLOW_ITEM_TYPE_UDP, RTE_FLOW_ITEM_TYPE_RAW, - RTE_FLOW_ITEM_TYPE_VF, RTE_FLOW_ITEM_TYPE_END, }; -static enum rte_flow_item_type pattern_fdir_vlan_ipv6_udp_raw_2_vf[] = { +static enum rte_flow_item_type pattern_fdir_vlan_ipv6_udp_raw_2[] = { RTE_FLOW_ITEM_TYPE_ETH, RTE_FLOW_ITEM_TYPE_VLAN, RTE_FLOW_ITEM_TYPE_IPV6, RTE_FLOW_ITEM_TYPE_UDP, RTE_FLOW_ITEM_TYPE_RAW, RTE_FLOW_ITEM_TYPE_RAW, - RTE_FLOW_ITEM_TYPE_VF, RTE_FLOW_ITEM_TYPE_END, }; -static enum rte_flow_item_type pattern_fdir_vlan_ipv6_udp_raw_3_vf[] = { +static enum rte_flow_item_type pattern_fdir_vlan_ipv6_udp_raw_3[] = { RTE_FLOW_ITEM_TYPE_ETH, RTE_FLOW_ITEM_TYPE_VLAN, RTE_FLOW_ITEM_TYPE_IPV6, @@ -1449,32 +773,29 @@ static enum rte_flow_item_type pattern_fdir_vlan_ipv6_udp_raw_3_vf[] = { RTE_FLOW_ITEM_TYPE_RAW, RTE_FLOW_ITEM_TYPE_RAW, RTE_FLOW_ITEM_TYPE_RAW, - RTE_FLOW_ITEM_TYPE_VF, RTE_FLOW_ITEM_TYPE_END, }; -static enum rte_flow_item_type pattern_fdir_vlan_ipv6_tcp_raw_1_vf[] = { +static enum rte_flow_item_type pattern_fdir_vlan_ipv6_tcp_raw_1[] = { RTE_FLOW_ITEM_TYPE_ETH, RTE_FLOW_ITEM_TYPE_VLAN, RTE_FLOW_ITEM_TYPE_IPV6, RTE_FLOW_ITEM_TYPE_TCP, RTE_FLOW_ITEM_TYPE_RAW, - RTE_FLOW_ITEM_TYPE_VF, RTE_FLOW_ITEM_TYPE_END, }; -static enum rte_flow_item_type pattern_fdir_vlan_ipv6_tcp_raw_2_vf[] = { +static enum rte_flow_item_type pattern_fdir_vlan_ipv6_tcp_raw_2[] = { RTE_FLOW_ITEM_TYPE_ETH, RTE_FLOW_ITEM_TYPE_VLAN, RTE_FLOW_ITEM_TYPE_IPV6, RTE_FLOW_ITEM_TYPE_TCP, RTE_FLOW_ITEM_TYPE_RAW, RTE_FLOW_ITEM_TYPE_RAW, - RTE_FLOW_ITEM_TYPE_VF, RTE_FLOW_ITEM_TYPE_END, }; -static enum rte_flow_item_type pattern_fdir_vlan_ipv6_tcp_raw_3_vf[] = { +static enum rte_flow_item_type pattern_fdir_vlan_ipv6_tcp_raw_3[] = { RTE_FLOW_ITEM_TYPE_ETH, RTE_FLOW_ITEM_TYPE_VLAN, RTE_FLOW_ITEM_TYPE_IPV6, @@ -1482,32 +803,29 @@ static enum rte_flow_item_type pattern_fdir_vlan_ipv6_tcp_raw_3_vf[] = { RTE_FLOW_ITEM_TYPE_RAW, RTE_FLOW_ITEM_TYPE_RAW, RTE_FLOW_ITEM_TYPE_RAW, - RTE_FLOW_ITEM_TYPE_VF, RTE_FLOW_ITEM_TYPE_END, }; -static enum rte_flow_item_type pattern_fdir_vlan_ipv6_sctp_raw_1_vf[] = { +static enum rte_flow_item_type pattern_fdir_vlan_ipv6_sctp_raw_1[] = { RTE_FLOW_ITEM_TYPE_ETH, RTE_FLOW_ITEM_TYPE_VLAN, RTE_FLOW_ITEM_TYPE_IPV6, RTE_FLOW_ITEM_TYPE_SCTP, RTE_FLOW_ITEM_TYPE_RAW, - RTE_FLOW_ITEM_TYPE_VF, RTE_FLOW_ITEM_TYPE_END, }; -static enum rte_flow_item_type pattern_fdir_vlan_ipv6_sctp_raw_2_vf[] = { +static enum rte_flow_item_type pattern_fdir_vlan_ipv6_sctp_raw_2[] = { RTE_FLOW_ITEM_TYPE_ETH, RTE_FLOW_ITEM_TYPE_VLAN, RTE_FLOW_ITEM_TYPE_IPV6, RTE_FLOW_ITEM_TYPE_SCTP, RTE_FLOW_ITEM_TYPE_RAW, RTE_FLOW_ITEM_TYPE_RAW, - RTE_FLOW_ITEM_TYPE_VF, RTE_FLOW_ITEM_TYPE_END, }; -static enum rte_flow_item_type pattern_fdir_vlan_ipv6_sctp_raw_3_vf[] = { +static enum rte_flow_item_type pattern_fdir_vlan_ipv6_sctp_raw_3[] = { RTE_FLOW_ITEM_TYPE_ETH, RTE_FLOW_ITEM_TYPE_VLAN, RTE_FLOW_ITEM_TYPE_IPV6, @@ -1515,7 +833,6 @@ static enum rte_flow_item_type pattern_fdir_vlan_ipv6_sctp_raw_3_vf[] = { RTE_FLOW_ITEM_TYPE_RAW, RTE_FLOW_ITEM_TYPE_RAW, RTE_FLOW_ITEM_TYPE_RAW, - RTE_FLOW_ITEM_TYPE_VF, RTE_FLOW_ITEM_TYPE_END, }; @@ -1765,78 +1082,6 @@ static struct i40e_valid_pattern i40e_supported_patterns[] = { { pattern_fdir_vlan_ipv6_sctp_raw_1, i40e_flow_parse_fdir_filter }, { pattern_fdir_vlan_ipv6_sctp_raw_2, i40e_flow_parse_fdir_filter }, { pattern_fdir_vlan_ipv6_sctp_raw_3, i40e_flow_parse_fdir_filter }, - /* FDIR - support VF item */ - { pattern_fdir_ipv4_vf, i40e_flow_parse_fdir_filter }, - { pattern_fdir_ipv4_udp_vf, i40e_flow_parse_fdir_filter }, - { pattern_fdir_ipv4_tcp_vf, i40e_flow_parse_fdir_filter }, - { pattern_fdir_ipv4_sctp_vf, i40e_flow_parse_fdir_filter }, - { pattern_fdir_ipv6_vf, i40e_flow_parse_fdir_filter }, - { pattern_fdir_ipv6_udp_vf, i40e_flow_parse_fdir_filter }, - { pattern_fdir_ipv6_tcp_vf, i40e_flow_parse_fdir_filter }, - { pattern_fdir_ipv6_sctp_vf, i40e_flow_parse_fdir_filter }, - { pattern_fdir_ethertype_raw_1_vf, i40e_flow_parse_fdir_filter }, - { pattern_fdir_ethertype_raw_2_vf, i40e_flow_parse_fdir_filter }, - { pattern_fdir_ethertype_raw_3_vf, i40e_flow_parse_fdir_filter }, - { pattern_fdir_ipv4_raw_1_vf, i40e_flow_parse_fdir_filter }, - { pattern_fdir_ipv4_raw_2_vf, i40e_flow_parse_fdir_filter }, - { pattern_fdir_ipv4_raw_3_vf, i40e_flow_parse_fdir_filter }, - { pattern_fdir_ipv4_udp_raw_1_vf, i40e_flow_parse_fdir_filter }, - { pattern_fdir_ipv4_udp_raw_2_vf, i40e_flow_parse_fdir_filter }, - { pattern_fdir_ipv4_udp_raw_3_vf, i40e_flow_parse_fdir_filter }, - { pattern_fdir_ipv4_tcp_raw_1_vf, i40e_flow_parse_fdir_filter }, - { pattern_fdir_ipv4_tcp_raw_2_vf, i40e_flow_parse_fdir_filter }, - { pattern_fdir_ipv4_tcp_raw_3_vf, i40e_flow_parse_fdir_filter }, - { pattern_fdir_ipv4_sctp_raw_1_vf, i40e_flow_parse_fdir_filter }, - { pattern_fdir_ipv4_sctp_raw_2_vf, i40e_flow_parse_fdir_filter }, - { pattern_fdir_ipv4_sctp_raw_3_vf, i40e_flow_parse_fdir_filter }, - { pattern_fdir_ipv6_raw_1_vf, i40e_flow_parse_fdir_filter }, - { pattern_fdir_ipv6_raw_2_vf, i40e_flow_parse_fdir_filter }, - { pattern_fdir_ipv6_raw_3_vf, i40e_flow_parse_fdir_filter }, - { pattern_fdir_ipv6_udp_raw_1_vf, i40e_flow_parse_fdir_filter }, - { pattern_fdir_ipv6_udp_raw_2_vf, i40e_flow_parse_fdir_filter }, - { pattern_fdir_ipv6_udp_raw_3_vf, i40e_flow_parse_fdir_filter }, - { pattern_fdir_ipv6_tcp_raw_1_vf, i40e_flow_parse_fdir_filter }, - { pattern_fdir_ipv6_tcp_raw_2_vf, i40e_flow_parse_fdir_filter }, - { pattern_fdir_ipv6_tcp_raw_3_vf, i40e_flow_parse_fdir_filter }, - { pattern_fdir_ipv6_sctp_raw_1_vf, i40e_flow_parse_fdir_filter }, - { pattern_fdir_ipv6_sctp_raw_2_vf, i40e_flow_parse_fdir_filter }, - { pattern_fdir_ipv6_sctp_raw_3_vf, i40e_flow_parse_fdir_filter }, - { pattern_fdir_ethertype_vlan_vf, i40e_flow_parse_fdir_filter }, - { pattern_fdir_vlan_ipv4_vf, i40e_flow_parse_fdir_filter }, - { pattern_fdir_vlan_ipv4_udp_vf, i40e_flow_parse_fdir_filter }, - { pattern_fdir_vlan_ipv4_tcp_vf, i40e_flow_parse_fdir_filter }, - { pattern_fdir_vlan_ipv4_sctp_vf, i40e_flow_parse_fdir_filter }, - { pattern_fdir_vlan_ipv6_vf, i40e_flow_parse_fdir_filter }, - { pattern_fdir_vlan_ipv6_udp_vf, i40e_flow_parse_fdir_filter }, - { pattern_fdir_vlan_ipv6_tcp_vf, i40e_flow_parse_fdir_filter }, - { pattern_fdir_vlan_ipv6_sctp_vf, i40e_flow_parse_fdir_filter }, - { pattern_fdir_ethertype_vlan_raw_1_vf, i40e_flow_parse_fdir_filter }, - { pattern_fdir_ethertype_vlan_raw_2_vf, i40e_flow_parse_fdir_filter }, - { pattern_fdir_ethertype_vlan_raw_3_vf, i40e_flow_parse_fdir_filter }, - { pattern_fdir_vlan_ipv4_raw_1_vf, i40e_flow_parse_fdir_filter }, - { pattern_fdir_vlan_ipv4_raw_2_vf, i40e_flow_parse_fdir_filter }, - { pattern_fdir_vlan_ipv4_raw_3_vf, i40e_flow_parse_fdir_filter }, - { pattern_fdir_vlan_ipv4_udp_raw_1_vf, i40e_flow_parse_fdir_filter }, - { pattern_fdir_vlan_ipv4_udp_raw_2_vf, i40e_flow_parse_fdir_filter }, - { pattern_fdir_vlan_ipv4_udp_raw_3_vf, i40e_flow_parse_fdir_filter }, - { pattern_fdir_vlan_ipv4_tcp_raw_1_vf, i40e_flow_parse_fdir_filter }, - { pattern_fdir_vlan_ipv4_tcp_raw_2_vf, i40e_flow_parse_fdir_filter }, - { pattern_fdir_vlan_ipv4_tcp_raw_3_vf, i40e_flow_parse_fdir_filter }, - { pattern_fdir_vlan_ipv4_sctp_raw_1_vf, i40e_flow_parse_fdir_filter }, - { pattern_fdir_vlan_ipv4_sctp_raw_2_vf, i40e_flow_parse_fdir_filter }, - { pattern_fdir_vlan_ipv4_sctp_raw_3_vf, i40e_flow_parse_fdir_filter }, - { pattern_fdir_vlan_ipv6_raw_1_vf, i40e_flow_parse_fdir_filter }, - { pattern_fdir_vlan_ipv6_raw_2_vf, i40e_flow_parse_fdir_filter }, - { pattern_fdir_vlan_ipv6_raw_3_vf, i40e_flow_parse_fdir_filter }, - { pattern_fdir_vlan_ipv6_udp_raw_1_vf, i40e_flow_parse_fdir_filter }, - { pattern_fdir_vlan_ipv6_udp_raw_2_vf, i40e_flow_parse_fdir_filter }, - { pattern_fdir_vlan_ipv6_udp_raw_3_vf, i40e_flow_parse_fdir_filter }, - { pattern_fdir_vlan_ipv6_tcp_raw_1_vf, i40e_flow_parse_fdir_filter }, - { pattern_fdir_vlan_ipv6_tcp_raw_2_vf, i40e_flow_parse_fdir_filter }, - { pattern_fdir_vlan_ipv6_tcp_raw_3_vf, i40e_flow_parse_fdir_filter }, - { pattern_fdir_vlan_ipv6_sctp_raw_1_vf, i40e_flow_parse_fdir_filter }, - { pattern_fdir_vlan_ipv6_sctp_raw_2_vf, i40e_flow_parse_fdir_filter }, - { pattern_fdir_vlan_ipv6_sctp_raw_3_vf, i40e_flow_parse_fdir_filter }, /* VXLAN */ { pattern_vxlan_1, i40e_flow_parse_vxlan_filter }, { pattern_vxlan_2, i40e_flow_parse_vxlan_filter }, @@ -2348,7 +1593,6 @@ i40e_flow_set_filter_spi(struct i40e_fdir_filter_conf *filter, */ static int i40e_flow_parse_fdir_pattern(struct rte_eth_dev *dev, - const struct rte_flow_attr *attr, const struct rte_flow_item *pattern, struct rte_flow_error *error, struct i40e_fdir_filter_conf *filter) @@ -2365,7 +1609,6 @@ i40e_flow_parse_fdir_pattern(struct rte_eth_dev *dev, const struct rte_flow_item_gtp *gtp_spec, *gtp_mask; const struct rte_flow_item_esp *esp_spec, *esp_mask; const struct rte_flow_item_raw *raw_spec, *raw_mask; - const struct rte_flow_item_vf *vf_spec; const struct rte_flow_item_l2tpv3oip *l2tpv3oip_spec, *l2tpv3oip_mask; uint8_t pctype = 0; @@ -3067,29 +2310,6 @@ i40e_flow_parse_fdir_pattern(struct rte_eth_dev *dev, filter->input.flow_ext.raw_id = raw_id; filter->input.flow_ext.is_flex_flow = true; break; - case RTE_FLOW_ITEM_TYPE_VF: - vf_spec = item->spec; - if (!attr->transfer) { - rte_flow_error_set(error, ENOTSUP, - RTE_FLOW_ERROR_TYPE_ITEM, - item, - "Matching VF traffic" - " without affecting it" - " (transfer attribute)" - " is unsupported"); - return -rte_errno; - } - filter->input.flow_ext.is_vf = 1; - filter->input.flow_ext.dst_id = vf_spec->id; - if (filter->input.flow_ext.is_vf && - filter->input.flow_ext.dst_id >= pf->vf_num) { - rte_flow_error_set(error, EINVAL, - RTE_FLOW_ERROR_TYPE_ITEM, - item, - "Invalid VF ID for FDIR."); - return -rte_errno; - } - break; case RTE_FLOW_ITEM_TYPE_L2TPV3OIP: l2tpv3oip_spec = item->spec; l2tpv3oip_mask = item->mask; @@ -3277,8 +2497,7 @@ i40e_flow_parse_fdir_filter(struct rte_eth_dev *dev, &filter->fdir_filter; int ret; - ret = i40e_flow_parse_fdir_pattern(dev, attr, pattern, error, - fdir_filter); + ret = i40e_flow_parse_fdir_pattern(dev, pattern, error, fdir_filter); if (ret) return ret; diff --git a/drivers/net/sfc/sfc_mae.c b/drivers/net/sfc/sfc_mae.c index e8da2d2a0d..06de659ee2 100644 --- a/drivers/net/sfc/sfc_mae.c +++ b/drivers/net/sfc/sfc_mae.c @@ -1685,71 +1685,6 @@ sfc_mae_rule_parse_item_phy_port(const struct rte_flow_item *item, return 0; } -static int -sfc_mae_rule_parse_item_vf(const struct rte_flow_item *item, - struct sfc_flow_parse_ctx *ctx, - struct rte_flow_error *error) -{ - struct sfc_mae_parse_ctx *ctx_mae = ctx->mae; - const efx_nic_cfg_t *encp = efx_nic_cfg_get(ctx_mae->sa->nic); - const struct rte_flow_item_vf supp_mask = { - .id = 0xffffffff, - }; - const void *def_mask = &rte_flow_item_vf_mask; - const struct rte_flow_item_vf *spec = NULL; - const struct rte_flow_item_vf *mask = NULL; - efx_mport_sel_t mport_v; - int rc; - - if (ctx_mae->match_mport_set) { - return rte_flow_error_set(error, ENOTSUP, - RTE_FLOW_ERROR_TYPE_ITEM, item, - "Can't handle multiple traffic source items"); - } - - rc = sfc_flow_parse_init(item, - (const void **)&spec, (const void **)&mask, - (const void *)&supp_mask, def_mask, - sizeof(struct rte_flow_item_vf), error); - if (rc != 0) - return rc; - - if (mask->id != supp_mask.id) { - return rte_flow_error_set(error, EINVAL, - RTE_FLOW_ERROR_TYPE_ITEM, item, - "Bad mask in the VF pattern item"); - } - - /* - * If "spec" is not set, the item requests any VF related to the - * PF of the current DPDK port (but not the PF itself). - * Reject this match criterion as unsupported. - */ - if (spec == NULL) { - return rte_flow_error_set(error, EINVAL, - RTE_FLOW_ERROR_TYPE_ITEM, item, - "Bad spec in the VF pattern item"); - } - - rc = efx_mae_mport_by_pcie_function(encp->enc_pf, spec->id, &mport_v); - if (rc != 0) { - return rte_flow_error_set(error, rc, - RTE_FLOW_ERROR_TYPE_ITEM, item, - "Failed to convert the PF + VF IDs"); - } - - rc = efx_mae_match_spec_mport_set(ctx_mae->match_spec, &mport_v, NULL); - if (rc != 0) { - return rte_flow_error_set(error, rc, - RTE_FLOW_ERROR_TYPE_ITEM, item, - "Failed to set MPORT for the PF + VF"); - } - - ctx_mae->match_mport_set = B_TRUE; - - return 0; -} - /* * Having this field ID in a field locator means that this * locator cannot be used to actually set the field at the @@ -2555,18 +2490,6 @@ static const struct sfc_flow_item sfc_flow_items[] = { .ctx_type = SFC_FLOW_PARSE_CTX_MAE, .parse = sfc_mae_rule_parse_item_phy_port, }, - { - .type = RTE_FLOW_ITEM_TYPE_VF, - .name = "VF", - /* - * In terms of RTE flow, this item is a META one, - * and its position in the pattern is don't care. - */ - .prev_layer = SFC_FLOW_ITEM_ANY_LAYER, - .layer = SFC_FLOW_ITEM_ANY_LAYER, - .ctx_type = SFC_FLOW_PARSE_CTX_MAE, - .parse = sfc_mae_rule_parse_item_vf, - }, { .type = RTE_FLOW_ITEM_TYPE_ETH, .name = "ETH", diff --git a/lib/ethdev/rte_flow.c b/lib/ethdev/rte_flow.c index 6ece72bf36..65c74687e3 100644 --- a/lib/ethdev/rte_flow.c +++ b/lib/ethdev/rte_flow.c @@ -97,7 +97,6 @@ static const struct rte_flow_desc_data rte_flow_desc_item[] = { MK_FLOW_ITEM(VOID, 0), MK_FLOW_ITEM(INVERT, 0), MK_FLOW_ITEM(ANY, sizeof(struct rte_flow_item_any)), - MK_FLOW_ITEM(VF, sizeof(struct rte_flow_item_vf)), MK_FLOW_ITEM(PHY_PORT, sizeof(struct rte_flow_item_phy_port)), MK_FLOW_ITEM(PORT_ID, sizeof(struct rte_flow_item_port_id)), MK_FLOW_ITEM(RAW, sizeof(struct rte_flow_item_raw)), diff --git a/lib/ethdev/rte_flow.h b/lib/ethdev/rte_flow.h index 97de98e232..0a98db9c1c 100644 --- a/lib/ethdev/rte_flow.h +++ b/lib/ethdev/rte_flow.h @@ -188,20 +188,6 @@ enum rte_flow_item_type { */ RTE_FLOW_ITEM_TYPE_ANY, - /** - * @deprecated - * @see RTE_FLOW_ITEM_TYPE_PORT_REPRESENTOR - * @see RTE_FLOW_ITEM_TYPE_REPRESENTED_PORT - * - * [META] - * - * Matches traffic originating from (ingress) or going to (egress) a - * given virtual function of the current device. - * - * See struct rte_flow_item_vf. - */ - RTE_FLOW_ITEM_TYPE_VF, - /** * @deprecated * @see RTE_FLOW_ITEM_TYPE_PORT_REPRESENTOR @@ -700,38 +686,6 @@ static const struct rte_flow_item_any rte_flow_item_any_mask = { }; #endif -/** - * @deprecated - * @see RTE_FLOW_ITEM_TYPE_PORT_REPRESENTOR - * @see RTE_FLOW_ITEM_TYPE_REPRESENTED_PORT - * - * RTE_FLOW_ITEM_TYPE_VF - * - * Matches traffic originating from (ingress) or going to (egress) a given - * virtual function of the current device. - * - * If supported, should work even if the virtual function is not managed by - * the application and thus not associated with a DPDK port ID. - * - * Note this pattern item does not match VF representors traffic which, as - * separate entities, should be addressed through their own DPDK port IDs. - * - * - Can be specified multiple times to match traffic addressed to several - * VF IDs. - * - * A zeroed mask can be used to match any VF ID. - */ -struct rte_flow_item_vf { - uint32_t id; /**< VF ID. */ -}; - -/** Default mask for RTE_FLOW_ITEM_TYPE_VF. */ -#ifndef __cplusplus -static const struct rte_flow_item_vf rte_flow_item_vf_mask = { - .id = 0x00000000, -}; -#endif - /** * @deprecated * @see RTE_FLOW_ITEM_TYPE_PORT_REPRESENTOR From patchwork Fri Aug 12 19:18:26 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ivan Malov X-Patchwork-Id: 114944 X-Patchwork-Delegate: thomas@monjalon.net Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id 9E58CA0543; Fri, 12 Aug 2022 21:19:42 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 4574542C66; Fri, 12 Aug 2022 21:18:41 +0200 (CEST) Received: from shelob.oktetlabs.ru (shelob.oktetlabs.ru [91.220.146.113]) by mails.dpdk.org (Postfix) with ESMTP id 6A43A40A7F for ; Fri, 12 Aug 2022 21:18:32 +0200 (CEST) Received: from bree.oktetlabs.ru (bree.oktetlabs.ru [192.168.34.5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by shelob.oktetlabs.ru (Postfix) with ESMTPS id 1467CC9; Fri, 12 Aug 2022 22:18:32 +0300 (MSK) DKIM-Filter: OpenDKIM Filter v2.11.0 shelob.oktetlabs.ru 1467CC9 Authentication-Results: shelob.oktetlabs.ru/1467CC9; dkim=none; dkim-atps=neutral From: Ivan Malov To: dev@dpdk.org Cc: Ori Kam , Eli Britstein , Ilya Maximets , Thomas Monjalon , Stephen Hemminger , Jerin Jacob , Andrew Rybchenko , Aman Singh , Yuying Zhang , Ajit Khaparde , Somnath Kotur , Rahul Lakkireddy , Ferruh Yigit , Matan Azrad , Viacheslav Ovsiienko Subject: [PATCH 12/13] ethdev: remove deprecated flow item PHY PORT Date: Fri, 12 Aug 2022 22:18:26 +0300 Message-Id: <20220812191827.3187441-13-ivan.malov@oktetlabs.ru> X-Mailer: git-send-email 2.30.2 In-Reply-To: <20220812191827.3187441-1-ivan.malov@oktetlabs.ru> References: <20220812191827.3187441-1-ivan.malov@oktetlabs.ru> MIME-Version: 1.0 X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Such deprecation was commenced in DPDK 21.11. Since then, no parties have objected. Remove. The patch breaks ABI. Signed-off-by: Ivan Malov Reviewed-by: Andrew Rybchenko Acked-by: Ori Kam --- app/test-pmd/cmdline_flow.c | 24 ------ doc/guides/nics/features/bnxt.ini | 1 - doc/guides/nics/features/cxgbe.ini | 1 - doc/guides/nics/features/default.ini | 1 - doc/guides/nics/features/mlx5.ini | 1 - doc/guides/nics/features/sfc.ini | 1 - doc/guides/nics/sfc_efx.rst | 2 - doc/guides/prog_guide/rte_flow.rst | 45 ----------- doc/guides/rel_notes/release_22_11.rst | 3 + doc/guides/testpmd_app_ug/testpmd_funcs.rst | 4 - drivers/net/bnxt/tf_ulp/ulp_rte_handler_tbl.c | 4 - drivers/net/bnxt/tf_ulp/ulp_rte_parser.c | 75 ------------------- drivers/net/bnxt/tf_ulp/ulp_rte_parser.h | 5 -- drivers/net/cxgbe/cxgbe_flow.c | 32 -------- drivers/net/sfc/sfc_mae.c | 69 ----------------- lib/ethdev/rte_flow.c | 1 - lib/ethdev/rte_flow.h | 56 -------------- 17 files changed, 3 insertions(+), 322 deletions(-) diff --git a/app/test-pmd/cmdline_flow.c b/app/test-pmd/cmdline_flow.c index 31b906178c..758c1f0efa 100644 --- a/app/test-pmd/cmdline_flow.c +++ b/app/test-pmd/cmdline_flow.c @@ -249,8 +249,6 @@ enum index { ITEM_INVERT, ITEM_ANY, ITEM_ANY_NUM, - ITEM_PHY_PORT, - ITEM_PHY_PORT_INDEX, ITEM_PORT_ID, ITEM_PORT_ID_ID, ITEM_MARK, @@ -1275,7 +1273,6 @@ static const enum index next_item[] = { ITEM_VOID, ITEM_INVERT, ITEM_ANY, - ITEM_PHY_PORT, ITEM_PORT_ID, ITEM_MARK, ITEM_RAW, @@ -1345,12 +1342,6 @@ static const enum index item_any[] = { ZERO, }; -static const enum index item_phy_port[] = { - ITEM_PHY_PORT_INDEX, - ITEM_NEXT, - ZERO, -}; - static const enum index item_port_id[] = { ITEM_PORT_ID_ID, ITEM_NEXT, @@ -3450,21 +3441,6 @@ static const struct token token_list[] = { .next = NEXT(item_any, NEXT_ENTRY(COMMON_UNSIGNED), item_param), .args = ARGS(ARGS_ENTRY(struct rte_flow_item_any, num)), }, - [ITEM_PHY_PORT] = { - .name = "phy_port", - .help = "match traffic from/to a specific physical port", - .priv = PRIV_ITEM(PHY_PORT, - sizeof(struct rte_flow_item_phy_port)), - .next = NEXT(item_phy_port), - .call = parse_vc, - }, - [ITEM_PHY_PORT_INDEX] = { - .name = "index", - .help = "physical port index", - .next = NEXT(item_phy_port, NEXT_ENTRY(COMMON_UNSIGNED), - item_param), - .args = ARGS(ARGS_ENTRY(struct rte_flow_item_phy_port, index)), - }, [ITEM_PORT_ID] = { .name = "port_id", .help = "match traffic from/to a given DPDK port ID", diff --git a/doc/guides/nics/features/bnxt.ini b/doc/guides/nics/features/bnxt.ini index 860a0a8cf6..c05bcff909 100644 --- a/doc/guides/nics/features/bnxt.ini +++ b/doc/guides/nics/features/bnxt.ini @@ -63,7 +63,6 @@ ipv6 = Y gre = Y icmp = Y icmp6 = Y -phy_port = Y port_id = Y port_representor = Y represented_port = Y diff --git a/doc/guides/nics/features/cxgbe.ini b/doc/guides/nics/features/cxgbe.ini index 3f11cc2ac0..295816ab9d 100644 --- a/doc/guides/nics/features/cxgbe.ini +++ b/doc/guides/nics/features/cxgbe.ini @@ -39,7 +39,6 @@ Usage doc = Y eth = Y ipv4 = Y ipv6 = Y -phy_port = Y tcp = Y udp = Y vlan = Y diff --git a/doc/guides/nics/features/default.ini b/doc/guides/nics/features/default.ini index 8fbe1de46a..7ed5bd8cb9 100644 --- a/doc/guides/nics/features/default.ini +++ b/doc/guides/nics/features/default.ini @@ -122,7 +122,6 @@ mpls = nsh = nvgre = pfcp = -phy_port = port_id = port_representor = ppp = diff --git a/doc/guides/nics/features/mlx5.ini b/doc/guides/nics/features/mlx5.ini index e056516deb..e5974063c8 100644 --- a/doc/guides/nics/features/mlx5.ini +++ b/doc/guides/nics/features/mlx5.ini @@ -76,7 +76,6 @@ mark = Y meta = Y mpls = Y nvgre = Y -phy_port = Y port_id = Y tag = Y tcp = Y diff --git a/doc/guides/nics/features/sfc.ini b/doc/guides/nics/features/sfc.ini index 363fc6d0ec..3dac105e35 100644 --- a/doc/guides/nics/features/sfc.ini +++ b/doc/guides/nics/features/sfc.ini @@ -47,7 +47,6 @@ ipv4 = Y ipv6 = Y mark = P nvgre = Y -phy_port = Y port_id = Y port_representor = Y pppoed = Y diff --git a/doc/guides/nics/sfc_efx.rst b/doc/guides/nics/sfc_efx.rst index 0e0088b09f..6eca86e96f 100644 --- a/doc/guides/nics/sfc_efx.rst +++ b/doc/guides/nics/sfc_efx.rst @@ -198,8 +198,6 @@ Supported pattern items (***transfer*** rules): - PORT_ID (cannot repeat; conflicts with other traffic source items) -- PHY_PORT (cannot repeat; conflicts with other traffic source items) - - ETH - VLAN (double-tagging is supported) diff --git a/doc/guides/prog_guide/rte_flow.rst b/doc/guides/prog_guide/rte_flow.rst index 85bf2bf123..9cf4261494 100644 --- a/doc/guides/prog_guide/rte_flow.rst +++ b/doc/guides/prog_guide/rte_flow.rst @@ -535,44 +535,6 @@ Usage example, matching non-TCPv4 packets only: | 4 | END | +-------+----------+ -Item: ``PHY_PORT`` -^^^^^^^^^^^^^^^^^^ - -This item is deprecated. Consider: - - `Item: PORT_REPRESENTOR`_ - - `Item: REPRESENTED_PORT`_ - -Matches traffic originating from (ingress) or going to (egress) a physical -port of the underlying device. - -The first PHY_PORT item overrides the physical port normally associated with -the specified DPDK input port (port_id). This item can be provided several -times to match additional physical ports. - -Note that physical ports are not necessarily tied to DPDK input ports -(port_id) when those are not under DPDK control. Possible values are -specific to each device, they are not necessarily indexed from zero and may -not be contiguous. - -As a device property, the list of allowed values as well as the value -associated with a port_id should be retrieved by other means. - -- Default ``mask`` matches any port index. - -.. _table_rte_flow_item_phy_port: - -.. table:: PHY_PORT - - +----------+-----------+--------------------------------+ - | Field | Subfield | Value | - +==========+===========+================================+ - | ``spec`` | ``index`` | physical port index | - +----------+-----------+--------------------------------+ - | ``last`` | ``index`` | upper range value | - +----------+-----------+--------------------------------+ - | ``mask`` | ``index`` | zeroed to match any port index | - +----------+-----------+--------------------------------+ - Item: ``PORT_ID`` ^^^^^^^^^^^^^^^^^ @@ -586,11 +548,6 @@ port ID. Normally only supported if the port ID in question is known by the underlying PMD and related to the device the flow rule is created against. -This must not be confused with `Item: PHY_PORT`_ which refers to the -physical port of a device, whereas `Item: PORT_ID`_ refers to a ``struct -rte_eth_dev`` object on the application side (also known as "port -representor" depending on the kind of underlying device). - - Default ``mask`` matches the specified DPDK port ID. .. _table_rte_flow_item_port_id: @@ -2056,8 +2013,6 @@ This action is deprecated. Consider: Directs matching traffic to a given physical port index of the underlying device. -See `Item: PHY_PORT`_. - .. _table_rte_flow_action_phy_port: .. table:: PHY_PORT diff --git a/doc/guides/rel_notes/release_22_11.rst b/doc/guides/rel_notes/release_22_11.rst index cf3d6e4efb..343f40a041 100644 --- a/doc/guides/rel_notes/release_22_11.rst +++ b/doc/guides/rel_notes/release_22_11.rst @@ -82,6 +82,9 @@ Removed Items * ethdev: removed ``RTE_FLOW_ITEM_TYPE_VF``; use ``RTE_FLOW_ITEM_TYPE_REPRESENTED_PORT``. +* ethdev: removed ``RTE_FLOW_ITEM_TYPE_PHY_PORT``; + use ``RTE_FLOW_ITEM_TYPE_REPRESENTED_PORT``. + API Changes ----------- diff --git a/doc/guides/testpmd_app_ug/testpmd_funcs.rst b/doc/guides/testpmd_app_ug/testpmd_funcs.rst index 17049e59f8..b9c2d7a6fe 100644 --- a/doc/guides/testpmd_app_ug/testpmd_funcs.rst +++ b/doc/guides/testpmd_app_ug/testpmd_funcs.rst @@ -3665,10 +3665,6 @@ This section lists supported pattern items and their attributes, if any. - ``num {unsigned}``: number of layers covered. -- ``phy_port``: match traffic from/to a specific physical port. - - - ``index {unsigned}``: physical port index. - - ``port_id``: match traffic from/to a given DPDK port ID. - ``id {unsigned}``: DPDK port ID. diff --git a/drivers/net/bnxt/tf_ulp/ulp_rte_handler_tbl.c b/drivers/net/bnxt/tf_ulp/ulp_rte_handler_tbl.c index 23081fc99b..66cd2fba7e 100644 --- a/drivers/net/bnxt/tf_ulp/ulp_rte_handler_tbl.c +++ b/drivers/net/bnxt/tf_ulp/ulp_rte_handler_tbl.c @@ -260,10 +260,6 @@ struct bnxt_ulp_rte_hdr_info ulp_hdr_info[] = { .hdr_type = BNXT_ULP_HDR_TYPE_SUPPORTED, .proto_hdr_func = ulp_rte_item_any_handler }, - [RTE_FLOW_ITEM_TYPE_PHY_PORT] = { - .hdr_type = BNXT_ULP_HDR_TYPE_SUPPORTED, - .proto_hdr_func = ulp_rte_phy_port_hdr_handler - }, [RTE_FLOW_ITEM_TYPE_PORT_ID] = { .hdr_type = BNXT_ULP_HDR_TYPE_SUPPORTED, .proto_hdr_func = ulp_rte_port_hdr_handler diff --git a/drivers/net/bnxt/tf_ulp/ulp_rte_parser.c b/drivers/net/bnxt/tf_ulp/ulp_rte_parser.c index 38799840dd..3faafcf788 100644 --- a/drivers/net/bnxt/tf_ulp/ulp_rte_parser.c +++ b/drivers/net/bnxt/tf_ulp/ulp_rte_parser.c @@ -571,81 +571,6 @@ ulp_rte_port_hdr_handler(const struct rte_flow_item *item, return ulp_rte_parser_svif_set(params, ifindex, mask, item_dir); } -/* Function to handle the parsing of RTE Flow item phy port Header. */ -int32_t -ulp_rte_phy_port_hdr_handler(const struct rte_flow_item *item, - struct ulp_rte_parser_params *params) -{ - const struct rte_flow_item_phy_port *port_spec = item->spec; - const struct rte_flow_item_phy_port *port_mask = item->mask; - uint16_t mask = 0; - int32_t rc = BNXT_TF_RC_ERROR; - uint16_t svif; - enum bnxt_ulp_direction_type dir; - struct ulp_rte_hdr_field *hdr_field; - - /* Copy the rte_flow_item for phy port into hdr_field */ - if (!port_spec) { - BNXT_TF_DBG(ERR, "ParseErr:Phy Port id is not valid\n"); - return rc; - } - if (!port_mask) { - BNXT_TF_DBG(ERR, "ParseErr:Phy Port mask is not valid\n"); - return rc; - } - mask = port_mask->index; - - /* Update the match port type */ - ULP_COMP_FLD_IDX_WR(params, BNXT_ULP_CF_IDX_MATCH_PORT_TYPE, - BNXT_ULP_INTF_TYPE_PHY_PORT); - - /* Compute the Hw direction */ - bnxt_ulp_rte_parser_direction_compute(params); - - /* Direction validation */ - dir = ULP_COMP_FLD_IDX_RD(params, BNXT_ULP_CF_IDX_DIRECTION); - if (dir == BNXT_ULP_DIR_EGRESS) { - BNXT_TF_DBG(ERR, - "Parse Err:Phy ports are valid only for ingress\n"); - return BNXT_TF_RC_PARSE_ERR; - } - - /* Get the physical port details from port db */ - rc = ulp_port_db_phy_port_svif_get(params->ulp_ctx, port_spec->index, - &svif); - if (rc) { - BNXT_TF_DBG(ERR, "Failed to get port details\n"); - return BNXT_TF_RC_PARSE_ERR; - } - - /* Update the SVIF details */ - svif = rte_cpu_to_be_16(svif); - hdr_field = ¶ms->hdr_field[BNXT_ULP_PROTO_HDR_FIELD_SVIF_IDX]; - memcpy(hdr_field->spec, &svif, sizeof(svif)); - memcpy(hdr_field->mask, &mask, sizeof(mask)); - hdr_field->size = sizeof(svif); - ULP_COMP_FLD_IDX_WR(params, BNXT_ULP_CF_IDX_SVIF_FLAG, - rte_be_to_cpu_16(svif)); - if (!mask) { - uint32_t port_id = 0; - uint16_t phy_port = 0; - - /* Validate the control port */ - port_id = ULP_COMP_FLD_IDX_RD(params, - BNXT_ULP_CF_IDX_DEV_PORT_ID); - if (ulp_port_db_phy_port_get(params->ulp_ctx, - port_id, &phy_port) || - (uint16_t)port_spec->index != phy_port) { - BNXT_TF_DBG(ERR, "Mismatch of control and phy_port\n"); - return BNXT_TF_RC_PARSE_ERR; - } - ULP_BITMAP_SET(params->hdr_bitmap.bits, - BNXT_ULP_HDR_BIT_SVIF_IGNORE); - memset(hdr_field->mask, 0xFF, sizeof(mask)); - } - return BNXT_TF_RC_SUCCESS; -} - /* Function to handle the update of proto header based on field values */ static void ulp_rte_l2_proto_type_update(struct ulp_rte_parser_params *param, diff --git a/drivers/net/bnxt/tf_ulp/ulp_rte_parser.h b/drivers/net/bnxt/tf_ulp/ulp_rte_parser.h index 0e246abbd8..5a9b056b16 100644 --- a/drivers/net/bnxt/tf_ulp/ulp_rte_parser.h +++ b/drivers/net/bnxt/tf_ulp/ulp_rte_parser.h @@ -85,11 +85,6 @@ int32_t ulp_rte_port_hdr_handler(const struct rte_flow_item *item, struct ulp_rte_parser_params *params); -/* Function to handle the parsing of RTE Flow item port Header. */ -int32_t -ulp_rte_phy_port_hdr_handler(const struct rte_flow_item *item, - struct ulp_rte_parser_params *params); - /* Function to handle the RTE item Ethernet Header. */ int32_t ulp_rte_eth_hdr_handler(const struct rte_flow_item *item, diff --git a/drivers/net/cxgbe/cxgbe_flow.c b/drivers/net/cxgbe/cxgbe_flow.c index 8b4efc697b..d383334415 100644 --- a/drivers/net/cxgbe/cxgbe_flow.c +++ b/drivers/net/cxgbe/cxgbe_flow.c @@ -208,31 +208,6 @@ ch_rte_parsetype_eth(const void *dmask, const struct rte_flow_item *item, return 0; } -static int -ch_rte_parsetype_port(const void *dmask, const struct rte_flow_item *item, - struct ch_filter_specification *fs, - struct rte_flow_error *e) -{ - const struct rte_flow_item_phy_port *val = item->spec; - const struct rte_flow_item_phy_port *umask = item->mask; - const struct rte_flow_item_phy_port *mask; - - mask = umask ? umask : (const struct rte_flow_item_phy_port *)dmask; - - if (!val) - return 0; /* Wildcard, match all physical ports */ - - if (val->index > 0x7) - return rte_flow_error_set(e, EINVAL, RTE_FLOW_ERROR_TYPE_ITEM, - item, - "port index up to 0x7 is supported"); - - if (val->index || (umask && umask->index)) - CXGBE_FILL_FS(val->index, mask->index, iport); - - return 0; -} - static int ch_rte_parsetype_vlan(const void *dmask, const struct rte_flow_item *item, struct ch_filter_specification *fs, @@ -926,13 +901,6 @@ static struct chrte_fparse parseitem[] = { } }, - [RTE_FLOW_ITEM_TYPE_PHY_PORT] = { - .fptr = ch_rte_parsetype_port, - .dmask = &(const struct rte_flow_item_phy_port){ - .index = 0x7, - } - }, - [RTE_FLOW_ITEM_TYPE_VLAN] = { .fptr = ch_rte_parsetype_vlan, .dmask = &(const struct rte_flow_item_vlan){ diff --git a/drivers/net/sfc/sfc_mae.c b/drivers/net/sfc/sfc_mae.c index 06de659ee2..4ddb63cbe5 100644 --- a/drivers/net/sfc/sfc_mae.c +++ b/drivers/net/sfc/sfc_mae.c @@ -1628,63 +1628,6 @@ sfc_mae_rule_parse_item_ethdev_based(const struct rte_flow_item *item, return 0; } -static int -sfc_mae_rule_parse_item_phy_port(const struct rte_flow_item *item, - struct sfc_flow_parse_ctx *ctx, - struct rte_flow_error *error) -{ - struct sfc_mae_parse_ctx *ctx_mae = ctx->mae; - const struct rte_flow_item_phy_port supp_mask = { - .index = 0xffffffff, - }; - const void *def_mask = &rte_flow_item_phy_port_mask; - const struct rte_flow_item_phy_port *spec = NULL; - const struct rte_flow_item_phy_port *mask = NULL; - efx_mport_sel_t mport_v; - int rc; - - if (ctx_mae->match_mport_set) { - return rte_flow_error_set(error, ENOTSUP, - RTE_FLOW_ERROR_TYPE_ITEM, item, - "Can't handle multiple traffic source items"); - } - - rc = sfc_flow_parse_init(item, - (const void **)&spec, (const void **)&mask, - (const void *)&supp_mask, def_mask, - sizeof(struct rte_flow_item_phy_port), error); - if (rc != 0) - return rc; - - if (mask->index != supp_mask.index) { - return rte_flow_error_set(error, EINVAL, - RTE_FLOW_ERROR_TYPE_ITEM, item, - "Bad mask in the PHY_PORT pattern item"); - } - - /* If "spec" is not set, could be any physical port */ - if (spec == NULL) - return 0; - - rc = efx_mae_mport_by_phy_port(spec->index, &mport_v); - if (rc != 0) { - return rte_flow_error_set(error, rc, - RTE_FLOW_ERROR_TYPE_ITEM, item, - "Failed to convert the PHY_PORT index"); - } - - rc = efx_mae_match_spec_mport_set(ctx_mae->match_spec, &mport_v, NULL); - if (rc != 0) { - return rte_flow_error_set(error, rc, - RTE_FLOW_ERROR_TYPE_ITEM, item, - "Failed to set MPORT for the PHY_PORT"); - } - - ctx_mae->match_mport_set = B_TRUE; - - return 0; -} - /* * Having this field ID in a field locator means that this * locator cannot be used to actually set the field at the @@ -2478,18 +2421,6 @@ static const struct sfc_flow_item sfc_flow_items[] = { .ctx_type = SFC_FLOW_PARSE_CTX_MAE, .parse = sfc_mae_rule_parse_item_ethdev_based, }, - { - .type = RTE_FLOW_ITEM_TYPE_PHY_PORT, - .name = "PHY_PORT", - /* - * In terms of RTE flow, this item is a META one, - * and its position in the pattern is don't care. - */ - .prev_layer = SFC_FLOW_ITEM_ANY_LAYER, - .layer = SFC_FLOW_ITEM_ANY_LAYER, - .ctx_type = SFC_FLOW_PARSE_CTX_MAE, - .parse = sfc_mae_rule_parse_item_phy_port, - }, { .type = RTE_FLOW_ITEM_TYPE_ETH, .name = "ETH", diff --git a/lib/ethdev/rte_flow.c b/lib/ethdev/rte_flow.c index 65c74687e3..e7ccdb772e 100644 --- a/lib/ethdev/rte_flow.c +++ b/lib/ethdev/rte_flow.c @@ -97,7 +97,6 @@ static const struct rte_flow_desc_data rte_flow_desc_item[] = { MK_FLOW_ITEM(VOID, 0), MK_FLOW_ITEM(INVERT, 0), MK_FLOW_ITEM(ANY, sizeof(struct rte_flow_item_any)), - MK_FLOW_ITEM(PHY_PORT, sizeof(struct rte_flow_item_phy_port)), MK_FLOW_ITEM(PORT_ID, sizeof(struct rte_flow_item_port_id)), MK_FLOW_ITEM(RAW, sizeof(struct rte_flow_item_raw)), MK_FLOW_ITEM(ETH, sizeof(struct rte_flow_item_eth)), diff --git a/lib/ethdev/rte_flow.h b/lib/ethdev/rte_flow.h index 0a98db9c1c..066e8c8a99 100644 --- a/lib/ethdev/rte_flow.h +++ b/lib/ethdev/rte_flow.h @@ -188,20 +188,6 @@ enum rte_flow_item_type { */ RTE_FLOW_ITEM_TYPE_ANY, - /** - * @deprecated - * @see RTE_FLOW_ITEM_TYPE_PORT_REPRESENTOR - * @see RTE_FLOW_ITEM_TYPE_REPRESENTED_PORT - * - * [META] - * - * Matches traffic originating from (ingress) or going to (egress) a - * physical port of the underlying device. - * - * See struct rte_flow_item_phy_port. - */ - RTE_FLOW_ITEM_TYPE_PHY_PORT, - /** * @deprecated * @see RTE_FLOW_ITEM_TYPE_PORT_REPRESENTOR @@ -686,41 +672,6 @@ static const struct rte_flow_item_any rte_flow_item_any_mask = { }; #endif -/** - * @deprecated - * @see RTE_FLOW_ITEM_TYPE_PORT_REPRESENTOR - * @see RTE_FLOW_ITEM_TYPE_REPRESENTED_PORT - * - * RTE_FLOW_ITEM_TYPE_PHY_PORT - * - * Matches traffic originating from (ingress) or going to (egress) a - * physical port of the underlying device. - * - * The first PHY_PORT item overrides the physical port normally associated - * with the specified DPDK input port (port_id). This item can be provided - * several times to match additional physical ports. - * - * Note that physical ports are not necessarily tied to DPDK input ports - * (port_id) when those are not under DPDK control. Possible values are - * specific to each device, they are not necessarily indexed from zero and - * may not be contiguous. - * - * As a device property, the list of allowed values as well as the value - * associated with a port_id should be retrieved by other means. - * - * A zeroed mask can be used to match any port index. - */ -struct rte_flow_item_phy_port { - uint32_t index; /**< Physical port index. */ -}; - -/** Default mask for RTE_FLOW_ITEM_TYPE_PHY_PORT. */ -#ifndef __cplusplus -static const struct rte_flow_item_phy_port rte_flow_item_phy_port_mask = { - .index = 0x00000000, -}; -#endif - /** * @deprecated * @see RTE_FLOW_ITEM_TYPE_PORT_REPRESENTOR @@ -734,11 +685,6 @@ static const struct rte_flow_item_phy_port rte_flow_item_phy_port_mask = { * Normally only supported if the port ID in question is known by the * underlying PMD and related to the device the flow rule is created * against. - * - * This must not be confused with @p PHY_PORT which refers to the physical - * port of a device, whereas @p PORT_ID refers to a struct rte_eth_dev - * object on the application side (also known as "port representor" - * depending on the kind of underlying device). */ struct rte_flow_item_port_id { uint32_t id; /**< DPDK port ID. */ @@ -3023,8 +2969,6 @@ struct rte_flow_action_vf { * * Directs packets to a given physical port index of the underlying * device. - * - * @see RTE_FLOW_ITEM_TYPE_PHY_PORT */ struct rte_flow_action_phy_port { uint32_t original:1; /**< Use original port index if possible. */ From patchwork Fri Aug 12 19:18:27 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ivan Malov X-Patchwork-Id: 114945 X-Patchwork-Delegate: thomas@monjalon.net Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id 879CDA0543; Fri, 12 Aug 2022 21:19:48 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 19C9842C6B; Fri, 12 Aug 2022 21:18:42 +0200 (CEST) Received: from shelob.oktetlabs.ru (shelob.oktetlabs.ru [91.220.146.113]) by mails.dpdk.org (Postfix) with ESMTP id ACF8042C01 for ; Fri, 12 Aug 2022 21:18:32 +0200 (CEST) Received: from bree.oktetlabs.ru (bree.oktetlabs.ru [192.168.34.5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by shelob.oktetlabs.ru (Postfix) with ESMTPS id 62714CB; Fri, 12 Aug 2022 22:18:32 +0300 (MSK) DKIM-Filter: OpenDKIM Filter v2.11.0 shelob.oktetlabs.ru 62714CB Authentication-Results: shelob.oktetlabs.ru/62714CB; dkim=none; dkim-atps=neutral From: Ivan Malov To: dev@dpdk.org Cc: Ori Kam , Eli Britstein , Ilya Maximets , Thomas Monjalon , Stephen Hemminger , Jerin Jacob , Andrew Rybchenko , Aman Singh , Yuying Zhang , Ajit Khaparde , Somnath Kotur , Rahul Lakkireddy , Ferruh Yigit , Hemant Agrawal , Sachin Saxena Subject: [PATCH 13/13] ethdev: remove deprecated flow action PHY PORT Date: Fri, 12 Aug 2022 22:18:27 +0300 Message-Id: <20220812191827.3187441-14-ivan.malov@oktetlabs.ru> X-Mailer: git-send-email 2.30.2 In-Reply-To: <20220812191827.3187441-1-ivan.malov@oktetlabs.ru> References: <20220812191827.3187441-1-ivan.malov@oktetlabs.ru> MIME-Version: 1.0 X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Such deprecation was commenced in DPDK 21.11. Since then, no parties have objected. Remove. The patch breaks ABI. Signed-off-by: Ivan Malov Reviewed-by: Andrew Rybchenko Acked-by: Ori Kam --- app/test-pmd/cmdline_flow.c | 35 ------------- doc/guides/nics/features/bnxt.ini | 1 - doc/guides/nics/features/cxgbe.ini | 1 - doc/guides/nics/features/default.ini | 1 - doc/guides/nics/features/dpaa2.ini | 1 - doc/guides/nics/features/sfc.ini | 1 - doc/guides/nics/sfc_efx.rst | 2 - doc/guides/prog_guide/rte_flow.rst | 22 --------- doc/guides/rel_notes/release_22_11.rst | 5 ++ doc/guides/testpmd_app_ug/testpmd_funcs.rst | 5 -- drivers/net/bnxt/tf_ulp/ulp_rte_handler_tbl.c | 4 -- drivers/net/bnxt/tf_ulp/ulp_rte_parser.c | 49 ------------------- drivers/net/bnxt/tf_ulp/ulp_rte_parser.h | 5 -- drivers/net/cxgbe/cxgbe_flow.c | 6 --- drivers/net/dpaa2/dpaa2_flow.c | 13 +---- drivers/net/sfc/sfc_mae.c | 36 -------------- lib/ethdev/rte_flow.c | 1 - lib/ethdev/rte_flow.h | 28 ----------- 18 files changed, 6 insertions(+), 210 deletions(-) diff --git a/app/test-pmd/cmdline_flow.c b/app/test-pmd/cmdline_flow.c index 758c1f0efa..80f4c0bbef 100644 --- a/app/test-pmd/cmdline_flow.c +++ b/app/test-pmd/cmdline_flow.c @@ -487,9 +487,6 @@ enum index { ACTION_VF, ACTION_VF_ORIGINAL, ACTION_VF_ID, - ACTION_PHY_PORT, - ACTION_PHY_PORT_ORIGINAL, - ACTION_PHY_PORT_INDEX, ACTION_PORT_ID, ACTION_PORT_ID_ORIGINAL, ACTION_PORT_ID_ID, @@ -1799,7 +1796,6 @@ static const enum index next_action[] = { ACTION_RSS, ACTION_PF, ACTION_VF, - ACTION_PHY_PORT, ACTION_PORT_ID, ACTION_METER, ACTION_METER_COLOR, @@ -1893,13 +1889,6 @@ static const enum index action_vf[] = { ZERO, }; -static const enum index action_phy_port[] = { - ACTION_PHY_PORT_ORIGINAL, - ACTION_PHY_PORT_INDEX, - ACTION_NEXT, - ZERO, -}; - static const enum index action_port_id[] = { ACTION_PORT_ID_ORIGINAL, ACTION_PORT_ID_ID, @@ -5240,30 +5229,6 @@ static const struct token token_list[] = { .args = ARGS(ARGS_ENTRY(struct rte_flow_action_vf, id)), .call = parse_vc_conf, }, - [ACTION_PHY_PORT] = { - .name = "phy_port", - .help = "direct packets to physical port index", - .priv = PRIV_ACTION(PHY_PORT, - sizeof(struct rte_flow_action_phy_port)), - .next = NEXT(action_phy_port), - .call = parse_vc, - }, - [ACTION_PHY_PORT_ORIGINAL] = { - .name = "original", - .help = "use original port index if possible", - .next = NEXT(action_phy_port, NEXT_ENTRY(COMMON_BOOLEAN)), - .args = ARGS(ARGS_ENTRY_BF(struct rte_flow_action_phy_port, - original, 1)), - .call = parse_vc_conf, - }, - [ACTION_PHY_PORT_INDEX] = { - .name = "index", - .help = "physical port index", - .next = NEXT(action_phy_port, NEXT_ENTRY(COMMON_UNSIGNED)), - .args = ARGS(ARGS_ENTRY(struct rte_flow_action_phy_port, - index)), - .call = parse_vc_conf, - }, [ACTION_PORT_ID] = { .name = "port_id", .help = "direct matching traffic to a given DPDK port ID", diff --git a/doc/guides/nics/features/bnxt.ini b/doc/guides/nics/features/bnxt.ini index c05bcff909..b2d54f06aa 100644 --- a/doc/guides/nics/features/bnxt.ini +++ b/doc/guides/nics/features/bnxt.ini @@ -82,7 +82,6 @@ of_push_vlan = Y of_set_vlan_pcp = Y of_set_vlan_vid = Y pf = Y -phy_port = Y port_id = Y port_representor = Y represented_port = Y diff --git a/doc/guides/nics/features/cxgbe.ini b/doc/guides/nics/features/cxgbe.ini index 295816ab9d..a9dbcd0573 100644 --- a/doc/guides/nics/features/cxgbe.ini +++ b/doc/guides/nics/features/cxgbe.ini @@ -51,7 +51,6 @@ of_pop_vlan = Y of_push_vlan = Y of_set_vlan_pcp = Y of_set_vlan_vid = Y -phy_port = Y queue = Y set_ipv4_dst = Y set_ipv4_src = Y diff --git a/doc/guides/nics/features/default.ini b/doc/guides/nics/features/default.ini index 7ed5bd8cb9..f7192cb0da 100644 --- a/doc/guides/nics/features/default.ini +++ b/doc/guides/nics/features/default.ini @@ -170,7 +170,6 @@ of_set_vlan_pcp = of_set_vlan_vid = passthru = pf = -phy_port = port_id = port_representor = queue = diff --git a/doc/guides/nics/features/dpaa2.ini b/doc/guides/nics/features/dpaa2.ini index 53148ad467..cedc234f26 100644 --- a/doc/guides/nics/features/dpaa2.ini +++ b/doc/guides/nics/features/dpaa2.ini @@ -45,7 +45,6 @@ vlan = Y [rte_flow actions] drop = Y -phy_port = Y port_id = Y queue = Y represented_port = Y diff --git a/doc/guides/nics/features/sfc.ini b/doc/guides/nics/features/sfc.ini index 3dac105e35..f5ac644278 100644 --- a/doc/guides/nics/features/sfc.ini +++ b/doc/guides/nics/features/sfc.ini @@ -70,7 +70,6 @@ of_push_vlan = Y of_set_vlan_pcp = Y of_set_vlan_vid = Y pf = Y -phy_port = Y port_id = Y port_representor = Y represented_port = Y diff --git a/doc/guides/nics/sfc_efx.rst b/doc/guides/nics/sfc_efx.rst index 6eca86e96f..fcad671da2 100644 --- a/doc/guides/nics/sfc_efx.rst +++ b/doc/guides/nics/sfc_efx.rst @@ -244,8 +244,6 @@ Supported actions (***transfer*** rules): - MARK -- PHY_PORT - - PF - VF diff --git a/doc/guides/prog_guide/rte_flow.rst b/doc/guides/prog_guide/rte_flow.rst index 9cf4261494..becf7c29c9 100644 --- a/doc/guides/prog_guide/rte_flow.rst +++ b/doc/guides/prog_guide/rte_flow.rst @@ -2003,28 +2003,6 @@ rule or if packets are not addressed to a VF in the first place. | ``id`` | VF ID | +--------------+--------------------------------+ -Action: ``PHY_PORT`` -^^^^^^^^^^^^^^^^^^^^ - -This action is deprecated. Consider: - - `Action: PORT_REPRESENTOR`_ - - `Action: REPRESENTED_PORT`_ - -Directs matching traffic to a given physical port index of the underlying -device. - -.. _table_rte_flow_action_phy_port: - -.. table:: PHY_PORT - - +--------------+-------------------------------------+ - | Field | Value | - +==============+=====================================+ - | ``original`` | use original port index if possible | - +--------------+-------------------------------------+ - | ``index`` | physical port index | - +--------------+-------------------------------------+ - Action: ``PORT_ID`` ^^^^^^^^^^^^^^^^^^^ This action is deprecated. Consider: diff --git a/doc/guides/rel_notes/release_22_11.rst b/doc/guides/rel_notes/release_22_11.rst index 343f40a041..a7a2bf2c60 100644 --- a/doc/guides/rel_notes/release_22_11.rst +++ b/doc/guides/rel_notes/release_22_11.rst @@ -85,6 +85,9 @@ Removed Items * ethdev: removed ``RTE_FLOW_ITEM_TYPE_PHY_PORT``; use ``RTE_FLOW_ITEM_TYPE_REPRESENTED_PORT``. +* ethdev: removed ``RTE_FLOW_ACTION_TYPE_PHY_PORT``; + use ``RTE_FLOW_ACTION_TYPE_REPRESENTED_PORT``. + API Changes ----------- @@ -133,6 +136,8 @@ ABI Changes * ethdev: enum ``RTE_FLOW_ITEM`` was affected by deprecation procedure. +* ethdev: enum ``RTE_FLOW_ACTION`` was affected by deprecation procedure. + Known Issues ------------ diff --git a/doc/guides/testpmd_app_ug/testpmd_funcs.rst b/doc/guides/testpmd_app_ug/testpmd_funcs.rst index b9c2d7a6fe..710d69ddca 100644 --- a/doc/guides/testpmd_app_ug/testpmd_funcs.rst +++ b/doc/guides/testpmd_app_ug/testpmd_funcs.rst @@ -4014,11 +4014,6 @@ This section lists supported actions and their attributes, if any. - ``original {boolean}``: use original VF ID if possible. - ``id {unsigned}``: VF ID. -- ``phy_port``: direct packets to physical port index. - - - ``original {boolean}``: use original port index if possible. - - ``index {unsigned}``: physical port index. - - ``port_id``: direct matching traffic to a given DPDK port ID. - ``original {boolean}``: use original DPDK port ID if possible. diff --git a/drivers/net/bnxt/tf_ulp/ulp_rte_handler_tbl.c b/drivers/net/bnxt/tf_ulp/ulp_rte_handler_tbl.c index 66cd2fba7e..042425ff5c 100644 --- a/drivers/net/bnxt/tf_ulp/ulp_rte_handler_tbl.c +++ b/drivers/net/bnxt/tf_ulp/ulp_rte_handler_tbl.c @@ -61,10 +61,6 @@ struct bnxt_ulp_rte_act_info ulp_act_info[] = { .act_type = BNXT_ULP_ACT_TYPE_SUPPORTED, .proto_act_func = ulp_rte_vf_act_handler }, - [RTE_FLOW_ACTION_TYPE_PHY_PORT] = { - .act_type = BNXT_ULP_ACT_TYPE_SUPPORTED, - .proto_act_func = ulp_rte_phy_port_act_handler - }, [RTE_FLOW_ACTION_TYPE_PORT_ID] = { .act_type = BNXT_ULP_ACT_TYPE_SUPPORTED, .proto_act_func = ulp_rte_port_act_handler diff --git a/drivers/net/bnxt/tf_ulp/ulp_rte_parser.c b/drivers/net/bnxt/tf_ulp/ulp_rte_parser.c index 3faafcf788..1be649a16c 100644 --- a/drivers/net/bnxt/tf_ulp/ulp_rte_parser.c +++ b/drivers/net/bnxt/tf_ulp/ulp_rte_parser.c @@ -2255,55 +2255,6 @@ ulp_rte_port_act_handler(const struct rte_flow_action *act_item, return ulp_rte_parser_act_port_set(param, ifindex, act_dir); } -/* Function to handle the parsing of RTE Flow action phy_port. */ -int32_t -ulp_rte_phy_port_act_handler(const struct rte_flow_action *action_item, - struct ulp_rte_parser_params *prm) -{ - const struct rte_flow_action_phy_port *phy_port; - uint32_t pid; - int32_t rc; - uint16_t pid_s; - enum bnxt_ulp_direction_type dir; - - phy_port = action_item->conf; - if (!phy_port) { - BNXT_TF_DBG(ERR, - "ParseErr: Invalid Argument\n"); - return BNXT_TF_RC_PARSE_ERR; - } - - if (phy_port->original) { - BNXT_TF_DBG(ERR, - "Parse Err:Port Original not supported\n"); - return BNXT_TF_RC_PARSE_ERR; - } - dir = ULP_COMP_FLD_IDX_RD(prm, BNXT_ULP_CF_IDX_DIRECTION); - if (dir != BNXT_ULP_DIR_EGRESS) { - BNXT_TF_DBG(ERR, - "Parse Err:Phy ports are valid only for egress\n"); - return BNXT_TF_RC_PARSE_ERR; - } - /* Get the physical port details from port db */ - rc = ulp_port_db_phy_port_vport_get(prm->ulp_ctx, phy_port->index, - &pid_s); - if (rc) { - BNXT_TF_DBG(ERR, "Failed to get port details\n"); - return -EINVAL; - } - - pid = pid_s; - pid = rte_cpu_to_be_32(pid); - memcpy(&prm->act_prop.act_details[BNXT_ULP_ACT_PROP_IDX_VPORT], - &pid, BNXT_ULP_ACT_PROP_SZ_VPORT); - - /* Update the action port set bit */ - ULP_COMP_FLD_IDX_WR(prm, BNXT_ULP_CF_IDX_ACT_PORT_IS_SET, 1); - ULP_COMP_FLD_IDX_WR(prm, BNXT_ULP_CF_IDX_ACT_PORT_TYPE, - BNXT_ULP_INTF_TYPE_PHY_PORT); - return BNXT_TF_RC_SUCCESS; -} - /* Function to handle the parsing of RTE Flow action pop vlan. */ int32_t ulp_rte_of_pop_vlan_act_handler(const struct rte_flow_action *a __rte_unused, diff --git a/drivers/net/bnxt/tf_ulp/ulp_rte_parser.h b/drivers/net/bnxt/tf_ulp/ulp_rte_parser.h index 5a9b056b16..f59b10e88b 100644 --- a/drivers/net/bnxt/tf_ulp/ulp_rte_parser.h +++ b/drivers/net/bnxt/tf_ulp/ulp_rte_parser.h @@ -194,11 +194,6 @@ int32_t ulp_rte_port_act_handler(const struct rte_flow_action *act_item, struct ulp_rte_parser_params *params); -/* Function to handle the parsing of RTE Flow action phy_port. */ -int32_t -ulp_rte_phy_port_act_handler(const struct rte_flow_action *action_item, - struct ulp_rte_parser_params *params); - /* Function to handle the parsing of RTE Flow action pop vlan. */ int32_t ulp_rte_of_pop_vlan_act_handler(const struct rte_flow_action *action_item, diff --git a/drivers/net/cxgbe/cxgbe_flow.c b/drivers/net/cxgbe/cxgbe_flow.c index d383334415..d66672a9e6 100644 --- a/drivers/net/cxgbe/cxgbe_flow.c +++ b/drivers/net/cxgbe/cxgbe_flow.c @@ -598,7 +598,6 @@ ch_rte_parse_atype_switch(const struct rte_flow_action *a, const struct rte_flow_action_set_ipv4 *ipv4; const struct rte_flow_action_set_ipv6 *ipv6; const struct rte_flow_action_set_tp *tp_port; - const struct rte_flow_action_phy_port *port; const struct rte_flow_action_set_mac *mac; int item_index; u16 tmp_vlan; @@ -645,10 +644,6 @@ ch_rte_parse_atype_switch(const struct rte_flow_action *a, case RTE_FLOW_ACTION_TYPE_OF_POP_VLAN: fs->newvlan = VLAN_REMOVE; break; - case RTE_FLOW_ACTION_TYPE_PHY_PORT: - port = (const struct rte_flow_action_phy_port *)a->conf; - fs->eport = port->index; - break; case RTE_FLOW_ACTION_TYPE_SET_IPV4_SRC: item_index = cxgbe_get_flow_item_index(items, RTE_FLOW_ITEM_TYPE_IPV4); @@ -836,7 +831,6 @@ cxgbe_rtef_parse_actions(struct rte_flow *flow, goto action_switch; case RTE_FLOW_ACTION_TYPE_OF_PUSH_VLAN: case RTE_FLOW_ACTION_TYPE_OF_POP_VLAN: - case RTE_FLOW_ACTION_TYPE_PHY_PORT: case RTE_FLOW_ACTION_TYPE_MAC_SWAP: case RTE_FLOW_ACTION_TYPE_SET_IPV4_SRC: case RTE_FLOW_ACTION_TYPE_SET_IPV4_DST: diff --git a/drivers/net/dpaa2/dpaa2_flow.c b/drivers/net/dpaa2/dpaa2_flow.c index 25616b0035..df06c3862e 100644 --- a/drivers/net/dpaa2/dpaa2_flow.c +++ b/drivers/net/dpaa2/dpaa2_flow.c @@ -83,7 +83,6 @@ static const enum rte_flow_action_type dpaa2_supported_action_type[] = { RTE_FLOW_ACTION_TYPE_END, RTE_FLOW_ACTION_TYPE_QUEUE, - RTE_FLOW_ACTION_TYPE_PHY_PORT, RTE_FLOW_ACTION_TYPE_PORT_ID, RTE_FLOW_ACTION_TYPE_REPRESENTED_PORT, RTE_FLOW_ACTION_TYPE_RSS @@ -92,7 +91,6 @@ enum rte_flow_action_type dpaa2_supported_action_type[] = { static const enum rte_flow_action_type dpaa2_supported_fs_action_type[] = { RTE_FLOW_ACTION_TYPE_QUEUE, - RTE_FLOW_ACTION_TYPE_PHY_PORT, RTE_FLOW_ACTION_TYPE_PORT_ID, RTE_FLOW_ACTION_TYPE_REPRESENTED_PORT, }; @@ -3281,17 +3279,11 @@ static inline struct rte_eth_dev * dpaa2_flow_redirect_dev(struct dpaa2_dev_priv *priv, const struct rte_flow_action *action) { - const struct rte_flow_action_phy_port *phy_port; const struct rte_flow_action_port_id *port_id; int idx = -1; struct rte_eth_dev *dest_dev; - if (action->type == RTE_FLOW_ACTION_TYPE_PHY_PORT) { - phy_port = (const struct rte_flow_action_phy_port *) - action->conf; - if (!phy_port->original) - idx = phy_port->index; - } else if (action->type == RTE_FLOW_ACTION_TYPE_PORT_ID) { + if (action->type == RTE_FLOW_ACTION_TYPE_PORT_ID) { port_id = (const struct rte_flow_action_port_id *) action->conf; if (!port_id->original) @@ -3345,7 +3337,6 @@ dpaa2_flow_verify_action( } break; case RTE_FLOW_ACTION_TYPE_REPRESENTED_PORT: - case RTE_FLOW_ACTION_TYPE_PHY_PORT: case RTE_FLOW_ACTION_TYPE_PORT_ID: if (!dpaa2_flow_redirect_dev(priv, &actions[j])) { DPAA2_PMD_ERR("Invalid port id of action"); @@ -3523,7 +3514,6 @@ dpaa2_generic_flow_set(struct rte_flow *flow, switch (actions[j].type) { case RTE_FLOW_ACTION_TYPE_QUEUE: case RTE_FLOW_ACTION_TYPE_REPRESENTED_PORT: - case RTE_FLOW_ACTION_TYPE_PHY_PORT: case RTE_FLOW_ACTION_TYPE_PORT_ID: memset(&action, 0, sizeof(struct dpni_fs_action_cfg)); flow->action = actions[j].type; @@ -4098,7 +4088,6 @@ int dpaa2_flow_destroy(struct rte_eth_dev *dev, switch (flow->action) { case RTE_FLOW_ACTION_TYPE_QUEUE: case RTE_FLOW_ACTION_TYPE_REPRESENTED_PORT: - case RTE_FLOW_ACTION_TYPE_PHY_PORT: case RTE_FLOW_ACTION_TYPE_PORT_ID: if (priv->num_rx_tc > 1) { /* Remove entry from QoS table first */ diff --git a/drivers/net/sfc/sfc_mae.c b/drivers/net/sfc/sfc_mae.c index 4ddb63cbe5..421bb6da95 100644 --- a/drivers/net/sfc/sfc_mae.c +++ b/drivers/net/sfc/sfc_mae.c @@ -3463,36 +3463,6 @@ sfc_mae_rule_parse_action_count(struct sfc_adapter *sa, return rc; } -static int -sfc_mae_rule_parse_action_phy_port(struct sfc_adapter *sa, - const struct rte_flow_action_phy_port *conf, - efx_mae_actions_t *spec) -{ - efx_mport_sel_t mport; - uint32_t phy_port; - int rc; - - if (conf->original != 0) - phy_port = efx_nic_cfg_get(sa->nic)->enc_assigned_port; - else - phy_port = conf->index; - - rc = efx_mae_mport_by_phy_port(phy_port, &mport); - if (rc != 0) { - sfc_err(sa, "failed to convert phys. port ID %u to m-port selector: %s", - phy_port, strerror(rc)); - return rc; - } - - rc = efx_mae_action_set_populate_deliver(spec, &mport); - if (rc != 0) { - sfc_err(sa, "failed to request action DELIVER with m-port selector 0x%08x: %s", - mport.sel, strerror(rc)); - } - - return rc; -} - static int sfc_mae_rule_parse_action_pf_vf(struct sfc_adapter *sa, const struct rte_flow_action_vf *vf_conf, @@ -3626,7 +3596,6 @@ static const char * const action_names[] = { [RTE_FLOW_ACTION_TYPE_COUNT] = "COUNT", [RTE_FLOW_ACTION_TYPE_FLAG] = "FLAG", [RTE_FLOW_ACTION_TYPE_MARK] = "MARK", - [RTE_FLOW_ACTION_TYPE_PHY_PORT] = "PHY_PORT", [RTE_FLOW_ACTION_TYPE_PF] = "PF", [RTE_FLOW_ACTION_TYPE_VF] = "VF", [RTE_FLOW_ACTION_TYPE_PORT_ID] = "PORT_ID", @@ -3745,11 +3714,6 @@ sfc_mae_rule_parse_action(struct sfc_adapter *sa, custom_error = B_TRUE; } break; - case RTE_FLOW_ACTION_TYPE_PHY_PORT: - SFC_BUILD_SET_OVERFLOW(RTE_FLOW_ACTION_TYPE_PHY_PORT, - bundle->actions_mask); - rc = sfc_mae_rule_parse_action_phy_port(sa, action->conf, spec); - break; case RTE_FLOW_ACTION_TYPE_PF: SFC_BUILD_SET_OVERFLOW(RTE_FLOW_ACTION_TYPE_PF, bundle->actions_mask); diff --git a/lib/ethdev/rte_flow.c b/lib/ethdev/rte_flow.c index e7ccdb772e..eeb9398e77 100644 --- a/lib/ethdev/rte_flow.c +++ b/lib/ethdev/rte_flow.c @@ -188,7 +188,6 @@ static const struct rte_flow_desc_data rte_flow_desc_action[] = { MK_FLOW_ACTION(RSS, sizeof(struct rte_flow_action_rss)), MK_FLOW_ACTION(PF, 0), MK_FLOW_ACTION(VF, sizeof(struct rte_flow_action_vf)), - MK_FLOW_ACTION(PHY_PORT, sizeof(struct rte_flow_action_phy_port)), MK_FLOW_ACTION(PORT_ID, sizeof(struct rte_flow_action_port_id)), MK_FLOW_ACTION(METER, sizeof(struct rte_flow_action_meter)), MK_FLOW_ACTION(SECURITY, sizeof(struct rte_flow_action_security)), diff --git a/lib/ethdev/rte_flow.h b/lib/ethdev/rte_flow.h index 066e8c8a99..8c33e84ee8 100644 --- a/lib/ethdev/rte_flow.h +++ b/lib/ethdev/rte_flow.h @@ -2224,18 +2224,6 @@ enum rte_flow_action_type { */ RTE_FLOW_ACTION_TYPE_VF, - /** - * @deprecated - * @see RTE_FLOW_ACTION_TYPE_PORT_REPRESENTOR - * @see RTE_FLOW_ACTION_TYPE_REPRESENTED_PORT - * - * Directs packets to a given physical port index of the underlying - * device. - * - * See struct rte_flow_action_phy_port. - */ - RTE_FLOW_ACTION_TYPE_PHY_PORT, - /** * @deprecated * @see RTE_FLOW_ACTION_TYPE_PORT_REPRESENTOR @@ -2960,22 +2948,6 @@ struct rte_flow_action_vf { uint32_t id; /**< VF ID. */ }; -/** - * @deprecated - * @see RTE_FLOW_ACTION_TYPE_PORT_REPRESENTOR - * @see RTE_FLOW_ACTION_TYPE_REPRESENTED_PORT - * - * RTE_FLOW_ACTION_TYPE_PHY_PORT - * - * Directs packets to a given physical port index of the underlying - * device. - */ -struct rte_flow_action_phy_port { - uint32_t original:1; /**< Use original port index if possible. */ - uint32_t reserved:31; /**< Reserved, must be zero. */ - uint32_t index; /**< Physical port index. */ -}; - /** * @deprecated * @see RTE_FLOW_ACTION_TYPE_PORT_REPRESENTOR