xref: /dpdk/drivers/compress/nitrox/nitrox_comp_reqmgr.h (revision 6ea6bcdd7081b0712812046cb4d21a8994273fbd)
1b4ce3594SNagadheeraj Rottela /* SPDX-License-Identifier: BSD-3-Clause
2b4ce3594SNagadheeraj Rottela  * Copyright(C) 2024 Marvell.
3b4ce3594SNagadheeraj Rottela  */
4b4ce3594SNagadheeraj Rottela 
5b4ce3594SNagadheeraj Rottela #ifndef _NITROX_COMP_REQMGR_H_
6b4ce3594SNagadheeraj Rottela #define _NITROX_COMP_REQMGR_H_
7b4ce3594SNagadheeraj Rottela 
8f008628aSNagadheeraj Rottela struct nitrox_softreq;
9f008628aSNagadheeraj Rottela 
10b4ce3594SNagadheeraj Rottela enum nitrox_comp_op {
11b4ce3594SNagadheeraj Rottela 	NITROX_COMP_OP_DECOMPRESS,
12b4ce3594SNagadheeraj Rottela 	NITROX_COMP_OP_COMPRESS,
13b4ce3594SNagadheeraj Rottela };
14b4ce3594SNagadheeraj Rottela 
15b4ce3594SNagadheeraj Rottela enum nitrox_comp_algo {
16b4ce3594SNagadheeraj Rottela 	NITROX_COMP_ALGO_DEFLATE_DEFAULT,
17b4ce3594SNagadheeraj Rottela 	NITROX_COMP_ALGO_DEFLATE_DYNHUFF,
18b4ce3594SNagadheeraj Rottela 	NITROX_COMP_ALGO_DEFLATE_FIXEDHUFF,
19b4ce3594SNagadheeraj Rottela 	NITROX_COMP_ALGO_LZS,
20b4ce3594SNagadheeraj Rottela };
21b4ce3594SNagadheeraj Rottela 
22b4ce3594SNagadheeraj Rottela enum nitrox_comp_level {
23b4ce3594SNagadheeraj Rottela 	NITROX_COMP_LEVEL_BEST,
24b4ce3594SNagadheeraj Rottela 	NITROX_COMP_LEVEL_MEDIUM,
25b4ce3594SNagadheeraj Rottela 	NITROX_COMP_LEVEL_LOWER,
26b4ce3594SNagadheeraj Rottela 	NITROX_COMP_LEVEL_LOWEST,
27b4ce3594SNagadheeraj Rottela };
28b4ce3594SNagadheeraj Rottela 
29b4ce3594SNagadheeraj Rottela enum nitrox_chksum_type {
30b4ce3594SNagadheeraj Rottela 	NITROX_CHKSUM_TYPE_CRC32,
31b4ce3594SNagadheeraj Rottela 	NITROX_CHKSUM_TYPE_ADLER32,
32b4ce3594SNagadheeraj Rottela 	NITROX_CHKSUM_TYPE_NONE,
33b4ce3594SNagadheeraj Rottela };
34b4ce3594SNagadheeraj Rottela 
35b4ce3594SNagadheeraj Rottela struct nitrox_comp_xform {
36b4ce3594SNagadheeraj Rottela 	enum nitrox_comp_op op;
37b4ce3594SNagadheeraj Rottela 	enum nitrox_comp_algo algo;
38b4ce3594SNagadheeraj Rottela 	enum nitrox_comp_level level;
39b4ce3594SNagadheeraj Rottela 	enum nitrox_chksum_type chksum_type;
40*6ea6bcddSNagadheeraj Rottela 	uint8_t *context;
41*6ea6bcddSNagadheeraj Rottela 	uint8_t *history_window;
42*6ea6bcddSNagadheeraj Rottela 	uint32_t chksum;
43*6ea6bcddSNagadheeraj Rottela 	uint16_t window_size;
44*6ea6bcddSNagadheeraj Rottela 	uint16_t hlen;
45*6ea6bcddSNagadheeraj Rottela 	uint8_t exn;
46*6ea6bcddSNagadheeraj Rottela 	uint8_t exbits;
47*6ea6bcddSNagadheeraj Rottela 	bool bf;
48b4ce3594SNagadheeraj Rottela };
49b4ce3594SNagadheeraj Rottela 
50f008628aSNagadheeraj Rottela int nitrox_process_comp_req(struct rte_comp_op *op, struct nitrox_softreq *sr);
51f008628aSNagadheeraj Rottela int nitrox_check_comp_req(struct nitrox_softreq *sr, struct rte_comp_op **op);
52f008628aSNagadheeraj Rottela void *nitrox_comp_instr_addr(struct nitrox_softreq *sr);
53f008628aSNagadheeraj Rottela struct rte_mempool *nitrox_comp_req_pool_create(struct rte_compressdev *cdev,
54f008628aSNagadheeraj Rottela 					       uint32_t nobjs, uint16_t qp_id,
55f008628aSNagadheeraj Rottela 					       int socket_id);
56f008628aSNagadheeraj Rottela void nitrox_comp_req_pool_free(struct rte_mempool *mp);
57f008628aSNagadheeraj Rottela 
58b4ce3594SNagadheeraj Rottela #endif /* _NITROX_COMP_REQMGR_H_ */
59