All of lore.kernel.org
 help / color / mirror / Atom feed
From: Jerin Jacob <jerinjacobk@gmail.com>
To: Pavan Nikhilesh <pbhagavatula@marvell.com>
Cc: Jerin Jacob <jerinj@marvell.com>,
	 "Ananyev, Konstantin" <konstantin.ananyev@intel.com>,
	Marko Kovacevic <marko.kovacevic@intel.com>,
	 Ori Kam <orika@mellanox.com>,
	Bruce Richardson <bruce.richardson@intel.com>,
	 Radu Nicolau <radu.nicolau@intel.com>,
	Akhil Goyal <akhil.goyal@nxp.com>,
	 Tomasz Kantecki <tomasz.kantecki@intel.com>,
	Sunil Kumar Kori <skori@marvell.com>, dpdk-dev <dev@dpdk.org>
Subject: Re: [dpdk-dev] [PATCH v3 02/11] examples/l3fwd: split pipelines based on capability
Date: Tue, 21 Jan 2020 14:16:27 +0530	[thread overview]
Message-ID: <CALBAE1PRjgeuV7y5vfCJhJPa3RhNGrqe0PBxNV2Z9Ujuujo4+Q@mail.gmail.com> (raw)
In-Reply-To: <20200111134730.5329-3-pbhagavatula@marvell.com>

On Sat, Jan 11, 2020 at 7:17 PM <pbhagavatula@marvell.com> wrote:
>
> From: Sunil Kumar Kori <skori@marvell.com>
>
> Add infra to split eventdev framework based on event Tx adapter
> capability.
> If event Tx adapter has internal port capability then we use
> `rte_event_eth_tx_adapter_enqueue` to transmitting packets else
> we use a SINGLE_LINK event queue to enqueue packets to a service
> core which is responsible for transmitting packets.
>
> Signed-off-by: Sunil Kumar Kori <skori@marvell.com>

Acked-by: Jerin Jacob <jerinj@marvell.com>


