15438e4ecSFan Zhang /* SPDX-License-Identifier: BSD-3-Clause
25438e4ecSFan Zhang * Copyright(c) 2021 Intel Corporation
35438e4ecSFan Zhang */
45438e4ecSFan Zhang
55438e4ecSFan Zhang #include "qat_device.h"
64c778f1aSFan Zhang #include "qat_qp.h"
75438e4ecSFan Zhang #include "adf_transport_access_macros.h"
85438e4ecSFan Zhang #include "qat_dev_gens.h"
95438e4ecSFan Zhang
105438e4ecSFan Zhang #include <stdint.h>
115438e4ecSFan Zhang
124c778f1aSFan Zhang __extension__
134c778f1aSFan Zhang const struct qat_qp_hw_data qat_gen3_qps[QAT_MAX_SERVICES]
144c778f1aSFan Zhang [ADF_MAX_QPS_ON_ANY_SERVICE] = {
154c778f1aSFan Zhang /* queue pairs which provide an asymmetric crypto service */
164c778f1aSFan Zhang [QAT_SERVICE_ASYMMETRIC] = {
174c778f1aSFan Zhang {
184c778f1aSFan Zhang .service_type = QAT_SERVICE_ASYMMETRIC,
194c778f1aSFan Zhang .hw_bundle_num = 0,
204c778f1aSFan Zhang .tx_ring_num = 0,
214c778f1aSFan Zhang .rx_ring_num = 4,
224c778f1aSFan Zhang .tx_msg_size = 64,
234c778f1aSFan Zhang .rx_msg_size = 32,
244c778f1aSFan Zhang }
254c778f1aSFan Zhang },
264c778f1aSFan Zhang /* queue pairs which provide a symmetric crypto service */
274c778f1aSFan Zhang [QAT_SERVICE_SYMMETRIC] = {
284c778f1aSFan Zhang {
294c778f1aSFan Zhang .service_type = QAT_SERVICE_SYMMETRIC,
304c778f1aSFan Zhang .hw_bundle_num = 0,
314c778f1aSFan Zhang .tx_ring_num = 1,
324c778f1aSFan Zhang .rx_ring_num = 5,
334c778f1aSFan Zhang .tx_msg_size = 128,
344c778f1aSFan Zhang .rx_msg_size = 32,
354c778f1aSFan Zhang }
364c778f1aSFan Zhang },
374c778f1aSFan Zhang /* queue pairs which provide a compression service */
384c778f1aSFan Zhang [QAT_SERVICE_COMPRESSION] = {
394c778f1aSFan Zhang {
404c778f1aSFan Zhang .service_type = QAT_SERVICE_COMPRESSION,
414c778f1aSFan Zhang .hw_bundle_num = 0,
424c778f1aSFan Zhang .tx_ring_num = 3,
434c778f1aSFan Zhang .rx_ring_num = 7,
444c778f1aSFan Zhang .tx_msg_size = 128,
454c778f1aSFan Zhang .rx_msg_size = 32,
464c778f1aSFan Zhang }
474c778f1aSFan Zhang }
484c778f1aSFan Zhang };
494c778f1aSFan Zhang
504c778f1aSFan Zhang
514c778f1aSFan Zhang static const struct qat_qp_hw_data *
qat_qp_get_hw_data_gen3(struct qat_pci_device * dev __rte_unused,enum qat_service_type service_type,uint16_t qp_id)524c778f1aSFan Zhang qat_qp_get_hw_data_gen3(struct qat_pci_device *dev __rte_unused,
534c778f1aSFan Zhang enum qat_service_type service_type, uint16_t qp_id)
544c778f1aSFan Zhang {
554c778f1aSFan Zhang return qat_gen3_qps[service_type] + qp_id;
564c778f1aSFan Zhang }
574c778f1aSFan Zhang
584c778f1aSFan Zhang static struct qat_qp_hw_spec_funcs qat_qp_hw_spec_gen3 = {
594c778f1aSFan Zhang .qat_qp_rings_per_service = qat_qp_rings_per_service_gen1,
604c778f1aSFan Zhang .qat_qp_build_ring_base = qat_qp_csr_build_ring_base_gen1,
614c778f1aSFan Zhang .qat_qp_adf_arb_enable = qat_qp_adf_arb_enable_gen1,
624c778f1aSFan Zhang .qat_qp_adf_arb_disable = qat_qp_adf_arb_disable_gen1,
634c778f1aSFan Zhang .qat_qp_adf_configure_queues = qat_qp_adf_configure_queues_gen1,
644c778f1aSFan Zhang .qat_qp_csr_write_tail = qat_qp_csr_write_tail_gen1,
654c778f1aSFan Zhang .qat_qp_csr_write_head = qat_qp_csr_write_head_gen1,
664c778f1aSFan Zhang .qat_qp_csr_setup = qat_qp_csr_setup_gen1,
674c778f1aSFan Zhang .qat_qp_get_hw_data = qat_qp_get_hw_data_gen3
684c778f1aSFan Zhang };
694c778f1aSFan Zhang
70b3cbbcdfSArek Kusztal static int
qat_dev_get_slice_map_gen3(uint32_t * map,const struct rte_pci_device * pci_dev)71*d848fcb8SVikash Poddar qat_dev_get_slice_map_gen3(uint32_t *map,
72b3cbbcdfSArek Kusztal const struct rte_pci_device *pci_dev)
73b3cbbcdfSArek Kusztal {
74b3cbbcdfSArek Kusztal if (rte_pci_read_config(pci_dev, map,
75b3cbbcdfSArek Kusztal ADF1_C4XXXIOV_VFLEGFUSES_LEN,
76b3cbbcdfSArek Kusztal ADF_C4XXXIOV_VFLEGFUSES_OFFSET) < 0) {
77b3cbbcdfSArek Kusztal return -1;
78b3cbbcdfSArek Kusztal }
79b3cbbcdfSArek Kusztal return 0;
80b3cbbcdfSArek Kusztal }
81b3cbbcdfSArek Kusztal
825438e4ecSFan Zhang static struct qat_dev_hw_spec_funcs qat_dev_hw_spec_gen3 = {
835438e4ecSFan Zhang .qat_dev_reset_ring_pairs = qat_reset_ring_pairs_gen1,
845438e4ecSFan Zhang .qat_dev_get_transport_bar = qat_dev_get_transport_bar_gen1,
855438e4ecSFan Zhang .qat_dev_get_misc_bar = qat_dev_get_misc_bar_gen1,
865438e4ecSFan Zhang .qat_dev_read_config = qat_dev_read_config_gen1,
875438e4ecSFan Zhang .qat_dev_get_extra_size = qat_dev_get_extra_size_gen1,
88b3cbbcdfSArek Kusztal .qat_dev_get_slice_map = qat_dev_get_slice_map_gen3,
895438e4ecSFan Zhang };
905438e4ecSFan Zhang
RTE_INIT(qat_dev_gen_gen3_init)915438e4ecSFan Zhang RTE_INIT(qat_dev_gen_gen3_init)
925438e4ecSFan Zhang {
934c778f1aSFan Zhang qat_qp_hw_spec[QAT_GEN3] = &qat_qp_hw_spec_gen3;
945438e4ecSFan Zhang qat_dev_hw_spec[QAT_GEN3] = &qat_dev_hw_spec_gen3;
955438e4ecSFan Zhang qat_gen_config[QAT_GEN3].dev_gen = QAT_GEN3;
965438e4ecSFan Zhang }
97