From patchwork Tue Sep 26 10:32:27 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Amit Prakash Shukla X-Patchwork-Id: 131944 X-Patchwork-Delegate: jerinj@marvell.com 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 59CFC42642; Tue, 26 Sep 2023 12:33:39 +0200 (CEST) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 582DE40A76; Tue, 26 Sep 2023 12:33:29 +0200 (CEST) Received: from mx0b-0016f401.pphosted.com (mx0b-0016f401.pphosted.com [67.231.156.173]) by mails.dpdk.org (Postfix) with ESMTP id 8F3914064E for ; Tue, 26 Sep 2023 12:33:27 +0200 (CEST) Received: from pps.filterd (m0045851.ppops.net [127.0.0.1]) by mx0b-0016f401.pphosted.com (8.17.1.19/8.17.1.19) with ESMTP id 38QAIp2u025962; Tue, 26 Sep 2023 03:33:27 -0700 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=marvell.com; h=from : to : cc : subject : date : message-id : in-reply-to : references : mime-version : content-transfer-encoding : content-type; s=pfpt0220; bh=/Yay8SJgJJZ5WBSgl2uGrKrzrndnTGnl4ZhjGmIi+Lo=; b=dV0rV3yLmdej/LrXs+wPgLdPq/DKazC0e0gFGnWlTIHOa1poOd9tjt4rsFTNew3HPTT2 43uNbeYTaewrFJwtmeD5nfC/dT9AInwyVIrPc8l0xI4h5rrClCk7k9YLEy+vahluJxae FYr7M23gGWkTt4X4SN2HRZwn53n+yNSYMufpb5NM6FzhH9YixomK0DuqI71udkYTGNPA drhtpR1p9++WF7friEhW2JksP909R497RHUKt2UjztHic2BMxTc6wxmWaR/t3vK6iohK CTRkI1VDKxftIjrjSHVgWM15tZ+Yy0S6ubN3QBKn+1lLTUCVToI7HcaQhTbAA70XE+sv qg== Received: from dc5-exch01.marvell.com ([199.233.59.181]) by mx0b-0016f401.pphosted.com (PPS) with ESMTPS id 3t9yhm0hap-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-SHA384 bits=256 verify=NOT); Tue, 26 Sep 2023 03:33:26 -0700 Received: from DC5-EXCH01.marvell.com (10.69.176.38) by DC5-EXCH01.marvell.com (10.69.176.38) with Microsoft SMTP Server (TLS) id 15.0.1497.48; Tue, 26 Sep 2023 03:33:24 -0700 Received: from maili.marvell.com (10.69.176.80) by DC5-EXCH01.marvell.com (10.69.176.38) with Microsoft SMTP Server id 15.0.1497.48 via Frontend Transport; Tue, 26 Sep 2023 03:33:24 -0700 Received: from localhost.localdomain (unknown [10.28.36.157]) by maili.marvell.com (Postfix) with ESMTP id F0FDB3F70A6; Tue, 26 Sep 2023 03:33:19 -0700 (PDT) From: Amit Prakash Shukla To: Amit Prakash Shukla , Jerin Jacob CC: , , , , , , , , , , , , Subject: [PATCH v4 06/12] eventdev: add support for DMA adapter start and stop Date: Tue, 26 Sep 2023 16:02:27 +0530 Message-ID: <20230926103233.3956431-7-amitprakashs@marvell.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20230926103233.3956431-1-amitprakashs@marvell.com> References: <20230923133449.3780841-1-amitprakashs@marvell.com> <20230926103233.3956431-1-amitprakashs@marvell.com> MIME-Version: 1.0 X-Proofpoint-GUID: _9nEMJML1TlyYRfHLvdz-xovlQA8uLTO X-Proofpoint-ORIG-GUID: _9nEMJML1TlyYRfHLvdz-xovlQA8uLTO X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.267,Aquarius:18.0.980,Hydra:6.0.619,FMLib:17.11.176.26 definitions=2023-09-26_07,2023-09-25_01,2023-05-22_02 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 Added API support to start and stop DMA adapter. Signed-off-by: Amit Prakash Shukla --- lib/eventdev/rte_event_dma_adapter.c | 69 ++++++++++++++++++++++++++++ 1 file changed, 69 insertions(+) diff --git a/lib/eventdev/rte_event_dma_adapter.c b/lib/eventdev/rte_event_dma_adapter.c index 8349b95796..e5c2be3a2f 100644 --- a/lib/eventdev/rte_event_dma_adapter.c +++ b/lib/eventdev/rte_event_dma_adapter.c @@ -75,6 +75,13 @@ struct dma_device_info { /* Next queue pair to be processed */ uint16_t next_vchan_id; + /* Set to indicate processing has been started */ + uint8_t dev_started; + + /* Set to indicate dmadev->eventdev packet + * transfer uses a hardware mechanism + */ + uint8_t internal_event_port; } __rte_cache_aligned; struct event_dma_adapter { @@ -1126,3 +1133,65 @@ rte_event_dma_adapter_vchan_del(uint8_t id, int16_t dma_dev_id, uint16_t vchan) return ret; } + +static int +edma_adapter_ctrl(uint8_t id, int start) +{ + struct event_dma_adapter *adapter; + struct dma_device_info *dev_info; + struct rte_eventdev *dev; + uint16_t num_dma_dev; + int stop = !start; + int use_service; + uint32_t i; + + use_service = 0; + EVENT_DMA_ADAPTER_ID_VALID_OR_ERR_RET(id, -EINVAL); + adapter = edma_id_to_adapter(id); + if (adapter == NULL) + return -EINVAL; + + num_dma_dev = rte_dma_count_avail(); + dev = &rte_eventdevs[adapter->eventdev_id]; + + for (i = 0; i < num_dma_dev; i++) { + dev_info = &adapter->dma_devs[i]; + /* start check for num queue pairs */ + if (start && !dev_info->num_vchanq) + continue; + /* stop check if dev has been started */ + if (stop && !dev_info->dev_started) + continue; + use_service |= !dev_info->internal_event_port; + dev_info->dev_started = start; + if (dev_info->internal_event_port == 0) + continue; + start ? (*dev->dev_ops->dma_adapter_start)(dev, i) : + (*dev->dev_ops->dma_adapter_stop)(dev, i); + } + + if (use_service) + rte_service_runstate_set(adapter->service_id, start); + + return 0; +} + +int +rte_event_dma_adapter_start(uint8_t id) +{ + struct event_dma_adapter *adapter; + + EVENT_DMA_ADAPTER_ID_VALID_OR_ERR_RET(id, -EINVAL); + + adapter = edma_id_to_adapter(id); + if (adapter == NULL) + return -EINVAL; + + return edma_adapter_ctrl(id, 1); +} + +int +rte_event_dma_adapter_stop(uint8_t id) +{ + return edma_adapter_ctrl(id, 0); +}