examples/l2fwd-event: fix event device config

Message ID 20191220142742.2077-1-pbhagavatula@marvell.com (mailing list archive)
State Accepted, archived
Delegated to: Jerin Jacob
Headers
Series examples/l2fwd-event: fix event device config |

Checks

Context Check Description
ci/checkpatch success coding style OK
ci/iol-testing success Testing PASS
ci/iol-intel-Performance success Performance Testing PASS
ci/iol-mellanox-Performance success Performance Testing PASS
ci/Intel-compilation success Compilation OK

Commit Message

Pavan Nikhilesh Bhagavatula Dec. 20, 2019, 2:27 p.m. UTC
  From: Pavan Nikhilesh <pbhagavatula@marvell.com>

Always enable implicit release since we don't support explicit release
in datapath.
Master lcore is used only for printing stats so don't allocate event
port for it.
Fix service launch for event device without distributed scheduling.

Fixes: bcb6f841d42a ("examples/l2fwd-event: setup service core")
Cc: stable@dpdk.org

Signed-off-by: Pavan Nikhilesh <pbhagavatula@marvell.com>
---
 examples/l2fwd-event/l2fwd_event.c               |  2 +-
 examples/l2fwd-event/l2fwd_event_generic.c       |  9 ++++++---
 examples/l2fwd-event/l2fwd_event_internal_port.c | 11 +++++------
 3 files changed, 12 insertions(+), 10 deletions(-)
  

Comments

Jerin Jacob Jan. 14, 2020, 7:20 p.m. UTC | #1
On Fri, Dec 20, 2019 at 7:57 PM <pbhagavatula@marvell.com> wrote:
>
> From: Pavan Nikhilesh <pbhagavatula@marvell.com>
>
> Always enable implicit release since we don't support explicit release
> in datapath.
> Master lcore is used only for printing stats so don't allocate event
> port for it.
> Fix service launch for event device without distributed scheduling.
>
> Fixes: bcb6f841d42a ("examples/l2fwd-event: setup service core")
> Cc: stable@dpdk.org
>
> Signed-off-by: Pavan Nikhilesh <pbhagavatula@marvell.com>

Applied to dpdk-next-eventdev/master. Thanks.


