From patchwork Fri Aug 9 14:59:05 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Rastislav Cernay X-Patchwork-Id: 57607 X-Patchwork-Delegate: ferruh.yigit@amd.com Return-Path: X-Original-To: patchwork@dpdk.org Delivered-To: patchwork@dpdk.org Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id BC4032082; Fri, 9 Aug 2019 16:59:11 +0200 (CEST) Received: from mail-wr1-f66.google.com (mail-wr1-f66.google.com [209.85.221.66]) by dpdk.org (Postfix) with ESMTP id 16CAA137C for ; Fri, 9 Aug 2019 16:59:10 +0200 (CEST) Received: by mail-wr1-f66.google.com with SMTP id r3so4790711wrt.3 for ; Fri, 09 Aug 2019 07:59:09 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=netcope.com; s=google; h=from:to:cc:subject:date:message-id; bh=atIPQDbbZLiuATLxvgcRckSdyKk5wYjKYJ9DP/+XX/I=; b=fcNbjk3jS0BBIn9owFfF2cIWwMRmXaYMpPYubtetfmRHtfZdZWfmw+h5HFd2NOgk7U llBQeb/P51CXnvpOovIYn5LAnqwcvCgv/oNIjli96rCia1Ys0PqhMPswgcMyOPEVMKKM nldvhT7b2sx5ZUXf8I95/MuMkz50Rs1zqgr0Sd7VUuqPpUaStP+m9rL6Ak4kxUSPDg3F kjoq1GWwRTcSJ+/Q2qHFlIansM16/UgbEKvBUqSim3Y4y9VFli7QUVWelUEndLpAmGVZ z5uktf1G+vkvGPiUJGeMtLWT4/zHYQgLSSlNDJP9CICUXNAb3LF3y/UNjN58XHGPnmFl G3Gg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id; bh=atIPQDbbZLiuATLxvgcRckSdyKk5wYjKYJ9DP/+XX/I=; b=Ossp/9B6zXq3Y3VBC2Z+LW6O13RD4LRcC2Qg3dZhIe6s+Pc5pQh2A8vauAoQ653KiI ioUC3Z/TJdr1ZywcRqvKgEK/azKEVnfzYKXuVF/0he1LZeqG9oI+pDvwlFLlUvzYh5Xq F8Fhn0J3wsnkgNCH5uBBmIsJjPqp1r40ToNcXj0UkINnFlYziVWLhwahwTAbiNebCIBf HLQhLXsgNngcAIsSpT949TVHnZnYCyE9x5FyR2F63Yyq03MM5ydExnqLkYiUw1GeZc98 aB2lTUrVVN2JhTQECxe2DrPdE9AJoqHH/6BE3FhelCT6ApDOqmVH5W+z6Uk9Kt7de6rv HDjQ== X-Gm-Message-State: APjAAAUq/gTryi98g6x8YTXjuowJrE6a+wXFqRjt2gROKObXV6z8wOC2 M02PlvBrfoSXb0v0XP6/IJEoJIVDVrU= X-Google-Smtp-Source: APXvYqysZEgB9G6+xDbpJ8ohtvc8BdfkX0uo4HB9cjfVFPySm3vzeaHCdvXJfFd7zC56lV2wjMQdqg== X-Received: by 2002:adf:fe0b:: with SMTP id n11mr4984605wrr.243.1565362749522; Fri, 09 Aug 2019 07:59:09 -0700 (PDT) Received: from ruprecht.int.netcope.com ([5.180.196.50]) by smtp.gmail.com with ESMTPSA id x20sm5363916wmc.1.2019.08.09.07.59.08 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Fri, 09 Aug 2019 07:59:09 -0700 (PDT) From: Rastislav Cernay X-Google-Original-From: Rastislav Cernay To: dev@dpdk.org Cc: Rastislav Cernay Date: Fri, 9 Aug 2019 16:59:05 +0200 Message-Id: <1565362745-152027-1-git-send-email-cernay@netcope.com> X-Mailer: git-send-email 1.8.3.1 Subject: [dpdk-dev] [PATCH] net/nfb: remove resources when dev is closed X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" From: Rastislav Cernay The rte_eth_dev_close() function now handles freeing resources for devices (e.g., mac_addrs). To conform with the new close() behaviour we are asserting the RTE_ETH_DEV_CLOSE_REMOVE flag so that rte_eth_dev_close() releases all device level dynamic memory. Signed-off-by: Rastislav Cernay Acked-by: Jan Remes Reviewed-by: Xiaolong Ye --- drivers/net/nfb/nfb_ethdev.c | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/drivers/net/nfb/nfb_ethdev.c b/drivers/net/nfb/nfb_ethdev.c index c3119a0..4a19979 100644 --- a/drivers/net/nfb/nfb_ethdev.c +++ b/drivers/net/nfb/nfb_ethdev.c @@ -210,12 +210,17 @@ static void nfb_eth_dev_close(struct rte_eth_dev *dev) { + struct pmd_internals *internals = (struct pmd_internals *) + dev->data->dev_private; uint16_t i; uint16_t nb_rx = dev->data->nb_rx_queues; uint16_t nb_tx = dev->data->nb_tx_queues; nfb_eth_dev_stop(dev); + nfb_nc_rxmac_deinit(internals->rxmac, internals->max_rxmac); + nfb_nc_txmac_deinit(internals->txmac, internals->max_txmac); + for (i = 0; i < nb_rx; i++) { nfb_eth_rx_queue_release(dev->data->rx_queues[i]); dev->data->rx_queues[i] = NULL; @@ -226,6 +231,9 @@ dev->data->tx_queues[i] = NULL; } dev->data->nb_tx_queues = 0; + + rte_free(dev->data->mac_addrs); + dev->data->mac_addrs = NULL; } /** @@ -446,6 +454,9 @@ rte_kvargs_free(kvlist); } + /* Let rte_eth_dev_close() release the port resources */ + dev->data->dev_flags |= RTE_ETH_DEV_CLOSE_REMOVE; + /* * Get number of available DMA RX and TX queues, which is maximum * number of queues that can be created and store it in private device @@ -520,15 +531,10 @@ static int nfb_eth_dev_uninit(struct rte_eth_dev *dev) { - struct rte_eth_dev_data *data = dev->data; - struct pmd_internals *internals = (struct pmd_internals *) - data->dev_private; - struct rte_pci_device *pci_dev = RTE_ETH_DEV_TO_PCI(dev); struct rte_pci_addr *pci_addr = &pci_dev->addr; - nfb_nc_rxmac_deinit(internals->rxmac, internals->max_rxmac); - nfb_nc_txmac_deinit(internals->txmac, internals->max_txmac); + nfb_eth_dev_close(dev); RTE_LOG(INFO, PMD, "NFB device (" PCI_PRI_FMT ") successfully uninitialized\n",