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: [dpdk-dev] [PATCH v5 05/10] compress/isal: add queue pair related ops
Date: Tue, 8 May 2018 13:32:50 +0100 [thread overview]
Message-ID: <1525782775-138647-6-git-send-email-lee.daly@intel.com> (raw)
In-Reply-To: <1525782775-138647-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
next prev parent reply other threads:[~2018-05-08 12:33 UTC|newest]
Thread overview: 70+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-03-09 16:50 [dpdk-dev] [PATCH] compress/isal: ISA-L compression PMD Lee Daly
2018-04-06 18:13 ` [dpdk-dev] [PATCH v2] " Lee Daly
2018-04-17 13:35 ` [dpdk-dev] [PATCH v3 00/11] add " Lee Daly
2018-04-17 13:35 ` [dpdk-dev] [PATCH v3 01/11] compress/isal: add skeleton " Lee Daly
2018-04-24 8:56 ` De Lara Guarch, Pablo
2018-04-17 13:35 ` [dpdk-dev] [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 ` [dpdk-dev] [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 ` [dpdk-dev] [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 ` [dpdk-dev] [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 ` [dpdk-dev] [PATCH v3 06/11] compress/isal: support enqueue/dequeue api Lee Daly
2018-04-17 13:35 ` [dpdk-dev] [PATCH v3 07/11] compress/isal: add stats related ops Lee Daly
2018-04-17 13:35 ` [dpdk-dev] [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 ` [dpdk-dev] [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 ` [dpdk-dev] [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 ` [dpdk-dev] [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 ` [dpdk-dev] [PATCH v4 00/10] add ISA-L compression PMD Lee Daly
2018-04-27 23:38 ` [dpdk-dev] [PATCH v4 01/10] compress/isal: add skeleton " Lee Daly
2018-05-08 12:32 ` [dpdk-dev] [PATCH v5 00/10] add " Lee Daly
2018-05-08 12:32 ` [dpdk-dev] [PATCH v5 01/10] compress/isal: add skeleton " Lee Daly
2018-05-09 16:14 ` [dpdk-dev] [PATCH v6 00/10] add " Lee Daly
2018-05-09 16:14 ` [dpdk-dev] [PATCH v6 01/10] compress/isal: add skeleton " Lee Daly
2018-05-09 16:14 ` [dpdk-dev] [PATCH v6 02/10] compress/isal: add pmd device init and de-init Lee Daly
2018-05-09 16:14 ` [dpdk-dev] [PATCH v6 03/10] compress/isal: add basic pmd ops Lee Daly
2018-05-09 16:14 ` [dpdk-dev] [PATCH v6 04/10] compress/isal: add private xform related ops Lee Daly
2018-05-09 16:14 ` [dpdk-dev] [PATCH v6 05/10] compress/isal: add queue pair " Lee Daly
2018-05-09 16:14 ` [dpdk-dev] [PATCH v6 06/10] compress/isal: support enqueue/dequeue api Lee Daly
2018-05-09 16:14 ` [dpdk-dev] [PATCH v6 07/10] compress/isal: add stats related ops Lee Daly
2018-05-09 16:14 ` [dpdk-dev] [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 ` [dpdk-dev] [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 ` [dpdk-dev] [PATCH v6 10/10] doc: add compression driver and ISA-L PMD docs Lee Daly
2018-05-09 20:56 ` [dpdk-dev] [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 ` [dpdk-dev] [PATCH v5 02/10] compress/isal: add pmd device init and de-init Lee Daly
2018-05-08 12:32 ` [dpdk-dev] [PATCH v5 03/10] compress/isal: add basic pmd ops Lee Daly
2018-05-08 12:32 ` [dpdk-dev] [PATCH v5 04/10] compress/isal: add private xform related ops Lee Daly
2018-05-08 12:32 ` Lee Daly [this message]
2018-05-08 12:32 ` [dpdk-dev] [PATCH v5 06/10] compress/isal: support enqueue/dequeue api Lee Daly
2018-05-08 12:32 ` [dpdk-dev] [PATCH v5 07/10] compress/isal: add stats related ops Lee Daly
2018-05-08 12:32 ` [dpdk-dev] [PATCH v5 08/10] compress/isal: add ISA-L compression functionality Lee Daly
2018-05-08 12:32 ` [dpdk-dev] [PATCH v5 09/10] compress/isal: add ISA-L decomp functionality Lee Daly
2018-05-08 12:32 ` [dpdk-dev] [PATCH v5 10/10] doc: add compression driver and ISA-L PMD docs Lee Daly
2018-04-27 23:38 ` [dpdk-dev] [PATCH v4 02/10] compress/isal: add pmd device init and de-init Lee Daly
2018-04-27 23:38 ` [dpdk-dev] [PATCH v4 03/10] compress/isal: add basic pmd ops Lee Daly
2018-04-27 23:38 ` [dpdk-dev] [PATCH v4 04/10] compress/isal: add private xform related ops Lee Daly
2018-04-27 23:38 ` [dpdk-dev] [PATCH v4 05/10] compress/isal: add queue pair " Lee Daly
2018-04-27 23:38 ` [dpdk-dev] [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 ` [dpdk-dev] [PATCH v4 07/10] compress/isal: add stats related ops Lee Daly
2018-04-27 23:38 ` [dpdk-dev] [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 ` [dpdk-dev] [PATCH v4 09/10] compress/isal: add ISA-L decomp functionality Lee Daly
2018-04-27 23:38 ` [dpdk-dev] [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=1525782775-138647-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 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).