From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by smtp.lore.kernel.org (Postfix) with ESMTP id 3F1A7C43327 for ; Thu, 2 Jul 2026 05:35:17 +0000 (UTC) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 0B2A540B99; Thu, 2 Jul 2026 07:34:20 +0200 (CEST) Received: from inva021.nxp.com (inva021.nxp.com [92.121.34.21]) by mails.dpdk.org (Postfix) with ESMTP id 10F5F40B95 for ; Thu, 2 Jul 2026 07:34:19 +0200 (CEST) Received: from inva021.nxp.com (localhost [127.0.0.1]) by inva021.eu-rdc02.nxp.com (Postfix) with ESMTP id ECBBC200477; Thu, 2 Jul 2026 07:34:18 +0200 (CEST) Received: from aprdc01srsp001v.ap-rdc01.nxp.com (aprdc01srsp001v.ap-rdc01.nxp.com [165.114.16.16]) by inva021.eu-rdc02.nxp.com (Postfix) with ESMTP id B546C200479; Thu, 2 Jul 2026 07:34:18 +0200 (CEST) Received: from lsv03583.swis.in-blr01.nxp.com (lsv03583.swis.in-blr01.nxp.com [92.120.146.12]) by aprdc01srsp001v.ap-rdc01.nxp.com (Postfix) with ESMTP id 5B5D7180004C; Thu, 2 Jul 2026 13:34:17 +0800 (+08) From: Hemant Agrawal To: stephen@networkplumber.org, david.marchand@redhat.com, dev@dpdk.org Subject: [PATCH v6 12/19] net/dpaa: optimize FM deconfig Date: Thu, 2 Jul 2026 11:03:52 +0530 Message-Id: <20260702053359.3243907-13-hemant.agrawal@nxp.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20260702053359.3243907-1-hemant.agrawal@nxp.com> References: <20260626065655.279742-1-hemant.agrawal@nxp.com> <20260702053359.3243907-1-hemant.agrawal@nxp.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Virus-Scanned: ClamAV using ClamSMTP 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 Consolidate FM deconfiguration to avoid duplicate calls. Move the fm_deconfig call to a single location and remove redundant checks in the device close path. Signed-off-by: Hemant Agrawal --- drivers/net/dpaa/dpaa_ethdev.c | 27 +++++++++++++++++++++++---- drivers/net/dpaa/dpaa_flow.c | 9 +++++---- 2 files changed, 28 insertions(+), 8 deletions(-) diff --git a/drivers/net/dpaa/dpaa_ethdev.c b/drivers/net/dpaa/dpaa_ethdev.c index 9beced37a0..20c198406b 100644 --- a/drivers/net/dpaa/dpaa_ethdev.c +++ b/drivers/net/dpaa/dpaa_ethdev.c @@ -528,10 +528,12 @@ static int dpaa_eth_dev_close(struct rte_eth_dev *dev) /* DPAA FM deconfig */ if (!(default_q || fmc_q)) { - ret = dpaa_fm_deconfig(dpaa_intf, dev->process_private); - if (ret) { - DPAA_PMD_WARN("%s: FM deconfig failed(%d)", - dev->data->name, ret); + if (dpaa_intf->port_handle) { + ret = dpaa_fm_deconfig(dpaa_intf, dev->process_private); + if (ret) { + DPAA_PMD_WARN("%s: FM deconfig failed(%d)", + dev->data->name, ret); + } } } @@ -577,6 +579,23 @@ static int dpaa_eth_dev_close(struct rte_eth_dev *dev) rte_free(dpaa_intf->fc_conf); dpaa_intf->fc_conf = NULL; + /** For FMCLESS mode of share MAC, deconfig FM to direct + * ingress traffic to kernel before fq shutdown. + */ + if (!(default_q || fmc_q) && dpaa_intf->port_handle) { + ret = dpaa_fm_deconfig(dpaa_intf, dev->process_private); + if (ret) { + DPAA_PMD_WARN("%s: FM deconfig failed(%d)", + dev->data->name, ret); + } + } + if (fif->num_profiles) { + ret = dpaa_port_vsp_cleanup(dpaa_intf, fif); + if (ret) { + DPAA_PMD_WARN("%s: cleanup VSP failed(%d)", + dev->data->name, ret); + } + } /** Release congestion Groups after releasing FQIDs*/ /* Release RX congestion Groups */ if (dpaa_intf->cgr_rx) { diff --git a/drivers/net/dpaa/dpaa_flow.c b/drivers/net/dpaa/dpaa_flow.c index 417b9b6fbb..559850ced7 100644 --- a/drivers/net/dpaa/dpaa_flow.c +++ b/drivers/net/dpaa/dpaa_flow.c @@ -724,6 +724,9 @@ int dpaa_fm_deconfig(struct dpaa_if *dpaa_intf, PMD_INIT_FUNC_TRACE(); + if (!dpaa_intf->port_handle) + return 0; + /* FM PORT Disable */ ret = fm_port_disable(dpaa_intf->port_handle); if (ret != E_OK) { @@ -783,10 +786,8 @@ int dpaa_fm_config(struct rte_eth_dev *dev, uint64_t req_dist_set) unsigned int i = 0; PMD_INIT_FUNC_TRACE(); - if (dpaa_intf->port_handle) { - if (dpaa_fm_deconfig(dpaa_intf, fif)) - DPAA_PMD_ERR("DPAA FM deconfig failed"); - } + if (dpaa_fm_deconfig(dpaa_intf, fif)) + DPAA_PMD_ERR("DPAA FM deconfig failed"); if (!dev->data->nb_rx_queues) return 0; -- 2.25.1