DPDK patches and discussions
 help / color / mirror / Atom feed
* [dpdk-dev] [PATCH] net/mlx5: fix instruction hotspot on replenishing Rx buffer
@ 2019-01-09  8:54 Yongseok Koh
  2019-01-09  9:38 ` David Marchand
                   ` (4 more replies)
  0 siblings, 5 replies; 35+ messages in thread
From: Yongseok Koh @ 2019-01-09  8:54 UTC (permalink / raw)
  To: shahafs; +Cc: dev, stable

On replenishing Rx buffers for vectorized Rx, mbuf->buf_addr isn't needed
to be accessed as it is static and easily calculated from the mbuf address.
Accessing the mbuf content causes unnecessary load stall and it is worsened
on ARM.

Fixes: 545b884b1da3 ("net/mlx5: fix buffer address posting in SSE Rx")
Cc: stable@dpdk.org

Signed-off-by: Yongseok Koh <yskoh@mellanox.com>
---
 drivers/net/mlx5/mlx5_rxtx_vec.h | 8 ++++++--
 1 file changed, 6 insertions(+), 2 deletions(-)

diff --git a/drivers/net/mlx5/mlx5_rxtx_vec.h b/drivers/net/mlx5/mlx5_rxtx_vec.h
index fda7004e2d..ced5547307 100644
--- a/drivers/net/mlx5/mlx5_rxtx_vec.h
+++ b/drivers/net/mlx5/mlx5_rxtx_vec.h
@@ -102,8 +102,12 @@ mlx5_rx_replenish_bulk_mbuf(struct mlx5_rxq_data *rxq, uint16_t n)
 		return;
 	}
 	for (i = 0; i < n; ++i) {
-		wq[i].addr = rte_cpu_to_be_64((uintptr_t)elts[i]->buf_addr +
-					      RTE_PKTMBUF_HEADROOM);
+		uintptr_t buf_addr =
+			(uintptr_t)elts[i] + sizeof(struct rte_mbuf) +
+			rte_pktmbuf_priv_size(rxq->mp) + RTE_PKTMBUF_HEADROOM;
+
+		assert(buf_addr == (uintptr_t)elts[i]->buf_addr);
+		wq[i].addr = rte_cpu_to_be_64(buf_addr);
 		/* If there's only one MR, no need to replace LKey in WQE. */
 		if (unlikely(mlx5_mr_btree_len(&rxq->mr_ctrl.cache_bh) > 1))
 			wq[i].lkey = mlx5_rx_mb2mr(rxq, elts[i]);
-- 
2.11.0

^ permalink raw reply	[flat|nested] 35+ messages in thread

end of thread, other threads:[~2019-03-08  2:05 UTC | newest]

Thread overview: 35+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2019-01-09  8:54 [dpdk-dev] [PATCH] net/mlx5: fix instruction hotspot on replenishing Rx buffer Yongseok Koh
2019-01-09  9:38 ` David Marchand
2019-01-09  9:52   ` Olivier Matz
2019-01-09  9:56     ` Yongseok Koh
2019-01-09 10:05       ` David Marchand
2019-01-09 10:11         ` Yongseok Koh
2019-01-09 13:19 ` [dpdk-dev] [PATCH v2 1/2] mbuf: add function returning default buffer address Yongseok Koh
2019-01-09 13:19   ` [dpdk-dev] [PATCH v2 2/2] net/mlx5: fix instruction hotspot on replenishing Rx buffer Yongseok Koh
2019-01-09 13:46   ` [dpdk-dev] [PATCH v2 1/2] mbuf: add function returning default buffer address David Marchand
2019-01-10  1:39     ` Rami Rosen
2019-01-10 18:18       ` Yongseok Koh
2019-01-10 18:22     ` Yongseok Koh
2019-01-10 18:35 ` [dpdk-dev] [PATCH v3 " Yongseok Koh
2019-01-10 18:35   ` [dpdk-dev] [PATCH v3 2/2] net/mlx5: fix instruction hotspot on replenishing Rx buffer Yongseok Koh
2019-01-10 19:10     ` Shahaf Shuler
2019-01-11  8:14   ` [dpdk-dev] [PATCH v3 1/2] mbuf: add function returning default buffer address Andrew Rybchenko
2019-01-11 11:03     ` Yongseok Koh
2019-01-11 11:17       ` Andrew Rybchenko
2019-01-11 11:37         ` Yongseok Koh
2019-01-11 11:57         ` Bruce Richardson
2019-01-11 12:48           ` David Marchand
2019-01-14 15:51             ` Olivier Matz
2019-01-10 22:40 ` [dpdk-dev] [PATCH v4 " Yongseok Koh
2019-01-10 22:40   ` [dpdk-dev] [PATCH v4 2/2] net/mlx5: fix instruction hotspot on replenishing Rx buffer Yongseok Koh
2019-01-11  8:05   ` [dpdk-dev] [PATCH v4 1/2] mbuf: add function returning default buffer address Olivier Matz
2019-01-11  8:11   ` David Marchand
2019-01-11  8:32     ` David Marchand
2019-01-11 11:09       ` Yongseok Koh
2019-01-11 10:25     ` Thomas Monjalon
2019-01-14 21:16 ` [dpdk-dev] [PATCH v5 1/2] mbuf: add function returning " Yongseok Koh
2019-01-14 21:16   ` [dpdk-dev] [PATCH v5 2/2] net/mlx5: fix instruction hotspot on replenishing Rx buffer Yongseok Koh
2019-02-06 15:54     ` Kevin Traynor
2019-02-21 19:10       ` Kevin Traynor
2019-03-08  2:05         ` Yongseok Koh
2019-01-15  1:35   ` [dpdk-dev] [PATCH v5 1/2] mbuf: add function returning buffer address Thomas Monjalon

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).