xref: /dpdk/drivers/compress/octeontx/otx_zip.h (revision fd51012de5369679e807be1d6a81d63ef15015ce)
143e610bbSSunila Sahu /* SPDX-License-Identifier: BSD-3-Clause
243e610bbSSunila Sahu  * Copyright(c) 2018 Cavium, Inc
343e610bbSSunila Sahu  */
443e610bbSSunila Sahu 
543e610bbSSunila Sahu #ifndef _RTE_OCTEONTX_ZIP_VF_H_
643e610bbSSunila Sahu #define _RTE_OCTEONTX_ZIP_VF_H_
743e610bbSSunila Sahu 
843e610bbSSunila Sahu #include <unistd.h>
943e610bbSSunila Sahu 
101f37cb2bSDavid Marchand #include <bus_pci_driver.h>
1143e610bbSSunila Sahu #include <rte_comp.h>
1243e610bbSSunila Sahu #include <rte_compressdev.h>
1343e610bbSSunila Sahu #include <rte_compressdev_pmd.h>
1443e610bbSSunila Sahu #include <rte_malloc.h>
1543e610bbSSunila Sahu #include <rte_memory.h>
1643e610bbSSunila Sahu #include <rte_spinlock.h>
1743e610bbSSunila Sahu 
1843e610bbSSunila Sahu #include <zip_regs.h>
1943e610bbSSunila Sahu 
204d6194dbSFerruh Yigit extern int octtx_zip_logtype_driver;
212b843cacSDavid Marchand #define RTE_LOGTYPE_OCTTX_ZIP_DRIVER octtx_zip_logtype_driver
2243e610bbSSunila Sahu 
2343e610bbSSunila Sahu /* ZIP VF Control/Status registers (CSRs): */
2443e610bbSSunila Sahu /* VF_BAR0: */
2543e610bbSSunila Sahu #define ZIP_VQ_ENA              (0x10)
2643e610bbSSunila Sahu #define ZIP_VQ_SBUF_ADDR        (0x20)
2743e610bbSSunila Sahu #define ZIP_VF_PF_MBOXX(x)      (0x400 | (x)<<3)
2843e610bbSSunila Sahu #define ZIP_VQ_DOORBELL         (0x1000)
2943e610bbSSunila Sahu 
3043e610bbSSunila Sahu /**< Vendor ID */
3143e610bbSSunila Sahu #define PCI_VENDOR_ID_CAVIUM	0x177D
3243e610bbSSunila Sahu /**< PCI device id of ZIP VF */
3343e610bbSSunila Sahu #define PCI_DEVICE_ID_OCTEONTX_ZIPVF	0xA037
34a80ea5c0SMahipal Challa #define PCI_DEVICE_ID_OCTEONTX2_ZIPVF	0xA083
3543e610bbSSunila Sahu 
367be78d02SJosh Soref /* maximum number of zip vf devices */
3743e610bbSSunila Sahu #define ZIP_MAX_VFS 8
3843e610bbSSunila Sahu 
3943e610bbSSunila Sahu /* max size of one chunk */
4043e610bbSSunila Sahu #define ZIP_MAX_CHUNK_SIZE	8192
4143e610bbSSunila Sahu 
4243e610bbSSunila Sahu /* each instruction is fixed 128 bytes */
4343e610bbSSunila Sahu #define ZIP_CMD_SIZE		128
4443e610bbSSunila Sahu 
4543e610bbSSunila Sahu #define ZIP_CMD_SIZE_WORDS	(ZIP_CMD_SIZE >> 3) /* 16 64_bit words */
4643e610bbSSunila Sahu 
4743e610bbSSunila Sahu /* size of next chunk buffer pointer */
4843e610bbSSunila Sahu #define ZIP_MAX_NCBP_SIZE	8
4943e610bbSSunila Sahu 
5043e610bbSSunila Sahu /* size of instruction queue in units of instruction size */
5143e610bbSSunila Sahu #define ZIP_MAX_NUM_CMDS	((ZIP_MAX_CHUNK_SIZE - ZIP_MAX_NCBP_SIZE) / \
5243e610bbSSunila Sahu 				ZIP_CMD_SIZE) /* 63 */
5343e610bbSSunila Sahu 
5443e610bbSSunila Sahu /* size of instruct queue in bytes */
5543e610bbSSunila Sahu #define ZIP_MAX_CMDQ_SIZE	((ZIP_MAX_NUM_CMDS * ZIP_CMD_SIZE) + \
5643e610bbSSunila Sahu 				ZIP_MAX_NCBP_SIZE)/* ~8072ull */
5743e610bbSSunila Sahu 
5843e610bbSSunila Sahu #define ZIP_BUF_SIZE	256
5909442498SMahipal Challa #define ZIP_SGBUF_SIZE	(5 * 1024)
60938f3f5fSMahipal Challa #define ZIP_BURST_SIZE	64
61938f3f5fSMahipal Challa 
62938f3f5fSMahipal Challa #define ZIP_MAXSEG_SIZE      59460
63938f3f5fSMahipal Challa #define ZIP_EXTRABUF_SIZE    4096
6409442498SMahipal Challa #define ZIP_MAX_SEGS         300
6509442498SMahipal Challa #define ZIP_MAX_DATA_SIZE    (16*1024*1024)
6643e610bbSSunila Sahu 
6743e610bbSSunila Sahu #define ZIP_SGPTR_ALIGN	16
6843e610bbSSunila Sahu #define ZIP_CMDQ_ALIGN	128
6943e610bbSSunila Sahu #define MAX_SG_LEN	((ZIP_BUF_SIZE - ZIP_SGPTR_ALIGN) / sizeof(void *))
7043e610bbSSunila Sahu 
7143e610bbSSunila Sahu /**< ZIP PMD specified queue pairs */
7243e610bbSSunila Sahu #define ZIP_MAX_VF_QUEUE	1
7343e610bbSSunila Sahu 
7443e610bbSSunila Sahu #define ZIP_ALIGN_ROUNDUP(x, _align) \
7543e610bbSSunila Sahu 	((_align) * (((x) + (_align) - 1) / (_align)))
7643e610bbSSunila Sahu 
7743e610bbSSunila Sahu /**< ZIP PMD device name */
78938f3f5fSMahipal Challa #define COMPRESSDEV_NAME_ZIP_PMD	compress_octeontx
7943e610bbSSunila Sahu 
802b843cacSDavid Marchand #define ZIP_PMD_LOG(level, ...) \
812b843cacSDavid Marchand 	RTE_LOG_LINE_PREFIX(level, OCTTX_ZIP_DRIVER, "%s(): ", __func__, __VA_ARGS__)
8243e610bbSSunila Sahu 
83*fd51012dSAndre Muezerie #define ZIP_PMD_INFO(fmt, ...) \
84*fd51012dSAndre Muezerie 	ZIP_PMD_LOG(INFO, fmt, ## __VA_ARGS__)
85*fd51012dSAndre Muezerie #define ZIP_PMD_ERR(fmt, ...) \
86*fd51012dSAndre Muezerie 	ZIP_PMD_LOG(ERR, fmt, ## __VA_ARGS__)
87c378f084SAshish Gupta 
88c378f084SAshish Gupta /* resources required to process stream */
8997573583SFerruh Yigit enum NUM_BUFS_PER_STREAM {
90c378f084SAshish Gupta 	RES_BUF = 0,
91c378f084SAshish Gupta 	CMD_BUF,
92c378f084SAshish Gupta 	HASH_CTX_BUF,
93c378f084SAshish Gupta 	DECOMP_CTX_BUF,
94c378f084SAshish Gupta 	IN_DATA_BUF,
95c378f084SAshish Gupta 	OUT_DATA_BUF,
96c378f084SAshish Gupta 	HISTORY_DATA_BUF,
97c378f084SAshish Gupta 	MAX_BUFS_PER_STREAM
9897573583SFerruh Yigit };
99c378f084SAshish Gupta 
100b43ebc65SAshish Gupta struct zip_stream;
101c378f084SAshish Gupta struct zipvf_qp;
102c378f084SAshish Gupta 
103b43ebc65SAshish Gupta /* Algorithm handler function prototype */
104938f3f5fSMahipal Challa typedef int (*comp_func_t)(struct rte_comp_op *op, struct zipvf_qp *qp,
105938f3f5fSMahipal Challa 			   struct zip_stream *zstrm, int num);
106b43ebc65SAshish Gupta 
10709442498SMahipal Challa /* Scatter gather list */
10827595cd8STyler Retzlaff struct __rte_aligned(16) zipvf_sginfo {
10909442498SMahipal Challa 	union zip_zptr_addr_s  sg_addr;
11009442498SMahipal Challa 	union zip_zptr_ctl_s   sg_ctl;
11127595cd8STyler Retzlaff };
11209442498SMahipal Challa 
113b43ebc65SAshish Gupta /**
114b43ebc65SAshish Gupta  * ZIP private stream structure
115b43ebc65SAshish Gupta  */
11627595cd8STyler Retzlaff struct __rte_cache_aligned zip_stream {
117938f3f5fSMahipal Challa 	union zip_inst_s *inst[ZIP_BURST_SIZE];
118b43ebc65SAshish Gupta 	/* zip instruction pointer */
119b43ebc65SAshish Gupta 	comp_func_t func;
120b43ebc65SAshish Gupta 	/* function to process comp operation */
121938f3f5fSMahipal Challa 	void *bufs[MAX_BUFS_PER_STREAM * ZIP_BURST_SIZE];
12227595cd8STyler Retzlaff };
123b43ebc65SAshish Gupta 
124c378f084SAshish Gupta 
125c378f084SAshish Gupta /**
126c378f084SAshish Gupta  * ZIP instruction Queue
127c378f084SAshish Gupta  */
128c378f084SAshish Gupta struct zipvf_cmdq {
129c378f084SAshish Gupta 	rte_spinlock_t qlock;
130c378f084SAshish Gupta 	/* queue lock */
131c378f084SAshish Gupta 	uint64_t *sw_head;
132c378f084SAshish Gupta 	/* pointer to start of 8-byte word length queue-head */
133c378f084SAshish Gupta 	uint8_t *va;
134c378f084SAshish Gupta 	/* pointer to instruction queue virtual address */
135c378f084SAshish Gupta 	rte_iova_t iova;
136c378f084SAshish Gupta 	/* iova addr of cmdq head*/
137c378f084SAshish Gupta };
138c378f084SAshish Gupta 
139c378f084SAshish Gupta /**
140c378f084SAshish Gupta  * ZIP device queue structure
141c378f084SAshish Gupta  */
14227595cd8STyler Retzlaff struct __rte_cache_aligned zipvf_qp {
143c378f084SAshish Gupta 	struct zipvf_cmdq cmdq;
144c378f084SAshish Gupta 	/* Hardware instruction queue structure */
145c378f084SAshish Gupta 	struct rte_ring *processed_pkts;
146c378f084SAshish Gupta 	/* Ring for placing processed packets */
147c378f084SAshish Gupta 	struct rte_compressdev_stats qp_stats;
148c378f084SAshish Gupta 	/* Queue pair statistics */
149c378f084SAshish Gupta 	uint16_t id;
150c378f084SAshish Gupta 	/* Queue Pair Identifier */
151c378f084SAshish Gupta 	const char *name;
152c378f084SAshish Gupta 	/* Unique Queue Pair Name */
153c378f084SAshish Gupta 	struct zip_vf *vf;
154c378f084SAshish Gupta 	/* pointer to device, queue belongs to */
15509442498SMahipal Challa 	struct zipvf_sginfo *g_info;
15609442498SMahipal Challa 	struct zipvf_sginfo *s_info;
15709442498SMahipal Challa 	/* SGL pointers */
15809442498SMahipal Challa 	uint64_t num_sgbuf;
15909442498SMahipal Challa 	uint64_t enqed;
16027595cd8STyler Retzlaff };
16143e610bbSSunila Sahu 
16243e610bbSSunila Sahu /**
16343e610bbSSunila Sahu  * ZIP VF device structure.
16443e610bbSSunila Sahu  */
16527595cd8STyler Retzlaff struct __rte_cache_aligned zip_vf {
16643e610bbSSunila Sahu 	int vfid;
16743e610bbSSunila Sahu 	/* vf index */
16843e610bbSSunila Sahu 	struct rte_pci_device *pdev;
16943e610bbSSunila Sahu 	/* pci device */
17043e610bbSSunila Sahu 	void *vbar0;
17143e610bbSSunila Sahu 	/* CSR base address for underlying BAR0 VF.*/
17243e610bbSSunila Sahu 	uint64_t dom_sdom;
17343e610bbSSunila Sahu 	/* Storing mbox domain and subdomain id for app rerun*/
17443e610bbSSunila Sahu 	uint32_t  max_nb_queue_pairs;
17543e610bbSSunila Sahu 	/* pointer to device qps */
17643e610bbSSunila Sahu 	struct rte_mempool *zip_mp;
17709442498SMahipal Challa 	struct rte_mempool *sg_mp;
17843e610bbSSunila Sahu 	/* pointer to pools */
17927595cd8STyler Retzlaff };
18043e610bbSSunila Sahu 
18152048f8fSAshish Gupta 
18209442498SMahipal Challa static inline int
18309442498SMahipal Challa zipvf_prepare_sgl(struct rte_mbuf *buf, int64_t offset, struct zipvf_sginfo *sg_list,
18409442498SMahipal Challa 		  uint32_t data_len, const uint16_t max_segs, struct zipvf_qp *qp)
18509442498SMahipal Challa {
18609442498SMahipal Challa 	struct zipvf_sginfo *sginfo = (struct zipvf_sginfo *)sg_list;
18709442498SMahipal Challa 	uint32_t tot_buf_len, sgidx;
18809442498SMahipal Challa 	int ret = -EINVAL;
18909442498SMahipal Challa 
19009442498SMahipal Challa 	for (sgidx = tot_buf_len = 0; buf && sgidx < max_segs; buf = buf->next) {
19109442498SMahipal Challa 		if (offset >= rte_pktmbuf_data_len(buf)) {
19209442498SMahipal Challa 			offset -= rte_pktmbuf_data_len(buf);
19309442498SMahipal Challa 			continue;
19409442498SMahipal Challa 		}
19509442498SMahipal Challa 
19609442498SMahipal Challa 		sginfo[sgidx].sg_ctl.s.length = (uint16_t)(rte_pktmbuf_data_len(buf) - offset);
19709442498SMahipal Challa 		sginfo[sgidx].sg_addr.s.addr = rte_pktmbuf_iova_offset(buf, offset);
19809442498SMahipal Challa 
19909442498SMahipal Challa 		offset = 0;
20009442498SMahipal Challa 		tot_buf_len += sginfo[sgidx].sg_ctl.s.length;
20109442498SMahipal Challa 
20209442498SMahipal Challa 		if (tot_buf_len >= data_len) {
20309442498SMahipal Challa 			sginfo[sgidx].sg_ctl.s.length -= tot_buf_len - data_len;
20409442498SMahipal Challa 			ret = 0;
20509442498SMahipal Challa 			break;
20609442498SMahipal Challa 		}
20709442498SMahipal Challa 
208f665790aSDavid Marchand 		ZIP_PMD_LOG(DEBUG, "ZIP SGL buf[%d], len = %d, iova = 0x%"PRIx64,
20909442498SMahipal Challa 			    sgidx, sginfo[sgidx].sg_ctl.s.length, sginfo[sgidx].sg_addr.s.addr);
21009442498SMahipal Challa 		++sgidx;
21109442498SMahipal Challa 	}
21209442498SMahipal Challa 
21309442498SMahipal Challa 	if (unlikely(ret != 0)) {
21409442498SMahipal Challa 		if (sgidx == max_segs)
21509442498SMahipal Challa 			ZIP_PMD_ERR("Exceeded max segments in ZIP SGL (%u)", max_segs);
21609442498SMahipal Challa 		else
21709442498SMahipal Challa 			ZIP_PMD_ERR("Mbuf chain is too short");
21809442498SMahipal Challa 	}
21909442498SMahipal Challa 	qp->num_sgbuf = ++sgidx;
22009442498SMahipal Challa 
221f665790aSDavid Marchand 	ZIP_PMD_LOG(DEBUG, "Tot_buf_len:%d max_segs:%"PRIx64, tot_buf_len,
22209442498SMahipal Challa 		    qp->num_sgbuf);
22309442498SMahipal Challa 	return ret;
22409442498SMahipal Challa }
22509442498SMahipal Challa 
22609442498SMahipal Challa static inline int
22709442498SMahipal Challa zipvf_prepare_in_buf(union zip_inst_s *inst, struct zipvf_qp *qp, struct rte_comp_op *op)
22852048f8fSAshish Gupta {
22952048f8fSAshish Gupta 	uint32_t offset, inlen;
23052048f8fSAshish Gupta 	struct rte_mbuf *m_src;
23109442498SMahipal Challa 	int ret = 0;
23252048f8fSAshish Gupta 
23352048f8fSAshish Gupta 	inlen = op->src.length;
23452048f8fSAshish Gupta 	offset = op->src.offset;
23552048f8fSAshish Gupta 	m_src = op->m_src;
23652048f8fSAshish Gupta 
23709442498SMahipal Challa 	/* Gather input */
23809442498SMahipal Challa 	if (op->m_src->next != NULL && inlen > ZIP_MAXSEG_SIZE) {
23909442498SMahipal Challa 		inst->s.dg = 1;
24009442498SMahipal Challa 
24109442498SMahipal Challa 		ret = zipvf_prepare_sgl(m_src, offset, qp->g_info, inlen,
24209442498SMahipal Challa 					op->m_src->nb_segs, qp);
24309442498SMahipal Challa 
24409442498SMahipal Challa 		inst->s.inp_ptr_addr.s.addr = rte_mem_virt2iova(qp->g_info);
24509442498SMahipal Challa 		inst->s.inp_ptr_ctl.s.length = qp->num_sgbuf;
24609442498SMahipal Challa 		inst->s.inp_ptr_ctl.s.fw = 0;
24709442498SMahipal Challa 
248f665790aSDavid Marchand 		ZIP_PMD_LOG(DEBUG, "Gather(input): len(nb_segs):%d, iova: 0x%"PRIx64,
24909442498SMahipal Challa 			    inst->s.inp_ptr_ctl.s.length, inst->s.inp_ptr_addr.s.addr);
25009442498SMahipal Challa 		return ret;
25152048f8fSAshish Gupta 	}
25252048f8fSAshish Gupta 
25309442498SMahipal Challa 	/* Prepare direct input data pointer */
25409442498SMahipal Challa 	inst->s.dg = 0;
25509442498SMahipal Challa 	inst->s.inp_ptr_addr.s.addr = rte_pktmbuf_iova_offset(m_src, offset);
25609442498SMahipal Challa 	inst->s.inp_ptr_ctl.s.length = inlen;
25709442498SMahipal Challa 
258f665790aSDavid Marchand 	ZIP_PMD_LOG(DEBUG, "Direct input - inlen:%d", inlen);
25909442498SMahipal Challa 	return ret;
26009442498SMahipal Challa }
26109442498SMahipal Challa 
26209442498SMahipal Challa static inline int
26309442498SMahipal Challa zipvf_prepare_out_buf(union zip_inst_s *inst, struct zipvf_qp *qp, struct rte_comp_op *op)
26452048f8fSAshish Gupta {
26509442498SMahipal Challa 	uint32_t offset, outlen;
26652048f8fSAshish Gupta 	struct rte_mbuf *m_dst;
26709442498SMahipal Challa 	int ret = 0;
26852048f8fSAshish Gupta 
26952048f8fSAshish Gupta 	offset = op->dst.offset;
27052048f8fSAshish Gupta 	m_dst = op->m_dst;
27109442498SMahipal Challa 	outlen = rte_pktmbuf_pkt_len(m_dst) - op->dst.offset;
27252048f8fSAshish Gupta 
27309442498SMahipal Challa 	/* Scatter output */
27409442498SMahipal Challa 	if (op->m_dst->next != NULL && outlen > ZIP_MAXSEG_SIZE) {
27509442498SMahipal Challa 		inst->s.ds = 1;
27609442498SMahipal Challa 		inst->s.totaloutputlength = outlen;
27709442498SMahipal Challa 
27809442498SMahipal Challa 		ret = zipvf_prepare_sgl(m_dst, offset, qp->s_info, inst->s.totaloutputlength,
27909442498SMahipal Challa 					m_dst->nb_segs, qp);
28009442498SMahipal Challa 
28109442498SMahipal Challa 		inst->s.out_ptr_addr.s.addr = rte_mem_virt2iova(qp->s_info);
28209442498SMahipal Challa 		inst->s.out_ptr_ctl.s.length = qp->num_sgbuf;
28309442498SMahipal Challa 
284f665790aSDavid Marchand 		ZIP_PMD_LOG(DEBUG, "Scatter(output): nb_segs:%d, iova:0x%"PRIx64,
28509442498SMahipal Challa 			    inst->s.out_ptr_ctl.s.length, inst->s.out_ptr_addr.s.addr);
28609442498SMahipal Challa 		return ret;
28709442498SMahipal Challa 	}
28809442498SMahipal Challa 
28909442498SMahipal Challa 	/* Prepare direct output data pointer */
29052048f8fSAshish Gupta 	inst->s.ds = 0;
29109442498SMahipal Challa 	inst->s.out_ptr_addr.s.addr = rte_pktmbuf_iova_offset(m_dst, offset);
29209442498SMahipal Challa 	inst->s.totaloutputlength = rte_pktmbuf_pkt_len(m_dst) - op->dst.offset;
293938f3f5fSMahipal Challa 	if (inst->s.totaloutputlength == ZIP_MAXSEG_SIZE)
294938f3f5fSMahipal Challa 		inst->s.totaloutputlength += ZIP_EXTRABUF_SIZE; /* DSTOP */
295938f3f5fSMahipal Challa 
29652048f8fSAshish Gupta 	inst->s.out_ptr_ctl.s.length = inst->s.totaloutputlength;
29709442498SMahipal Challa 
298f665790aSDavid Marchand 	ZIP_PMD_LOG(DEBUG, "Direct output - outlen:%d", inst->s.totaloutputlength);
29909442498SMahipal Challa 	return ret;
30052048f8fSAshish Gupta }
30152048f8fSAshish Gupta 
30209442498SMahipal Challa static inline int
30309442498SMahipal Challa zipvf_prepare_cmd_stateless(struct rte_comp_op *op, struct zipvf_qp *qp,
30409442498SMahipal Challa 			    union zip_inst_s *inst)
30552048f8fSAshish Gupta {
30652048f8fSAshish Gupta 	/* set flush flag to always 1*/
30752048f8fSAshish Gupta 	inst->s.ef = 1;
30852048f8fSAshish Gupta 
30952048f8fSAshish Gupta 	if (inst->s.op == ZIP_OP_E_DECOMP)
31052048f8fSAshish Gupta 		inst->s.sf = 1;
31152048f8fSAshish Gupta 	else
31252048f8fSAshish Gupta 		inst->s.sf = 0;
31352048f8fSAshish Gupta 
31452048f8fSAshish Gupta 	/* Set input checksum */
31552048f8fSAshish Gupta 	inst->s.adlercrc32 = op->input_chksum;
31652048f8fSAshish Gupta 
31709442498SMahipal Challa 	/* Prepare input/output buffers */
31809442498SMahipal Challa 	if (zipvf_prepare_in_buf(inst, qp, op)) {
31909442498SMahipal Challa 		ZIP_PMD_ERR("Con't fill input SGL ");
32009442498SMahipal Challa 		return -EINVAL;
32109442498SMahipal Challa 	}
32209442498SMahipal Challa 
32309442498SMahipal Challa 	if (zipvf_prepare_out_buf(inst, qp, op)) {
32409442498SMahipal Challa 		ZIP_PMD_ERR("Con't fill output SGL ");
32509442498SMahipal Challa 		return -EINVAL;
32609442498SMahipal Challa 	}
32709442498SMahipal Challa 
32809442498SMahipal Challa 	return 0;
32952048f8fSAshish Gupta }
33052048f8fSAshish Gupta 
33152048f8fSAshish Gupta #ifdef ZIP_DBG
33252048f8fSAshish Gupta static inline void
33352048f8fSAshish Gupta zip_dump_instruction(void *inst)
33452048f8fSAshish Gupta {
33552048f8fSAshish Gupta 	union zip_inst_s *cmd83 = (union zip_inst_s *)inst;
336938f3f5fSMahipal Challa 
33752048f8fSAshish Gupta 	printf("####### START ########\n");
33809442498SMahipal Challa 	printf("ZIP Instr:0x%"PRIx64"\n", cmd83);
33952048f8fSAshish Gupta 	printf("doneint:%d totaloutputlength:%d\n", cmd83->s.doneint,
34052048f8fSAshish Gupta 		cmd83->s.totaloutputlength);
34152048f8fSAshish Gupta 	printf("exnum:%d iv:%d exbits:%d hmif:%d halg:%d\n", cmd83->s.exn,
34252048f8fSAshish Gupta 		cmd83->s.iv, cmd83->s.exbits, cmd83->s.hmif, cmd83->s.halg);
34352048f8fSAshish Gupta 	printf("flush:%d speed:%d cc:%d\n", cmd83->s.sf,
34452048f8fSAshish Gupta 		cmd83->s.ss, cmd83->s.cc);
34552048f8fSAshish Gupta 	printf("eof:%d bof:%d op:%d dscatter:%d dgather:%d hgather:%d\n",
34652048f8fSAshish Gupta 		cmd83->s.ef, cmd83->s.bf, cmd83->s.op, cmd83->s.ds,
34752048f8fSAshish Gupta 		cmd83->s.dg, cmd83->s.hg);
34852048f8fSAshish Gupta 	printf("historylength:%d adler32:%d\n", cmd83->s.historylength,
34952048f8fSAshish Gupta 		cmd83->s.adlercrc32);
35052048f8fSAshish Gupta 	printf("ctx_ptr.addr:0x%"PRIx64"\n", cmd83->s.ctx_ptr_addr.s.addr);
35152048f8fSAshish Gupta 	printf("ctx_ptr.len:%d\n", cmd83->s.ctx_ptr_ctl.s.length);
35252048f8fSAshish Gupta 	printf("history_ptr.addr:0x%"PRIx64"\n", cmd83->s.his_ptr_addr.s.addr);
35352048f8fSAshish Gupta 	printf("history_ptr.len:%d\n", cmd83->s.his_ptr_ctl.s.length);
35452048f8fSAshish Gupta 	printf("inp_ptr.addr:0x%"PRIx64"\n", cmd83->s.inp_ptr_addr.s.addr);
35552048f8fSAshish Gupta 	printf("inp_ptr.len:%d\n", cmd83->s.inp_ptr_ctl.s.length);
35652048f8fSAshish Gupta 	printf("out_ptr.addr:0x%"PRIx64"\n", cmd83->s.out_ptr_addr.s.addr);
35752048f8fSAshish Gupta 	printf("out_ptr.len:%d\n", cmd83->s.out_ptr_ctl.s.length);
35809442498SMahipal Challa 	printf("result_ptr.addr:0x%"PRIx64"\n", cmd83->s.res_ptr_addr.s.addr);
35952048f8fSAshish Gupta 	printf("result_ptr.len:%d\n", cmd83->s.res_ptr_ctl.s.length);
36052048f8fSAshish Gupta 	printf("####### END ########\n");
36152048f8fSAshish Gupta }
36252048f8fSAshish Gupta #endif
36352048f8fSAshish Gupta 
36443e610bbSSunila Sahu int
36543e610bbSSunila Sahu zipvf_create(struct rte_compressdev *compressdev);
36643e610bbSSunila Sahu 
36743e610bbSSunila Sahu int
36843e610bbSSunila Sahu zipvf_destroy(struct rte_compressdev *compressdev);
36943e610bbSSunila Sahu 
370c378f084SAshish Gupta int
371c378f084SAshish Gupta zipvf_q_init(struct zipvf_qp *qp);
372c378f084SAshish Gupta 
373c378f084SAshish Gupta int
374c378f084SAshish Gupta zipvf_q_term(struct zipvf_qp *qp);
375c378f084SAshish Gupta 
37652048f8fSAshish Gupta void
377b43ebc65SAshish Gupta zipvf_push_command(struct zipvf_qp *qp, union zip_inst_s *zcmd);
378c378f084SAshish Gupta 
37952048f8fSAshish Gupta int
380938f3f5fSMahipal Challa zip_process_op(struct rte_comp_op *op, struct zipvf_qp *qp,
381938f3f5fSMahipal Challa 	       struct zip_stream *zstrm, int num);
38252048f8fSAshish Gupta 
38343e610bbSSunila Sahu uint64_t
38443e610bbSSunila Sahu zip_reg_read64(uint8_t *hw_addr, uint64_t offset);
38543e610bbSSunila Sahu 
38643e610bbSSunila Sahu void
38743e610bbSSunila Sahu zip_reg_write64(uint8_t *hw_addr, uint64_t offset, uint64_t val);
38843e610bbSSunila Sahu 
38943e610bbSSunila Sahu #endif /* _RTE_ZIP_VF_H_ */
390