From mboxrd@z Thu Jan 1 00:00:00 1970 From: Gagandeep Singh Subject: [PATCH v3 06/15] crypto/caam_jr: add device basic ops Date: Mon, 22 Oct 2018 13:31:13 +0000 Message-ID: <20181022133021.11264-7-g.singh@nxp.com> References: <20181012144055.9461-1-g.singh@nxp.com> <20181022133021.11264-1-g.singh@nxp.com> Mime-Version: 1.0 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable Cc: Gagandeep Singh , Hemant Agrawal To: "dev@dpdk.org" , Akhil Goyal Return-path: Received: from EUR02-HE1-obe.outbound.protection.outlook.com (mail-eopbgr10077.outbound.protection.outlook.com [40.107.1.77]) by dpdk.org (Postfix) with ESMTP id 8CCDF58EC for ; Mon, 22 Oct 2018 15:31:15 +0200 (CEST) In-Reply-To: <20181022133021.11264-1-g.singh@nxp.com> Content-Language: en-US List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" This patch adds following device operations - dev_configure - dev_start - dev_stop - dev_close - dev_infos_get Signed-off-by: Gagandeep Singh Signed-off-by: Hemant Agrawal Acked-by: Akhil Goyal --- drivers/crypto/caam_jr/caam_jr.c | 98 +++++++++++++++++++++++++++++++- 1 file changed, 97 insertions(+), 1 deletion(-) diff --git a/drivers/crypto/caam_jr/caam_jr.c b/drivers/crypto/caam_jr/caam= _jr.c index cb024a979..cdae2a4fc 100644 --- a/drivers/crypto/caam_jr/caam_jr.c +++ b/drivers/crypto/caam_jr/caam_jr.c @@ -98,6 +98,89 @@ hw_flush_job_ring(struct sec_job_ring_t *job_ring, } =20 =20 +static int +caam_jr_dev_configure(struct rte_cryptodev *dev, + struct rte_cryptodev_config *config __rte_unused) +{ + char str[20]; + struct sec_job_ring_t *internals; + + PMD_INIT_FUNC_TRACE(); + + internals =3D dev->data->dev_private; + sprintf(str, "ctx_pool_%d", dev->data->dev_id); + if (!internals->ctx_pool) { + internals->ctx_pool =3D rte_mempool_create((const char *)str, + CTX_POOL_NUM_BUFS, + sizeof(struct caam_jr_op_ctx), + CTX_POOL_CACHE_SIZE, 0, + NULL, NULL, NULL, NULL, + SOCKET_ID_ANY, 0); + if (!internals->ctx_pool) { + CAAM_JR_ERR("%s create failed\n", str); + return -ENOMEM; + } + } else + CAAM_JR_INFO("mempool already created for dev_id : %d", + dev->data->dev_id); + + return 0; +} + +static int +caam_jr_dev_start(struct rte_cryptodev *dev __rte_unused) +{ + PMD_INIT_FUNC_TRACE(); + return 0; +} + +static void +caam_jr_dev_stop(struct rte_cryptodev *dev __rte_unused) +{ + PMD_INIT_FUNC_TRACE(); +} + +static int +caam_jr_dev_close(struct rte_cryptodev *dev) +{ + struct sec_job_ring_t *internals; + + PMD_INIT_FUNC_TRACE(); + + if (dev =3D=3D NULL) + return -ENOMEM; + + internals =3D dev->data->dev_private; + rte_mempool_free(internals->ctx_pool); + internals->ctx_pool =3D NULL; + + return 0; +} + +static void +caam_jr_dev_infos_get(struct rte_cryptodev *dev, + struct rte_cryptodev_info *info) +{ + struct sec_job_ring_t *internals =3D dev->data->dev_private; + + PMD_INIT_FUNC_TRACE(); + if (info !=3D NULL) { + info->max_nb_queue_pairs =3D internals->max_nb_queue_pairs; + info->feature_flags =3D dev->feature_flags; + info->sym.max_nb_sessions =3D internals->max_nb_sessions; + info->driver_id =3D cryptodev_driver_id; + } +} + +static struct rte_cryptodev_ops caam_jr_ops =3D { + .dev_configure =3D caam_jr_dev_configure, + .dev_start =3D caam_jr_dev_start, + .dev_stop =3D caam_jr_dev_stop, + .dev_close =3D caam_jr_dev_close, + .dev_infos_get =3D caam_jr_dev_infos_get, +}; + + /* @brief Flush job rings of any processed descs. * The processed descs are silently dropped, * WITHOUT being notified to UA. @@ -361,7 +444,20 @@ caam_jr_dev_init(const char *name, } =20 dev->driver_id =3D cryptodev_driver_id; - dev->dev_ops =3D NULL; + dev->dev_ops =3D &caam_jr_ops; + + /* register rx/tx burst functions for data path */ + dev->dequeue_burst =3D NULL; + dev->enqueue_burst =3D NULL; + dev->feature_flags =3D RTE_CRYPTODEV_FF_SYMMETRIC_CRYPTO | + RTE_CRYPTODEV_FF_HW_ACCELERATED | + RTE_CRYPTODEV_FF_SYM_OPERATION_CHAINING | + RTE_CRYPTODEV_FF_SECURITY | + RTE_CRYPTODEV_FF_IN_PLACE_SGL | + RTE_CRYPTODEV_FF_OOP_SGL_IN_SGL_OUT | + RTE_CRYPTODEV_FF_OOP_SGL_IN_LB_OUT | + RTE_CRYPTODEV_FF_OOP_LB_IN_SGL_OUT | + RTE_CRYPTODEV_FF_OOP_LB_IN_LB_OUT; =20 /* For secondary processes, we don't initialise any further as primary * has already done this work. Only check we don't need a different --=20 2.17.1