On Mon, May 21, 2018 at 05:04:21PM +0800, Jason Wang wrote: > Hi all: > > We do not support XDP batching for TUN since it can only receive one > packet a time from vhost_net. This series tries to remove this > limitation by: > > - introduce a TUN specific msg_control that can hold a pointer to an > array of XDP buffs > - try copy and build XDP buff in vhost_net > - store XDP buffs in an array and submit them once for every N packets > from vhost_net > - since TUN can only do native XDP for datacopy packet, to simplify > the logic, split datacopy out logic and only do batching for > datacopy.
I like how this rework looks. Pls go ahead and repost as non-RFC. > With this series, TX PPS can improve about 34% from 2.9Mpps to > 3.9Mpps when doing xdp_redirect_map between TAP and ixgbe. > > Thanks > > Jason Wang (12): > vhost_net: introduce helper to initialize tx iov iter > vhost_net: introduce vhost_exceeds_weight() > vhost_net: introduce vhost_has_more_pkts() > vhost_net: split out datacopy logic > vhost_net: batch update used ring for datacopy TX > tuntap: enable premmption early > tuntap: simplify error handling in tun_build_skb() > tuntap: tweak on the path of non-xdp case in tun_build_skb() > tuntap: split out XDP logic > vhost_net: build xdp buff > vhost_net: passing raw xdp buff to tun > vhost_net: batch submitting XDP buffers to underlayer sockets > > drivers/net/tun.c | 226 +++++++++++++++++++++++++++---------- > drivers/vhost/net.c | 297 > ++++++++++++++++++++++++++++++++++++++++++++----- > include/linux/if_tun.h | 7 ++ > 3 files changed, 444 insertions(+), 86 deletions(-) > > -- > 2.7.4