[dpdk-dev] [EXT] Re: [PATCH v2] net/af_packet: add string error for system errors
Stephen Hemminger
stephen at networkplumber.org
Thu Jul 11 18:10:38 CEST 2019
On Thu, 11 Jul 2019 09:56:32 +0000
Krzysztof Kanas <kkanas at marvell.com> wrote:
> On 19-07-10 09:04, Stephen Hemminger wrote:
> > External Email
> >
> > ----------------------------------------------------------------------
> > On Wed, 10 Jul 2019 16:46:30 +0200
> > <kkanas at marvell.com> wrote:
> >
> > >
> > > +#define PMD_LOG_ERRNO(level, fmt, args...) \
> > > + rte_log(RTE_LOG_ ## level, af_packet_logtype, \
> > > + "%s(): " fmt ":%s\n", __func__, ##args, rte_strerror(errno))
> > > +
> > > static uint16_t
> > > eth_af_packet_rx(void *queue, struct rte_mbuf **bufs, uint16_t nb_pkts)
> > > {
> > > @@ -603,9 +609,7 @@ rte_pmd_init_internals(struct rte_vdev_device *dev,
> > > return -1;
> > > }
> > > if (ioctl(sockfd, SIOCGIFINDEX, &ifr) == -1) {
> > > - PMD_LOG(ERR,
> > > - "%s: ioctl failed (SIOCGIFINDEX)",
> > > - name);
> > > + PMD_LOG_ERRNO(ERR, "%s: ioctl failed (SIOCGIFINDEX)", name);
> > > return -1;
> >
> > This is wrong.
> > The ioctl sets errno not rte_errno.
> I was following the documentation on rte_strerror, which states:
>
> For non-RTE-specific error codes, this function returns the value from
> the libc strerror function
That document is correct, but the intended usage is to do rte_strerror(rte_errno)
and since rte_errno values correspond to errno values for system errors it would work.
In conclusion, your code will work but is a little confusing.
More information about the dev
mailing list