All of lore.kernel.org
 help / color / mirror / Atom feed
From: Pablo de Lara <pablo.de.lara.guarch@intel.com>
To: dev@dpdk.org
Cc: fiona.trahe@intel.com, shally.verma@cavium.com,
	ahmed.mansour@nxp.com, Ashish.Gupta@cavium.com,
	Pablo de Lara <pablo.de.lara.guarch@intel.com>,
	Shally Verma <shally.verma@caviumnetworks.com>,
	Ashish Gupta <ashish.gupta@caviumnetworks.com>
Subject: [PATCH v6 06/14] compressdev: support stateless operations
Date: Fri, 27 Apr 2018 14:23:59 +0100	[thread overview]
Message-ID: <20180427132407.13385-7-pablo.de.lara.guarch@intel.com> (raw)
In-Reply-To: <20180427132407.13385-1-pablo.de.lara.guarch@intel.com>

From: Fiona Trahe <fiona.trahe@intel.com>

Added private transform data (priv_xform) in compression
operation, which will contain the private data from each
PMD to support stateless operations.
Also, added functions to create/free this data.

Signed-off-by: Fiona Trahe <fiona.trahe@intel.com>
Signed-off-by: Pablo de Lara <pablo.de.lara.guarch@intel.com>
Signed-off-by: Shally Verma <shally.verma@caviumnetworks.com>
Signed-off-by: Ashish Gupta <ashish.gupta@caviumnetworks.com>
---
 lib/librte_compressdev/rte_compressdev.c           | 48 ++++++++++++++++++++++
 lib/librte_compressdev/rte_compressdev.h           | 48 ++++++++++++++++++++++
 lib/librte_compressdev/rte_compressdev_pmd.h       | 40 ++++++++++++++++++
 lib/librte_compressdev/rte_compressdev_version.map |  2 +
 4 files changed, 138 insertions(+)

diff --git a/lib/librte_compressdev/rte_compressdev.c b/lib/librte_compressdev/rte_compressdev.c
index af0616980..0af1b4927 100644
--- a/lib/librte_compressdev/rte_compressdev.c
+++ b/lib/librte_compressdev/rte_compressdev.c
@@ -554,6 +554,54 @@ rte_compressdev_info_get(uint8_t dev_id, struct rte_compressdev_info *dev_info)
 	dev_info->driver_name = dev->device->driver->name;
 }
 
+int __rte_experimental
+rte_compressdev_private_xform_create(uint8_t dev_id,
+		const struct rte_comp_xform *xform,
+		void **priv_xform)
+{
+	struct rte_compressdev *dev;
+	int ret;
+
+	dev = rte_compressdev_get_dev(dev_id);
+
+	if (xform == NULL || priv_xform == NULL || dev == NULL)
+		return -EINVAL;
+
+	RTE_FUNC_PTR_OR_ERR_RET(*dev->dev_ops->private_xform_create, -ENOTSUP);
+	ret = (*dev->dev_ops->private_xform_create)(dev, xform, priv_xform);
+	if (ret < 0) {
+		COMPRESSDEV_LOG(ERR,
+			"dev_id %d failed to create private_xform: err=%d",
+			dev_id, ret);
+		return ret;
+	};
+
+	return 0;
+}
+
+int __rte_experimental
+rte_compressdev_private_xform_free(uint8_t dev_id, void *priv_xform)
+{
+	struct rte_compressdev *dev;
+	int ret;
+
+	dev = rte_compressdev_get_dev(dev_id);
+
+	if (dev == NULL || priv_xform == NULL)
+		return -EINVAL;
+
+	RTE_FUNC_PTR_OR_ERR_RET(*dev->dev_ops->private_xform_free, -ENOTSUP);
+	ret = dev->dev_ops->private_xform_free(dev, priv_xform);
+	if (ret < 0) {
+		COMPRESSDEV_LOG(ERR,
+			"dev_id %d failed to free private xform: err=%d",
+			dev_id, ret);
+		return ret;
+	};
+
+	return 0;
+}
+
 const char * __rte_experimental
 rte_compressdev_name_get(uint8_t dev_id)
 {
diff --git a/lib/librte_compressdev/rte_compressdev.h b/lib/librte_compressdev/rte_compressdev.h
index 9660e5af6..705e9fe79 100644
--- a/lib/librte_compressdev/rte_compressdev.h
+++ b/lib/librte_compressdev/rte_compressdev.h
@@ -89,6 +89,8 @@ struct rte_compressdev_config {
 	/**< Socket on which to allocate resources */
 	uint16_t nb_queue_pairs;
 	/**< Total number of queue pairs to configure on a device */
+	uint16_t max_nb_priv_xforms;
+	/**< Max number of private_xforms which will be created on the device */
 };
 
 /**
@@ -314,6 +316,52 @@ uint16_t __rte_experimental
 rte_compressdev_enqueue_burst(uint8_t dev_id, uint16_t qp_id,
 		struct rte_comp_op **ops, uint16_t nb_ops);
 
+/**
+ * This should alloc a private_xform from the device's mempool and initialise
+ * it. The application should call this API when setting up for stateless
+ * processing on a device. If it returns non-shareable, then the appl cannot
+ * share this handle with multiple in-flight ops and should call this API again
+ * to get a separate handle for every in-flight op.
+ * The handle returned is only valid for use with ops of op_type STATELESS.
+ *
+ * @param dev_id
+ *   Compress device identifier
+ * @param xform
+ *   xform data
+ * @param private_xform
+ *   Pointer to where PMD's private_xform handle should be stored
+ *
+ * @return
+ *  - if successful returns 0
+ *    and valid private_xform handle
+ *  - <0 in error cases
+ *  - Returns -EINVAL if input parameters are invalid.
+ *  - Returns -ENOTSUP if comp device does not support the comp transform.
+ *  - Returns -ENOMEM if the private_xform could not be allocated.
+ */
+int __rte_experimental
+rte_compressdev_private_xform_create(uint8_t dev_id,
+		const struct rte_comp_xform *xform,
+		void **private_xform);
+
+/**
+ * This should clear the private_xform and return it to the device's mempool.
+ *
+ * @param dev_id
+ *   Compress device identifier
+ *
+ * @param private_xform
+ *   PMD's private_xform data
+ *
+ * @return
+ *  - 0 if successful
+ *  - <0 in error cases
+ *  - Returns -EINVAL if input parameters are invalid.
+ *  - Returns -EBUSY if can't free private_xform due to inflight operations
+ */
+int __rte_experimental
+rte_compressdev_private_xform_free(uint8_t dev_id, void *private_xform);
+
 #ifdef __cplusplus
 }
 #endif
