All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Gujjar, Abhinandan S" <abhinandan.gujjar@intel.com>
To: "Verma, Shally" <Shally.Verma@cavium.com>,
	"De Lara Guarch, Pablo" <pablo.de.lara.guarch@intel.com>,
	"Doherty, Declan" <declan.doherty@intel.com>,
	"Jacob,  Jerin" <Jerin.JacobKollanukkaran@cavium.com>,
	"hemant.agrawal@nxp.com" <hemant.agrawal@nxp.com>,
	"akhil.goyal@nxp.com" <akhil.goyal@nxp.com>,
	"dev@dpdk.org" <dev@dpdk.org>
Cc: "Vangati, Narender" <narender.vangati@intel.com>,
	"Rao, Nikhil" <nikhil.rao@intel.com>
Subject: Re: [v2, 2/3] cryptodev: support session private data setting
Date: Fri, 20 Apr 2018 12:20:30 +0000	[thread overview]
Message-ID: <5612CB344B05EE4F95FC5B729939F780706F0302@PGSMSX106.gar.corp.intel.com> (raw)
In-Reply-To: <CY4PR0701MB363410FACD32C90F5B50E560F0B50@CY4PR0701MB3634.namprd07.prod.outlook.com>



> -----Original Message-----
> From: Verma, Shally [mailto:Shally.Verma@cavium.com]
> Sent: Thursday, April 19, 2018 5:47 PM
> To: Gujjar, Abhinandan S <abhinandan.gujjar@intel.com>; De Lara Guarch, Pablo
> <pablo.de.lara.guarch@intel.com>; Doherty, Declan
> <declan.doherty@intel.com>; Jacob, Jerin
> <Jerin.JacobKollanukkaran@cavium.com>; hemant.agrawal@nxp.com;
> akhil.goyal@nxp.com; dev@dpdk.org
> Cc: Vangati, Narender <narender.vangati@intel.com>; Rao, Nikhil
> <nikhil.rao@intel.com>
> Subject: RE: [dpdk-dev] [v2, 2/3] cryptodev: support session private data setting
> 
> 
> 
> >-----Original Message-----
> >From: dev [mailto:dev-bounces@dpdk.org] On Behalf Of Abhinandan Gujjar
> >Sent: 16 April 2018 12:25
> >To: pablo.de.lara.guarch@intel.com; declan.doherty@intel.com; Jacob,
> >Jerin <Jerin.JacobKollanukkaran@cavium.com>;
> >hemant.agrawal@nxp.com; akhil.goyal@nxp.com; dev@dpdk.org
> >Cc: narender.vangati@intel.com; abhinandan.gujjar@intel.com;
> >nikhil.rao@intel.com
> >Subject: [dpdk-dev] [v2, 2/3] cryptodev: support session private data
> >setting
> >
> >The application may want to store private data along with the
> >rte_cryptodev that is transparent to the rte_cryptodev layer.
> >For e.g., If an eventdev based application is submitting a
> >rte_cryptodev_sym_session operation and wants to indicate event
> >information required to construct a new event that will be enqueued to
> >eventdev after completion of the rte_cryptodev_sym_session operation.
> >This patch provides a mechanism for the application to associate this
> >information with the rte_cryptodev_sym_session session.
> >The application can set the private data using
> >rte_cryptodev_sym_session_set_private_data() and retrieve it using
> >rte_cryptodev_sym_session_get_private_data().
> >
> >Signed-off-by: Abhinandan Gujjar <abhinandan.gujjar@intel.com>
> >Signed-off-by: Nikhil Rao <nikhil.rao@intel.com>
> >Acked-by: Pablo de Lara <pablo.de.lara.guarch@intel.com>
> >---
> > lib/librte_cryptodev/rte_cryptodev.c           | 43 +++++++++++++++++++++++---
> > lib/librte_cryptodev/rte_cryptodev.h           | 32 +++++++++++++++++++
> > lib/librte_cryptodev/rte_cryptodev_version.map |  7 +++++
> > 3 files changed, 78 insertions(+), 4 deletions(-)
> >
> >diff --git a/lib/librte_cryptodev/rte_cryptodev.c
> >b/lib/librte_cryptodev/rte_cryptodev.c
> >index 8745b6b..2a95a35 100644
> >--- a/lib/librte_cryptodev/rte_cryptodev.c
> >+++ b/lib/librte_cryptodev/rte_cryptodev.c
> >@@ -1099,8 +1099,10 @@ struct rte_cryptodev_sym_session *
> > 		return NULL;
> > 	}
> >
> >-	/* Clear device session pointer */
> >-	memset(sess, 0, (sizeof(void *) * nb_drivers));
> >+	/* Clear device session pointer.
> >+	 * Include the flag indicating presence of private data
> >+	 */
> >+	memset(sess, 0, (sizeof(void *) * nb_drivers) + sizeof(uint8_t));
> >
> > 	return sess;
> > }
> >@@ -1204,9 +1206,10 @@ struct rte_cryptodev_sym_session *  {
> > 	/*
> > 	 * Header contains pointers to the private data
> >-	 * of all registered drivers
> >+	 * of all registered drivers, and a flag which
> >+	 * indicates presence of private data
> > 	 */
> >-	return (sizeof(void *) * nb_drivers);
> >+	return ((sizeof(void *) * nb_drivers) + sizeof(uint8_t));
> > }
> >
> > unsigned int
> >@@ -1238,6 +1241,38 @@ struct rte_cryptodev_sym_session *
> >
> > }
> >
> >+int __rte_experimental
> >+rte_cryptodev_sym_session_set_private_data(
> >+					struct rte_cryptodev_sym_session
> *sess,
> >+					void *data,
> >+					uint16_t size)
> >+{
> >+	uint16_t off_set = sizeof(void *) * nb_drivers;
> >+	uint8_t *private_data_present = (uint8_t *)sess + off_set;
> 
> [Shally]  I was going through this in context of crypto event adapter and realize
> probably it is safer to set priv_data_size after (sess == NULL) check.
> Same is applicable in get_private_data().
[Abhinandan] I guess you are pointing *private_data_present* which is calculated prior, it will not be used if the sess is NULL.

> 
> >+
> >+	if (sess == NULL)
> >+		return -EINVAL;
> >+
> >+	*private_data_present = 1;
> >+	off_set += sizeof(uint8_t);
> >+	rte_memcpy((uint8_t *)sess + off_set, data, size);
> >+	return 0;
> >+}
> >+
> >+void * __rte_experimental
> >+rte_cryptodev_sym_session_get_private_data(
> >+					struct rte_cryptodev_sym_session
> *sess) {
> >+	uint16_t off_set = sizeof(void *) * nb_drivers;
> >+	uint8_t *private_data_present = (uint8_t *)sess + off_set;
> >+
> >+	if (sess == NULL || !*private_data_present)
> >+		return NULL;
> >+
> >+	off_set += sizeof(uint8_t);
> >+	return (uint8_t *)sess + off_set;
> >+}
> >+
> > /** Initialise rte_crypto_op mempool element */  static void
> >rte_crypto_op_init(struct rte_mempool *mempool, diff --git
> >a/lib/librte_cryptodev/rte_cryptodev.h
> >b/lib/librte_cryptodev/rte_cryptodev.h
> >index c8fa689..261a359 100644
> >--- a/lib/librte_cryptodev/rte_cryptodev.h
> >+++ b/lib/librte_cryptodev/rte_cryptodev.h
> >@@ -1037,6 +1037,38 @@ struct rte_cryptodev_sym_session *
> >  */
> > const char *rte_cryptodev_driver_name_get(uint8_t driver_id);
> >
> >+/**
> >+ * Set private data for a session.
> >+ *
> >+ * @param	sess		Session pointer allocated by
> >+ *				*rte_cryptodev_sym_session_create*.
> >+ * @param	data		Pointer to the private data.
> >+ * @param	size		Size of the private data.
> >+ *
> >+ * @return
> >+ *  - On success, zero.
> >+ *  - On failure, a negative value.
> >+ */
> >+int __rte_experimental
> >+rte_cryptodev_sym_session_set_private_data(
> >+					struct rte_cryptodev_sym_session
> *sess,
> >+					void *data,
> >+					uint16_t size);
> >+
> >+/**
> >+ * Get private data of a session.
> >+ *
> >+ * @param	sess		Session pointer allocated by
> >+ *				*rte_cryptodev_sym_session_create*.
> >+ *
> >+ * @return
> >+ *  - On success return pointer to private data.
> >+ *  - On failure returns NULL.
> >+ */
> >+void * __rte_experimental
> >+rte_cryptodev_sym_session_get_private_data(
> >+					struct rte_cryptodev_sym_session
> *sess);
> >+
> > #ifdef __cplusplus
> > }
> > #endif
> >diff --git a/lib/librte_cryptodev/rte_cryptodev_version.map
> >b/lib/librte_cryptodev/rte_cryptodev_version.map
> >index eb47308..560e464 100644
> >--- a/lib/librte_cryptodev/rte_cryptodev_version.map
> >+++ b/lib/librte_cryptodev/rte_cryptodev_version.map
> >@@ -85,3 +85,10 @@ DPDK_17.11 {
> > 	rte_cryptodev_pmd_parse_input_args;
> >
> > } DPDK_17.08;
> >+
> >+EXPERIMENTAL {
> >+        global:
> >+
> >+	rte_cryptodev_sym_session_get_private_data;
> >+	rte_cryptodev_sym_session_set_private_data;
> >+} DPDK_17.11;
> >--
> >1.9.1

  reply	other threads:[~2018-04-20 12:20 UTC|newest]

