* [dpdk-dev] [PATCH] examples/l2fwd-event: fix event device config
@ 2019-12-20 14:27 pbhagavatula
2020-01-14 19:20 ` Jerin Jacob
0 siblings, 1 reply; 2+ messages in thread
From: pbhagavatula @ 2019-12-20 14:27 UTC (permalink / raw)
To: jerinj, Marko Kovacevic, Ori Kam, Bruce Richardson, Radu Nicolau,
Akhil Goyal, Tomasz Kantecki, Sunil Kumar Kori, Pavan Nikhilesh
Cc: dev, stable
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(-)
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
^ permalink raw reply [flat|nested] 2+ messages in thread
* Re: [dpdk-dev] [PATCH] examples/l2fwd-event: fix event device config
2019-12-20 14:27 [dpdk-dev] [PATCH] examples/l2fwd-event: fix event device config pbhagavatula
@ 2020-01-14 19:20 ` Jerin Jacob
0 siblings, 0 replies; 2+ messages in thread
From: Jerin Jacob @ 2020-01-14 19:20 UTC (permalink / raw)
To: Pavan Nikhilesh
Cc: Jerin Jacob, Marko Kovacevic, Ori Kam, Bruce Richardson,
Radu Nicolau, Akhil Goyal, Tomasz Kantecki, Sunil Kumar Kori,
dpdk-dev, dpdk stable
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
>
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2020-01-14 19:21 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2019-12-20 14:27 [dpdk-dev] [PATCH] examples/l2fwd-event: fix event device config pbhagavatula
2020-01-14 19:20 ` Jerin Jacob
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).