On 04/03/15 11:33, Benoît Ganne wrote:
Hi all,

At Kalray we are designing a manycore processor for packet processing, and we are currently developing our SDK. We really like the ODP approach and we want to implement ODP on our architecture.

We know the API and architecture is still a work-in-progress, but we are ok with that and would like to participate. What is the best way to get involved?

A concrete problem we are facing right now with ODP is that our architecture has separate address spaces (up to 20). I won't discuss the merits or drawbacks of this approach here (if some of you are interested I could go in more details later), but it means our packet buffers are not allocated per interface (because the same interfaces can target different address spaces), but rather per queue.
Basically what we are currently thinking about is:
- allocate 1 queue per destination (where a destination is basically an address space)
 - regroup all those queues in a queue group
 - associate this queue group to CoS
Then when the dispatch/queueing/scheduling engine match this CoS for a flow, it will dispatch those flow packets to a queue in the queue group. So we would like to be able to associate packet pools to queues rather than per interface.

Any feedback appreciated :)

Thanks,
ben

Hello Benoît,

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).

If you go to http://www.opendataplane.org/ you can find different repos for odp. https://git.linaro.org/lng/odp.git - is the main repo for API development, linux-generic implementation and validation test. Most recent stable tag is v1.0.2.

That odp.git generates doxygen API doc with make doxygen-html or doxygen-pdf commands, we have it here:
http://docs.opendataplane.org/linux-generic-doxygen-html/index.html

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.

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. 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.

Best regards,
Maxim.

_______________________________________________
lng-odp mailing list
lng-odp@lists.linaro.org
https://lists.linaro.org/mailman/listinfo/lng-odp

Reply via email to