DPDK patches and discussions
 help / color / mirror / Atom feed
From: <pbhagavatula@marvell.com>
To: <jerinj@marvell.com>, Amit Prakash Shukla <amitprakashs@marvell.com>
Cc: <dev@dpdk.org>, Pavan Nikhilesh <pbhagavatula@marvell.com>
Subject: [PATCH] eventdev/dma: fix missing response info in forward mode
Date: Mon, 24 Jun 2024 14:52:51 +0530	[thread overview]
Message-ID: <20240624092251.2970-1-pbhagavatula@marvell.com> (raw)

From: Pavan Nikhilesh <pbhagavatula@marvell.com>

When in OP_FWD mode the DMA completion response should
use the `rte_event_dma_adapter_op::event_meta` to inject
the completion event.

Bugzilla ID: 1469
Fixes: 588dcac23610 ("eventdev/dma: reorganize event DMA ops")

Signed-off-by: Pavan Nikhilesh <pbhagavatula@marvell.com>
---
 app/test/test_event_dma_adapter.c    | 10 +++++++---
 lib/eventdev/rte_event_dma_adapter.c |  1 +
 lib/eventdev/rte_event_dma_adapter.h | 11 ++++++++++-
 3 files changed, 18 insertions(+), 4 deletions(-)

diff --git a/app/test/test_event_dma_adapter.c b/app/test/test_event_dma_adapter.c
index d9dff4ff7d..3b39521153 100644
--- a/app/test/test_event_dma_adapter.c
+++ b/app/test/test_event_dma_adapter.c
@@ -61,7 +61,8 @@ struct rte_event dma_response_info = {
 	.queue_id = TEST_APP_EV_QUEUE_ID,
 	.sched_type = RTE_SCHED_TYPE_ATOMIC,
 	.flow_id = TEST_APP_EV_FLOWID,
-	.priority = TEST_APP_EV_PRIORITY
+	.priority = TEST_APP_EV_PRIORITY,
+	.op = RTE_EVENT_OP_NEW,
 };
 
 static struct event_dma_adapter_test_params params;
@@ -263,10 +264,12 @@ test_op_forward_mode(void)
 		op->op_mp = params.op_mpool;
 		op->dma_dev_id = TEST_DMA_DEV_ID;
 		op->vchan = TEST_DMA_VCHAN_ID;
+		op->event_meta = dma_response_info.event;
 
 		/* Fill in event info and update event_ptr with rte_event_dma_adapter_op */
 		memset(&ev[i], 0, sizeof(struct rte_event));
 		ev[i].event = 0;
+		ev[i].op = RTE_EVENT_OP_NEW;
 		ev[i].event_type = RTE_EVENT_TYPE_DMADEV;
 		ev[i].queue_id = TEST_DMA_EV_QUEUE_ID;
 		ev[i].sched_type = RTE_SCHED_TYPE_ATOMIC;
@@ -574,10 +577,11 @@ configure_event_dma_adapter(enum rte_event_dma_adapter_mode mode)
 	ret = rte_event_dma_adapter_create(TEST_ADAPTER_ID, evdev, &conf, mode);
 	TEST_ASSERT_SUCCESS(ret, "Failed to create event dma adapter\n");
 
-	if (cap & RTE_EVENT_DMA_ADAPTER_CAP_INTERNAL_PORT_VCHAN_EV_BIND) {
+	event.event = dma_response_info.event;
+	if (cap & RTE_EVENT_DMA_ADAPTER_CAP_INTERNAL_PORT_VCHAN_EV_BIND)
 		ret = rte_event_dma_adapter_vchan_add(TEST_ADAPTER_ID, TEST_DMA_DEV_ID,
 							    TEST_DMA_VCHAN_ID, &event);
-	} else
+	else
 		ret = rte_event_dma_adapter_vchan_add(TEST_ADAPTER_ID, TEST_DMA_DEV_ID,
 							    TEST_DMA_VCHAN_ID, NULL);
 
diff --git a/lib/eventdev/rte_event_dma_adapter.c b/lib/eventdev/rte_event_dma_adapter.c
index e52ef46a1b..ff2bc408c1 100644
--- a/lib/eventdev/rte_event_dma_adapter.c
+++ b/lib/eventdev/rte_event_dma_adapter.c
@@ -666,6 +666,7 @@ edma_ops_enqueue_burst(struct event_dma_adapter *adapter, struct rte_event_dma_a
 			ev->op = RTE_EVENT_OP_FORWARD;
 		else
 			ev->op = RTE_EVENT_OP_NEW;
+		ev->event = ops[i]->event_meta;
 	}
 
 	do {
diff --git a/lib/eventdev/rte_event_dma_adapter.h b/lib/eventdev/rte_event_dma_adapter.h
index 048ddba3f3..768390cd30 100644
--- a/lib/eventdev/rte_event_dma_adapter.h
+++ b/lib/eventdev/rte_event_dma_adapter.h
@@ -179,8 +179,17 @@ struct rte_event_dma_adapter_op {
 	 * The dma device implementation should not modify this area.
 	 */
 	uint64_t event_meta;
-	/**< Event metadata that defines event attributes when used in OP_NEW mode.
+	/**< Event metadata of DMA completion event.
+	 * Used when RTE_EVENT_DMA_ADAPTER_CAP_INTERNAL_PORT_VCHAN_EV_BIND is not
+	 * supported in OP_NEW mode.
 	 * @see rte_event_dma_adapter_mode::RTE_EVENT_DMA_ADAPTER_OP_NEW
+	 * @see RTE_EVENT_DMA_ADAPTER_CAP_INTERNAL_PORT_VCHAN_EV_BIND
+	 *
+	 * Used when RTE_EVENT_DMA_ADAPTER_CAP_INTERNAL_PORT_OP_FWD is not
+	 * supported in OP_FWD mode.
+	 * @see rte_event_dma_adapter_mode::RTE_EVENT_DMA_ADAPTER_OP_FORWARD
+	 * @see RTE_EVENT_DMA_ADAPTER_CAP_INTERNAL_PORT_OP_FWD
+	 *
 	 * @see struct rte_event::event
 	 */
 	int16_t dma_dev_id;
-- 
2.25.1


             reply	other threads:[~2024-06-24  9:22 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-06-24  9:22 pbhagavatula [this message]
2024-06-25  8:01 ` Amit Prakash Shukla
2024-06-26  2:17 ` Jiale, SongX
2024-06-26 10:59   ` Jerin Jacob

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20240624092251.2970-1-pbhagavatula@marvell.com \
    --to=pbhagavatula@marvell.com \
    --cc=amitprakashs@marvell.com \
    --cc=dev@dpdk.org \
    --cc=jerinj@marvell.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).