From patchwork Mon Feb 26 01:44:57 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Chaoyong He X-Patchwork-Id: 137178 X-Patchwork-Delegate: ferruh.yigit@amd.com 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 49B5843BDB; Mon, 26 Feb 2024 02:45:31 +0100 (CET) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 148BF42D7D; Mon, 26 Feb 2024 02:45:27 +0100 (CET) Received: from NAM04-MW2-obe.outbound.protection.outlook.com (mail-mw2nam04on2090.outbound.protection.outlook.com [40.107.101.90]) by mails.dpdk.org (Postfix) with ESMTP id C0BB8402B2 for ; Mon, 26 Feb 2024 02:45:24 +0100 (CET) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=caWUgt4b7Hgtu/On5Q5sJ/KeeykDJTVhwna02IUvGD51dsfjJuknxvkYx200kCiOC4uoslCW6kzAXRG+yxc7zOLveWpBVVIXqyyqLLJCuNb8XMRJCWPEvq7vlU59UcSamGQq9VQpm6uZ4TEb0hK5bfuWcKxvpgEbgKicUxd2VF9ADaiW3flifOp3IvHxTyXdBS7TM1Mq54lFmwnNobxiU67UN0jplKBKTAGFBLXl7EhbvdwEG6Rg6HUmk1zz+D9M0IjzGDVKoiH0ECm8FEbuHsnndeNSo8UM1iTPfnpFVgsgzgqiHg0weyG5D3ngXL/uUhP9pXtRc9jkWQdLbMdfqA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=1WfgTdnRvZwws94dIWHt3M2GAtggp1bQTmrhdkmwUsM=; b=FkY6n3O5kt53OgtVTS9gGWtkEaRllfEVEWLnL8AY2CNfZK3Z23/X8X+6cHCFohYj48PuZCXN40WL5hZXcgy3bcKsKnydc0NE8E6NRsNNGdrw03UDLMoFziWiGo8brRpbTI0wR1K9D9mlMzYsnFc1pKeerAEkqD0z2IoHRB8ylPFLIK74C07pQjE8Wir0TXNny6QMHinLZJGLr8DdyMSNKbR0NOJZno/RWsMtW5MyRzojUa82YYQqAV7MpOQs35zpd/PKN23yV5i94Ul38WHkVdDsQ3x14R0hvnK+LqOktWtIgS0WbaczLlHjO0vJLtNkKuKws1uoluqofohXGkdmcw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=corigine.com; dmarc=pass action=none header.from=corigine.com; dkim=pass header.d=corigine.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=corigine.onmicrosoft.com; s=selector2-corigine-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=1WfgTdnRvZwws94dIWHt3M2GAtggp1bQTmrhdkmwUsM=; b=eKIcRTXVVbo/5Og9kvqq9LbmM2/QA4pYKrZv9zZzO8MhqDQFUymvkCHgvzu3PAqKsHrX3nSjjZNBc+Lf2AJUNf4AL7g4TH0+7pZcARWp2Sar4rUUNOBq66SjESAj4bRFPFW6U7XxVieIahv2N251vwmua745rqqcvUryM2UvDWE= Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=corigine.com; Received: from SJ0PR13MB5545.namprd13.prod.outlook.com (2603:10b6:a03:424::5) by PH0PR13MB5794.namprd13.prod.outlook.com (2603:10b6:510:11d::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7316.34; Mon, 26 Feb 2024 01:45:22 +0000 Received: from SJ0PR13MB5545.namprd13.prod.outlook.com ([fe80::8e02:f738:570a:f8aa]) by SJ0PR13MB5545.namprd13.prod.outlook.com ([fe80::8e02:f738:570a:f8aa%7]) with mapi id 15.20.7316.032; Mon, 26 Feb 2024 01:45:22 +0000 From: Chaoyong He To: dev@dpdk.org Cc: oss-drivers@corigine.com, Long Wu , Chaoyong He , Peng Zhang Subject: [PATCH v3 1/4] ethdev: add function to check representor port Date: Mon, 26 Feb 2024 09:44:57 +0800 Message-Id: <20240226014500.3537561-2-chaoyong.he@corigine.com> X-Mailer: git-send-email 2.39.1 In-Reply-To: <20240226014500.3537561-1-chaoyong.he@corigine.com> References: <20240223024217.3052031-1-chaoyong.he@corigine.com> <20240226014500.3537561-1-chaoyong.he@corigine.com> X-ClientProxiedBy: PH8PR05CA0005.namprd05.prod.outlook.com (2603:10b6:510:2cc::14) To SJ0PR13MB5545.namprd13.prod.outlook.com (2603:10b6:a03:424::5) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: SJ0PR13MB5545:EE_|PH0PR13MB5794:EE_ X-MS-Office365-Filtering-Correlation-Id: 15f81eb3-7793-4d59-ba59-08dc366c9889 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: YKdNM21gVBBXQm72H0+Nn7bniXabDy6RG9nIoS44hgA2OH06DEGYNGes3ODuuEMfDbnO19ytz6RzZGb0PsDzNNPLofrt1AtIO86yBIn4Jv9GYHUzEctl6mFD9N6pDnFm94uicu0pmINnXSyK4P4iNrA5BnbDVHPndR3TIByDinCgIQwqNPQSjmm4iAYPwfzHUkHMMB64GuRGOtLpOZnSsGbl6zLSW80R4otZw+OCNLE/k4dwaREomwSR8a6on62iKzRft7clfJJp+5rbAYMnvGX2GuD6tQrA2iy8vZtqUVsVgEq39BFnW9DhLgGX8jOWflGSjbjiem7w1iP70ohlICWJi5hcR1Oi+VjNZO/BpnLZbs+kuZ97ftvzjoNtDclnG64MaB6alTBBqBtywxMJng45HqNjvfae9LQfJ/uY280OnMKL3ICik9MEhi4zCGzpgdoSt9jUV3t9df5PJJgdif5wZGvz0QRrqChxdYxTkaiuaiU2ML1JCBshHLVAfAq2dygKX5Dckl9mPNG7ITFyvnaP1J/AO7Bu57blQvwF503SkHZclxG4i0s6wK+4XhlcpopzP9ykAUm22qgC4sqRsxmJHQ9LdS1C85aXhTLeZuBlUH2MGPLgd+FNPHte4+GO1Xk6OxAEIYx/04h7WnbGtIOWBG197i6ATS5KqrlTemTBgn2q6EjTyepYCcY0WKVJsh1926vP18nLSWfFVlQJLqozOCccrNwy4Ae3Q+04tok= X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:SJ0PR13MB5545.namprd13.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230031)(38350700005); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: yZ2Qe3RazOB1SgIQYRKPLAW35MWNGUh6Zd6ma7RDY1alvgV9LMZdTDTqhv2NvkSEy7xFjnlwe2TbxIa7aXGFwgnXKtlvrYTU64YwDEpDfDOXfZo7sJ4u/SCIP1DdADewyArKb5izkdp1dpLEY9bebpik0J+SpLm+fH0FV4M0CseC7ETtXtRWYMhgCNiG/OASZS6J/sPY/tUMuyb/gW7HrYZ5lDhG9yLJc0jJbEQSNwEGBAl7ThjPLlu7EqsNCucQcKS9wppEbmwg6KZZUaMFc+jUcDLNiyc+IaswwCHXpO+psSrObaNNaBAwWRRwA53HLG9j5N06hfh5Y12s3xrSSShyavQ3VTC8rhvYHGGkZ9r4ojyQ/kGtecesXdBxLKQb+vNpZsQJeIINn9FSunf7PlVVnT29g+WOoXKh8S7VDeUqpfBgBJsVlpvpKNrvh1NgnxcUbCF8HsBDk2xK69soleffJQOFHUMacycJy8YBvP34BBx00MuJ9NpF3CMbQW8mL8QKmK/oZP+8UUiR70+MEv4l4+C9a0HTdN5ZXZ0Ta0MmUStfnZBC7KhEKHsxLStsMEN/PAkuSyloQgkv8V16Up8k2VEDNYgtMYyHVwYt9d4+u7N2ySafqlDo7s63eln5/gVfXGYHppD7RNih7nfyEDQ5tYRcv1Ttip+gWsGejmbxQDGqMy0rZJrtVahnX7nAJQInF/UZC1bVJCTjaPIpcLNJ6jbtyYFc0VXyw3nVJhTClKrFqdXklb3V4+sL5DdmDSwZP6No1+k+T1huC2r4IbarROdV0hyIpMJaMPbml5t8RR1BNPgfRHcxRIP1HNiekG5yZbTXhdHCBfyFXsG/Hez8b0VN7vxtwN7IOw3rN603Un5k/FRF5xuLtW0NDz1ZrAXZt7hPFRp2xiAUwnGWlssPu7nmHDHXYRKXceuIg0c161BrGSOTPNan6KSqte7GQLwJAohGUOhE2Xzox1g1P75ymJmiIsrejcqTKvXhEcXyBHn/0iAFWDGU9/wqis3L0R3wZiISGAmQhbRuSJSf62HLgX2c/zGOGZNuClnqMpWVst8I+Hjb5mXDe62UozQYhmdnAydatVaDP4/iiCX1yz+e5/uK439Mk6l9Ma3CfuKry+uTTSvoYCumKz0vk29Fhwh7E6uN/KEPKTzv94RqrWsC+3F8m30ey8Ia+joMZx8vfoJPw2HKVr8tA1tlMi00QUN3t7WdJj6wCz8tumb2gHo/Mr7O/dQkrxAMRiIyPtWf1icgMhv3vHamFa2ZivvdKPgFk9aryiLh2qmk8667WU6r/XiD3BGNQg5Z5TToJ/1yO81Qh3uK6exy8NtxWUl+Ykdsvo2eBBQ70hNQGZ9jPto3YLoVbC9eOQLa4BD3HCg1++yk/iMr7wUOUTa3Kt2YGnp0ZvzkZdlgLG49fPZxPTql0jl/jXPQj8ySU52kc88zmS5oFNwSf+9BIUe6gkYD97ZUI7/Mu2vgDxk/erMDmEhdp942POJVV3Ssh5SyuNIpu5uiwypL2cDaHnWhYFZ5GMljaxy8EfecAkz5FkG7HFX0iBRJs4Hv1xvPYqEqzC9szX+Oj5uk/+5uyTtIsqZ0TrYm+OL0dlxgSXtmXT3srw== X-OriginatorOrg: corigine.com X-MS-Exchange-CrossTenant-Network-Message-Id: 15f81eb3-7793-4d59-ba59-08dc366c9889 X-MS-Exchange-CrossTenant-AuthSource: SJ0PR13MB5545.namprd13.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 26 Feb 2024 01:45:22.6655 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: fe128f2c-073b-4c20-818e-7246a585940c X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: fgsUBC4JrdAOi0P2xSV4pKF5DFzFhSqBgoWLxw01Q8nfLBGFMWlk0md6zbMeBs4P46giB33oaIgIGGtYDC2wgwsn3mmF5M+OY+uWjWMMDww= X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH0PR13MB5794 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 From: Long Wu Add a function to check if a device is representor port, also modified the related codes for PMDs. Signed-off-by: Long Wu Reviewed-by: Chaoyong He Reviewed-by: Peng Zhang Reviewed-by: Ferruh Yigit --- drivers/net/bnxt/bnxt.h | 3 --- drivers/net/bnxt/bnxt_ethdev.c | 4 ++-- drivers/net/bnxt/tf_ulp/bnxt_tf_pmd_shim.c | 12 ++++++------ drivers/net/bnxt/tf_ulp/bnxt_ulp.c | 4 ++-- drivers/net/bnxt/tf_ulp/ulp_def_rules.c | 4 ++-- drivers/net/cpfl/cpfl_representor.c | 2 +- drivers/net/enic/enic.h | 5 ----- drivers/net/enic/enic_ethdev.c | 2 +- drivers/net/enic/enic_fm_flow.c | 20 ++++++++++---------- drivers/net/enic/enic_main.c | 4 ++-- drivers/net/i40e/i40e_ethdev.c | 2 +- drivers/net/ice/ice_dcf_ethdev.c | 2 +- drivers/net/ixgbe/ixgbe_ethdev.c | 2 +- drivers/net/nfp/flower/nfp_flower_flow.c | 2 +- drivers/net/nfp/nfp_mtr.c | 2 +- drivers/net/nfp/nfp_net_common.c | 4 ++-- drivers/net/nfp/nfp_net_flow.c | 2 +- lib/ethdev/ethdev_driver.h | 17 +++++++++++++++++ lib/ethdev/rte_class_eth.c | 4 ++-- 19 files changed, 53 insertions(+), 44 deletions(-) diff --git a/drivers/net/bnxt/bnxt.h b/drivers/net/bnxt/bnxt.h index fcf2b8be97..82036a16a1 100644 --- a/drivers/net/bnxt/bnxt.h +++ b/drivers/net/bnxt/bnxt.h @@ -1204,9 +1204,6 @@ extern const struct rte_flow_ops bnxt_flow_meter_ops; } \ } while (0) -#define BNXT_ETH_DEV_IS_REPRESENTOR(eth_dev) \ - ((eth_dev)->data->dev_flags & RTE_ETH_DEV_REPRESENTOR) - extern int bnxt_logtype_driver; #define RTE_LOGTYPE_BNXT bnxt_logtype_driver #define PMD_DRV_LOG_RAW(level, fmt, args...) \ diff --git a/drivers/net/bnxt/bnxt_ethdev.c b/drivers/net/bnxt/bnxt_ethdev.c index f8d83662f4..825e9c1941 100644 --- a/drivers/net/bnxt/bnxt_ethdev.c +++ b/drivers/net/bnxt/bnxt_ethdev.c @@ -3525,7 +3525,7 @@ bnxt_flow_ops_get_op(struct rte_eth_dev *dev, if (!bp) return -EIO; - if (BNXT_ETH_DEV_IS_REPRESENTOR(dev)) { + if (rte_eth_dev_is_repr(dev)) { struct bnxt_representor *vfr = dev->data->dev_private; bp = vfr->parent_dev->data->dev_private; /* parent is deleted while children are still valid */ @@ -6781,7 +6781,7 @@ static int bnxt_pci_remove(struct rte_pci_device *pci_dev) PMD_DRV_LOG(DEBUG, "BNXT Port:%d pci remove\n", eth_dev->data->port_id); if (rte_eal_process_type() == RTE_PROC_PRIMARY) { - if (eth_dev->data->dev_flags & RTE_ETH_DEV_REPRESENTOR) + if (rte_eth_dev_is_repr(eth_dev)) return rte_eth_dev_destroy(eth_dev, bnxt_representor_uninit); else diff --git a/drivers/net/bnxt/tf_ulp/bnxt_tf_pmd_shim.c b/drivers/net/bnxt/tf_ulp/bnxt_tf_pmd_shim.c index 239191e14e..96d61c3ed2 100644 --- a/drivers/net/bnxt/tf_ulp/bnxt_tf_pmd_shim.c +++ b/drivers/net/bnxt/tf_ulp/bnxt_tf_pmd_shim.c @@ -202,7 +202,7 @@ bnxt_pmd_get_svif(uint16_t port_id, bool func_svif, struct bnxt *bp; eth_dev = &rte_eth_devices[port_id]; - if (BNXT_ETH_DEV_IS_REPRESENTOR(eth_dev)) { + if (rte_eth_dev_is_repr(eth_dev)) { struct bnxt_representor *vfr = eth_dev->data->dev_private; if (!vfr) return 0; @@ -260,7 +260,7 @@ bnxt_pmd_get_vnic_id(uint16_t port, enum bnxt_ulp_intf_type type) struct bnxt *bp; eth_dev = &rte_eth_devices[port]; - if (BNXT_ETH_DEV_IS_REPRESENTOR(eth_dev)) { + if (rte_eth_dev_is_repr(eth_dev)) { struct bnxt_representor *vfr = eth_dev->data->dev_private; if (!vfr) return 0; @@ -285,7 +285,7 @@ bnxt_pmd_get_fw_func_id(uint16_t port, enum bnxt_ulp_intf_type type) struct bnxt *bp; eth_dev = &rte_eth_devices[port]; - if (BNXT_ETH_DEV_IS_REPRESENTOR(eth_dev)) { + if (rte_eth_dev_is_repr(eth_dev)) { struct bnxt_representor *vfr = eth_dev->data->dev_private; if (!vfr) return 0; @@ -308,7 +308,7 @@ bnxt_pmd_get_interface_type(uint16_t port) struct bnxt *bp; eth_dev = &rte_eth_devices[port]; - if (BNXT_ETH_DEV_IS_REPRESENTOR(eth_dev)) + if (rte_eth_dev_is_repr(eth_dev)) return BNXT_ULP_INTF_TYPE_VF_REP; bp = eth_dev->data->dev_private; @@ -330,7 +330,7 @@ bnxt_pmd_get_phy_port_id(uint16_t port_id) struct bnxt *bp; eth_dev = &rte_eth_devices[port_id]; - if (BNXT_ETH_DEV_IS_REPRESENTOR(eth_dev)) { + if (rte_eth_dev_is_repr(eth_dev)) { vfr = eth_dev->data->dev_private; if (!vfr) return 0; @@ -350,7 +350,7 @@ bnxt_pmd_get_parif(uint16_t port_id, enum bnxt_ulp_intf_type type) struct bnxt *bp; eth_dev = &rte_eth_devices[port_id]; - if (BNXT_ETH_DEV_IS_REPRESENTOR(eth_dev)) { + if (rte_eth_dev_is_repr(eth_dev)) { struct bnxt_representor *vfr = eth_dev->data->dev_private; if (!vfr) return 0; diff --git a/drivers/net/bnxt/tf_ulp/bnxt_ulp.c b/drivers/net/bnxt/tf_ulp/bnxt_ulp.c index 274e935a1f..33028c470f 100644 --- a/drivers/net/bnxt/tf_ulp/bnxt_ulp.c +++ b/drivers/net/bnxt/tf_ulp/bnxt_ulp.c @@ -1559,7 +1559,7 @@ bnxt_ulp_destroy_vfr_default_rules(struct bnxt *bp, bool global) struct rte_eth_dev *vfr_eth_dev; struct bnxt_representor *vfr_bp; - if (!BNXT_TRUFLOW_EN(bp) || BNXT_ETH_DEV_IS_REPRESENTOR(bp->eth_dev)) + if (!BNXT_TRUFLOW_EN(bp) || rte_eth_dev_is_repr(bp->eth_dev)) return; if (!bp->ulp_ctx || !bp->ulp_ctx->cfg_data) @@ -2316,7 +2316,7 @@ bnxt_ulp_eth_dev_ptr2_cntxt_get(struct rte_eth_dev *dev) { struct bnxt *bp = (struct bnxt *)dev->data->dev_private; - if (BNXT_ETH_DEV_IS_REPRESENTOR(dev)) { + if (rte_eth_dev_is_repr(dev)) { struct bnxt_representor *vfr = dev->data->dev_private; bp = vfr->parent_dev->data->dev_private; diff --git a/drivers/net/bnxt/tf_ulp/ulp_def_rules.c b/drivers/net/bnxt/tf_ulp/ulp_def_rules.c index fe1f65deb9..8237dbd294 100644 --- a/drivers/net/bnxt/tf_ulp/ulp_def_rules.c +++ b/drivers/net/bnxt/tf_ulp/ulp_def_rules.c @@ -449,7 +449,7 @@ bnxt_ulp_destroy_df_rules(struct bnxt *bp, bool global) uint16_t port_id; if (!BNXT_TRUFLOW_EN(bp) || - BNXT_ETH_DEV_IS_REPRESENTOR(bp->eth_dev)) + rte_eth_dev_is_repr(bp->eth_dev)) return; if (!bp->ulp_ctx || !bp->ulp_ctx->cfg_data) @@ -514,7 +514,7 @@ bnxt_ulp_create_df_rules(struct bnxt *bp) int rc = 0; if (!BNXT_TRUFLOW_EN(bp) || - BNXT_ETH_DEV_IS_REPRESENTOR(bp->eth_dev) || !bp->ulp_ctx) + rte_eth_dev_is_repr(bp->eth_dev) || !bp->ulp_ctx) return 0; port_id = bp->eth_dev->data->port_id; diff --git a/drivers/net/cpfl/cpfl_representor.c b/drivers/net/cpfl/cpfl_representor.c index e2ed9eda04..60b72b5ec1 100644 --- a/drivers/net/cpfl/cpfl_representor.c +++ b/drivers/net/cpfl/cpfl_representor.c @@ -339,7 +339,7 @@ cpfl_repr_link_update(struct rte_eth_dev *ethdev, struct cpfl_vport_id vi; int ret; - if (!(ethdev->data->dev_flags & RTE_ETH_DEV_REPRESENTOR)) { + if (!rte_eth_dev_is_repr(ethdev)) { PMD_INIT_LOG(ERR, "This ethdev is not representor."); return -EINVAL; } diff --git a/drivers/net/enic/enic.h b/drivers/net/enic/enic.h index 78778704f2..f46903ea9e 100644 --- a/drivers/net/enic/enic.h +++ b/drivers/net/enic/enic.h @@ -233,11 +233,6 @@ struct enic_vf_representor { #define VF_ENIC_TO_VF_REP(vf_enic) \ container_of(vf_enic, struct enic_vf_representor, enic) -static inline int enic_is_vf_rep(struct enic *enic) -{ - return !!(enic->rte_dev->data->dev_flags & RTE_ETH_DEV_REPRESENTOR); -} - /* Compute ethdev's max packet size from MTU */ static inline uint32_t enic_mtu_to_max_rx_pktlen(uint32_t mtu) { diff --git a/drivers/net/enic/enic_ethdev.c b/drivers/net/enic/enic_ethdev.c index 7e040c36c4..cad8db2f6f 100644 --- a/drivers/net/enic/enic_ethdev.c +++ b/drivers/net/enic/enic_ethdev.c @@ -1386,7 +1386,7 @@ static int eth_enic_pci_remove(struct rte_pci_device *pci_dev) ethdev = rte_eth_dev_allocated(pci_dev->device.name); if (!ethdev) return -ENODEV; - if (ethdev->data->dev_flags & RTE_ETH_DEV_REPRESENTOR) + if (rte_eth_dev_is_repr(ethdev)) return rte_eth_dev_destroy(ethdev, enic_vf_representor_uninit); else return rte_eth_dev_destroy(ethdev, eth_enic_dev_uninit); diff --git a/drivers/net/enic/enic_fm_flow.c b/drivers/net/enic/enic_fm_flow.c index 90027dc676..8988148454 100644 --- a/drivers/net/enic/enic_fm_flow.c +++ b/drivers/net/enic/enic_fm_flow.c @@ -1535,14 +1535,14 @@ vf_egress_port_id_action(struct enic_flowman *fm, ENICPMD_FUNC_TRACE(); src_enic = fm->user_enic; dst_enic = pmd_priv(dst_dev); - if (!(src_enic->rte_dev->data->dev_flags & RTE_ETH_DEV_REPRESENTOR)) { + if (!rte_eth_dev_is_repr(src_enic->rte_dev)) { return rte_flow_error_set(error, EINVAL, RTE_FLOW_ERROR_TYPE_ACTION, NULL, "source port is not VF representor"); } /* VF -> PF uplink. dst is not VF representor */ - if (!(dst_dev->data->dev_flags & RTE_ETH_DEV_REPRESENTOR)) { + if (!rte_eth_dev_is_repr(dst_dev)) { /* PF is the VF's PF? Then nothing to do */ vf = VF_ENIC_TO_VF_REP(src_enic); if (vf->pf == dst_enic) { @@ -1954,7 +1954,7 @@ enic_fm_copy_action(struct enic_flowman *fm, if (!(overlap & (FATE | PASSTHRU | COUNT | PORT_ID))) goto unsupported; /* Egress from VF: need implicit WQ match */ - if (enic_is_vf_rep(enic) && !ingress) { + if (rte_eth_dev_is_repr(enic->rte_dev) && !ingress) { fmt->ftm_data.fk_wq_id = 0; fmt->ftm_mask.fk_wq_id = 0xffff; fmt->ftm_data.fk_wq_vnic = enic->fm_vnic_handle; @@ -3226,7 +3226,7 @@ enic_fm_init(struct enic *enic) return 0; ENICPMD_FUNC_TRACE(); /* Get vnic handle and save for port-id action */ - if (enic_is_vf_rep(enic)) + if (rte_eth_dev_is_repr(enic->rte_dev)) addr = &VF_ENIC_TO_VF_REP(enic)->bdf; else addr = &RTE_ETH_DEV_TO_PCI(enic->rte_dev)->addr; @@ -3240,7 +3240,7 @@ enic_fm_init(struct enic *enic) enic->fm_vnic_uif = vnic_dev_uif(enic->vdev); ENICPMD_LOG(DEBUG, "uif %u", enic->fm_vnic_uif); /* Nothing else to do for representor. It will share the PF flowman */ - if (enic_is_vf_rep(enic)) + if (rte_eth_dev_is_repr(enic->rte_dev)) return 0; fm = calloc(1, sizeof(*fm)); if (fm == NULL) { @@ -3321,7 +3321,7 @@ enic_fm_destroy(struct enic *enic) struct enic_fm_fet *fet; ENICPMD_FUNC_TRACE(); - if (enic_is_vf_rep(enic)) { + if (rte_eth_dev_is_repr(enic->rte_dev)) { delete_rep_flows(enic); return; } @@ -3358,7 +3358,7 @@ enic_fm_allocate_switch_domain(struct enic *pf) int ret; ENICPMD_FUNC_TRACE(); - if (enic_is_vf_rep(pf)) + if (rte_eth_dev_is_repr(pf->rte_dev)) return -EINVAL; cur = pf; cur_a = &RTE_ETH_DEV_TO_PCI(cur->rte_dev)->addr; @@ -3367,7 +3367,7 @@ enic_fm_allocate_switch_domain(struct enic *pf) dev = &rte_eth_devices[pid]; if (!dev_is_enic(dev)) continue; - if (dev->data->dev_flags & RTE_ETH_DEV_REPRESENTOR) + if (rte_eth_dev_is_repr(dev)) continue; if (dev == cur->rte_dev) continue; @@ -3597,7 +3597,7 @@ delete_rep_flows(struct enic *enic) struct rte_eth_dev *dev; uint32_t i; - RTE_ASSERT(enic_is_vf_rep(enic)); + RTE_ASSERT(rte_eth_dev_is_repr(enic->rte_dev)); vf = VF_ENIC_TO_VF_REP(enic); dev = vf->pf->rte_dev; for (i = 0; i < ARRAY_SIZE(vf->vf2rep_flow); i++) { @@ -3617,7 +3617,7 @@ begin_fm(struct enic *enic) struct enic_flowman *fm; /* Representor uses PF flowman */ - if (enic_is_vf_rep(enic)) { + if (rte_eth_dev_is_repr(enic->rte_dev)) { vf = VF_ENIC_TO_VF_REP(enic); fm = vf->pf->fm; } else { diff --git a/drivers/net/enic/enic_main.c b/drivers/net/enic/enic_main.c index a6aaa760ca..2f681315b6 100644 --- a/drivers/net/enic/enic_main.c +++ b/drivers/net/enic/enic_main.c @@ -824,7 +824,7 @@ int enic_alloc_rq(struct enic *enic, uint16_t queue_idx, * Representor uses a reserved PF queue. Translate representor * queue number to PF queue number. */ - if (enic_is_vf_rep(enic)) { + if (rte_eth_dev_is_repr(enic->rte_dev)) { RTE_ASSERT(queue_idx == 0); vf = VF_ENIC_TO_VF_REP(enic); sop_queue_idx = vf->pf_rq_sop_idx; @@ -1053,7 +1053,7 @@ int enic_alloc_wq(struct enic *enic, uint16_t queue_idx, * Representor uses a reserved PF queue. Translate representor * queue number to PF queue number. */ - if (enic_is_vf_rep(enic)) { + if (rte_eth_dev_is_repr(enic->rte_dev)) { RTE_ASSERT(queue_idx == 0); vf = VF_ENIC_TO_VF_REP(enic); queue_idx = vf->pf_wq_idx; diff --git a/drivers/net/i40e/i40e_ethdev.c b/drivers/net/i40e/i40e_ethdev.c index 4d21341382..ddbc2962bc 100644 --- a/drivers/net/i40e/i40e_ethdev.c +++ b/drivers/net/i40e/i40e_ethdev.c @@ -706,7 +706,7 @@ static int eth_i40e_pci_remove(struct rte_pci_device *pci_dev) if (!ethdev) return 0; - if (ethdev->data->dev_flags & RTE_ETH_DEV_REPRESENTOR) + if (rte_eth_dev_is_repr(ethdev)) return rte_eth_dev_pci_generic_remove(pci_dev, i40e_vf_representor_uninit); else diff --git a/drivers/net/ice/ice_dcf_ethdev.c b/drivers/net/ice/ice_dcf_ethdev.c index bebf356f4d..d58ec9d907 100644 --- a/drivers/net/ice/ice_dcf_ethdev.c +++ b/drivers/net/ice/ice_dcf_ethdev.c @@ -2131,7 +2131,7 @@ eth_ice_dcf_pci_remove(struct rte_pci_device *pci_dev) if (!eth_dev) return 0; - if (eth_dev->data->dev_flags & RTE_ETH_DEV_REPRESENTOR) + if (rte_eth_dev_is_repr(eth_dev)) return rte_eth_dev_pci_generic_remove(pci_dev, ice_dcf_vf_repr_uninit); else diff --git a/drivers/net/ixgbe/ixgbe_ethdev.c b/drivers/net/ixgbe/ixgbe_ethdev.c index 0cd3d0b105..c61c52b296 100644 --- a/drivers/net/ixgbe/ixgbe_ethdev.c +++ b/drivers/net/ixgbe/ixgbe_ethdev.c @@ -1842,7 +1842,7 @@ static int eth_ixgbe_pci_remove(struct rte_pci_device *pci_dev) if (!ethdev) return 0; - if (ethdev->data->dev_flags & RTE_ETH_DEV_REPRESENTOR) + if (rte_eth_dev_is_repr(ethdev)) return rte_eth_dev_pci_generic_remove(pci_dev, ixgbe_vf_representor_uninit); else diff --git a/drivers/net/nfp/flower/nfp_flower_flow.c b/drivers/net/nfp/flower/nfp_flower_flow.c index e26be30d18..501a8d87bd 100644 --- a/drivers/net/nfp/flower/nfp_flower_flow.c +++ b/drivers/net/nfp/flower/nfp_flower_flow.c @@ -4321,7 +4321,7 @@ int nfp_flow_ops_get(struct rte_eth_dev *dev, const struct rte_flow_ops **ops) { - if ((dev->data->dev_flags & RTE_ETH_DEV_REPRESENTOR) == 0) { + if (!rte_eth_dev_is_repr(dev)) { *ops = NULL; PMD_DRV_LOG(ERR, "Port is not a representor."); return -EINVAL; diff --git a/drivers/net/nfp/nfp_mtr.c b/drivers/net/nfp/nfp_mtr.c index 255977ec22..6abc6dc9bc 100644 --- a/drivers/net/nfp/nfp_mtr.c +++ b/drivers/net/nfp/nfp_mtr.c @@ -1066,7 +1066,7 @@ static const struct rte_mtr_ops nfp_mtr_ops = { int nfp_net_mtr_ops_get(struct rte_eth_dev *dev, void *arg) { - if ((dev->data->dev_flags & RTE_ETH_DEV_REPRESENTOR) == 0) { + if (!rte_eth_dev_is_repr(dev)) { PMD_DRV_LOG(ERR, "Port is not a representor"); return -EINVAL; } diff --git a/drivers/net/nfp/nfp_net_common.c b/drivers/net/nfp/nfp_net_common.c index 99c319eb2d..0ee2811926 100644 --- a/drivers/net/nfp/nfp_net_common.c +++ b/drivers/net/nfp/nfp_net_common.c @@ -241,7 +241,7 @@ nfp_net_get_hw(const struct rte_eth_dev *dev) { struct nfp_net_hw *hw; - if ((dev->data->dev_flags & RTE_ETH_DEV_REPRESENTOR) != 0) { + if (rte_eth_dev_is_repr(dev)) { struct nfp_flower_representor *repr; repr = dev->data->dev_private; hw = repr->app_fw_flower->pf_hw; @@ -2143,7 +2143,7 @@ nfp_net_firmware_version_get(struct rte_eth_dev *dev, hw = nfp_net_get_hw(dev); - if ((dev->data->dev_flags & RTE_ETH_DEV_REPRESENTOR) != 0) { + if (rte_eth_dev_is_repr(dev)) { snprintf(vnic_version, FW_VER_LEN, "%d.%d.%d.%d", hw->ver.extend, hw->ver.class, hw->ver.major, hw->ver.minor); diff --git a/drivers/net/nfp/nfp_net_flow.c b/drivers/net/nfp/nfp_net_flow.c index 98e8499756..3b33f3b6e9 100644 --- a/drivers/net/nfp/nfp_net_flow.c +++ b/drivers/net/nfp/nfp_net_flow.c @@ -932,7 +932,7 @@ nfp_net_flow_ops_get(struct rte_eth_dev *dev, { struct nfp_net_hw *hw; - if ((dev->data->dev_flags & RTE_ETH_DEV_REPRESENTOR) != 0) { + if (rte_eth_dev_is_repr(dev)) { *ops = NULL; PMD_DRV_LOG(ERR, "Port is a representor."); return -EINVAL; diff --git a/lib/ethdev/ethdev_driver.h b/lib/ethdev/ethdev_driver.h index 0e4c1f0743..0b088fdab7 100644 --- a/lib/ethdev/ethdev_driver.h +++ b/lib/ethdev/ethdev_driver.h @@ -1813,6 +1813,23 @@ rte_eth_representor_id_get(uint16_t port_id, int controller, int pf, int representor_port, uint16_t *repr_id); +/** + * @internal + * Check if the ethdev is a representor port. + * + * @param dev + * Pointer to struct rte_eth_dev. + * + * @return + * false the ethdev is not a representor port. + * true the ethdev is a representor port. + */ +static inline bool +rte_eth_dev_is_repr(const struct rte_eth_dev *dev) +{ + return ((dev->data->dev_flags & RTE_ETH_DEV_REPRESENTOR) != 0); +} + /** * PMD helper function to parse ethdev arguments * diff --git a/lib/ethdev/rte_class_eth.c b/lib/ethdev/rte_class_eth.c index bc003db8af..b52f1dd9f2 100644 --- a/lib/ethdev/rte_class_eth.c +++ b/lib/ethdev/rte_class_eth.c @@ -69,7 +69,7 @@ eth_representor_cmp(const char *key __rte_unused, struct rte_eth_devargs eth_da; uint16_t id = 0, nc, np, nf, i, c, p, f; - if ((data->dev_flags & RTE_ETH_DEV_REPRESENTOR) == 0) + if (!rte_eth_dev_is_repr(edev)) return -1; /* not a representor port */ /* Parse devargs representor values. */ @@ -143,7 +143,7 @@ eth_dev_match(const struct rte_eth_dev *edev, } /* if no representor key, default is to not match representor ports */ if (ret != 0) - if ((edev->data->dev_flags & RTE_ETH_DEV_REPRESENTOR) != 0) + if (rte_eth_dev_is_repr(edev)) return -1; /* do not match any representor */ return 0; From patchwork Mon Feb 26 01:44:58 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Chaoyong He X-Patchwork-Id: 137179 X-Patchwork-Delegate: ferruh.yigit@amd.com 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 C612443BDB; Mon, 26 Feb 2024 02:45:39 +0100 (CET) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 7978242DAC; Mon, 26 Feb 2024 02:45:33 +0100 (CET) Received: from NAM04-MW2-obe.outbound.protection.outlook.com (mail-mw2nam04on2126.outbound.protection.outlook.com [40.107.101.126]) by mails.dpdk.org (Postfix) with ESMTP id 759F142831 for ; Mon, 26 Feb 2024 02:45:26 +0100 (CET) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=AuKHJQ4nzguhyCj4V/PoB7IJPPznWox6VpW4fwo/QSjFitKRhaUIPqLoZsa6f7KZqHoL+ujgvX2QhlOq8+doJ7wnPsue2gP9tC8Q5wCca+hivD9JRfW1Ctrd9b1vJIaQO3SWUqHfUwg5mEulil7sb2+6PxhAr2UxzDW0HC6BO4i//cBxUL+cuUI1GPPPPMJtE7BK+XQELhe3q2PiwhG6zqTdw2JB3M22ApYfsvRsoVkB0M9rUcHaTcnUnfuA6ev7ioXUOlahel/R5ahfH1sPhylg2I8s9kKJPB2oLMXlJ/1LTRQp9UAwgw08/SGN66WrniU+HcntcF9eTZZLw5VZTw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=RO5HermtBHjS0CUvkN24+frgnYUMJcga2+bXZ5KFmcQ=; b=fKIoex0yiG6+eAFySjYfloKedNiJLKhUHwWasz9B7yXCIYX9hdpJAtMoTuHhvF7X/RX2CHSsxP+ot1bIxzj0bf61c2eyPWUjMMadHdYYRzB2ZHu2ua6C8XQbbJaOdb4alz4MYXhp+swxnGXCmTd4acozx15cwrXCyE1ZgoigoxpJu/wShKLrRmgcIKVB+5S+lxRR8CRRjiIZryDlA5bKZ/OVRslP1uxVC/DxpEGgc6B7xFzYlSEBR8nm2nSsnQDUaBrNX8rHQy1bZ4952Q9Z/GTry4z+bdqL80ByuCJfwi2g3eh+TUeVvenKYbkEb5t6HkT69NvbGqTwyaikpfz8Kw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=corigine.com; dmarc=pass action=none header.from=corigine.com; dkim=pass header.d=corigine.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=corigine.onmicrosoft.com; s=selector2-corigine-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=RO5HermtBHjS0CUvkN24+frgnYUMJcga2+bXZ5KFmcQ=; b=NRFIxAnS/xdBNwCNw7Oy4ANgzfJYAQxzkXSBZRMI2YAk8Y59uUCY7CSotJmo1pmvTlDG8omiGlqOt90C2YBRbBlCna3WRcdN/Aqj76CevTLsEKUi2yDH0zpdrWHPCUs9W+jIjRL50vgTYdh4ZiORuDBG1+kW7k/RRIrJRky/3QY= Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=corigine.com; Received: from SJ0PR13MB5545.namprd13.prod.outlook.com (2603:10b6:a03:424::5) by PH0PR13MB5794.namprd13.prod.outlook.com (2603:10b6:510:11d::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7316.34; Mon, 26 Feb 2024 01:45:24 +0000 Received: from SJ0PR13MB5545.namprd13.prod.outlook.com ([fe80::8e02:f738:570a:f8aa]) by SJ0PR13MB5545.namprd13.prod.outlook.com ([fe80::8e02:f738:570a:f8aa%7]) with mapi id 15.20.7316.032; Mon, 26 Feb 2024 01:45:24 +0000 From: Chaoyong He To: dev@dpdk.org Cc: oss-drivers@corigine.com, Long Wu , Chaoyong He , Peng Zhang Subject: [PATCH v3 2/4] net/nfp: support MARK flow action Date: Mon, 26 Feb 2024 09:44:58 +0800 Message-Id: <20240226014500.3537561-3-chaoyong.he@corigine.com> X-Mailer: git-send-email 2.39.1 In-Reply-To: <20240226014500.3537561-1-chaoyong.he@corigine.com> References: <20240223024217.3052031-1-chaoyong.he@corigine.com> <20240226014500.3537561-1-chaoyong.he@corigine.com> X-ClientProxiedBy: PH8PR05CA0005.namprd05.prod.outlook.com (2603:10b6:510:2cc::14) To SJ0PR13MB5545.namprd13.prod.outlook.com (2603:10b6:a03:424::5) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: SJ0PR13MB5545:EE_|PH0PR13MB5794:EE_ X-MS-Office365-Filtering-Correlation-Id: adbd9ac6-b846-4061-b829-08dc366c99db X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: 6aaRH4/LG0FvTKNJSPIcUz2/Wl4gFLHT2H65zdYvbnqb5GjCt0mudTA+HDI5dnwrOcW1p2187F5wYY8xrnnMTlc0K3yuTI2fwSS8XiF1zXzHiqeNSCPI00/jQKHVP7nGFcLbqpBLn28U2AaIH9IsCDKqAtysACEV2W7pCXW2IL6AP5z6WP8yd/H+tEI39YgmE+u/TsXZmhqHLUrxIh6jlkQ6/vSLLlWe0pu7cK0o0RFX/vGW9JSc+LZo5bXWLaw0cHoXG2Ywpp+io0fLfQj1YAt2CJHpeyatV4B9+XSxhV9wv4oiatXFVRO29apr+VSvDWPPHBzzeqlIi2Lx2MqOas5FUlunM3sF6yTIg0WnSL0zmEmEkk2L9sOWEBj+7rYXdwwCYdqjWRnbEZr42/bUmo5Gg4rJrQyFLJPsxoL1YwONIQXYYEnLkKiz/KbyPF/NOuFatvmsPfwGrao5bXXiSqhQSiIU35GBjBK076VnosSXvH/UiJQ56WyNVWUWjoDz1UkzL/MLVrBjvb2KWuNTOMrhILuF1j2b+nT/S3yTO/W1ydSzrUwLk8LZK8yQmp0HPAyMSfpMqMsUizmeTStjf2xY0u1L88Q5qn5+TQz3cUA9SvdCj7TEXEb/7ISX0Z+g20kBTSLLoysvsLhwvGmMDjsQlIlZqZib4ZiwVZZzSwFhT/kOi+ee2Wk3mjuKEWmMaemfDD4csnlmW/zSQFPl8w== X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:SJ0PR13MB5545.namprd13.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230031)(38350700005); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: p+eSerQZn2Pif29jng+63b+Y9YOhHvW/wJhU4pLos6T/PPawYTTp5OdwO/vAXqRIS3Sy9TWahuVhPxEcV5ibWouxJjxMk+Lw4/PQWy3/6GFvd6OqWNo8zIjisqqJwnCI71mrCX6Rqm9rP4JA+rlyZJBJEGuIsvZuhFalFNeX3FQ37iWOCh4qByt21lgyIAP94in/v8oq+8GQpHhIr35ot1T8HdAjwIdcyBaon+Iccfgcu8KAsJdR5M5FJpFTqZx16eh6uVlinMcr8Cf19E9fz2Wf1C70ey38B9zYBK1dxaUC6RlniTWV0uL/Dm088DgsLBIEwEngqf94BLIUAXdLPbnDoMm3XshBAIWdRkv96539eDq0opisPb7vupjpZpgs2W3HQbFPQJdxsDA6+JwoJKJEfwxhB9sP4fChVKb7n3hES7e3D1tQtOZd9TdFg1qJiIh2poj2vdwhsUpsA6TY33yLiwjQIZsTgiS20E0BoDrGheH5VpkStwKfRQoC4SlUXUCMJrI3et23qXbn5k+LqWZkqBAI27YfmmlKtIHCr3jJ39L458YtPOFZq+Aor65n02cFy86YF8ABdGJMCtIzT1WCYii+APKZKlLPmAHKv+KpvRAu6so8CAl1WlnNFku/VJN942kVrEl/lBpZxRhAUU/bvSe+Z2FBDGDbhPR+rj05tXo1uknjO7d+um/UpACLrpygrKTS4Ec9lYaSx1wVHW1p7CcHqPyKWPE0YRqgoUu8c7LCXbUiwIGpe5BpKsPvnG9BDE1Eqnf8CbjlXF3eX2t+m85TZqLpE4KFbLdVYmYWRbux4rAlpKZcG9PJLEjejIV96T+vod981OYtyXOiIFtfFiN80u2F9Ph+Yb0WarNGCBhBjCMoo6itBhiEbFCpkFC+g3GECL3w+hSRX6TO7fcu9joiuP0IV07sHqdXYg7Y3iP07+xOEtt3nMvJGfG9MpjLv0JzfOOHUkgqoFxMSIAzVJrBq7hdHZdQ+2jlVrWnMH8kG9ZcaUq/PFFO5a3dz4SP1ggCBWmnRm8vgYaSbMHW+WMtQqMK1SrchoXz7Sa38XyZi0SIOdwYhok1jjbm1eZ8aUXPkCsQqpSCBhvuvFNcIF2DZOE7TlQcERYiQMfg53Fs2NRWwmu/TirwWZYczBsLK1oCOLhD/8UF6FUblelARptvCo+pYMHrqEpJECti0724+6R/LM130ohnJ6eBMwivQYnDEbUreKXRBUvPRLlD+/ZPUVYWDSJ7aLBoRdxSAIFiPI2absarvHchnZ2oRUNc512SXPVHkUrt+YNuDcENk8jLljl3o9Y124O0U+HK12qJm9uIO7iUFC4TXHtW+BVL5VLR0XGtYjA970zZ651J6lHpGN9ny2oBa2SEGXdFiEGLcjP5e3NhDHrXRvwjX3/7rIaGos5AJwMNRYK4xZTpc3HhpATU+6sYb+nsXIMgPNPbrHGUdHKsT763oYEPZ6UIFsXPPVs0iYPZviJWi/gBr0eOuzu6pSqyW+v6QvdHb+nUNYeSHGw7udXMSVogAX3SCsfJzsO0CfqpRBF8wDMu6OctulIhK/m/GuhZgbfpXAA0teOKcaIyAVRZ0n0zkeE4mN16FMqTIp/5GwhOdw== X-OriginatorOrg: corigine.com X-MS-Exchange-CrossTenant-Network-Message-Id: adbd9ac6-b846-4061-b829-08dc366c99db X-MS-Exchange-CrossTenant-AuthSource: SJ0PR13MB5545.namprd13.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 26 Feb 2024 01:45:24.8160 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: fe128f2c-073b-4c20-818e-7246a585940c X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: mK/feIsjFWj/Y3md0RDi1UAVVZQVZ413gC06Zi6lu+1WbQRqNTOq8QYeKKmTp4HR0EyciGU6GVml0FbLWt3hqMAvV9JKz46YVLq6utrEn5o= X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH0PR13MB5794 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 From: Long Wu Add the corresponding logics to support the offload of MARK action. Signed-off-by: Long Wu Reviewed-by: Chaoyong He Reviewed-by: Peng Zhang --- drivers/net/nfp/flower/nfp_flower_cmsg.h | 16 ++++++++++++++ drivers/net/nfp/flower/nfp_flower_flow.c | 27 ++++++++++++++++++++++++ 2 files changed, 43 insertions(+) diff --git a/drivers/net/nfp/flower/nfp_flower_cmsg.h b/drivers/net/nfp/flower/nfp_flower_cmsg.h index 8fb55f44a2..c94ea706bb 100644 --- a/drivers/net/nfp/flower/nfp_flower_cmsg.h +++ b/drivers/net/nfp/flower/nfp_flower_cmsg.h @@ -959,6 +959,22 @@ struct nfp_fl_act_meter { rte_be32_t profile_id; }; +/* + * Mark + * 3 2 1 + * 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 + * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + * | res | opcode | res | len_lw| reserved | + * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + * | Mark | + * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + */ +struct nfp_fl_act_mark { + struct nfp_fl_act_head head; + rte_be16_t reserved; + rte_be32_t mark; +}; + int nfp_flower_cmsg_mac_repr(struct nfp_app_fw_flower *app_fw_flower); int nfp_flower_cmsg_repr_reify(struct nfp_app_fw_flower *app_fw_flower, struct nfp_flower_representor *repr); diff --git a/drivers/net/nfp/flower/nfp_flower_flow.c b/drivers/net/nfp/flower/nfp_flower_flow.c index 501a8d87bd..b3a2c1cdaf 100644 --- a/drivers/net/nfp/flower/nfp_flower_flow.c +++ b/drivers/net/nfp/flower/nfp_flower_flow.c @@ -83,6 +83,7 @@ #define NFP_FL_ACTION_OPCODE_METER 24 #define NFP_FL_ACTION_OPCODE_CT_NAT_EXT 25 #define NFP_FL_ACTION_OPCODE_PUSH_GENEVE 26 +#define NFP_FL_ACTION_OPCODE_SET_MARK 27 #define NFP_FL_ACTION_OPCODE_NUM 32 #define NFP_FL_OUT_FLAGS_LAST RTE_BIT32(15) @@ -1138,6 +1139,10 @@ nfp_flow_key_layers_calculate_actions(const struct rte_flow_action actions[], case RTE_FLOW_ACTION_TYPE_CONNTRACK: PMD_DRV_LOG(DEBUG, "RTE_FLOW_ACTION_TYPE_CONNTRACK detected"); break; + case RTE_FLOW_ACTION_TYPE_MARK: + key_ls->act_size += sizeof(struct nfp_fl_act_mark); + PMD_DRV_LOG(DEBUG, "RTE_FLOW_ACTION_TYPE_MARK detected"); + break; default: PMD_DRV_LOG(ERR, "Action type %d not supported.", action->type); return -ENOTSUP; @@ -3487,6 +3492,23 @@ nfp_flow_action_meter(struct nfp_flower_representor *representor, return 0; } +static void +nfp_flow_action_mark(char *act_data, + const struct rte_flow_action *action) +{ + struct nfp_fl_act_mark *fl_mark; + const struct rte_flow_action_mark *mark; + size_t act_size = sizeof(struct nfp_fl_act_mark); + + mark = action->conf; + + fl_mark = (struct nfp_fl_act_mark *)act_data; + fl_mark->head.jump_id = NFP_FL_ACTION_OPCODE_SET_MARK; + fl_mark->head.len_lw = act_size >> NFP_FL_LW_SIZ; + fl_mark->reserved = 0; + fl_mark->mark = rte_cpu_to_be_32(mark->id); +} + static uint32_t nfp_flow_count_output(const struct rte_flow_action actions[]) { @@ -3734,6 +3756,11 @@ nfp_flow_compile_action(struct nfp_flower_representor *representor, case RTE_FLOW_ACTION_TYPE_CONNTRACK: PMD_DRV_LOG(DEBUG, "Process RTE_FLOW_ACTION_TYPE_CONNTRACK"); break; + case RTE_FLOW_ACTION_TYPE_MARK: + PMD_DRV_LOG(DEBUG, "Process RTE_FLOW_ACTION_TYPE_MARK"); + nfp_flow_action_mark(position, action); + position += sizeof(struct nfp_fl_act_mark); + break; default: PMD_DRV_LOG(ERR, "Unsupported action type: %d", action->type); return -ENOTSUP; From patchwork Mon Feb 26 01:44:59 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Chaoyong He X-Patchwork-Id: 137180 X-Patchwork-Delegate: ferruh.yigit@amd.com 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 44E4943BDB; Mon, 26 Feb 2024 02:45:46 +0100 (CET) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 0235142DC9; Mon, 26 Feb 2024 02:45:35 +0100 (CET) Received: from NAM04-MW2-obe.outbound.protection.outlook.com (mail-mw2nam04on2097.outbound.protection.outlook.com [40.107.101.97]) by mails.dpdk.org (Postfix) with ESMTP id 643AB42D9F for ; Mon, 26 Feb 2024 02:45:28 +0100 (CET) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=WwbN45t5t9e2nRuz0nWZXDdt2rupPYZJn/3AFLEUJW/FIAqKLBQjaawUQtA59mwmPbQUvWOKkO29NFu82nbxSqsen9qewkiQ5driG4I9F7g2j8fwF6JLgjYYIFGMYbmKVQ7bsih4BHNTDgGLKio9SRhILEnS325Pm1/0dN3alIr08Q7PVETsmLKIyWVZNRYQokzQEyqNUrb1EmPSf7+lDstOzVfqvZ5pjmP41FYxSwSMkp9t/i5hS8yrIFsn8w8unk5ySfS9EttsSZGulSI3msK4vteNFFr06ohPYdITiarB+SdyU8ckhWmWJf1Qln1Ax62WEvX9LzaezFwYLuTe6Q== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=i3iEGSav/uinilNo5unKyOFDNCeA012G+pfY6yP6SV4=; b=Rgb9u0iVYcPCcRIvArnfRhUHBA0J+UH3Er7tjl+8faeeDA4rD53UqGUJkqT/Jj/p0vEmVfV+EjWir4/QW2ARX/rhZsKCn/HI40Icq2NpfGXBOgYNe9/Q8edgndchIcv/Fub0WdCchJqRo9eg4IdLqLktPwovg+aUr7d3zaqSuQe+RXsK90eUPaibkWHpVJckORE1ryd/FkxtPIR4M8ffVsPXxXkOkYJ2/Q1bXfRQ8HVXGczLY10tNvZ5CcG8iKRnlJOK9qUGbmoXQJ9YUvzlkxJ03p2VZQHQcHafLLrlaWD2mT6+cC4RSIMO8A+WoJ4AXV+Vp8dHO+RZ6QaR7NypZA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=corigine.com; dmarc=pass action=none header.from=corigine.com; dkim=pass header.d=corigine.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=corigine.onmicrosoft.com; s=selector2-corigine-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=i3iEGSav/uinilNo5unKyOFDNCeA012G+pfY6yP6SV4=; b=fOSj2D97T8QpiTD4sPFbHneHOatV3nDNYMVH9SsO2MFUaqk8WlWrVtesxGd0Sf5m0uFAoYLisJNlVp5CpocDSXLbNqDozRwWOmx8pKLsbYz4yraOgCKKKRC06uLadeAQk2Jbfg4nvLC9fSCku8zntZ3xJy807/NkGen4tZ3DAD0= Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=corigine.com; Received: from SJ0PR13MB5545.namprd13.prod.outlook.com (2603:10b6:a03:424::5) by PH0PR13MB5794.namprd13.prod.outlook.com (2603:10b6:510:11d::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7316.34; Mon, 26 Feb 2024 01:45:26 +0000 Received: from SJ0PR13MB5545.namprd13.prod.outlook.com ([fe80::8e02:f738:570a:f8aa]) by SJ0PR13MB5545.namprd13.prod.outlook.com ([fe80::8e02:f738:570a:f8aa%7]) with mapi id 15.20.7316.032; Mon, 26 Feb 2024 01:45:26 +0000 From: Chaoyong He To: dev@dpdk.org Cc: oss-drivers@corigine.com, Long Wu , Chaoyong He , Peng Zhang Subject: [PATCH v3 3/4] net/nfp: add representor RSS configuration Date: Mon, 26 Feb 2024 09:44:59 +0800 Message-Id: <20240226014500.3537561-4-chaoyong.he@corigine.com> X-Mailer: git-send-email 2.39.1 In-Reply-To: <20240226014500.3537561-1-chaoyong.he@corigine.com> References: <20240223024217.3052031-1-chaoyong.he@corigine.com> <20240226014500.3537561-1-chaoyong.he@corigine.com> X-ClientProxiedBy: PH8PR05CA0005.namprd05.prod.outlook.com (2603:10b6:510:2cc::14) To SJ0PR13MB5545.namprd13.prod.outlook.com (2603:10b6:a03:424::5) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: SJ0PR13MB5545:EE_|PH0PR13MB5794:EE_ X-MS-Office365-Filtering-Correlation-Id: 10910b7d-f1c2-4756-7d4d-08dc366c9b15 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: Brb+GNObQk3+7Oi7ovmP29uX0pNFioc65iks2vPtT66Fdpl60or1kgwyirN3PVkz9if+98qyRE6DFTVVriVh4SGhFLVwMQyuPw1aiylCElRsZ5SMLarishztYlp3YyOMe0K6VjhwJiXihYgGAGFGo5f1x3a7EqQ3rTROoFs1a6AZa5QBxYzaeAbwAi/QMIjfXiyKRQNDIo8R3pgAluDqdLXTmrKQLjpNUidl0SSs3d6w2cgdLrdvxpmFDCoYYPlAYq3Qg7j3yHXHNUI3epjhWtydjRPiwy+hMJIJJUq3BFvNr0eKbKDw2wB5t9SIerH4IkXXdXsPDNBLvnXZOzcKFTWrhdiP7gHselAFGLxDp93wtvM98I6uaG3HNgNKztP5kepdcLXL8WDnuzo1N3dDeDzR+ghroiJMpmIx0UdYRQIX56VbjGsT8UE8/t+571TtSQXN169FYSyXqajB52beCbCam/YzkoDMpXIUuFyZRL4pgnoGqelWKkdFliHw1syIsfitaWI65GO0AdygFnEwZXNUK6tcXMxlweBbdt9BQduryAXM6lZNmQwp+8/gGhGFRqbbyaGBvwsaqrQgUYj0Dh22nAUeASWtE38hE+Ize5Kz/KqFwSGwVVGdR456ekzkgqJUpOYnIPY+dtLRVXXM7k/OGYYCzvzv7bRXbHcGYkBtjrzgMJVjglrXSwVrP344x0y3d6ROwG47YE1fQfeluR6epFTqhrmHwqHytPz4pWY= X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:SJ0PR13MB5545.namprd13.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230031)(38350700005); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: KozI3U/16pJ/AugXpkCRUpuI3lHar3X3Y8Y4Xcr7jpIrzMq7zKIgVHAwU7FqWHpEFriXceXW8cRPVMNSCn2L1hfVKYvLlKEbzzcwlagvPhuRqTumYkHtJxQwEwOF+paF/iLalsazLdfoLaTI+mrLYZ76aNk7KjFeAN3m1bp/AW1K2q+q2bB9plgjMojYjLIxw4yZX4YATSucGBYN4FHjVYzkeFlOAWg2cx2Ups0C+Y9VU8TKSPnX3fB1wuRhAh1zQ0u7mkKPkafKa9gWmL8c0K825wZ0IR5FKBoPZ3Dp/1TMgK9mkkmDroVWq+EnvBCMJc3p19QPwxU5h7seMLJFmdzptEf4FrrQI0qeBEQ/QdjV5W3uOKtzgGRjwDaybFOY/28DWOGPR0Zx150hXJRQi8FnOzfuTdwrd1i3Jk69SOAPLLQSq6auLjnuKSzM4UGTyPlYfvjooONIJjB+WBEWCCiIBgG6F0YNLCy7qqk+22/6ArxLWue6MBINUGiwSapt5B/kiTYDqG09laKGtQVy5O8kxBzWLO8vgFYT8OkzYRrlKW/4SjfTurf0WHY31IXOlxqH0RLXJEYLmhTpscEBVnfqHoGeAGJzW/AbjBg23TheQhLQbP7HQdfOGppn6aV9Cc/WefU70Alk6GXGDTsS7Ogv+wHPtReEoh5x1v/+rf+dK7TYgETa61v1UtNPPAcg3pFRa0FkePGWrhTTYWW/UxI9isepdXDklKohKzvvASN6eir2Ad2KzlnoRAEyUSt8c0JuXQookd3d9LZLqHW/teq4BoeCV/VM6D7wB73PySxajbOZGNDPog3Tbm5+PqMEoY4M2xSQSvpFun3dpGlprvWRkAc66qchnWqXBCME0Uzbj2QN3Cv9VouLbT/bz1GVKrPpTkuMKSMhGz2TJz4xesLH7B7f0rGd0/nydC6CJLCkGNIkWZK5IsjX2k0piwMsdQhhzoU8EW1o0guBj9xxWWTYsGPQ8GT38fobV8CWcfO0n18EyHEF19KtmCzTwB7uUW6r6bYNuFm+4kHVfWL3QMOYxW2M4CApD8eLElYzC8niTU/CP/m8Ul+TRls2/mYFLZ3bnfuVf+6KDXu3yBQ77blot7oRwOdVg1xE4RNE/F8pFnJOc3+dWzs+wz18snaOylBEKURMvXBb2yOLYXN2fEeC/QDm9EYFq4K/+j8yS+qBQycAz2Kl3ttEmEZoKhRtDjbd2Tva1fjYh1onW5ZdZXhUJGg7W4HubM71XnXgvHJprwEda/z1ASVzXOJ3XaQ0e31McwmZw3SUqXQHUh15gdhR0OGubzUxTSSZo8kmZmR4chVYR/MR1xYfVbs8Rq6LObNKgLuOtnpxpMzavicFKV74YC9yKBYqYnlmDjjXxgOGWBF7I8ZIU0/2zrH1LlLYID+aCaJ2c5f60Ckq01oR+Aoyb1gmU2HUZ1VjtzdPQEGC0XY7UwEmwxkCeexvjAiqHidObsKSVGtr7pp9P/5ABqIp76Y/8G3tk3/PtcT0LC3zASmQ3iKZ7DdVqh7GCl7hi7iLkdU4/hOxS1gciz9RdaUeSrPDmtgzVNnpCzMejpp/+IUHJV7hwgi2ZEnDLAvAreyNO1LXEwB6TMu72tdYXw== X-OriginatorOrg: corigine.com X-MS-Exchange-CrossTenant-Network-Message-Id: 10910b7d-f1c2-4756-7d4d-08dc366c9b15 X-MS-Exchange-CrossTenant-AuthSource: SJ0PR13MB5545.namprd13.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 26 Feb 2024 01:45:26.8689 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: fe128f2c-073b-4c20-818e-7246a585940c X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: 0uYFTF+epRXL27awcJn0lZlScj10DVHidwMuu5uBdVB+K+jipH39mF0z7foRYW9dR0ffutf52pTW2zndAd5P0r8P1mknCnVf8rG6FAB7xhE= X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH0PR13MB5794 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 From: Long Wu Add RSS configuration logics in representor initialization function. Signed-off-by: Long Wu Reviewed-by: Chaoyong He Reviewed-by: Peng Zhang --- drivers/common/nfp/nfp_common_ctrl.h | 1 + drivers/net/nfp/flower/nfp_flower.c | 12 ++++++++++-- drivers/net/nfp/flower/nfp_flower_representor.c | 13 +++++++++++++ drivers/net/nfp/nfp_net_common.c | 17 ++++++----------- drivers/net/nfp/nfp_net_common.h | 9 +++++++++ 5 files changed, 39 insertions(+), 13 deletions(-) diff --git a/drivers/common/nfp/nfp_common_ctrl.h b/drivers/common/nfp/nfp_common_ctrl.h index 93722bc350..7749ba6459 100644 --- a/drivers/common/nfp/nfp_common_ctrl.h +++ b/drivers/common/nfp/nfp_common_ctrl.h @@ -254,6 +254,7 @@ struct nfp_net_fw_ver { #define NFP_NET_CFG_RSS_IPV4_SCTP (1 << 14) /* RSS for IPv4/SCTP */ #define NFP_NET_CFG_RSS_IPV6_SCTP (1 << 15) /* RSS for IPv6/SCTP */ #define NFP_NET_CFG_RSS_TOEPLITZ (1 << 24) /* Use Toeplitz hash */ +#define NFP_NET_CFG_RSS_CRC32 (1 << 26) /* Use CRC32 hash */ #define NFP_NET_CFG_RSS_KEY (NFP_NET_CFG_RSS_BASE + 0x4) #define NFP_NET_CFG_RSS_KEY_SZ 0x28 #define NFP_NET_CFG_RSS_ITBL (NFP_NET_CFG_RSS_BASE + 0x4 + \ diff --git a/drivers/net/nfp/flower/nfp_flower.c b/drivers/net/nfp/flower/nfp_flower.c index e84e6ebbff..c6a744e868 100644 --- a/drivers/net/nfp/flower/nfp_flower.c +++ b/drivers/net/nfp/flower/nfp_flower.c @@ -31,6 +31,8 @@ nfp_flower_pf_start(struct rte_eth_dev *dev) uint32_t new_ctrl; uint32_t update = 0; struct nfp_net_hw *net_hw; + struct rte_eth_conf *dev_conf; + struct rte_eth_rxmode *rxmode; struct nfp_flower_representor *repr; repr = dev->data->dev_private; @@ -48,8 +50,14 @@ nfp_flower_pf_start(struct rte_eth_dev *dev) /* Writing configuration parameters in the device */ nfp_net_params_setup(net_hw); - update |= NFP_NET_CFG_UPDATE_RSS; - new_ctrl |= nfp_net_cfg_ctrl_rss(hw->cap); + dev_conf = &dev->data->dev_conf; + rxmode = &dev_conf->rxmode; + + if ((rxmode->mq_mode & RTE_ETH_MQ_RX_RSS_FLAG) != 0) { + nfp_net_rss_config_default(dev); + update |= NFP_NET_CFG_UPDATE_RSS; + new_ctrl |= nfp_net_cfg_ctrl_rss(hw->cap); + } /* Enable device */ new_ctrl |= NFP_NET_CFG_CTRL_ENABLE; diff --git a/drivers/net/nfp/flower/nfp_flower_representor.c b/drivers/net/nfp/flower/nfp_flower_representor.c index 4f4df0cd2e..7284a1e84d 100644 --- a/drivers/net/nfp/flower/nfp_flower_representor.c +++ b/drivers/net/nfp/flower/nfp_flower_representor.c @@ -44,6 +44,12 @@ static int nfp_flower_repr_dev_infos_get(__rte_unused struct rte_eth_dev *dev, struct rte_eth_dev_info *dev_info) { + struct nfp_net_hw *pf_hw; + struct nfp_flower_representor *repr; + + repr = dev->data->dev_private; + pf_hw = repr->app_fw_flower->pf_hw; + /* Hardcoded pktlen and queues for now */ dev_info->max_rx_queues = 1; dev_info->max_tx_queues = 1; @@ -64,6 +70,13 @@ nfp_flower_repr_dev_infos_get(__rte_unused struct rte_eth_dev *dev, dev_info->max_mac_addrs = 1; + if ((pf_hw->super.cap & NFP_NET_CFG_CTRL_RSS_ANY) != 0) { + dev_info->rx_offload_capa |= RTE_ETH_RX_OFFLOAD_RSS_HASH; + dev_info->flow_type_rss_offloads = NFP_NET_RSS_CAP; + dev_info->reta_size = NFP_NET_CFG_RSS_ITBL_SZ; + dev_info->hash_key_size = NFP_NET_CFG_RSS_KEY_SZ; + } + return 0; } diff --git a/drivers/net/nfp/nfp_net_common.c b/drivers/net/nfp/nfp_net_common.c index 0ee2811926..26ea4ec92f 100644 --- a/drivers/net/nfp/nfp_net_common.c +++ b/drivers/net/nfp/nfp_net_common.c @@ -1267,16 +1267,7 @@ nfp_net_infos_get(struct rte_eth_dev *dev, struct rte_eth_dev_info *dev_info) if ((cap & NFP_NET_CFG_CTRL_RSS_ANY) != 0) { dev_info->rx_offload_capa |= RTE_ETH_RX_OFFLOAD_RSS_HASH; - - dev_info->flow_type_rss_offloads = RTE_ETH_RSS_IPV4 | - RTE_ETH_RSS_NONFRAG_IPV4_TCP | - RTE_ETH_RSS_NONFRAG_IPV4_UDP | - RTE_ETH_RSS_NONFRAG_IPV4_SCTP | - RTE_ETH_RSS_IPV6 | - RTE_ETH_RSS_NONFRAG_IPV6_TCP | - RTE_ETH_RSS_NONFRAG_IPV6_UDP | - RTE_ETH_RSS_NONFRAG_IPV6_SCTP; - + dev_info->flow_type_rss_offloads = NFP_NET_RSS_CAP; dev_info->reta_size = NFP_NET_CFG_RSS_ITBL_SZ; dev_info->hash_key_size = NFP_NET_CFG_RSS_KEY_SZ; } @@ -1792,7 +1783,11 @@ nfp_net_rss_hash_write(struct rte_eth_dev *dev, cfg_rss_ctrl |= NFP_NET_CFG_RSS_IPV6_SCTP; cfg_rss_ctrl |= NFP_NET_CFG_RSS_MASK; - cfg_rss_ctrl |= NFP_NET_CFG_RSS_TOEPLITZ; + + if (rte_eth_dev_is_repr(dev)) + cfg_rss_ctrl |= NFP_NET_CFG_RSS_CRC32; + else + cfg_rss_ctrl |= NFP_NET_CFG_RSS_TOEPLITZ; /* Configuring where to apply the RSS hash */ nn_cfg_writel(hw, NFP_NET_CFG_RSS_CTRL, cfg_rss_ctrl); diff --git a/drivers/net/nfp/nfp_net_common.h b/drivers/net/nfp/nfp_net_common.h index e374739022..1c24045b7d 100644 --- a/drivers/net/nfp/nfp_net_common.h +++ b/drivers/net/nfp/nfp_net_common.h @@ -41,6 +41,15 @@ #define NFP_BEAT_LENGTH 8 +/* RSS capability*/ +#define NFP_NET_RSS_CAP (RTE_ETH_RSS_IPV4 | RTE_ETH_RSS_IPV6 | \ + RTE_ETH_RSS_NONFRAG_IPV4_TCP | \ + RTE_ETH_RSS_NONFRAG_IPV4_UDP | \ + RTE_ETH_RSS_NONFRAG_IPV4_SCTP | \ + RTE_ETH_RSS_NONFRAG_IPV6_TCP | \ + RTE_ETH_RSS_NONFRAG_IPV6_UDP | \ + RTE_ETH_RSS_NONFRAG_IPV6_SCTP) + /* * Each PF has corresponding word to beat: * Offset | Usage From patchwork Mon Feb 26 01:45:00 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Chaoyong He X-Patchwork-Id: 137181 X-Patchwork-Delegate: ferruh.yigit@amd.com 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 696FE43BDB; Mon, 26 Feb 2024 02:45:52 +0100 (CET) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 54C8E42DD2; Mon, 26 Feb 2024 02:45:36 +0100 (CET) Received: from NAM04-MW2-obe.outbound.protection.outlook.com (mail-mw2nam04on2096.outbound.protection.outlook.com [40.107.101.96]) by mails.dpdk.org (Postfix) with ESMTP id E941B42DA1 for ; Mon, 26 Feb 2024 02:45:30 +0100 (CET) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=KY5ZsNLQ5JYjTe8NVhsUuqm3ZPmPnsTOe49FuIC0GPrTvtTc1X19uUF8ie2qSJrqjlYH5tmT2RiXALFqlEZsXvpYjyHTfCIwJrGWURIZGltKuXWGc8vzsB6KInl/ajR+YX4W6y+gubYC6QACkD0Lx+mdYc8vJSMbiFL8o9jM0cxy4sMqg2ZqgRCnxCauqhK0t/9f9vCipQgg6p1p/82uSdHU4uq3uWDInF83FYeE+hoEIIzbv/ALeHNeqJn8GpN89uiVwD0oNIusTJwFJhkfiXhKo9QVOiDkG1XNDOZcCMH9jfjWT9uhvdE5uW0KYiAG4XoWlRXeZ3DE5+bfnVqI0w== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=0bQRYnP4/y7GhNsLpVMqdqCh9amolTVZ6NPP4+K0e1E=; b=JRaeSNQkL3czWPZLIcI9n+F9CnKa/w6UKCxO8DyEwnur7VJb1ZZENpVWiRM2sOBSaGqB100KqAym38nOvEDNYoWYMDcie2fcDcAmgHRGhWp8bG3Ypt51/vVYnWYIcEmMBEfw6sSvHi72rkR+LVQ7zTh9h2VnwJhWDSiTKn2xH8MzQFlBwjV0p8O43Vm00+bnGQhhINd0SLNaIGcrdbMZKOTRFSRujtVotjhKpi0RGKxflcv+WfTVdkxeXr9NDYpD1cmxPHQJETRJBt+fHko8luqMGdT2ZKDCYYkPzJNsiqh07/UZ5wpokHfZPIt+b0kV0qE0qvgVHK5/KU6TmHI8dw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=corigine.com; dmarc=pass action=none header.from=corigine.com; dkim=pass header.d=corigine.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=corigine.onmicrosoft.com; s=selector2-corigine-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=0bQRYnP4/y7GhNsLpVMqdqCh9amolTVZ6NPP4+K0e1E=; b=iZTzyNJvJ3VZX3o9gjAP1V3mc7g9RavJ7Urm4IHs0xZ9GQWF/6FspliQddI98HtGX6bypJ45GChGIHyiNcI2jgkRyHInqj92lJr4Ns+9sIQT+SaK8IdX3CghDQ5YrNdtlFpnCIU84N38VZjrwrwD3s55H8qGyzBdlMESpcS3Gt8= Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=corigine.com; Received: from SJ0PR13MB5545.namprd13.prod.outlook.com (2603:10b6:a03:424::5) by PH0PR13MB5794.namprd13.prod.outlook.com (2603:10b6:510:11d::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7316.34; Mon, 26 Feb 2024 01:45:29 +0000 Received: from SJ0PR13MB5545.namprd13.prod.outlook.com ([fe80::8e02:f738:570a:f8aa]) by SJ0PR13MB5545.namprd13.prod.outlook.com ([fe80::8e02:f738:570a:f8aa%7]) with mapi id 15.20.7316.032; Mon, 26 Feb 2024 01:45:28 +0000 From: Chaoyong He To: dev@dpdk.org Cc: oss-drivers@corigine.com, Long Wu , Chaoyong He , Peng Zhang Subject: [PATCH v3 4/4] net/nfp: support RSS flow action Date: Mon, 26 Feb 2024 09:45:00 +0800 Message-Id: <20240226014500.3537561-5-chaoyong.he@corigine.com> X-Mailer: git-send-email 2.39.1 In-Reply-To: <20240226014500.3537561-1-chaoyong.he@corigine.com> References: <20240223024217.3052031-1-chaoyong.he@corigine.com> <20240226014500.3537561-1-chaoyong.he@corigine.com> X-ClientProxiedBy: PH8PR05CA0005.namprd05.prod.outlook.com (2603:10b6:510:2cc::14) To SJ0PR13MB5545.namprd13.prod.outlook.com (2603:10b6:a03:424::5) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: SJ0PR13MB5545:EE_|PH0PR13MB5794:EE_ X-MS-Office365-Filtering-Correlation-Id: 0f89c3f5-37fc-4bec-8fd6-08dc366c9c4e X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: iOoUiEZPFaXT6qeZVVPEBZ2U5XQqo3Nffw3z+7b0i5Gr7TMe/Clb4NPnkc1Sb0Iitga59MkZqKs8ODsFQdWecxX1SpTG9DFr8szAGKbLAAPm1qyGecV2+PaB1QQ2soQR/Zk01bZZII3KqjKFuwPJxen7fKkZi0thPE+YJRat045rSSafQrAscQLq10It0yndkIq4okHRUMjbR7M1xWzCCRYXjU8H3fJMF4jp25ERM6yIWoBR9mP+BpRooweY5CDeAFP2VMrEZKv3TYNakCgIc42yCjYmmH9HTKPFKvVCCaSxDJDxVOF/NUTMUYLdssyylDuCHOoevg2kbBc54qe9Yo3bFrFIfrXGMcwY8BgerO4YMWQsQmPNttZKqE8+4UZDpJWhR4HaRBSsCDr5QeoiA7tBgiD1XJswydkjYrhhjnCbsipsT12pheuWvGFLvqs+M5eHft3ouJRl45X4LAyKgcl5sefCW1Ut2xAYma9sMd2aJ43TszpDrraIQ321YkHtZN7FSJV2Q0FNE4Sz+LBVCeVMCjGRgFjlOkWa0aeHM+igBsFny/r5PxFvNuTE+FYEfVfl/SZE1XUD4QSFoM2gWry2qLCx3oxhogeACbcQh829iYl+Fu7pIf4ZuViDTca93A/U/MhbLTL/UJXae6fO+XKh5yZswyd3/0QDfmj5cqbhKEiDBSj4NPENVB9nUX7+XVCfnAH6iTN4lN0n6JZZhg== X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:SJ0PR13MB5545.namprd13.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230031)(38350700005); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: iMkSXBVtBK71Yxzm5N7iNtzSLC7/Zn9QSpdpRO+QqKrj4Yj6apuBtljKtW65pOcd50KlVH8UaWQME5iUsxaHvMJMKbio/68u1et+oDKzpJKorRLdvwDvOlAoBic8aJZdEWKi9KTpPEaz2mfsd6IFE6Upk/YS0T0DDEF8ICjQvDjRZ8fc5VtjOPWe+wFJOs7tburcqqfWzjfebevqEdUo7V4mNsVnza4SrP4xptqxxHLCJBoNqUN4mBbNyb2hA72kxVD/x74tIdfMOwAYQwtI9/92Fu9x5BrCKEuihVP5pDudbWPjG1xF0h/o/XHAeX01WTe3y62LNldw0/4qtz4g1hK7JUsHEQ9zaUBvRJYA8xiU38HgT/HqMa26ZLpJ+55ALcppvi2CLKZWheIoTH/pB5xdSSPAS3Czwo+U0fKMLCc5zsOnX9u+dYSJTYLNeW23Lp6ZJxOg8KDyHDcgT3cFYCJsMxQVB0APOqysK8+dVx/1RrnHJ89TmKh11wWp4FTNYKQvu+nopg44FI947zhPqX2ait/He8DgQlaXj8Kx+xS/hUUuFNJ9RzofJ3PUCjkMLT5nZUTnSOoU+UIE4nwCtOflwWYAWoGwnBbXBqYbSqeUFJEnP3rDijYSJQ2O93dqbE9aIazyjIb6V9CSguvvBPd32UyFVnrUUbRf7EMSb2ONKdJwbuHL9cYQzPerlqsguw4ZhxzF/SkvYyH1O7wLDui0058U9lPLOILDfOdt011ug3JrbhSSfmACKZUyOCPMnice/DyV2z3/8dSFkcL6oc60kw6YB/yxmDBFPIUhGprkT0HarDUX4kNfwLr9zYT9wJZHnY9pjK+UmhFrEryYqK+OPxBbV3XBl9mykT38N2fh3AcERLUogPy+PC51Am3nTc+UsqgH8KKDhqTIs6epjZrUoCuvZe/5AnjiOJV5xxWf99pEy6lXqBDsJXP+MWzcbl33C533TxBcJXYsMmKAnt1DkSy3V1Ft27BzUSf4MRGPPgN/oFgghR0sYLdQmBgqFYM+JBKfiEpjH8HPE2A3g/uGnIc1zWMXbsVEVcWC8Or84mP8QF1vfQNUoF2rXgZQuPzzt74RAuWCqjn1eRGuDCjQrTIYR1whB6/rDP74tZBNxN8KAGlDD2hJbAF6UMTm8T65w27bhZ80/Gk80vTyuu2baL1jcUgdGfp/tNLxGslDYzDnibQOEa7h3ZjSDlM3M8eW4y081m07ms4jc0kLIrmTKgJpXcKn94ghhxZA55ordBDICbcr4zv9hVFdRSHRD/d4efZKeW/EMhEsou24Lp4qM2TU/1078fM6jzLmtbjNLqhjAxwvFOtxJm8Qkqa9XSkMrKyZZsnpe2A1nmAyEQSJ4wnby7yMIK+KYuM7VS9FKp8qu3u/uEKln0N0mTlUCkAwDTa/6YL6UReUHeSKAsINRKN8RsmIW8Ql5sbKGTuCiuLaCH7J1XCUTg1jzCClYP106jdUXgmgd1ykYQn4XDNGtxEw3dyOeucR45UKkrMOq6RfiQMi7bbHU05byz4/Ny1v4EMJM6Wzq42JasKLdrfZZhmdH2vdoJYIm0Gr2vxd07ppiPvS18ElWp6F1LxHDVfKSj0hzX3irIOw1+yuVQ== X-OriginatorOrg: corigine.com X-MS-Exchange-CrossTenant-Network-Message-Id: 0f89c3f5-37fc-4bec-8fd6-08dc366c9c4e X-MS-Exchange-CrossTenant-AuthSource: SJ0PR13MB5545.namprd13.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 26 Feb 2024 01:45:28.9359 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: fe128f2c-073b-4c20-818e-7246a585940c X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: Gr5B2AYGOMTninFqRHHBSKeP8/sf4fKryX6u4UNtrhXZ5BWEogK3WeFk+g0mc0W20pUoNtEGfthw/er5ayr28QAuqnzU5pnIYYMlzaL5wiI= X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH0PR13MB5794 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 From: Long Wu Add the corresponding logics to support the offload of RSS action. Signed-off-by: Long Wu Reviewed-by: Chaoyong He Reviewed-by: Peng Zhang --- doc/guides/nics/features/nfp.ini | 1 + drivers/net/nfp/flower/nfp_flower_flow.c | 124 ++++++++++++++++++ drivers/net/nfp/flower/nfp_flower_flow.h | 8 ++ .../net/nfp/flower/nfp_flower_representor.c | 6 + .../net/nfp/flower/nfp_flower_representor.h | 1 + 5 files changed, 140 insertions(+) diff --git a/doc/guides/nics/features/nfp.ini b/doc/guides/nics/features/nfp.ini index 3494111f86..b20049b4f5 100644 --- a/doc/guides/nics/features/nfp.ini +++ b/doc/guides/nics/features/nfp.ini @@ -59,6 +59,7 @@ queue = Y raw_decap = Y raw_encap = Y represented_port = Y +rss = Y port_id = Y set_ipv4_dscp = Y set_ipv4_dst = Y diff --git a/drivers/net/nfp/flower/nfp_flower_flow.c b/drivers/net/nfp/flower/nfp_flower_flow.c index b3a2c1cdaf..086cc8079a 100644 --- a/drivers/net/nfp/flower/nfp_flower_flow.c +++ b/drivers/net/nfp/flower/nfp_flower_flow.c @@ -1143,6 +1143,9 @@ nfp_flow_key_layers_calculate_actions(const struct rte_flow_action actions[], key_ls->act_size += sizeof(struct nfp_fl_act_mark); PMD_DRV_LOG(DEBUG, "RTE_FLOW_ACTION_TYPE_MARK detected"); break; + case RTE_FLOW_ACTION_TYPE_RSS: + PMD_DRV_LOG(DEBUG, "RTE_FLOW_ACTION_TYPE_RSS detected"); + break; default: PMD_DRV_LOG(ERR, "Action type %d not supported.", action->type); return -ENOTSUP; @@ -3509,6 +3512,116 @@ nfp_flow_action_mark(char *act_data, fl_mark->mark = rte_cpu_to_be_32(mark->id); } +static int +nfp_flow_action_rss_add(struct nfp_flower_representor *representor, + const struct rte_flow_action *action, + struct nfp_fl_rss **rss_store) +{ + int ret; + struct nfp_net_hw *pf_hw; + struct rte_eth_rss_conf rss_conf; + struct nfp_fl_rss *rss_store_tmp; + const struct rte_flow_action_rss *rss; + uint8_t rss_key[NFP_NET_CFG_RSS_KEY_SZ]; + + if (nfp_flower_repr_is_vf(representor)) + return 0; + + rss = action->conf; + + if (rss->key_len > NFP_NET_CFG_RSS_KEY_SZ) { + PMD_DRV_LOG(ERR, "Unsupported rss key length."); + return -ENOTSUP; + } + + rss_conf.rss_hf = 0; + rss_conf.rss_key = rss_key; + pf_hw = representor->app_fw_flower->pf_hw; + ret = nfp_net_rss_hash_conf_get(pf_hw->eth_dev, &rss_conf); + if (ret != 0) { + PMD_DRV_LOG(ERR, "Get RSS conf failed."); + return ret; + } + + rss_store_tmp = calloc(1, sizeof(struct nfp_fl_rss)); + if (rss_store_tmp == NULL) { + PMD_DRV_LOG(ERR, "Alloc memory for rss storage failed."); + return -ENOMEM; + } + + if (rss->types != 0) { + rss_conf.rss_hf |= rss->types; + + rss_store_tmp->types = rss->types; + } + + if (rss->key_len != 0 && rss->key != NULL) { + memcpy(rss_conf.rss_key, rss->key, rss->key_len); + rss_conf.rss_key_len = rss->key_len; + + memcpy(rss_store_tmp->key, rss->key, rss->key_len); + rss_store_tmp->key_len = rss->key_len; + } + + ret = nfp_net_rss_hash_update(pf_hw->eth_dev, &rss_conf); + if (ret != 0) { + PMD_DRV_LOG(ERR, "Update RSS conf failed."); + free(rss_store_tmp); + return ret; + } + + *rss_store = rss_store_tmp; + + return 0; +} + +static int +nfp_flow_action_rss_del(struct nfp_flower_representor *representor, + struct rte_flow *nfp_flow) +{ + int ret; + struct nfp_net_hw *pf_hw; + struct nfp_fl_rss *rss_store; + struct rte_eth_rss_conf rss_conf; + uint8_t rss_key[NFP_NET_CFG_RSS_KEY_SZ]; + + if (nfp_flower_repr_is_vf(representor)) + return 0; + + rss_conf.rss_hf = 0; + rss_conf.rss_key = rss_key; + pf_hw = representor->app_fw_flower->pf_hw; + ret = nfp_net_rss_hash_conf_get(pf_hw->eth_dev, &rss_conf); + if (ret != 0) { + PMD_DRV_LOG(ERR, "Get RSS conf failed."); + goto exit; + } + + rss_store = nfp_flow->rss; + + if ((rss_conf.rss_hf & rss_store->types) != 0) + rss_conf.rss_hf &= (~(rss_store->types)); + + /* Need default RSS configuration */ + if (rss_conf.rss_hf == 0) + rss_conf.rss_hf = RTE_ETH_RSS_IPV4 | RTE_ETH_RSS_IPV6; + + if (rss_conf.rss_key_len == rss_store->key_len && + memcmp(rss_conf.rss_key, rss_store->key, rss_store->key_len) == 0) { + rss_conf.rss_key = NULL; + rss_conf.rss_key_len = 0; + } + + ret = nfp_net_rss_hash_update(pf_hw->eth_dev, &rss_conf); + if (ret != 0) + PMD_DRV_LOG(ERR, "Update RSS conf failed."); + +exit: + free(nfp_flow->rss); + + return ret; +} + static uint32_t nfp_flow_count_output(const struct rte_flow_action actions[]) { @@ -3761,6 +3874,13 @@ nfp_flow_compile_action(struct nfp_flower_representor *representor, nfp_flow_action_mark(position, action); position += sizeof(struct nfp_fl_act_mark); break; + case RTE_FLOW_ACTION_TYPE_RSS: + PMD_DRV_LOG(DEBUG, "Process RTE_FLOW_ACTION_TYPE_RSS"); + ret = nfp_flow_action_rss_add(representor, action, &nfp_flow->rss); + if (ret != 0) + return ret; + nfp_flow->type = NFP_FLOW_RSS; + break; default: PMD_DRV_LOG(ERR, "Unsupported action type: %d", action->type); return -ENOTSUP; @@ -4099,6 +4219,10 @@ nfp_flow_destroy(struct rte_eth_dev *dev, /* Delete the entry in pre tunnel table */ ret = nfp_pre_tun_table_check_del(representor, nfp_flow); break; + case NFP_FLOW_RSS: + /* Clear corresponding RSS configuration */ + ret = nfp_flow_action_rss_del(representor, nfp_flow); + break; default: PMD_DRV_LOG(ERR, "Invalid nfp flow type %d.", nfp_flow->type); ret = -EINVAL; diff --git a/drivers/net/nfp/flower/nfp_flower_flow.h b/drivers/net/nfp/flower/nfp_flower_flow.h index 75f18c6bd5..5d927edde9 100644 --- a/drivers/net/nfp/flower/nfp_flower_flow.h +++ b/drivers/net/nfp/flower/nfp_flower_flow.h @@ -33,6 +33,7 @@ enum nfp_flow_type { NFP_FLOW_COMMON, NFP_FLOW_ENCAP, NFP_FLOW_DECAP, + NFP_FLOW_RSS, }; struct nfp_fl_key_ls { @@ -121,6 +122,12 @@ struct nfp_ipv6_addr_entry { int ref_count; }; +struct nfp_fl_rss { + uint8_t key[NFP_NET_CFG_RSS_KEY_SZ]; + uint32_t key_len; + uint64_t types; +}; + #define NFP_TUN_PRE_TUN_RULE_LIMIT 32 struct nfp_flow_priv { @@ -166,6 +173,7 @@ struct nfp_flow_priv { struct rte_flow { struct nfp_fl_payload payload; struct nfp_fl_tun tun; + struct nfp_fl_rss *rss; size_t length; uint32_t hash_key; uint32_t mtr_id; diff --git a/drivers/net/nfp/flower/nfp_flower_representor.c b/drivers/net/nfp/flower/nfp_flower_representor.c index 7284a1e84d..b2c55879ca 100644 --- a/drivers/net/nfp/flower/nfp_flower_representor.c +++ b/drivers/net/nfp/flower/nfp_flower_representor.c @@ -860,3 +860,9 @@ nfp_flower_repr_create(struct nfp_app_fw_flower *app_fw_flower) return ret; } + +bool +nfp_flower_repr_is_vf(struct nfp_flower_representor *repr) +{ + return repr->repr_type == NFP_REPR_TYPE_VF; +} diff --git a/drivers/net/nfp/flower/nfp_flower_representor.h b/drivers/net/nfp/flower/nfp_flower_representor.h index 8053617562..7a4e7ecfc1 100644 --- a/drivers/net/nfp/flower/nfp_flower_representor.h +++ b/drivers/net/nfp/flower/nfp_flower_representor.h @@ -24,5 +24,6 @@ struct nfp_flower_representor { }; int nfp_flower_repr_create(struct nfp_app_fw_flower *app_fw_flower); +bool nfp_flower_repr_is_vf(struct nfp_flower_representor *repr); #endif /* __NFP_FLOWER_REPRESENTOR_H__ */