xref: /dpdk/drivers/compress/octeontx/otx_zip.h (revision 09442498ef736d0a96632cf8b8c15d8ca78a6468)
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;
2143e610bbSSunila Sahu 
2243e610bbSSunila Sahu /* ZIP VF Control/Status registers (CSRs): */
2343e610bbSSunila Sahu /* VF_BAR0: */
2443e610bbSSunila Sahu #define ZIP_VQ_ENA              (0x10)
2543e610bbSSunila Sahu #define ZIP_VQ_SBUF_ADDR        (0x20)
2643e610bbSSunila Sahu #define ZIP_VF_PF_MBOXX(x)      (0x400 | (x)<<3)
2743e610bbSSunila Sahu #define ZIP_VQ_DOORBELL         (0x1000)
2843e610bbSSunila Sahu 
2943e610bbSSunila Sahu /**< Vendor ID */
3043e610bbSSunila Sahu #define PCI_VENDOR_ID_CAVIUM	0x177D
3143e610bbSSunila Sahu /**< PCI device id of ZIP VF */
3243e610bbSSunila Sahu #define PCI_DEVICE_ID_OCTEONTX_ZIPVF	0xA037
33a80ea5c0SMahipal Challa #define PCI_DEVICE_ID_OCTEONTX2_ZIPVF	0xA083
3443e610bbSSunila Sahu 
357be78d02SJosh Soref /* maximum number of zip vf devices */
3643e610bbSSunila Sahu #define ZIP_MAX_VFS 8
3743e610bbSSunila Sahu 
3843e610bbSSunila Sahu /* max size of one chunk */
3943e610bbSSunila Sahu #define ZIP_MAX_CHUNK_SIZE	8192
4043e610bbSSunila Sahu 
4143e610bbSSunila Sahu /* each instruction is fixed 128 bytes */
4243e610bbSSunila Sahu #define ZIP_CMD_SIZE		128
4343e610bbSSunila Sahu 
4443e610bbSSunila Sahu #define ZIP_CMD_SIZE_WORDS	(ZIP_CMD_SIZE >> 3) /* 16 64_bit words */
4543e610bbSSunila Sahu 
4643e610bbSSunila Sahu /* size of next chunk buffer pointer */
4743e610bbSSunila Sahu #define ZIP_MAX_NCBP_SIZE	8
4843e610bbSSunila Sahu 
4943e610bbSSunila Sahu /* size of instruction queue in units of instruction size */
5043e610bbSSunila Sahu #define ZIP_MAX_NUM_CMDS	((ZIP_MAX_CHUNK_SIZE - ZIP_MAX_NCBP_SIZE) / \
5143e610bbSSunila Sahu 				ZIP_CMD_SIZE) /* 63 */
5243e610bbSSunila Sahu 
5343e610bbSSunila Sahu /* size of instruct queue in bytes */
5443e610bbSSunila Sahu #define ZIP_MAX_CMDQ_SIZE	((ZIP_MAX_NUM_CMDS * ZIP_CMD_SIZE) + \
5543e610bbSSunila Sahu 				ZIP_MAX_NCBP_SIZE)/* ~8072ull */
5643e610bbSSunila Sahu 
5743e610bbSSunila Sahu #define ZIP_BUF_SIZE	256
58*09442498SMahipal Challa #define ZIP_SGBUF_SIZE	(5 * 1024)
59938f3f5fSMahipal Challa #define ZIP_BURST_SIZE	64
60938f3f5fSMahipal Challa 
61938f3f5fSMahipal Challa #define ZIP_MAXSEG_SIZE      59460
62938f3f5fSMahipal Challa #define ZIP_EXTRABUF_SIZE    4096
63*09442498SMahipal Challa #define ZIP_MAX_SEGS         300
64*09442498SMahipal Challa #define ZIP_MAX_DATA_SIZE    (16*1024*1024)
6543e610bbSSunila Sahu 
6643e610bbSSunila Sahu #define ZIP_SGPTR_ALIGN	16
6743e610bbSSunila Sahu #define ZIP_CMDQ_ALIGN	128
6843e610bbSSunila Sahu #define MAX_SG_LEN	((ZIP_BUF_SIZE - ZIP_SGPTR_ALIGN) / sizeof(void *))
6943e610bbSSunila Sahu 
7043e610bbSSunila Sahu /**< ZIP PMD specified queue pairs */
7143e610bbSSunila Sahu #define ZIP_MAX_VF_QUEUE	1
7243e610bbSSunila Sahu 
7343e610bbSSunila Sahu #define ZIP_ALIGN_ROUNDUP(x, _align) \
7443e610bbSSunila Sahu 	((_align) * (((x) + (_align) - 1) / (_align)))
7543e610bbSSunila Sahu 
7643e610bbSSunila Sahu /**< ZIP PMD device name */
77938f3f5fSMahipal Challa #define COMPRESSDEV_NAME_ZIP_PMD	compress_octeontx
7843e610bbSSunila Sahu 
7943e610bbSSunila Sahu #define ZIP_PMD_LOG(level, fmt, args...) \
8043e610bbSSunila Sahu 	rte_log(RTE_LOG_ ## level, \
8143e610bbSSunila Sahu 	octtx_zip_logtype_driver, "%s(): "fmt "\n", \
8243e610bbSSunila Sahu 	__func__, ##args)
8343e610bbSSunila Sahu 
8443e610bbSSunila Sahu #define ZIP_PMD_INFO(fmt, args...) \
8543e610bbSSunila Sahu 	ZIP_PMD_LOG(INFO, fmt, ## args)
8643e610bbSSunila Sahu #define ZIP_PMD_ERR(fmt, args...) \
8743e610bbSSunila Sahu 	ZIP_PMD_LOG(ERR, fmt, ## args)
88c378f084SAshish Gupta 
89c378f084SAshish Gupta /* resources required to process stream */
9097573583SFerruh Yigit enum NUM_BUFS_PER_STREAM {
91c378f084SAshish Gupta 	RES_BUF = 0,
92c378f084SAshish Gupta 	CMD_BUF,
93c378f084SAshish Gupta 	HASH_CTX_BUF,
94c378f084SAshish Gupta 	DECOMP_CTX_BUF,
95c378f084SAshish Gupta 	IN_DATA_BUF,
96c378f084SAshish Gupta 	OUT_DATA_BUF,
97c378f084SAshish Gupta 	HISTORY_DATA_BUF,
98c378f084SAshish Gupta 	MAX_BUFS_PER_STREAM
9997573583SFerruh Yigit };
100c378f084SAshish Gupta 
101b43ebc65SAshish Gupta struct zip_stream;
102c378f084SAshish Gupta struct zipvf_qp;
103c378f084SAshish Gupta 
104b43ebc65SAshish Gupta /* Algorithm handler function prototype */
105938f3f5fSMahipal Challa typedef int (*comp_func_t)(struct rte_comp_op *op, struct zipvf_qp *qp,
106938f3f5fSMahipal Challa 			   struct zip_stream *zstrm, int num);
107b43ebc65SAshish Gupta 
108*09442498SMahipal Challa /* Scatter gather list */
109*09442498SMahipal Challa struct zipvf_sginfo {
110*09442498SMahipal Challa 	union zip_zptr_addr_s  sg_addr;
111*09442498SMahipal Challa 	union zip_zptr_ctl_s   sg_ctl;
112*09442498SMahipal Challa } __rte_aligned(16);
113*09442498SMahipal Challa 
114b43ebc65SAshish Gupta /**
115b43ebc65SAshish Gupta  * ZIP private stream structure
116b43ebc65SAshish Gupta  */
117b43ebc65SAshish Gupta struct zip_stream {
118938f3f5fSMahipal Challa 	union zip_inst_s *inst[ZIP_BURST_SIZE];
119b43ebc65SAshish Gupta 	/* zip instruction pointer */
120b43ebc65SAshish Gupta 	comp_func_t func;
121b43ebc65SAshish Gupta 	/* function to process comp operation */
122938f3f5fSMahipal Challa 	void *bufs[MAX_BUFS_PER_STREAM * ZIP_BURST_SIZE];
12397573583SFerruh Yigit } __rte_cache_aligned;
124b43ebc65SAshish Gupta 
125c378f084SAshish Gupta 
126c378f084SAshish Gupta /**
127c378f084SAshish Gupta  * ZIP instruction Queue
128c378f084SAshish Gupta  */
129c378f084SAshish Gupta struct zipvf_cmdq {
130c378f084SAshish Gupta 	rte_spinlock_t qlock;
131c378f084SAshish Gupta 	/* queue lock */
132c378f084SAshish Gupta 	uint64_t *sw_head;
133c378f084SAshish Gupta 	/* pointer to start of 8-byte word length queue-head */
134c378f084SAshish Gupta 	uint8_t *va;
135c378f084SAshish Gupta 	/* pointer to instruction queue virtual address */
136c378f084SAshish Gupta 	rte_iova_t iova;
137c378f084SAshish Gupta 	/* iova addr of cmdq head*/
138c378f084SAshish Gupta };
139c378f084SAshish Gupta 
140c378f084SAshish Gupta /**
141c378f084SAshish Gupta  * ZIP device queue structure
142c378f084SAshish Gupta  */
143c378f084SAshish Gupta struct zipvf_qp {
144c378f084SAshish Gupta 	struct zipvf_cmdq cmdq;
145c378f084SAshish Gupta 	/* Hardware instruction queue structure */
146c378f084SAshish Gupta 	struct rte_ring *processed_pkts;
147c378f084SAshish Gupta 	/* Ring for placing processed packets */
148c378f084SAshish Gupta 	struct rte_compressdev_stats qp_stats;
149c378f084SAshish Gupta 	/* Queue pair statistics */
150c378f084SAshish Gupta 	uint16_t id;
151c378f084SAshish Gupta 	/* Queue Pair Identifier */
152c378f084SAshish Gupta 	const char *name;
153c378f084SAshish Gupta 	/* Unique Queue Pair Name */
154c378f084SAshish Gupta 	struct zip_vf *vf;
155c378f084SAshish Gupta 	/* pointer to device, queue belongs to */
156*09442498SMahipal Challa 	struct zipvf_sginfo *g_info;
157*09442498SMahipal Challa 	struct zipvf_sginfo *s_info;
158*09442498SMahipal Challa 	/* SGL pointers */
159*09442498SMahipal Challa 	uint64_t num_sgbuf;
160*09442498SMahipal Challa 	uint64_t enqed;
161c378f084SAshish Gupta } __rte_cache_aligned;
16243e610bbSSunila Sahu 
16343e610bbSSunila Sahu /**
16443e610bbSSunila Sahu  * ZIP VF device structure.
16543e610bbSSunila Sahu  */
16643e610bbSSunila Sahu struct zip_vf {
16743e610bbSSunila Sahu 	int vfid;
16843e610bbSSunila Sahu 	/* vf index */
16943e610bbSSunila Sahu 	struct rte_pci_device *pdev;
17043e610bbSSunila Sahu 	/* pci device */
17143e610bbSSunila Sahu 	void *vbar0;
17243e610bbSSunila Sahu 	/* CSR base address for underlying BAR0 VF.*/
17343e610bbSSunila Sahu 	uint64_t dom_sdom;
17443e610bbSSunila Sahu 	/* Storing mbox domain and subdomain id for app rerun*/
17543e610bbSSunila Sahu 	uint32_t  max_nb_queue_pairs;
17643e610bbSSunila Sahu 	/* pointer to device qps */
17743e610bbSSunila Sahu 	struct rte_mempool *zip_mp;
178*09442498SMahipal Challa 	struct rte_mempool *sg_mp;
17943e610bbSSunila Sahu 	/* pointer to pools */
18043e610bbSSunila Sahu } __rte_cache_aligned;
18143e610bbSSunila Sahu 
18252048f8fSAshish Gupta 
183*09442498SMahipal Challa static inline int
184*09442498SMahipal Challa zipvf_prepare_sgl(struct rte_mbuf *buf, int64_t offset, struct zipvf_sginfo *sg_list,
185*09442498SMahipal Challa 		  uint32_t data_len, const uint16_t max_segs, struct zipvf_qp *qp)
186*09442498SMahipal Challa {
187*09442498SMahipal Challa 	struct zipvf_sginfo *sginfo = (struct zipvf_sginfo *)sg_list;
188*09442498SMahipal Challa 	uint32_t tot_buf_len, sgidx;
189*09442498SMahipal Challa 	int ret = -EINVAL;
190*09442498SMahipal Challa 
191*09442498SMahipal Challa 	for (sgidx = tot_buf_len = 0; buf && sgidx < max_segs; buf = buf->next) {
192*09442498SMahipal Challa 		if (offset >= rte_pktmbuf_data_len(buf)) {
193*09442498SMahipal Challa 			offset -= rte_pktmbuf_data_len(buf);
194*09442498SMahipal Challa 			continue;
195*09442498SMahipal Challa 		}
196*09442498SMahipal Challa 
197*09442498SMahipal Challa 		sginfo[sgidx].sg_ctl.s.length = (uint16_t)(rte_pktmbuf_data_len(buf) - offset);
198*09442498SMahipal Challa 		sginfo[sgidx].sg_addr.s.addr = rte_pktmbuf_iova_offset(buf, offset);
199*09442498SMahipal Challa 
200*09442498SMahipal Challa 		offset = 0;
201*09442498SMahipal Challa 		tot_buf_len += sginfo[sgidx].sg_ctl.s.length;
202*09442498SMahipal Challa 
203*09442498SMahipal Challa 		if (tot_buf_len >= data_len) {
204*09442498SMahipal Challa 			sginfo[sgidx].sg_ctl.s.length -= tot_buf_len - data_len;
205*09442498SMahipal Challa 			ret = 0;
206*09442498SMahipal Challa 			break;
207*09442498SMahipal Challa 		}
208*09442498SMahipal Challa 
209*09442498SMahipal Challa 		ZIP_PMD_LOG(DEBUG, "ZIP SGL buf[%d], len = %d, iova = 0x%"PRIx64"\n",
210*09442498SMahipal Challa 			    sgidx, sginfo[sgidx].sg_ctl.s.length, sginfo[sgidx].sg_addr.s.addr);
211*09442498SMahipal Challa 		++sgidx;
212*09442498SMahipal Challa 	}
213*09442498SMahipal Challa 
214*09442498SMahipal Challa 	if (unlikely(ret != 0)) {
215*09442498SMahipal Challa 		if (sgidx == max_segs)
216*09442498SMahipal Challa 			ZIP_PMD_ERR("Exceeded max segments in ZIP SGL (%u)", max_segs);
217*09442498SMahipal Challa 		else
218*09442498SMahipal Challa 			ZIP_PMD_ERR("Mbuf chain is too short");
219*09442498SMahipal Challa 	}
220*09442498SMahipal Challa 	qp->num_sgbuf = ++sgidx;
221*09442498SMahipal Challa 
222*09442498SMahipal Challa 	ZIP_PMD_LOG(DEBUG, "Tot_buf_len:%d max_segs:%"PRIx64"\n", tot_buf_len,
223*09442498SMahipal Challa 		    qp->num_sgbuf);
224*09442498SMahipal Challa 	return ret;
225*09442498SMahipal Challa }
226*09442498SMahipal Challa 
227*09442498SMahipal Challa static inline int
228*09442498SMahipal Challa zipvf_prepare_in_buf(union zip_inst_s *inst, struct zipvf_qp *qp, struct rte_comp_op *op)
22952048f8fSAshish Gupta {
23052048f8fSAshish Gupta 	uint32_t offset, inlen;
23152048f8fSAshish Gupta 	struct rte_mbuf *m_src;
232*09442498SMahipal Challa 	int ret = 0;
23352048f8fSAshish Gupta 
23452048f8fSAshish Gupta 	inlen = op->src.length;
23552048f8fSAshish Gupta 	offset = op->src.offset;
23652048f8fSAshish Gupta 	m_src = op->m_src;
23752048f8fSAshish Gupta 
238*09442498SMahipal Challa 	/* Gather input */
239*09442498SMahipal Challa 	if (op->m_src->next != NULL && inlen > ZIP_MAXSEG_SIZE) {
240*09442498SMahipal Challa 		inst->s.dg = 1;
241*09442498SMahipal Challa 
242*09442498SMahipal Challa 		ret = zipvf_prepare_sgl(m_src, offset, qp->g_info, inlen,
243*09442498SMahipal Challa 					op->m_src->nb_segs, qp);
244*09442498SMahipal Challa 
245*09442498SMahipal Challa 		inst->s.inp_ptr_addr.s.addr = rte_mem_virt2iova(qp->g_info);
246*09442498SMahipal Challa 		inst->s.inp_ptr_ctl.s.length = qp->num_sgbuf;
247*09442498SMahipal Challa 		inst->s.inp_ptr_ctl.s.fw = 0;
248*09442498SMahipal Challa 
249*09442498SMahipal Challa 		ZIP_PMD_LOG(DEBUG, "Gather(input): len(nb_segs):%d, iova: 0x%"PRIx64"\n",
250*09442498SMahipal Challa 			    inst->s.inp_ptr_ctl.s.length, inst->s.inp_ptr_addr.s.addr);
251*09442498SMahipal Challa 		return ret;
25252048f8fSAshish Gupta 	}
25352048f8fSAshish Gupta 
254*09442498SMahipal Challa 	/* Prepare direct input data pointer */
255*09442498SMahipal Challa 	inst->s.dg = 0;
256*09442498SMahipal Challa 	inst->s.inp_ptr_addr.s.addr = rte_pktmbuf_iova_offset(m_src, offset);
257*09442498SMahipal Challa 	inst->s.inp_ptr_ctl.s.length = inlen;
258*09442498SMahipal Challa 
259*09442498SMahipal Challa 	ZIP_PMD_LOG(DEBUG, "Direct input - inlen:%d\n", inlen);
260*09442498SMahipal Challa 	return ret;
261*09442498SMahipal Challa }
262*09442498SMahipal Challa 
263*09442498SMahipal Challa static inline int
264*09442498SMahipal Challa zipvf_prepare_out_buf(union zip_inst_s *inst, struct zipvf_qp *qp, struct rte_comp_op *op)
26552048f8fSAshish Gupta {
266*09442498SMahipal Challa 	uint32_t offset, outlen;
26752048f8fSAshish Gupta 	struct rte_mbuf *m_dst;
268*09442498SMahipal Challa 	int ret = 0;
26952048f8fSAshish Gupta 
27052048f8fSAshish Gupta 	offset = op->dst.offset;
27152048f8fSAshish Gupta 	m_dst = op->m_dst;
272*09442498SMahipal Challa 	outlen = rte_pktmbuf_pkt_len(m_dst) - op->dst.offset;
27352048f8fSAshish Gupta 
274*09442498SMahipal Challa 	/* Scatter output */
275*09442498SMahipal Challa 	if (op->m_dst->next != NULL && outlen > ZIP_MAXSEG_SIZE) {
276*09442498SMahipal Challa 		inst->s.ds = 1;
277*09442498SMahipal Challa 		inst->s.totaloutputlength = outlen;
278*09442498SMahipal Challa 
279*09442498SMahipal Challa 		ret = zipvf_prepare_sgl(m_dst, offset, qp->s_info, inst->s.totaloutputlength,
280*09442498SMahipal Challa 					m_dst->nb_segs, qp);
281*09442498SMahipal Challa 
282*09442498SMahipal Challa 		inst->s.out_ptr_addr.s.addr = rte_mem_virt2iova(qp->s_info);
283*09442498SMahipal Challa 		inst->s.out_ptr_ctl.s.length = qp->num_sgbuf;
284*09442498SMahipal Challa 
285*09442498SMahipal Challa 		ZIP_PMD_LOG(DEBUG, "Scatter(output): nb_segs:%d, iova:0x%"PRIx64"\n",
286*09442498SMahipal Challa 			    inst->s.out_ptr_ctl.s.length, inst->s.out_ptr_addr.s.addr);
287*09442498SMahipal Challa 		return ret;
288*09442498SMahipal Challa 	}
289*09442498SMahipal Challa 
290*09442498SMahipal Challa 	/* Prepare direct output data pointer */
29152048f8fSAshish Gupta 	inst->s.ds = 0;
292*09442498SMahipal Challa 	inst->s.out_ptr_addr.s.addr = rte_pktmbuf_iova_offset(m_dst, offset);
293*09442498SMahipal Challa 	inst->s.totaloutputlength = rte_pktmbuf_pkt_len(m_dst) - op->dst.offset;
294938f3f5fSMahipal Challa 	if (inst->s.totaloutputlength == ZIP_MAXSEG_SIZE)
295938f3f5fSMahipal Challa 		inst->s.totaloutputlength += ZIP_EXTRABUF_SIZE; /* DSTOP */
296938f3f5fSMahipal Challa 
29752048f8fSAshish Gupta 	inst->s.out_ptr_ctl.s.length = inst->s.totaloutputlength;
298*09442498SMahipal Challa 
299*09442498SMahipal Challa 	ZIP_PMD_LOG(DEBUG, "Direct output - outlen:%d\n", inst->s.totaloutputlength);
300*09442498SMahipal Challa 	return ret;
30152048f8fSAshish Gupta }
30252048f8fSAshish Gupta 
303*09442498SMahipal Challa static inline int
304*09442498SMahipal Challa zipvf_prepare_cmd_stateless(struct rte_comp_op *op, struct zipvf_qp *qp,
305*09442498SMahipal Challa 			    union zip_inst_s *inst)
30652048f8fSAshish Gupta {
30752048f8fSAshish Gupta 	/* set flush flag to always 1*/
30852048f8fSAshish Gupta 	inst->s.ef = 1;
30952048f8fSAshish Gupta 
31052048f8fSAshish Gupta 	if (inst->s.op == ZIP_OP_E_DECOMP)
31152048f8fSAshish Gupta 		inst->s.sf = 1;
31252048f8fSAshish Gupta 	else
31352048f8fSAshish Gupta 		inst->s.sf = 0;
31452048f8fSAshish Gupta 
31552048f8fSAshish Gupta 	/* Set input checksum */
31652048f8fSAshish Gupta 	inst->s.adlercrc32 = op->input_chksum;
31752048f8fSAshish Gupta 
318*09442498SMahipal Challa 	/* Prepare input/output buffers */
319*09442498SMahipal Challa 	if (zipvf_prepare_in_buf(inst, qp, op)) {
320*09442498SMahipal Challa 		ZIP_PMD_ERR("Con't fill input SGL ");
321*09442498SMahipal Challa 		return -EINVAL;
322*09442498SMahipal Challa 	}
323*09442498SMahipal Challa 
324*09442498SMahipal Challa 	if (zipvf_prepare_out_buf(inst, qp, op)) {
325*09442498SMahipal Challa 		ZIP_PMD_ERR("Con't fill output SGL ");
326*09442498SMahipal Challa 		return -EINVAL;
327*09442498SMahipal Challa 	}
328*09442498SMahipal Challa 
329*09442498SMahipal Challa 	return 0;
33052048f8fSAshish Gupta }
33152048f8fSAshish Gupta 
33252048f8fSAshish Gupta #ifdef ZIP_DBG
33352048f8fSAshish Gupta static inline void
33452048f8fSAshish Gupta zip_dump_instruction(void *inst)
33552048f8fSAshish Gupta {
33652048f8fSAshish Gupta 	union zip_inst_s *cmd83 = (union zip_inst_s *)inst;
337938f3f5fSMahipal Challa 
33852048f8fSAshish Gupta 	printf("####### START ########\n");
339*09442498SMahipal Challa 	printf("ZIP Instr:0x%"PRIx64"\n", cmd83);
34052048f8fSAshish Gupta 	printf("doneint:%d totaloutputlength:%d\n", cmd83->s.doneint,
34152048f8fSAshish Gupta 		cmd83->s.totaloutputlength);
34252048f8fSAshish Gupta 	printf("exnum:%d iv:%d exbits:%d hmif:%d halg:%d\n", cmd83->s.exn,
34352048f8fSAshish Gupta 		cmd83->s.iv, cmd83->s.exbits, cmd83->s.hmif, cmd83->s.halg);
34452048f8fSAshish Gupta 	printf("flush:%d speed:%d cc:%d\n", cmd83->s.sf,
34552048f8fSAshish Gupta 		cmd83->s.ss, cmd83->s.cc);
34652048f8fSAshish Gupta 	printf("eof:%d bof:%d op:%d dscatter:%d dgather:%d hgather:%d\n",
34752048f8fSAshish Gupta 		cmd83->s.ef, cmd83->s.bf, cmd83->s.op, cmd83->s.ds,
34852048f8fSAshish Gupta 		cmd83->s.dg, cmd83->s.hg);
34952048f8fSAshish Gupta 	printf("historylength:%d adler32:%d\n", cmd83->s.historylength,
35052048f8fSAshish Gupta 		cmd83->s.adlercrc32);
35152048f8fSAshish Gupta 	printf("ctx_ptr.addr:0x%"PRIx64"\n", cmd83->s.ctx_ptr_addr.s.addr);
35252048f8fSAshish Gupta 	printf("ctx_ptr.len:%d\n", cmd83->s.ctx_ptr_ctl.s.length);
35352048f8fSAshish Gupta 	printf("history_ptr.addr:0x%"PRIx64"\n", cmd83->s.his_ptr_addr.s.addr);
35452048f8fSAshish Gupta 	printf("history_ptr.len:%d\n", cmd83->s.his_ptr_ctl.s.length);
35552048f8fSAshish Gupta 	printf("inp_ptr.addr:0x%"PRIx64"\n", cmd83->s.inp_ptr_addr.s.addr);
35652048f8fSAshish Gupta 	printf("inp_ptr.len:%d\n", cmd83->s.inp_ptr_ctl.s.length);
35752048f8fSAshish Gupta 	printf("out_ptr.addr:0x%"PRIx64"\n", cmd83->s.out_ptr_addr.s.addr);
35852048f8fSAshish Gupta 	printf("out_ptr.len:%d\n", cmd83->s.out_ptr_ctl.s.length);
359*09442498SMahipal Challa 	printf("result_ptr.addr:0x%"PRIx64"\n", cmd83->s.res_ptr_addr.s.addr);
36052048f8fSAshish Gupta 	printf("result_ptr.len:%d\n", cmd83->s.res_ptr_ctl.s.length);
36152048f8fSAshish Gupta 	printf("####### END ########\n");
36252048f8fSAshish Gupta }
36352048f8fSAshish Gupta #endif
36452048f8fSAshish Gupta 
36543e610bbSSunila Sahu int
36643e610bbSSunila Sahu zipvf_create(struct rte_compressdev *compressdev);
36743e610bbSSunila Sahu 
36843e610bbSSunila Sahu int
36943e610bbSSunila Sahu zipvf_destroy(struct rte_compressdev *compressdev);
37043e610bbSSunila Sahu 
371c378f084SAshish Gupta int
372c378f084SAshish Gupta zipvf_q_init(struct zipvf_qp *qp);
373c378f084SAshish Gupta 
374c378f084SAshish Gupta int
375c378f084SAshish Gupta zipvf_q_term(struct zipvf_qp *qp);
376c378f084SAshish Gupta 
37752048f8fSAshish Gupta void
378b43ebc65SAshish Gupta zipvf_push_command(struct zipvf_qp *qp, union zip_inst_s *zcmd);
379c378f084SAshish Gupta 
38052048f8fSAshish Gupta int
381938f3f5fSMahipal Challa zip_process_op(struct rte_comp_op *op, struct zipvf_qp *qp,
382938f3f5fSMahipal Challa 	       struct zip_stream *zstrm, int num);
38352048f8fSAshish Gupta 
38443e610bbSSunila Sahu uint64_t
38543e610bbSSunila Sahu zip_reg_read64(uint8_t *hw_addr, uint64_t offset);
38643e610bbSSunila Sahu 
38743e610bbSSunila Sahu void
38843e610bbSSunila Sahu zip_reg_write64(uint8_t *hw_addr, uint64_t offset, uint64_t val);
38943e610bbSSunila Sahu 
39043e610bbSSunila Sahu #endif /* _RTE_ZIP_VF_H_ */
391