On 10/9/24 9:07 AM, Pavel Begunkov wrote: > On 10/9/24 00:10, Joe Damato wrote: >> On Mon, Oct 07, 2024 at 03:15:48PM -0700, David Wei wrote: >>> This patchset adds support for zero copy rx into userspace pages using >>> io_uring, eliminating a kernel to user copy. >>> >>> We configure a page pool that a driver uses to fill a hw rx queue to >>> hand out user pages instead of kernel pages. Any data that ends up >>> hitting this hw rx queue will thus be dma'd into userspace memory >>> directly, without needing to be bounced through kernel memory. 'Reading' >>> data out of a socket instead becomes a _notification_ mechanism, where >>> the kernel tells userspace where the data is. The overall approach is >>> similar to the devmem TCP proposal. >>> >>> This relies on hw header/data split, flow steering and RSS to ensure >>> packet headers remain in kernel memory and only desired flows hit a hw >>> rx queue configured for zero copy. Configuring this is outside of the >>> scope of this patchset. >> >> This looks super cool and very useful, thanks for doing this work. >> >> Is there any possibility of some notes or sample pseudo code on how >> userland can use this being added to Documentation/networking/ ? > > io_uring man pages would need to be updated with it, there are tests > in liburing and would be a good idea to add back a simple exapmle > to liburing/example/*. I think it should cover it man pages for sure, but +1 to the example too. Just a basic thing would get the point across, I think. -- Jens Axboe