All of lore.kernel.org
 help / color / mirror / Atom feed
From: Nipun Gupta <nipun.gupta@nxp.com>
To: <dev@dpdk.org>
Cc: <hemant.agrawal@nxp.com>, <jerin.jacob@caviumnetworks.com>,
	<harry.van.haaren@intel.com>, <bruce.richardson@intel.com>,
	<gage.eads@intel.com>, <shreyansh.jain@nxp.com>,
	Nipun Gupta <nipun.gupta@nxp.com>
Subject: [PATCH 20/21 v5] event/dpaa2: handle timeout using interrupts in dequeue
Date: Fri, 30 Jun 2017 14:24:34 +0530	[thread overview]
Message-ID: <1498812875-6945-21-git-send-email-nipun.gupta@nxp.com> (raw)
In-Reply-To: <1498812875-6945-1-git-send-email-nipun.gupta@nxp.com>

This patch adds support for interrupt handling on the event port.
These interrupts facilitates managing of timeout ticks in the
event dequeue functions.

Signed-off-by: Nipun Gupta <nipun.gupta@nxp.com>
---
 drivers/event/dpaa2/dpaa2_eventdev.c | 37 +++++++++++++++++++++++++++++++++---
 1 file changed, 34 insertions(+), 3 deletions(-)

diff --git a/drivers/event/dpaa2/dpaa2_eventdev.c b/drivers/event/dpaa2/dpaa2_eventdev.c
index a7f8516..80ee65c 100644
--- a/drivers/event/dpaa2/dpaa2_eventdev.c
+++ b/drivers/event/dpaa2/dpaa2_eventdev.c
@@ -162,6 +162,32 @@
 	return dpaa2_eventdev_enqueue_burst(port, ev, 1);
 }
 
