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