[dpdk-stable] patch 'net/i40e: remove memory barrier from NEON Rx' has been queued to LTS release 17.11.10

luca.boccassi at gmail.com luca.boccassi at gmail.com
Thu Dec 19 15:32:34 CET 2019


Hi,

FYI, your patch has been queued to LTS release 17.11.10

Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 12/21/19. So please
shout if anyone has objections.

Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: not only metadata diffs), please double check that the rebase was
correctly done.

Thanks.

Luca Boccassi

---
>From cbb2fc535ac9338f55a8cd419e4b93ff31f3dbc7 Mon Sep 17 00:00:00 2001
From: Gavin Hu <gavin.hu at arm.com>
Date: Tue, 13 Aug 2019 18:43:30 +0800
Subject: [PATCH] net/i40e: remove memory barrier from NEON Rx

[ upstream commit 78b50591c8e7ae3d010e8f4005e0e95c17800941 ]

For x86, the descriptors needs to be loaded in order, so in between two
descriptors loading, there is a compiler barrier in place.[1]
For aarch64, a patch [2] is in place to survive with discontinuous DD
bits, the barriers can be removed to take full advantage of out-of-order
execution.

50% performance gain in the RFC2544 NDR test was measured on ThunderX2.
12.50% performance gain in the RFC2544 NDR test was measured on Ampere
eMAG80 platform.

[1] http://inbox.dpdk.org/users/039ED4275CED7440929022BC67E7061153D71548@
SHSMSX105.ccr.corp.intel.com/
[2] https://mails.dpdk.org/archives/stable/2017-October/003324.html

Fixes: ae0eb310f253 ("net/i40e: implement vector PMD for ARM")

Signed-off-by: Gavin Hu <gavin.hu at arm.com>
Reviewed-by: Ruifeng Wang <ruifeng.wang at arm.com>
Reviewed-by: Steve Capper <steve.capper at arm.com>
---
 drivers/net/i40e/i40e_rxtx_vec_neon.c | 1 -
 1 file changed, 1 deletion(-)

diff --git a/drivers/net/i40e/i40e_rxtx_vec_neon.c b/drivers/net/i40e/i40e_rxtx_vec_neon.c
index b5685e2b91..3fb7de2dbc 100644
--- a/drivers/net/i40e/i40e_rxtx_vec_neon.c
+++ b/drivers/net/i40e/i40e_rxtx_vec_neon.c
@@ -314,7 +314,6 @@ _recv_raw_pkts_vec(struct i40e_rx_queue *rxq, struct rte_mbuf **rx_pkts,
 		/* Read desc statuses backwards to avoid race condition */
 		/* A.1 load 4 pkts desc */
 		descs[3] =  vld1q_u64((uint64_t *)(rxdp + 3));
-		rte_rmb();
 
 		/* B.2 copy 2 mbuf point into rx_pkts  */
 		vst1q_u64((uint64_t *)&rx_pkts[pos], mbp1);
-- 
2.20.1

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2019-12-19 14:32:26.615683291 +0000
+++ 0007-net-i40e-remove-memory-barrier-from-NEON-Rx.patch	2019-12-19 14:32:25.401283865 +0000
@@ -1,8 +1,10 @@
-From 78b50591c8e7ae3d010e8f4005e0e95c17800941 Mon Sep 17 00:00:00 2001
+From cbb2fc535ac9338f55a8cd419e4b93ff31f3dbc7 Mon Sep 17 00:00:00 2001
 From: Gavin Hu <gavin.hu at arm.com>
 Date: Tue, 13 Aug 2019 18:43:30 +0800
 Subject: [PATCH] net/i40e: remove memory barrier from NEON Rx
 
+[ upstream commit 78b50591c8e7ae3d010e8f4005e0e95c17800941 ]
+
 For x86, the descriptors needs to be loaded in order, so in between two
 descriptors loading, there is a compiler barrier in place.[1]
 For aarch64, a patch [2] is in place to survive with discontinuous DD
@@ -18,7 +20,6 @@
 [2] https://mails.dpdk.org/archives/stable/2017-October/003324.html
 
 Fixes: ae0eb310f253 ("net/i40e: implement vector PMD for ARM")
-Cc: stable at dpdk.org
 
 Signed-off-by: Gavin Hu <gavin.hu at arm.com>
 Reviewed-by: Ruifeng Wang <ruifeng.wang at arm.com>
@@ -28,10 +29,10 @@
  1 file changed, 1 deletion(-)
 
 diff --git a/drivers/net/i40e/i40e_rxtx_vec_neon.c b/drivers/net/i40e/i40e_rxtx_vec_neon.c
-index 83572ef843..5555e9b5cf 100644
+index b5685e2b91..3fb7de2dbc 100644
 --- a/drivers/net/i40e/i40e_rxtx_vec_neon.c
 +++ b/drivers/net/i40e/i40e_rxtx_vec_neon.c
-@@ -285,7 +285,6 @@ _recv_raw_pkts_vec(struct i40e_rx_queue *rxq, struct rte_mbuf **rx_pkts,
+@@ -314,7 +314,6 @@ _recv_raw_pkts_vec(struct i40e_rx_queue *rxq, struct rte_mbuf **rx_pkts,
  		/* Read desc statuses backwards to avoid race condition */
  		/* A.1 load 4 pkts desc */
  		descs[3] =  vld1q_u64((uint64_t *)(rxdp + 3));


More information about the stable mailing list