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 0730BA051A; Fri, 19 Jun 2020 19:06:18 +0200 (CEST) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 23A4B1BF76; Fri, 19 Jun 2020 19:06:17 +0200 (CEST) Received: from mga03.intel.com (mga03.intel.com [134.134.136.65]) by dpdk.org (Postfix) with ESMTP id AB2471BF74 for ; Fri, 19 Jun 2020 19:06:14 +0200 (CEST) IronPort-SDR: 3BFJ+2j/W1u2WuRzzzcdnoNgGzJ8X8GdICcL60OLpO/UGrA+tb7siigszWTEOUu6jhTu2I8vIZ QYaLZriNPafA== X-IronPort-AV: E=McAfee;i="6000,8403,9657"; a="142942808" X-IronPort-AV: E=Sophos;i="5.75,256,1589266800"; d="scan'208";a="142942808" X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from orsmga007.jf.intel.com ([10.7.209.58]) by orsmga103.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 19 Jun 2020 10:06:13 -0700 IronPort-SDR: ajNodgZ/i3JpbjpMiR/+SZrdDYCLeh/2rIx2CVC+JeXPXXJ5BU5W7GFdy2WHh1t2PVr5aiAalv LwYZoI98Wd+A== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.75,256,1589266800"; d="scan'208";a="264531978" Received: from fyigit-mobl.ger.corp.intel.com (HELO [10.213.243.128]) ([10.213.243.128]) by orsmga007.jf.intel.com with ESMTP; 19 Jun 2020 10:06:07 -0700 To: Jeff Guo , Renata Saiakhova , dev@dpdk.org References: <20200513131425.27817-1-Renata.Saiakhova@ekinops.com> <20200513131425.27817-2-Renata.Saiakhova@ekinops.com> <5aa2d634-f896-3204-f557-38f7bacfe513@intel.com> From: Ferruh Yigit Autocrypt: addr=ferruh.yigit@intel.com; prefer-encrypt=mutual; keydata= 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 dYuOYKR9nbPv+2zK9pwwQ2NXbUBystaGyQ== Message-ID: <4767a7e4-80d6-1c23-8bba-3a0bce2266fd@intel.com> Date: Fri, 19 Jun 2020 18:06:06 +0100 MIME-Version: 1.0 In-Reply-To: <5aa2d634-f896-3204-f557-38f7bacfe513@intel.com> Content-Type: text/plain; charset=utf-8 Content-Language: en-US Content-Transfer-Encoding: 8bit Subject: Re: [dpdk-dev] [PATCH v3 1/4] librte_ethdev: Introduce a function to release HW rings 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 5/15/2020 9:04 AM, Jeff Guo wrote: > hi, renata > > On 5/13/2020 9:14 PM, Renata Saiakhova wrote: >> Free previously allocated memzone for HW rings >> >> Signed-off-by: Renata Saiakhova >> --- >> lib/librte_ethdev/rte_ethdev.c | 28 ++++++++++++++++++++++-- >> lib/librte_ethdev/rte_ethdev_driver.h | 20 +++++++++++++++++ >> lib/librte_ethdev/rte_ethdev_version.map | 1 + >> 3 files changed, 47 insertions(+), 2 deletions(-) >> >> diff --git a/lib/librte_ethdev/rte_ethdev.c b/lib/librte_ethdev/rte_ethdev.c >> index 72aed59a5..55f047e22 100644 >> --- a/lib/librte_ethdev/rte_ethdev.c >> +++ b/lib/librte_ethdev/rte_ethdev.c >> @@ -4181,6 +4181,10 @@ rte_eth_dev_rx_intr_ctl_q_get_fd(uint16_t port_id, uint16_t queue_id) >> return fd; >> } >> >> +#define ETH_DMA_MZONE_NAME(_name, _port_id, _queue_id, _ring_name) \ >> + snprintf(_name, sizeof(_name), "eth_p%d_q%d_%s", \ >> + _port_id, _queue_id, _ring_name) >> + >> const struct rte_memzone * >> rte_eth_dma_zone_reserve(const struct rte_eth_dev *dev, const char *ring_name, >> uint16_t queue_id, size_t size, unsigned align, >> @@ -4190,8 +4194,7 @@ rte_eth_dma_zone_reserve(const struct rte_eth_dev *dev, const char *ring_name, >> const struct rte_memzone *mz; >> int rc; >> >> - rc = snprintf(z_name, sizeof(z_name), "eth_p%d_q%d_%s", >> - dev->data->port_id, queue_id, ring_name); >> + rc = ETH_DMA_MZONE_NAME(z_name, dev->data->port_id, queue_id, ring_name); >> if (rc >= RTE_MEMZONE_NAMESIZE) { >> RTE_ETHDEV_LOG(ERR, "ring name too long\n"); >> rte_errno = ENAMETOOLONG; >> @@ -4206,6 +4209,27 @@ rte_eth_dma_zone_reserve(const struct rte_eth_dev *dev, const char *ring_name, >> RTE_MEMZONE_IOVA_CONTIG, align); >> } >> >> +int >> +rte_eth_dma_zone_free(const struct rte_eth_dev *dev, const char *ring_name, >> + uint16_t queue_id) >> +{ >> + char z_name[RTE_MEMZONE_NAMESIZE]; >> + const struct rte_memzone *mz; >> + int rc = 0; >> + >> + rc = ETH_DMA_MZONE_NAME(z_name, dev->data->port_id, queue_id, ring_name); >> + if (rc >= RTE_MEMZONE_NAMESIZE) { >> + RTE_ETHDEV_LOG(ERR, "ring name too long\n"); >> + return -ENAMETOOLONG; >> + } >> + >> + mz = rte_memzone_lookup(z_name); >> + if (mz) >> + rc = rte_memzone_free(mz); >> + >> + return rc; > > > If rc <  RTE_MEMZONE_NAMESIZE && !mz, what value should be return base > on the parameter description in .h? +1, When 'mz' not found return value will be wrong according API documentation. > > Although it would not affect the other patch set, but could you please > clarify it? > > >> +} >> + >> int >> rte_eth_dev_create(struct rte_device *device, const char *name, >> size_t priv_data_size, >> diff --git a/lib/librte_ethdev/rte_ethdev_driver.h b/lib/librte_ethdev/rte_ethdev_driver.h >> index 99d4cd6cd..462e765d1 100644 >> --- a/lib/librte_ethdev/rte_ethdev_driver.h >> +++ b/lib/librte_ethdev/rte_ethdev_driver.h >> @@ -180,6 +180,26 @@ rte_eth_dma_zone_reserve(const struct rte_eth_dev *eth_dev, const char *name, >> uint16_t queue_id, size_t size, >> unsigned align, int socket_id); >> >> +/** >> + * @warning >> + * @b EXPERIMENTAL: this API may change without prior notice. >> + * >> + * Free previously allocated memzone for HW rings. >> + * >> + * @param eth_dev >> + * The *eth_dev* pointer is the address of the *rte_eth_dev* structure >> + * @param name >> + * The name of the memory zone >> + * @param queue_id >> + * The index of the queue to add to name >> + * @return >> + * Negative errno value on error, 0 on success. >> + */ >> +__rte_experimental >> +int >> +rte_eth_dma_zone_free(const struct rte_eth_dev *dev, const char *ring_name, >> + uint16_t queue_id); >> + >> /** >> * @internal >> * Atomically set the link status for the specific device. >> diff --git a/lib/librte_ethdev/rte_ethdev_version.map b/lib/librte_ethdev/rte_ethdev_version.map >> index 715505604..139a81302 100644 >> --- a/lib/librte_ethdev/rte_ethdev_version.map >> +++ b/lib/librte_ethdev/rte_ethdev_version.map >> @@ -241,4 +241,5 @@ EXPERIMENTAL { >> __rte_ethdev_trace_rx_burst; >> __rte_ethdev_trace_tx_burst; >> rte_flow_get_aged_flows; >> + rte_eth_dma_zone_free; >> };