> ---
>  examples/l2fwd-event/l2fwd_event.c               |  2 +-
>  examples/l2fwd-event/l2fwd_event_generic.c       |  9 ++++++---
>  examples/l2fwd-event/l2fwd_event_internal_port.c | 11 +++++------
>  3 files changed, 12 insertions(+), 10 deletions(-)
>
> diff --git a/examples/l2fwd-event/l2fwd_event.c b/examples/l2fwd-event/l2fwd_event.c
> index 0379c580d..38d590c14 100644
> --- a/examples/l2fwd-event/l2fwd_event.c
> +++ b/examples/l2fwd-event/l2fwd_event.c
> @@ -67,7 +67,7 @@ l2fwd_event_service_setup(struct l2fwd_resources *rsrc)
>         int ret, i;
>
>         rte_event_dev_info_get(evt_rsrc->event_d_id, &evdev_info);
> -       if (evdev_info.event_dev_cap  & RTE_EVENT_DEV_CAP_DISTRIBUTED_SCHED) {
> +       if (!(evdev_info.event_dev_cap & RTE_EVENT_DEV_CAP_DISTRIBUTED_SCHED)) {
>                 ret = rte_event_dev_service_id_get(evt_rsrc->event_d_id,
>                                 &service_id);
>                 if (ret != -ESRCH && ret != 0)
> diff --git a/examples/l2fwd-event/l2fwd_event_generic.c b/examples/l2fwd-event/l2fwd_event_generic.c
> index b7e467c1e..b07306a17 100644
> --- a/examples/l2fwd-event/l2fwd_event_generic.c
> +++ b/examples/l2fwd-event/l2fwd_event_generic.c
> @@ -42,8 +42,10 @@ l2fwd_event_device_setup_generic(struct l2fwd_resources *rsrc)
>
>         /* Event device configurtion */
>         rte_event_dev_info_get(event_d_id, &dev_info);
> -       evt_rsrc->disable_implicit_release = !!(dev_info.event_dev_cap &
> -                                   RTE_EVENT_DEV_CAP_IMPLICIT_RELEASE_DISABLE);
> +
> +       /* Enable implicit release */
> +       if (dev_info.event_dev_cap & RTE_EVENT_DEV_CAP_IMPLICIT_RELEASE_DISABLE)
> +               evt_rsrc->disable_implicit_release = 0;
>
>         if (dev_info.event_dev_cap & RTE_EVENT_DEV_CAP_QUEUE_ALL_TYPES)
>                 event_queue_cfg |= RTE_EVENT_QUEUE_CFG_ALL_TYPES;
> @@ -70,7 +72,8 @@ l2fwd_event_device_setup_generic(struct l2fwd_resources *rsrc)
>                 event_d_conf.nb_event_port_enqueue_depth =
>                                 dev_info.max_event_port_enqueue_depth;
>
> -       num_workers = rte_lcore_count() - rte_service_lcore_count();
> +       /* Ignore Master core and service cores. */
> +       num_workers = rte_lcore_count() - 1 - rte_service_lcore_count();
>         if (dev_info.max_event_ports < num_workers)
>                 num_workers = dev_info.max_event_ports;
>
> diff --git a/examples/l2fwd-event/l2fwd_event_internal_port.c b/examples/l2fwd-event/l2fwd_event_internal_port.c
> index b382763dd..5e6e8598a 100644
> --- a/examples/l2fwd-event/l2fwd_event_internal_port.c
> +++ b/examples/l2fwd-event/l2fwd_event_internal_port.c
> @@ -27,7 +27,6 @@ l2fwd_event_device_setup_internal_port(struct l2fwd_resources *rsrc)
>                 .nb_event_port_enqueue_depth = 128
>         };
>         struct rte_event_dev_info dev_info;
> -       uint8_t disable_implicit_release;
>         const uint8_t event_d_id = 0; /* Always use first event device only */
>         uint32_t event_queue_cfg = 0;
>         uint16_t ethdev_count = 0;
> @@ -44,10 +43,9 @@ l2fwd_event_device_setup_internal_port(struct l2fwd_resources *rsrc)
>         /* Event device configurtion */
>         rte_event_dev_info_get(event_d_id, &dev_info);
>
> -       disable_implicit_release = !!(dev_info.event_dev_cap &
> -                                   RTE_EVENT_DEV_CAP_IMPLICIT_RELEASE_DISABLE);
> -       evt_rsrc->disable_implicit_release =
> -                                               disable_implicit_release;
> +       /* Enable implicit release */
> +       if (dev_info.event_dev_cap & RTE_EVENT_DEV_CAP_IMPLICIT_RELEASE_DISABLE)
> +               evt_rsrc->disable_implicit_release = 0;
>
>         if (dev_info.event_dev_cap & RTE_EVENT_DEV_CAP_QUEUE_ALL_TYPES)
>                 event_queue_cfg |= RTE_EVENT_QUEUE_CFG_ALL_TYPES;
> @@ -73,7 +71,8 @@ l2fwd_event_device_setup_internal_port(struct l2fwd_resources *rsrc)
>                 event_d_conf.nb_event_port_enqueue_depth =
>                                 dev_info.max_event_port_enqueue_depth;
>
> -       num_workers = rte_lcore_count();
> +       /* Ignore Master core. */
> +       num_workers = rte_lcore_count() - 1;
>         if (dev_info.max_event_ports < num_workers)
>                 num_workers = dev_info.max_event_ports;
>
> --
> 2.17.1
>
  

Patch

diff --git a/examples/l2fwd-event/l2fwd_event.c b/examples/l2fwd-event/l2fwd_event.c
index 0379c580d..38d590c14 100644
--- a/examples/l2fwd-event/l2fwd_event.c
+++ b/examples/l2fwd-event/l2fwd_event.c
@@ -67,7 +67,7 @@  l2fwd_event_service_setup(struct l2fwd_resources *rsrc)
 	int ret, i;
 
 	rte_event_dev_info_get(evt_rsrc->event_d_id, &evdev_info);
-	if (evdev_info.event_dev_cap  & RTE_EVENT_DEV_CAP_DISTRIBUTED_SCHED) {
+	if (!(evdev_info.event_dev_cap & RTE_EVENT_DEV_CAP_DISTRIBUTED_SCHED)) {
 		ret = rte_event_dev_service_id_get(evt_rsrc->event_d_id,
 				&service_id);
 		if (ret != -ESRCH && ret != 0)
diff --git a/examples/l2fwd-event/l2fwd_event_generic.c b/examples/l2fwd-event/l2fwd_event_generic.c
index b7e467c1e..b07306a17 100644
--- a/examples/l2fwd-event/l2fwd_event_generic.c
+++ b/examples/l2fwd-event/l2fwd_event_generic.c
@@ -42,8 +42,10 @@  l2fwd_event_device_setup_generic(struct l2fwd_resources *rsrc)
 
 	/* Event device configurtion */
 	rte_event_dev_info_get(event_d_id, &dev_info);
-	evt_rsrc->disable_implicit_release = !!(dev_info.event_dev_cap &
-				    RTE_EVENT_DEV_CAP_IMPLICIT_RELEASE_DISABLE);
+
+	/* Enable implicit release */
+	if (dev_info.event_dev_cap & RTE_EVENT_DEV_CAP_IMPLICIT_RELEASE_DISABLE)
+		evt_rsrc->disable_implicit_release = 0;
 
 	if (dev_info.event_dev_cap & RTE_EVENT_DEV_CAP_QUEUE_ALL_TYPES)
 		event_queue_cfg |= RTE_EVENT_QUEUE_CFG_ALL_TYPES;
@@ -70,7 +72,8 @@  l2fwd_event_device_setup_generic(struct l2fwd_resources *rsrc)
 		event_d_conf.nb_event_port_enqueue_depth =
 				dev_info.max_event_port_enqueue_depth;
 
-	num_workers = rte_lcore_count() - rte_service_lcore_count();
+	/* Ignore Master core and service cores. */
+	num_workers = rte_lcore_count() - 1 - rte_service_lcore_count();
 	if (dev_info.max_event_ports < num_workers)
 		num_workers = dev_info.max_event_ports;
 
diff --git a/examples/l2fwd-event/l2fwd_event_internal_port.c b/examples/l2fwd-event/l2fwd_event_internal_port.c
index b382763dd..5e6e8598a 100644
--- a/examples/l2fwd-event/l2fwd_event_internal_port.c
+++ b/examples/l2fwd-event/l2fwd_event_internal_port.c
@@ -27,7 +27,6 @@  l2fwd_event_device_setup_internal_port(struct l2fwd_resources *rsrc)
 		.nb_event_port_enqueue_depth = 128
 	};
 	struct rte_event_dev_info dev_info;
-	uint8_t disable_implicit_release;
 	const uint8_t event_d_id = 0; /* Always use first event device only */
 	uint32_t event_queue_cfg = 0;
 	uint16_t ethdev_count = 0;
@@ -44,10 +43,9 @@  l2fwd_event_device_setup_internal_port(struct l2fwd_resources *rsrc)
 	/* Event device configurtion */
 	rte_event_dev_info_get(event_d_id, &dev_info);
 
-	disable_implicit_release = !!(dev_info.event_dev_cap &
-				    RTE_EVENT_DEV_CAP_IMPLICIT_RELEASE_DISABLE);
-	evt_rsrc->disable_implicit_release =
-						disable_implicit_release;
+	/* Enable implicit release */
+	if (dev_info.event_dev_cap & RTE_EVENT_DEV_CAP_IMPLICIT_RELEASE_DISABLE)
+		evt_rsrc->disable_implicit_release = 0;
 
 	if (dev_info.event_dev_cap & RTE_EVENT_DEV_CAP_QUEUE_ALL_TYPES)
 		event_queue_cfg |= RTE_EVENT_QUEUE_CFG_ALL_TYPES;
@@ -73,7 +71,8 @@  l2fwd_event_device_setup_internal_port(struct l2fwd_resources *rsrc)
 		event_d_conf.nb_event_port_enqueue_depth =
 				dev_info.max_event_port_enqueue_depth;
 
-	num_workers = rte_lcore_count();
+	/* Ignore Master core. */
+	num_workers = rte_lcore_count() - 1;
 	if (dev_info.max_event_ports < num_workers)
 		num_workers = dev_info.max_event_ports;