diff --git a/lib/librte_compressdev/rte_compressdev_pmd.h b/lib/librte_compressdev/rte_compressdev_pmd.h
index 14ce76b44..45ab61c25 100644
--- a/lib/librte_compressdev/rte_compressdev_pmd.h
+++ b/lib/librte_compressdev/rte_compressdev_pmd.h
@@ -166,6 +166,41 @@ typedef int (*compressdev_queue_pair_release_t)(struct rte_compressdev *dev,
  */
 typedef uint32_t (*compressdev_queue_pair_count_t)(struct rte_compressdev *dev);
 
+/**
+ * Create driver private_xform data.
+ *
+ * @param dev
+ *   Compressdev device
+ * @param xform
+ *   xform data
+ * @param private_xform
+ *   ptr where handle of pmd's private_xform data should be stored
+ * @return
+ *  - if successful returns 0
+ *    and valid private_xform handle
+ *  - <0 in error cases
+ *  - Returns -EINVAL if input parameters are invalid.
+ *  - Returns -ENOTSUP if comp device does not support the comp transform.
+ *  - Returns -ENOMEM if the private_xform could not be allocated.
+ */
+typedef int (*compressdev_private_xform_create_t)(struct rte_compressdev *dev,
+		const struct rte_comp_xform *xform, void **private_xform);
+
+/**
+ * Free driver private_xform data.
+ *
+ * @param dev
+ *   Compressdev device
+ * @param private_xform
+ *   handle of pmd's private_xform data
+ * @return
+ *  - 0 if successful
+ *  - <0 in error cases
+ *  - Returns -EINVAL if input parameters are invalid.
+ *  - Returns -EBUSY if can't free private_xform due to inflight operations
+ */
+typedef int (*compressdev_private_xform_free_t)(struct rte_compressdev *dev,
+		void *private_xform);
 
 /** comp device operations function pointer table */
 struct rte_compressdev_ops {
@@ -180,6 +215,11 @@ struct rte_compressdev_ops {
 	/**< Set up a device queue pair. */
 	compressdev_queue_pair_release_t queue_pair_release;
 	/**< Release a queue pair. */
+
+	compressdev_private_xform_create_t private_xform_create;
+	/**< Create a comp private_xform and initialise its private data. */
+	compressdev_private_xform_free_t private_xform_free;
+	/**< Free a comp private_xform's data. */
 };
 
 /**
diff --git a/lib/librte_compressdev/rte_compressdev_version.map b/lib/librte_compressdev/rte_compressdev_version.map
index 292417fde..d755bb65e 100644
--- a/lib/librte_compressdev/rte_compressdev_version.map
+++ b/lib/librte_compressdev/rte_compressdev_version.map
@@ -18,6 +18,8 @@ EXPERIMENTAL {
 	rte_compressdev_pmd_get_named_dev;
 	rte_compressdev_pmd_parse_input_args;
 	rte_compressdev_pmd_release_device;
+	rte_compressdev_private_xform_create;
+	rte_compressdev_private_xform_free;
 	rte_compressdev_queue_pair_count;
 	rte_compressdev_queue_pair_setup;
 	rte_compressdev_socket_id;
-- 
2.14.3

  parent reply	other threads:[~2018-04-27 13:24 UTC|newest]

Thread overview: 91+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-02-02 18:25 [PATCH] compressdev: implement API Fiona Trahe
2018-02-04 14:18 ` Thomas Monjalon
2018-02-21 19:11   ` Trahe, Fiona
2018-02-24  1:17     ` Ahmed Mansour
2018-02-26 11:24       ` Trahe, Fiona
2018-02-26 19:15         ` Ahmed Mansour
2018-02-27  5:48           ` Verma, Shally
2018-02-26 11:25       ` Verma, Shally
2018-02-26 21:35         ` Ahmed Mansour
2018-02-27  5:53           ` Verma, Shally
2018-02-28 18:39             ` Trahe, Fiona
2018-03-01  6:58               ` Verma, Shally
2018-03-01 14:41                 ` Trahe, Fiona
2018-03-02  0:55                   ` Ahmed Mansour
2018-03-02  9:53                     ` Trahe, Fiona
2018-03-02 19:48                       ` Ahmed Mansour
2018-03-05 14:32                         ` Verma, Shally
2018-03-06 23:33                           ` Ahmed Mansour
2018-03-03  0:52               ` Ahmed Mansour
2018-02-04 14:24 ` Thomas Monjalon
2018-03-23 18:08   ` Trahe, Fiona
2018-03-24  1:02     ` Thomas Monjalon
2018-03-26 11:44       ` Trahe, Fiona
2018-03-27 16:04 ` [PATCH v2 0/3] implement compression API Fiona Trahe
2018-04-06 18:04   ` [PATCH v3 00/13] Implement " Pablo de Lara
2018-04-06 18:05     ` [PATCH v3 01/13] compressdev: add basic device management Pablo de Lara
2018-04-06 18:05     ` [PATCH v3 02/13] compressdev: add queue pair management Pablo de Lara
2018-04-06 18:05     ` [PATCH v3 03/13] compressdev: add compression specific data Pablo de Lara
2018-04-06 18:05     ` [PATCH v3 04/13] compressdev: add enqueue/dequeue functions Pablo de Lara
2018-04-06 18:05     ` [PATCH v3 05/13] compressdev: add operation management Pablo de Lara
2018-04-06 18:05     ` [PATCH v3 06/13] compressdev: support stateless operations Pablo de Lara
2018-04-06 18:05     ` [PATCH v3 07/13] compressdev: support stateful operations Pablo de Lara
2018-04-06 18:05     ` [PATCH v3 08/13] compressdev: support hash operations Pablo de Lara
2018-04-06 18:05     ` [PATCH v3 09/13] compressdev: add device feature flags Pablo de Lara
2018-04-06 18:05     ` [PATCH v3 10/13] compressdev: add compression service " Pablo de Lara
2018-04-06 18:05     ` [PATCH v3 11/13] compressdev: add device stats Pablo de Lara
2018-04-06 18:05     ` [PATCH v3 12/13] compressdev: add device capabilities Pablo de Lara
2018-04-06 18:05     ` [PATCH v3 13/13] compressdev: get device id from name Pablo de Lara
2018-04-08 12:58     ` [PATCH v4 00/13] Implement compression API Pablo de Lara
2018-04-08 12:58       ` [PATCH v4 01/13] compressdev: add basic device management Pablo de Lara
2018-04-08 12:58       ` [PATCH v4 02/13] compressdev: add queue pair management Pablo de Lara
2018-04-08 12:58       ` [PATCH v4 03/13] compressdev: add compression specific data Pablo de Lara
2018-04-08 12:58       ` [PATCH v4 04/13] compressdev: add enqueue/dequeue functions Pablo de Lara
2018-04-08 12:58       ` [PATCH v4 05/13] compressdev: add operation management Pablo de Lara
2018-04-08 12:58       ` [PATCH v4 06/13] compressdev: support stateless operations Pablo de Lara
2018-04-08 12:58       ` [PATCH v4 07/13] compressdev: support stateful operations Pablo de Lara
2018-04-08 12:58       ` [PATCH v4 08/13] compressdev: support hash operations Pablo de Lara
2018-04-08 12:58       ` [PATCH v4 09/13] compressdev: add device feature flags Pablo de Lara
2018-04-08 12:58       ` [PATCH v4 10/13] compressdev: add compression service " Pablo de Lara
2018-04-08 12:58       ` [PATCH v4 11/13] compressdev: add device stats Pablo de Lara
2018-04-08 12:58       ` [PATCH v4 12/13] compressdev: add device capabilities Pablo de Lara
2018-04-08 12:58       ` [PATCH v4 13/13] compressdev: get device id from name Pablo de Lara
2018-03-27 16:04 ` [PATCH v2 1/3] compressdev: add structs and enum for compression service Fiona Trahe
2018-03-27 16:04 ` [PATCH v2 2/3] compressdev: implement API Fiona Trahe
2018-03-27 16:04 ` [PATCH v2 3/3] doc: update doxy and release note for compressdev Fiona Trahe
2018-04-13 18:18 ` [PATCH v5 00/13] Implement compression API Pablo de Lara
2018-04-13 18:18   ` [PATCH v5 01/13] compressdev: add basic device management Pablo de Lara
2018-04-13 18:18   ` [PATCH v5 02/13] compressdev: add queue pair management Pablo de Lara
2018-04-13 18:18   ` [PATCH v5 03/13] compressdev: add compression specific data Pablo de Lara
2018-04-13 18:18   ` [PATCH v5 04/13] compressdev: add enqueue/dequeue functions Pablo de Lara
2018-04-13 18:18   ` [PATCH v5 05/13] compressdev: add operation management Pablo de Lara
2018-04-13 18:18   ` [PATCH v5 06/13] compressdev: support stateless operations Pablo de Lara
2018-04-13 18:18   ` [PATCH v5 07/13] compressdev: support stateful operations Pablo de Lara
2018-04-13 18:18   ` [PATCH v5 08/13] compressdev: support hash operations Pablo de Lara
2018-04-13 18:18   ` [PATCH v5 09/13] compressdev: add device feature flags Pablo de Lara
2018-04-13 18:18   ` [PATCH v5 10/13] compressdev: add compression service " Pablo de Lara
2018-04-13 18:18   ` [PATCH v5 11/13] compressdev: add device stats Pablo de Lara
2018-04-13 18:18   ` [PATCH v5 12/13] compressdev: add device capabilities Pablo de Lara
2018-04-13 18:18   ` [PATCH v5 13/13] compressdev: get device id from name Pablo de Lara
2018-04-27 13:23 ` [PATCH v6 00/14] Implement compression API Pablo de Lara
2018-04-27 13:23   ` [PATCH v6 01/14] compressdev: add basic device management Pablo de Lara
2018-04-27 13:23   ` [PATCH v6 02/14] compressdev: add queue pair management Pablo de Lara
2018-05-04  2:48     ` Verma, Shally
2018-05-04  8:43       ` Trahe, Fiona
2018-05-14  7:53     ` Verma, Shally
2018-05-14  8:04       ` De Lara Guarch, Pablo
2018-05-14  8:16         ` Verma, Shally
2018-05-14  8:30           ` De Lara Guarch, Pablo
2018-04-27 13:23   ` [PATCH v6 03/14] compressdev: add compression specific data Pablo de Lara
2018-04-27 13:23   ` [PATCH v6 04/14] compressdev: add enqueue/dequeue functions Pablo de Lara
2018-04-27 13:23   ` [PATCH v6 05/14] compressdev: add operation management Pablo de Lara
2018-04-27 13:23   ` Pablo de Lara [this message]
2018-04-27 13:24   ` [PATCH v6 07/14] compressdev: support stateful operations Pablo de Lara
2018-04-27 13:24   ` [PATCH v6 08/14] compressdev: support hash operations Pablo de Lara
2018-04-27 13:24   ` [PATCH v6 09/14] compressdev: add device feature flags Pablo de Lara
2018-04-27 13:24   ` [PATCH v6 10/14] compressdev: add compression service " Pablo de Lara
2018-04-27 13:24   ` [PATCH v6 11/14] compressdev: add device stats Pablo de Lara
2018-04-27 13:24   ` [PATCH v6 12/14] compressdev: add device capabilities Pablo de Lara
2018-04-27 13:24   ` [PATCH v6 13/14] compressdev: get device id from name Pablo de Lara
2018-04-27 13:24   ` [PATCH v6 14/14] doc: add compressdev library guide Pablo de Lara
2018-05-08 21:25   ` [PATCH v6 00/14] Implement compression API 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=20180427132407.13385-7-pablo.de.lara.guarch@intel.com \
    --to=pablo.de.lara.guarch@intel.com \
    --cc=Ashish.Gupta@cavium.com \
    --cc=ahmed.mansour@nxp.com \
    --cc=ashish.gupta@caviumnetworks.com \
    --cc=dev@dpdk.org \
    --cc=fiona.trahe@intel.com \
    --cc=shally.verma@cavium.com \
    --cc=shally.verma@caviumnetworks.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.