+static void dpaa2_eventdev_dequeue_wait(uint64_t timeout_ticks)
+{
+	struct epoll_event epoll_ev;
+	int ret, i = 0;
+
+	qbman_swp_interrupt_clear_status(DPAA2_PER_LCORE_PORTAL,
+					 QBMAN_SWP_INTERRUPT_DQRI);
+
+RETRY:
+	ret = epoll_wait(DPAA2_PER_LCORE_DPIO->epoll_fd,
+			 &epoll_ev, 1, timeout_ticks);
+	if (ret < 1) {
+		/* sometimes due to some spurious interrupts epoll_wait fails
+		 * with errno EINTR. so here we are retrying epoll_wait in such
+		 * case to avoid the problem.
+		 */
+		if (errno == EINTR) {
+			PMD_DRV_LOG(DEBUG, PMD, "epoll_wait fails\n");
+			if (i++ > 10)
+				PMD_DRV_LOG(DEBUG, PMD,
+					    "Dequeue burst Failed\n");
+		goto RETRY;
+		}
+	}
+}
+
 static void dpaa2_eventdev_process_parallel(struct qbman_swp *swp,
 					    const struct qbman_fd *fd,
 					    const struct qbman_result *dq,
@@ -204,7 +230,6 @@ static void dpaa2_eventdev_process_atomic(struct qbman_swp *swp,
 	int num_pkts = 0, ret, i = 0;
 
 	RTE_SET_USED(port);
-	RTE_SET_USED(timeout_ticks);
 
 	if (unlikely(!DPAA2_PER_LCORE_DPIO)) {
 		ret = dpaa2_affine_qbman_swp();
@@ -229,8 +254,14 @@ static void dpaa2_eventdev_process_atomic(struct qbman_swp *swp,
 
 	do {
 		dq = qbman_swp_dqrr_next(swp);
-		if (!dq)
-			return 0;
+		if (!dq) {
+			if (!num_pkts && timeout_ticks) {
+				dpaa2_eventdev_dequeue_wait(timeout_ticks);
+				timeout_ticks = 0;
+				continue;
+			}
+			return num_pkts;
+		}
 
 		fd = qbman_result_DQ_fd(dq);
 
-- 
1.9.1

  parent reply	other threads:[~2017-06-30  8:55 UTC|newest]

Thread overview: 98+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <1495735361-4840-1-git-send-email-nipun.gupta@nxp.com>
2017-06-15  8:58 ` [PATCH 00/20 v2] next-eventdev: NXP DPAA2 eventdev PMD Nipun Gupta
2017-06-15  8:58   ` [PATCH 01/20 v2] event/dpaa2: add basic build infrastructure Nipun Gupta
2017-06-15  8:58   ` [PATCH 02/20 v2] bus/fslmc: generic framework for mc object creation Nipun Gupta
2017-06-15  8:58   ` [PATCH 03/20 v2] bus/fslmc: integrating dpio and dpbp to object framework Nipun Gupta
2017-06-15  8:58   ` [PATCH 04/20 v2] bus/fslmc: adding basic dpcon support Nipun Gupta
2017-06-15  8:58   ` [PATCH 05/20 v2] bus/fslmc: export qbman dqrr funcs for eventdev usages Nipun Gupta
2017-06-15  8:58   ` [PATCH 06/20 v2] event/dpaa2: register dpcon as dpaa2 device for bus scan Nipun Gupta
2017-06-15  8:58   ` [PATCH 07/20 v2] bus/fslmc: adding basic dpci support Nipun Gupta
2017-06-15  8:58   ` [PATCH 08/20 v2] bus/fslmc: register dpci as dpaa2 device for bus scan Nipun Gupta
2017-06-15  8:58   ` [PATCH 09/20 v2] bus/fslmc: adding cpu support in stashing config Nipun Gupta
2017-06-15  8:58   ` [PATCH 10/20 v2] event/dpaa2: add initialization of event device Nipun Gupta
2017-06-15  8:58   ` [PATCH 11/20 v2] bus/fslmc: add support for static dequeue from portal Nipun Gupta
2017-06-15  8:58   ` [PATCH 12/20 v2] event/dpaa2: add configuration functions Nipun Gupta
2017-06-15  8:58   ` [PATCH 13/20 v2] bus/fslmc: support enqueue with multiple enqueue descriptors Nipun Gupta
2017-06-15  8:58   ` [PATCH 14/20 v2] bus/fslmc: add callback per queue to enable Nipun Gupta
2017-06-15  8:58   ` [PATCH 15/20 v2] bus/fslmc: change func argument to const to avoid warning Nipun Gupta
2017-06-15  8:58   ` [PATCH 16/20 v2] event/dpaa2: add enqueue and dequeue functionality Nipun Gupta
2017-06-15  8:58   ` [PATCH 17/20 v2] fslmc/bus: add interrupt enabling routine Nipun Gupta
2017-06-15  8:58   ` [PATCH 18/20 v2] bus/fslmc: enable portal interrupt handling Nipun Gupta
2017-06-15  8:58   ` [PATCH 19/20 v2] event/dpaa2: handle timeout using interrupts in dequeue Nipun Gupta
2017-06-15  8:58   ` [PATCH 20/20 v2] doc: add NXP DPAA2 EVENTDEV details Nipun Gupta
2017-06-28 13:51   ` [PATCH 00/20 v2] next-eventdev: NXP DPAA2 eventdev PMD Nipun Gupta
2017-06-29  6:39     ` Jerin Jacob
2017-06-28 15:15 ` [PATCH 00/21 v3] " Nipun Gupta
2017-06-28 15:15   ` [PATCH 01/21 v3] drivers: add bus dependency for event Nipun Gupta
2017-06-28 15:15   ` [PATCH 02/21 v3] event/dpaa2: add basic build infrastructure Nipun Gupta
2017-06-28 15:15   ` [PATCH 03/21 v3] bus/fslmc: generic framework for mc object creation Nipun Gupta
2017-06-28 15:15   ` [PATCH 04/21 v3] bus/fslmc: integrating dpio and dpbp to object framework Nipun Gupta
2017-06-28 15:15   ` [PATCH 05/21 v3] bus/fslmc: adding basic dpcon support Nipun Gupta
2017-06-28 15:15   ` [PATCH 06/21 v3] bus/fslmc: export qbman dqrr funcs for eventdev usages Nipun Gupta
2017-06-28 15:15   ` [PATCH 07/21 v3] event/dpaa2: register dpcon as dpaa2 device for bus scan Nipun Gupta
2017-06-28 15:15   ` [PATCH 08/21 v3] bus/fslmc: adding basic dpci support Nipun Gupta
2017-06-28 15:15   ` [PATCH 09/21 v3] bus/fslmc: register dpci as dpaa2 device for bus scan Nipun Gupta
2017-06-28 15:15   ` [PATCH 10/21 v3] bus/fslmc: adding cpu support in stashing config Nipun Gupta
2017-06-28 15:15   ` [PATCH 11/21 v3] event/dpaa2: add initialization of event device Nipun Gupta
2017-06-28 15:15   ` [PATCH 12/21 v3] bus/fslmc: add support for static dequeue from portal Nipun Gupta
2017-06-28 15:15   ` [PATCH 13/21 v3] event/dpaa2: add configuration functions Nipun Gupta
2017-06-28 15:15   ` [PATCH 14/21 v3] bus/fslmc: support enqueue with multiple enqueue descriptors Nipun Gupta
2017-06-28 15:15   ` [PATCH 15/21 v3] bus/fslmc: add callback per queue to enable Nipun Gupta
2017-06-28 15:15   ` [PATCH 16/21 v3] bus/fslmc: change func argument to const to avoid warning Nipun Gupta
2017-06-28 15:16   ` [PATCH 17/21 v3] event/dpaa2: add enqueue and dequeue functionality Nipun Gupta
2017-06-28 15:16   ` [PATCH 18/21 v3] fslmc/bus: add interrupt enabling routine Nipun Gupta
2017-06-28 15:16   ` [PATCH 19/21 v3] bus/fslmc: enable portal interrupt handling Nipun Gupta
2017-06-28 15:16   ` [PATCH 20/21 v3] event/dpaa2: handle timeout using interrupts in dequeue Nipun Gupta
2017-06-28 15:16   ` [PATCH 21/21 v3] doc: add NXP DPAA2 EVENTDEV details Nipun Gupta
2017-06-29  9:25     ` Jerin Jacob
2017-06-29 10:27       ` Nipun Gupta
2017-06-29  5:15   ` [PATCH 00/21 v3] next-eventdev: NXP DPAA2 eventdev PMD Hemant Agrawal
2017-06-29 10:27 ` [PATCH 00/21 v4] " Nipun Gupta
2017-06-29 10:27   ` [PATCH 01/21 v4] drivers: add bus dependency for event Nipun Gupta
2017-06-29 10:27   ` [PATCH 02/21 v4] event/dpaa2: add basic build infrastructure Nipun Gupta
2017-06-29 10:27   ` [PATCH 03/21 v4] bus/fslmc: generic framework for mc object creation Nipun Gupta
2017-06-29 10:27   ` [PATCH 04/21 v4] bus/fslmc: integrating dpio and dpbp to object framework Nipun Gupta
2017-06-29 10:27   ` [PATCH 05/21 v4] bus/fslmc: adding basic dpcon support Nipun Gupta
2017-06-29 10:27   ` [PATCH 06/21 v4] bus/fslmc: export qbman dqrr funcs for eventdev usages Nipun Gupta
2017-06-29 10:27   ` [PATCH 07/21 v4] event/dpaa2: register dpcon as dpaa2 device for bus scan Nipun Gupta
2017-06-29 10:27   ` [PATCH 08/21 v4] bus/fslmc: adding basic dpci support Nipun Gupta
2017-06-29 10:27   ` [PATCH 09/21 v4] bus/fslmc: register dpci as dpaa2 device for bus scan Nipun Gupta
2017-06-29 10:27   ` [PATCH 10/21 v4] bus/fslmc: adding cpu support in stashing config Nipun Gupta
2017-06-29 10:27   ` [PATCH 11/21 v4] event/dpaa2: add initialization of event device Nipun Gupta
2017-06-29 10:27   ` [PATCH 12/21 v4] bus/fslmc: add support for static dequeue from portal Nipun Gupta
2017-06-29 10:27   ` [PATCH 13/21 v4] event/dpaa2: add configuration functions Nipun Gupta
2017-06-29 10:27   ` [PATCH 14/21 v4] bus/fslmc: support enqueue with multiple enqueue descriptors Nipun Gupta
2017-06-29 10:27   ` [PATCH 15/21 v4] bus/fslmc: add callback per queue to enable Nipun Gupta
2017-06-29 10:28   ` [PATCH 16/21 v4] bus/fslmc: change func argument to const to avoid warning Nipun Gupta
2017-06-29 10:28   ` [PATCH 17/21 v4] event/dpaa2: add enqueue and dequeue functionality Nipun Gupta
2017-06-29 10:28   ` [PATCH 18/21 v4] fslmc/bus: add interrupt enabling routine Nipun Gupta
2017-06-29 10:28   ` [PATCH 19/21 v4] bus/fslmc: enable portal interrupt handling Nipun Gupta
2017-06-29 10:28   ` [PATCH 20/21 v4] event/dpaa2: handle timeout using interrupts in dequeue Nipun Gupta
2017-06-29 10:28   ` [PATCH 21/21 v4] doc: add NXP DPAA2 EVENTDEV details Nipun Gupta
2017-06-29 11:03   ` [PATCH 00/21 v4] next-eventdev: NXP DPAA2 eventdev PMD Jerin Jacob
2017-06-30  7:30     ` Nipun Gupta
2017-06-30  8:54 ` [PATCH 00/21 v5] " Nipun Gupta
2017-06-30  8:54   ` [PATCH 01/21 v5] drivers: add bus dependency for event Nipun Gupta
2017-06-30  8:54   ` [PATCH 02/21 v5] event/dpaa2: add basic build infrastructure Nipun Gupta
2017-06-30  8:54   ` [PATCH 03/21 v5] bus/fslmc: generic framework for mc object creation Nipun Gupta
2017-06-30  8:54   ` [PATCH 04/21 v5] bus/fslmc: integrating dpio and dpbp to object framework Nipun Gupta
2017-06-30  8:54   ` [PATCH 05/21 v5] bus/fslmc: adding basic dpcon support Nipun Gupta
2017-06-30  8:54   ` [PATCH 06/21 v5] bus/fslmc: export qbman dqrr funcs for eventdev usages Nipun Gupta
2017-06-30  8:54   ` [PATCH 07/21 v5] event/dpaa2: register dpcon as dpaa2 device for bus scan Nipun Gupta
2017-06-30  8:54   ` [PATCH 08/21 v5] bus/fslmc: adding basic dpci support Nipun Gupta
2017-06-30  8:54   ` [PATCH 09/21 v5] bus/fslmc: register dpci as dpaa2 device for bus scan Nipun Gupta
2017-06-30  8:54   ` [PATCH 10/21 v5] bus/fslmc: adding cpu support in stashing config Nipun Gupta
2017-06-30  8:54   ` [PATCH 11/21 v5] event/dpaa2: add initialization of event device Nipun Gupta
2017-06-30  8:54   ` [PATCH 12/21 v5] bus/fslmc: add support for static dequeue from portal Nipun Gupta
2017-06-30  8:54   ` [PATCH 13/21 v5] event/dpaa2: add configuration functions Nipun Gupta
2017-06-30  8:54   ` [PATCH 14/21 v5] bus/fslmc: support enqueue with multiple enqueue descriptors Nipun Gupta
2017-06-30  8:54   ` [PATCH 15/21 v5] bus/fslmc: add callback per queue to enable Nipun Gupta
2017-06-30  8:54   ` [PATCH 16/21 v5] bus/fslmc: change func argument to const to avoid warning Nipun Gupta
2017-06-30  8:54   ` [PATCH 17/21 v5] event/dpaa2: add enqueue and dequeue functionality Nipun Gupta
2017-06-30  8:54   ` [PATCH 18/21 v5] bus/fslmc: add interrupt enabling routine Nipun Gupta
2017-06-30  8:54   ` [PATCH 19/21 v5] bus/fslmc: enable portal interrupt handling Nipun Gupta
2017-06-30  8:54   ` Nipun Gupta [this message]
2017-06-30  8:54   ` [PATCH 21/21 v5] doc: add NXP DPAA2 EVENTDEV details Nipun Gupta
2017-06-30 12:13     ` Mcnamara, John
2017-07-01 12:24       ` Jerin Jacob
2017-07-04  6:55     ` Jerin Jacob
2017-07-01 12:28   ` [PATCH 00/21 v5] next-eventdev: NXP DPAA2 eventdev PMD 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=1498812875-6945-21-git-send-email-nipun.gupta@nxp.com \
    --to=nipun.gupta@nxp.com \
    --cc=bruce.richardson@intel.com \
    --cc=dev@dpdk.org \
    --cc=gage.eads@intel.com \
    --cc=harry.van.haaren@intel.com \
    --cc=hemant.agrawal@nxp.com \
    --cc=jerin.jacob@caviumnetworks.com \
    --cc=shreyansh.jain@nxp.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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.