[dpdk-stable] patch 'net/mlx5: optimize Rx buffer replenishment threshold' has been queued to stable release 18.08.1

Kevin Traynor ktraynor at redhat.com
Thu Nov 29 14:20:50 CET 2018


Hi,

FYI, your patch has been queued to stable release 18.08.1

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/08/18. 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. If the code is different (ie: not only metadata diffs), due for example to
a change in context or macro names, please double check it.

Thanks.

Kevin Traynor

---
>From 91eb1e7be56db1c57651976e124091d43f350165 Mon Sep 17 00:00:00 2001
From: Yongseok Koh <yskoh at mellanox.com>
Date: Thu, 15 Nov 2018 10:29:20 +0000
Subject: [PATCH] net/mlx5: optimize Rx buffer replenishment threshold

[ upstream commit 545db54c7c0397ab27e1e0a62a97eef8b2f03576 ]

Due to redundant calculation per every burst, performance drops a little.

Fixes: e10245a13b2e ("net/mlx5: fix Rx buffer replenishment threshold")

Signed-off-by: Yongseok Koh <yskoh at mellanox.com>
Acked-by: Shahaf Shuler <shahafs at mellanox.com>
---
 drivers/net/mlx5/mlx5_rxq.c           | 2 ++
 drivers/net/mlx5/mlx5_rxtx.h          | 1 +
 drivers/net/mlx5/mlx5_rxtx_vec_neon.h | 2 +-
 drivers/net/mlx5/mlx5_rxtx_vec_sse.h  | 2 +-
 4 files changed, 5 insertions(+), 2 deletions(-)

