From: Slawomir Mrozowicz <slawomirx.mrozow...@intel.com> Provide a function to get the private session size of any crypto device (specifically, to its crypto driver).
This will be useful once the session mempool is created outside the library. Signed-off-by: Slawomir Mrozowicz <slawomirx.mrozow...@intel.com> Signed-off-by: Pablo de Lara <pablo.de.lara.gua...@intel.com> --- lib/librte_cryptodev/rte_cryptodev.c | 20 ++++++++++++++++++++ lib/librte_cryptodev/rte_cryptodev.h | 12 ++++++++++++ lib/librte_cryptodev/rte_cryptodev_version.map | 1 + 3 files changed, 33 insertions(+) diff --git a/lib/librte_cryptodev/rte_cryptodev.c b/lib/librte_cryptodev/rte_cryptodev.c index d1e0ecc..312a740 100644 --- a/lib/librte_cryptodev/rte_cryptodev.c +++ b/lib/librte_cryptodev/rte_cryptodev.c @@ -1217,6 +1217,26 @@ rte_cryptodev_sym_session_free(uint8_t dev_id, return NULL; } +unsigned int +rte_cryptodev_get_private_session_size(uint8_t dev_id) +{ + struct rte_cryptodev *dev; + unsigned int priv_sess_size; + + if (!rte_cryptodev_pmd_is_valid_dev(dev_id)) + return 0; + + dev = rte_cryptodev_pmd_get_dev(dev_id); + + if (*dev->dev_ops->session_get_size == NULL) + return 0; + + priv_sess_size = (*dev->dev_ops->session_get_size)(dev); + + return priv_sess_size; + +} + /** 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 ba51329..d883d8c 100644 --- a/lib/librte_cryptodev/rte_cryptodev.h +++ b/lib/librte_cryptodev/rte_cryptodev.h @@ -856,6 +856,18 @@ rte_cryptodev_sym_session_free(uint8_t dev_id, struct rte_cryptodev_sym_session *session); /** + * Get the size of the private session data for a device. + * + * @param dev_id The device identifier. + * + * @return + * - Size of the private data, if successful + * - 0 if device is invalid or does not have private session + */ +unsigned int +rte_cryptodev_get_private_session_size(uint8_t dev_id); + +/** * Attach queue pair with sym session. * * @param qp_id Queue pair to which session will be attached. diff --git a/lib/librte_cryptodev/rte_cryptodev_version.map b/lib/librte_cryptodev/rte_cryptodev_version.map index afe148a..8855a34 100644 --- a/lib/librte_cryptodev/rte_cryptodev_version.map +++ b/lib/librte_cryptodev/rte_cryptodev_version.map @@ -65,6 +65,7 @@ DPDK_17.08 { rte_cryptodev_device_count_by_driver; rte_cryptodev_driver_id_get; rte_cryptodev_driver_name_get; + rte_cryptodev_get_private_session_size; rte_cryptodev_pci_generic_probe; rte_cryptodev_pci_generic_remove; rte_cryptodev_vdev_parse_init_params; -- 2.9.4