From patchwork Tue Mar 19 07:07:54 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Chaoyong He X-Patchwork-Id: 138478 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 9748A43CF6; Tue, 19 Mar 2024 08:08:26 +0100 (CET) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 116004028A; Tue, 19 Mar 2024 08:08:26 +0100 (CET) Received: from NAM02-SN1-obe.outbound.protection.outlook.com (mail-sn1nam02on2130.outbound.protection.outlook.com [40.107.96.130]) by mails.dpdk.org (Postfix) with ESMTP id 5E1394021E; Tue, 19 Mar 2024 08:08:24 +0100 (CET) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=MD38pzLHdMB82C8nUc9f/vHBrr+kgpGsw7BOtsohv5DZN/xJKiBYJb64zxDArjmDCmG3UFxg2B+RJXVPKkdAKSH71NFIA6ZULQs2LrbZw+R5TYDsiuE/n6dYMPOoFZU22Mm4p4d6kgkM31cG40ZF5ux/MmWO1ffyJbJFnzBTK8kb3sE2CX9lYnQIKEAlKvMLlePLidyEr+pDeJhzoqDPvgLQSQLR6IWgHZkBHPg6v0eTLgdAO+OPt9jNh3tX3SzzgyfvyFJ22iFeZHTlHOs3wEsmiTjZl//7RdzaxzoXr4EpTnFM7oWFczMhszrdHvzZQ39psXNm63QEgdV3Yrwytg== 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=7HgwREMKhyQ2LaXrqj4JGhae6B9m56fpUHYPOyry/oc=; b=Bw+CQx3gQXB6+7YLASraHWGVnUvErMap9E+vBTCL8I+ibqML0YCZqVeUB1UzTmVYhuj2f5qq6FbcrxR168TNt+PbSaQ7astwnvaQxhXgF/ejGNH/zdrmQ7EnyXCBy7ThwqkYYnWZokxj5UvdFg/VTAu5ZAzQnf9TJdfr1+ot/b9eRyiOHpcPx+/pql24VLS12gSW+7TBZjDZU/0wRK5OMpyRKgYmhMtuiZEvSLsJ/w9l7FgeHnmp9s5FavHhpEv/Qt31q/+d/ub8cl/E7nyCQqzITFk6CuWYagWqWfReyWzPMhN8DcdZyhuhPbsHUjsBwLzVdtgiH5m+iGUrdw39+A== 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=7HgwREMKhyQ2LaXrqj4JGhae6B9m56fpUHYPOyry/oc=; b=Bc9QA7rXQnSnDqb4DtnuT6aZb0R/ziazCZSmZKEG5RJx7KD/Qs52j+xaM+yMH9WBXWYFryQSlnaXl4Qq5cNli7aBquu/KKsyzqVNVw9gMgCJOV7m3PTUdUBFnj1mxZvtYRVrokx/EnlUiXOA6kgbt1O43zZH2Xx2MxQF0Y+meDs= Received: from SJ0PR13MB5545.namprd13.prod.outlook.com (2603:10b6:a03:424::5) by DS7PR13MB4640.namprd13.prod.outlook.com (2603:10b6:5:38f::16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7386.28; Tue, 19 Mar 2024 07:08:20 +0000 Received: from SJ0PR13MB5545.namprd13.prod.outlook.com ([fe80::ec12:7411:559a:850e]) by SJ0PR13MB5545.namprd13.prod.outlook.com ([fe80::ec12:7411:559a:850e%5]) with mapi id 15.20.7386.025; Tue, 19 Mar 2024 07:08:20 +0000 From: Chaoyong He To: dev@dpdk.org Cc: oss-drivers@corigine.com, Long Wu , chaoyong.he@corigine.com, stable@dpdk.org, Peng Zhang Subject: [PATCH] net/nfp: fix representor port release queue problem Date: Tue, 19 Mar 2024 15:07:54 +0800 Message-Id: <20240319070754.398799-1-chaoyong.he@corigine.com> X-Mailer: git-send-email 2.39.1 X-ClientProxiedBy: SJ2PR07CA0023.namprd07.prod.outlook.com (2603:10b6:a03:505::9) To SJ0PR13MB5545.namprd13.prod.outlook.com (2603:10b6:a03:424::5) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: SJ0PR13MB5545:EE_|DS7PR13MB4640:EE_ X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: 2AO9frcSMlTKyoj02BImJAN7UOklDqgk2RX2AYy7nVAfhFolIJR0CykHHcRh35RZ7dZd0EAN/ZLBRLnuVpzrew5NrKH7AJp5lAYywk2pVeMRG05mtyd8qtAkH41beV4uupDiXLWP8TbmeEFN5Huk+NSvwVo7haLdgoXReAHLwMe1e3Qvkiji/4Uz2Z7xaM1EOS0uN6ftEcpy+PVf9pL9bTdA+u/xwfnnD+a6q6t0r3Osc2GqwnYAfdftCctbYbxnjlIq3Q4WWekBqgmpw2dvFc7VxHh8Dn5HIYVzlZKLaN8Au6SvpeQbQoOjkDLmnvwaJKnMhK9p6jtexVzBPgHQ5lLiNAQY2nTyndKhlkISCXEYxucTo+K4izzNcXLpWCwv9+Kh9chVFAmeayGj12p8MnzLKI+EfaT6uTVxLv6FD5smAMlO/o0+qHLROmCxV8gnUMXN6GTimngLTRPFC6MbVc/ZgXiU9hTeD2Jp7UCGnb8fnZ5MciSGF4wUi1UOv3gib3TcwPD3k7XYkbcKw1U61KQsndC9voPIOsvY+PSmXEqDw8g6Y9YKOcAN6zU0Q/dOkeiA0PutpcxacBL8Yz8XgskKph6YCScEsClXmz5UgsvxHxPGosOvE/UEsazzdRGVUI/SmSHOhoQvJMMI7j1Y2BN6bTGwRlbc5fDex5zawi/n3XyNJSukzQoKrEzqDRCa43JrnvyN7VGIUsMgbyVTPK9jNQpW2uDuUk8ivlrRoMs= 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)(1800799015)(52116005)(366007)(376005)(38350700005); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: wIRx9XwzheuaoLkmiJgUHZiu46B2lSYlL5wWPYx4aFVlsiUb7CclPBDUfO+aQASv3jjmG0fH+40FGS/eTs09RFVGEeN6tYhqdWK5KplcKeC/tR1pddyFCDhIIzcny4w/5PwhIvucNZ2v3UeIg7BAghjU465/CbvmQlUtUiO1G+K3O/0tOX+nEIFjUkFLMrgTUdOHRgoXssyNEBaF5hSsr9uZqC7vBDF7zfXqLzwGOLKeNFVZXy69WqFpziuBetLuE3VewchP7F8bpMOHKks60eBcJp9jbfeXKqcHLtyE6VNn8TsbyPe5ZkI3Z/B9h4ZZrpH51K1Pu5IBihOTGHnnZJFDptVQmMjGukqHpIgz41QHEKbpnlKH9VAA1S87WndbpYxEebK7WdgBmT/KG/mmGEov4XslWXwNe4yEz6gCezNmKo82uvyGOG6cgqXrMmmFVdG4uLzdrzehgm9CMKbp3PKw9RjFz2GuGV8DuQeF/Q5LW7pYVDGz5IruIhj1jj3xRLfNX8CXOWEsZ8V3kXG0HaIW8BU6O+GkP0i00EMoi54KxQ7foGJbXD0d1jeBAx8Zmn9+N7BrAsRPI0XSVmjbxz6s9IiFcvc3blAlz9uBnqs/c/wEdQuM+cHGGEbg825kzmXW6Q4ql6IlA96AfqAaCnkGKzoPvmmYJV6G0tQRRDEZFdCO/IrptgLJgrbBSyi28VujKBGwVbqteEDSLAKKab75nRtHk8uvzUEUitshkCNzUj/bQ/RNtY9lIwMKWhO8i1QlQkSJDVWw5o5jh5lwZtV2+zdphOv19v6Ba6q/3gf7TGcgzBHUHhLgGPtR17marooX2nOd6Y4+y2cCJdM/p+ZNv8CNlneTm4k3W6U3U5NE2x31ME3Iy7CO6gwE5snW/gXGeYcKpWp/QnRhhUwe+VjJEELpO0R6DXu6nXtV8n8xMoq2AAsDz6CHmH61Q8ZfnNiD4tOKary9AgYWIKWchF6E7/yEU7sNKY3ZI6bMq5wiYmHF2zOgGTdFDMc7sgT036nGuYt/pfHScM++C2k+WKFXeZlAuolEczTiu/ana+GLgLXq4c8kjQHXySQWQVptXwxbholzWqb6oI+TioZmp8un+hUL9VsZ+Y7VXwBpIZiMW9AeagRtnbywwOu0qDskf4vOVQzW/qlM3b09zOf9aoI7sxA7NIAB5CEzKnxEETtDBv2EHlEfcWJFbam3BhWy8cZdg46cA3AtqpKm7rgXnE1rkhoAlH38/POjK29yI8+igIx9V1PghZGsbhScboeTJLy0YrVTTbNlM1Iz/ODRvf4YwJzud4TV+cRi0SpGVcpeBU/tgnZq4fxH5wPPRmrqZSLbDKT5xrQ5NmaUx7EGJpr/4XPVmDGYSQ11NFNOMKgU+/6dtlslKm4dQimfbyqtlV1fzj+4/Yy2MczqYFhej66vOv+Q/aymqRcAS/JYlaGDVA1vSGVovg6TCyD8J3qCygGCYZ+Km1gRgL1gdAWrWphjtdLCs7vU+Px1w7AGjPu6PPKhnh+iUENpTiPsZbXjZoMvaxORdmADXt5FAHd3EDoEAhqBnXgkeflV8EhorVwoR0YhqThXEj7ofUrOmKHWW97gR79GeS17dYMmi9+Y0g== X-OriginatorOrg: corigine.com X-MS-Exchange-CrossTenant-Network-Message-Id: 5d60d21c-0705-4656-41ff-08dc47e35898 X-MS-Exchange-CrossTenant-AuthSource: SJ0PR13MB5545.namprd13.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 19 Mar 2024 07:08:20.4187 (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: c+HMp+i++S8dw0/W5s3i8X13N3bPNxJnxkOtV9pdwwtNgoWoJiyybZFpezGfSHPOvWm9uZbtatSCtQuXAk6BS84YSaArMyDKvzB+OkFf1P8= X-MS-Exchange-Transport-CrossTenantHeadersStamped: DS7PR13MB4640 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 The PF representor port's queue is different from the VF/physical representor port. So the release process in close port should be different too. Fixes: 39b3951 ("net/nfp: fix resource leak for exit of flower firmware") Cc: chaoyong.he@corigine.com Cc: stable@dpdk.org Signed-off-by: Long Wu Reviewed-by: Chaoyong He Reviewed-by: Peng Zhang --- .../net/nfp/flower/nfp_flower_representor.c | 69 ++++++++++++++----- 1 file changed, 50 insertions(+), 19 deletions(-) diff --git a/drivers/net/nfp/flower/nfp_flower_representor.c b/drivers/net/nfp/flower/nfp_flower_representor.c index f26bf83edb..c4f33cbb2e 100644 --- a/drivers/net/nfp/flower/nfp_flower_representor.c +++ b/drivers/net/nfp/flower/nfp_flower_representor.c @@ -304,6 +304,54 @@ nfp_flower_repr_tx_burst(void *tx_queue, return sent; } +static void +nfp_flower_repr_free_queue(struct nfp_flower_representor *repr) +{ + uint16_t i; + struct rte_eth_dev *eth_dev = repr->eth_dev; + + for (i = 0; i < eth_dev->data->nb_tx_queues; i++) + rte_free(eth_dev->data->tx_queues[i]); + + for (i = 0; i < eth_dev->data->nb_rx_queues; i++) + rte_free(eth_dev->data->rx_queues[i]); +} + +static void +nfp_flower_pf_repr_close_queue(struct nfp_flower_representor *repr) +{ + struct rte_eth_dev *eth_dev = repr->eth_dev; + + /* + * We assume that the DPDK application is stopping all the + * threads/queues before calling the device close function. + */ + nfp_net_disable_queues(eth_dev); + + /* Clear queues */ + nfp_net_close_tx_queue(eth_dev); + nfp_net_close_rx_queue(eth_dev); +} + +static void +nfp_flower_repr_close_queue(struct nfp_flower_representor *repr) +{ + switch (repr->repr_type) { + case NFP_REPR_TYPE_PHYS_PORT: + nfp_flower_repr_free_queue(repr); + break; + case NFP_REPR_TYPE_PF: + nfp_flower_pf_repr_close_queue(repr); + break; + case NFP_REPR_TYPE_VF: + nfp_flower_repr_free_queue(repr); + break; + default: + PMD_DRV_LOG(ERR, "Unsupported repr port type."); + break; + } +} + static int nfp_flower_repr_uninit(struct rte_eth_dev *eth_dev) { @@ -348,8 +396,6 @@ nfp_flower_repr_dev_close(struct rte_eth_dev *dev) uint16_t i; struct nfp_net_hw *hw; struct nfp_pf_dev *pf_dev; - struct nfp_net_txq *this_tx_q; - struct nfp_net_rxq *this_rx_q; struct nfp_flower_representor *repr; struct nfp_app_fw_flower *app_fw_flower; @@ -361,26 +407,11 @@ nfp_flower_repr_dev_close(struct rte_eth_dev *dev) hw = app_fw_flower->pf_hw; pf_dev = hw->pf_dev; - /* - * We assume that the DPDK application is stopping all the - * threads/queues before calling the device close function. - */ - nfp_net_disable_queues(dev); - - /* Clear queues */ - for (i = 0; i < dev->data->nb_tx_queues; i++) { - this_tx_q = dev->data->tx_queues[i]; - nfp_net_reset_tx_queue(this_tx_q); - } - - for (i = 0; i < dev->data->nb_rx_queues; i++) { - this_rx_q = dev->data->rx_queues[i]; - nfp_net_reset_rx_queue(this_rx_q); - } - if (pf_dev->app_fw_id != NFP_APP_FW_FLOWER_NIC) return -EINVAL; + nfp_flower_repr_close_queue(repr); + nfp_flower_repr_free(repr, repr->repr_type); for (i = 0; i < MAX_FLOWER_VFS; i++) {