From patchwork Mon Dec 11 03:08:58 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Chaoyong He X-Patchwork-Id: 135001 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 731D4436C3; Mon, 11 Dec 2023 04:10:15 +0100 (CET) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 7041440DDC; Mon, 11 Dec 2023 04:09:35 +0100 (CET) Received: from NAM12-DM6-obe.outbound.protection.outlook.com (mail-dm6nam12on2121.outbound.protection.outlook.com [40.107.243.121]) by mails.dpdk.org (Postfix) with ESMTP id 168E940ED6 for ; Mon, 11 Dec 2023 04:09:34 +0100 (CET) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=d1i28rRjjONy6/AsgnBJPmur330WXU/QSeFJaw3x3/3FYrtdFIRyXuHMCs6Add+ds7WsMeNMMj2RgpAB1+Id+AHegPNwTCVX0bU2HqcRN2LM7WuGVQ+a9mLwlatDbmtTIVuzqjCIKvjoGoTjDRuBV12QjJUrN8OscZQijJBDNQA+ntd67uSLdzTS/KTrBDDFAT7WlkN4FTh1m6ucaIzXpFENVkvI7iXERJF1q9rsQtMnVltuFYWB7K34Awye98xp3S9QVKiPX7LPYJ+OCqV+LKE+3SwFl2PN1zOxk8AA07MCsSB5QVBSc5FQJoEmjpF8Ab0MKIUWF/NWOgPMVNnvdQ== 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=4vyYa9CPVUFqreQcSqYSWne72DOFdKjUtYvkCAxcGew=; b=B492+XuC5gIsFnAYzEyFXkiphRDjoS7tgYSPS5SZditJoHdJtAeHH6YRmPA7yH03FA2F1cuMRvjmyWOs+hNnNbioxCOrctKRdvYpzlWw1o2R+34DdsFYZt8Cew85ukdp2R8NevEdm6Vt3dCrrju1zKeMkJ/CZ10oN103UeXFriyyKZ6xbHLwnBqBC+pOq+2GraPVvwLXA564IGvWZXYQNeyc/HvhUh8TqtuO+Eu/4olwBed+tQjTrubt6Juo5zbQ2kQ9Z2MQ9fywukk4aXFNvTNPEvnAI/IQZW3SInS5j6M/MRaHBOWfInP2BEG7htwgmBTPLzqOVp0bBPoxMJYJTA== 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=4vyYa9CPVUFqreQcSqYSWne72DOFdKjUtYvkCAxcGew=; b=rc+DnJ5bNthqg6MWnavSVSHFFeWyiMHGDIY4C5dDoqYGB+yeDYWOIrXAJWJPFcIIiicRAOa2lYbVF//1Kv6yxoYGRxkXXyj8PALrpSUvP6+wG9/Ri3J69idwydxvypTMkZxfaVhmj/hg/HdhBhWsswy2hKT4NAzmhW7wnGantkM= 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 PH0PR13MB5666.namprd13.prod.outlook.com (2603:10b6:510:111::14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7068.32; Mon, 11 Dec 2023 03:09:32 +0000 Received: from SJ0PR13MB5545.namprd13.prod.outlook.com ([fe80::45b3:d83c:cff2:4a1b]) by SJ0PR13MB5545.namprd13.prod.outlook.com ([fe80::45b3:d83c:cff2:4a1b%6]) with mapi id 15.20.7068.031; Mon, 11 Dec 2023 03:09:32 +0000 From: Chaoyong He To: dev@dpdk.org Cc: oss-drivers@corigine.com, Zerun Fu , Long Wu , Peng Zhang , Chaoyong He Subject: [PATCH 7/7] net/nfp: support setting FEC mode Date: Mon, 11 Dec 2023 11:08:58 +0800 Message-Id: <20231211030858.1693240-8-chaoyong.he@corigine.com> X-Mailer: git-send-email 2.39.1 In-Reply-To: <20231211030858.1693240-1-chaoyong.he@corigine.com> References: <20231211030858.1693240-1-chaoyong.he@corigine.com> X-ClientProxiedBy: SJ0PR13CA0166.namprd13.prod.outlook.com (2603:10b6:a03:2c7::21) To SJ0PR13MB5545.namprd13.prod.outlook.com (2603:10b6:a03:424::5) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: SJ0PR13MB5545:EE_|PH0PR13MB5666:EE_ X-MS-Office365-Filtering-Correlation-Id: ee4aaaa5-f7b4-4d97-8005-08dbf9f6986f X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: nRhMiWL0c2KgCD9GolhOhTlwz3qQGU0A22ZOjRig62XSY67pT1EkDdXaEoBsaWxro6v77tA+DkEXOUY5L0J/iVPt/ISEjBsc5ceDldg6fotJMA3xFgXzBtkfhvaeOnuNA4MKJfNTHa6fGxtvJ+cMEii/kGRh24jVgIfIppt1tMOdrPkHGJDkXrs9lLpX6thJ0DiiHZMLuJFpLzHSdz9cKA6L2QAwM9q6fLD/ihpVScvDAycqAiXtiKrb/xRM3Q6wPu2MBN/QpabDkGsi47qBf05DABlc1AlC4oXih6o//up4u00jewJ3BFHvjLfHRBAijE6WqNtowcGUFX/BSutN4pklKMWqtZjnsasRqQnHDUuy3Y0UNAFRAh6oM3vJ8P1i8OTmS07be7KvIedGRVH1ObxZV1xBbIzBqk7M10/plbOObhMABdTq2yHEqkH88eJqV1LUEti5u6fK2xqskmptmrlPFTBilHU5rBJNaPBIBxK9d61CyR5+9ti149etsXHzi6IgVgQXBu2Z73+4HvSbwvemseLJZQWXwT0tXqW5+QW3Lh9jznBYgX2FPCdUYMnRfvCfoUTEtadLSSvAMuUXbuVbiPHFAvTG7bigX935ZZd4xVNL6RojUf/eVikVFDFj9ACAwI9pnNRHwrypaRTse0q6av5yd3jgnTWYHe9D/+w= 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)(39830400003)(136003)(376002)(396003)(346002)(366004)(230922051799003)(451199024)(1800799012)(186009)(64100799003)(41300700001)(5660300002)(38350700005)(2906002)(6512007)(6506007)(107886003)(2616005)(1076003)(6666004)(52116002)(36756003)(478600001)(6486002)(38100700002)(83380400001)(26005)(8936002)(8676002)(4326008)(86362001)(6916009)(66476007)(66556008)(54906003)(316002)(66946007)(44832011); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: pqNtHy/TJvWwWbim+1OXy+VbZrrm4zl2YmO9NiPYp9+VKk7m6uuUe5bdWx7Z2nbRnFUJ+e71odRo6wTZdEvPi2zBXnT6OKi9u6K9jJfCBAMyHaPdnZDcwB8wwogyEf4H8Lr8aSowxlt562ssCn6NlXf3WxOb+b9iDKZFGRv1zx9COE2A6C72IHvpspRXyhZOXLxazuxI2vFbs0b1LvMMy8I8DdqbAp/ZIHb+OdipW6Wt4BVX0wOkH4cagG7th8nW4pgijsOY4sXkQvZTJ/EILY985yQ3zUcpbW76QH3awcnrIg6ihG4qdoJn5SaLleJciOt0Z98+onxv+BKnFhuWma133B1eqRRh/FT1a7GFxdKc8vE52szNIfRg5NDTpHDEKfiA27oQUzunilhUAu2WIrAAUBdDO5AndyviVIRZQqpMlY5SstmEE22QfKfxKOXHT55nTAKsL+O++fGrivlfFyQJwBmAWX3Hx4wvzh16WJVVLjlzAyuzh/kKVskr9qDBHNRHpXbJgk+1p9eEba5yPOLeacOShkEZGsyXKURkZztt9qfvKchpR8B3QhY0SSQED3NUjZO5CN0aHZUTRdh5Ol/3R5Ibr/ckfE77gHkiYKj2BKIwkyPN6SJYBOqY4M+j0CxsGGzW0DU4sVPvLNoTRgXJetbk4tbsPCefidqSSJL/4+sEzrpbfDfOJ0JolxAi1LuRipU+0nonwZQsYkmXfNpgxwzgDDBmZTTaUQws3f/2oyX7pFkXw8ufGdPBS7vLlYdxpBMEfEZsG6oqcwaEmtH7yOmWS9eRiaZFz+VejJTa+iiQ8BfxpWNdaIlk6CHemEW67GAuzhmrO+dZEuxtbuFT/xVi83K5xohUi9x5sfWyL+EN+QkItfwU707KCjMmE3shfj8Voz0ksimwUaAq3G/h09iRqTCSCuhlds2NiJXUWaCVDLT1igRX2V8VZwdEInttvk7V5ejQmC38cmfD1cBTvnpwmE4Mj8y7YkJaqKddmYz8dzDo2pF8yQ3iNmnvO7gaEXfePaA4Wwod4t72pSMiA0WZt0fB5wYj0ocpz/WnaOTfrxCYA9LGIlX1t0nKaFJlHuyhuVCt1QI8xo7pU67Wtju9Dp0oWKbQLjx4cqueOw8agHqSPmUF/3dNU3mfmVLl4V00ZNkVPqueRqV00bzyPB/ISD1gfNpeZik92yPcFStAaDm3ALTFXUL9bzcUypurcSJucXzTcjGyQHpvXO8F39mWk5irnBY0ijHqjVxXpjpqTLr88TROLjY4XDIS5e4M9ibuPtgHkRgAguflwbA9A8eySMEzBLJRk6v4TvvmlW2mfXl7Ir37OZbZ/bInHGKX4UBrDhTjIRx8AkGL2EzMwOwQZ0eQyBsHn3mUR/KmJgUMzQscZg+EJefSFPxUwQ1prRKzHKzYcrLYXxq/+MV3zEheskKENvRbEp51lJVx0k7KksPzyz8Am/wbWyDowMTQL+QyAKdTxNiQOqqPpEabVZ+f7TaTKzf51eUfJzh7IDuQv8Wp7gSGMx+hm/PguDUYurqk2Zy3qqgrIdMaIBSSMlP4S4cov4RCHjd+c9NFbuiKdURMforMQWgNesRXv/aA0HpieZjHsS+wjcE6FQ== X-OriginatorOrg: corigine.com X-MS-Exchange-CrossTenant-Network-Message-Id: ee4aaaa5-f7b4-4d97-8005-08dbf9f6986f X-MS-Exchange-CrossTenant-AuthSource: SJ0PR13MB5545.namprd13.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 11 Dec 2023 03:09:32.0395 (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: 4V6R81CnSE0rg4vBmT+57wKWhPAWXMLq1+3NTidhWNHRHywDeDDJ4HyRIVHHbuTOwRtrZUzjYXGbm1Y/I8OFuj3t5eCk9YLnD/8jVU61kTo= X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH0PR13MB5666 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: Zerun Fu Add support for configuring FEC mode. This feature allows to set any currently supported FEC mode. Signed-off-by: Zerun Fu Reviewed-by: Long Wu Reviewed-by: Peng Zhang Reviewed-by: Chaoyong He --- drivers/net/nfp/nfp_ethdev.c | 1 + drivers/net/nfp/nfp_net_common.c | 54 +++++++++++++++++++++++++++++++ drivers/net/nfp/nfp_net_common.h | 2 ++ drivers/net/nfp/nfpcore/nfp_nsp.h | 1 + 4 files changed, 58 insertions(+) diff --git a/drivers/net/nfp/nfp_ethdev.c b/drivers/net/nfp/nfp_ethdev.c index e3f5fe7917..185b570892 100644 --- a/drivers/net/nfp/nfp_ethdev.c +++ b/drivers/net/nfp/nfp_ethdev.c @@ -761,6 +761,7 @@ static const struct eth_dev_ops nfp_net_eth_dev_ops = { .flow_ops_get = nfp_net_flow_ops_get, .fec_get_capability = nfp_net_fec_get_capability, .fec_get = nfp_net_fec_get, + .fec_set = nfp_net_fec_set, }; static inline void diff --git a/drivers/net/nfp/nfp_net_common.c b/drivers/net/nfp/nfp_net_common.c index 063c048675..eeb0aaae26 100644 --- a/drivers/net/nfp/nfp_net_common.c +++ b/drivers/net/nfp/nfp_net_common.c @@ -2386,3 +2386,57 @@ nfp_net_fec_get(struct rte_eth_dev *dev, return 0; } + +static enum nfp_eth_fec +nfp_net_fec_rte_to_nfp(uint32_t fec) +{ + switch (fec) { + case RTE_BIT32(RTE_ETH_FEC_AUTO): + return NFP_FEC_AUTO_BIT; + case RTE_BIT32(RTE_ETH_FEC_NOFEC): + return NFP_FEC_DISABLED_BIT; + case RTE_BIT32(RTE_ETH_FEC_RS): + return NFP_FEC_REED_SOLOMON_BIT; + case RTE_BIT32(RTE_ETH_FEC_BASER): + return NFP_FEC_BASER_BIT; + default: + return NFP_FEC_INVALID_BIT; + } +} + +int +nfp_net_fec_set(struct rte_eth_dev *dev, + uint32_t fec_capa) +{ + enum nfp_eth_fec fec; + struct nfp_net_hw *hw; + uint32_t supported_fec; + struct nfp_eth_table *nfp_eth_table; + struct nfp_eth_table_port *eth_port; + + hw = nfp_net_get_hw(dev); + if (hw->pf_dev == NULL) + return -EINVAL; + + nfp_eth_table = hw->pf_dev->nfp_eth_table; + eth_port = &nfp_eth_table->ports[hw->idx]; + + supported_fec = nfp_eth_supported_fec_modes(eth_port); + if (supported_fec == 0) { + PMD_DRV_LOG(ERR, "NFP can not support FEC."); + return -ENOTSUP; + } + + fec = nfp_net_fec_rte_to_nfp(fec_capa); + if (fec == NFP_FEC_INVALID_BIT) { + PMD_DRV_LOG(ERR, "FEC modes is invalid."); + return -EINVAL; + } + + if ((RTE_BIT32(fec) & supported_fec) == 0) { + PMD_DRV_LOG(ERR, "Unsupported FEC mode is set."); + return -EIO; + } + + return nfp_eth_set_fec(hw->cpp, eth_port->index, fec); +} diff --git a/drivers/net/nfp/nfp_net_common.h b/drivers/net/nfp/nfp_net_common.h index fa88323b7c..66c900e3b8 100644 --- a/drivers/net/nfp/nfp_net_common.h +++ b/drivers/net/nfp/nfp_net_common.h @@ -293,6 +293,8 @@ int nfp_net_fec_get_capability(struct rte_eth_dev *dev, unsigned int num); int nfp_net_fec_get(struct rte_eth_dev *dev, uint32_t *fec_capa); +int nfp_net_fec_set(struct rte_eth_dev *dev, + uint32_t fec_capa); #define NFP_PRIV_TO_APP_FW_NIC(app_fw_priv)\ ((struct nfp_app_fw_nic *)app_fw_priv) diff --git a/drivers/net/nfp/nfpcore/nfp_nsp.h b/drivers/net/nfp/nfpcore/nfp_nsp.h index 41e8402154..2ce05c2ec9 100644 --- a/drivers/net/nfp/nfpcore/nfp_nsp.h +++ b/drivers/net/nfp/nfpcore/nfp_nsp.h @@ -100,6 +100,7 @@ enum nfp_eth_fec { NFP_FEC_BASER_BIT, NFP_FEC_REED_SOLOMON_BIT, NFP_FEC_DISABLED_BIT, + NFP_FEC_INVALID_BIT, }; #define NFP_FEC_AUTO RTE_BIT32(NFP_FEC_AUTO_BIT)