Hi, Here's an updated implementation of tcp network splice receive support. It actually works for me now, no data corruption seen. For the original announcement and how to test it, see: http://marc.info/?l=linux-netdev&m=118103093400770&w=2 I hang on to the original skb by creating a clone of it and holding references to that. I really don't need a clone, but tcp_read_sock() is not being very helpful by calling sk_eat_skb() which blissfully ignores any reference counts and uncondtionally frees the skb - why is that?? The clone works around that issue. The current code also gets rid of the data_ready hack, and it should now handle linear/fragments/fraglist in the skb just fine. Thanks to Olaf for providing review of that stuff! Patches are against the #splice branch of the block repo, "official" url of that is: git://git.kernel.dk/data/git/linux-2.6-block.git/ and it's based on Linus main tree. Let me know if I should supply netdev branch patches instead, or even just provide a rolled up patch (or patch series) for anyone curious to test or play with it. -- Jens Axboe