From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id 1209243269; Thu, 2 Nov 2023 06:38:14 +0100 (CET) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id AE26C402C6; Thu, 2 Nov 2023 06:38:13 +0100 (CET) Received: from NAM02-BN1-obe.outbound.protection.outlook.com (mail-bn1nam02on2131.outbound.protection.outlook.com [40.107.212.131]) by mails.dpdk.org (Postfix) with ESMTP id 42FE5402C3 for ; Thu, 2 Nov 2023 06:38:12 +0100 (CET) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=E/ChhcNTn4K4u2ROgICNXM6cl6hmcvSA7qUZW5LHhAisjkxD9F4jbfiH2QuORAEfBGDO1Rw6vylJzfzAiVEVtdxLEpeSjaePxGg9B68X6/FG/zf5IeD2ReZf9h98RDfKqvZa34ldPKcLqNnYT1PgjEp+BxCUvLj2OlRs8rIovEtRml9hcHIC9Ub9wTr7UKOfgLIBGXNWmTUIKmoGp2Z+OvZC4wi1nGBrjgtH4n4FMQ6axybBl6ZGRsBEGdGXZr41tYHtWt37PvhhJnSzk4nY3xxI6CUM3D4nmapHukx0DWRCe3So9/dtBVjO/n5rHDnNxbKh0LlRS3JjQUAdikXDtw== 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=6ymggqWWyp1ePcd3CdknXVZqdwSt4bWGHG9mtH7pxag=; b=LzbgHOnJppAom5qdSF4nYukD3GIv1ME+kuDUIJ4s7f6jegU9k6UokWUA8fETLIN8UhTHjFjoj6QEEtDajbjPggN2+QJPDWgHssLtWM749Wng/Y4qofYGWtnoZ3ePZOXh4u7E8iEyNXC7MxvxBEwGaQBaJb2w5aA8En0LnHuYKf6+WcaIKMETUmB1lPSQl8armHyYiZb3J3zUYXkFi7M3WLZNdj/4Ap/93aiN8WWsoEDFLn6fZ9YmM4NCnHr5TOuENo4V7LffN0xK81pP5s+18a/oQGZSqfC33JvsQWioJW3vhLucLdEOeJrpr2BN3eeNTKIB2qyfCRLieYfJRnZotw== 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=6ymggqWWyp1ePcd3CdknXVZqdwSt4bWGHG9mtH7pxag=; b=YQY32k7tNEIO1u8IgPlIIjzzfEaHdPhWeueNIT9wlx8VS5PW+NhLLoozBCPTmkM70Puvb2IN19gQNlyR4Yo+qV9uTEYOBe7E9TjH76RELvYVIR62RrU/2PRfs7CTPof1jC+KDL+o25+FEeaBgzy/Wh5SnDMnILJyrsdhNhuryKg= 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 PH7PR13MB5526.namprd13.prod.outlook.com (2603:10b6:510:130::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6933.29; Thu, 2 Nov 2023 05:38:07 +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.6933.027; Thu, 2 Nov 2023 05:38:07 +0000 From: Chaoyong He To: dev@dpdk.org Cc: oss-drivers@corigine.com, Qin Ke , Chaoyong He Subject: [PATCH] net/nfp: add support of dynamic config of allmulticast mode Date: Thu, 2 Nov 2023 13:37:44 +0800 Message-Id: <20231102053744.2358687-1-chaoyong.he@corigine.com> X-Mailer: git-send-email 2.39.1 Content-Transfer-Encoding: 8bit Content-Type: text/plain X-ClientProxiedBy: SJ0PR03CA0072.namprd03.prod.outlook.com (2603:10b6:a03:331::17) To SJ0PR13MB5545.namprd13.prod.outlook.com (2603:10b6:a03:424::5) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: SJ0PR13MB5545:EE_|PH7PR13MB5526:EE_ X-MS-Office365-Filtering-Correlation-Id: ee04e742-ada9-4c49-d5e6-08dbdb65e41d X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: mGvj901U1SCqlvUt7+yYSYdS2ciV9W9BpelsurhxU85iXDXgG8Rnmxham4pDd+WyQ7Z/rnlRsaFiSQqa+blB9+zliUHx/IX3Qjmej28Tvp6pBp9s9aLGOjh/YKgioBpYv4lgT4w9dVu35RdenNO51YgSs2A+YW+M21Zv4SDtC8aqM7f48PufX1n5Tea7QFwPhOgFANvAaFneB+osl4HyxoSDtBdYZONGx4x6JwqOL19bLpJ53WvMgSN6GLfnir4sM7A1HmfMm+VmjJVdObzseKTBDNEDSj5hAov4ScjT9+KH+SbvkPZjmACbzqKlYGlKDXrnksrErTHWstlMvv3Txa+r+MRNyM6Lr62c16IPwzDSHcvS0ZhemcQ43IFYbt17nFys4Yawn2mCZ7kVGvzmtD6sSmDIifeRimdUy3W9fTawbEupAniy3TzGoMN/SdQoaVWW9BClWrqB44IRVOoMtvHw48gT7/QrajiwgycYu4FjBvKclXqry+y4xfY326lGuQ4YjbQExvOeSSZ2P5EQB2HLacGCMjXkK4OmLb0uFC3tOMqjOIOFzQN0LXoC7mUR7irqvYJgK5VPx2kBf0Xd/5DsJNdm8DA3C+1Oup3W6Ythig52Ep3Ktm045CCenVkNH78K41CRtqypzNT4qFp5pP5btrLJTKLSaqPRwo0MThg= 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)(136003)(346002)(376002)(396003)(366004)(39830400003)(230922051799003)(1800799009)(186009)(451199024)(64100799003)(6916009)(316002)(38350700005)(107886003)(86362001)(2616005)(66476007)(2906002)(1076003)(83380400001)(26005)(54906003)(66556008)(66946007)(36756003)(6506007)(38100700002)(52116002)(41300700001)(478600001)(44832011)(6512007)(8936002)(6666004)(4326008)(8676002)(6486002)(5660300002); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?SE4Y+kiFrQujdFndVhd5A1QrFp/vzj4MIIBgBqmWAaBrKWCMU6JBdKliD5/d?= =?us-ascii?Q?i4U8lUvxtPaAnE+3L7JvhTDEfpYGWmbdTFXc4fjppB3bjnYhCU1s6nHtX0BK?= =?us-ascii?Q?Xw35jODBxO16gzSy8O6ILNJuHRfKXLospoki70/Cei+eIXNqwQUoyMIVnUHr?= =?us-ascii?Q?uz4/Zvx67jjhWtOvBO7hlAvlZZ/aVDEs2OAzG6eqM7OU8pQ0MhMLcjCfgxFj?= =?us-ascii?Q?a4hrc8jz4nOjHPhMIStSX1di/e4tt9vvdqJwvpxpBvUECCKvNymeNu2nURUS?= =?us-ascii?Q?bfNJAHmd6EDysmKWhrVVwsDKIfzdZZSQGuOi2DF2e0dVruIqfb2gB2K6LxfE?= =?us-ascii?Q?gMb4X1nW8+YbaGiOZo/TseojSXA7Fvf2x0nsGRB158hxBJ0Nlttb041ie5Um?= =?us-ascii?Q?izFhYB+C/czykJFoI73lBtoKAFyQj3M6f2FZs70y98mxKGOMCENX7mxFOy8r?= =?us-ascii?Q?XSlEcr8UfMhRhjK5pxDb3gm98gvSkWX0otN3ZjCyVKeYp31mgpuhiVX7Xvch?= =?us-ascii?Q?XVgmYW7VvbryX3NFgCftMizeT1K80BJkzxfYtFs2RVrYCmOEADWMG+ySIoOx?= =?us-ascii?Q?0sc1G2/8777BrdFHu34o2p1IAdD6HpW4E3GbZMwSmFRcKKjLyTgW/gEg/+Bg?= =?us-ascii?Q?jUxV6Z9dBEKP3D8kNWSW8mPPRd+gbtjKMnTThkL04tqRvmw4iD3Ub0mRfgKT?= =?us-ascii?Q?OhXxjLsBGca5tZm/kipz71V+uahZu4vkubtT5k486pzvKctnuGLfIFmMjz29?= =?us-ascii?Q?qWFiHXHKsbB1Q1VZV4cjLEQyhrzmuRKayTr3Ag1psoAfapaXH7PBK93DiFrp?= =?us-ascii?Q?IVZfnqNjRYTunBvhpAwKZTZZvpUIzk6yzwOTlFQxiqakSaweW5fbbK5yjXXo?= =?us-ascii?Q?X6XQ+wEJDKVrVU1R5aqiIupiiGzhoP/sdPA3lY9ZPw7XOh2S93N8nfT3cH7H?= =?us-ascii?Q?FArkxPebYTLNTbVqlL7SzQAaXPdLyoizQRP1Q3yXotSz99mE8hj4whpkunRx?= =?us-ascii?Q?iNn0z3WHOJDVenMLln1vp7DoHNThq/yeh/U+MAZyi7rdrZNhzWNQao2i1HmI?= =?us-ascii?Q?x7vRjRrEMlmAHpsg9jxhDvmA5SVpU+yD8KpuM3JC0im0L3winfs33JmtiNsn?= =?us-ascii?Q?2LKyqz94WIWQE/RzFTyuvyuTTLzyk6NNgwrzxxLJW8k77vA0BXu7DwuVsRyy?= =?us-ascii?Q?ubmVl5FV1phtwKIJrpeYvOaUH0G3mbpJ9NKtY4PCZBe9yRml7X59ksCs6Vcm?= =?us-ascii?Q?2I/Md1xWC5HhXy6PlkwyB30aTgbmeJqf7uDUBBxpjwpBRQohxKqtrrwgUmke?= =?us-ascii?Q?j40aiLkkChl9HhKIXYCTnYjGzjWnTsxBcvqBLL2tiDwqyog3dm57ZCjJe864?= =?us-ascii?Q?3dlrKYWUtOcxoG7NS6FKT53vwNAOeTODES5wHm4xQBE7DdvhH7ArQjXnHHgf?= =?us-ascii?Q?VsMTxIB4BbnCv4J92fUfTAWKoLx2Zj0mYKCYTbjArQA7yASrFm/GnX1QY24l?= =?us-ascii?Q?5+FgyS/6u55sS+xBpY914gVI+33V8HbQ05PGI7YskEVE2HS8hOcqtI2/7H6z?= =?us-ascii?Q?ZJbBY/aPJ7rp6DiGdHk2U2FmL9shVNkhoPLZFR8zthcWTrePJZXUUt58Gpzq?= =?us-ascii?Q?jA=3D=3D?= X-OriginatorOrg: corigine.com X-MS-Exchange-CrossTenant-Network-Message-Id: ee04e742-ada9-4c49-d5e6-08dbdb65e41d X-MS-Exchange-CrossTenant-AuthSource: SJ0PR13MB5545.namprd13.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 02 Nov 2023 05:38:07.1697 (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: +TTS71V72yoFPuhfOS4cZf+nrAiqJDcJfrVUOIe4qqh0tLNYafOfJ6L4p+UNKoxBAIHeNFdPW82fu2fHVolq1SzFNGbcUKphD6f2ioKRPdc= X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH7PR13MB5526 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: Qin Ke Add support of dynamic config of allmulticast mode for NFP by adding enable and disable callback function. Signed-off-by: Qin Ke Reviewed-by: Chaoyong He --- doc/guides/nics/features/nfp.ini | 1 + drivers/common/nfp/nfp_common_ctrl.h | 1 + drivers/net/nfp/nfp_ethdev.c | 2 + drivers/net/nfp/nfp_ethdev_vf.c | 2 + drivers/net/nfp/nfp_net_common.c | 60 ++++++++++++++++++++++++++++ drivers/net/nfp/nfp_net_common.h | 2 + 6 files changed, 68 insertions(+) diff --git a/doc/guides/nics/features/nfp.ini b/doc/guides/nics/features/nfp.ini index 73efd41e43..1a09c4cbaf 100644 --- a/doc/guides/nics/features/nfp.ini +++ b/doc/guides/nics/features/nfp.ini @@ -11,6 +11,7 @@ Rx interrupt = Y Queue start/stop = Y MTU update = Y Promiscuous mode = Y +Allmulticast mode = Y TSO = Y RSS hash = Y RSS key update = Y diff --git a/drivers/common/nfp/nfp_common_ctrl.h b/drivers/common/nfp/nfp_common_ctrl.h index 7033c8ea00..fdd97e5902 100644 --- a/drivers/common/nfp/nfp_common_ctrl.h +++ b/drivers/common/nfp/nfp_common_ctrl.h @@ -219,6 +219,7 @@ struct nfp_net_fw_ver { #define NFP_NET_CFG_CTRL_WORD1 0x0098 #define NFP_NET_CFG_CTRL_PKT_TYPE (0x1 << 0) #define NFP_NET_CFG_CTRL_IPSEC (0x1 << 1) /**< IPsec offload */ +#define NFP_NET_CFG_CTRL_MCAST_FILTER (0x1 << 2) /**< Multicast Filter */ #define NFP_NET_CFG_CTRL_IPSEC_SM_LOOKUP (0x1 << 3) /**< SA short match lookup */ #define NFP_NET_CFG_CTRL_IPSEC_LM_LOOKUP (0x1 << 4) /**< SA long match lookup */ #define NFP_NET_CFG_CTRL_IN_ORDER (0x1 << 11) /**< Virtio in-order flag */ diff --git a/drivers/net/nfp/nfp_ethdev.c b/drivers/net/nfp/nfp_ethdev.c index 4fae2e5540..8babfc00b5 100644 --- a/drivers/net/nfp/nfp_ethdev.c +++ b/drivers/net/nfp/nfp_ethdev.c @@ -402,6 +402,8 @@ static const struct eth_dev_ops nfp_net_eth_dev_ops = { .dev_close = nfp_net_close, .promiscuous_enable = nfp_net_promisc_enable, .promiscuous_disable = nfp_net_promisc_disable, + .allmulticast_enable = nfp_net_allmulticast_enable, + .allmulticast_disable = nfp_net_allmulticast_disable, .link_update = nfp_net_link_update, .stats_get = nfp_net_stats_get, .stats_reset = nfp_net_stats_reset, diff --git a/drivers/net/nfp/nfp_ethdev_vf.c b/drivers/net/nfp/nfp_ethdev_vf.c index f3aa649054..e1bd5555e9 100644 --- a/drivers/net/nfp/nfp_ethdev_vf.c +++ b/drivers/net/nfp/nfp_ethdev_vf.c @@ -199,6 +199,8 @@ static const struct eth_dev_ops nfp_netvf_eth_dev_ops = { .dev_close = nfp_netvf_close, .promiscuous_enable = nfp_net_promisc_enable, .promiscuous_disable = nfp_net_promisc_disable, + .allmulticast_enable = nfp_net_allmulticast_enable, + .allmulticast_disable = nfp_net_allmulticast_disable, .link_update = nfp_net_link_update, .stats_get = nfp_net_stats_get, .stats_reset = nfp_net_stats_reset, diff --git a/drivers/net/nfp/nfp_net_common.c b/drivers/net/nfp/nfp_net_common.c index 4efcdff76f..2326c812c7 100644 --- a/drivers/net/nfp/nfp_net_common.c +++ b/drivers/net/nfp/nfp_net_common.c @@ -583,6 +583,66 @@ nfp_net_promisc_disable(struct rte_eth_dev *dev) return 0; } +static int +nfp_net_set_allmulticast_mode(struct rte_eth_dev *dev, + bool enable) +{ + int ret; + uint32_t update; + struct nfp_hw *hw; + uint32_t cap_extend; + uint32_t ctrl_extend; + uint32_t new_ctrl_extend; + struct nfp_net_hw *net_hw; + + net_hw = nfp_net_get_hw(dev); + hw = &net_hw->super; + + cap_extend = hw->cap_ext; + if ((cap_extend & NFP_NET_CFG_CTRL_MCAST_FILTER) == 0) { + PMD_DRV_LOG(ERR, "Allmulticast mode not supported"); + return -ENOTSUP; + } + + /* + * Allmulticast mode enabled when NFP_NET_CFG_CTRL_MCAST_FILTER bit is 0. + * Allmulticast mode disabled when NFP_NET_CFG_CTRL_MCAST_FILTER bit is 1. + */ + ctrl_extend = hw->ctrl_ext; + if (enable) { + if ((ctrl_extend & NFP_NET_CFG_CTRL_MCAST_FILTER) == 0) + return 0; + + new_ctrl_extend = ctrl_extend & ~NFP_NET_CFG_CTRL_MCAST_FILTER; + } else { + if ((ctrl_extend & NFP_NET_CFG_CTRL_MCAST_FILTER) != 0) + return 0; + + new_ctrl_extend = ctrl_extend | NFP_NET_CFG_CTRL_MCAST_FILTER; + } + + update = NFP_NET_CFG_UPDATE_GEN; + + ret = nfp_ext_reconfig(hw, new_ctrl_extend, update); + if (ret != 0) + return ret; + + hw->ctrl_ext = new_ctrl_extend; + return 0; +} + +int +nfp_net_allmulticast_enable(struct rte_eth_dev *dev) +{ + return nfp_net_set_allmulticast_mode(dev, true); +} + +int +nfp_net_allmulticast_disable(struct rte_eth_dev *dev) +{ + return nfp_net_set_allmulticast_mode(dev, false); +} + int nfp_net_link_update_common(struct rte_eth_dev *dev, struct nfp_net_hw *hw, diff --git a/drivers/net/nfp/nfp_net_common.h b/drivers/net/nfp/nfp_net_common.h index 1f9001c81d..2cad10668c 100644 --- a/drivers/net/nfp/nfp_net_common.h +++ b/drivers/net/nfp/nfp_net_common.h @@ -174,6 +174,8 @@ int nfp_configure_rx_interrupt(struct rte_eth_dev *dev, uint32_t nfp_check_offloads(struct rte_eth_dev *dev); int nfp_net_promisc_enable(struct rte_eth_dev *dev); int nfp_net_promisc_disable(struct rte_eth_dev *dev); +int nfp_net_allmulticast_enable(struct rte_eth_dev *dev); +int nfp_net_allmulticast_disable(struct rte_eth_dev *dev); int nfp_net_link_update_common(struct rte_eth_dev *dev, struct nfp_net_hw *hw, struct rte_eth_link *link, -- 2.39.1