[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-Id: <cover.1610765285.git.xuanzhuo@linux.alibaba.com>
Date: Sat, 16 Jan 2021 10:59:21 +0800
From: Xuan Zhuo <xuanzhuo@...ux.alibaba.com>
To: netdev@...r.kernel.org
Cc: "Michael S. Tsirkin" <mst@...hat.com>,
Jason Wang <jasowang@...hat.com>,
"David S. Miller" <davem@...emloft.net>,
Jakub Kicinski <kuba@...nel.org>,
Björn Töpel <bjorn.topel@...el.com>,
Magnus Karlsson <magnus.karlsson@...el.com>,
Jonathan Lemon <jonathan.lemon@...il.com>,
Alexei Starovoitov <ast@...nel.org>,
Daniel Borkmann <daniel@...earbox.net>,
Jesper Dangaard Brouer <hawk@...nel.org>,
John Fastabend <john.fastabend@...il.com>,
Andrii Nakryiko <andrii@...nel.org>,
Martin KaFai Lau <kafai@...com>,
Song Liu <songliubraving@...com>, Yonghong Song <yhs@...com>,
KP Singh <kpsingh@...nel.org>,
virtualization@...ts.linux-foundation.org, bpf@...r.kernel.org
Subject: [PATCH net-next v2 0/7] virtio-net support xdp socket zero copy xmit
XDP socket is an excellent by pass kernel network transmission framework. The
zero copy feature of xsk (XDP socket) needs to be supported by the driver. The
performance of zero copy is very good. mlx5 and intel ixgbe already support this
feature, This patch set allows virtio-net to support xsk's zerocopy xmit
feature.
And xsk's zerocopy rx has made major changes to virtio-net, and I hope to submit
it after this patch set are received.
Compared with other drivers, virtio-net does not directly obtain the dma
address, so I first obtain the xsk page, and then pass the page to virtio.
When recycling the sent packets, we have to distinguish between skb and xdp.
Now we have to distinguish between skb, xdp, xsk. So the second patch solves
this problem first.
The last four patches are used to support xsk zerocopy in virtio-net:
1. support xsk enable/disable
2. realize the function of xsk packet sending
3. implement xsk wakeup callback
4. set xsk completed when packet sent done
---------------- Performance Testing ------------
The udp package tool implemented by the interface of xsk vs sockperf(kernel udp)
for performance testing:
xsk zero copy in virtio-net:
CPU PPS MSGSIZE
28.7% 3833857 64
38.5% 3689491 512
38.9% 2787096 1456
xsk without zero copy in virtio-net:
CPU PPS MSGSIZE
100% 1916747 64
100% 1775988 512
100% 1440054 1456
sockperf:
CPU PPS MSGSIZE
100% 713274 64
100% 701024 512
100% 695832 1456
Xuan Zhuo (7):
xsk: support get page for drv
virtio-net, xsk: distinguish XDP_TX and XSK XMIT ctx
xsk, virtio-net: prepare for support xsk zerocopy xmit
virtio-net, xsk: support xsk enable/disable
virtio-net, xsk: realize the function of xsk packet sending
virtio-net, xsk: implement xsk wakeup callback
virtio-net, xsk: set xsk completed when packet sent done
drivers/net/virtio_net.c | 559 +++++++++++++++++++++++++++++++++++++++-----
include/linux/netdevice.h | 1 +
include/net/xdp_sock_drv.h | 10 +
include/net/xsk_buff_pool.h | 1 +
net/xdp/xsk_buff_pool.c | 10 +-
5 files changed, 523 insertions(+), 58 deletions(-)
--
1.8.3.1
Powered by blists - more mailing lists