cdf4f705893534ecd08057bcc4f4840a2ac2b212
[dpdk.git] / drivers / crypto / qat / qat_device.c
1 /* SPDX-License-Identifier: BSD-3-Clause
2  * Copyright(c) 2018 Intel Corporation
3  */
4
5 #include "qat_device.h"
6 #include "adf_transport_access_macros.h"
7 #include "qat_qp.h"
8
9 /* Hardware device information per generation */
10 __extension__
11 struct qat_gen_hw_data qp_gen_config[] =  {
12         [QAT_GEN1] = {
13                 .dev_gen = QAT_GEN1,
14                 .qp_hw_data = qat_gen1_qps,
15         },
16         [QAT_GEN2] = {
17                 .dev_gen = QAT_GEN2,
18                 .qp_hw_data = qat_gen1_qps,
19                 /* gen2 has same ring layout as gen1 */
20         },
21 };
22
23 int qat_dev_config(__rte_unused struct rte_cryptodev *dev,
24                 __rte_unused struct rte_cryptodev_config *config)
25 {
26         PMD_INIT_FUNC_TRACE();
27         return 0;
28 }
29
30 int qat_dev_start(__rte_unused struct rte_cryptodev *dev)
31 {
32         PMD_INIT_FUNC_TRACE();
33         return 0;
34 }
35
36 void qat_dev_stop(__rte_unused struct rte_cryptodev *dev)
37 {
38         PMD_INIT_FUNC_TRACE();
39 }
40
41 int qat_dev_close(struct rte_cryptodev *dev)
42 {
43         int i, ret;
44
45         PMD_INIT_FUNC_TRACE();
46
47         for (i = 0; i < dev->data->nb_queue_pairs; i++) {
48                 ret = qat_sym_qp_release(dev, i);
49                 if (ret < 0)
50                         return ret;
51         }
52
53         return 0;
54 }
55
56 void qat_dev_info_get(struct rte_cryptodev *dev,
57                         struct rte_cryptodev_info *info)
58 {
59         struct qat_pmd_private *internals = dev->data->dev_private;
60         const struct qat_qp_hw_data *sym_hw_qps =
61                 qp_gen_config[internals->qat_dev_gen]
62                               .qp_hw_data[QAT_SERVICE_SYMMETRIC];
63
64         PMD_INIT_FUNC_TRACE();
65         if (info != NULL) {
66                 info->max_nb_queue_pairs =
67                         qat_qps_per_service(sym_hw_qps, QAT_SERVICE_SYMMETRIC);
68                 info->feature_flags = dev->feature_flags;
69                 info->capabilities = internals->qat_dev_capabilities;
70                 info->sym.max_nb_sessions = internals->max_nb_sessions;
71                 info->driver_id = cryptodev_qat_driver_id;
72                 info->pci_dev = RTE_DEV_TO_PCI(dev->device);
73         }
74 }