> > > > I still fail to see how this is not an issue with IOAT - if you want to > DMA into the user buffer, you better have that pinned and locked doe the > duration of the DMA transfer.
I checked and you are right! there is pinning of the pages ( http://lxr.linux.no/linux/net/ipv4/tcp.c#L1158). But i wasn't entirely wrong too: for IOAT-less zero copy, you have to mark the pages as COW and wait until the data has been acked (possibly retransmitting data etc). With IOAT you pin for a very short while. Also, there is a sysctl threshold called tcp_dma_copybreak that helps avoid pinning small buffers. If you want to read some code, look for the CONFIG_NET_DMA and also the ioat dma driver at drivers/dma/ioatdma.c Cheers, > > Gilad >
