From c92b936fbd0eb88ea0c64da50f9ad3be73c83b73 Mon Sep 17 00:00:00 2001 From: Joyce Kong Date: Fri, 10 Jul 2020 10:38:49 +0800 Subject: [PATCH] net/virtio: restrict pointer aliasing for NEON Restrict pointer aliasing to allow the compiler to vectorize loops more aggressively. With this patch, a 9.6% improvement is observed in throughput for the virtio-net PVP case, and a 2.4% perf improvement in throughput for the virtio-user PVP case. All performance data are measured on ThunderX-2 platform under the 0.001% acceptable packet loss with 2 cores on the vhost side and 1 core on the virtio side. Signed-off-by: Joyce Kong Reviewed-by: Phil Yang --- drivers/net/virtio/virtio_rxtx_simple_neon.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/drivers/net/virtio/virtio_rxtx_simple_neon.c b/drivers/net/virtio/virtio_rxtx_simple_neon.c index 8e6fa1fd73..a9b649814e 100644 --- a/drivers/net/virtio/virtio_rxtx_simple_neon.c +++ b/drivers/net/virtio/virtio_rxtx_simple_neon.c @@ -36,8 +36,8 @@ * - nb_pkts < RTE_VIRTIO_DESC_PER_LOOP, just return no packet */ uint16_t -virtio_recv_pkts_vec(void *rx_queue, struct rte_mbuf **rx_pkts, - uint16_t nb_pkts) +virtio_recv_pkts_vec(void *rx_queue, struct rte_mbuf + **__rte_restrict rx_pkts, uint16_t nb_pkts) { struct virtnet_rx *rxvq = rx_queue; struct virtqueue *vq = rxvq->vq; -- 2.20.1