1*dddfb0d9SAndrew Boyer /* SPDX-License-Identifier: BSD-3-Clause 2*dddfb0d9SAndrew Boyer * Copyright 2021-2024 Advanced Micro Devices, Inc. 3*dddfb0d9SAndrew Boyer */ 4*dddfb0d9SAndrew Boyer 5*dddfb0d9SAndrew Boyer #include <rte_cryptodev.h> 6*dddfb0d9SAndrew Boyer #include <cryptodev_pmd.h> 7*dddfb0d9SAndrew Boyer #include <rte_errno.h> 8*dddfb0d9SAndrew Boyer #include <rte_malloc.h> 9*dddfb0d9SAndrew Boyer #include <rte_mempool.h> 10*dddfb0d9SAndrew Boyer 11*dddfb0d9SAndrew Boyer #include "ionic_crypto.h" 12*dddfb0d9SAndrew Boyer 13*dddfb0d9SAndrew Boyer static int 14*dddfb0d9SAndrew Boyer iocpt_op_config(struct rte_cryptodev *cdev, 15*dddfb0d9SAndrew Boyer struct rte_cryptodev_config *config __rte_unused) 16*dddfb0d9SAndrew Boyer { 17*dddfb0d9SAndrew Boyer struct iocpt_dev *dev = cdev->data->dev_private; 18*dddfb0d9SAndrew Boyer 19*dddfb0d9SAndrew Boyer iocpt_configure(dev); 20*dddfb0d9SAndrew Boyer 21*dddfb0d9SAndrew Boyer return 0; 22*dddfb0d9SAndrew Boyer } 23*dddfb0d9SAndrew Boyer 24*dddfb0d9SAndrew Boyer static int 25*dddfb0d9SAndrew Boyer iocpt_op_close(struct rte_cryptodev *cdev) 26*dddfb0d9SAndrew Boyer { 27*dddfb0d9SAndrew Boyer struct iocpt_dev *dev = cdev->data->dev_private; 28*dddfb0d9SAndrew Boyer 29*dddfb0d9SAndrew Boyer iocpt_deinit(dev); 30*dddfb0d9SAndrew Boyer 31*dddfb0d9SAndrew Boyer return 0; 32*dddfb0d9SAndrew Boyer } 33*dddfb0d9SAndrew Boyer 34*dddfb0d9SAndrew Boyer static void 35*dddfb0d9SAndrew Boyer iocpt_op_info_get(struct rte_cryptodev *cdev, struct rte_cryptodev_info *info) 36*dddfb0d9SAndrew Boyer { 37*dddfb0d9SAndrew Boyer struct iocpt_dev *dev = cdev->data->dev_private; 38*dddfb0d9SAndrew Boyer 39*dddfb0d9SAndrew Boyer if (info == NULL) 40*dddfb0d9SAndrew Boyer return; 41*dddfb0d9SAndrew Boyer 42*dddfb0d9SAndrew Boyer info->max_nb_queue_pairs = dev->max_qps; 43*dddfb0d9SAndrew Boyer info->feature_flags = dev->features; 44*dddfb0d9SAndrew Boyer info->capabilities = iocpt_get_caps(info->feature_flags); 45*dddfb0d9SAndrew Boyer info->sym.max_nb_sessions = dev->max_sessions; 46*dddfb0d9SAndrew Boyer info->driver_id = dev->driver_id; 47*dddfb0d9SAndrew Boyer info->min_mbuf_headroom_req = 0; 48*dddfb0d9SAndrew Boyer info->min_mbuf_tailroom_req = 0; 49*dddfb0d9SAndrew Boyer } 50*dddfb0d9SAndrew Boyer 51*dddfb0d9SAndrew Boyer static struct rte_cryptodev_ops iocpt_ops = { 52*dddfb0d9SAndrew Boyer .dev_configure = iocpt_op_config, 53*dddfb0d9SAndrew Boyer .dev_close = iocpt_op_close, 54*dddfb0d9SAndrew Boyer .dev_infos_get = iocpt_op_info_get, 55*dddfb0d9SAndrew Boyer }; 56*dddfb0d9SAndrew Boyer 57*dddfb0d9SAndrew Boyer int 58*dddfb0d9SAndrew Boyer iocpt_assign_ops(struct rte_cryptodev *cdev) 59*dddfb0d9SAndrew Boyer { 60*dddfb0d9SAndrew Boyer struct iocpt_dev *dev = cdev->data->dev_private; 61*dddfb0d9SAndrew Boyer 62*dddfb0d9SAndrew Boyer cdev->dev_ops = &iocpt_ops; 63*dddfb0d9SAndrew Boyer cdev->feature_flags = dev->features; 64*dddfb0d9SAndrew Boyer 65*dddfb0d9SAndrew Boyer return 0; 66*dddfb0d9SAndrew Boyer } 67