All of lore.kernel.org
 help / color / mirror / Atom feed
From: Jerin Jacob <jerin.jacob@caviumnetworks.com>
To: Nipun Gupta <nipun.gupta@nxp.com>
Cc: "dev@dpdk.org" <dev@dpdk.org>,
	"thomas.monjalon@6wind.com" <thomas.monjalon@6wind.com>,
	"bruce.richardson@intel.com" <bruce.richardson@intel.com>,
	Hemant Agrawal <hemant.agrawal@nxp.com>,
	"gage.eads@intel.com" <gage.eads@intel.com>,
	"harry.van.haaren@intel.com" <harry.van.haaren@intel.com>
Subject: Re: [PATCH v4 3/6] eventdev: implement the northbound APIs
Date: Thu, 2 Feb 2017 20:02:16 +0530	[thread overview]
Message-ID: <20170202143215.GA28028@localhost.localdomain> (raw)
In-Reply-To: <AM5PR0401MB25143F860F368F1FE1EFAF32E64C0@AM5PR0401MB2514.eurprd04.prod.outlook.com>

On Thu, Feb 02, 2017 at 11:19:45AM +0000, Nipun Gupta wrote:
> 
> 
> > -----Original Message-----
> > From: dev [mailto:dev-bounces@dpdk.org] On Behalf Of Jerin Jacob
> > Sent: Wednesday, December 21, 2016 14:55
> > To: dev@dpdk.org
> > Cc: thomas.monjalon@6wind.com; bruce.richardson@intel.com; Hemant
> > Agrawal <hemant.agrawal@nxp.com>; gage.eads@intel.com;
> > harry.van.haaren@intel.com; Jerin Jacob <jerin.jacob@caviumnetworks.com>
> > Subject: [dpdk-dev] [PATCH v4 3/6] eventdev: implement the northbound APIs
> > 
> > This patch implements northbound eventdev API interface using southbond
> > driver interface
> > 
> > Signed-off-by: Jerin Jacob <jerin.jacob@caviumnetworks.com>
> > Acked-by: Bruce Richardson <bruce.richardson@intel.com>
> > ---
> >  config/common_base                           |   6 +
> >  lib/Makefile                                 |   1 +
> >  lib/librte_eal/common/include/rte_log.h      |   1 +
> >  lib/librte_eventdev/Makefile                 |  57 ++
> >  lib/librte_eventdev/rte_eventdev.c           | 986
> > +++++++++++++++++++++++++++
> >  lib/librte_eventdev/rte_eventdev.h           | 106 ++-
> >  lib/librte_eventdev/rte_eventdev_pmd.h       | 109 +++
> >  lib/librte_eventdev/rte_eventdev_version.map |  33 +
> >  mk/rte.app.mk                                |   1 +
> >  9 files changed, 1294 insertions(+), 6 deletions(-)  create mode 100644
> > lib/librte_eventdev/Makefile  create mode 100644
> > lib/librte_eventdev/rte_eventdev.c
> >  create mode 100644 lib/librte_eventdev/rte_eventdev_version.map
> > 
> 
> <Snip>
> 
> > +static inline int
> > +rte_event_dev_port_config(struct rte_eventdev *dev, uint8_t nb_ports) {
> > +	uint8_t old_nb_ports = dev->data->nb_ports;
> > +	void **ports;
> > +	uint16_t *links_map;
> > +	uint8_t *ports_dequeue_depth;
> > +	uint8_t *ports_enqueue_depth;
> > +	unsigned int i;
> > +
> > +	RTE_EDEV_LOG_DEBUG("Setup %d ports on device %u", nb_ports,
> > +			 dev->data->dev_id);
> > +
> > +	/* First time configuration */
> > +	if (dev->data->ports == NULL && nb_ports != 0) {
> > +		dev->data->ports = rte_zmalloc_socket("eventdev->data-
> > >ports",
> > +				sizeof(dev->data->ports[0]) * nb_ports,
> > +				RTE_CACHE_LINE_SIZE, dev->data->socket_id);
> > +		if (dev->data->ports == NULL) {
> > +			dev->data->nb_ports = 0;
> > +			RTE_EDEV_LOG_ERR("failed to get mem for port meta
> > data,"
> > +					"nb_ports %u", nb_ports);
> > +			return -(ENOMEM);
> > +		}
> > +
> > +		/* Allocate memory to store ports dequeue depth */
> > +		dev->data->ports_dequeue_depth =
> > +			rte_zmalloc_socket("eventdev-
> > >ports_dequeue_depth",
> > +			sizeof(dev->data->ports_dequeue_depth[0]) *
> > nb_ports,
> > +			RTE_CACHE_LINE_SIZE, dev->data->socket_id);
> > +		if (dev->data->ports_dequeue_depth == NULL) {
> > +			dev->data->nb_ports = 0;
> > +			RTE_EDEV_LOG_ERR("failed to get mem for port deq
> > meta,"
> > +					"nb_ports %u", nb_ports);
> > +			return -(ENOMEM);
> > +		}
> > +
> > +		/* Allocate memory to store ports enqueue depth */
> > +		dev->data->ports_enqueue_depth =
> > +			rte_zmalloc_socket("eventdev-
> > >ports_enqueue_depth",
> > +			sizeof(dev->data->ports_enqueue_depth[0]) *
> > nb_ports,
> > +			RTE_CACHE_LINE_SIZE, dev->data->socket_id);
> > +		if (dev->data->ports_enqueue_depth == NULL) {
> > +			dev->data->nb_ports = 0;
> > +			RTE_EDEV_LOG_ERR("failed to get mem for port enq
> > meta,"
> > +					"nb_ports %u", nb_ports);
> > +			return -(ENOMEM);
> > +		}
> > +
> > +		/* Allocate memory to store queue to port link connection */
> > +		dev->data->links_map =
> > +			rte_zmalloc_socket("eventdev->links_map",
> > +			sizeof(dev->data->links_map[0]) * nb_ports *
> > +			RTE_EVENT_MAX_QUEUES_PER_DEV,
> > +			RTE_CACHE_LINE_SIZE, dev->data->socket_id);
> > +		if (dev->data->links_map == NULL) {
> > +			dev->data->nb_ports = 0;
> > +			RTE_EDEV_LOG_ERR("failed to get mem for port_map
> > area,"
> > +					"nb_ports %u", nb_ports);
> > +			return -(ENOMEM);
> > +		}
> 
> I think we also need to set all the 'links map' to EVENT_QUEUE_SERVICE_PRIORITY_INVALID
> on zmalloc.

Just after the port_setup, we are setting to EVENT_QUEUE_SERVICE_PRIORITY_INVALID in
rte_event_port_unlink(). So it looks OK to me.

        diag = (*dev->dev_ops->port_setup)(dev, port_id, port_conf);

        /* Unlink all the queues from this port(default state after
	 * setup) */
        if (!diag)
                diag = rte_event_port_unlink(dev_id, port_id, NULL, 0);


> 
> > +	} else if (dev->data->ports != NULL && nb_ports != 0) {/* re-config */
> > +		RTE_FUNC_PTR_OR_ERR_RET(*dev->dev_ops->port_release, -
> > ENOTSUP);
> > +
> > +		ports = dev->data->ports;
> > +		ports_dequeue_depth = dev->data->ports_dequeue_depth;
> > +		ports_enqueue_depth = dev->data->ports_enqueue_depth;
> > +		links_map = dev->data->links_map;
> > +
> 
> <Snip>
> 
> > +int
> > +rte_event_port_setup(uint8_t dev_id, uint8_t port_id,
> > +		     const struct rte_event_port_conf *port_conf) {
> > +	struct rte_eventdev *dev;
> > +	struct rte_event_port_conf def_conf;
> > +	int diag;
> > +
> > +	RTE_EVENTDEV_VALID_DEVID_OR_ERR_RET(dev_id, -EINVAL);
> > +	dev = &rte_eventdevs[dev_id];
> > +
> > +	if (!is_valid_port(dev, port_id)) {
> > +		RTE_EDEV_LOG_ERR("Invalid port_id=%" PRIu8, port_id);
> > +		return -EINVAL;
> > +	}
> > +
> > +	/* Check new_event_threshold limit */
> > +	if ((port_conf && !port_conf->new_event_threshold) ||
> > +			(port_conf && port_conf->new_event_threshold >
> > +				 dev->data->dev_conf.nb_events_limit)) {
> 
> As mentioned in 'rte_eventdev.h', the 'new_event_threshold' is valid for *closed systems*,
> so is the above check valid for *open systems*?

new_event_threshold is valid  only for *closed systems*. If you need any
change then please suggest.

> Or is it implicit that for open systems the 'port_conf->new_event_threshold' should be
> set to '-1' by the application just as it is for 'max_num_events' of 'struct rte_event_dev_info'.



> 
> > +		RTE_EDEV_LOG_ERR(
> > +		   "dev%d port%d Invalid event_threshold=%d
> > nb_events_limit=%d",
> > +			dev_id, port_id, port_conf->new_event_threshold,
> > +			dev->data->dev_conf.nb_events_limit);
> > +		return -EINVAL;
> > +	}
> > +
> 
> <Snip>
> 
> Regards,
> Nipun

  reply	other threads:[~2017-02-02 14:32 UTC|newest]

Thread overview: 109+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-11-18  5:44 [PATCH 0/4] libeventdev API and northbound implementation Jerin Jacob
2016-11-18  5:44 ` [PATCH 1/4] eventdev: introduce event driven programming model Jerin Jacob
2016-11-23 18:39   ` Thomas Monjalon
2016-11-24  1:59     ` Jerin Jacob
2016-11-24 12:26       ` Bruce Richardson
2016-11-24 15:35       ` Thomas Monjalon
2016-11-25  0:23         ` Jerin Jacob
2016-11-25 11:00           ` Bruce Richardson
2016-11-25 13:09             ` Thomas Monjalon
2016-11-26  0:57               ` Jerin Jacob
2016-11-28  9:10                 ` Bruce Richardson
2016-11-26  2:54             ` Jerin Jacob
2016-11-28  9:16               ` Bruce Richardson
2016-11-28 11:30                 ` Thomas Monjalon
2016-11-29  4:01                 ` Jerin Jacob
2016-11-29 10:00                   ` Bruce Richardson
2016-11-25 11:59           ` Van Haaren, Harry
2016-11-25 12:09             ` Richardson, Bruce
2016-11-24 16:24   ` Bruce Richardson
2016-11-24 19:30     ` Jerin Jacob
2016-12-06  3:52   ` [PATCH v2 0/6] libeventdev API and northbound implementation Jerin Jacob
2016-12-06  3:52     ` [PATCH v2 1/6] eventdev: introduce event driven programming model Jerin Jacob
2016-12-06 16:51       ` Bruce Richardson
2016-12-07 18:53         ` Jerin Jacob
2016-12-08  9:30           ` Bruce Richardson
2016-12-08 20:41             ` Jerin Jacob
2016-12-09 15:11               ` Bruce Richardson
2016-12-14  6:55                 ` Jerin Jacob
2016-12-07 10:57       ` Van Haaren, Harry
2016-12-08  1:24         ` Jerin Jacob
2016-12-08 11:02           ` Van Haaren, Harry
2016-12-14 13:13             ` Jerin Jacob
2016-12-14 15:15               ` Bruce Richardson
2016-12-15 16:54               ` Van Haaren, Harry
2016-12-07 11:12       ` Bruce Richardson
2016-12-08  1:48         ` Jerin Jacob
2016-12-08  9:57           ` Bruce Richardson
2016-12-14  6:40             ` Jerin Jacob
2016-12-14 15:19       ` Bruce Richardson
2016-12-15 13:39         ` Jerin Jacob
2016-12-06  3:52     ` [PATCH v2 2/6] eventdev: define southbound driver interface Jerin Jacob
2016-12-06  3:52     ` [PATCH v2 3/6] eventdev: implement the northbound APIs Jerin Jacob
2016-12-06 17:17       ` Bruce Richardson
2016-12-07 17:02         ` Jerin Jacob
2016-12-08  9:59           ` Bruce Richardson
2016-12-14  6:28             ` Jerin Jacob
2016-12-06  3:52     ` [PATCH v2 4/6] eventdev: implement PMD registration functions Jerin Jacob
2016-12-06  3:52     ` [PATCH v2 5/6] event/skeleton: add skeleton eventdev driver Jerin Jacob
2016-12-06  3:52     ` [PATCH v2 6/6] app/test: unit test case for eventdev APIs Jerin Jacob
2016-12-06 16:46     ` [PATCH v2 0/6] libeventdev API and northbound implementation Bruce Richardson
2016-12-21  9:25     ` [PATCH v4 " Jerin Jacob
2016-12-21  9:25       ` [PATCH v4 1/6] eventdev: introduce event driven programming model Jerin Jacob
2017-01-25 16:32         ` Eads, Gage
2017-01-25 16:36           ` Richardson, Bruce
2017-01-25 16:53             ` Eads, Gage
2017-01-25 22:36               ` Eads, Gage
2017-01-26  9:39                 ` Jerin Jacob
2017-01-26 20:39                   ` Eads, Gage
2017-01-27 10:03                     ` Bruce Richardson
2017-01-30 10:42                     ` Jerin Jacob
2017-02-02 11:18         ` Nipun Gupta
2017-02-02 14:09           ` Jerin Jacob
2017-02-03  6:38             ` Nipun Gupta
2017-02-03 10:58               ` Hemant Agrawal
2017-02-07  4:59                 ` Jerin Jacob
2016-12-21  9:25       ` [PATCH v4 2/6] eventdev: define southbound driver interface Jerin Jacob
2017-02-02 11:19         ` Nipun Gupta
2017-02-02 11:34           ` Bruce Richardson
2017-02-02 12:53             ` Nipun Gupta
2017-02-02 13:58               ` Bruce Richardson
2017-02-03  5:59                 ` Nipun Gupta
2016-12-21  9:25       ` [PATCH v4 3/6] eventdev: implement the northbound APIs Jerin Jacob
2017-02-02 11:19         ` Nipun Gupta
2017-02-02 14:32           ` Jerin Jacob [this message]
2017-02-03  6:59             ` Nipun Gupta
2016-12-21  9:25       ` [PATCH v4 4/6] eventdev: implement PMD registration functions Jerin Jacob
2017-02-02 11:20         ` Nipun Gupta
2017-02-05 13:04           ` Jerin Jacob
2016-12-21  9:25       ` [PATCH v4 5/6] event/skeleton: add skeleton eventdev driver Jerin Jacob
2016-12-21  9:25       ` [PATCH v4 6/6] app/test: unit test case for eventdev APIs Jerin Jacob
2016-11-18  5:45 ` [PATCH 2/4] eventdev: implement the northbound APIs Jerin Jacob
2016-11-21 17:45   ` Eads, Gage
2016-11-21 19:13     ` Jerin Jacob
2016-11-21 19:31       ` Jerin Jacob
2016-11-22 15:15         ` Eads, Gage
2016-11-22 18:19           ` Jerin Jacob
2016-11-22 19:43             ` Eads, Gage
2016-11-22 20:00               ` Jerin Jacob
2016-11-22 22:48                 ` Eads, Gage
2016-11-22 23:43                   ` Jerin Jacob
2016-11-28 15:53                     ` Eads, Gage
2016-11-29  2:01                       ` Jerin Jacob
2016-11-29  3:43                       ` Jerin Jacob
2016-11-29  5:46                         ` Eads, Gage
2016-11-23  9:57           ` Bruce Richardson
2016-11-23 19:18   ` Thomas Monjalon
2016-11-25  4:17     ` Jerin Jacob
2016-11-25  9:55       ` Richardson, Bruce
2016-11-25 23:08         ` Jerin Jacob
2016-11-18  5:45 ` [PATCH 3/4] event/skeleton: add skeleton eventdev driver Jerin Jacob
2016-11-18  5:45 ` [PATCH 4/4] app/test: unit test case for eventdev APIs Jerin Jacob
2016-11-18 15:25 ` [PATCH 0/4] libeventdev API and northbound implementation Bruce Richardson
2016-11-18 16:04   ` Bruce Richardson
2016-11-18 19:27     ` Jerin Jacob
2016-11-21  9:40       ` Thomas Monjalon
2016-11-21  9:57         ` Bruce Richardson
2016-11-22  0:11           ` Thomas Monjalon
2016-11-22  2:00       ` Yuanhan Liu
2016-11-22  9:05         ` Shreyansh Jain

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=20170202143215.GA28028@localhost.localdomain \
    --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=thomas.monjalon@6wind.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.