On 2018年03月15日 21:32, Michael S. Tsirkin wrote:
On Thu, Mar 15, 2018 at 04:39:25PM +0800, Jason Wang wrote:

On 2018年03月14日 11:37, Michael S. Tsirkin wrote:
                        return NULL;
                case XDP_TX:
-                       xdp_xmit = true;
-                       /* fall through */
+                       get_page(alloc_frag->page);
+                       alloc_frag->offset += buflen;
+                       if (tun_xdp_xmit(tun->dev, &xdp))
+                               goto err_redirect;
+                       tun_xdp_flush(tun->dev);
Why do we have to flush here though?
It might be a good idea to document the reason in a code comment.

ndo_xdp_xmit() does not touch doorbell, so we need a ndo_xdp_flush() here.
It's the assumption of XDP API I think, so not sure it's worth to mention it

Can't one flush we called after multiple xmit calls?

We can and could be another patch on top. But I want to unify it with the batching of XDP_REDIRECT by e.g let vhost submit more than one packets through msg.control in sendmsg().


Reply via email to