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 D5A5745B90; Mon, 21 Oct 2024 08:34:11 +0200 (CEST) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 42B4340657; Mon, 21 Oct 2024 08:33:37 +0200 (CEST) Received: from NAM02-SN1-obe.outbound.protection.outlook.com (mail-sn1nam02on2107.outbound.protection.outlook.com [40.107.96.107]) by mails.dpdk.org (Postfix) with ESMTP id AA642402F1 for ; Mon, 21 Oct 2024 08:33:34 +0200 (CEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=PUz92a5p1mJZvqThVwl+vvYHT4qfbERrwnV0L9aCRTx1DvYsQ39HegROg+j1fBVt7ZuPFegL1ZZY6cKnU9j2QRKpUtJ0jjE1Gz2Ml2QIDGGTljShhxf0iAn+clrOVhEp2U+DWoqCyejWkhEaUiwMRW8DNfZ+EetB97Gx0aT7pGvhEH6P5cxTTFjQ1Z5TZfoRdzQy1TnjeMwrwqLMmffaL/orfwFO5Ae9qfzHLxEHMIxPV7MJAVz/ha+liNFgpYCcDcQTBhGCOU7IS+brM4bUnOagqAbbCLkemV3PTyE7Jtd/Cfd3ZzevhyVq+p/w/V+r8NpFAgXECHxUN7kv6cp1Kw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; 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=Yp+LNi2CdDcPQ7P5VUywOZEiHn2cqFr8g3d4gi03UrM=; b=s0SI1fjVFUtSoY+PVvG9HlQVB3OwUdqDDDZHG7oHrQICD1T8F/l6QIdj9mDqIveO6kfPYnohPpTKQBa9xQPMtLnJlKWA3FYAGPYHLvf85Mu0VS2RtLcAj1g7HI5jspr0vmJmTdExxOrFLjntl+iNPkWCXC4A0F/UBl883zfNoO2FN896ifG6KvTMwQQjoz3Xr+x44H9B0XLT/ghKvIzAGneivnmw8G8aScN8w19gu4qkzFChQmwhMEnoVIe3nFKl7PtxRWmm3ykvFOwHnzAIvglVeQre8/d+bftTHZzu0NW8My2Jw6G7LwVmh8T89ekZ+0qsrZQcdCW/39S79NzNAw== 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=Yp+LNi2CdDcPQ7P5VUywOZEiHn2cqFr8g3d4gi03UrM=; b=vGSr7pWesiEBACiynVsH6dRsrB9ce2lsg8R5y7/Ohb7fhHNYUDZG/MAH+l4HEZkRrLZmEefnAuQAfvy0a90Zzy15IzoM/qh+GuVoK0VkToUD2gTCR4hwMUTRjt0qWqBVgfNwQjTpwmDpxPAIxT6Q91PRWHHVLYnwwJoS7Yqdbzg= 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 CH3PR13MB7023.namprd13.prod.outlook.com (2603:10b6:610:20a::12) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8069.28; Mon, 21 Oct 2024 06:33:33 +0000 Received: from SJ0PR13MB5545.namprd13.prod.outlook.com ([fe80::b900:5f05:766f:833]) by SJ0PR13MB5545.namprd13.prod.outlook.com ([fe80::b900:5f05:766f:833%5]) with mapi id 15.20.8069.024; Mon, 21 Oct 2024 06:33:33 +0000 From: Chaoyong He To: dev@dpdk.org Cc: oss-drivers@corigine.com, Peng Zhang , Chaoyong He , Long Wu Subject: [PATCH 6/9] net/nfp: initialize the representor port of the multiple PF Date: Mon, 21 Oct 2024 14:32:58 +0800 Message-Id: <20241021063301.4146214-7-chaoyong.he@corigine.com> X-Mailer: git-send-email 2.39.1 In-Reply-To: <20241021063301.4146214-1-chaoyong.he@corigine.com> References: <20241021063301.4146214-1-chaoyong.he@corigine.com> Content-Transfer-Encoding: 8bit Content-Type: text/plain X-ClientProxiedBy: SG2PR03CA0118.apcprd03.prod.outlook.com (2603:1096:4:91::22) To SJ0PR13MB5545.namprd13.prod.outlook.com (2603:10b6:a03:424::5) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: SJ0PR13MB5545:EE_|CH3PR13MB7023:EE_ X-MS-Office365-Filtering-Correlation-Id: 13c80474-8ada-4002-e815-08dcf19a48c0 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; ARA:13230040|366016|1800799024|52116014|376014|38350700014; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?Rb86oNmQkZjY3fBgpbmm/cnxkd688mwHxnbDSOuezljohJ6IvbxS7yMqlNuq?= =?us-ascii?Q?vx029vkCwQekbPRiXmong9nGQDFxCDnXSypvzixXmNwwES6+gWw3CjFN6J98?= =?us-ascii?Q?ShAsAW40w6RdMK2luHCmOcijvPZ88HwaqDcm5zAt5mxKIVj6en4tflLRnKTT?= =?us-ascii?Q?mCzOujsbN7dT64g5nUtChaffSYIwDmT6H63EUKqW6NlrccXPHyj6FDyy0yRf?= =?us-ascii?Q?n2xF6X89r+oIYq0QSJ2+bieSxmc0pewEZNryHbDNns2jmX7A4jnZdLv1z5/s?= =?us-ascii?Q?Zyg3wI0CkdXJmKPNijELEDSh5hWsrE5vAnC1az/SHz1T08IYn9kn+w4dSaPn?= =?us-ascii?Q?mP0kH4nHNDnxB7yI245b7m4Hzo1Rn0nJE56V+xn3XQAX4aQy8yuCf24HCxlP?= =?us-ascii?Q?3LKiUsMy8TFiISeihFOStBKBj3jLwWuyeYsOtju81lR9giw5OBQdt6TOqOlM?= =?us-ascii?Q?1Zbap4OZWJMTkPk+porosL8DKPGRMPmEIamX5zLkYnuP2apK7a5UjoPyf/mi?= =?us-ascii?Q?1stxhxqRDwnhh+Nl0GoTxP1Y5gkw6j7mZCJUnA9t8RsXO7VgqdsHVu8vUViK?= =?us-ascii?Q?gUOmu1HgELR0kk1B2aKm19WzYwvR+tLrS/nRGq7HjkaeQS5aDjoEjNWXB+kr?= =?us-ascii?Q?m8EDu8kwmS9k8ILD8sOwvRcVrPeLgyLNmMk+mSEDFn6dfQPXNoo1sjtanTLD?= =?us-ascii?Q?hcBLwtNBYt8itXrbIZXwnyr89s7kbDXb0IvueKAXwcOz9EhXrTSZfZeYEc9U?= =?us-ascii?Q?66zRaW8LF3YodT2o+NL7MmCaQGaBxZPXxJUukDmlDoeD1fLm3kK1ZpIktcQZ?= =?us-ascii?Q?oC2WcbaHF8QEDNa4FQWm4aA6GAsvG64d8UVI742l3S+Gw2qekVAd0wc1GcKf?= =?us-ascii?Q?2IBHama5363ffo0PHTFGcm948vqomO2CuuyBuG/n3eCZkbEZbm6yOAhRiwSO?= =?us-ascii?Q?hIPvMaCC1igDh26ARz27V8t+wU8CkIOA4bcopiE/FyMc2fqILxAJpLNM1t2L?= =?us-ascii?Q?nHtEoQKOhFYzFw6aRNWRndlran9uQbk+SPatxWQnGWvOztWUpuoJzwsvJGt5?= =?us-ascii?Q?1QJB3NYeQ7i3fJJuF7dvsKCHAfAEBqRHXOtlsvHOhTPapnU4Pj0makqu+QOF?= =?us-ascii?Q?/mSdEqZyxpUi9iiZr2wi2vGFhwC2QWE+OpNZCvyACEGvJkWctRFhvRysGxUF?= =?us-ascii?Q?IRVgWZvIU3k3c0g1wKhlspiRXPYAJtlmnbJXLl1sVDcyvSsX4WWJ6cZyHwqK?= =?us-ascii?Q?hlHR/rvr6AJxY2IFHLpKhm5CDX4KrxvwS0pqryi8YvCZxQhZn2jcoBQpFOwJ?= =?us-ascii?Q?knTXCPAf35yknI5Nra2NTVKrRQ98vEKIw5PPf9CA0ZeczG5IDTq7wP9jfgi0?= =?us-ascii?Q?QPzz9NM=3D?= 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:(13230040)(366016)(1800799024)(52116014)(376014)(38350700014); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?YW9uzQ0kVFSBHDaH/+fHsCRdLAQ27rrCG5YMzKGgWYocA7fS+1GoAV+iDLQ5?= =?us-ascii?Q?HSICR//0XLf4HdB9Pwb7LB4mP2kO/kNg+6iuueCChn7UfIjdI/F7nGc3HO7W?= =?us-ascii?Q?ryibdBzxHiGFVe5GSW2ZzPD5uDT0moaNjCqyz6cx7PYFntg47bnX0qw8nU+b?= =?us-ascii?Q?xLQ0W5A6Q8ho8gtCKNmtn5GKreXNQg5kr1bRMF7BsXW5yTaiALKjm6nmK/g/?= =?us-ascii?Q?MwJHoN95uTY5pVPINWzBmVh3nhmJ/AIBvHWylAKfj+octSa3pzS0QoRQFch4?= =?us-ascii?Q?SWp39HbU7joPvA1Eij+oIQrlUOm/m1XVCnqDNBkAjsH6X2A0sFsgNTajWX42?= =?us-ascii?Q?FAHOpbM/iCQpmQBKxFwIZ6IsWeZwGn7tclIM/1r+qr3GBL1LS77amScmHLad?= =?us-ascii?Q?Ic2mmR3lnzILAIjejuABC5C3aMEVBiycaj+yIadrx+L0ZwEDjtBc3fLYd5vn?= =?us-ascii?Q?NJw2M7sp/4z0ii1L8Neb5V7GRaS2FCsCOxVGuvx8z1OrJ96YjlL2z16Q7Djc?= =?us-ascii?Q?2OCrqi+Ec8y/m7WI5XIQn4MNpp/Cg3gXNk+64kV1wxgOvfdyx99e15Ie8Y1Q?= =?us-ascii?Q?MapMGUByM8W0xon9obXGVCURmoBBYIWE86ouQod+eOzqxMlnKKCHdGGI61b/?= =?us-ascii?Q?TKWPH+t3mYzVapChPzxoDqVTr7kGbwjZTsjv1VNBMSvpGcKAoFTM+25X3gPY?= =?us-ascii?Q?3WmmHz+dyhuZJUOaAIVmPYdaGrJwaVaZwvHTEMPDI0ATor992GooPe5QkJo7?= =?us-ascii?Q?/vP4/KWJGYOKcHOIJIY7TaXmrJAJuZD/oPu+Ky+56WySk2rtA4P7pVaGoqqg?= =?us-ascii?Q?q2ILlBqbauc/0OcbGhHFlw5RbJ7WpB0C/WTlpTmq0NB8ZYfPGVSCxxPIqP4Y?= =?us-ascii?Q?fH+20cOU9W+L8Hxyliw8A2K//pEPjhtygc/+OXDMknD5Rb3kz9LXyerEWIvi?= =?us-ascii?Q?OrgyU4u4K6SR0fhEYSbHVRs6Tb9DeCCXHPoDC51nbt5lI4TaZoF64BCsjfsH?= =?us-ascii?Q?WDvzs6PiNP+8cmH7g/zIjkDxl169snGATHJKtwmUTdOEnJTx/H04qiGYnNCn?= =?us-ascii?Q?9S8K5eb/IILD1XdK/Y/htgr+VGfLy18N0nfjA3R/BVDwpdganEqyuyvvIhr3?= =?us-ascii?Q?mP1sMyvrjYagwww6/0vnPWuVgIY/dLAKbdtPmBtBwLWiCobOm7lJLlAfpTwh?= =?us-ascii?Q?KJqEFATI41lOH56xpHHaUjwrFfxurCsMEqAwhhB0w9uDbzHU2+3IEkZF6Qxi?= =?us-ascii?Q?/QrVz4HxDiZC3Mx8hGxmYidqXQXIyXB3j01J1kz0hTZoh+olZi5EjyVE43Im?= =?us-ascii?Q?784Ov/T8XHpZZu4NDNxNMzx5iplHlx1xI3sTWXNg+zifoNcaLSRgO8zQubXq?= =?us-ascii?Q?nUDb3rjGRZtdQx8jbsAq9EZYPuYW4qvzOsFiz0sZqlrBYhlb9oTNF8APlb0K?= =?us-ascii?Q?A5/xtxf2XRER1Jd664xmwgQ7LT/P01T0/4ADq026NdjUOKzGcs2W7KhHx5SH?= =?us-ascii?Q?ocoQYlAHa9Y7PUdHKf91M01SJ6mPLnZrxEFvLYItGCX4XATgaONNazkykovU?= =?us-ascii?Q?wPfCM9J8cMRTvJikL9gTgDgOGYbLLSi1D5b7RArDjZMu4rjzyVuYrOphNadB?= =?us-ascii?Q?6w=3D=3D?= X-OriginatorOrg: corigine.com X-MS-Exchange-CrossTenant-Network-Message-Id: 13c80474-8ada-4002-e815-08dcf19a48c0 X-MS-Exchange-CrossTenant-AuthSource: SJ0PR13MB5545.namprd13.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 21 Oct 2024 06:33:32.9263 (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: klZMIjKy1TzSx6GyBdJadYcV/VkiSVi7hJNhINf1bceBN6B9eqWRmgrysRh1q+H/R6XlRb0a+tszFOvJxHJq2HkzZU3hwH8YZ5esKZS8RRo= X-MS-Exchange-Transport-CrossTenantHeadersStamped: CH3PR13MB7023 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: Peng Zhang When using multiple PF firmware, add the process of initialize the representor port and revise the corresponding logic in the close function. Signed-off-by: Peng Zhang Reviewed-by: Chaoyong He Reviewed-by: Long Wu --- .../net/nfp/flower/nfp_flower_representor.c | 80 ++++++++++++++++--- 1 file changed, 69 insertions(+), 11 deletions(-) diff --git a/drivers/net/nfp/flower/nfp_flower_representor.c b/drivers/net/nfp/flower/nfp_flower_representor.c index f769123174..c096862a0f 100644 --- a/drivers/net/nfp/flower/nfp_flower_representor.c +++ b/drivers/net/nfp/flower/nfp_flower_representor.c @@ -373,9 +373,15 @@ static void nfp_flower_repr_close_queue(struct rte_eth_dev *eth_dev, enum nfp_repr_type repr_type) { + struct nfp_net_hw_priv *hw_priv; + switch (repr_type) { case NFP_REPR_TYPE_PHYS_PORT: - nfp_flower_repr_free_queue(eth_dev); + hw_priv = eth_dev->process_private; + if (hw_priv->pf_dev->multi_pf.enabled) + nfp_flower_pf_repr_close_queue(eth_dev); + else + nfp_flower_repr_free_queue(eth_dev); break; case NFP_REPR_TYPE_PF: nfp_flower_pf_repr_close_queue(eth_dev); @@ -757,6 +763,51 @@ nfp_flower_repr_init(struct rte_eth_dev *eth_dev, return ret; } +static int +nfp_flower_multiple_pf_repr_init(struct rte_eth_dev *eth_dev, + void *init_params) +{ + int ret; + uint16_t index; + struct nfp_repr_init *repr_init; + struct nfp_net_hw_priv *hw_priv; + struct nfp_flower_representor *repr; + struct nfp_app_fw_flower *app_fw_flower; + + /* Cast the input representor data to the correct struct here */ + repr_init = init_params; + app_fw_flower = repr_init->flower_repr->app_fw_flower; + + /* Memory has been allocated in the eth_dev_create() function */ + repr = eth_dev->data->dev_private; + hw_priv = repr_init->hw_priv; + + eth_dev->dev_ops = &nfp_flower_pf_repr_dev_ops; + eth_dev->rx_pkt_burst = nfp_net_recv_pkts; + eth_dev->tx_pkt_burst = nfp_flower_pf_xmit_pkts; + eth_dev->data->dev_flags |= RTE_ETH_DEV_REPRESENTOR | + RTE_ETH_DEV_AUTOFILL_QUEUE_XSTATS; + + ret = nfp_flower_repr_base_init(eth_dev, repr, repr_init); + if (ret < 0) { + PMD_DRV_LOG(ERR, "Flower multiple PF repr base init failed."); + return -ENOMEM; + } + + eth_dev->data->representor_id = repr->vf_id; + + /* Add repr to correct array */ + index = NFP_FLOWER_CMSG_PORT_PHYS_PORT_NUM(repr->port_id); + app_fw_flower->phy_reprs[index] = repr; + + repr->mac_stats = hw_priv->pf_dev->mac_stats_bar + + (repr->nfp_idx * NFP_MAC_STATS_SIZE); + + app_fw_flower->pf_ethdev = eth_dev; + + return 0; +} + static void nfp_flower_repr_free_all(struct nfp_app_fw_flower *app_fw_flower) { @@ -833,6 +884,7 @@ nfp_flower_phy_repr_alloc(struct nfp_net_hw_priv *hw_priv, int ret; uint8_t id; struct nfp_pf_dev *pf_dev; + ethdev_init_t ethdev_init; struct nfp_repr_init repr_init; struct nfp_eth_table_port *eth_port; struct nfp_app_fw_flower *app_fw_flower; @@ -846,21 +898,29 @@ nfp_flower_phy_repr_alloc(struct nfp_net_hw_priv *hw_priv, flower_repr->repr_type = NFP_REPR_TYPE_PHYS_PORT; flower_repr->port_id = nfp_flower_get_phys_port_id(eth_port->index); flower_repr->nfp_idx = eth_port->index; - flower_repr->vf_id = i + 1; /* Copy the real mac of the interface to the representor struct */ rte_ether_addr_copy(ð_port->mac_addr, &flower_repr->mac_addr); - snprintf(flower_repr->name, sizeof(flower_repr->name), - "%s_repr_p%d", pci_name, id); /* * Create a eth_dev for this representor. * This will also allocate private memory for the device. */ repr_init.flower_repr = flower_repr; + if (pf_dev->multi_pf.enabled) { + repr_init.flower_repr->vf_id = i; + snprintf(flower_repr->name, sizeof(flower_repr->name), + "%s_repr_p", pci_name); + ethdev_init = nfp_flower_multiple_pf_repr_init; + } else { + repr_init.flower_repr->vf_id = i + 1; + snprintf(flower_repr->name, sizeof(flower_repr->name), + "%s_repr_p%d", pci_name, id); + ethdev_init = nfp_flower_repr_init; + } ret = rte_eth_dev_create(&pf_dev->pci_dev->device, flower_repr->name, sizeof(struct nfp_flower_representor), - NULL, NULL, nfp_flower_repr_init, &repr_init); + NULL, NULL, ethdev_init, &repr_init); if (ret != 0) { PMD_INIT_LOG(ERR, "Could not create eth_dev for repr."); break; @@ -925,6 +985,8 @@ nfp_flower_pf_repr_alloc(struct nfp_net_hw_priv *hw_priv, struct nfp_pf_dev *pf_dev; pf_dev = hw_priv->pf_dev; + if (pf_dev->multi_pf.enabled) + return 0; /* Create a rte_eth_dev for PF vNIC representor */ flower_repr->repr_type = NFP_REPR_TYPE_PF; @@ -932,12 +994,8 @@ nfp_flower_pf_repr_alloc(struct nfp_net_hw_priv *hw_priv, /* PF vNIC reprs get a random MAC address */ rte_eth_random_addr(flower_repr->mac_addr.addr_bytes); - if (pf_dev->multi_pf.enabled) - snprintf(flower_repr->name, sizeof(flower_repr->name), - "%s_repr_pf%d", pci_name, pf_dev->multi_pf.function_id); - else - snprintf(flower_repr->name, sizeof(flower_repr->name), - "%s_repr_pf", pci_name); + snprintf(flower_repr->name, sizeof(flower_repr->name), + "%s_repr_pf", pci_name); /* Create a eth_dev for this representor */ ret = rte_eth_dev_create(&pf_dev->pci_dev->device, flower_repr->name, -- 2.39.1