1 /* SPDX-License-Identifier: GPL-2.0-only */
2 /* Copyright(c) 2022 Intel Corporation */
3 #ifndef _QAT_COMP_REQ_H_
4 #define _QAT_COMP_REQ_H_
5
6 #include "icp_qat_fw_comp.h"
7
8 #define QAT_COMP_REQ_SIZE (sizeof(struct icp_qat_fw_comp_req))
9 #define QAT_COMP_CTX_SIZE (QAT_COMP_REQ_SIZE * 2)
10
qat_comp_create_req(void * ctx,void * req,u64 src,u32 slen,u64 dst,u32 dlen,u64 opaque)11 static inline void qat_comp_create_req(void *ctx, void *req, u64 src, u32 slen,
12 u64 dst, u32 dlen, u64 opaque)
13 {
14 struct icp_qat_fw_comp_req *fw_tmpl = ctx;
15 struct icp_qat_fw_comp_req *fw_req = req;
16 struct icp_qat_fw_comp_req_params *req_pars = &fw_req->comp_pars;
17
18 memcpy(fw_req, fw_tmpl, sizeof(*fw_req));
19 fw_req->comn_mid.src_data_addr = src;
20 fw_req->comn_mid.src_length = slen;
21 fw_req->comn_mid.dest_data_addr = dst;
22 fw_req->comn_mid.dst_length = dlen;
23 fw_req->comn_mid.opaque_data = opaque;
24 req_pars->comp_len = slen;
25 req_pars->out_buffer_sz = dlen;
26 }
27
qat_comp_create_compression_req(void * ctx,void * req,u64 src,u32 slen,u64 dst,u32 dlen,u64 opaque)28 static inline void qat_comp_create_compression_req(void *ctx, void *req,
29 u64 src, u32 slen,
30 u64 dst, u32 dlen,
31 u64 opaque)
32 {
33 qat_comp_create_req(ctx, req, src, slen, dst, dlen, opaque);
34 }
35
qat_comp_create_decompression_req(void * ctx,void * req,u64 src,u32 slen,u64 dst,u32 dlen,u64 opaque)36 static inline void qat_comp_create_decompression_req(void *ctx, void *req,
37 u64 src, u32 slen,
38 u64 dst, u32 dlen,
39 u64 opaque)
40 {
41 struct icp_qat_fw_comp_req *fw_tmpl = ctx;
42
43 fw_tmpl++;
44 qat_comp_create_req(fw_tmpl, req, src, slen, dst, dlen, opaque);
45 }
46
qat_comp_get_consumed_ctr(void * resp)47 static inline u32 qat_comp_get_consumed_ctr(void *resp)
48 {
49 struct icp_qat_fw_comp_resp *qat_resp = resp;
50
51 return qat_resp->comp_resp_pars.input_byte_counter;
52 }
53
qat_comp_get_produced_ctr(void * resp)54 static inline u32 qat_comp_get_produced_ctr(void *resp)
55 {
56 struct icp_qat_fw_comp_resp *qat_resp = resp;
57
58 return qat_resp->comp_resp_pars.output_byte_counter;
59 }
60
qat_comp_get_produced_adler32(void * resp)61 static inline u32 qat_comp_get_produced_adler32(void *resp)
62 {
63 struct icp_qat_fw_comp_resp *qat_resp = resp;
64
65 return qat_resp->comp_resp_pars.crc.legacy.curr_adler_32;
66 }
67
qat_comp_get_opaque(void * resp)68 static inline u64 qat_comp_get_opaque(void *resp)
69 {
70 struct icp_qat_fw_comp_resp *qat_resp = resp;
71
72 return qat_resp->opaque_data;
73 }
74
qat_comp_get_cmp_err(void * resp)75 static inline s8 qat_comp_get_cmp_err(void *resp)
76 {
77 struct icp_qat_fw_comp_resp *qat_resp = resp;
78
79 return qat_resp->comn_resp.comn_error.cmp_err_code;
80 }
81
qat_comp_get_xlt_err(void * resp)82 static inline s8 qat_comp_get_xlt_err(void *resp)
83 {
84 struct icp_qat_fw_comp_resp *qat_resp = resp;
85
86 return qat_resp->comn_resp.comn_error.xlat_err_code;
87 }
88
qat_comp_get_cmp_status(void * resp)89 static inline s8 qat_comp_get_cmp_status(void *resp)
90 {
91 struct icp_qat_fw_comp_resp *qat_resp = resp;
92 u8 stat_filed = qat_resp->comn_resp.comn_status;
93
94 return ICP_QAT_FW_COMN_RESP_CMP_STAT_GET(stat_filed);
95 }
96
qat_comp_get_xlt_status(void * resp)97 static inline s8 qat_comp_get_xlt_status(void *resp)
98 {
99 struct icp_qat_fw_comp_resp *qat_resp = resp;
100 u8 stat_filed = qat_resp->comn_resp.comn_status;
101
102 return ICP_QAT_FW_COMN_RESP_XLAT_STAT_GET(stat_filed);
103 }
104
qat_comp_get_cmp_cnv_flag(void * resp)105 static inline u8 qat_comp_get_cmp_cnv_flag(void *resp)
106 {
107 struct icp_qat_fw_comp_resp *qat_resp = resp;
108 u8 flags = qat_resp->comn_resp.hdr_flags;
109
110 return ICP_QAT_FW_COMN_HDR_CNV_FLAG_GET(flags);
111 }
112
113 #endif
114