From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from dpdk.org (dpdk.org [92.243.14.124]) by inbox.dpdk.org (Postfix) with ESMTP id 1D9A2A00E6 for ; Sat, 10 Aug 2019 14:52:39 +0200 (CEST) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id E28972A6A; Sat, 10 Aug 2019 14:52:37 +0200 (CEST) Received: from mga09.intel.com (mga09.intel.com [134.134.136.24]) by dpdk.org (Postfix) with ESMTP id 76D26374 for ; Sat, 10 Aug 2019 14:52:35 +0200 (CEST) X-Amp-Result: UNSCANNABLE X-Amp-File-Uploaded: False Received: from orsmga004.jf.intel.com ([10.7.209.38]) by orsmga102.jf.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 10 Aug 2019 05:52:34 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.64,369,1559545200"; d="scan'208";a="326886913" Received: from yexl-server.sh.intel.com (HELO localhost) ([10.67.117.5]) by orsmga004.jf.intel.com with ESMTP; 10 Aug 2019 05:52:33 -0700 Date: Sat, 10 Aug 2019 20:51:53 +0800 From: Ye Xiaolong To: Rastislav Cernay Cc: dev@dpdk.org Message-ID: <20190810125153.GC85810@intel.com> References: <1565362745-152027-1-git-send-email-cernay@netcope.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1565362745-152027-1-git-send-email-cernay@netcope.com> User-Agent: Mutt/1.9.4 (2018-02-28) Subject: Re: [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" On 08/09, Rastislav Cernay wrote: >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 >--- > 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; The device private pointer (dev_private) is of type void *, therefore this cast is unnecessary. > 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", >-- >1.8.3.1 > For the rest, Reviewed-by: Xiaolong Ye