> ---
>  examples/l3fwd/Makefile                    |  1 +
>  examples/l3fwd/l3fwd_event.c               | 31 ++++++++++++++++++++++
>  examples/l3fwd/l3fwd_event.h               | 20 ++++++++++++++
>  examples/l3fwd/l3fwd_event_generic.c       | 14 ++++++++++
>  examples/l3fwd/l3fwd_event_internal_port.c | 14 ++++++++++
>  examples/l3fwd/meson.build                 |  3 ++-
>  6 files changed, 82 insertions(+), 1 deletion(-)
>  create mode 100644 examples/l3fwd/l3fwd_event_generic.c
>  create mode 100644 examples/l3fwd/l3fwd_event_internal_port.c
>
> diff --git a/examples/l3fwd/Makefile b/examples/l3fwd/Makefile
> index c892b867b..59a110d12 100644
> --- a/examples/l3fwd/Makefile
> +++ b/examples/l3fwd/Makefile
> @@ -6,6 +6,7 @@ APP = l3fwd
>
>  # all source are stored in SRCS-y
>  SRCS-y := main.c l3fwd_lpm.c l3fwd_em.c l3fwd_event.c
> +SRCS-y += l3fwd_event_generic.c l3fwd_event_internal_port.c
>
>  # Build using pkg-config variables if possible
>  ifeq ($(shell pkg-config --exists libdpdk && echo 0),0)
> diff --git a/examples/l3fwd/l3fwd_event.c b/examples/l3fwd/l3fwd_event.c
> index 1040da4ea..62218f3ca 100644
> --- a/examples/l3fwd/l3fwd_event.c
> +++ b/examples/l3fwd/l3fwd_event.c
> @@ -30,6 +30,31 @@ l3fwd_get_eventdev_rsrc(void)
>         return NULL;
>  }
>
> +static void
> +l3fwd_event_capability_setup(void)
> +{
> +       struct l3fwd_event_resources *evt_rsrc = l3fwd_get_eventdev_rsrc();
> +       uint32_t caps = 0;
> +       uint16_t i;
> +       int ret;
> +
> +       RTE_ETH_FOREACH_DEV(i) {
> +               ret = rte_event_eth_tx_adapter_caps_get(0, i, &caps);
> +               if (ret)
> +                       rte_exit(EXIT_FAILURE,
> +                                "Invalid capability for Tx adptr port %d\n",
> +                                i);
> +
> +               evt_rsrc->tx_mode_q |= !(caps &
> +                                  RTE_EVENT_ETH_TX_ADAPTER_CAP_INTERNAL_PORT);
> +       }
> +
> +       if (evt_rsrc->tx_mode_q)
> +               l3fwd_event_set_generic_ops(&evt_rsrc->ops);
> +       else
> +               l3fwd_event_set_internal_port_ops(&evt_rsrc->ops);
> +}
> +
>  void
>  l3fwd_event_resource_setup(void)
>  {
> @@ -37,4 +62,10 @@ l3fwd_event_resource_setup(void)
>
>         if (!evt_rsrc->enabled)
>                 return;
> +
> +       if (!rte_event_dev_count())
> +               rte_exit(EXIT_FAILURE, "No Eventdev found");
> +
> +       /* Setup eventdev capability callbacks */
> +       l3fwd_event_capability_setup();
>  }
> diff --git a/examples/l3fwd/l3fwd_event.h b/examples/l3fwd/l3fwd_event.h
> index 4c23c4e1a..d25c8d222 100644
> --- a/examples/l3fwd/l3fwd_event.h
> +++ b/examples/l3fwd/l3fwd_event.h
> @@ -7,17 +7,37 @@
>
>  #include <rte_common.h>
>  #include <rte_eventdev.h>
> +#include <rte_event_eth_tx_adapter.h>
>  #include <rte_spinlock.h>
>
>  #include "l3fwd.h"
>
> +typedef uint32_t (*event_device_setup_cb)(void);
> +typedef void (*event_queue_setup_cb)(uint32_t event_queue_cfg);
> +typedef void (*event_port_setup_cb)(void);
> +typedef void (*adapter_setup_cb)(void);
> +typedef int (*event_loop_cb)(void *);
> +
> +struct l3fwd_event_setup_ops {
> +       event_device_setup_cb event_device_setup;
> +       event_queue_setup_cb event_queue_setup;
> +       event_port_setup_cb event_port_setup;
> +       adapter_setup_cb adapter_setup;
> +       event_loop_cb lpm_event_loop;
> +       event_loop_cb em_event_loop;
> +};
> +
>  struct l3fwd_event_resources {
> +       struct l3fwd_event_setup_ops ops;
>         uint8_t sched_type;
> +       uint8_t tx_mode_q;
>         uint8_t enabled;
>         uint8_t eth_rx_queues;
>  };
>
>  struct l3fwd_event_resources *l3fwd_get_eventdev_rsrc(void);
>  void l3fwd_event_resource_setup(void);
> +void l3fwd_event_set_generic_ops(struct l3fwd_event_setup_ops *ops);
> +void l3fwd_event_set_internal_port_ops(struct l3fwd_event_setup_ops *ops);
>
>  #endif /* __L3FWD_EVENTDEV_H__ */
> diff --git a/examples/l3fwd/l3fwd_event_generic.c b/examples/l3fwd/l3fwd_event_generic.c
> new file mode 100644
> index 000000000..7fff850e5
> --- /dev/null
> +++ b/examples/l3fwd/l3fwd_event_generic.c
> @@ -0,0 +1,14 @@
> +/* SPDX-License-Identifier: BSD-3-Clause
> + * Copyright(C) 2019 Marvell International Ltd.
> + */
> +
> +#include <stdbool.h>
> +
> +#include "l3fwd.h"
> +#include "l3fwd_event.h"
> +
> +void
> +l3fwd_event_set_generic_ops(struct l3fwd_event_setup_ops *ops)
> +{
> +       RTE_SET_USED(ops);
> +}
> diff --git a/examples/l3fwd/l3fwd_event_internal_port.c b/examples/l3fwd/l3fwd_event_internal_port.c
> new file mode 100644
> index 000000000..085e9c825
> --- /dev/null
> +++ b/examples/l3fwd/l3fwd_event_internal_port.c
> @@ -0,0 +1,14 @@
> +/* SPDX-License-Identifier: BSD-3-Clause
> + * Copyright(C) 2019 Marvell International Ltd.
> + */
> +
> +#include <stdbool.h>
> +
> +#include "l3fwd.h"
> +#include "l3fwd_event.h"
> +
> +void
> +l3fwd_event_set_internal_port_ops(struct l3fwd_event_setup_ops *ops)
> +{
> +       RTE_SET_USED(ops);
> +}
> diff --git a/examples/l3fwd/meson.build b/examples/l3fwd/meson.build
> index 864327c7b..ebed3b518 100644
> --- a/examples/l3fwd/meson.build
> +++ b/examples/l3fwd/meson.build
> @@ -8,5 +8,6 @@
>
>  deps += ['hash', 'lpm', 'eventdev']
>  sources = files(
> -       'l3fwd_em.c', 'l3fwd_lpm.c', 'l3fwd_event.c', 'main.c'
> +       'l3fwd_em.c', 'l3fwd_lpm.c', 'l3fwd_event.c',
> +       'l3fwd_event_internal_port.c', 'l3fwd_event_generic.c', 'main.c'
>  )
> --
> 2.17.1
>

  reply	other threads:[~2020-01-21  8:46 UTC|newest]

