From patchwork Fri Feb 23 02:42:14 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Chaoyong He X-Patchwork-Id: 137075 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 F3DD643B91; Fri, 23 Feb 2024 03:42:50 +0100 (CET) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id D684140EE2; Fri, 23 Feb 2024 03:42:48 +0100 (CET) Received: from NAM12-MW2-obe.outbound.protection.outlook.com (mail-mw2nam12on2115.outbound.protection.outlook.com [40.107.244.115]) by mails.dpdk.org (Postfix) with ESMTP id 15D45402BD for ; Fri, 23 Feb 2024 03:42:45 +0100 (CET) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=cD+f0QTsykdpk/oQZ9bSBqLO9ghHWZ7uZEqEU4RuA8E730k4ELTYBGEcWQtTgFBjkNkaGvGSzkALO3+XaQdplxaHGJ1YP6ogpc8ag5oLz8iTm9Ljnfod6P1o2+tcNZviqoPHAW2xQVKGhAX4/8f6zojQzzVXuGTojdIGdsL/Ex9dVb10n7WBSTxxxPy6614V+DDTobdl2TIdi93N1wXpMlN+pEyMxNs8HqzshPlRgZAnysVw2FxWPlNb+yvKOLdjqfr60EglRTjT/SsZW4j2LMq8IG5HBsvyuCVkbyjQnNqPSoxt3cx//Og9W6y5adicmbto4LdJ8sk/kC9GIfG/+A== 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=JFH4wKvSx9giSwoPGwdQLywUY6V4dcBXkPTxyndNlv4=; b=lK5CtOZtX7Tz14oLAriA6NcMsgbgLeb3770EyOCEpRM6VQVugsnHvuVWqr8ZLxfMnk1X4RWISD1JI7m9S2+o9E1CvlJR44t+FLMTOHtBCt/RTNfKnH0Kb5uJyYpV0whNkSiyZ3ovYj4zJNZXbprv6AaZ58S4GLwfC1H1oTACgwYwFhSD+ose7RrkW+i5cZ/YS5kCjKUll89Msp2/M55JAuiPxJuOifASHldM4ed4YoFmPT70r88m1QC95u+o/xK3rWbFmzu9/uJoTKXljS0Hix38Aq8Tq58XFsPcP4nrDsCQO74A3jRvQeDLEtsB5empCut6siLCwCOh0dtreF//Kw== 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=JFH4wKvSx9giSwoPGwdQLywUY6V4dcBXkPTxyndNlv4=; b=Z4WmUWh29ox7r0hgYmo5s9Uz3GJqYEM+qx/0IA0aYS/NwBce9NhsjNTAIH8M7wkyB3AKgVYkIBfpq0+BJ7R7vHipOgsCSpvaq9rqX5TjUgpzCiO75otcdNVzld5lgG2OMJUYVKw55Qya1OpVmlOaDEM9r18Za6AqkyvA6FUv+JA= 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 SA1PR13MB6645.namprd13.prod.outlook.com (2603:10b6:806:3e6::9) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7316.24; Fri, 23 Feb 2024 02:42:41 +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.023; Fri, 23 Feb 2024 02:42:41 +0000 From: Chaoyong He To: dev@dpdk.org Cc: oss-drivers@corigine.com, Long Wu , Chaoyong He , Peng Zhang Subject: [PATCH v2 1/4] ethdev: add function to check representor port Date: Fri, 23 Feb 2024 10:42:14 +0800 Message-Id: <20240223024217.3052031-2-chaoyong.he@corigine.com> X-Mailer: git-send-email 2.39.1 In-Reply-To: <20240223024217.3052031-1-chaoyong.he@corigine.com> References: <20240210104214.1248772-1-chaoyong.he@corigine.com> <20240223024217.3052031-1-chaoyong.he@corigine.com> X-ClientProxiedBy: SJ0PR13CA0040.namprd13.prod.outlook.com (2603:10b6:a03:2c2::15) To SJ0PR13MB5545.namprd13.prod.outlook.com (2603:10b6:a03:424::5) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: SJ0PR13MB5545:EE_|SA1PR13MB6645:EE_ X-MS-Office365-Filtering-Correlation-Id: d036617a-cfbd-44f5-517b-08dc34191926 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: 70TZKbiPmbiFJmSBBENKSK0IXFuuom6GvtzjgI1IWS7vqqn8DjBt87iqg7hZW2BU9OZDDoDnIGIFGK0aBXIQsBf149ZcfAX2sRfSU3e/ZXy4Fe2gOUDVQstjomqtBJ23AddUcUbfdMKx4q6DQJnXV76QT1GYuv/jRJRE9DU2/zvi3oyoLwgABOD5ppmDJK7WOpheHAOLfCYRWksw3IrcJK0AUiKXBOGESdbUlg66dXAkg++TEAR4ccqFyYKsMLViHkD5tLLmghXeSHPraihTNWSsvI5Qj5i80NPXBUDLnQX71voJpLoY94VsDLEStGCKVv7gUEI0qrcGBxqUCb25+W9IEj2aX437k5MefoTq6tmU87u5onlN70bdKYx1YnXX7pYP1YJqwBtv5yypjRK9UEmZOi2e3spXmi6+/2WIclH5BRTp4fi8y+c2027uFLW4cVvpfEnTxDYMCC7y89jOQPXaNqYuSc4vuHiCEo8lC/4hC1TQEyPm0UBNIuzyECGiHBZH5gF2UrjLofFBQ6mLNak73xGYlgE7TloOQFBL7BdqY/IzwXXKqtcpTxuaTqSJomiy39MqtiPWhbK4D0c+4nrzmu3RA+xOhzTeyc4Ub5z9SErqpSVRGTgD40NFe5Kv 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: Z/GIMLNckanP+g6vjWgqNwKoW5U7NfsdSEjy3MM9CYA23pVz8WQtgbkgldZBMk60ltEgAwEobRrRBLtIQNcUg/23Vfa4CXXn99jcQz0ycf5Zd2JmJW9y5WVPaA8VALK4pPI+hK46S3y9/zjJeDbsC9vDdOxkNBzZ+IlQGNZg6XOe4/zrkPpgjPSWHs60ETzk/Et/CrC/QA43JoH0/Sa8AAeBSz9kH8DyIZPEzvOgipWG/j0wfm9z48FBg0iLdov6Oh91QoZXUTRCmavA433pr2k00dv9QArh4YAXPFyJA042Uf8we2EqQYuLMgrz3S3z2r798dC9Gv/OWjweKK4TvCWQTJ2GpxnDMLXQm4mrhw4u+xgjjIUyxf9Xjp+tbYH/TRMHM5PHRH+9oOWZBVhL8A0jnJL2TWa13kVZFYyBimjsunXdNi5BxEcDxEUgO8X6orpxgOsAIX4V1E1aOYPbRewRLqDaCydwY8T5+vN/s5Rk+Kwbve9x/kmS2OQ/xtvABUhDxC8XHBS1wC1oiShXjZ4IDP3y1/5YGI7s3HbveCPJZTJOep4N9Cf0CA7vWMasXgOYpfWwBq/DiKif0YzCDmqMphIO1i/xtYBFLBoeyCs1lxWlkhRv8pLs4Pw7mw8UueM7nPyAOVQB3zuWPwY440u8qIMjjPd4od4on5ujFzR/pG38eGLa2n+Qv+tri04tnRD4d7Wt1hsU09hkBS8ijOZs7GxJ1YjY2iBt5VNKPWKV9437xYNHl2AyIpeYsroG4y4UX/s21iZnmr6JhUftiI7JTXcnKJyhpLsRIfIe8ruh4xPXtSEV4IOywvEaujRdjHOB8BRnP7ObW9z776cjYE0Les2sxssIXWsGH9+UWqLqmaomeDRZa10JoKF6wlAgHrmet93AparqZqnVx/ZfnwxCWdyenstvkxDfoOz5mFaI0eCvmz3nowrz3HdZpmn11RRAxXxh3zU1oc0VPZ2Evo9ornbJfEMRmjSg1UrteKC7LgLY41TKBdPqVsDVp/3V721C+YLNUdqGZRyJNZbkSQU0YczCGMx7t9tJKsWOMnppIB+wyYjSMYTbwNZl08x4CjNTRkEjY+gSDZR/3jxF1equ6Cge6F+UVoKB1bzRhXYiAE3aP9Bh3IryULDu9unQ6RIpg+XHS68gGGaPl1jKzd8Hm0ENAD0aWoItVmc8Qn0X1plZ/S+dyH6ccGmkymMdrg3cimGTYXnFxsip7hDxyZ/A87JMpEgTumLupsvFTyePUuvE8ed+meiyfsQG9uoljEYMWZu/VhvwYlTIHKtkbdHz/8NHZ1c6qJEuwTiyektHJ4b1CWtcLdTvzbLiyaXKqrCyB3cb3KX73ZbX05G+716ygigjPYddnd5HrBAKQXcEH/0Jn2EKWZg9L5YsijCYiiljV6Av1YYo/jbTju+KG2RQgIWUKKHLhw0iHXUTJPtF6Dlvlka65Lt8g/3icepTkY+6U4YsVoiKZglky7MexCd+AgYigzIz00UA0AgSzSeq+Zj4iVTO87YExfTdiW60fn6QeRqZ51ZKfbFtJFafy20ydL41z+oK3z3Y+WU31k6M2JKJCEIa2J0sAwOocLMq7wr44kPSnbItd8uCZDwG/g== X-OriginatorOrg: corigine.com X-MS-Exchange-CrossTenant-Network-Message-Id: d036617a-cfbd-44f5-517b-08dc34191926 X-MS-Exchange-CrossTenant-AuthSource: SJ0PR13MB5545.namprd13.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 23 Feb 2024 02:42:38.3606 (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: Ch6W/0PEG0SjY3AdWyGqCxRwOfG/e1j9Dkj5/wcLEEzrtTdyZgZZO3oPqhSxi/XJ4/4GMwkbdkysPr85eM3S/XRTgIxMC/MlvMvLNuIeSus= X-MS-Exchange-Transport-CrossTenantHeadersStamped: SA1PR13MB6645 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 --- doc/guides/rel_notes/release_24_03.rst | 3 +++ 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 +++++++++++++++++ 19 files changed, 54 insertions(+), 42 deletions(-) diff --git a/doc/guides/rel_notes/release_24_03.rst b/doc/guides/rel_notes/release_24_03.rst index 879bb4944c..8178417b98 100644 --- a/doc/guides/rel_notes/release_24_03.rst +++ b/doc/guides/rel_notes/release_24_03.rst @@ -185,6 +185,9 @@ API Changes * ethdev: Renamed structure ``rte_flow_action_modify_data`` to be ``rte_flow_field_data`` for more generic usage. +* ethdev: Add new function ``rte_eth_dev_is_repr()`` to check if a device is + representor port. + ABI Changes ----------- 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..f46c102558 100644 --- a/lib/ethdev/ethdev_driver.h +++ b/lib/ethdev/ethdev_driver.h @@ -2120,6 +2120,23 @@ struct rte_eth_fdir_conf { struct rte_eth_fdir_flex_conf flex_conf; }; +/** + * @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); +} + #ifdef __cplusplus } #endif From patchwork Fri Feb 23 02:42:15 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Chaoyong He X-Patchwork-Id: 137076 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 2CBC743B91; Fri, 23 Feb 2024 03:42:59 +0100 (CET) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 1BADF410F9; Fri, 23 Feb 2024 03:42:52 +0100 (CET) Received: from NAM12-MW2-obe.outbound.protection.outlook.com (mail-mw2nam12on2115.outbound.protection.outlook.com [40.107.244.115]) by mails.dpdk.org (Postfix) with ESMTP id A4469402ED for ; Fri, 23 Feb 2024 03:42:45 +0100 (CET) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=IiU5gmZlo/K2B7BmIu2fSQisdqX6Ri8EjsG6k/UDbDfFy/zUsvydUjI+MSRIU3C4jm49jyGmfWwJmRbC0biEqz3IJb1YXqCJbJwU1+oEW0sTRqcfcK1rYFXli+txNfu/muIwxG/+paOY7kPBX69kv9iYRjrvoLxA20nnK15XV3b4+jwp4kz9C/C1/yFwSZLylkYY3tct8ZmTItBc6/AFPdFn0ar6lW7w+SrSwVarYhEEuCMC4QIww0psw77GRS2bAlp47TZOzf5LRaU1VNcNFWqoYrLR1xe4MYr3p4kWaZoZlg3wsTJA/JHs/VPBPMc1uEomMaqpX+DT5KwQ+x+UMg== 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=PlrTLrMdpoVzA9yPk79ZYwR8o6SIZbNpIKFbH5RqsQkSErKFnTpYV423OKOBLXX0GWi/CJRrSdzVCNHkdZ21yQWgJJB0ygxWALaOLpRloWTIWY17onFEGIWtb16IlpQzMPrfL18iMmCNG8cKjQvArcFQhBy2o+iNHiIeVZBTQ32zVzmZ4O58/piwjarZ7LOPUjF9dfo2Lit3nGiBX81Ca40BmJRRrSdrzmehll+ZnjyhCBAVTzeFQMbwCI9YJuf7736IK+EN1l865Oam/Wq/9AX2gVecAAzt6l7EcHJj9c4lCWIAeWBB5zgNmaqXGl3LtpdhL109fKUeHnMwGPRiNg== 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=YY6KdO7T4qCzYpBSIwaJgF09eoBezmK79OC0FdmpSl+SHcHJbOPzS8fIMr9HLOVEO4rN6SDLsip/HEllV1h3N10rYGIWyuRopxH5/RBMO4Q/+oY5R/IuTHQUeNTpGROzHapZJDvf9OYW7GlAVIpG3kCVfepQ2xqJ+osoyv95Cnk= 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 SA1PR13MB6645.namprd13.prod.outlook.com (2603:10b6:806:3e6::9) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7316.24; Fri, 23 Feb 2024 02:42:41 +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.023; Fri, 23 Feb 2024 02:42:41 +0000 From: Chaoyong He To: dev@dpdk.org Cc: oss-drivers@corigine.com, Long Wu , Chaoyong He , Peng Zhang Subject: [PATCH v2 2/4] net/nfp: support MARK flow action Date: Fri, 23 Feb 2024 10:42:15 +0800 Message-Id: <20240223024217.3052031-3-chaoyong.he@corigine.com> X-Mailer: git-send-email 2.39.1 In-Reply-To: <20240223024217.3052031-1-chaoyong.he@corigine.com> References: <20240210104214.1248772-1-chaoyong.he@corigine.com> <20240223024217.3052031-1-chaoyong.he@corigine.com> X-ClientProxiedBy: SJ0PR13CA0040.namprd13.prod.outlook.com (2603:10b6:a03:2c2::15) To SJ0PR13MB5545.namprd13.prod.outlook.com (2603:10b6:a03:424::5) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: SJ0PR13MB5545:EE_|SA1PR13MB6645:EE_ X-MS-Office365-Filtering-Correlation-Id: 4b391f75-d358-42ae-606b-08dc34191a56 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: tSFO5D7wAFrRcy7ybO6QsjbPnDzgm6DQHSr4FdKk3Wj2/3GHPrfEcEHggo2f7Bvgo0DtswJPtUj7JbtyMIMmVpvPpxCyNj9gSG5n7VnhHaiMgbd05SN2O87w/1aE1zd20td9zPN/e2UMwkRsx6Lr6sWqGrz3Fc2lnBmnXdNWW3e5ORnNEI85NEpCS11762iY+NZFaAw1XpVxAgRvQpwTDmFOrWRkLKRxiSQOKwkyMw0DKB1xCr0Np/21fGRwYODNZKQrQB1qqYCnwNEV+fyxC13ZPg1lFDavtVU0lLmq9bfALkOObsb+aaexuK7awgAShYaIr1gDShadTBlLVdF+J+zrur2P+mbgWTbEIaVGuhDMPlxpXI2Ji6wy+1VYJqx9Eyd9TvuEEfOhiifijWUFSj1+kPKd0ddPxHNDc0S6uOWUvcQYphFkpmIk8uGMK6ohaoJxYw7ks08cMP1XEcBKHjpGzAzFV/wG03M5PyRKTaUVfilzv5/TY7Mv7SYYPYBoMDPFnlG1bvxAceuSVNmXjyMi/j5eVtYdr64s9b+14wQq3umQ4PrwiRxL3GPpDniVslwfZQSD1JmuOo2APOZWNbMDc7FG9txJN+4bVkEVH5Z4fvIFlBpbtm2KodBZXvsW 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: TW21o/R0XhSxG1ECht86wzEgmS23jkUsZlN/ltgtI4BwFN1f7caGBPM2mwP7kBGoJAtT/WXxMq1v1jBMW7homQ5pI/mk28xwb6gvwEXQXKmbOsLnfaSZt1QmpkNJh8ITN0ghdWMKwcuPmtMBjxJCPmqDGyPNkXaYExS+Qv68Id3kaEft0rfca3EuZIjVZWKlE7stUJjzTfZRoAwOGiSRB3wFlO1h7EC0XcFQEKkcnkE9KGa8NYPwX5L1XyDjJ2erzBvysOnb8IYVe/MC74N2CFaS1o7VWeEv63vNW+7HSRT9vlwi4Mg1wbiJO2FDrhAQHohMrGmulySEzPfTiNsblHSiMvurr+j5aX8WC9L5gg83k1xAk5iV6z0z0d6QaJ9IAJv1VlsMkJpuOF5d/jpDeI96AT2IL7n1+QX3pr5Lub1FQy/83315ZifMzvPVLHDw52dHBRo7gyiJ08TrAzQmWpvWI3vk9wsoXUcJzvwUkuu9rvnRistRmN4FSw/SLxMDR7bcFsI264GL91vKIOhA/13DdTemnh2VjW/8eQlOeDRhVG0NSA1edWsuwQcJnrywtmGYn7kXhK59WCna27JsR5jQZxYgtgdjRCYLCzVldthdrEN3er68UnJ/EbZsJb7NkxIKgMEVkTIciWIWmbcg4UWqjFnD8O2Engm1M1bUPYPdEdq8Pe+2uo88MdLMJRSWzKCgJR/1zQO+ac0utDtiRaYzfGsdVCCgrYZEn4NTVBqMYe7p2+CNNp6WO7lwD7GrqYJCG3Pg5OCUWqf0SQQLP61Yi2oHcRKyjTlW4dRBH4UBJeP+lJxR4OH10gSbDfG2ZrVIl7Eqgg/f2cPVsUIApqK2qWarDi+N9wIzP8UDwsUnz2bqk6Cm3ytzrletKkyBL/A3cNTA+GsUdetewG7YUjm6Hv0rRD7qlF3SEgXw2ddZrDH+47ufoIslnOsvoUvPug+Cm4n5DJRzMeqjR4y6/58/KZI15LFvVhGtXuHNjFWXrbVdKE0ezYmw1JLl3wbG9yhomIpGh3w3ZjRhV3XxEZUXgnCm2VrMC4IO+5OCY7u4GnGxPjnuDT+VfOXzGP9mhjGpJzg2v7C0DI5hYvU3PrfgZyEUA3W+xShSXwGy0lcck3B63f6LqopwPkpIXOFA2ZNpKQzWQ162L+2FhqvMDvq78n/DdVzd5NcZSJK61TeYZkCyRTWm0kiV+DGBE0o4iJtQOtMDQQPjT6lQSXbk+N+T9tRlaB3JrfBPLwu427Jma1sLlk/0MidVgSxEro30TJz8H8fri3rk5GGD5EBpBkllLY5gbtmetmPPTvyz5MhE3LsHwyDBKYaoX/BvyqJMwvlrB91xGL37j4MLbeIMeTExBFInfuh5YOiUa7J09KmMN+wqLC6KmlLiTFnswlWyMmNwldCLPGbJUcjt2AueMR6E0LRxWWIz5QvDKDMHwLkDYsc70XX2RCEuUo+wTw9aw8/k27+8RZt9Qxfu6TW5cnxUxs9MuzTMJfI2bwfci7QOzWoF36E7oN3WShzTjdvzoCCjeOwb20DXh5RvVwwZQy4aGSVRv7YKk1u92MgmG1dl8tLBtjwKm+e+JNms7vUIX9wLihZDcD+wVvF9AGL9GA== X-OriginatorOrg: corigine.com X-MS-Exchange-CrossTenant-Network-Message-Id: 4b391f75-d358-42ae-606b-08dc34191a56 X-MS-Exchange-CrossTenant-AuthSource: SJ0PR13MB5545.namprd13.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 23 Feb 2024 02:42:40.3165 (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: 6Ki+tCRrCGmkagzP2SUTpk/B/V9m4MCph0v80+BMsr1UZ0hABV5iFzCZoljG4H2cBVuzGjeMixtwZXiPjXbWlia8vKRrPiHZSv7ne/Ys1XA= X-MS-Exchange-Transport-CrossTenantHeadersStamped: SA1PR13MB6645 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 Fri Feb 23 02:42:16 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Chaoyong He X-Patchwork-Id: 137077 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 CDBE243B91; Fri, 23 Feb 2024 03:43:05 +0100 (CET) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 5F41F410E3; Fri, 23 Feb 2024 03:42:53 +0100 (CET) Received: from NAM12-MW2-obe.outbound.protection.outlook.com (mail-mw2nam12on2115.outbound.protection.outlook.com [40.107.244.115]) by mails.dpdk.org (Postfix) with ESMTP id 1624240EAB for ; Fri, 23 Feb 2024 03:42:46 +0100 (CET) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=BYPnXD0pwD5cVwJpzEtgMQT3ixMXxO4oqBR0pB9raWD1ULGLdXJ7CDsi1QQTjwasVOieMQTrjeJrq2p/FVGXOu+ZXC2hMQOk0LGLQOHWoFW55L0W4I52dRlDZ8DzPxs3kM2ZmIwyW13/mJHW4pK6OVuQnW5Hn+zjLLN9d+ObZNzXTzhh5mKypiF+wlZkcXYCjjpnoW6MMaTqKYJbRJkol/0eN9S2bpfIAw9jsBZwNObS8UdepriceDem8yK0WcOwJvfjghlzU+060VrCQ8bss2DUYUHgTR0EhD+KS1ez8va0c15gJkd3ar7tJCZpyqloFO0pWhkPgmVNWqAOZes0zg== 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=FBsBR5KSZuAssMk3Ufe+p2BCWBrVc94k+YmIxdTeerOzAW5Npd9uco3LBGldeFMdRndoeCWwTvDRdQDlTk72mfTlSgWCl2Xlf0JUQP7asrJ22Bh/bsylWkbGSDICGHIzHFBD/VMJRuVJJ+b59l9BcETBdag1VlE0snH1XHMwS+ZM4JqQeyg1lsZHi6GnR1ATPW8bsBM8ezj68pjeXHawTSB+5I5e+4oylohIuaA5x2Yae+vFejyelcff2xYkb+ULvT7YU1FO01wjVNWnXFJZkqwk0A4oF8mryGOpkFVgpZmAHaZb1GIRTXLBV4OlPN2Bx/qpfhOvk0FOHmwQwommOg== 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=kgkZA4jdt8T5rTrX50PdqYQDYpuCsnWb6U/dz32FQbfl59ER18l4nFZ7rqQsYgCoidSDELLVhdByBnXsr22JFp4d2WjIIxdQW4XCyZpjI2RYGCRyqdjyHokmroRSqcHlExA1PVBdAqmdL3DlbqFJlxbb/D9UTtajXi905Ov+3+c= 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 SA1PR13MB6645.namprd13.prod.outlook.com (2603:10b6:806:3e6::9) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7316.24; Fri, 23 Feb 2024 02:42:42 +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.023; Fri, 23 Feb 2024 02:42:42 +0000 From: Chaoyong He To: dev@dpdk.org Cc: oss-drivers@corigine.com, Long Wu , Chaoyong He , Peng Zhang Subject: [PATCH v2 3/4] net/nfp: add representor RSS configuration Date: Fri, 23 Feb 2024 10:42:16 +0800 Message-Id: <20240223024217.3052031-4-chaoyong.he@corigine.com> X-Mailer: git-send-email 2.39.1 In-Reply-To: <20240223024217.3052031-1-chaoyong.he@corigine.com> References: <20240210104214.1248772-1-chaoyong.he@corigine.com> <20240223024217.3052031-1-chaoyong.he@corigine.com> X-ClientProxiedBy: SJ0PR13CA0040.namprd13.prod.outlook.com (2603:10b6:a03:2c2::15) To SJ0PR13MB5545.namprd13.prod.outlook.com (2603:10b6:a03:424::5) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: SJ0PR13MB5545:EE_|SA1PR13MB6645:EE_ X-MS-Office365-Filtering-Correlation-Id: d8931ee9-e019-450d-1270-08dc34191b7b X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: NQgmKu+PMXQ5sEQIGtwOYwflFgJw/jghxy/DbMVmF7+vkrjOG24MUWXjZGkeI3B3M7FwFpt918355u+0mcgSGGVp33qjh/wdfnz6JH+iX8kARxvpFcOZeSz1+i/AVVtqNEeIy88MUpLFcxzsdi6UFeBqiCUVbyj1XTQg7LT2NsOyNtFZj1H3A83KU670phBbUZxZOkp8i5X//s7WUksSN/A8g2aMQS74xaDjPbUtSqzHVnuU+dGbO/yuf4XCNAjbkUVVSxmYAm78R5zbFvRvz/C2hAyqdCoNrmXS5AGqZmfKJUSZCuczJlt7ksLq3NF8q0TpSnLyBOCDqHMEEKAPoC6rbKYQbM8yMzyI8KW83bQKDyM7IVV2cHX3FdKbZ625eCp/OGFhbkRRrRpbZVpzqB3kUmeG9S+UkoqL/muHOYzwBWwzGm2Ai3r1ZxxvdRtzyyqqglPbNsBpxRwFjBRAx9t3RpGzDUjP3L6O22AfAhqILwGH9UnS7ayVg4o2hPWBpnWbiH7LQLjfV+Xn0+Dl3H9y4UslOpBkapjDiHquCRiZo19XG4sufbNWTBScVHAlqS1YkVd+86DrfFBIJQ2habJ/7LbC6yaKCKkEmpyyb0/Ajxj767qQx4FRvsX+ulqS 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: A54N4lpypGlTXfh1KYgnJO//xEBJ23hK8zNYAxpaaGmsStfWW/NdzrTc7jCayxwRPG6/G/XI1iqYMyBeo6L3kOupOFPKgdSeK7MDLdUSa2loPzrscAgCYpkVLba5pRNIqI0sochXIGitVL2dC+SEfvWeWMjrpdcc3oYNBSpk7SNlb4XIFSPS5GOGliNBDYFoJpyz+TMUMTN0NPzBmfKx7d4gMc9fRuc7qkUiMme+zM3oR3wTNyU/Vrqh411SBD2a5g+nD4skQiIyfcXCJp1bp2eAlXO8XWvmXOOH6jN3PDyWFcnnujGjKHZVDgzOPbaazQTJl/fdQ/3f7eoFxbr24Ri04TSSVtn3g1pn67C3S2pMA1mxHB4fIApnpOlEXFwKIeVfrLUJ5lPIqFk0CGssSFOm56F1ip0F0pvj8+/+d2kM301jebQJREUf8JflJkP5vsbOd4CDmLB9U9peals3nmNxySYodCbca0OpExenUSK7yLELx/ymAT28eh0RM0o0EHpMjggz4iLgp9SNRDvChzHvubFalL3/qLgBiMagLBzKN4juTYEwenVGI0wg+c7gSQvwZvLs2eSK2OK39NgD5R4XVWAuzg0lQzdF8v5cx4fXZ62ONYBH7RbgVXHI88Ez/G3npbFAIYCv6GPQI976eOg6wQz7vT7cE59kaQ4ZjBkfL5hPxf7mg5H0zJrmkvlQnsNw76eSFJjIQVd9lFsbybHq1FsG6ICoZFFuGcGihNhRderICT63JmH/vBw6rXZot2vtogUV5swpC75BX+veGMsxNVPNs3ugwqpmBuWlYHKoWsiv73Ka95WsEGzElncL2/nzDWQZbb5XllzJmNPYH8oUWkksigRBd447+zxs4CSsxEF1gho5rnnf6KYpgGgQEn90W1gta7qppY8Jqo4NVbNuleywwszlQx7Obx6SrOzIezjj+/fjHtgd/DHoMUniTDmSRSsSNrRpsSckvTsA1UnBWLHkpViWqukIQcFdE3Ee2xgdtvUR9qIP/26HwCzFVpSbT31bTPDKtoVcJAeG43nSmhLi4Px0+AtOXMx1gR+iQrB8uildA9qC3mkDVsghDEAiBlUpw/6bWxsTC3PAwxQkL+UIVM7VTJKrFvF/zB72eiDnm1bTOKaKYykVy1Ff/g+1r2cODIcGPM/l0TM74l3J4Le3tTUWCl7SaldWBDf+hU3oQVjcfBYsdCidYopW4DJ+fSfqrQQhR4UuiUX43F9Y6hsXcq7v/IcVMRfD3jWXgzOisSLeTDdqParFMs+pCL3X0ocOqWhoqEXjgcEdY/zoHXpqoIJh2XDL3wAvhyd+EXvldNyezf3KJpJhyFCKyIyQ8GwU0qoZHkWJE6xuJ3LYc9BpWJztUURlw6/jsaCEqwQoTBs2BZsAhvt3bqUUsNAsJMHBp8puTC/UvQAGoKxPEO7UQfsD6FeCQ1VRZhFPfAxXuZO7Ks7wITRZ5jlW7UGg/yPkKUJu8enjQQfpoWT/jfsJiDQDTl8Q47O93PQ1C3Fg4brglrUDrxNumxGfhABdCgJWAkz2kf/SfMBICftivVVbYIHAaaIblG5rmR4gmw8KPRUBDDimWuIztledWp61/lu2aH4Ok3uB0ZcIUQ== X-OriginatorOrg: corigine.com X-MS-Exchange-CrossTenant-Network-Message-Id: d8931ee9-e019-450d-1270-08dc34191b7b X-MS-Exchange-CrossTenant-AuthSource: SJ0PR13MB5545.namprd13.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 23 Feb 2024 02:42:42.2511 (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: /z73fB8cWoOHGZGGO1AHCooJkvoAOqtClOW6tQbBpIt0Yq1H0NS4+gVgqUH8ZXWY4SmaHJG8jSv5PYz0wbUTndzgo/bxjamiSRj7IjGw4lQ= X-MS-Exchange-Transport-CrossTenantHeadersStamped: SA1PR13MB6645 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 Fri Feb 23 02:42:17 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Chaoyong He X-Patchwork-Id: 137078 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 4E63843B91; Fri, 23 Feb 2024 03:43:12 +0100 (CET) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 956A44113D; Fri, 23 Feb 2024 03:42:54 +0100 (CET) Received: from NAM12-MW2-obe.outbound.protection.outlook.com (mail-mw2nam12on2115.outbound.protection.outlook.com [40.107.244.115]) by mails.dpdk.org (Postfix) with ESMTP id 8C44C40EDF for ; Fri, 23 Feb 2024 03:42:46 +0100 (CET) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=S4aYJPgGt6FrNKUSp6eZOa1FdTUqpqXAqdDyFLmOjOgqZHL7L4exVYr6lWD7Y/utruvksSU1buH8xeoTxNedvyLlj1WhNLAjWASYl87OWUbmJM8Zc5UXEAJndoWgSTi0iuOU2scZqx7SH1NtOn2JUXFhj9aGD5kyvafQ3Z4RX4QKZZrR9oBc+aBkL2ZNPG92Sunwgo4w3SezgaTH6YHAwBBjBPm7I1Gqok4Z85efOygC7KdaaqPkrg6vHtZ4hGHVS1CS8VpXIC10I/HofKMJJxmuITg7kNxlOu/XWO1bV8MHjQd+JGIO04zeWXDx1EnN6yAFILBTyAL/HGzqJHlc+w== 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=kynyfO8Jz3442pdrfInFC1oFQO/XUoXwmbbNh8eAV/T9Z3tEyS/ARjDMS83D637uXn5tmzLvA/3EslAuZcDfzLKVvo56xV7Mkp45ju296aCmFfRyN51T78k8MV9BAxncSmrH7khxse3uakBAbnm1tS1GwdC1y15N6O+UsibYnm8TpJMuMVczPfSBKbvN1jnFX4XWuipahPUkaf6UmugNtSUzNMyPKPysrQgtDrQ/6Z1ipjDK2YrARqjWfNupu91uC/Yu6SXVS3AbIFeygc6Wc12okfzXBb9QkCCljSnSnLea8ctm/Og1t/V8f+S8yHXa4QHqKnl2N+Z0d/9rXRIZZA== 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=WktUGfTspTO57I9lKLwShYkHa2vG088UawJGw6hSdI2EVpWtDhmip4Cg2tFT5vBI/yBssWzXzjxkV1knrX4f0IXvY+bW6yR8Wl7nEt1gbxizovkUOS6cm2crmP7fKvZNYQLsXYUg3z8ToCrJLpKrTrZQo160aW6xTQ66Ypc/B9o= 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 SA1PR13MB6645.namprd13.prod.outlook.com (2603:10b6:806:3e6::9) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7316.24; Fri, 23 Feb 2024 02:42:44 +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.023; Fri, 23 Feb 2024 02:42:44 +0000 From: Chaoyong He To: dev@dpdk.org Cc: oss-drivers@corigine.com, Long Wu , Chaoyong He , Peng Zhang Subject: [PATCH v2 4/4] net/nfp: support RSS flow action Date: Fri, 23 Feb 2024 10:42:17 +0800 Message-Id: <20240223024217.3052031-5-chaoyong.he@corigine.com> X-Mailer: git-send-email 2.39.1 In-Reply-To: <20240223024217.3052031-1-chaoyong.he@corigine.com> References: <20240210104214.1248772-1-chaoyong.he@corigine.com> <20240223024217.3052031-1-chaoyong.he@corigine.com> X-ClientProxiedBy: SJ0PR13CA0040.namprd13.prod.outlook.com (2603:10b6:a03:2c2::15) To SJ0PR13MB5545.namprd13.prod.outlook.com (2603:10b6:a03:424::5) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: SJ0PR13MB5545:EE_|SA1PR13MB6645:EE_ X-MS-Office365-Filtering-Correlation-Id: bf28b7d2-dc83-451a-2b20-08dc34191ca1 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: hWPdRjvKBYZC1xdV4n31o1BgE2xGar7TmzXXoq0WLC63T1IYjHBgK+08v9xVkqa3rzU4Rm9N2nUOTgzAkwaZT2VGUfEhxf/12rc6Hp5CMv7EKh+1ESXF8kNyhOF62KhMYF1PhOqGfvQ7aSWtTaw49Vt98rSBFuwuIMYdYzi41bdCZVCGqdv3tu2I0GI8YTR/vTSEDkdLZ6GVy9KlMYEGJmU3gS9LT8nTZ6z40wfuO3ofs9gDVCKw3cxlQuhtxk41mvZGTT+k0/+vnTarfMURYaLX3id/gFB9oui3pH058qunaXu9jeatP10rPAu9rEDriuLe7vvAUX1YdPT2piBaZAe+qivd9m/C9mOGOSUHR6yUH1L/zl4kDyzW4k0xfkb+pXZYloLnf0h7S31JlMOnBr2lrzp47bPWoCrPGw5qLpxVHzuxXA38DqPYrUrf26VGvLS3xKTvOUHnERC0bLcPZ30jrqxNBbKaUrzGiiJTM+grYa18Wwcfe80/fm9L7eG8e6aiRzgaDeBtvt4JjIV4eGspDYaLzQUxZK8N7c8iE5kI9a2ZpU6IN+HxBHoqyjV++V29i/PaO3tGaZJI5/hD94AZZozXaSdwn8bQtuPLLh1w2X4TVLdUUmXQPtTKd5Yl 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: TRgRs/j3tTOboMrACqkBsVSLM1kexAI+n8TIHBKj5VJmyKebfryVmWBkzeP/HURB52iyKWqPqs/Lzg0Pt5Tj6zH/qbv8S97uORId7X7sX7qIJ7Yny8Bc9TcU/OstqrbVvUNQUH07Sh0n2tqpDBg+cFl3jRjLxHM1eX1xg+GZuRyVTGXimEpYu1GUboUM0dkDtuen+/rzQrHUk5SM0If3OS5Q6xMr+JXEBJ1dV3urjGMd/9tRyaS2guCKnXMyFdGR1bKucfjdAXOYNs85E3wXI+8bb+xnC/2Fzx9qa7dzgqr7XlyQyLwxqdYV14skgOjIpKkvOJN1Vg/ZIiALsnPLgAL6gbwWN2ww7syHNv5ZQnwNa0Z8DodYp//cVpv5JkgxFF1yv+8frkx9EXnUvArEhEA3Eg9Qf8eaSlq5F7/EsKgYO6HNMmJCTih8EZ2TTuTH7xH+/4QGnHZkR/eu3Pii0PA1trfP90GHIG3T48iSpUTVJe4P1vhc+HtVQ1lRye6vs4DHZM9inAw+koHgs74Xr7NvbsPXxAN/HxErpiZZlW1K39g5NXc3JdPv3k6U5T4MzbiCg3hIU48lCTv2DNT8xwV9zXn32ntJOwjqslCGQxgtnhiH2vrRAKTymidKs5QprgW3ZLK8TgSyALhxk9Gy+BPTfEaWUAyTxsaZ70QSn2t1LEJNYBzUvyTN6ax75B1hkPipuEZK6fYNBWCht6Ih8Z/qGcAsfUzKnZJauVv7UFb/ikJ3qdk7RouYcUzX62xiWnoTc+ke6/qtg5J0ixub5mJrt13rFsRted9SkmLllT7pC4pAZ+PAq3WDeSjfJc1T79Hl1TMqtj7aLBbmfZrxZlItyFlEm+0kv4FGHCFYrEAiU9gbUSb9uadsB/c2Fm9PU7eK+lCdrB2twzKALjUKej2+wpfQE7hVuhudxRmEESAFw9lUlpGbQCsVH03sg73Y8LGD1keZSOuaRuYQdMdxZnxebEzXbQSNP+94uSnDgVcKLBYhbTMJipYG4UISo2ZlKdF/+akHI/lVFgQusI61QwY1BTPAUCKoOymknX7KG0253HV5HUNoyZPnpmTYCdaq6ZPpsicuut8LKv32I0RqsBN2myq8SSKydA9SGkvUzBfcxwoE3plnzLUK5EziYGXGxXwz9ZqcxBSndV3d9dR3P/sO5IGdIDCaJoR22UX6crTjfBBmBbG2wsh3UJMnxxEK+7FroGJu9762W3+FpXmKK075VYcFtBkmSWj11Q/Iz8V49kYAbCLCa1nJrdxhiemZQqIBQVp9Wcw5lgVJCb572bQMnIjGDOD4M/c/GKGvgX4M520k4QRr5GqolXkkOTESX58hNVZyIWTkSZMmDjM7a4KqLIvcoV5ku1lqLuAzSpHlPFiS0Ma3wWZYpZO2Rl786XS5its3sNVGYnd2zEx4rLOh66LxWRLtoT3aDwKtqa3aj429P/JrS/9oQGcLOjTSFu9A100AxEGCVeud1SSJxCUAriutY0UyOrQztJnJlEcagL6M4YANLHr1Cu7OsVmFSBhAGM1vi3WeKRVses72d3ddv5TKZhGyb6/cfY1x8E00vokvJ3zY+anKpVAyDnwcLqnyLcR1GjrA9J59ZfsqQg== X-OriginatorOrg: corigine.com X-MS-Exchange-CrossTenant-Network-Message-Id: bf28b7d2-dc83-451a-2b20-08dc34191ca1 X-MS-Exchange-CrossTenant-AuthSource: SJ0PR13MB5545.namprd13.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 23 Feb 2024 02:42:44.1662 (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: w8+ZkZ/I7EuOtFMrc++lt/kaKhdeZIC6sstLb2q0Ryd5j9cA45iX5GrV60O1R+1yjsuuVIHsbkX1jVotMOJXAFYUvrj8n/x56PMBybZws6M= X-MS-Exchange-Transport-CrossTenantHeadersStamped: SA1PR13MB6645 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__ */