Thread (38 messages) 38 messages, 7 authors, 2015-12-08

[PATCH 00/13] mvneta Buffer Management and enhancements

From: Marcin Wojtas <hidden>
Date: 2015-12-08 10:56:31
Also in: lkml, netdev

Hi David,

2015-12-04 21:15 GMT+01:00 Florian Fainelli [off-list ref]:
(no top posting please)

On 02/12/15 00:26, Marcin Wojtas wrote:
quoted
Hi Florian,

Can you please describe in more details, what would you expect from
such special abstraction layer regarding buffer managers? I'd like to
understand more of your expectations and evaluate possible work.
Well, something along these lines:

- have the ability to register a particular pool (location + number of
buffers) in a way that is relatively device agnostic (initialization
would of course be device specific)

- provide a set of buffer management APIs like those you proposed below,
and have some generic code that leverages what
drivers/net/ethernet/sun/niu.c does for instance

- introduce a netdev_alloc_skb_from_pool() or something like that which
would limit the amount of code to change in your network driver to
benefit from that feature so based

I am sure David would be able to suggest more detailed API.
As we're getting closer to what a generic BM part, could you please
share your thoughts on the possible API?

quoted
quoted
quoted
What kind of abstraction and helpers do you mean? Some kind of API
(e.g. bm_alloc_buffer, bm_initialize_ring bm_put_buffer,
bm_get_buffer), which would be used by platform drivers (and specific
aplications if one wants to develop on top of the kernel)?

In general, what is your top-view of such solution and its cooperation
with the drivers?
The tricky parts involved have to do with allocating pages for the
buffer pools and minimizing the number of atomic refcounting
operations on those pages for for the puts and gets, particularly
around buffer replenish runs.

For example, if you're allocating a page for a buffer pool the device
will chop into N (for any N < PAGE_SIZE) byte pieces, you can
eliminate many atomic operations.
Do you think you can point to anything similar that could be a sort of
reference for such solution?

Best regards,
Marcin
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help