On 12/11/20 11:45 AM, Jakub Kicinski wrote: > Ack, these patches are not exciting (to me), so I'm wondering if there > is a better way. The only reason NIC would have to understand a ULP for > ZC is to parse out header/message lengths. There's gotta be a way to > pass those in header options or such... > > And, you know, if we figure something out - maybe we stand a chance > against having 4 different zero copy implementations (this, TCP, > AF_XDP, netgpu) :(
AF_XDP is for userspace IP/TCP/packet handling. netgpu is fundamentally kernel stack socket with zerocopy direct to userspace buffers. Yes, it has more complications like the process is running on a GPU, but essential characteristics are header / payload split, a kernel stack managed socket, and dedicated H/W queues for the socket and those are all common to what the nvme patches are doing. So, can we create a common framework for those characteristics which enables other use cases (like a more generic Rx zerocopy)?