Thread overview: 78+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-12-04 14:43 [dpdk-dev] [PATCH v2 00/11] example/l3fwd: introduce event device support pbhagavatula
2019-12-04 14:43 ` [dpdk-dev] [PATCH v2 01/11] examples/l3fwd: add framework for event device pbhagavatula
2020-01-03 12:49   ` Ananyev, Konstantin
2020-01-06  4:27     ` Pavan Nikhilesh Bhagavatula
2020-01-06 12:32       ` Ananyev, Konstantin
2020-01-07 16:34         ` Pavan Nikhilesh Bhagavatula
2019-12-04 14:43 ` [dpdk-dev] [PATCH v2 02/11] examples/l3fwd: split pipelines based on capability pbhagavatula
2019-12-04 14:43 ` [dpdk-dev] [PATCH v2 03/11] examples/l3fwd: add event device configuration pbhagavatula
2019-12-04 14:43 ` [dpdk-dev] [PATCH v2 04/11] examples/l3fwd: add ethdev setup based on eventdev pbhagavatula
2019-12-27 13:33   ` Nipun Gupta
2019-12-29 15:42     ` Pavan Nikhilesh Bhagavatula
2019-12-30  7:40       ` Nipun Gupta
2020-01-02  6:21         ` Pavan Nikhilesh Bhagavatula
2020-01-02  8:49           ` Nipun Gupta
2020-01-02  9:33             ` Jerin Jacob
2020-01-03  9:06               ` Nipun Gupta
2020-01-03  9:09                 ` Jerin Jacob
2019-12-04 14:43 ` [dpdk-dev] [PATCH v2 05/11] examples/l3fwd: add event port and queue setup pbhagavatula
2019-12-04 14:43 ` [dpdk-dev] [PATCH v2 06/11] examples/l3fwd: add event eth Rx/Tx adapter setup pbhagavatula
2019-12-04 14:43 ` [dpdk-dev] [PATCH v2 07/11] examples/l3fwd: add service core setup based on caps pbhagavatula
2020-01-03 13:07   ` Ananyev, Konstantin
2020-01-06  4:29     ` Pavan Nikhilesh Bhagavatula
2019-12-04 14:43 ` [dpdk-dev] [PATCH v2 08/11] examples/l3fwd: add event lpm main loop pbhagavatula
2020-01-03 13:16   ` Ananyev, Konstantin
2020-01-06  4:43     ` Pavan Nikhilesh Bhagavatula
2019-12-04 14:43 ` [dpdk-dev] [PATCH v2 09/11] examples/l3fwd: add event em " pbhagavatula
2020-01-03 13:45   ` Ananyev, Konstantin
2020-01-06  4:44     ` Pavan Nikhilesh Bhagavatula
2020-01-06 12:27       ` Ananyev, Konstantin
2019-12-04 14:43 ` [dpdk-dev] [PATCH v2 10/11] examples/l3fwd: add graceful teardown for eventdevice pbhagavatula
2020-01-03 13:52   ` Ananyev, Konstantin
2020-01-06  4:50     ` Pavan Nikhilesh Bhagavatula
2020-01-06 12:12       ` Ananyev, Konstantin
2020-01-07 16:28         ` Pavan Nikhilesh Bhagavatula
2019-12-04 14:43 ` [dpdk-dev] [PATCH v2 11/11] doc: update l3fwd user guide to support eventdev pbhagavatula
2019-12-04 15:16 ` [dpdk-dev] [PATCH v2 00/11] example/l3fwd: introduce event device support Jerin Jacob
2020-01-11 13:47 ` [dpdk-dev] [PATCH v3 " pbhagavatula
2020-01-11 13:47   ` [dpdk-dev] [PATCH v3 01/11] examples/l3fwd: add framework for event device pbhagavatula
2020-01-21  8:44     ` Jerin Jacob
2020-01-11 13:47   ` [dpdk-dev] [PATCH v3 02/11] examples/l3fwd: split pipelines based on capability pbhagavatula
2020-01-21  8:46     ` Jerin Jacob [this message]
2020-01-11 13:47   ` [dpdk-dev] [PATCH v3 03/11] examples/l3fwd: add event device configuration pbhagavatula
2020-01-21  8:51     ` Jerin Jacob
2020-01-11 13:47   ` [dpdk-dev] [PATCH v3 04/11] examples/l3fwd: add ethdev setup based on eventdev pbhagavatula
2020-01-11 13:47   ` [dpdk-dev] [PATCH v3 05/11] examples/l3fwd: add event port and queue setup pbhagavatula
2020-01-11 13:47   ` [dpdk-dev] [PATCH v3 06/11] examples/l3fwd: add event eth Rx/Tx adapter setup pbhagavatula
2020-01-11 13:47   ` [dpdk-dev] [PATCH v3 07/11] examples/l3fwd: add service core setup based on caps pbhagavatula
2020-01-11 13:47   ` [dpdk-dev] [PATCH v3 08/11] examples/l3fwd: add event lpm main loop pbhagavatula
2020-01-11 13:47   ` [dpdk-dev] [PATCH v3 09/11] examples/l3fwd: add event em " pbhagavatula
2020-01-11 13:47   ` [dpdk-dev] [PATCH v3 10/11] examples/l3fwd: add graceful teardown for eventdevice pbhagavatula
2020-01-11 13:47   ` [dpdk-dev] [PATCH v3 11/11] doc: update l3fwd user guide to support eventdev pbhagavatula
2020-01-13 12:02   ` [dpdk-dev] [PATCH v3 00/11] example/l3fwd: introduce event device support Nipun Gupta
2020-01-22 18:28   ` [dpdk-dev] [PATCH v4 " pbhagavatula
2020-01-22 18:28     ` [dpdk-dev] [PATCH v4 01/11] examples/l3fwd: add framework for event device pbhagavatula
2020-01-22 18:28     ` [dpdk-dev] [PATCH v4 02/11] examples/l3fwd: split pipelines based on capability pbhagavatula
2020-01-22 18:28     ` [dpdk-dev] [PATCH v4 03/11] examples/l3fwd: add event device configuration pbhagavatula
2020-01-22 18:28     ` [dpdk-dev] [PATCH v4 04/11] examples/l3fwd: add ethdev setup based on eventdev pbhagavatula
2020-01-22 18:28     ` [dpdk-dev] [PATCH v4 05/11] examples/l3fwd: add event port and queue setup pbhagavatula
2020-01-22 18:28     ` [dpdk-dev] [PATCH v4 06/11] examples/l3fwd: add event eth Rx/Tx adapter setup pbhagavatula
2020-01-22 18:28     ` [dpdk-dev] [PATCH v4 07/11] examples/l3fwd: add service core setup based on caps pbhagavatula
2020-01-22 18:28     ` [dpdk-dev] [PATCH v4 08/11] examples/l3fwd: add event lpm main loop pbhagavatula
2020-01-22 18:28     ` [dpdk-dev] [PATCH v4 09/11] examples/l3fwd: add event em " pbhagavatula
2020-01-22 18:28     ` [dpdk-dev] [PATCH v4 10/11] examples/l3fwd: add graceful teardown for eventdevice pbhagavatula
2020-01-22 18:28     ` [dpdk-dev] [PATCH v4 11/11] doc: update l3fwd user guide to support eventdev pbhagavatula
2020-01-23  5:25       ` Jerin Jacob
2020-01-24  4:05     ` [dpdk-dev] [PATCH v5 00/11] example/l3fwd: introduce event device support pbhagavatula
2020-01-24  4:05       ` [dpdk-dev] [PATCH v5 01/11] examples/l3fwd: add framework for event device pbhagavatula
2020-01-24  4:05       ` [dpdk-dev] [PATCH v5 02/11] examples/l3fwd: split pipelines based on capability pbhagavatula
2020-01-24  4:05       ` [dpdk-dev] [PATCH v5 03/11] examples/l3fwd: add event device configuration pbhagavatula
2020-01-24  4:05       ` [dpdk-dev] [PATCH v5 04/11] examples/l3fwd: add ethdev setup based on eventdev pbhagavatula
2020-01-24  4:05       ` [dpdk-dev] [PATCH v5 05/11] examples/l3fwd: add event port and queue setup pbhagavatula
2020-01-24  4:05       ` [dpdk-dev] [PATCH v5 06/11] examples/l3fwd: add event eth Rx/Tx adapter setup pbhagavatula
2020-01-24  4:05       ` [dpdk-dev] [PATCH v5 07/11] examples/l3fwd: add service core setup based on caps pbhagavatula
2020-01-24  4:05       ` [dpdk-dev] [PATCH v5 08/11] examples/l3fwd: add event lpm main loop pbhagavatula
2020-01-24  4:05       ` [dpdk-dev] [PATCH v5 09/11] examples/l3fwd: add event em " pbhagavatula
2020-01-24  4:05       ` [dpdk-dev] [PATCH v5 10/11] examples/l3fwd: add graceful teardown for eventdevice pbhagavatula
2020-01-24  4:05       ` [dpdk-dev] [PATCH v5 11/11] doc: update l3fwd user guide to support eventdev pbhagavatula
2020-01-27 16:17       ` [dpdk-dev] [PATCH v5 00/11] example/l3fwd: introduce event device support Jerin Jacob

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=CALBAE1PRjgeuV7y5vfCJhJPa3RhNGrqe0PBxNV2Z9Ujuujo4+Q@mail.gmail.com \
    --to=jerinjacobk@gmail.com \
    --cc=akhil.goyal@nxp.com \
    --cc=bruce.richardson@intel.com \
    --cc=dev@dpdk.org \
    --cc=jerinj@marvell.com \
    --cc=konstantin.ananyev@intel.com \
    --cc=marko.kovacevic@intel.com \
    --cc=orika@mellanox.com \
    --cc=pbhagavatula@marvell.com \
    --cc=radu.nicolau@intel.com \
    --cc=skori@marvell.com \
    --cc=tomasz.kantecki@intel.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.