DPDK patches and discussions
 help / color / mirror / Atom feed
* [dpdk-dev] [PATCH v2] regex/mlx5: add teardown flow to fastpath buffers
@ 2020-09-02 11:38 Yuval Avnery
  2020-09-08 22:29 ` Thomas Monjalon
  0 siblings, 1 reply; 2+ messages in thread
From: Yuval Avnery @ 2020-09-02 11:38 UTC (permalink / raw)
  To: Ori Kam; +Cc: thomas, dev, yuvalav

From: Yuval Avnery <yuvalav@mellanox.com>

Added missing code to free Input/Output buffers and memory
registration.
Also added calls to this code in case of error in the qp setup
procedure.
The rollback code itself did not handle rollback properly
and did not check return value from the fastpath setup.

Signed-off-by: Yuval Avnery <yuvalav@mellanox.com>
Acked-by: Ori Kam <orika@mellanox.com>
---
 drivers/regex/mlx5/mlx5_regex.h          |  2 ++
 drivers/regex/mlx5/mlx5_regex_control.c  | 20 ++++++++++++-------
 drivers/regex/mlx5/mlx5_regex_fastpath.c | 33 +++++++++++++++++++++++++++++++-
 3 files changed, 47 insertions(+), 8 deletions(-)

diff --git a/drivers/regex/mlx5/mlx5_regex.h b/drivers/regex/mlx5/mlx5_regex.h
index 6098fb1..fc0f362 100644
--- a/drivers/regex/mlx5/mlx5_regex.h
+++ b/drivers/regex/mlx5/mlx5_regex.h
@@ -109,6 +109,8 @@ int mlx5_regex_qp_setup(struct rte_regexdev *dev, uint16_t qp_ind,
 
 /* mlx5_regex_fastpath.c */
 int mlx5_regexdev_setup_fastpath(struct mlx5_regex_priv *priv, uint32_t qp_id);
+void mlx5_regexdev_teardown_fastpath(struct mlx5_regex_priv *priv,
+				     uint32_t qp_id);
 uint16_t mlx5_regexdev_enqueue(struct rte_regexdev *dev, uint16_t qp_id,
 		       struct rte_regex_ops **ops, uint16_t nb_ops);
 uint16_t mlx5_regexdev_dequeue(struct rte_regexdev *dev, uint16_t qp_id,
diff --git a/drivers/regex/mlx5/mlx5_regex_control.c b/drivers/regex/mlx5/mlx5_regex_control.c
index faafb76..187c3de 100644
--- a/drivers/regex/mlx5/mlx5_regex_control.c
+++ b/drivers/regex/mlx5/mlx5_regex_control.c
@@ -357,23 +357,29 @@
 	ret = regex_ctrl_create_cq(priv, &qp->cq);
 	if (ret) {
 		DRV_LOG(ERR, "Can't create cq.");
-		goto error;
+		goto err_cq;
 	}
 	for (i = 0; i < qp->nb_obj; i++) {
 		ret = regex_ctrl_create_sq(priv, qp, i, log_desc);
 		if (ret) {
 			DRV_LOG(ERR, "Can't create sq.");
-			goto error;
+			goto err_sq;
 		}
 	}
 
-	mlx5_regexdev_setup_fastpath(priv, qp_ind);
+	ret = mlx5_regexdev_setup_fastpath(priv, qp_ind);
+	if (ret) {
+		DRV_LOG(ERR, "Fail to setup fastpath.");
+		goto err_fp;
+	}
 	return 0;
 
-error:
-	regex_ctrl_destroy_cq(priv, &qp->cq);
+err_fp:
 	for (i = 0; i < qp->nb_obj; i++)
 		ret = regex_ctrl_destroy_sq(priv, qp, i);
-	return -rte_errno;
-
+err_sq:
+	regex_ctrl_destroy_cq(priv, &qp->cq);
+err_cq:
+	rte_free(qp->sqs);
+	return ret;
 }
diff --git a/drivers/regex/mlx5/mlx5_regex_fastpath.c b/drivers/regex/mlx5/mlx5_regex_fastpath.c
index 2c6c9e1..6fafcff 100644
--- a/drivers/regex/mlx5/mlx5_regex_fastpath.c
+++ b/drivers/regex/mlx5/mlx5_regex_fastpath.c
@@ -407,8 +407,39 @@ struct mlx5_regex_job {
 	if (!qp->jobs)
 		return -ENOMEM;
 	err = setup_buffers(qp, priv->pd);
-	if (err)
+	if (err) {
+		rte_free(qp->jobs);
 		return err;
+	}
 	setup_sqs(qp);
 	return 0;
 }
+
+static void
+free_buffers(struct mlx5_regex_qp *qp)
+{
+	if (qp->metadata) {
+		mlx5_glue->dereg_mr(qp->metadata);
+		rte_free(qp->metadata->addr);
+	}
+	if (qp->inputs) {
+		mlx5_glue->dereg_mr(qp->inputs);
+		rte_free(qp->inputs->addr);
+	}
+	if (qp->outputs) {
+		mlx5_glue->dereg_mr(qp->outputs);
+		rte_free(qp->outputs->addr);
+	}
+}
+
+void
+mlx5_regexdev_teardown_fastpath(struct mlx5_regex_priv *priv, uint32_t qp_id)
+{
+	struct mlx5_regex_qp *qp = &priv->qps[qp_id];
+
+	if (qp) {
+		free_buffers(qp);
+		if (qp->jobs)
+			rte_free(qp->jobs);
+	}
+}
-- 
1.8.3.1


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

* Re: [dpdk-dev] [PATCH v2] regex/mlx5: add teardown flow to fastpath buffers
  2020-09-02 11:38 [dpdk-dev] [PATCH v2] regex/mlx5: add teardown flow to fastpath buffers Yuval Avnery
@ 2020-09-08 22:29 ` Thomas Monjalon
  0 siblings, 0 replies; 2+ messages in thread
From: Thomas Monjalon @ 2020-09-08 22:29 UTC (permalink / raw)
  To: Yuval Avnery; +Cc: Ori Kam, dev

Yuval Avnery wrote:
> Added missing code to free Input/Output buffers and memory
> registration.
> Also added calls to this code in case of error in the qp setup
> procedure.
> The rollback code itself did not handle rollback properly
> and did not check return value from the fastpath setup.
> 
> Signed-off-by: Yuval Avnery <yuvalav@mellanox.com>
> Acked-by: Ori Kam <orika@mellanox.com>

Applied, thanks



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

end of thread, other threads:[~2020-09-08 22:29 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-09-02 11:38 [dpdk-dev] [PATCH v2] regex/mlx5: add teardown flow to fastpath buffers Yuval Avnery
2020-09-08 22:29 ` Thomas Monjalon

DPDK patches and discussions

This inbox may be cloned and mirrored by anyone:

	git clone --mirror https://inbox.dpdk.org/dev/0 dev/git/0.git

	# If you have public-inbox 1.1+ installed, you may
	# initialize and index your mirror using the following commands:
	public-inbox-init -V2 dev dev/ https://inbox.dpdk.org/dev \
		dev@dpdk.org
	public-inbox-index dev

Example config snippet for mirrors.
Newsgroup available over NNTP:
	nntp://inbox.dpdk.org/inbox.dpdk.dev


AGPL code for this site: git clone https://public-inbox.org/public-inbox.git