From: "Xie, Huawei" <huawei.xie@intel.com>
To: Thomas Monjalon <thomas.monjalon@6wind.com>
Cc: "dev@dpdk.org" <dev@dpdk.org>
Subject: Re: [dpdk-dev] [PATCH v2 1/2] mbuf: provide rte_pktmbuf_alloc_bulk API
Date: Tue, 22 Dec 2015 01:58:48 +0000 [thread overview]
Message-ID: <C37D651A908B024F974696C65296B57B4C54FBA3@SHSMSX101.ccr.corp.intel.com> (raw)
In-Reply-To: <53745737.WGjHJuKom7@xps13>
On 12/22/2015 5:32 AM, Thomas Monjalon wrote:
> 2015-12-21 17:20, Wiles, Keith:
>> On 12/21/15, 9:21 AM, "Xie, Huawei" <huawei.xie@intel.com> wrote:
>>> On 12/19/2015 3:27 AM, Wiles, Keith wrote:
>>>> On 12/18/15, 11:32 AM, "dev on behalf of Stephen Hemminger" <dev-bounces@dpdk.org on behalf of stephen@networkplumber.org> wrote:
>>>>> On Fri, 18 Dec 2015 10:44:02 +0000
>>>>> "Ananyev, Konstantin" <konstantin.ananyev@intel.com> wrote:
>>>>>> From: dev [mailto:dev-bounces@dpdk.org] On Behalf Of Stephen Hemminger
>>>>>>> On Mon, 14 Dec 2015 09:14:41 +0800
>>>>>>> Huawei Xie <huawei.xie@intel.com> wrote:
>>>>>>>> + switch (count % 4) {
>>>>>>>> + while (idx != count) {
>>>>>>>> + case 0:
>>>>>>>> + RTE_MBUF_ASSERT(rte_mbuf_refcnt_read(mbufs[idx]) == 0);
>>>>>>>> + rte_mbuf_refcnt_set(mbufs[idx], 1);
>>>>>>>> + rte_pktmbuf_reset(mbufs[idx]);
>>>>>>>> + idx++;
>>>>>>>> + case 3:
>>>>>>>> + RTE_MBUF_ASSERT(rte_mbuf_refcnt_read(mbufs[idx]) == 0);
>>>>>>>> + rte_mbuf_refcnt_set(mbufs[idx], 1);
>>>>>>>> + rte_pktmbuf_reset(mbufs[idx]);
>>>>>>>> + idx++;
>>>>>>>> + case 2:
>>>>>>>> + RTE_MBUF_ASSERT(rte_mbuf_refcnt_read(mbufs[idx]) == 0);
>>>>>>>> + rte_mbuf_refcnt_set(mbufs[idx], 1);
>>>>>>>> + rte_pktmbuf_reset(mbufs[idx]);
>>>>>>>> + idx++;
>>>>>>>> + case 1:
>>>>>>>> + RTE_MBUF_ASSERT(rte_mbuf_refcnt_read(mbufs[idx]) == 0);
>>>>>>>> + rte_mbuf_refcnt_set(mbufs[idx], 1);
>>>>>>>> + rte_pktmbuf_reset(mbufs[idx]);
>>>>>>>> + idx++;
>>>>>>>> + }
>>>>>>>> + }
>>>>>>>> + return 0;
>>>>>>>> +}
>>>>>>> This is weird. Why not just use Duff's device in a more normal manner.
>>>>>> But it is a sort of Duff's method.
>>>>>> Not sure what looks weird to you here?
>>>>>> while () {} instead of do {} while();?
>>>>>> Konstantin
>>>>>>
>>>>>>
>>>>>>
>>>>> It is unusual to have cases not associated with block of the switch.
>>>>> Unusual to me means, "not used commonly in most code".
>>>>>
>>>>> Since you are jumping into the loop, might make more sense as a do { } while()
>>>> I find this a very odd coding practice and I would suggest we not do this, unless it gives us some great performance gain.
>>>>
>>>> Keith
>>> The loop unwinding could give performance gain. The only problem is the
>>> switch/loop combination makes people feel weird at the first glance but
>>> soon they will grasp this style. Since this is inherited from old famous
>>> duff's device, i prefer to keep this style which saves lines of code.
>> Please add a comment to the code to reflex where this style came from and why you are using it, would be very handy here.
> +1
> At least the words "loop" and "unwinding" may be helpful to some readers.
OK. Will add more context. Probably the wiki page for duff's device
should be updated on how to handle the case count is zero, using while()
or add one line to check.
> Thanks
>
next prev parent reply other threads:[~2015-12-22 1:58 UTC|newest]
Thread overview: 54+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-12-13 23:35 [dpdk-dev] [PATCH 0/2] provide rte_pktmbuf_alloc_bulk API and call it in vhost dequeue Huawei Xie
2015-12-13 23:35 ` [dpdk-dev] [PATCH 1/2] mbuf: provide rte_pktmbuf_alloc_bulk API Huawei Xie
2015-12-13 23:35 ` [dpdk-dev] [PATCH 2/2] vhost: call rte_pktmbuf_alloc_bulk in vhost dequeue Huawei Xie
2015-12-14 1:14 ` [dpdk-dev] [PATCH v2 0/2] provide rte_pktmbuf_alloc_bulk API and call it " Huawei Xie
2015-12-14 1:14 ` [dpdk-dev] [PATCH v2 1/2] mbuf: provide rte_pktmbuf_alloc_bulk API Huawei Xie
2015-12-17 6:41 ` Yuanhan Liu
2015-12-17 15:42 ` Ananyev, Konstantin
2015-12-18 2:17 ` Yuanhan Liu
2015-12-18 5:01 ` Stephen Hemminger
2015-12-18 5:21 ` Yuanhan Liu
2015-12-18 7:10 ` Xie, Huawei
2015-12-18 10:44 ` Ananyev, Konstantin
2015-12-18 17:32 ` Stephen Hemminger
2015-12-18 19:27 ` Wiles, Keith
2015-12-21 15:21 ` Xie, Huawei
2015-12-21 17:20 ` Wiles, Keith
2015-12-21 21:30 ` Thomas Monjalon
2015-12-22 1:58 ` Xie, Huawei [this message]
2015-12-21 22:34 ` Don Provan
2015-12-21 12:25 ` Xie, Huawei
2015-12-14 1:14 ` [dpdk-dev] [PATCH v2 2/2] vhost: call rte_pktmbuf_alloc_bulk in vhost dequeue Huawei Xie
2015-12-17 6:41 ` Yuanhan Liu
2015-12-22 16:17 ` [dpdk-dev] [PATCH v3 0/2] provide rte_pktmbuf_alloc_bulk API and call it " Huawei Xie
2015-12-22 16:17 ` [dpdk-dev] [PATCH v3 1/2] mbuf: provide rte_pktmbuf_alloc_bulk API Huawei Xie
2015-12-23 18:37 ` Stephen Hemminger
2015-12-23 18:49 ` Ananyev, Konstantin
2015-12-24 1:33 ` Xie, Huawei
2015-12-22 16:17 ` [dpdk-dev] [PATCH v3 2/2] vhost: call rte_pktmbuf_alloc_bulk in vhost dequeue Huawei Xie
2015-12-23 11:22 ` linhaifeng
2015-12-23 11:39 ` Xie, Huawei
2015-12-22 23:05 ` [dpdk-dev] [PATCH v4 0/2] provide rte_pktmbuf_alloc_bulk API and call it " Huawei Xie
2015-12-22 23:05 ` [dpdk-dev] [PATCH v4 1/2] mbuf: provide rte_pktmbuf_alloc_bulk API Huawei Xie
2015-12-22 23:05 ` [dpdk-dev] [PATCH v4 2/2] vhost: call rte_pktmbuf_alloc_bulk in vhost dequeue Huawei Xie
2015-12-27 16:38 ` [dpdk-dev] [PATCH v5 0/2] provide rte_pktmbuf_alloc_bulk API and call it " Huawei Xie
2015-12-27 16:38 ` [dpdk-dev] [PATCH v5 1/2] mbuf: provide rte_pktmbuf_alloc_bulk API Huawei Xie
2015-12-27 16:38 ` [dpdk-dev] [PATCH v5 2/2] vhost: call rte_pktmbuf_alloc_bulk in vhost dequeue Huawei Xie
2016-01-26 17:03 ` [dpdk-dev] [PATCH v6 0/2] provide rte_pktmbuf_alloc_bulk API and call it " Huawei Xie
2016-01-26 17:03 ` [dpdk-dev] [PATCH v6 1/2] mbuf: provide rte_pktmbuf_alloc_bulk API Huawei Xie
2016-01-27 13:56 ` Panu Matilainen
2016-02-03 17:23 ` Olivier MATZ
2016-02-22 14:49 ` Xie, Huawei
2016-02-23 5:35 ` Xie, Huawei
2016-02-24 12:11 ` Panu Matilainen
2016-02-24 13:23 ` Ananyev, Konstantin
2016-02-26 7:39 ` Xie, Huawei
2016-02-26 8:45 ` Olivier MATZ
2016-02-29 10:51 ` Panu Matilainen
2016-02-29 16:14 ` Thomas Monjalon
2016-02-26 8:55 ` Olivier MATZ
2016-02-26 9:07 ` Xie, Huawei
2016-02-26 9:18 ` Olivier MATZ
2016-01-26 17:03 ` [dpdk-dev] [PATCH v6 2/2] vhost: call rte_pktmbuf_alloc_bulk in vhost dequeue Huawei Xie
2016-02-28 12:44 ` [dpdk-dev] [PATCH v7] mbuf: provide rte_pktmbuf_alloc_bulk API Huawei Xie
2016-02-29 16:27 ` Thomas Monjalon
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=C37D651A908B024F974696C65296B57B4C54FBA3@SHSMSX101.ccr.corp.intel.com \
--to=huawei.xie@intel.com \
--cc=dev@dpdk.org \
--cc=thomas.monjalon@6wind.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).