diff --git a/drivers/net/mlx5/mlx5_rxq.c b/drivers/net/mlx5/mlx5_rxq.c
index 1f7bfd441..8efa1e4a9 100644
--- a/drivers/net/mlx5/mlx5_rxq.c
+++ b/drivers/net/mlx5/mlx5_rxq.c
@@ -1464,4 +1464,6 @@ mlx5_rxq_new(struct rte_eth_dev *dev, uint16_t idx, uint16_t desc,
 	tmpl->rxq.stats.idx = idx;
 	tmpl->rxq.elts_n = log2above(desc);
+	tmpl->rxq.rq_repl_thresh =
+		MLX5_VPMD_RXQ_RPLNSH_THRESH(1 << tmpl->rxq.elts_n);
 	tmpl->rxq.elts =
 		(struct rte_mbuf *(*)[1 << tmpl->rxq.elts_n])(tmpl + 1);
diff --git a/drivers/net/mlx5/mlx5_rxtx.h b/drivers/net/mlx5/mlx5_rxtx.h
index d06e1e795..9281750e9 100644
--- a/drivers/net/mlx5/mlx5_rxtx.h
+++ b/drivers/net/mlx5/mlx5_rxtx.h
@@ -102,4 +102,5 @@ struct mlx5_rxq_data {
 	uint32_t rq_pi;
 	uint32_t cq_ci;
+	uint16_t rq_repl_thresh; /* Threshold for buffer replenishment. */
 	struct mlx5_mr_ctrl mr_ctrl; /* MR control descriptor. */
 	uint16_t mprq_max_memcpy_len; /* Maximum size of packet to memcpy. */
diff --git a/drivers/net/mlx5/mlx5_rxtx_vec_neon.h b/drivers/net/mlx5/mlx5_rxtx_vec_neon.h
index b37b7381c..e827ec423 100644
--- a/drivers/net/mlx5/mlx5_rxtx_vec_neon.h
+++ b/drivers/net/mlx5/mlx5_rxtx_vec_neon.h
@@ -734,5 +734,5 @@ rxq_burst_v(struct mlx5_rxq_data *rxq, struct rte_mbuf **pkts, uint16_t pkts_n,
 	 */
 	repl_n = q_n - (rxq->rq_ci - rxq->rq_pi);
-	if (repl_n >= MLX5_VPMD_RXQ_RPLNSH_THRESH(q_n))
+	if (repl_n >= rxq->rq_repl_thresh)
 		mlx5_rx_replenish_bulk_mbuf(rxq, repl_n);
 	/* See if there're unreturned mbufs from compressed CQE. */
diff --git a/drivers/net/mlx5/mlx5_rxtx_vec_sse.h b/drivers/net/mlx5/mlx5_rxtx_vec_sse.h
index 54b3783cf..ae78da9d6 100644
--- a/drivers/net/mlx5/mlx5_rxtx_vec_sse.h
+++ b/drivers/net/mlx5/mlx5_rxtx_vec_sse.h
@@ -719,5 +719,5 @@ rxq_burst_v(struct mlx5_rxq_data *rxq, struct rte_mbuf **pkts, uint16_t pkts_n,
 	 */
 	repl_n = q_n - (rxq->rq_ci - rxq->rq_pi);
-	if (repl_n >= MLX5_VPMD_RXQ_RPLNSH_THRESH(q_n))
+	if (repl_n >= rxq->rq_repl_thresh)
 		mlx5_rx_replenish_bulk_mbuf(rxq, repl_n);
 	/* See if there're unreturned mbufs from compressed CQE. */
-- 
2.19.0

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2018-11-29 13:11:36.319121911 +0000
+++ 0049-net-mlx5-optimize-Rx-buffer-replenishment-threshold.patch	2018-11-29 13:11:34.000000000 +0000
@@ -1,12 +1,13 @@
-From 545db54c7c0397ab27e1e0a62a97eef8b2f03576 Mon Sep 17 00:00:00 2001
+From 91eb1e7be56db1c57651976e124091d43f350165 Mon Sep 17 00:00:00 2001
 From: Yongseok Koh <yskoh at mellanox.com>
 Date: Thu, 15 Nov 2018 10:29:20 +0000
 Subject: [PATCH] net/mlx5: optimize Rx buffer replenishment threshold
 
+[ upstream commit 545db54c7c0397ab27e1e0a62a97eef8b2f03576 ]
+
 Due to redundant calculation per every burst, performance drops a little.
 
 Fixes: e10245a13b2e ("net/mlx5: fix Rx buffer replenishment threshold")
-Cc: stable at dpdk.org
 
 Signed-off-by: Yongseok Koh <yskoh at mellanox.com>
 Acked-by: Shahaf Shuler <shahafs at mellanox.com>
@@ -18,10 +19,10 @@
  4 files changed, 5 insertions(+), 2 deletions(-)
 
 diff --git a/drivers/net/mlx5/mlx5_rxq.c b/drivers/net/mlx5/mlx5_rxq.c
-index b27fc4798..183da0e28 100644
+index 1f7bfd441..8efa1e4a9 100644
 --- a/drivers/net/mlx5/mlx5_rxq.c
 +++ b/drivers/net/mlx5/mlx5_rxq.c
-@@ -1469,4 +1469,6 @@ mlx5_rxq_new(struct rte_eth_dev *dev, uint16_t idx, uint16_t desc,
+@@ -1464,4 +1464,6 @@ mlx5_rxq_new(struct rte_eth_dev *dev, uint16_t idx, uint16_t desc,
  	tmpl->rxq.stats.idx = idx;
  	tmpl->rxq.elts_n = log2above(desc);
 +	tmpl->rxq.rq_repl_thresh =
@@ -29,7 +30,7 @@
  	tmpl->rxq.elts =
  		(struct rte_mbuf *(*)[1 << tmpl->rxq.elts_n])(tmpl + 1);
 diff --git a/drivers/net/mlx5/mlx5_rxtx.h b/drivers/net/mlx5/mlx5_rxtx.h
-index e210453fe..f47d327cf 100644
+index d06e1e795..9281750e9 100644
 --- a/drivers/net/mlx5/mlx5_rxtx.h
 +++ b/drivers/net/mlx5/mlx5_rxtx.h
 @@ -102,4 +102,5 @@ struct mlx5_rxq_data {
@@ -39,10 +40,10 @@
  	struct mlx5_mr_ctrl mr_ctrl; /* MR control descriptor. */
  	uint16_t mprq_max_memcpy_len; /* Maximum size of packet to memcpy. */
 diff --git a/drivers/net/mlx5/mlx5_rxtx_vec_neon.h b/drivers/net/mlx5/mlx5_rxtx_vec_neon.h
-index 0b729f185..883fe1bf9 100644
+index b37b7381c..e827ec423 100644
 --- a/drivers/net/mlx5/mlx5_rxtx_vec_neon.h
 +++ b/drivers/net/mlx5/mlx5_rxtx_vec_neon.h
-@@ -733,5 +733,5 @@ rxq_burst_v(struct mlx5_rxq_data *rxq, struct rte_mbuf **pkts, uint16_t pkts_n,
+@@ -734,5 +734,5 @@ rxq_burst_v(struct mlx5_rxq_data *rxq, struct rte_mbuf **pkts, uint16_t pkts_n,
  	 */
  	repl_n = q_n - (rxq->rq_ci - rxq->rq_pi);
 -	if (repl_n >= MLX5_VPMD_RXQ_RPLNSH_THRESH(q_n))
@@ -50,10 +51,10 @@
  		mlx5_rx_replenish_bulk_mbuf(rxq, repl_n);
  	/* See if there're unreturned mbufs from compressed CQE. */
 diff --git a/drivers/net/mlx5/mlx5_rxtx_vec_sse.h b/drivers/net/mlx5/mlx5_rxtx_vec_sse.h
-index e0f95f923..14117c4bb 100644
+index 54b3783cf..ae78da9d6 100644
 --- a/drivers/net/mlx5/mlx5_rxtx_vec_sse.h
 +++ b/drivers/net/mlx5/mlx5_rxtx_vec_sse.h
-@@ -717,5 +717,5 @@ rxq_burst_v(struct mlx5_rxq_data *rxq, struct rte_mbuf **pkts, uint16_t pkts_n,
+@@ -719,5 +719,5 @@ rxq_burst_v(struct mlx5_rxq_data *rxq, struct rte_mbuf **pkts, uint16_t pkts_n,
  	 */
  	repl_n = q_n - (rxq->rq_ci - rxq->rq_pi);
 -	if (repl_n >= MLX5_VPMD_RXQ_RPLNSH_THRESH(q_n))


More information about the stable mailing list