Darren Reed wrote:
Min Miles Xu wrote:
...
Hi Jason,

I've been working on the buffer management on the rx side, consolidating the dma rx buffer pool of all the GLD instances (port/ring). The driver can simply ask for a number of buffer from the framework and use it, pass it up to the stack. It's the framework's responsibility to recycle the buffer returned. So everything is transparent to the drivers. Another prominent advantage of doing so is that the buffer can be shared among instances. New Intel 10G NICs have 128 rings. The existing way of allocating buffer for each ring is a big waste of memory. I already have a prototype for e1000g and ixgbe. But I need some more time to conduct experiments and refine it. Then I will handle it out for reviews. The code to be integrated may be applied to ixgbe only, then applies to other NIC drivers.

Something that we need to do work on is zero-copy receive.

And for it to be available with all socket types.

In this case, all the buffers are mapped into the kernel memory
space from the application memory space.

At present we only have a limited form of zero-copy transmit for
TCP for some special network interfaces.
I agree. I think you expect to see something like the packet mmap from the user space to the kernel space. Well, currently my work mainly on the driver side. The work covers how to maintain the pool, provide buffer to the drivers, pass it up and get it back from the stack. So the buffer could have been mapped to the userland before returning. It's about different life periods of the buffer.

Miles Xu

Darren


_______________________________________________
networking-discuss mailing list
[email protected]

Reply via email to