xref: /dpdk/drivers/common/qat/qat_common.h (revision 68a03efeed657e6e05f281479b33b51102797e15)
1 /* SPDX-License-Identifier: BSD-3-Clause
2  * Copyright(c) 2018 Intel Corporation
3  */
4 #ifndef _QAT_COMMON_H_
5 #define _QAT_COMMON_H_
6 
7 #include <stdint.h>
8 
9 #include <rte_mbuf.h>
10 
11 /**< Intel(R) QAT device name for PCI registration */
12 #define QAT_PCI_NAME	qat
13 #define QAT_64_BTYE_ALIGN_MASK (~0x3f)
14 
15 /* Intel(R) QuickAssist Technology device generation is enumerated
16  * from one according to the generation of the device
17  */
18 enum qat_device_gen {
19 	QAT_GEN1 = 1,
20 	QAT_GEN2,
21 	QAT_GEN3
22 };
23 
24 enum qat_service_type {
25 	QAT_SERVICE_ASYMMETRIC = 0,
26 	QAT_SERVICE_SYMMETRIC,
27 	QAT_SERVICE_COMPRESSION,
28 	QAT_SERVICE_INVALID
29 };
30 
31 #define QAT_MAX_SERVICES		(QAT_SERVICE_INVALID)
32 
33 /**< Common struct for scatter-gather list operations */
34 struct qat_flat_buf {
35 	uint32_t len;
36 	uint32_t resrvd;
37 	uint64_t addr;
38 } __rte_packed;
39 
40 #define qat_sgl_hdr  struct { \
41 	uint64_t resrvd; \
42 	uint32_t num_bufs; \
43 	uint32_t num_mapped_bufs; \
44 }
45 
46 __extension__
47 struct qat_sgl {
48 	qat_sgl_hdr;
49 	/* flexible array of flat buffers*/
50 	struct qat_flat_buf buffers[0];
51 } __rte_packed __rte_cache_aligned;
52 
53 /** Common, i.e. not service-specific, statistics */
54 struct qat_common_stats {
55 	uint64_t enqueued_count;
56 	/**< Count of all operations enqueued */
57 	uint64_t dequeued_count;
58 	/**< Count of all operations dequeued */
59 
60 	uint64_t enqueue_err_count;
61 	/**< Total error count on operations enqueued */
62 	uint64_t dequeue_err_count;
63 	/**< Total error count on operations dequeued */
64 	uint64_t threshold_hit_count;
65 	/**< Total number of times min qp threshold condition was fulfilled */
66 
67 };
68 
69 struct qat_pci_device;
70 
71 int
72 qat_sgl_fill_array(struct rte_mbuf *buf, int64_t offset,
73 		void *list_in, uint32_t data_len,
74 		const uint16_t max_segs);
75 void
76 qat_stats_get(struct qat_pci_device *dev,
77 		struct qat_common_stats *stats,
78 		enum qat_service_type service);
79 void
80 qat_stats_reset(struct qat_pci_device *dev,
81 		enum qat_service_type service);
82 
83 #endif /* _QAT_COMMON_H_ */
84