From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga07.intel.com (mga07.intel.com [134.134.136.100]) by dpdk.org (Postfix) with ESMTP id 4BD3C98 for ; Tue, 21 Feb 2017 16:13:43 +0100 (CET) Received: from fmsmga005.fm.intel.com ([10.253.24.32]) by orsmga105.jf.intel.com with ESMTP; 21 Feb 2017 07:13:42 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.35,190,1484035200"; d="scan'208";a="67839862" Received: from silpixa00381633.ir.intel.com (HELO silpixa00381633.ger.corp.intel.com) ([10.237.222.114]) by fmsmga005.fm.intel.com with ESMTP; 21 Feb 2017 07:13:41 -0800 From: Fan Zhang To: dev@dpdk.org Cc: pablo.de.lara.guarch@intel.com Date: Tue, 21 Feb 2017 15:14:46 +0000 Message-Id: <1487690086-45732-1-git-send-email-roy.fan.zhang@intel.com> X-Mailer: git-send-email 2.7.4 Subject: [dpdk-dev] [PATCH] crypto/scheduler: add get attached slaves API X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 21 Feb 2017 15:13:43 -0000 This patch adds an API to get the run-time slaves number and list of a cryptodev scheduler PMD. Signed-off-by: Fan Zhang --- drivers/crypto/scheduler/rte_cryptodev_scheduler.c | 31 ++++++++++++++++++++++ drivers/crypto/scheduler/rte_cryptodev_scheduler.h | 23 ++++++++++++++++ .../scheduler/rte_pmd_crypto_scheduler_version.map | 7 +++++ 3 files changed, 61 insertions(+) diff --git a/drivers/crypto/scheduler/rte_cryptodev_scheduler.c b/drivers/crypto/scheduler/rte_cryptodev_scheduler.c index 11e8143..55c0ec4 100644 --- a/drivers/crypto/scheduler/rte_cryptodev_scheduler.c +++ b/drivers/crypto/scheduler/rte_cryptodev_scheduler.c @@ -469,3 +469,34 @@ rte_cryptodev_scheduler_load_user_scheduler(uint8_t scheduler_id, return 0; } + +int +rte_cryptodev_scheduler_slaves_get(uint8_t scheduler_id, uint8_t *slaves) +{ + struct rte_cryptodev *dev = rte_cryptodev_pmd_get_dev(scheduler_id); + struct scheduler_ctx *sched_ctx; + int nb_slaves = 0; + + if (!dev) { + CS_LOG_ERR("Operation not supported"); + return -ENOTSUP; + } + + if (dev->dev_type != RTE_CRYPTODEV_SCHEDULER_PMD) { + CS_LOG_ERR("Operation not supported"); + return -ENOTSUP; + } + + sched_ctx = dev->data->dev_private; + + nb_slaves = (int)sched_ctx->nb_slaves; + + if (slaves) { + int i; + + for (i = 0; i < nb_slaves; i++) + slaves[i] = sched_ctx->slaves[i].dev_id; + } + + return 0; +} diff --git a/drivers/crypto/scheduler/rte_cryptodev_scheduler.h b/drivers/crypto/scheduler/rte_cryptodev_scheduler.h index 7ef44e7..0e32895 100644 --- a/drivers/crypto/scheduler/rte_cryptodev_scheduler.h +++ b/drivers/crypto/scheduler/rte_cryptodev_scheduler.h @@ -40,6 +40,11 @@ extern "C" { #endif +/**< Maximum number of bonded devices per devices */ +#ifndef RTE_CRYPTODEV_SCHEDULER_MAX_NB_SLAVES +#define RTE_CRYPTODEV_SCHEDULER_MAX_NB_SLAVES (8) +#endif + /** * Crypto scheduler PMD operation modes */ @@ -143,6 +148,24 @@ rte_cryptodev_scheduler_ordering_set(uint8_t scheduler_id, int rte_cryptodev_scheduler_ordering_get(uint8_t scheduler_id); +/** + * Get the the attached slaves' count and/or ID + * + *@param scheduler_id The target scheduler device ID + * slaves If successful, the slaves' device + * IDs will be written. This parameter + * can be NULL, but otherwise please NOTE + * it should be an uint8_t array of at least + * RTE_CRYPTODEV_SCHEDULER_MAX_NB_SLAVES + * elements. + * + * @return + * non-negative number: the number of slaves attached + * negative integer if error occurs. + */ +int +rte_cryptodev_scheduler_slaves_get(uint8_t scheduler_id, uint8_t *slaves); + typedef uint16_t (*rte_cryptodev_scheduler_burst_enqueue_t)(void *qp_ctx, struct rte_crypto_op **ops, uint16_t nb_ops); diff --git a/drivers/crypto/scheduler/rte_pmd_crypto_scheduler_version.map b/drivers/crypto/scheduler/rte_pmd_crypto_scheduler_version.map index a485b43..69cf0c6 100644 --- a/drivers/crypto/scheduler/rte_pmd_crypto_scheduler_version.map +++ b/drivers/crypto/scheduler/rte_pmd_crypto_scheduler_version.map @@ -10,3 +10,10 @@ DPDK_17.02 { rte_cryptodev_scheduler_ordering_get; }; + +DPDK_17.05 { + global: + + rte_cryptodev_scheduler_slaves_get; + +} DPDK_17.02; -- 2.7.4