All of lore.kernel.org
 help / color / mirror / Atom feed
From: Jerin Jacob <jerin.jacob@caviumnetworks.com>
To: "Eads, Gage" <gage.eads@intel.com>
Cc: "dev@dpdk.org" <dev@dpdk.org>,
	"Richardson, Bruce" <bruce.richardson@intel.com>,
	"hemant.agrawal@nxp.com" <hemant.agrawal@nxp.com>,
	"Van Haaren, Harry" <harry.van.haaren@intel.com>,
	"nipun.gupta@nxp.com" <nipun.gupta@nxp.com>
Subject: Re: [PATCH v4] eventdev: add errno-style return values
Date: Wed, 22 Mar 2017 12:23:53 +0530	[thread overview]
Message-ID: <20170322065352.moetw2bwc7p4hhws@localhost.localdomain> (raw)
In-Reply-To: <9184057F7FC11744A2107296B6B8EB1E01E82F00@FMSMSX108.amr.corp.intel.com>

On Tue, Mar 21, 2017 at 08:38:25PM +0000, Eads, Gage wrote:
> 
> 
> >  -----Original Message-----
> >  From: Jerin Jacob [mailto:jerin.jacob@caviumnetworks.com]
> >  Sent: Tuesday, March 21, 2017 6:06 AM
> >  To: Eads, Gage <gage.eads@intel.com>
> >  Cc: dev@dpdk.org; Richardson, Bruce <bruce.richardson@intel.com>;
> >  hemant.agrawal@nxp.com; Van Haaren, Harry <harry.van.haaren@intel.com>;
> >  nipun.gupta@nxp.com
> >  Subject: Re: [PATCH v4] eventdev: add errno-style return values
> >  
> >  On Fri, Mar 17, 2017 at 09:51:28AM -0500, Gage Eads wrote:
> >  > From: "Eads, Gage" <gage.eads@intel.com>
> >  >
> >  > This commit adds rte_errno return values to rte_event_enqueue_burst()
> >  > and rte_event_dequeue_burst().
> >  >
> >  > These return values allows user software to differentiate between an
> >  > invalid argument (such as an invalid queue_id or sched_type in an
> >  > enqueued
> >  > event) and backpressure from the event device.
> >  >
> >  > The port and device ID checks are placed in RTE_LIBRTE_EVENTDEV_DEBUG
> >  > header guards to avoid the performance hit in non-debug execution.
> >  >
> >  > Signed-off-by: Gage Eads <gage.eads@intel.com>
> >  > ---
> >  > Changes for v2:
> >  >   - Remove rte_errno initialization
> >  > Changes for v3:
> >  >   - Fix checkpatch and check-git-log.sh errors Changes for v4:
> >  >   - v3 was incorrectly based on v1, v4 is instead based on v2's
> >  > changes
> >  >
> >  >  lib/librte_eventdev/rte_eventdev.h | 40
> >  > +++++++++++++++++++++++++++++++++++---
> >  >  1 file changed, 37 insertions(+), 3 deletions(-)
> >  >
> >  > diff --git a/lib/librte_eventdev/rte_eventdev.h
> >  > b/lib/librte_eventdev/rte_eventdev.h
> >  > index 2b30a35..a45c81a 100644
> >  > --- a/lib/librte_eventdev/rte_eventdev.h
> >  > +++ b/lib/librte_eventdev/rte_eventdev.h
> >  > @@ -245,6 +245,7 @@ extern "C" {
> >  >
> >  >  #include <rte_common.h>
> >  >  #include <rte_memory.h>
> >  > +#include <rte_errno.h>
> >  >
> >  >  struct rte_mbuf; /* we just use mbuf pointers; no need to include
> >  > rte_mbuf.h */
> >  >
> >  > @@ -1118,9 +1119,14 @@ rte_event_schedule(uint8_t dev_id)
> >  >   *   The number of event objects actually enqueued on the event device. The
> >  >   *   return value can be less than the value of the *nb_events* parameter
> >  when
> >  >   *   the event devices queue is full or if invalid parameters are specified in a
> >  > - *   *rte_event*. If return value is less than *nb_events*, the remaining
> >  events
> >  > - *   at the end of ev[] are not consumed,and the caller has to take care of
> >  them
> >  > - *
> >  > + *   *rte_event*. If the return value is less than *nb_events*, the remaining
> >  > + *   events at the end of ev[] are not consumed and the caller has to take
> >  care
> >  > + *   of them, and rte_errno is set accordingly. Possible errno values include:
> >  > + *   -(-EINVAL) The port ID is invalid, device ID is invalid, an event's queue
> >  > + *              ID is invalid, or an event's sched type doesn't match the
> >  > + *              capabilities of the destination queue.
> >  > + *   -(-ENOSPC) The event port was backpressured and unable to enqueue
> >  > + *              one or more events.
> >  
> >  Some reason you haven't addressed the comments in v2.i.e add a note that -
> >  ENOSPC applicable only for *closed system*
> >  
> >  http://dpdk.org/ml/archives/dev/2017-March/060352.html
> >  
> 
> Will fix.
> 
> >  
> >  >   * @see rte_event_port_enqueue_depth()
> >  >   */
> >  >  static inline uint16_t
> >  > @@ -1129,6 +1135,20 @@ rte_event_enqueue_burst(uint8_t dev_id, uint8_t
> >  > port_id,  {
> >  >  	struct rte_eventdev *dev = &rte_eventdevs[dev_id];
> >  >
> >  > +#ifdef RTE_LIBRTE_EVENTDEV_DEBUG
> >  
> >  Some reason you haven't addressed the comments in v2.i.e Not fixed the build
> >  issue.
> >  http://dpdk.org/ml/archives/dev/2017-March/060352.html
> >  
> >  You can reproduce it by setting CONFIG_RTE_LIBRTE_EVENTDEV_DEBUG=y in
> >  common config.
> >  
> >  We have two approaches to fix it
> >  1/ Pollute lib/librte_eventdev/rte_eventdev.h header with implementation
> >  specific header files
> >  
> >  Or
> >  
> >  2/ Have neat pmd debug common function in rte_eventdev_pmd.h.Let all PMD
> >  driver call it by including rte_eventdev_pmd.h
> >  
> 
> I'd prefer to avoid the issue by dropping the debug message and RTE_EVENTDEV_DETACHED, like so:
> 
> #ifdef RTE_LIBRTE_EVENTDEV_DEBUG
>         if (dev_id >= RTE_EVENT_MAX_DEVS || !rte_eventdevs[dev_id].attached) {
>                 rte_errno = -EINVAL;
>                 return 0;
>         }
> 
>         if (port_id >= dev->data->nb_ports) {
>                 rte_errno = -EINVAL;
>                 return 0;
>         }
> #endif
> 
> What do you think?

Looks good to me.

  reply	other threads:[~2017-03-22  6:54 UTC|newest]

Thread overview: 22+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-02-10 21:02 [PATCH] eventdev: Add rte_errno return values to the enqueue and dequeue functions Gage Eads
2017-02-13 10:38 ` Bruce Richardson
2017-02-13 11:48   ` Jerin Jacob
2017-02-13 12:08     ` Bruce Richardson
2017-02-13 16:05       ` Eads, Gage
2017-02-14  4:10 ` Jerin Jacob
2017-02-15  0:14   ` Eads, Gage
2017-02-15 17:09 ` [PATCH v2] " Gage Eads
2017-03-16 10:28   ` Jerin Jacob
2017-03-16 20:12   ` [PATCH v3] eventdev: add errno-style return values Gage Eads
2017-03-17  3:10     ` Jerin Jacob
2017-03-17 14:34       ` Eads, Gage
2017-03-17 14:51     ` [PATCH v4] " Gage Eads
2017-03-21 11:06       ` Jerin Jacob
2017-03-21 20:38         ` Eads, Gage
2017-03-22  6:53           ` Jerin Jacob [this message]
2017-03-22 14:58       ` [PATCH v5] " Gage Eads
2017-03-22 17:17         ` Jerin Jacob
2017-03-23 22:32           ` Eads, Gage
2017-03-23 22:30         ` [PATCH v6] " Gage Eads
2017-03-24  2:38           ` Jerin Jacob
2017-03-25  5:11             ` 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=20170322065352.moetw2bwc7p4hhws@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 \
    /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.