From patchwork Thu May 5 09:05:22 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Nipun Gupta X-Patchwork-Id: 110684 X-Patchwork-Delegate: thomas@monjalon.net 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 8B4F0A04FF; Thu, 5 May 2022 11:06:12 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id A3A5542853; Thu, 5 May 2022 11:05:34 +0200 (CEST) Received: from inva021.nxp.com (inva021.nxp.com [92.121.34.21]) by mails.dpdk.org (Postfix) with ESMTP id 81FE04281C for ; Thu, 5 May 2022 11:05:28 +0200 (CEST) Received: from inva021.nxp.com (localhost [127.0.0.1]) by inva021.eu-rdc02.nxp.com (Postfix) with ESMTP id 63A312002AB; Thu, 5 May 2022 11:05:28 +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 2D3302002B0; Thu, 5 May 2022 11:05:28 +0200 (CEST) Received: from lsv03274.swis.in-blr01.nxp.com (lsv03274.swis.in-blr01.nxp.com [92.120.147.114]) by aprdc01srsp001v.ap-rdc01.nxp.com (Postfix) with ESMTP id 8DD95180031A; Thu, 5 May 2022 17:05:27 +0800 (+08) From: nipun.gupta@nxp.com To: dev@dpdk.org Cc: thomas@monjalon.net, G.Singh@nxp.com, hemant.agrawal@nxp.com, gakhil@marvell.com, Nipun Gupta Subject: [PATCH v3 6/6] dma/dpaa2: support statistics Date: Thu, 5 May 2022 14:35:22 +0530 Message-Id: <20220505090522.9638-7-nipun.gupta@nxp.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20220505090522.9638-1-nipun.gupta@nxp.com> References: <20220421123054.22442-1-nipun.gupta@nxp.com> <20220505090522.9638-1-nipun.gupta@nxp.com> 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 From: Nipun Gupta This patch support DMA read and reset statistics operations. Signed-off-by: Nipun Gupta --- doc/guides/dmadevs/dpaa2.rst | 1 + drivers/dma/dpaa2/dpaa2_qdma.c | 34 ++++++++++++++++++++++++++++++++++ 2 files changed, 35 insertions(+) diff --git a/doc/guides/dmadevs/dpaa2.rst b/doc/guides/dmadevs/dpaa2.rst index 0fad9fabe0..d2c26231e2 100644 --- a/doc/guides/dmadevs/dpaa2.rst +++ b/doc/guides/dmadevs/dpaa2.rst @@ -21,6 +21,7 @@ The DPAA2 QDMA implements following features in the dmadev API; performing DMA operation. - Supports configuring to optionally get status of the DMA translation on per DMA operation basis. +- Supports statistics. Supported DPAA2 SoCs -------------------- diff --git a/drivers/dma/dpaa2/dpaa2_qdma.c b/drivers/dma/dpaa2/dpaa2_qdma.c index f1f92b5465..a93a60565d 100644 --- a/drivers/dma/dpaa2/dpaa2_qdma.c +++ b/drivers/dma/dpaa2/dpaa2_qdma.c @@ -1427,6 +1427,38 @@ dpaa2_qdma_close(__rte_unused struct rte_dma_dev *dev) return 0; } +static int +dpaa2_qdma_stats_get(const struct rte_dma_dev *dmadev, uint16_t vchan, + struct rte_dma_stats *rte_stats, uint32_t size) +{ + struct dpaa2_dpdmai_dev *dpdmai_dev = dmadev->data->dev_private; + struct qdma_device *qdma_dev = dpdmai_dev->qdma_dev; + struct qdma_virt_queue *qdma_vq = &qdma_dev->vqs[vchan]; + struct rte_dma_stats *stats = &qdma_vq->stats; + + RTE_SET_USED(size); + + /* TODO - directly use stats */ + stats->submitted = qdma_vq->num_enqueues; + stats->completed = qdma_vq->num_dequeues; + *rte_stats = *stats; + + return 0; +} + +static int +dpaa2_qdma_stats_reset(struct rte_dma_dev *dmadev, uint16_t vchan) +{ + struct dpaa2_dpdmai_dev *dpdmai_dev = dmadev->data->dev_private; + struct qdma_device *qdma_dev = dpdmai_dev->qdma_dev; + struct qdma_virt_queue *qdma_vq = &qdma_dev->vqs[vchan]; + + qdma_vq->num_enqueues = 0; + qdma_vq->num_dequeues = 0; + + return 0; +} + static uint16_t dpaa2_qdma_burst_capacity(const void *dev_private, uint16_t vchan) { @@ -1444,6 +1476,8 @@ static struct rte_dma_dev_ops dpaa2_qdma_ops = { .dev_stop = dpaa2_qdma_stop, .dev_close = dpaa2_qdma_close, .vchan_setup = dpaa2_qdma_vchan_setup, + .stats_get = dpaa2_qdma_stats_get, + .stats_reset = dpaa2_qdma_stats_reset, }; static int