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