All of lore.kernel.org
 help / color / mirror / Atom feed
From: Lee Daly <lee.daly@intel.com>
To: dev@dpdk.org
Cc: pablo.de.lara.guarch@intel.com, greg.b.tucker@intel.com,
	deepak.k.jain@intel.com, fiona.trahe@intel.com,
	Lee Daly <lee.daly@intel.com>
Subject: [PATCH v4 05/10] compress/isal: add queue pair related ops
Date: Sat, 28 Apr 2018 00:38:28 +0100	[thread overview]
Message-ID: <1524872313-196340-6-git-send-email-lee.daly@intel.com> (raw)
In-Reply-To: <1524872313-196340-1-git-send-email-lee.daly@intel.com>

This adds queue pair operations such as setup and release.

Signed-off-by: Lee Daly <lee.daly@intel.com>
---
 drivers/compress/isal/isal_compress_pmd_ops.c     | 111 +++++++++++++++++++++-
 drivers/compress/isal/isal_compress_pmd_private.h |   2 +
 2 files changed, 111 insertions(+), 2 deletions(-)

diff --git a/drivers/compress/isal/isal_compress_pmd_ops.c b/drivers/compress/isal/isal_compress_pmd_ops.c
index 9c89df0..b0abf42 100644
--- a/drivers/compress/isal/isal_compress_pmd_ops.c
+++ b/drivers/compress/isal/isal_compress_pmd_ops.c
@@ -4,6 +4,7 @@
 
 #include <rte_common.h>
 #include <rte_compressdev_pmd.h>
+#include <rte_malloc.h>
 
 #include "isal_compress_pmd_private.h"
 
@@ -106,6 +107,112 @@ isal_comp_pmd_info_get(struct rte_compressdev *dev __rte_unused,
 	}
 }
 
