<html><head></head><body><div style="font-family: Verdana;font-size: 12.0px;"><div>
<div>
<div>&gt; Step 0: Define &quot;really fast&quot;. (I work with boxes that have LACP bonds of<br/>
&gt; 2x40gbit ethernet interfaces - your v4l2 device is probably the slow link at<br/>
&gt; that point, and sendfile won&#39;t matter).</div>
</div>

<div>&nbsp;</div>

<div>Yes, I previously checked the performance boost. It is a 100MBit/s Ethernet connection on an armv7.</div>

<div>- send ~70MBit/s, 50% CPU usage, the bottleneck is in tcp_sendmsg -&gt; __copy_from_user</div>

<div>- sendfile ~90MBit/s, but almost 0% CPU Usage -&gt; uses the dma engine</div>

<div>&nbsp;</div>

<div>That&#39;s why I want to use sendfile. I need a mechanism to put the memory buffer into a filedescriptor, sendfile can handle.</div>

<div>v4l2&#39;s ioctl VIDIOC_EXPBUF exports a dmafd, which is not suitable. sendfile returns with error -29, which is ESPIPE. Looking into sendfile&#39;s kernel source the if conndition<strong> !(in.file-&gt;f_mode &amp; FMODE_PREAD)</strong> causes these error, because&nbsp;FMODE_PREAD is not set in the dmafd. How to make the dmafd suitable?</div>

<div>&nbsp;</div>

<div>http://elixir.free-electrons.com/linux/v4.0/source/fs/read_write.c#L1276</div>

<div>&nbsp;</div>

<div>&nbsp;</div>

<div>
<div>&nbsp;</div>
</div>
</div></div></body></html>