On Wed, Oct 09, 2024 at 04:07:01PM +0100, 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 Ah, that sounds amazing to me! I thought that suggesting that might be too much work ;) which is why I had suggested Documentation/, but man page updates would be excellent!