DPDK patches and discussions
 help / color / mirror / Atom feed
From: Ferruh Yigit <ferruh.yigit@intel.com>
To: Morten Brørup <mb@smartsharesystems.com>,
	Bruce Richardson <bruce.richardson@intel.com>
Cc: thomas@monjalon.net, arybchenko@solarflare.com,
	jia.guo@intel.com, dev@dpdk.org
Subject: Re: [dpdk-dev] [PATCH] ethdev: rte_eth_rx_burst() nb_pktsrequirements
Date: Tue, 13 Oct 2020 11:55:51 +0100
Message-ID: <60d87dbf-167e-d0a6-781a-5f54ee5cb5ac@intel.com> (raw)
In-Reply-To: <98CBD80474FA8B44BF855DF32C47DC35C612DF@smartserver.smartshare.dk>

On 9/14/2020 1:42 PM, Morten Brørup wrote:
>> From: dev [mailto:dev-bounces@dpdk.org] On Behalf Of Bruce Richardson
>> Sent: Monday, September 14, 2020 1:27 PM
>>
>> On Mon, Sep 14, 2020 at 01:05:11PM +0200, Morten Brørup wrote:
>>> Updated description of rte_eth_rx_burst() to reflect what drivers,
>>> when using vector instructions, expect from nb_pkts.
>>>
>>> Also discussed on the mailing list here:
>>>
>> http://inbox.dpdk.org/dev/98CBD80474FA8B44BF855DF32C47DC35C61257@smarts
>> erver.smartshare.dk/
>>>
>>> Signed-off-by: Morten Brørup <mb@smartsharesystems.com>
>>> ---
>>>   lib/librte_ethdev/rte_ethdev.h | 5 +++++
>>>   1 file changed, 5 insertions(+)
>>>
>>> diff --git a/lib/librte_ethdev/rte_ethdev.h
>> b/lib/librte_ethdev/rte_ethdev.h
>>> index 70295d7ab..41f8ba4ef 100644
>>> --- a/lib/librte_ethdev/rte_ethdev.h
>>> +++ b/lib/librte_ethdev/rte_ethdev.h
>>> @@ -4469,6 +4469,10 @@ int
>> rte_eth_dev_hairpin_capability_get(uint16_t port_id,
>>>    * burst-oriented optimizations in both synchronous and asynchronous
>>>    * packet processing environments with no overhead in both cases.
>>>    *
>>> + * @note
>>> + *   Some drivers using vector instructions require that *nb_pkts*
>> is
>>> + *   divisible by 4 or 8, depending on the driver implementation.
>>> + *
>>
>> Not technically true, in that the drivers will round the value down to
>> the
>> nearest multiple of 4 or 8. So how about rewording as:
>>
>> "Some drivers using vector instructions may round the *nb_pkts* driver
>> to
>> a multiple of 4 or 8 depending upon the driver implementation."
>>
> 
> You are correct about the driver behavior.
> 
> However, if you pass nb_pkts=9, the driver will return 8 packets,
> and thus it does not conform to the API behavior of returning nb_pkts
> if they are there.
> 
> This is why the description in this patch differs from the description we reached in the RFC discussion.
> 

Hi Morten, Bruce,

+1 to document the this behavior.

But in the patch the wording is more strict:
"... require that *nb_pkts* is divisible by 4 or 8 ..."
"... The value must be divisible by 8 in order to work with any driver."

I am not sure the requirement is that strict. Application still provide any 
value for 'nb_pkts', so the value doesn't "have to" be divisible 8/4.

But for vector PMD case it will return number of packets round down to 8/4. 
Perhaps can add for vector PMD it must be at least 4/8?

Bruce's explanation sound more accurate to me, what do you think?


>>>    * The rte_eth_rx_burst() function does not provide any error
>>>    * notification to avoid the corresponding overhead. As a hint, the
>>>    * upper-level application might check the status of the device link
>> once
>>> @@ -4485,6 +4489,7 @@ int rte_eth_dev_hairpin_capability_get(uint16_t
>> port_id,
>>>    *   must be large enough to store *nb_pkts* pointers in it.
>>>    * @param nb_pkts
>>>    *   The maximum number of packets to retrieve.
>>> + *   The value must be divisible by 8 in order to work with any
>> driver.
>>
>> Similarly here, I think it's better to state that it should be at least
>> 8,
>> and any values not divisible by 8 may be rounded down.
>>
>>>    * @return
>>>    *   The number of packets actually retrieved, which is the number
>>>    *   of pointers to *rte_mbuf* structures effectively supplied to
>> the
>>> --
>>> 2.17.1
>>>
> 


  reply	other threads:[~2020-10-13 10:56 UTC|newest]

Thread overview: 14+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-09-14 11:05 [dpdk-dev] [PATCH] ethdev: rte_eth_rx_burst() nb_pkts requirements Morten Brørup
2020-09-14 11:26 ` Bruce Richardson
2020-09-14 12:42   ` [dpdk-dev] [PATCH] ethdev: rte_eth_rx_burst() nb_pktsrequirements Morten Brørup
2020-10-13 10:55     ` Ferruh Yigit [this message]
2020-10-14  8:26       ` [dpdk-dev] [PATCH] ethdev: rte_eth_rx_burst()nb_pktsrequirements Morten Brørup
2020-10-14  8:53         ` Thomas Monjalon
2020-10-14  9:29           ` Bruce Richardson
2020-10-14 11:14             ` Morten Brørup
2020-10-14 11:38               ` Bruce Richardson
2020-10-15  7:36                 ` Morten Brørup
2020-10-26 15:06                 ` [dpdk-dev] [PATCH] ethdev: rte_eth_rx_burst() nb_pkts requirements Morten Brørup
2020-10-26 15:15 ` Ajit Khaparde
2020-10-27 10:24 ` Bruce Richardson
2020-10-30  9:27   ` Ferruh Yigit

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=60d87dbf-167e-d0a6-781a-5f54ee5cb5ac@intel.com \
    --to=ferruh.yigit@intel.com \
    --cc=arybchenko@solarflare.com \
    --cc=bruce.richardson@intel.com \
    --cc=dev@dpdk.org \
    --cc=jia.guo@intel.com \
    --cc=mb@smartsharesystems.com \
    --cc=thomas@monjalon.net \
    /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

DPDK patches and discussions

This inbox may be cloned and mirrored by anyone:

	git clone --mirror https://inbox.dpdk.org/dev/0 dev/git/0.git

	# If you have public-inbox 1.1+ installed, you may
	# initialize and index your mirror using the following commands:
	public-inbox-init -V2 dev dev/ https://inbox.dpdk.org/dev \
		dev@dpdk.org
	public-inbox-index dev

Example config snippet for mirrors.
Newsgroup available over NNTP:
	nntp://inbox.dpdk.org/inbox.dpdk.dev


AGPL code for this site: git clone https://public-inbox.org/public-inbox.git