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