[dpdk-dev] [PATCH v4 05/10] examples/l2fwd-event: add eventdev queue and port setup

Nipun Gupta nipun.gupta at nxp.com
Fri Sep 27 15:22:12 CEST 2019



> -----Original Message-----
> From: dev <dev-bounces at dpdk.org> On Behalf Of
> pbhagavatula at marvell.com
> Sent: Tuesday, September 24, 2019 3:12 PM
> To: jerinj at marvell.com; bruce.richardson at intel.com; Akhil Goyal
> <akhil.goyal at nxp.com>; Marko Kovacevic <marko.kovacevic at intel.com>;
> Ori Kam <orika at mellanox.com>; Radu Nicolau <radu.nicolau at intel.com>;
> Tomasz Kantecki <tomasz.kantecki at intel.com>; Sunil Kumar Kori
> <skori at marvell.com>; Pavan Nikhilesh <pbhagavatula at marvell.com>
> Cc: dev at dpdk.org
> Subject: [dpdk-dev] [PATCH v4 05/10] examples/l2fwd-event: add eventdev
> queue and port setup
> 
> From: Pavan Nikhilesh <pbhagavatula at marvell.com>
> 
> Add event device queue and port setup based on event eth Tx adapter
> capabilities.
> 
> Signed-off-by: Sunil Kumar Kori <skori at marvell.com>
> Signed-off-by: Pavan Nikhilesh <pbhagavatula at marvell.com>
> ---
>  examples/l2fwd-event/l2fwd_eventdev.c         |  10 +
>  examples/l2fwd-event/l2fwd_eventdev.h         |  18 ++
>  examples/l2fwd-event/l2fwd_eventdev_generic.c | 179
> +++++++++++++++++-
>  .../l2fwd_eventdev_internal_port.c            | 173 ++++++++++++++++-
>  4 files changed, 378 insertions(+), 2 deletions(-)
> 

<snip>

> diff --git a/examples/l2fwd-event/l2fwd_eventdev_generic.c
> b/examples/l2fwd-event/l2fwd_eventdev_generic.c
> index e3990f8b0..65166fded 100644
> --- a/examples/l2fwd-event/l2fwd_eventdev_generic.c
> +++ b/examples/l2fwd-event/l2fwd_eventdev_generic.c
> @@ -17,8 +17,185 @@
>  #include "l2fwd_common.h"
>  #include "l2fwd_eventdev.h"
> 
> +static uint32_t
> +eventdev_setup_generic(uint16_t ethdev_count)
> +{
> +	struct eventdev_resources *eventdev_rsrc = get_eventdev_rsrc();
> +	struct rte_event_dev_config event_d_conf = {
> +		.nb_events_limit  = 4096,
> +		.nb_event_queue_flows = 1024,
> +		.nb_event_port_dequeue_depth = 128,
> +		.nb_event_port_enqueue_depth = 128
> +	};
> +	struct rte_event_dev_info dev_info;
> +	const uint8_t event_d_id = 0; /* Always use first event device only */
> +	uint32_t event_queue_cfg = 0;
> +	uint16_t num_workers = 0;
> +	int ret;
> +
> +	/* Event device configurtion */
> +	rte_event_dev_info_get(event_d_id, &dev_info);
> +	eventdev_rsrc->disable_implicit_release
> = !!(dev_info.event_dev_cap &
> +
> RTE_EVENT_DEV_CAP_IMPLICIT_RELEASE_DISABLE);
> +
> +	if (dev_info.event_dev_cap &
> RTE_EVENT_DEV_CAP_QUEUE_ALL_TYPES)
> +		event_queue_cfg |= RTE_EVENT_QUEUE_CFG_ALL_TYPES;
> +
> +	/* One queue for each ethdev port + one Tx adapter Single link
> queue. */
> +	event_d_conf.nb_event_queues = ethdev_count + 1;

It may not be true that max event queues are always more than ethdev_count.
Please use event_d_conf.nb_event_queues as 1, in case ' ethdev_count + 1' is more than
max event queues. This will also require change in 'event_queue_setup_generic' API where
this parameter is being used.

> +	if (dev_info.max_event_queues < event_d_conf.nb_event_queues)
> +		event_d_conf.nb_event_queues =
> dev_info.max_event_queues;
> +




More information about the dev mailing list