On Fri, Apr 3, 2015 at 8:39 PM, Bill Fischofer
<bill.fischo...@linaro.org> wrote:
> The pool specified on odp_pktio_open() is simply the default pool to use if
> a PMR doesn't provide a more specific match to a CoS.  In the latter case
> the pool associated with the CoS applies.

Should we update the doxygen documentation of odp_pktio_open to
mention the pool is only used by the default CoS?

>
> On Fri, Apr 3, 2015 at 12:32 PM, Benoît Ganne <bga...@kalray.eu> wrote:
>>
>> Hi Bill,
>>
>> Thanks for the feedback. It was more or less what I was thinking about,
>> but the fact that pktio_open() took a pool in parameter made me think it was
>> per-iface.
>>
>> Thanks,
>> Ben.
>>
>>
>> Sent from Samsung Mobile.
>>
>>
>> -------- Original message --------
>> From: Bill Fischofer
>> Date:03/04/2015 18:14 (GMT+01:00)
>> To: Benoît Ganne
>> Cc: LNG ODP Mailman List
>> Subject: Re: [lng-odp] ODP port to a new architecture
>>
>> Hi Benoît,
>>
>> What you describe seems quite doable with the current ODP API set,
>> however, we're always looking to better refine them to best match the
>> capabilities of the various platforms that support ODP--especially those
>> that embody novel HW architectures--so I'd encourage you to participate in
>> the mailing list and our regular weekly calls that Maxim has already
>> mentioned.
>>
>> The ODP classifier APIs are intended to be very general and not tied to
>> specific embodiments.  PMRs can be associated with PktIO objects, but that's
>> not a requirement.  The intended flow is that packets are matched against
>> PMRs to find the most-specific match and that process assigns a CoS to the
>> arriving packet.  A CoS, in turn, specifies both the pool that should be
>> used to store the packet as well as the queue (or queue group) that it
>> should be added to for scheduling.  Queue groups are not part of ODP v1.0
>> but provide a means of distributing flow-related packets to individual
>> related queues that form the queue group.  We expect to be adding this
>> capability to the APIs this year.
>>
>> So it sound like you'd want a pool per address space and use PMRs to sort
>> arriving packets into a set of CoSes that map to the appropriate per-AS
>> pool.
>>
>> Bill
>>
>> On Fri, Apr 3, 2015 at 10:20 AM, Benoît Ganne <bga...@kalray.eu> wrote:
>>>
>>> Hi Maxim, thanks for your quick answer!
>>>
>>>> Glad to see new people interesting ODP. There are many ways to
>>>> participate: mailing list, regular public meeting on Tuesday or be a
>>>> member of Linaro LNG team with it's benefits (drive next API
>>>> development, use LNG infrastructure, set and prioritize tasks).
>>>
>>>
>>> I will join Tuesday meetings.
>>> Regarding Linaro membership, I couldn't find much information on the
>>> Linaro website. Do you have pointers about what is required and what it
>>> means? One of my concern is that our architecture is not ARM-based. ODP is
>>> ISA-agnostic, but not sure about Linaro though.
>>>
>>>> If you go to http://www.opendataplane.org/ you can find different repos
>>>> for odp.
>>>
>>> [...]
>>>>
>>>> So the best thing it to start with looking at linux-generic
>>>> implementation, then branch it out to your local tree then start
>>>> implement pktio and queue function. As reference how to do it best you
>>>> can take a look at TI Keystone2 implementation or DPDK or Netmap.
>>>
>>>
>>> Yes, this is what we started to do. And the only real issue we saw so far
>>> is this pktio <--> pool association.
>>>
>>>> About address space I think you should be ok with implementation
>>>> odp_shm_reserve() function which should take care about all your
>>>> internal address spaces.
>>>
>>>
>>> Right. The packet pool API itself fits nicely our needs.
>>>
>>>> Then you can create bunch of odp pools for each segment, then call
>>>> odp_pktio_open() for each pool  and  then bind it to queue with
>>>> odp_queue_create(). Does that work for you?
>>>> Or might be in you configuration we should consider segmented pool
>>>> support. I.e. if pool is represented with several memory chunks.
>>>
>>>
>>> Not sure wether it could fix our issue. I will try to better explain,
>>> here is what we have on the packet RX path:
>>>             +------------+
>>>             | DISPATCHER |
>>> iface0 ---> |     X      | ---> address space 0
>>> iface1 ---> |    PMR     | ---> address space 1
>>> iface2 ---> |    CoS     |          ...
>>> iface3 ---> | Scheduling | ---> address space N
>>>             +------------+
>>>
>>> iface[0-3] are physical Ethernet interfaces. The DISPATCHER block receive
>>> packets from various interfaces, and is responsible of classifying (ie
>>> attributing a CoS) to incoming packets based on PMR. When the packet CoS is
>>> determined, it will schedule it in CoS-aware and flow-aware manner. The
>>> DISPATCHER can schedule packets to any address space.
>>> The packets are not buffered by the DISPATCHER. They go through it, and
>>> they will be buffered for processing in the target address space.
>>> What does it means is that:
>>>  - packet pools are created in the various address spaces
>>>  - each configured CoS can be scheduled (in a flow-aware manner) to any
>>> address spaces, or only in some of them (this is user-defined)
>>>
>>> My initial idea was to consider each iface as a pktio, create queues in
>>> the various address spaces, and associate a CoS to a group of queues. When
>>> the DISPATCHER determines the packet CoS, it can be schedule it in one of
>>> the queue belonging to the CoS queue group, and the packet will end-up in
>>> the address space of the selected queue.
>>> But if I do that, I need to associate the packet pool to a queue rather
>>> than a pktio. A packet would have the following path: ingress pktio --> PMR
>>> --> CoS --> queue --> pool.
>>>
>>> Now, your proposal is to open a pktio in each address space. But it looks
>>> to me that it means that packets from different CoS will use the same pool?
>>> I would like to avoid that.
>>> Moreover as PMR and CoS are defined per pktio, this would mean that each
>>> address space could have its own PMR and CoS setup. This won't map well on
>>> our HW.
>>>
>>> Thanks,
>>> ben
>>>
>>> --
>>> Benoît GANNE
>>> Field Application Engineer, Kalray
>>> +33 (0)648 125 843
>>> _______________________________________________
>>> lng-odp mailing list
>>> lng-odp@lists.linaro.org
>>> https://lists.linaro.org/mailman/listinfo/lng-odp
>>
>>
>
>
> _______________________________________________
> lng-odp mailing list
> lng-odp@lists.linaro.org
> https://lists.linaro.org/mailman/listinfo/lng-odp
>
_______________________________________________
lng-odp mailing list
lng-odp@lists.linaro.org
https://lists.linaro.org/mailman/listinfo/lng-odp

Reply via email to