DPDK patches and discussions
 help / color / mirror / Atom feed
From: Bruce Richardson <bruce.richardson@intel.com>
To: "Wiles, Roger Keith" <keith.wiles@windriver.com>
Cc: "dev@dpdk.org" <dev@dpdk.org>
Subject: Re: [dpdk-dev] Bulk dequeue of packets and the returned values, question
Date: Mon, 29 Sep 2014 13:10:22 +0100	[thread overview]
Message-ID: <20140929121022.GH12072@BRICHA3-MOBL> (raw)
In-Reply-To: <F188E589-7C3A-44D6-9DBB-F9908FD1FEAC@windriver.com>

On Sun, Sep 28, 2014 at 11:06:17PM +0000, Wiles, Roger Keith wrote:
> Thanks Venky,
> On Sep 28, 2014, at 5:23 PM, Venkatesan, Venky <venky.venkatesan@intel.com> wrote:
> 
> > Keith,
> > 
> > On 9/28/2014 11:04 AM, Wiles, Roger Keith wrote:
> >> I am also looking at the bulk dequeue routines, which the ring can be fixed or variable. On fixed  < 0 on error is returned and 0 if successful. On a variable ring < 0 on error or n on success, but I think n can be zero in the variable case, correct?
> >> 
> >> If these are true then why not have the routines return  < 0 on error and >= 0 on success. Which means a dequeue from a fixed ring would return only ’requested size n’ or < 0 if you error off the 0 case. The 0 case could be OK, if you allow zero to be return on a empty ring for the fixed ring case.
> >> 
> >> Does this make sense to anyone?
> > It won't make sense unless you're aware of the history behind these functions. The original functions that were implemented for the ring were only the bulk functions (i.e. FIXED). They would return exactly the number of items requested for dequeue (0 if success, negative if error), and not return any if the required number were not available.
> > 
> > The burst (i.e. VARIABLE) functions came in much later (think it was r1.3 where we introduced them), and by that time, there were already quite a number of deployments of DPDK in the field using the legacy ring functions. Therefore we made the decision to keep the legacy behavior intact & not impacting deployed code - and merging the burst functions into the code. Given that there was no "versioning" of the API/ABI in those releases :).
> 
> I see why the code is this way. If the developers used ‘if ( ret == 0 ) { /* do something */ }’ then it would break if it returned a positive value on success. I would expect the normal behavior to be ‘if ( ret < 0 ) { /* error case */ }’ and fall thru for the success case. I would love to change the code to just return <0 on error or >= 0 on success. I wonder how many customers code would break changing the code to do just just the two steps. I think it will remove some code in a couple places that were testing for FIXED or VARIABLE?
> > 
> > Hope that helps.
> > -Venky
> > 
> >> 
> >> Thanks
> >> ++Keith
> >> 
> >> Keith Wiles, Principal Technologist with CTO office, Wind River mobile 972-213-5533
> 
> Keith Wiles, Principal Technologist with CTO office, Wind River mobile 972-213-5533
> 

Since we are looking at making considerable ABI changes in this release and 
(hopefully) also looking to version our ABI going forward, I would be in 
favour of making any changes to these APIs in this current release if 
possible. While the current behaviour makes sense for historical reason, I 
think an overall change to the behaviour as Keith describes would be more 
sensible long-term. 

(Also to note my previous suggestion about upping the major version to 2.0 
if we continue to increase the number of ABI/API changes in this release.  
Anyone else any thoughts on that?)

/Bruce

  reply	other threads:[~2014-09-29 12:05 UTC|newest]

Thread overview: 9+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-09-28 18:04 Wiles, Roger Keith
2014-09-28 20:44 ` Neil Horman
2014-09-28 22:23 ` Venkatesan, Venky
2014-09-28 22:36   ` Neil Horman
2014-09-28 23:06   ` Wiles, Roger Keith
2014-09-29 12:10     ` Bruce Richardson [this message]
2014-09-29 12:26       ` Neil Horman
2014-09-29 12:30       ` Ananyev, Konstantin
2014-09-29 14:57         ` Wiles, Roger Keith

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=20140929121022.GH12072@BRICHA3-MOBL \
    --to=bruce.richardson@intel.com \
    --cc=dev@dpdk.org \
    --cc=keith.wiles@windriver.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 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).