[dpdk-dev] [PATCH v2 5/5] event/sw: change worker rings to standard event rings

Van Haaren, Harry harry.van.haaren at intel.com
Mon Jul 3 14:28:32 CEST 2017


> From: dev [mailto:dev-bounces at dpdk.org] On Behalf Of Bruce Richardson
> Sent: Friday, June 30, 2017 4:06 PM
> To: dev at dpdk.org
> Cc: olivier.matz at 6wind.com; jerin.jacob at caviumnetworks.com; Richardson, Bruce
> <bruce.richardson at intel.com>
> Subject: [dpdk-dev] [PATCH v2 5/5] event/sw: change worker rings to standard event rings
> 
> Now that we have a standard event ring implementation for passing events
> core-to-core, use that in place of the custom event rings in the software
> eventdev.
> 
> Signed-off-by: Bruce Richardson <bruce.richardson at intel.com>

Agree with 99% of this patch, but due to the implementation (with memzone lookup),
we need to change one part of the sw_port_setup() function.

The change is required to allow port_setup() to be called multiple times on the same
port, which is required to re-configure a port that has already been configured once.

I can send a separate fix, or I could re-spin Bruce's 5 patches, and include the fix.

Given this is a small, non-datapath modification to the SW PMD, my preference is to
ack this patch once I've posted a separate patch fix for the SW PMD.

@Jerin, any preference?


> ---
>  drivers/event/sw/sw_evdev.c           | 38 +++++++++++++++++++----------------
>  drivers/event/sw/sw_evdev.h           |  4 ++--
>  drivers/event/sw/sw_evdev_scheduler.c | 19 +++++++++---------
>  drivers/event/sw/sw_evdev_worker.c    | 28 +++++++++++++++++++++-----
>  drivers/event/sw/sw_evdev_xstats.c    | 15 +++++++-------
>  5 files changed, 64 insertions(+), 40 deletions(-)
> 
> diff --git a/drivers/event/sw/sw_evdev.c b/drivers/event/sw/sw_evdev.c
> index fe2a61e2f..31880aa5c 100644
> --- a/drivers/event/sw/sw_evdev.c
> +++ b/drivers/event/sw/sw_evdev.c
> @@ -38,10 +38,10 @@
>  #include <rte_kvargs.h>
>  #include <rte_ring.h>
>  #include <rte_errno.h>
> +#include <rte_event_ring.h>
> 
>  #include "sw_evdev.h"
>  #include "iq_ring.h"
> -#include "event_ring.h"
> 
>  #define EVENTDEV_NAME_SW_PMD event_sw
>  #define NUMA_NODE_ARG "numa_node"
> @@ -140,7 +140,7 @@ sw_port_setup(struct rte_eventdev *dev, uint8_t port_id,
>  {
>  	struct sw_evdev *sw = sw_pmd_priv(dev);
>  	struct sw_port *p = &sw->ports[port_id];
> -	char buf[QE_RING_NAMESIZE];
> +	char buf[RTE_RING_NAMESIZE];
>  	unsigned int i;
> 
>  	struct rte_event_dev_info info;
> @@ -161,10 +161,11 @@ sw_port_setup(struct rte_eventdev *dev, uint8_t port_id,
>  	p->id = port_id;
>  	p->sw = sw;
> 
> -	snprintf(buf, sizeof(buf), "sw%d_%s", dev->data->dev_id,
> -			"rx_worker_ring");
> -	p->rx_worker_ring = qe_ring_create(buf, MAX_SW_PROD_Q_DEPTH,
> -			dev->data->socket_id);
> +	snprintf(buf, sizeof(buf), "sw%d_p%u_%s", dev->data->dev_id,
> +			port_id, "rx_worker_ring");
> +	p->rx_worker_ring = rte_event_ring_create(buf, MAX_SW_PROD_Q_DEPTH,
> +			dev->data->socket_id,
> +			RING_F_SP_ENQ | RING_F_SC_DEQ | RING_F_EXACT_SZ);



More information about the dev mailing list