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]