[dpdk-dev,2/2] event/dpaa2: Remove usage of link under evq_info_t structure

Message ID 20180509092053.5956-2-shreyansh.jain@nxp.com (mailing list archive)
State Accepted, archived
Delegated to: Jerin Jacob
Headers

Checks

Context Check Description
ci/checkpatch success coding style OK
ci/Intel-compilation success Compilation OK

Commit Message

Shreyansh Jain May 9, 2018, 9:20 a.m. UTC
  From: Ashish Jain <ashish.jain@nxp.com>

Removing use of link data under evq_info_t structure which was
used to check whether the the associated evq has been linked
or not. Since, an evq can be linked to multiple event ports,
thus setting the link variable only allowed the first event
port to be associated with the evq. This led to huge performance
drop in case of multiple event ports as I/O only worked on
first event port associated with the evq.

Fixes: 0ce3ce7c275c ("event/dpaa2: add configuration functions")
Cc: nipun.gupta@nxp.com

Signed-off-by: Ashish Jain <ashish.jain@nxp.com>
---
 drivers/event/dpaa2/dpaa2_eventdev.c | 5 -----
 drivers/event/dpaa2/dpaa2_eventdev.h | 1 -
 2 files changed, 6 deletions(-)
  

Comments

Hemant Agrawal May 9, 2018, 10:03 a.m. UTC | #1
On 5/9/2018 2:50 PM, Shreyansh Jain wrote:
> From: Ashish Jain <ashish.jain@nxp.com>
>
> Removing use of link data under evq_info_t structure which was
> used to check whether the the associated evq has been linked
> or not. Since, an evq can be linked to multiple event ports,
> thus setting the link variable only allowed the first event
> port to be associated with the evq. This led to huge performance
> drop in case of multiple event ports as I/O only worked on
> first event port associated with the evq.
>
> Fixes: 0ce3ce7c275c ("event/dpaa2: add configuration functions")
> Cc: nipun.gupta@nxp.com
>
> Signed-off-by: Ashish Jain <ashish.jain@nxp.com>
> ---
Acked-by: Hemant Agrawal <hemant.agrawal@nxp.com>
  
Jerin Jacob May 9, 2018, 10:51 a.m. UTC | #2
-----Original Message-----
> Date: Wed, 9 May 2018 10:03:33 +0000
> From: Hemant Agrawal <hemant.agrawal@nxp.com>
> To: Shreyansh Jain <shreyansh.jain@nxp.com>,
>  "jerin.jacob@caviumnetworks.com" <jerin.jacob@caviumnetworks.com>
> CC: "dev@dpdk.org" <dev@dpdk.org>, Ashish Jain <ashish.jain@nxp.com>, Nipun
>  Gupta <nipun.gupta@nxp.com>
> Subject: RE: [PATCH 2/2] event/dpaa2: Remove usage of link under evq_info_t
>  structure
> 
> 
> On 5/9/2018 2:50 PM, Shreyansh Jain wrote:
> > From: Ashish Jain <ashish.jain@nxp.com>
> >
> > Removing use of link data under evq_info_t structure which was
> > used to check whether the the associated evq has been linked
> > or not. Since, an evq can be linked to multiple event ports,
> > thus setting the link variable only allowed the first event
> > port to be associated with the evq. This led to huge performance
> > drop in case of multiple event ports as I/O only worked on
> > first event port associated with the evq.
> >
> > Fixes: 0ce3ce7c275c ("event/dpaa2: add configuration functions")
> > Cc: nipun.gupta@nxp.com
> >
> > Signed-off-by: Ashish Jain <ashish.jain@nxp.com>
> > ---
> Acked-by: Hemant Agrawal <hemant.agrawal@nxp.com>

CC: stable@dpdk.org

Fixed check-git-log.sh errors and Applied this series to
dpdk-next-eventdev/master. Thanks.
  

Patch

diff --git a/drivers/event/dpaa2/dpaa2_eventdev.c b/drivers/event/dpaa2/dpaa2_eventdev.c
index 08388c7bc..cd801bfb1 100644
--- a/drivers/event/dpaa2/dpaa2_eventdev.c
+++ b/drivers/event/dpaa2/dpaa2_eventdev.c
@@ -460,7 +460,6 @@  dpaa2_eventdev_port_unlink(struct rte_eventdev *dev, void *port,
 		dpio_remove_static_dequeue_channel(dpaa2_portal->dpio_dev->dpio,
 					0, dpaa2_portal->dpio_dev->token,
 			evq_info->dpcon->dpcon_id);
-		evq_info->link = 0;
 	}
 
 	return (int)nb_unlinks;
@@ -481,8 +480,6 @@  dpaa2_eventdev_port_link(struct rte_eventdev *dev, void *port,
 
 	for (i = 0; i < nb_links; i++) {
 		evq_info = &priv->evq_info[queues[i]];
-		if (evq_info->link)
-			continue;
 
 		ret = dpio_add_static_dequeue_channel(
 			dpaa2_portal->dpio_dev->dpio,
@@ -497,7 +494,6 @@  dpaa2_eventdev_port_link(struct rte_eventdev *dev, void *port,
 		qbman_swp_push_set(dpaa2_portal->dpio_dev->sw_portal,
 				   channel_index, 1);
 		evq_info->dpcon->channel_index = channel_index;
-		evq_info->link = 1;
 	}
 
 	RTE_SET_USED(priorities);
@@ -511,7 +507,6 @@  dpaa2_eventdev_port_link(struct rte_eventdev *dev, void *port,
 		dpio_remove_static_dequeue_channel(dpaa2_portal->dpio_dev->dpio,
 					0, dpaa2_portal->dpio_dev->token,
 			evq_info->dpcon->dpcon_id);
-		evq_info->link = 0;
 	}
 	return ret;
 }
diff --git a/drivers/event/dpaa2/dpaa2_eventdev.h b/drivers/event/dpaa2/dpaa2_eventdev.h
index 91c8f2a35..229f66afb 100644
--- a/drivers/event/dpaa2/dpaa2_eventdev.h
+++ b/drivers/event/dpaa2/dpaa2_eventdev.h
@@ -63,7 +63,6 @@  struct evq_info_t {
 	struct dpaa2_dpci_dev *dpci;
 	/* Configuration provided by the user */
 	uint32_t event_queue_cfg;
-	uint8_t link;
 };
 
 struct dpaa2_eventdev {