Re: [PATCH net-next] tuntap: XDP_TX can use native XDP

From: Jason Wang
Date: Fri Mar 16 2018 - 02:46:34 EST




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
here.

Thanks
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().

Thanks