From 21b6a35171cc5b1ea22f65a34ce8c74666c4e664 Mon Sep 17 00:00:00 2001 From: Fiona Trahe Date: Wed, 24 Jun 2020 16:26:53 +0200 Subject: [PATCH] cryptodev: add function to check queue pair status This patch adds function that can check if queue pair was already setup. This may be useful when dealing with multi process approach in cryptodev. Signed-off-by: Fiona Trahe Acked-by: Akhil Goyal --- lib/librte_cryptodev/rte_cryptodev.c | 29 +++++++++++++++++++ lib/librte_cryptodev/rte_cryptodev.h | 17 +++++++++++ .../rte_cryptodev_version.map | 3 ++ 3 files changed, 49 insertions(+) diff --git a/lib/librte_cryptodev/rte_cryptodev.c b/lib/librte_cryptodev/rte_cryptodev.c index 9ea4ece65e..33ced00e47 100644 --- a/lib/librte_cryptodev/rte_cryptodev.c +++ b/lib/librte_cryptodev/rte_cryptodev.c @@ -1079,6 +1079,35 @@ rte_cryptodev_close(uint8_t dev_id) return 0; } +int +rte_cryptodev_get_qp_status(uint8_t dev_id, uint16_t queue_pair_id) +{ + struct rte_cryptodev *dev; + + if (!rte_cryptodev_pmd_is_valid_dev(dev_id)) { + CDEV_LOG_ERR("Invalid dev_id=%" PRIu8, dev_id); + return -EINVAL; + } + + dev = &rte_crypto_devices[dev_id]; + if (queue_pair_id >= dev->data->nb_queue_pairs) { + CDEV_LOG_ERR("Invalid queue_pair_id=%d", queue_pair_id); + return -EINVAL; + } + void **qps = dev->data->queue_pairs; + + if (qps[queue_pair_id]) { + CDEV_LOG_DEBUG("qp %d on dev %d is initialised", + queue_pair_id, dev_id); + return 1; + } + + CDEV_LOG_DEBUG("qp %d on dev %d is not initialised", + queue_pair_id, dev_id); + + return 0; +} + int rte_cryptodev_queue_pair_setup(uint8_t dev_id, uint16_t queue_pair_id, const struct rte_cryptodev_qp_conf *qp_conf, int socket_id) diff --git a/lib/librte_cryptodev/rte_cryptodev.h b/lib/librte_cryptodev/rte_cryptodev.h index 4aaee73308..7b3ebc20f8 100644 --- a/lib/librte_cryptodev/rte_cryptodev.h +++ b/lib/librte_cryptodev/rte_cryptodev.h @@ -726,6 +726,23 @@ extern int rte_cryptodev_queue_pair_setup(uint8_t dev_id, uint16_t queue_pair_id, const struct rte_cryptodev_qp_conf *qp_conf, int socket_id); +/** + * Get the status of queue pairs setup on a specific crypto device + * + * @param dev_id Crypto device identifier. + * @param queue_pair_id The index of the queue pairs to set up. The + * value must be in the range [0, nb_queue_pair + * - 1] previously supplied to + * rte_cryptodev_configure(). + * @return + * - 0: qp was not configured + * - 1: qp was configured + * - -EINVAL: device was not configured + */ +__rte_experimental +int +rte_cryptodev_get_qp_status(uint8_t dev_id, uint16_t queue_pair_id); + /** * Get the number of queue pairs on a specific crypto device * diff --git a/lib/librte_cryptodev/rte_cryptodev_version.map b/lib/librte_cryptodev/rte_cryptodev_version.map index 07a2d2f020..a7a78dc41f 100644 --- a/lib/librte_cryptodev/rte_cryptodev_version.map +++ b/lib/librte_cryptodev/rte_cryptodev_version.map @@ -103,4 +103,7 @@ EXPERIMENTAL { __rte_cryptodev_trace_asym_session_clear; __rte_cryptodev_trace_dequeue_burst; __rte_cryptodev_trace_enqueue_burst; + + # added in 20.08 + rte_cryptodev_get_qp_status; }; -- 2.20.1