From: Jerin Jacob <jerin.jacob@caviumnetworks.com>
To: Nipun Gupta <nipun.gupta@nxp.com>
Cc: dev@dpdk.org, hemant.agrawal@nxp.com, harry.van.haaren@intel.com,
bruce.richardson@intel.com, gage.eads@intel.com,
shreyansh.jain@nxp.com
Subject: Re: [PATCH 10/20] event/dpaa2: add initialization of event device
Date: Wed, 31 May 2017 20:40:03 +0530 [thread overview]
Message-ID: <20170531151003.GB16598@jerin> (raw)
In-Reply-To: <1495735671-4917-11-git-send-email-nipun.gupta@nxp.com>
-----Original Message-----
> Date: Thu, 25 May 2017 23:37:41 +0530
> From: Nipun Gupta <nipun.gupta@nxp.com>
> To: dev@dpdk.org
> CC: hemant.agrawal@nxp.com, jerin.jacob@caviumnetworks.com,
> harry.van.haaren@intel.com, bruce.richardson@intel.com,
> gage.eads@intel.com, shreyansh.jain@nxp.com, Nipun Gupta
> <nipun.gupta@nxp.com>
> Subject: [PATCH 10/20] event/dpaa2: add initialization of event device
> X-Mailer: git-send-email 1.9.1
>
> Signed-off-by: Nipun Gupta <nipun.gupta@nxp.com>
> ---
> drivers/event/dpaa2/dpaa2_eventdev.c | 153 ++++++++++++++++++++++++++++++++++-
> drivers/event/dpaa2/dpaa2_eventdev.h | 22 +++++
> 2 files changed, 171 insertions(+), 4 deletions(-)
>
> diff --git a/drivers/event/dpaa2/dpaa2_eventdev.c b/drivers/event/dpaa2/dpaa2_eventdev.c
> index 191901e..7fa17f2 100644
> --- a/drivers/event/dpaa2/dpaa2_eventdev.c
> +++ b/drivers/event/dpaa2/dpaa2_eventdev.c
> @@ -30,17 +30,164 @@
> * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
> */
>
> +#include <assert.h>
> +#include <stdio.h>
> +#include <stdbool.h>
> +#include <errno.h>
> +#include <stdint.h>
> +#include <string.h>
> +#include <stdint.h>
> +#include <sys/epoll.h>
> +
> +#include <rte_byteorder.h>
> +#include <rte_common.h>
> +#include <rte_debug.h>
> +#include <rte_dev.h>
> #include <rte_eal.h>
> +#include <rte_log.h>
> +#include <rte_memory.h>
> +#include <rte_memzone.h>
> +#include <rte_malloc.h>
> +#include <rte_pci.h>
> +#include <rte_lcore.h>
> #include <rte_vdev.h>
> +#include <rte_fslmc.h>
> +#include <rte_atomic.h>
Maintain alphabetical order in header inclusion.
>
> +#include <fslmc_vfio.h>
> +#include <dpaa2_hw_pvt.h>
> +#include <dpaa2_hw_mempool.h>
> +#include <dpaa2_hw_dpio.h>
> #include "dpaa2_eventdev.h"
> +#include <portal/dpaa2_hw_pvt.h>
> +#include <mc/fsl_dpci.h>
> +
> +/* Clarifications
> + * Evendev = SoC Instance
> + * Eventport = DPIO Instance
> + * Eventqueue = DPCON Instance
> + * 1 Eventdev can have N Eventqueue
> + * Soft Event Flow is DPCI Instance
> + */
> +
> +static uint16_t
> +dpaa2_eventdev_enqueue_burst(void *port, const struct rte_event ev[],
> + uint16_t nb_events)
> +{
> + RTE_SET_USED(port);
> + RTE_SET_USED(ev);
> + RTE_SET_USED(nb_events);
> +
> + return 0;
> +}
> +
> +static uint16_t
> +dpaa2_eventdev_enqueue(void *port, const struct rte_event *ev)
> +{
> + return dpaa2_eventdev_enqueue_burst(port, ev, 1);
> +}
> +
> +static uint16_t
> +dpaa2_eventdev_dequeue_burst(void *port, struct rte_event ev[],
> + uint16_t nb_events, uint64_t timeout_ticks)
> +{
> + RTE_SET_USED(port);
> + RTE_SET_USED(ev);
> + RTE_SET_USED(nb_events);
> + RTE_SET_USED(timeout_ticks);
> +
> + return 0;
> +}
> +
> +static uint16_t
> +dpaa2_eventdev_dequeue(void *port, struct rte_event *ev,
> + uint64_t timeout_ticks)
> +{
> + return dpaa2_eventdev_dequeue_burst(port, ev, 1, timeout_ticks);
> +}
> +
> +static const struct rte_eventdev_ops dpaa2_eventdev_ops;
> +
> +static int
> +dpaa2_eventdev_setup_dpci(struct dpaa2_dpci_dev *dpci_dev,
> + struct dpaa2_dpcon_dev *dpcon_dev)
> +{
> + struct dpci_rx_queue_cfg rx_queue_cfg;
> + int ret, i;
> +
> + /*Do settings to get the frame on a DPCON object*/
> + rx_queue_cfg.options = DPCI_QUEUE_OPT_DEST;
> + rx_queue_cfg.dest_cfg.dest_type = DPCI_DEST_DPCON;
> + rx_queue_cfg.dest_cfg.dest_id = dpcon_dev->dpcon_id;
> + rx_queue_cfg.dest_cfg.priority = DPAA2_EVENT_DEFAULT_DPCI_PRIO;
> +
> + for (i = 0 ; i < DPAA2_EVENT_DPCI_MAX_QUEUES; i++) {
> + rx_queue_cfg.user_ctx = (uint64_t)(&dpci_dev->queue[i]);
> + ret = dpci_set_rx_queue(&dpci_dev->dpci,
> + CMD_PRI_LOW,
> + dpci_dev->token, i,
> + &rx_queue_cfg);
> + if (ret) {
> + PMD_DRV_LOG(ERR, PMD,
> + "set_rx_q failed with err code: %d", ret);
> + return ret;
> + }
> + }
> + return 0;
> +}
>
> static int
> dpaa2_eventdev_create(const char *name)
> {
> - RTE_SET_USED(name);
> + struct rte_eventdev *eventdev;
> + struct dpaa2_eventdev *priv;
> + struct dpaa2_dpcon_dev *dpcon_dev = NULL;
> + struct dpaa2_dpci_dev *dpci_dev = NULL;
> + int ret;
> +
> + eventdev = rte_event_pmd_vdev_init(name,
> + sizeof(struct dpaa2_eventdev),
> + rte_socket_id());
> + if (eventdev == NULL) {
> + PMD_DRV_ERR("Failed to create eventdev vdev %s", name);
> + goto fail;
> + }
> +
> + eventdev->dev_ops = &dpaa2_eventdev_ops;
> + eventdev->schedule = NULL;
> + eventdev->enqueue = dpaa2_eventdev_enqueue;
> + eventdev->enqueue_burst = dpaa2_eventdev_enqueue_burst;
> + eventdev->dequeue = dpaa2_eventdev_dequeue;
> + eventdev->dequeue_burst = dpaa2_eventdev_dequeue_burst;
If it makes senses, you can return from here if its in multi process mode.
> +
> + priv = eventdev->data->dev_private;
> + priv->max_event_queues = 0;
> +
> + do {
> + dpcon_dev = rte_dpaa2_alloc_dpcon_dev();
> + if (!dpcon_dev)
> + break;
> + priv->evq_info[priv->max_event_queues].dpcon = dpcon_dev;
> +
> + dpci_dev = rte_dpaa2_alloc_dpci_dev();
> + if (!dpci_dev) {
> + rte_dpaa2_free_dpcon_dev(dpcon_dev);
> + break;
> + }
> + priv->evq_info[priv->max_event_queues].dpci = dpci_dev;
> +
> + ret = dpaa2_eventdev_setup_dpci(dpci_dev, dpcon_dev);
> + if (ret) {
> + PMD_DRV_LOG(ERR, PMD,
> + "dpci setup failed with err code: %d", ret);
> + return ret;
> + }
> + priv->max_event_queues++;
> + } while (dpcon_dev && dpci_dev);
>
> return 0;
> +fail:
> + return -EFAULT;
> }
>
> static int
> @@ -61,9 +208,7 @@
> name = rte_vdev_device_name(vdev);
> PMD_DRV_LOG(INFO, "Closing %s", name);
>
> - RTE_SET_USED(name);
> -
> - return 0;
> + return rte_event_pmd_vdev_uninit(name);
> }
next prev parent reply other threads:[~2017-05-31 15:11 UTC|newest]
Thread overview: 34+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-05-25 18:07 [PATCH 00/20] next-eventdev: NXP DPAA2 eventdev PMD Nipun Gupta
2017-05-25 18:07 ` [PATCH 01/20] event/dpaa2: add basic build infrastructure Nipun Gupta
2017-05-31 14:59 ` Jerin Jacob
2017-05-25 18:07 ` [PATCH 02/20] bus/fslmc: generic framework for mc object creation Nipun Gupta
2017-05-25 18:07 ` [PATCH 03/20] bus/fslmc: integrating dpio and dpbp to object framework Nipun Gupta
2017-05-25 18:07 ` [PATCH 04/20] bus/fslmc: adding basic dpcon support Nipun Gupta
2017-05-25 18:07 ` [PATCH 05/20] bus/fslmc: export qbman dqrr funcs for eventdev usages Nipun Gupta
2017-05-25 18:07 ` [PATCH 06/20] event/dpaa2: register dpcon as dpaa2 device for bus scan Nipun Gupta
2017-05-25 18:07 ` [PATCH 07/20] bus/fslmc: adding basic dpci support Nipun Gupta
2017-05-25 18:07 ` [PATCH 08/20] bus/fslmc: register dpci as dpaa2 device for bus scan Nipun Gupta
2017-05-25 18:07 ` [PATCH 09/20] bus/fslmc: adding cpu support in stashing config Nipun Gupta
2017-05-25 18:07 ` [PATCH 10/20] event/dpaa2: add initialization of event device Nipun Gupta
2017-05-31 15:10 ` Jerin Jacob [this message]
2017-06-01 10:25 ` Nipun Gupta
2017-06-01 10:39 ` Jerin Jacob
2017-05-25 18:07 ` [PATCH 11/20] bus/fslmc: add support for static dequeue from portal Nipun Gupta
2017-05-25 18:07 ` [PATCH 12/20] event/dpaa2: add configuration functions Nipun Gupta
2017-05-31 15:20 ` Jerin Jacob
2017-05-31 15:29 ` Jerin Jacob
2017-06-01 11:39 ` Nipun Gupta
2017-05-25 18:07 ` [PATCH 13/20] bus/fslmc: support enqueue with multiple enqueue descriptors Nipun Gupta
2017-05-25 18:07 ` [PATCH 14/20] bus/fslmc: add callback per queue to enable Nipun Gupta
2017-05-25 18:07 ` [PATCH 15/20] bus/fslmc: change func argument to const to avoid warning Nipun Gupta
2017-05-25 18:07 ` [PATCH 16/20] event/dpaa2: add enqueue and dequeue functionality Nipun Gupta
2017-05-25 18:07 ` [PATCH 17/20] fslmc/bus: add interrupt enabling routine Nipun Gupta
2017-05-25 18:07 ` [PATCH 18/20] bus/fslmc: enable portal interrupt handling Nipun Gupta
2017-05-25 18:07 ` [PATCH 19/20] event/dpaa2: handle timeout using interrupts in dequeue Nipun Gupta
2017-05-31 15:49 ` Jerin Jacob
2017-06-01 11:42 ` Nipun Gupta
2017-05-25 18:07 ` [PATCH 20/20] doc: add NXP DPAA2 EVENTDEV details Nipun Gupta
2017-05-31 15:58 ` Jerin Jacob
2017-06-01 12:07 ` Nipun Gupta
2017-05-31 14:50 ` [PATCH 00/20] next-eventdev: NXP DPAA2 eventdev PMD Jerin Jacob
2017-05-31 16:17 ` Thomas Monjalon
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=20170531151003.GB16598@jerin \
--to=jerin.jacob@caviumnetworks.com \
--cc=bruce.richardson@intel.com \
--cc=dev@dpdk.org \
--cc=gage.eads@intel.com \
--cc=harry.van.haaren@intel.com \
--cc=hemant.agrawal@nxp.com \
--cc=nipun.gupta@nxp.com \
--cc=shreyansh.jain@nxp.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.