tap: XDP support
authorJason Wang <jasowang@redhat.com>
Fri, 11 Aug 2017 11:41:18 +0000 (19:41 +0800)
committerDavid S. Miller <davem@davemloft.net>
Mon, 14 Aug 2017 02:56:07 +0000 (19:56 -0700)
commit761876c857cb2ef8489fbee01907151da902af91
tree430b242ed12977a98f3fa3282712275039adb4a7
parent7c4974786f4794178f04e96318fc3b2f2850cbc6
tap: XDP support

This patch tries to implement XDP for tun. The implementation was
split into two parts:

- fast path: small and no gso packet. We try to do XDP at page level
  before build_skb(). For XDP_TX, since creating/destroying queues
  were completely under control of userspace, it was implemented
  through generic XDP helper after skb has been built. This could be
  optimized in the future.
- slow path: big or gso packet. We try to do it after skb was created
  through generic XDP helpers.

Test were done through pktgen with small packets.

xdp1 test shows ~41.1% improvement:

Before: ~1.7Mpps
After:  ~2.3Mpps

xdp_redirect to ixgbe shows ~60% improvement:

Before: ~0.8Mpps
After:  ~1.38Mpps

Suggested-by: Michael S. Tsirkin <mst@redhat.com>
Signed-off-by: Jason Wang <jasowang@redhat.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/tun.c