Thread overview: 10+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-04-16  6:54 [v2, 1/3] cryptodev: set private data for session-less mode Abhinandan Gujjar
2018-04-16  6:54 ` [v2, 2/3] cryptodev: support session private data setting Abhinandan Gujjar
2018-04-19 12:16   ` Verma, Shally
2018-04-20 12:20     ` Gujjar, Abhinandan S [this message]
2018-04-20 12:23       ` Verma, Shally
2018-04-16  6:54 ` [v3,3/3] doc: add private data info in crypto guide Abhinandan Gujjar
2018-04-16  9:16   ` Akhil Goyal
2018-04-16  9:36     ` Gujjar, Abhinandan S
2018-04-17 13:49       ` De Lara Guarch, Pablo
2018-04-17 13:57 ` [v2, 1/3] cryptodev: set private data for session-less mode 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=5612CB344B05EE4F95FC5B729939F780706F0302@PGSMSX106.gar.corp.intel.com \
    --to=abhinandan.gujjar@intel.com \
    --cc=Jerin.JacobKollanukkaran@cavium.com \
    --cc=Shally.Verma@cavium.com \
    --cc=akhil.goyal@nxp.com \
    --cc=declan.doherty@intel.com \
    --cc=dev@dpdk.org \
    --cc=hemant.agrawal@nxp.com \
    --cc=narender.vangati@intel.com \
    --cc=nikhil.rao@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.