DPDK patches and discussions
 help / color / mirror / Atom feed
From: "Etai Lev-Ran" <elevran@gmail.com>
To: <dev@dpdk.org>
Subject: Re: [dpdk-dev] rte_ring_sc_dequeue returns 0 but sets packet to NULL
Date: Wed, 20 Nov 2013 11:19:52 +0200	[thread overview]
Message-ID: <003d01cee5d1$acbee400$063cac00$@com> (raw)
In-Reply-To: <CAJ5bv6GM5vX8QR+bg8gmiEBtGYeQ15iKRmyRGyZ2Tv4VEDqagw@mail.gmail.com>

 

Hi Pepe,

 

I’m assuming you’re creating and accessing the ring safely (i.e., single/multiple consumers and producers).

 

Based on the code, these return values are possible if the ring somehow got a NULL object pointer enqueued to it. 

>From the ring’s perspective the entries are valid, and since the dequeue does not check for NULL object pointers, 

you’re getting back element(s) that happen to be NULL.

 

If this is indeed the case, I would propose the following patch:

- Adding a check for NULL object pointers to ENQUEUE_PTRS in rte_ring.h (in debug code so not to hurt performance?) 

- returning an EINVAL error code if any object in a burst is NULL and aborting all enqueue (ie. all or none)

 

IMHO, adding NULL objects is likely an error not a legitimate use case for adding ring elements.

Can anyone think of a use case where adding NULL pointer objects makes sense?

Best regards,
Etai


-----Original Message-----
From: dev [mailto:dev-bounces@dpdk.org] On Behalf Of Jose Gavine Cueto
Sent: Tuesday, November 19, 2013 12:35 PM
To: dev@dpdk.org
Subject: [dpdk-dev] rte_ring_sc_dequeue returns 0 but sets packet to NULL

Hi,

I am encountering a strange behavior of rte_ring_sc_dequeue, though I'm not
yet sure what causes this.

I have a code:

rc = rte_ring_sc_dequeue(fwdp->rxtx_rings->xmit_ring, &rpackets);

At first dequeue, rpackets gets a correct address of an rte_mbuf, however at
the second dequeue it returns 0 which is successful but sets the rte_mbuf
result to a NULL value.  Is this even possible, because its happening in my
scenario.  Or it could be just there's something wrong with my code.

Cheers,
Pepe

--
To stop learning is like to stop loving.

  parent reply	other threads:[~2013-11-20  9:18 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-11-19 10:35 Jose Gavine Cueto
     [not found] ` <000301cee54e$bb49d170$31dd7450$@com>
     [not found]   ` <CAJ5bv6G+BiB2XSg-sUDeQLg85=S02+Y0m79CjBxfQo=aQOGBXw@mail.gmail.com>
     [not found]     ` <002f01cee5c9$eb6bf0b0$c243d210$@com>
     [not found]       ` <CAJ5bv6H3ye9LkA5M4SB_QjADjHOx1hnw7RQkVBrJ3nzHeGaEBg@mail.gmail.com>
     [not found]         ` <CAGNKSKc+=SeWXhohZWte4k8OjQz9q=i4seqm7JznQQB6T9sWoA@mail.gmail.com>
     [not found]           ` <CAJ5bv6GM5vX8QR+bg8gmiEBtGYeQ15iKRmyRGyZ2Tv4VEDqagw@mail.gmail.com>
2013-11-20  9:19             ` Etai Lev-Ran [this message]
2013-11-20 18:32               ` Jeff Venable
2013-11-20 19:20                 ` elevran
2013-11-22  9:54               ` Richardson, Bruce

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='003d01cee5d1$acbee400$063cac00$@com' \
    --to=elevran@gmail.com \
    --cc=dev@dpdk.org \
    /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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).