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 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 */ 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