xref: /dpdk/drivers/common/qat/dev/qat_dev_gen3.c (revision d848fcb84e6cd2bf4c3e943c1188daf8b4631ab8)
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