1bc9ef81cSPiotr Bronowski /* SPDX-License-Identifier: BSD-3-Clause
2bc9ef81cSPiotr Bronowski * Copyright(c) 2016-2021 Intel Corporation
3bc9ef81cSPiotr Bronowski */
4bc9ef81cSPiotr Bronowski
54851ef2bSDavid Marchand #include <bus_vdev_driver.h>
6bc9ef81cSPiotr Bronowski #include <rte_common.h>
7bc9ef81cSPiotr Bronowski #include <rte_cpuflags.h>
8bc9ef81cSPiotr Bronowski #include <rte_cryptodev.h>
9bc9ef81cSPiotr Bronowski #include <rte_hexdump.h>
10bc9ef81cSPiotr Bronowski #include <rte_malloc.h>
11bc9ef81cSPiotr Bronowski
12bc9ef81cSPiotr Bronowski #include "pmd_kasumi_priv.h"
13*796de061SBrian Dooley #include "pmd_aesni_mb_priv.h"
14bc9ef81cSPiotr Bronowski
15bc9ef81cSPiotr Bronowski struct rte_cryptodev_ops kasumi_pmd_ops = {
16bc9ef81cSPiotr Bronowski .dev_configure = ipsec_mb_config,
17bc9ef81cSPiotr Bronowski .dev_start = ipsec_mb_start,
18bc9ef81cSPiotr Bronowski .dev_stop = ipsec_mb_stop,
19bc9ef81cSPiotr Bronowski .dev_close = ipsec_mb_close,
20bc9ef81cSPiotr Bronowski
21bc9ef81cSPiotr Bronowski .stats_get = ipsec_mb_stats_get,
22bc9ef81cSPiotr Bronowski .stats_reset = ipsec_mb_stats_reset,
23bc9ef81cSPiotr Bronowski
24bc9ef81cSPiotr Bronowski .dev_infos_get = ipsec_mb_info_get,
25bc9ef81cSPiotr Bronowski
26bc9ef81cSPiotr Bronowski .queue_pair_setup = ipsec_mb_qp_setup,
27bc9ef81cSPiotr Bronowski .queue_pair_release = ipsec_mb_qp_release,
28bc9ef81cSPiotr Bronowski
29bc9ef81cSPiotr Bronowski .sym_session_get_size = ipsec_mb_sym_session_get_size,
30bc9ef81cSPiotr Bronowski .sym_session_configure = ipsec_mb_sym_session_configure,
31bc9ef81cSPiotr Bronowski .sym_session_clear = ipsec_mb_sym_session_clear
32bc9ef81cSPiotr Bronowski };
33bc9ef81cSPiotr Bronowski
34bc9ef81cSPiotr Bronowski struct rte_cryptodev_ops *rte_kasumi_pmd_ops = &kasumi_pmd_ops;
35bc9ef81cSPiotr Bronowski
36bc9ef81cSPiotr Bronowski static int
kasumi_probe(struct rte_vdev_device * vdev)37bc9ef81cSPiotr Bronowski kasumi_probe(struct rte_vdev_device *vdev)
38bc9ef81cSPiotr Bronowski {
39bc9ef81cSPiotr Bronowski return ipsec_mb_create(vdev, IPSEC_MB_PMD_TYPE_KASUMI);
40bc9ef81cSPiotr Bronowski }
41bc9ef81cSPiotr Bronowski
42bc9ef81cSPiotr Bronowski static struct rte_vdev_driver cryptodev_kasumi_pmd_drv = {
43bc9ef81cSPiotr Bronowski .probe = kasumi_probe,
44bc9ef81cSPiotr Bronowski .remove = ipsec_mb_remove
45bc9ef81cSPiotr Bronowski };
46bc9ef81cSPiotr Bronowski
47bc9ef81cSPiotr Bronowski static struct cryptodev_driver kasumi_crypto_drv;
48bc9ef81cSPiotr Bronowski
49bc9ef81cSPiotr Bronowski RTE_PMD_REGISTER_VDEV(CRYPTODEV_NAME_KASUMI_PMD, cryptodev_kasumi_pmd_drv);
50bc9ef81cSPiotr Bronowski RTE_PMD_REGISTER_ALIAS(CRYPTODEV_NAME_KASUMI_PMD, cryptodev_kasumi_pmd);
51bc9ef81cSPiotr Bronowski RTE_PMD_REGISTER_PARAM_STRING(CRYPTODEV_NAME_KASUMI_PMD,
52bc9ef81cSPiotr Bronowski "max_nb_queue_pairs=<int> socket_id=<int>");
53bc9ef81cSPiotr Bronowski RTE_PMD_REGISTER_CRYPTO_DRIVER(kasumi_crypto_drv,
54bc9ef81cSPiotr Bronowski cryptodev_kasumi_pmd_drv.driver,
55bc9ef81cSPiotr Bronowski pmd_driver_id_kasumi);
56bc9ef81cSPiotr Bronowski
57bc9ef81cSPiotr Bronowski /* Constructor function to register kasumi PMD */
RTE_INIT(ipsec_mb_register_kasumi)58bc9ef81cSPiotr Bronowski RTE_INIT(ipsec_mb_register_kasumi)
59bc9ef81cSPiotr Bronowski {
60bc9ef81cSPiotr Bronowski struct ipsec_mb_internals *kasumi_data
61bc9ef81cSPiotr Bronowski = &ipsec_mb_pmds[IPSEC_MB_PMD_TYPE_KASUMI];
62bc9ef81cSPiotr Bronowski
63bc9ef81cSPiotr Bronowski kasumi_data->caps = kasumi_capabilities;
64*796de061SBrian Dooley kasumi_data->dequeue_burst = aesni_mb_dequeue_burst;
65bc9ef81cSPiotr Bronowski kasumi_data->feature_flags = RTE_CRYPTODEV_FF_SYMMETRIC_CRYPTO
66bc9ef81cSPiotr Bronowski | RTE_CRYPTODEV_FF_SYM_OPERATION_CHAINING
67bc9ef81cSPiotr Bronowski | RTE_CRYPTODEV_FF_NON_BYTE_ALIGNED_DATA
68bc9ef81cSPiotr Bronowski | RTE_CRYPTODEV_FF_OOP_SGL_IN_LB_OUT
69bc9ef81cSPiotr Bronowski | RTE_CRYPTODEV_FF_SYM_SESSIONLESS
70bc9ef81cSPiotr Bronowski | RTE_CRYPTODEV_FF_OOP_LB_IN_LB_OUT;
71bc9ef81cSPiotr Bronowski kasumi_data->internals_priv_size = 0;
72bc9ef81cSPiotr Bronowski kasumi_data->ops = &kasumi_pmd_ops;
73*796de061SBrian Dooley kasumi_data->qp_priv_size = sizeof(struct aesni_mb_qp_data);
74*796de061SBrian Dooley kasumi_data->session_configure = aesni_mb_session_configure;
75*796de061SBrian Dooley kasumi_data->session_priv_size = sizeof(struct aesni_mb_session);
76bc9ef81cSPiotr Bronowski }
77