From: Vlad Zolotarov <vladz-RmZWMc9puTNJc61us3aD9laTQe2KTcn/@public.gmane.org>
To: "Ananyev,
Konstantin"
<konstantin.ananyev-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org>,
Olivier MATZ
<olivier.matz-pdR9zngts4EAvxtiuMwx3w@public.gmane.org>,
"dev-VfR2kkLFssw@public.gmane.org"
<dev-VfR2kkLFssw@public.gmane.org>
Subject: Re: [PATCH v6 3/3] ixgbe: Add LRO support
Date: Fri, 13 Mar 2015 14:12:47 +0200 [thread overview]
Message-ID: <5502D43F.3@cloudius-systems.com> (raw)
In-Reply-To: <2601191342CEEE43887BDE71AB977258213F5EC4-pww93C2UFcwu0RiL9chJVbfspsVTdybXVpNB7YpNyf8@public.gmane.org>
On 03/13/15 13:28, Ananyev, Konstantin wrote:
> Hi Olivier,
>
>> -----Original Message-----
>> From: Olivier MATZ [mailto:olivier.matz-pdR9zngts4EAvxtiuMwx3w@public.gmane.org]
>> Sent: Friday, March 13, 2015 9:08 AM
>> To: Vlad Zolotarov; Ananyev, Konstantin; dev-VfR2kkLFssw@public.gmane.org
>> Subject: Re: [dpdk-dev] [PATCH v6 3/3] ixgbe: Add LRO support
>>
>> Hi Vlad,
>>
>> On 03/11/2015 05:54 PM, Vlad Zolotarov wrote:
>>>>>> About the existing RX/TX functions and PPC support:
>>>>>> Note that all of them were created before PPC support for DPDK was
>>>>>> introduced.
>>>>>> At that moment only IA was supported.
>>>>>> That's why in some places where you would expect to see 'mb()' there
>>>>>> are 'volatile' and/or ' rte_compiler_barrier' instead.
>>>>>> Why all that places wasn't updated when PPC support was added -
>>>>>> that's another question.
>>>>>> From my understanding - with current implementation some of DPDK
>>>>>> PMDs RX/TX functions and rte_ring wouldn't work correctly
>>>>> on PPC.
>>>>>> So, I suppose we need to decide for ourselves - do we really want to
>>>>>> support PPC and other architectures with non-IA memory
>>>>> model or not?
>>>>>> If not, then I think we don't need any mb()s inside recv_pkts_lro()
>>>>>> - just rte_compiler_barrier seems enough, and no point to
>>>>> complain about
>>>>>> it in comments.
>>>>>> If yes - then why to introduce a new function with a known potential
>>>>>> bug?
>>>>> In order to introduce a new function with the proper implementation or
>>>>> to fix any other places with the similar weakness I would need a proper
>>>>> tools like a proper platform-dependent barrier-macros similar to
>>>>> smp_Xmb() Linux macros that reduce to a compiler barrier where
>>>>> appropriate or to a proper memory fence where needed.
>>>> I understand that.
>>>> Let's add new macro for that: rte_smp_Xmb() or something,
>>>> so it would be just rte_compiler_barrier() for x86 and a proper mb()
>>>> for PPC.
>>> There was an idea to use the C11 built-in memory barriers. I suggest we
>>> open a separate discussion about that and add these and the appropriate
>>> fixes in a separate series. There are quite a few places to fix anyway,
>>> which are currently broken on PPC so this patch doesn't make things any
>>> worse. However adding a new memory barrier doesn't belong to an LRO
>>> functionality and thus to this series.
>> This is an interesting discussion. Just for reference, I submitted a
>> patch on this topic but it was probably too early as only Intel
>> architecture was supported at that time.
>>
>> See http://dpdk.org/ml/archives/dev/2014-May/002597.html
> I do remember that conversation :)
> At that moment, as nothing except IA wasn't supported, I feel it was not needed.
> Though now, if we do want to support PPC and other architectures with weak memory model,
> I think we do need to introduce some platform dependent set of Xmb() macros.
> See http://dpdk.org/ml/archives/dev/2014-October/006729.html
>
> Actually while thinking about it once again:
> Is there any good use for rte_compiler_barrier() for PPC memory model?
> I can't think about any.
> So I wonder can't we just make for PPC:
> #define rte_compiler_barrier rte_mb
> While keeping it as it is for IA.
> Would save us from searching/replacing though all the code.
I wonder why should we invent a wheel? Like Avi has proposed we may use
the existing standard C library primitives for that. See this
http://en.cppreference.com/w/c/atomic. I don't know what's the state of
icc in this area though... ;)
Pros:
* Zero maintenance.
* Multi-platform support.
* It seems that this is the direction the industry is going to (as
opposed to the discussed above mb(), rmb(), wmb() model).
Cons:
* The model is a bit different from what most of the kernel
programmers used to.
* The current code adaptation would be a bit more painful (due to
first "cons").
I think this could be a very nice move. For a user space for sure. The
open question is a KNI component. I don't know how much code is shared
between kernel and user space DPDK code but if there isn't much - then
we may still go for a built-in C atomics primitives in a user space and
do whatever we choose in the KNI...
>
> Konstantin
>
>
>
>> Regards,
>> Olivier
next prev parent reply other threads:[~2015-03-13 12:12 UTC|newest]
Thread overview: 18+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-03-09 19:07 [PATCH v6 0/3]: Add LRO support to ixgbe PMD Vlad Zolotarov
[not found] ` <1425928037-28732-1-git-send-email-vladz-RmZWMc9puTNJc61us3aD9laTQe2KTcn/@public.gmane.org>
2015-03-09 19:07 ` [PATCH v6 1/3] ixgbe: Cleanups Vlad Zolotarov
[not found] ` <1425928037-28732-2-git-send-email-vladz-RmZWMc9puTNJc61us3aD9laTQe2KTcn/@public.gmane.org>
2015-03-09 20:15 ` Ananyev, Konstantin
2015-03-09 19:07 ` [PATCH v6 2/3] ixgbe: Code refactoring Vlad Zolotarov
2015-03-09 19:07 ` [PATCH v6 3/3] ixgbe: Add LRO support Vlad Zolotarov
[not found] ` <1425928037-28732-4-git-send-email-vladz-RmZWMc9puTNJc61us3aD9laTQe2KTcn/@public.gmane.org>
2015-03-10 0:30 ` Ananyev, Konstantin
[not found] ` <2601191342CEEE43887BDE71AB977258213F5039-pww93C2UFcwu0RiL9chJVbfspsVTdybXVpNB7YpNyf8@public.gmane.org>
2015-03-10 13:22 ` Vlad Zolotarov
[not found] ` <54FEF011.6010205-RmZWMc9puTNJc61us3aD9laTQe2KTcn/@public.gmane.org>
2015-03-10 20:09 ` Ananyev, Konstantin
[not found] ` <2601191342CEEE43887BDE71AB977258213F5475-pww93C2UFcwu0RiL9chJVbfspsVTdybXVpNB7YpNyf8@public.gmane.org>
2015-03-10 21:36 ` Vlad Zolotarov
[not found] ` <54FF63CB.4040506-RmZWMc9puTNJc61us3aD9laTQe2KTcn/@public.gmane.org>
2015-03-11 16:32 ` Ananyev, Konstantin
[not found] ` <2601191342CEEE43887BDE71AB977258213F589B-pww93C2UFcwu0RiL9chJVbfspsVTdybXVpNB7YpNyf8@public.gmane.org>
2015-03-11 16:54 ` Vlad Zolotarov
[not found] ` <5500734A.7060800-RmZWMc9puTNJc61us3aD9laTQe2KTcn/@public.gmane.org>
2015-03-13 9:07 ` Olivier MATZ
[not found] ` <5502A8E8.3010004-pdR9zngts4EAvxtiuMwx3w@public.gmane.org>
2015-03-13 11:28 ` Ananyev, Konstantin
[not found] ` <2601191342CEEE43887BDE71AB977258213F5EC4-pww93C2UFcwu0RiL9chJVbfspsVTdybXVpNB7YpNyf8@public.gmane.org>
2015-03-13 12:12 ` Vlad Zolotarov [this message]
2015-03-10 17:51 ` Vlad Zolotarov
2015-03-16 18:26 ` Vlad Zolotarov
[not found] ` <55072056.80801-RmZWMc9puTNJc61us3aD9laTQe2KTcn/@public.gmane.org>
2015-03-18 0:31 ` Ananyev, Konstantin
[not found] ` <2601191342CEEE43887BDE71AB977258213F6FA4-pww93C2UFcwu0RiL9chJVbfspsVTdybXVpNB7YpNyf8@public.gmane.org>
2015-03-18 10:29 ` Vlad Zolotarov
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=5502D43F.3@cloudius-systems.com \
--to=vladz-rmzwmc9putnjc61us3ad9latqe2ktcn/@public.gmane.org \
--cc=dev-VfR2kkLFssw@public.gmane.org \
--cc=konstantin.ananyev-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org \
--cc=olivier.matz-pdR9zngts4EAvxtiuMwx3w@public.gmane.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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.