> -----Original Message-----
> From: Stephen Hemminger [mailto:step...@networkplumber.org]
> Sent: Monday, March 6, 2017 4:15 PM
> To: Dumitrescu, Cristian <cristian.dumitre...@intel.com>
> Cc: dev@dpdk.org; thomas.monja...@6wind.com;
> jerin.ja...@caviumnetworks.com;
> balasubramanian.manoha...@cavium.com; hemant.agra...@nxp.com;
> shreyansh.j...@nxp.com
> Subject: Re: [dpdk-dev] [PATCH v3 2/2] ethdev: add hierarchical scheduler
> API
> 
> On Sat,  4 Mar 2017 01:10:20 +0000
> Cristian Dumitrescu <cristian.dumitre...@intel.com> wrote:
> 
> > +/* Get generic traffic manager operations structure from a port. */
> > +const struct rte_tm_ops *
> > +rte_tm_ops_get(uint8_t port_id, struct rte_tm_error *error)
> > +{
> > +   struct rte_eth_dev *dev = &rte_eth_devices[port_id];
> > +   const struct rte_tm_ops *ops;
> > +
> > +   if (!rte_eth_dev_is_valid_port(port_id)) {
> > +           rte_tm_error_set(error,
> > +                   ENODEV,
> > +                   RTE_TM_ERROR_TYPE_UNSPECIFIED,
> > +                   NULL,
> > +                   rte_strerror(ENODEV));
> > +           return NULL;
> > +   }
> > +
> > +   if ((dev->dev_ops->cap_ops_get == NULL) ||
> > +           (dev->dev_ops->cap_ops_get(dev,
> RTE_ETH_CAPABILITY_TM,
> > +           &ops) != 0) || (ops == NULL)) {
> > +           rte_tm_error_set(error,
> > +                   ENOSYS,
> > +                   RTE_TM_ERROR_TYPE_UNSPECIFIED,
> > +                   NULL,
> > +                   rte_strerror(ENOSYS));
> > +           return NULL;
> > +   }
> > +
> > +   return ops;
> > +}
> 
> Why are you introducing yet another version of errno? There already is
> rte_errno for RTE specific errors.

Have you looked at rte_flow? It is already doing this, and people asked me to 
follow the same approach here for domain specific error codes.

Look at Jerin's feedback on RFC here: 
http://www.dpdk.org/ml/archives/dev/2017-January/054484.html
"IMO, We need an explicit error number to differentiate the configuration error 
due do Ethernet port has been started.
The recent rte_flow spec has own error codes to get more visibility on the 
failure, so that application can choose better attributes for configuring."

I agreed it is a good idea, as it gives you a precise indication on what 
exactly went wrong. A generic error code of EBUSY needs to be complemented by a 
second level of library-specific error details. Note that we are also setting 
rte_errno.

Reply via email to