+
+/** Release queue pair */
+static int
+isal_comp_pmd_qp_release(struct rte_compressdev *dev, uint16_t qp_id)
+{
+	struct isal_comp_qp *qp = dev->data->queue_pairs[qp_id];
+
+	if (qp == NULL)
+		return -EINVAL;
+
+	if (dev->data->queue_pairs[qp_id] != NULL)
+		rte_free(dev->data->queue_pairs[qp_id]);
+
+	return 0;
+}
+
+/** Create a ring to place process packets on */
+static struct rte_ring *
+isal_comp_pmd_qp_create_processed_pkts_ring(struct isal_comp_qp *qp,
+		unsigned int ring_size, int socket_id)
+{
+	struct rte_ring *r;
+
+	r = rte_ring_lookup(qp->name);
+	if (r) {
+		if (rte_ring_get_size(r) >= ring_size) {
+			ISAL_PMD_LOG(DEBUG,
+				"Reusing existing ring %s for processed packets",
+				qp->name);
+			return r;
+		}
+
+			ISAL_PMD_LOG(ERR,
+				"Unable to reuse existing ring %s"
+				" for processed packets",
+			 qp->name);
+		return NULL;
+	}
+
+	return rte_ring_create(qp->name, ring_size, socket_id,
+			RING_F_SP_ENQ | RING_F_SC_DEQ);
+}
+
+/** set a unique name for the queue pair based on its name, dev_id and qp_id */
+static int
+isal_comp_pmd_qp_set_unique_name(struct rte_compressdev *dev,
+struct isal_comp_qp *qp)
+{
+	unsigned int n = snprintf(qp->name, sizeof(qp->name),
+			"isal_compression_pmd_%u_qp_%u",
+			dev->data->dev_id, qp->id);
+
+	if (n >= sizeof(qp->name))
+		return -1;
+
+	return 0;
+}
+
+/* Setup a queue pair */
+static int
+isal_comp_pmd_qp_setup(struct rte_compressdev *dev, uint16_t qp_id,
+		uint32_t max_inflight_ops, int socket_id)
+{
+	struct isal_comp_qp *qp = NULL;
+	int retval;
+
+	/* Free memory prior to re-allocation if needed. */
+	if (dev->data->queue_pairs[qp_id] != NULL)
+		isal_comp_pmd_qp_release(dev, qp_id);
+
+	/* Allocate the queue pair data structure. */
+	qp = rte_zmalloc_socket("Isa-l compression PMD Queue Pair", sizeof(*qp),
+					RTE_CACHE_LINE_SIZE, socket_id);
+	if (qp == NULL) {
+		ISAL_PMD_LOG(ERR, "Failed to allocate queue pair memory");
+		return (-ENOMEM);
+	}
+
+	qp->id = qp_id;
+	dev->data->queue_pairs[qp_id] = qp;
+
+	retval = isal_comp_pmd_qp_set_unique_name(dev, qp);
+	if (retval) {
+		ISAL_PMD_LOG(ERR, "Failed to create unique name for isal "
+				"compression device");
+		goto qp_setup_cleanup;
+	}
+
+	qp->processed_pkts = isal_comp_pmd_qp_create_processed_pkts_ring(qp,
+			max_inflight_ops, socket_id);
+	if (qp->processed_pkts == NULL) {
+		ISAL_PMD_LOG(ERR, "Failed to create unique name for isal "
+				"compression device");
+		goto qp_setup_cleanup;
+	}
+
+	memset(&qp->qp_stats, 0, sizeof(qp->qp_stats));
+	return 0;
+
+qp_setup_cleanup:
+	if (qp)
+		rte_free(qp);
+
+	return -1;
+}
+
 /** Set private xform data*/
 static int
 isal_comp_pmd_priv_xform_create(struct rte_compressdev *dev,
@@ -161,8 +268,8 @@ struct rte_compressdev_ops isal_pmd_ops = {
 
 		.dev_infos_get		= isal_comp_pmd_info_get,
 
-		.queue_pair_setup	= NULL,
-		.queue_pair_release	= NULL,
+		.queue_pair_setup	= isal_comp_pmd_qp_setup,
+		.queue_pair_release	= isal_comp_pmd_qp_release,
 
 		.private_xform_create	= isal_comp_pmd_priv_xform_create,
 		.private_xform_free	= isal_comp_pmd_priv_xform_free,
diff --git a/drivers/compress/isal/isal_compress_pmd_private.h b/drivers/compress/isal/isal_compress_pmd_private.h
index 7e3b840..7505c76 100644
--- a/drivers/compress/isal/isal_compress_pmd_private.h
+++ b/drivers/compress/isal/isal_compress_pmd_private.h
@@ -24,6 +24,8 @@ struct isal_comp_qp {
 	uint16_t id;
 	/* Unique Queue Pair Name */
 	char name[RTE_COMPRESSDEV_NAME_MAX_LEN];
+	/* Ring for placing process packets */
+	struct rte_ring *processed_pkts;
 	/* Queue pair statistics */
 	struct rte_compressdev_stats qp_stats;
 	/* Number of free elements on ring */
-- 
2.7.4

  parent reply	other threads:[~2018-04-27 23:39 UTC|newest]

Thread overview: 70+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-03-09 16:50 [PATCH] compress/isal: ISA-L compression PMD Lee Daly
2018-04-06 18:13 ` [PATCH v2] " Lee Daly
2018-04-17 13:35   ` [PATCH v3 00/11] add " Lee Daly
2018-04-17 13:35     ` [PATCH v3 01/11] compress/isal: add skeleton " Lee Daly
2018-04-24  8:56       ` De Lara Guarch, Pablo
2018-04-17 13:35     ` [PATCH v3 02/11] compress/isal: add pmd device init and de-init Lee Daly
2018-04-24  9:21       ` De Lara Guarch, Pablo
2018-04-17 13:35     ` [PATCH v3 03/11] compress/isal: add basic pmd ops Lee Daly
2018-04-24  9:28       ` De Lara Guarch, Pablo
2018-04-17 13:35     ` [PATCH v3 04/11] compress/isal: add private xform related ops Lee Daly
2018-04-24  9:45       ` De Lara Guarch, Pablo
2018-04-17 13:35     ` [PATCH v3 05/11] compress/isal: add queue pair " Lee Daly
2018-04-24  9:56       ` De Lara Guarch, Pablo
2018-04-26 16:44         ` Daly, Lee
2018-04-17 13:35     ` [PATCH v3 06/11] compress/isal: support enqueue/dequeue api Lee Daly
2018-04-17 13:35     ` [PATCH v3 07/11] compress/isal: add stats related ops Lee Daly
2018-04-17 13:35     ` [PATCH v3 08/11] compress/isal: add ISA-L compression functionality Lee Daly
2018-04-24 10:05       ` De Lara Guarch, Pablo
2018-04-17 13:35     ` [PATCH v3 09/11] compress/isal: add ISA-L decomp functionality Lee Daly
2018-04-24 10:09       ` De Lara Guarch, Pablo
2018-04-17 13:35     ` [PATCH v3 10/11] compress/isal: add generic compression driver docs Lee Daly
2018-04-23 14:47       ` Kovacevic, Marko
2018-04-24 10:47       ` De Lara Guarch, Pablo
2018-04-24 11:06       ` De Lara Guarch, Pablo
2018-04-25 14:25         ` Daly, Lee
2018-04-17 13:35     ` [PATCH v3 11/11] compress/isal: add ISA-L compression PMD docs Lee Daly
2018-04-23 14:53       ` Kovacevic, Marko
2018-04-23 15:33       ` Kovacevic, Marko
2018-04-23 15:51         ` Daly, Lee
2018-04-24 11:04       ` De Lara Guarch, Pablo
2018-04-27 23:38       ` [PATCH v4 00/10] add ISA-L compression PMD Lee Daly
2018-04-27 23:38         ` [PATCH v4 01/10] compress/isal: add skeleton " Lee Daly
2018-05-08 12:32           ` [PATCH v5 00/10] add " Lee Daly
2018-05-08 12:32             ` [PATCH v5 01/10] compress/isal: add skeleton " Lee Daly
2018-05-09 16:14               ` [PATCH v6 00/10] add " Lee Daly
2018-05-09 16:14                 ` [PATCH v6 01/10] compress/isal: add skeleton " Lee Daly
2018-05-09 16:14                 ` [PATCH v6 02/10] compress/isal: add pmd device init and de-init Lee Daly
2018-05-09 16:14                 ` [PATCH v6 03/10] compress/isal: add basic pmd ops Lee Daly
2018-05-09 16:14                 ` [PATCH v6 04/10] compress/isal: add private xform related ops Lee Daly
2018-05-09 16:14                 ` [PATCH v6 05/10] compress/isal: add queue pair " Lee Daly
2018-05-09 16:14                 ` [PATCH v6 06/10] compress/isal: support enqueue/dequeue api Lee Daly
2018-05-09 16:14                 ` [PATCH v6 07/10] compress/isal: add stats related ops Lee Daly
2018-05-09 16:14                 ` [PATCH v6 08/10] compress/isal: add ISA-L compression functionality Lee Daly
2018-05-09 17:39                   ` Tucker, Greg B
2018-05-09 16:14                 ` [PATCH v6 09/10] compress/isal: add ISA-L decomp functionality Lee Daly
2018-05-09 17:41                   ` Tucker, Greg B
2018-05-09 16:14                 ` [PATCH v6 10/10] doc: add compression driver and ISA-L PMD docs Lee Daly
2018-05-09 20:56                 ` [PATCH v6 00/10] add ISA-L compression PMD De Lara Guarch, Pablo
2018-05-09 21:36                   ` De Lara Guarch, Pablo
2018-05-08 12:32             ` [PATCH v5 02/10] compress/isal: add pmd device init and de-init Lee Daly
2018-05-08 12:32             ` [PATCH v5 03/10] compress/isal: add basic pmd ops Lee Daly
2018-05-08 12:32             ` [PATCH v5 04/10] compress/isal: add private xform related ops Lee Daly
2018-05-08 12:32             ` [PATCH v5 05/10] compress/isal: add queue pair " Lee Daly
2018-05-08 12:32             ` [PATCH v5 06/10] compress/isal: support enqueue/dequeue api Lee Daly
2018-05-08 12:32             ` [PATCH v5 07/10] compress/isal: add stats related ops Lee Daly
2018-05-08 12:32             ` [PATCH v5 08/10] compress/isal: add ISA-L compression functionality Lee Daly
2018-05-08 12:32             ` [PATCH v5 09/10] compress/isal: add ISA-L decomp functionality Lee Daly
2018-05-08 12:32             ` [PATCH v5 10/10] doc: add compression driver and ISA-L PMD docs Lee Daly
2018-04-27 23:38         ` [PATCH v4 02/10] compress/isal: add pmd device init and de-init Lee Daly
2018-04-27 23:38         ` [PATCH v4 03/10] compress/isal: add basic pmd ops Lee Daly
2018-04-27 23:38         ` [PATCH v4 04/10] compress/isal: add private xform related ops Lee Daly
2018-04-27 23:38         ` Lee Daly [this message]
2018-04-27 23:38         ` [PATCH v4 06/10] compress/isal: support enqueue/dequeue api Lee Daly
2018-05-03 21:46           ` De Lara Guarch, Pablo
2018-04-27 23:38         ` [PATCH v4 07/10] compress/isal: add stats related ops Lee Daly
2018-04-27 23:38         ` [PATCH v4 08/10] compress/isal: add ISA-L compression functionality Lee Daly
2018-05-03 21:37           ` De Lara Guarch, Pablo
2018-04-27 23:38         ` [PATCH v4 09/10] compress/isal: add ISA-L decomp functionality Lee Daly
2018-04-27 23:38         ` [PATCH v4 10/10] doc: add compression driver and ISA-L PMD docs Lee Daly
2018-05-03 21:49           ` De Lara Guarch, Pablo

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1524872313-196340-6-git-send-email-lee.daly@intel.com \
    --to=lee.daly@intel.com \
    --cc=deepak.k.jain@intel.com \
    --cc=dev@dpdk.org \
    --cc=fiona.trahe@intel.com \
    --cc=greg.b.tucker@intel.com \
    --cc=pablo.de.lara.guarch@intel.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.