1 /* SPDX-License-Identifier: BSD-3-Clause */
2 /* Copyright(c) 2007-2022 Intel Corporation */
3 /* $FreeBSD$ */
4 /**
5  *****************************************************************************
6  * @file icp_qat_fw_comp.h
7  * @defgroup icp_qat_fw_comp ICP QAT FW Compression Service
8  *           Interface Definitions
9  * @ingroup icp_qat_fw
10  * @description
11  *      This file documents structs used to provide the interface to the
12  *      Compression QAT FW service
13  *
14  *****************************************************************************/
15 
16 #ifndef _ICP_QAT_FW_COMP_H_
17 #define _ICP_QAT_FW_COMP_H_
18 
19 /*
20 ******************************************************************************
21 * Include local header files
22 ******************************************************************************
23 */
24 #include "icp_qat_fw.h"
25 
26 /**
27  *****************************************************************************
28  * @ingroup icp_qat_fw_comp
29  *        Definition of the Compression command types
30  * @description
31  *        Enumeration which is used to indicate the ids of functions
32  *        that are exposed by the Compression QAT FW service
33  *
34  *****************************************************************************/
35 
36 typedef enum {
37 	ICP_QAT_FW_COMP_CMD_STATIC = 0,
38 	/*!< Static Compress Request */
39 
40 	ICP_QAT_FW_COMP_CMD_DYNAMIC = 1,
41 	/*!< Dynamic Compress Request */
42 
43 	ICP_QAT_FW_COMP_CMD_DECOMPRESS = 2,
44 	/*!< Decompress Request */
45 
46 	ICP_QAT_FW_COMP_CMD_DELIMITER
47 	/**< Delimiter type */
48 
49 } icp_qat_fw_comp_cmd_id_t;
50 
51 /*
52  *  REQUEST FLAGS IN COMMON COMPRESSION
53  *  In common message it is named as SERVICE SPECIFIC FLAGS.
54  *
55  *  + ===== + ------ + ------ + --- + -----  + ----- + ----- + -- + ---- + --- +
56  *  |  Bit  | 15 - 8 |   7    |  6  |   5    |   4   |   3   |  2 |   1  |  0  |
57  *  + ===== + ------ + -----  + --- + -----  + ----- + ----- + -- + ---- + --- +
58  *  | Flags |  Rsvd  |  Dis.  |Resvd| Dis.   | Enh.  |Auto   |Sess| Rsvd | Rsvd|
59  *  |       |  Bits  | secure |  =0 | Type0  | ASB   |Select |Type| = 0  | = 0 |
60  *  |       |  = 0   |RAM use |     | Header |       |Best   |    |      |     |
61  *  |       |        |as intmd|     |        |       |       |    |      |     |
62  *  |       |        |  buf   |     |        |       |       |    |      |     |
63  *  + ===== + ------ + -----  + --- + ------ + ----- + ----- + -- + ---- + --- +
64  * Note: For QAT 2.0 Disable Secure Ram, DisType0 Header and Enhanced ASB bits
65  * are don't care. i.e., these features are removed from QAT 2.0.
66  */
67 
68 /** Flag usage */
69 
70 #define ICP_QAT_FW_COMP_STATELESS_SESSION 0
71 /**< @ingroup icp_qat_fw_comp
72  * Flag representing that session is stateless */
73 
74 #define ICP_QAT_FW_COMP_STATEFUL_SESSION 1
75 /**< @ingroup icp_qat_fw_comp
76  * Flag representing that session is stateful  */
77 
78 #define ICP_QAT_FW_COMP_NOT_AUTO_SELECT_BEST 0
79 /**< @ingroup icp_qat_fw_comp
80  * Flag representing that autoselectbest is NOT used */
81 
82 #define ICP_QAT_FW_COMP_AUTO_SELECT_BEST 1
83 /**< @ingroup icp_qat_fw_comp
84  * Flag representing that autoselectbest is used */
85 
86 #define ICP_QAT_FW_COMP_NOT_ENH_AUTO_SELECT_BEST 0
87 /**< @ingroup icp_qat_fw_comp
88  * Flag representing that enhanced autoselectbest is NOT used */
89 
90 #define ICP_QAT_FW_COMP_ENH_AUTO_SELECT_BEST 1
91 /**< @ingroup icp_qat_fw_comp
92  * Flag representing that enhanced autoselectbest is used */
93 
94 #define ICP_QAT_FW_COMP_NOT_DISABLE_TYPE0_ENH_AUTO_SELECT_BEST 0
95 /**< @ingroup icp_qat_fw_comp
96  * Flag representing that enhanced autoselectbest is NOT used */
97 
98 #define ICP_QAT_FW_COMP_DISABLE_TYPE0_ENH_AUTO_SELECT_BEST 1
99 /**< @ingroup icp_qat_fw_comp
100  * Flag representing that enhanced autoselectbest is used */
101 
102 #define ICP_QAT_FW_COMP_DISABLE_SECURE_RAM_USED_AS_INTMD_BUF 1
103 /**< @ingroup icp_qat_fw_comp
104  * Flag representing secure RAM from being used as
105  * an intermediate buffer is DISABLED.  */
106 
107 #define ICP_QAT_FW_COMP_ENABLE_SECURE_RAM_USED_AS_INTMD_BUF 0
108 /**< @ingroup icp_qat_fw_comp
109  * Flag representing secure RAM from being used as
110  * an intermediate buffer is ENABLED.  */
111 
112 /** Flag mask & bit position */
113 
114 #define ICP_QAT_FW_COMP_SESSION_TYPE_BITPOS 2
115 /**< @ingroup icp_qat_fw_comp
116  * Starting bit position for the session type */
117 
118 #define ICP_QAT_FW_COMP_SESSION_TYPE_MASK 0x1
119 /**< @ingroup icp_qat_fw_comp
120  * One bit mask used to determine the session type */
121 
122 #define ICP_QAT_FW_COMP_AUTO_SELECT_BEST_BITPOS 3
123 /**< @ingroup icp_qat_fw_comp
124  * Starting bit position for auto select best */
125 
126 #define ICP_QAT_FW_COMP_AUTO_SELECT_BEST_MASK 0x1
127 /**< @ingroup icp_qat_fw_comp
128  * One bit mask for auto select best */
129 
130 #define ICP_QAT_FW_COMP_ENHANCED_AUTO_SELECT_BEST_BITPOS 4
131 /**< @ingroup icp_qat_fw_comp
132  * Starting bit position for enhanced auto select best */
133 
134 #define ICP_QAT_FW_COMP_ENHANCED_AUTO_SELECT_BEST_MASK 0x1
135 /**< @ingroup icp_qat_fw_comp
136  * One bit mask for enhanced auto select best */
137 
138 #define ICP_QAT_FW_COMP_RET_DISABLE_TYPE0_HEADER_DATA_BITPOS 5
139 /**< @ingroup icp_qat_fw_comp
140  * Starting bit position for disabling type zero header write back
141    when Enhanced autoselect best is enabled. If set firmware does
142    not return type0 store block header, only copies src to dest.
143    (if best output is Type0) */
144 
145 #define ICP_QAT_FW_COMP_RET_DISABLE_TYPE0_HEADER_DATA_MASK 0x1
146 /**< @ingroup icp_qat_fw_comp
147  * One bit mask for auto select best */
148 
149 #define ICP_QAT_FW_COMP_DISABLE_SECURE_RAM_AS_INTMD_BUF_BITPOS 7
150 /**< @ingroup icp_qat_fw_comp
151  * Starting bit position for flag used to disable secure ram from
152  * being used as an intermediate buffer. */
153 
154 #define ICP_QAT_FW_COMP_DISABLE_SECURE_RAM_AS_INTMD_BUF_MASK 0x1
155 /**< @ingroup icp_qat_fw_comp
156  * One bit mask for disable secure ram for use as an intermediate
157    buffer.  */
158 
159 /**
160  ******************************************************************************
161  * @ingroup icp_qat_fw_comp
162  *
163  * @description
164  * Macro used for the generation of the command flags for Compression Request.
165  * This should always be used for the generation of the flags. No direct sets or
166  * masks should be performed on the flags data
167  *
168  * @param sesstype         Session Type
169  * @param autoselect       AutoSelectBest
170  * @enhanced_asb           Enhanced AutoSelectBest
171  * @ret_uncomp             RetUnCompressed
172  * @secure_ram             Secure Ram usage
173  *
174  *********************************************************************************/
175 #define ICP_QAT_FW_COMP_FLAGS_BUILD(                                           \
176     sesstype, autoselect, enhanced_asb, ret_uncomp, secure_ram)                \
177 	(((sesstype & ICP_QAT_FW_COMP_SESSION_TYPE_MASK)                       \
178 	  << ICP_QAT_FW_COMP_SESSION_TYPE_BITPOS) |                            \
179 	 ((autoselect & ICP_QAT_FW_COMP_AUTO_SELECT_BEST_MASK)                 \
180 	  << ICP_QAT_FW_COMP_AUTO_SELECT_BEST_BITPOS) |                        \
181 	 ((enhanced_asb & ICP_QAT_FW_COMP_ENHANCED_AUTO_SELECT_BEST_MASK)      \
182 	  << ICP_QAT_FW_COMP_ENHANCED_AUTO_SELECT_BEST_BITPOS) |               \
183 	 ((ret_uncomp & ICP_QAT_FW_COMP_RET_DISABLE_TYPE0_HEADER_DATA_MASK)    \
184 	  << ICP_QAT_FW_COMP_RET_DISABLE_TYPE0_HEADER_DATA_BITPOS) |           \
185 	 ((secure_ram & ICP_QAT_FW_COMP_DISABLE_SECURE_RAM_AS_INTMD_BUF_MASK)  \
186 	  << ICP_QAT_FW_COMP_DISABLE_SECURE_RAM_AS_INTMD_BUF_BITPOS))
187 
188 /**
189 ******************************************************************************
190 * @ingroup icp_qat_fw_comp
191 *
192 * @description
193 * Macro used for the generation of the command flags for Compression Request.
194 * This should always be used for the generation of the flags. No direct sets or
195 * masks should be performed on the flags data
196 *
197 * @param sesstype         Session Type
198 * @param autoselect       AutoSelectBest
199 *                         Selects between compressed and uncompressed output.
200 *                         No distinction made between static and dynamic
201 *                         compressed data.
202 *
203 *********************************************************************************/
204 #define ICP_QAT_FW_COMP_20_FLAGS_BUILD(sesstype, autoselect)                   \
205 	(((sesstype & ICP_QAT_FW_COMP_SESSION_TYPE_MASK)                       \
206 	  << ICP_QAT_FW_COMP_SESSION_TYPE_BITPOS) |                            \
207 	 ((autoselect & ICP_QAT_FW_COMP_AUTO_SELECT_BEST_MASK)                 \
208 	  << ICP_QAT_FW_COMP_AUTO_SELECT_BEST_BITPOS))
209 
210 /**
211  ******************************************************************************
212  * @ingroup icp_qat_fw_comp
213  *
214  * @description
215  *        Macro for extraction of the session type bit
216  *
217  * @param flags        Flags to extract the session type bit from
218  *
219  ******************************************************************************/
220 #define ICP_QAT_FW_COMP_SESSION_TYPE_GET(flags)                                \
221 	QAT_FIELD_GET(flags,                                                   \
222 		      ICP_QAT_FW_COMP_SESSION_TYPE_BITPOS,                     \
223 		      ICP_QAT_FW_COMP_SESSION_TYPE_MASK)
224 
225 /**
226  ******************************************************************************
227  * @ingroup icp_qat_fw_comp
228  *
229  * @description
230  *        Macro for extraction of the autoSelectBest bit
231  *
232  * @param flags        Flags to extract the autoSelectBest bit from
233  *
234  ******************************************************************************/
235 #define ICP_QAT_FW_COMP_AUTO_SELECT_BEST_GET(flags)                            \
236 	QAT_FIELD_GET(flags,                                                   \
237 		      ICP_QAT_FW_COMP_AUTO_SELECT_BEST_BITPOS,                 \
238 		      ICP_QAT_FW_COMP_AUTO_SELECT_BEST_MASK)
239 
240 /**
241  ******************************************************************************
242  * @ingroup icp_qat_fw_comp
243  *
244  * @description
245  *        Macro for extraction of the enhanced asb bit
246  *
247  * @param flags        Flags to extract the enhanced asb bit from
248  *
249  ******************************************************************************/
250 #define ICP_QAT_FW_COMP_EN_ASB_GET(flags)                                      \
251 	QAT_FIELD_GET(flags,                                                   \
252 		      ICP_QAT_FW_COMP_ENHANCED_AUTO_SELECT_BEST_BITPOS,        \
253 		      ICP_QAT_FW_COMP_ENHANCED_AUTO_SELECT_BEST_MASK)
254 
255 /**
256  ******************************************************************************
257  * @ingroup icp_qat_fw_comp
258  *
259  * @description
260  *        Macro for extraction of the RetUncomp bit
261  *
262  * @param flags        Flags to extract the Ret Uncomp bit from
263  *
264  ******************************************************************************/
265 #define ICP_QAT_FW_COMP_RET_UNCOMP_GET(flags)                                  \
266 	QAT_FIELD_GET(flags,                                                   \
267 		      ICP_QAT_FW_COMP_RET_DISABLE_TYPE0_HEADER_DATA_BITPOS,    \
268 		      ICP_QAT_FW_COMP_RET_DISABLE_TYPE0_HEADER_DATA_MASK)
269 
270 /**
271  ******************************************************************************
272  * @ingroup icp_qat_fw_comp
273  *
274  * @description
275  *        Macro for extraction of the Secure Ram usage bit
276  *
277  * @param flags        Flags to extract the Secure Ram usage from
278  *
279  ******************************************************************************/
280 #define ICP_QAT_FW_COMP_SECURE_RAM_USE_GET(flags)                              \
281 	QAT_FIELD_GET(flags,                                                   \
282 		      ICP_QAT_FW_COMP_DISABLE_SECURE_RAM_AS_INTMD_BUF_BITPOS,  \
283 		      ICP_QAT_FW_COMP_DISABLE_SECURE_RAM_AS_INTMD_BUF_MASK)
284 
285 /**
286  ******************************************************************************
287  * @ingroup icp_qat_fw_comp
288  *        Definition of the compression header cd pars block
289  * @description
290  *      Definition of the compression processing cd pars block.
291  *      The structure is a service-specific implementation of the common
292  *      structure.
293  ******************************************************************************/
294 typedef union icp_qat_fw_comp_req_hdr_cd_pars_s {
295 	/**< LWs 2-5 */
296 	struct {
297 		uint64_t content_desc_addr;
298 		/**< Address of the content descriptor */
299 
300 		uint16_t content_desc_resrvd1;
301 		/**< Content descriptor reserved field */
302 
303 		uint8_t content_desc_params_sz;
304 		/**< Size of the content descriptor parameters in quad words.
305 		 * These
306 		 * parameters describe the session setup configuration info for
307 		 * the
308 		 * slices that this request relies upon i.e. the configuration
309 		 * word and
310 		 * cipher key needed by the cipher slice if there is a request
311 		 * for
312 		 * cipher
313 		 * processing. */
314 
315 		uint8_t content_desc_hdr_resrvd2;
316 		/**< Content descriptor reserved field */
317 
318 		uint32_t content_desc_resrvd3;
319 		/**< Content descriptor reserved field */
320 	} s;
321 
322 	struct {
323 		uint32_t comp_slice_cfg_word[ICP_QAT_FW_NUM_LONGWORDS_2];
324 		/* Compression Slice Config Word */
325 
326 		uint32_t content_desc_resrvd4;
327 		/**< Content descriptor reserved field */
328 	} sl;
329 
330 } icp_qat_fw_comp_req_hdr_cd_pars_t;
331 
332 /**
333  ******************************************************************************
334  * @ingroup icp_qat_fw_comp
335  *        Definition of the compression request parameters block
336  * @description
337  *      Definition of the compression processing request parameters block.
338  *      The structure below forms part of the Compression + Translation
339  *      Parameters block spanning LWs 14-21, thus differing from the common
340  *      base Parameters block structure. Unused fields must be set to 0.
341  *
342  ******************************************************************************/
343 typedef struct icp_qat_fw_comp_req_params_s {
344 	/**< LW 14 */
345 	uint32_t comp_len;
346 	/**< Size of input to process in bytes Note:  Only EOP requests can be
347 	 * odd
348 	 * for decompression. IA must set LSB to zero for odd sized intermediate
349 	 * inputs */
350 
351 	/**< LW 15 */
352 	uint32_t out_buffer_sz;
353 	/**< Size of output buffer in bytes */
354 
355 	/**< LW 16 */
356 	union {
357 		struct {
358 			/** LW 16 */
359 			uint32_t initial_crc32;
360 			/**< CRC for processed bytes (input byte count) */
361 
362 			/** LW 17 */
363 			uint32_t initial_adler;
364 			/**< Adler for processed bytes (input byte count) */
365 		} legacy;
366 
367 		/** LW 16-17 */
368 		uint64_t crc_data_addr;
369 		/**< CRC data structure pointer */
370 	} crc;
371 
372 	/** LW 18 */
373 	uint32_t req_par_flags;
374 
375 	/** LW 19 */
376 	uint32_t rsrvd;
377 
378 } icp_qat_fw_comp_req_params_t;
379 
380 /**
381  ******************************************************************************
382  * @ingroup icp_qat_fw_comp
383  *
384  * @description
385  * Macro used for the generation of the request parameter flags.
386  * This should always be used for the generation of the flags. No direct sets or
387  * masks should be performed on the flags data
388  *
389  * @param sop                SOP Flag, 0 restore, 1 don't restore
390  * @param eop                EOP Flag, 0 restore, 1 don't restore
391  * @param bfinal             Set bfinal in this block or not
392  * @param cnv                Whether internal CNV check is to be performed
393  *                            * ICP_QAT_FW_COMP_NO_CNV
394  *                            * ICP_QAT_FW_COMP_CNV
395  * @param cnvnr              Whether internal CNV recovery is to be performed
396  *                            * ICP_QAT_FW_COMP_NO_CNV_RECOVERY
397  *                            * ICP_QAT_FW_COMP_CNV_RECOVERY
398  * @param crc                CRC Mode Flag - 0 legacy, 1 crc data struct
399  *
400  *****************************************************************************/
401 #define ICP_QAT_FW_COMP_REQ_PARAM_FLAGS_BUILD(                                 \
402     sop, eop, bfinal, cnv, cnvnr, cnvdfx, crc)                                 \
403 	(((sop & ICP_QAT_FW_COMP_SOP_MASK) << ICP_QAT_FW_COMP_SOP_BITPOS) |    \
404 	 ((eop & ICP_QAT_FW_COMP_EOP_MASK) << ICP_QAT_FW_COMP_EOP_BITPOS) |    \
405 	 ((bfinal & ICP_QAT_FW_COMP_BFINAL_MASK)                               \
406 	  << ICP_QAT_FW_COMP_BFINAL_BITPOS) |                                  \
407 	 ((cnv & ICP_QAT_FW_COMP_CNV_MASK) << ICP_QAT_FW_COMP_CNV_BITPOS) |    \
408 	 ((cnvnr & ICP_QAT_FW_COMP_CNVNR_MASK)                                 \
409 	  << ICP_QAT_FW_COMP_CNVNR_BITPOS) |                                   \
410 	 ((cnvdfx & ICP_QAT_FW_COMP_CNV_DFX_MASK)                              \
411 	  << ICP_QAT_FW_COMP_CNV_DFX_BITPOS) |                                 \
412 	 ((crc & ICP_QAT_FW_COMP_CRC_MODE_MASK)                                \
413 	  << ICP_QAT_FW_COMP_CRC_MODE_BITPOS))
414 
415 /*
416  *  REQUEST FLAGS IN REQUEST PARAMETERS COMPRESSION
417  *
418  *  + ===== + ----- + --- +-----+-------+ --- + ---------+ --- + ---- + --- +
419  * --- +
420  *  |  Bit  | 31-20 |  19 |  18 |   17  | 16  |  15 - 7  |  6  |  5-2 |  1  |  0
421  * |
422  *  + ===== + ----- + --- +-----+-------+ --- + ---------+ --- | ---- + --- +
423  * --- +
424  *  | Flags | Resvd | CRC |Resvd| CNVNR | CNV |Resvd Bits|BFin |Resvd | EOP |
425  * SOP |
426  *  |       | =0    | Mode| =0  |       |     | =0       |     | =0   |     | |
427  *  |       |       |     |     |       |     |          |     |      |     | |
428  *  + ===== + ----- + --- +-----+-------+ --- + ---------+ --- | ---- + --- +
429  * --- +
430  */
431 
432 #define ICP_QAT_FW_COMP_NOT_SOP 0
433 /**< @ingroup icp_qat_fw_comp
434  * Flag representing that a request is NOT Start of Packet */
435 
436 #define ICP_QAT_FW_COMP_SOP 1
437 /**< @ingroup icp_qat_fw_comp
438  * Flag representing that a request IS Start of Packet */
439 
440 #define ICP_QAT_FW_COMP_NOT_EOP 0
441 /**< @ingroup icp_qat_fw_comp
442  * Flag representing that a request is NOT Start of Packet */
443 
444 #define ICP_QAT_FW_COMP_EOP 1
445 /**< @ingroup icp_qat_fw_comp
446  * Flag representing that a request IS End of Packet */
447 
448 #define ICP_QAT_FW_COMP_NOT_BFINAL 0
449 /**< @ingroup icp_qat_fw_comp
450  * Flag representing to indicate firmware this is not the last block */
451 
452 #define ICP_QAT_FW_COMP_BFINAL 1
453 /**< @ingroup icp_qat_fw_comp
454  * Flag representing to indicate firmware this is the last block */
455 
456 #define ICP_QAT_FW_COMP_NO_CNV 0
457 /**< @ingroup icp_qat_fw_comp
458  * Flag indicating that NO cnv check is to be performed on the request */
459 
460 #define ICP_QAT_FW_COMP_CNV 1
461 /**< @ingroup icp_qat_fw_comp
462  * Flag indicating that a cnv check IS to be performed on the request */
463 
464 #define ICP_QAT_FW_COMP_NO_CNV_RECOVERY 0
465 /**< @ingroup icp_qat_fw_comp
466  * Flag indicating that NO cnv recovery is to be performed on the request */
467 
468 #define ICP_QAT_FW_COMP_CNV_RECOVERY 1
469 /**< @ingroup icp_qat_fw_comp
470  * Flag indicating that a cnv recovery is to be performed on the request */
471 
472 #define ICP_QAT_FW_COMP_NO_CNV_DFX 0
473 /**< @ingroup icp_qat_fw_comp
474  * Flag indicating that NO CNV inject error is to be performed on the request */
475 
476 #define ICP_QAT_FW_COMP_CNV_DFX 1
477 /**< @ingroup icp_qat_fw_comp
478  * Flag indicating that CNV inject error is to be performed on the request */
479 
480 #define ICP_QAT_FW_COMP_CRC_MODE_LEGACY 0
481 /**< @ingroup icp_qat_fw_comp
482  * Flag representing to use the legacy CRC mode */
483 
484 #define ICP_QAT_FW_COMP_CRC_MODE_E2E 1
485 /**< @ingroup icp_qat_fw_comp
486  * Flag representing to use the external CRC data struct */
487 
488 #define ICP_QAT_FW_COMP_SOP_BITPOS 0
489 /**< @ingroup icp_qat_fw_comp
490  * Starting bit position for SOP */
491 
492 #define ICP_QAT_FW_COMP_SOP_MASK 0x1
493 /**< @ingroup icp_qat_fw_comp
494  * One bit mask used to determine SOP */
495 
496 #define ICP_QAT_FW_COMP_EOP_BITPOS 1
497 /**< @ingroup icp_qat_fw_comp
498  * Starting bit position for EOP */
499 
500 #define ICP_QAT_FW_COMP_EOP_MASK 0x1
501 /**< @ingroup icp_qat_fw_comp
502  * One bit mask used to determine EOP */
503 
504 #define ICP_QAT_FW_COMP_BFINAL_MASK 0x1
505 /**< @ingroup icp_qat_fw_comp
506  * One bit mask for the bfinal bit */
507 
508 #define ICP_QAT_FW_COMP_BFINAL_BITPOS 6
509 /**< @ingroup icp_qat_fw_comp
510  * Starting bit position for the bfinal bit */
511 
512 #define ICP_QAT_FW_COMP_CNV_MASK 0x1
513 /**< @ingroup icp_qat_fw_comp
514  * One bit mask for the CNV bit */
515 
516 #define ICP_QAT_FW_COMP_CNV_BITPOS 16
517 /**< @ingroup icp_qat_fw_comp
518  * Starting bit position for the CNV bit */
519 
520 #define ICP_QAT_FW_COMP_CNV_RECOVERY_MASK 0x1
521 /**< @ingroup icp_qat_fw_comp
522  * One bit mask for the CNV Recovery bit */
523 
524 #define ICP_QAT_FW_COMP_CNV_RECOVERY_BITPOS 17
525 /**< @ingroup icp_qat_fw_comp
526  * Starting bit position for the CNV Recovery bit */
527 
528 #define ICP_QAT_FW_COMP_CNVNR_MASK 0x1
529 /**< @ingroup icp_qat_fw_comp
530  * One bit mask for the CNV Recovery bit */
531 
532 #define ICP_QAT_FW_COMP_CNVNR_BITPOS 17
533 /**< @ingroup icp_qat_fw_comp
534  * Starting bit position for the CNV Recovery bit */
535 
536 #define ICP_QAT_FW_COMP_CNV_DFX_BITPOS 18
537 /**< @ingroup icp_qat_fw_comp
538  * Starting bit position for the CNV DFX bit */
539 
540 #define ICP_QAT_FW_COMP_CNV_DFX_MASK 0x1
541 /**< @ingroup icp_qat_fw_comp
542  * One bit mask for the CNV DFX bit */
543 
544 #define ICP_QAT_FW_COMP_CRC_MODE_BITPOS 19
545 /**< @ingroup icp_qat_fw_comp
546  * Starting bit position for CRC mode */
547 
548 #define ICP_QAT_FW_COMP_CRC_MODE_MASK 0x1
549 /**< @ingroup icp_qat_fw_comp
550  * One bit mask used to determine CRC mode */
551 
552 #define ICP_QAT_FW_COMP_XXHASH_ACC_MODE_BITPOS 20
553 /**< @ingroup icp_qat_fw_comp
554  * Starting bit position for xxHash accumulate mode */
555 
556 #define ICP_QAT_FW_COMP_XXHASH_ACC_MODE_MASK 0x1
557 /**< @ingroup icp_qat_fw_comp
558  * One bit mask used to determine xxHash accumulate mode */
559 
560 /**
561  ******************************************************************************
562  * @ingroup icp_qat_fw_comp
563  *
564  * @description
565  *        Macro for extraction of the SOP bit
566  *
567  * @param flags        Flags to extract the SOP bit from
568  *
569  ******************************************************************************/
570 #define ICP_QAT_FW_COMP_SOP_GET(flags)                                         \
571 	QAT_FIELD_GET(flags,                                                   \
572 		      ICP_QAT_FW_COMP_SOP_BITPOS,                              \
573 		      ICP_QAT_FW_COMP_SOP_MASK)
574 
575 /**
576 ******************************************************************************
577 * @ingroup icp_qat_fw_comp
578 *
579 * @description
580 *        Macro for extraction of the EOP bit
581 *
582 * @param flags        Flags to extract the EOP bit from
583 *
584 *****************************************************************************/
585 #define ICP_QAT_FW_COMP_EOP_GET(flags)                                         \
586 	QAT_FIELD_GET(flags,                                                   \
587 		      ICP_QAT_FW_COMP_EOP_BITPOS,                              \
588 		      ICP_QAT_FW_COMP_EOP_MASK)
589 
590 /**
591  ******************************************************************************
592  * @ingroup icp_qat_fw_comp
593  *
594  * @description
595  *        Macro for extraction of the bfinal bit
596  *
597  * @param flags        Flags to extract the bfinal bit from
598  *
599  ******************************************************************************/
600 #define ICP_QAT_FW_COMP_BFINAL_GET(flags)                                      \
601 	QAT_FIELD_GET(flags,                                                   \
602 		      ICP_QAT_FW_COMP_BFINAL_BITPOS,                           \
603 		      ICP_QAT_FW_COMP_BFINAL_MASK)
604 
605 /**
606  ******************************************************************************
607  * @ingroup icp_qat_fw_comp
608  *
609  * @description
610  *        Macro for extraction of the CNV bit
611  *
612  * @param flags        Flag set containing the CNV flag
613  *
614  *****************************************************************************/
615 #define ICP_QAT_FW_COMP_CNV_GET(flags)                                         \
616 	QAT_FIELD_GET(flags,                                                   \
617 		      ICP_QAT_FW_COMP_CNV_BITPOS,                              \
618 		      ICP_QAT_FW_COMP_CNV_MASK)
619 
620 /**
621  ******************************************************************************
622  * @ingroup icp_qat_fw_comp
623  *
624  * @description
625  *        Macro for extraction of the crc mode bit
626  *
627  * @param flags        Flags to extract the crc mode bit from
628  *
629  ******************************************************************************/
630 #define ICP_QAT_FW_COMP_CRC_MODE_GET(flags)                                    \
631 	QAT_FIELD_GET(flags,                                                   \
632 		      ICP_QAT_FW_COMP_CRC_MODE_BITPOS,                         \
633 		      ICP_QAT_FW_COMP_CRC_MODE_MASK)
634 
635 /**
636  ******************************************************************************
637  * @ingroup icp_qat_fw_comp
638  *
639  * @description
640  *        Macro for extraction of the xxHash accumulate mode bit
641  *
642  * @param flags        Flags to extract the xxHash accumulate mode bit from
643  *
644  *****************************************************************************/
645 #define ICP_QAT_FW_COMP_XXHASH_ACC_MODE_GET(flags)                             \
646 	QAT_FIELD_GET(flags,                                                   \
647 		      ICP_QAT_FW_COMP_XXHASH_ACC_MODE_BITPOS,                  \
648 		      ICP_QAT_FW_COMP_XXHASH_ACC_MODE_MASK)
649 
650 /**
651  ******************************************************************************
652  * @ingroup icp_qat_fw_comp
653  *
654  * @description
655  *        Macro for setting of the xxHash accumulate mode bit
656  *
657  * @param flags        Flags to set the xxHash accumulate mode bit to
658  * @param val          xxHash accumulate mode to set
659  *
660  *****************************************************************************/
661 #define ICP_QAT_FW_COMP_XXHASH_ACC_MODE_SET(flags, val)                        \
662 	QAT_FIELD_SET(flags,                                                   \
663 		      val,                                                     \
664 		      ICP_QAT_FW_COMP_XXHASH_ACC_MODE_BITPOS,                  \
665 		      ICP_QAT_FW_COMP_XXHASH_ACC_MODE_MASK)
666 
667 /**
668  ******************************************************************************
669  * @ingroup icp_qat_fw_comp
670  *        Definition of the translator request parameters block
671  * @description
672  *        Definition of the translator processing request parameters block
673  *        The structure below forms part of the Compression + Translation
674  *        Parameters block spanning LWs 20-21, thus differing from the common
675  *        base Parameters block structure. Unused fields must be set to 0.
676  *
677  ******************************************************************************/
678 typedef struct icp_qat_fw_xlt_req_params_s {
679 	/**< LWs 20-21 */
680 	uint64_t inter_buff_ptr;
681 	/**< This field specifies the physical address of an intermediate
682 	 *  buffer SGL array. The array contains a pair of 64-bit
683 	 *  intermediate buffer pointers to SGL buffer descriptors, one pair
684 	 *  per CPM. Please refer to the CPM1.6 Firmware Interface HLD
685 	 *  specification for more details.
686 	 *  Placeholder for QAT2.0. */
687 } icp_qat_fw_xlt_req_params_t;
688 
689 /**
690  ******************************************************************************
691  * @ingroup icp_qat_fw_comp
692  *      Compression header of the content descriptor block
693  * @description
694  *      Definition of the service-specific compression control block header
695  *      structure. The compression parameters are defined per algorithm
696  *      and are located in the icp_qat_hw.h file. This compression
697  *      cd block spans LWs 24-29, forming part of the compression + translation
698  *      cd block, thus differing from the common base content descriptor
699  *      structure.
700  *
701  ******************************************************************************/
702 typedef struct icp_qat_fw_comp_cd_hdr_s {
703 	/**< LW 24 */
704 	uint16_t ram_bank_flags;
705 	/**< Flags to show which ram banks to access */
706 
707 	uint8_t comp_cfg_offset;
708 	/**< Quad word offset from the content descriptor parameters address to
709 	 * the
710 	 * parameters for the compression processing */
711 
712 	uint8_t next_curr_id;
713 	/**< This field combines the next and current id (each four bits) -
714 	  * the next id is the most significant nibble.
715 	  * Next Id:  Set to the next slice to pass the compressed data through.
716 	  * Set to ICP_QAT_FW_SLICE_DRAM_WR if the data is not to go through
717 	  * anymore slices after compression
718 	  * Current Id: Initialised with the compression slice type */
719 
720 	/**< LW 25 */
721 	uint32_t resrvd;
722 
723 	/**< LWs 26-27 */
724 	uint64_t comp_state_addr;
725 	/**< Pointer to compression state */
726 
727 	/**< LWs 28-29 */
728 	uint64_t ram_banks_addr;
729 	/**< Pointer to banks */
730 
731 } icp_qat_fw_comp_cd_hdr_t;
732 
733 #define COMP_CPR_INITIAL_CRC 0
734 #define COMP_CPR_INITIAL_ADLER 1
735 
736 /**
737  ******************************************************************************
738  * @ingroup icp_qat_fw_comp
739  *      Translator content descriptor header block
740  * @description
741  *      Definition of the structure used to describe the translation processing
742  *      to perform on data. The translator parameters are defined per algorithm
743  *      and are located in the icp_qat_hw.h file. This translation cd block
744  *      spans LWs 30-31, forming part of the compression + translation cd block,
745  *      thus differing from the common base content descriptor structure.
746  *
747  ******************************************************************************/
748 typedef struct icp_qat_fw_xlt_cd_hdr_s {
749 	/**< LW 30 */
750 	uint16_t resrvd1;
751 	/**< Reserved field and assumed set to 0 */
752 
753 	uint8_t resrvd2;
754 	/**< Reserved field and assumed set to 0 */
755 
756 	uint8_t next_curr_id;
757 	/**< This field combines the next and current id (each four bits) -
758 	  * the next id is the most significant nibble.
759 	  * Next Id:  Set to the next slice to pass the translated data through.
760 	  * Set to ICP_QAT_FW_SLICE_DRAM_WR if the data is not to go through
761 	  * any more slices after compression
762 	  * Current Id: Initialised with the translation slice type */
763 
764 	/**< LW 31 */
765 	uint32_t resrvd3;
766 	/**< Reserved and should be set to zero, needed for quadword alignment
767 	 */
768 } icp_qat_fw_xlt_cd_hdr_t;
769 
770 /**
771  ******************************************************************************
772  * @ingroup icp_qat_fw_comp
773  *        Definition of the common Compression QAT FW request
774  * @description
775  *        This is a definition of the full request structure for
776  *        compression and translation.
777  *
778  ******************************************************************************/
779 typedef struct icp_qat_fw_comp_req_s {
780 	/**< LWs 0-1 */
781 	icp_qat_fw_comn_req_hdr_t comn_hdr;
782 	/**< Common request header - for Service Command Id,
783 	 * use service-specific Compression Command Id.
784 	 * Service Specific Flags - use Compression Command Flags */
785 
786 	/**< LWs 2-5 */
787 	icp_qat_fw_comp_req_hdr_cd_pars_t cd_pars;
788 	/**< Compression service-specific content descriptor field which points
789 	 * either to a content descriptor parameter block or contains the
790 	 * compression slice config word. */
791 
792 	/**< LWs 6-13 */
793 	icp_qat_fw_comn_req_mid_t comn_mid;
794 	/**< Common request middle section */
795 
796 	/**< LWs 14-19 */
797 	icp_qat_fw_comp_req_params_t comp_pars;
798 	/**< Compression request Parameters block */
799 
800 	/**< LWs 20-21 */
801 	union {
802 		icp_qat_fw_xlt_req_params_t xlt_pars;
803 		/**< Translation request Parameters block */
804 
805 		uint32_t resrvd1[ICP_QAT_FW_NUM_LONGWORDS_2];
806 		/**< Reserved if not used for translation */
807 	} u1;
808 
809 	/**< LWs 22-23 */
810 	union {
811 		uint32_t resrvd2[ICP_QAT_FW_NUM_LONGWORDS_2];
812 		/**< Reserved - not used if Batch and Pack is disabled.*/
813 
814 		uint64_t bnp_res_table_addr;
815 		/**< A generic pointer to the unbounded list of
816 		 * icp_qat_fw_resp_comp_pars_t members. This pointer is only
817 		 * used when the Batch and Pack is enabled. */
818 	} u3;
819 
820 	/**< LWs 24-29 */
821 	icp_qat_fw_comp_cd_hdr_t comp_cd_ctrl;
822 	/**< Compression request content descriptor control
823 	 * block header */
824 
825 	/**< LWs 30-31 */
826 	union {
827 		icp_qat_fw_xlt_cd_hdr_t xlt_cd_ctrl;
828 		/**< Translation request content descriptor
829 		 * control block header */
830 
831 		uint32_t resrvd3[ICP_QAT_FW_NUM_LONGWORDS_2];
832 		/**< Reserved if not used for translation */
833 	} u2;
834 
835 } icp_qat_fw_comp_req_t;
836 
837 /**
838  ******************************************************************************
839  * @ingroup icp_qat_fw_comp
840  *        Definition of the compression QAT FW response descriptor
841  *        parameters
842  * @description
843  *        This part of the response is specific to the compression response.
844  *
845  ******************************************************************************/
846 typedef struct icp_qat_fw_resp_comp_pars_s {
847 	/**< LW 4 */
848 	uint32_t input_byte_counter;
849 	/**< Input byte counter */
850 
851 	/**< LW 5 */
852 	uint32_t output_byte_counter;
853 	/**< Output byte counter */
854 
855 	/** LW 6-7 */
856 	union {
857 		struct {
858 			/** LW 6 */
859 			uint32_t curr_crc32;
860 			/**< Current CRC32 */
861 
862 			/** LW 7 */
863 			uint32_t curr_adler_32;
864 			/**< Current Adler32 */
865 		} legacy;
866 
867 		uint32_t resrvd[ICP_QAT_FW_NUM_LONGWORDS_2];
868 		/**< Reserved if not in legacy mode */
869 	} crc;
870 
871 } icp_qat_fw_resp_comp_pars_t;
872 
873 /**
874  *****************************************************************************
875  * @ingroup icp_qat_fw_comp
876  *       Definition of a single result metadata structure inside Batch and Pack
877  *       results table array. It describes the output if single job in the
878  *       batch and pack jobs.
879  *       Total number of entries in BNP Out table shall be equal to total
880  *       number of requests in the 'batch'.
881  * @description
882  *        This structure is specific to the compression output.
883  *
884  *****************************************************************************/
885 typedef struct icp_qat_fw_comp_bnp_out_tbl_entry_s {
886 	/**< LWs 0-3 */
887 	icp_qat_fw_resp_comp_pars_t comp_out_pars;
888 	/**< Common output params (checksums and byte counts) */
889 
890 	/**< LW 4 */
891 	icp_qat_fw_comn_error_t comn_error;
892 	/**< This field is overloaded to allow for one 8 bit common error field
893 	 *   or two 8 bit error fields from compression and translator  */
894 
895 	uint8_t comn_status;
896 	/**< Status field which specifies which slice(s) report an error */
897 
898 	uint8_t reserved0;
899 	/**< Reserved, shall be set to zero */
900 
901 	uint32_t reserved1;
902 	/**< Reserved, shall be set to zero,
903 	added for aligning entries to quadword boundary */
904 } icp_qat_fw_comp_bnp_out_tbl_entry_t;
905 
906 /**
907 *****************************************************************************
908 * @ingroup icp_qat_fw_comp
909 *      Supported modes for skipping regions of input or output buffers.
910 *
911 * @description
912 *      This enumeration lists the supported modes for skipping regions of
913 *      input or output buffers.
914 *
915 *****************************************************************************/
916 typedef enum icp_qat_fw_comp_bnp_skip_mode_s {
917 	ICP_QAT_FW_SKIP_DISABLED = 0,
918 	/**< Skip mode is disabled */
919 	ICP_QAT_FW_SKIP_AT_START = 1,
920 	/**< Skip region is at the start of the buffer. */
921 	ICP_QAT_FW_SKIP_AT_END = 2,
922 	/**< Skip region is at the end of the buffer. */
923 	ICP_QAT_FW_SKIP_STRIDE = 3
924 	/**< Skip region occurs at regular intervals within the buffer.
925 	 specifies the number of bytes between each
926 	 skip region. */
927 } icp_qat_fw_comp_bnp_skip_mode_t;
928 
929 /**
930  *****************************************************************************
931  * @ingroup icp_qat_fw_comn
932  *      Flags describing the skip and compression job bahaviour. refer to flag
933  *      definitions on skip mode and reset/flush types.
934  *      Note: compression behaviour flags are ignored for destination skip info.
935  * @description
936  *      Definition of the common request flags.
937  *
938  *****************************************************************************/
939 typedef uint8_t icp_qat_fw_comp_bnp_flags_t;
940 
941 /**
942  *****************************************************************************
943  * @ingroup icp_qat_fw_comn
944  *      Skip Region Data.
945  * @description
946  *      This structure contains data relating to configuring skip region
947  *      behaviour. A skip region is a region of an input buffer that
948  *      should be omitted from processing or a region that should be inserted
949  *      into the output buffer.
950  *
951  *****************************************************************************/
952 typedef struct icp_qat_fw_comp_bnp_skip_info_s {
953 	/**< LW 0 */
954 	uint16_t skip_length;
955 	/**<Number of bytes to skip when skip mode is enabled */
956 
957 	/**< LW 1 */
958 	uint16_t stride_length;
959 	/**<Size of the stride between skip regions when skip mode is
960 	 * enabled */
961 
962 	/**< LW 2 */
963 	uint16_t firstSkipOffset;
964 	/**< Number of bytes to skip in a buffer before reading/writing the
965 	 * input/output data. */
966 
967 	/**< LWs 3 */
968 	icp_qat_fw_comp_bnp_flags_t bnp_flags;
969 	/**< Translation request Parameters block */
970 
971 	uint8_t resrvd1;
972 	/**< Reserved if not used for translation */
973 
974 } icp_qat_fw_comp_bnp_skip_info_t;
975 
976 /**
977  *****************************************************************************
978  * @ingroup icp_qat_fw_comn
979  *      Batch and Pack operation header.
980  * @description
981  *      This structure contains address of the next bnp op data, and the
982  *      length of the compression operation.
983  *****************************************************************************/
984 typedef struct icp_qat_fw_comp_bnp_op_header_s {
985 	/**< LW 0*/
986 	uint64_t next_opdata_addr;
987 	/**< Physical pointer to the Address of the next bnp op data structure.
988 	*/
989 
990 	/**< LW 2*/
991 	uint32_t comp_len;
992 	/**< Size of input to process in bytes  */
993 
994 	/**< LW 3*/
995 	uint32_t resrvd1;
996 	/**< Reserved - Should be set to zero. */
997 
998 } icp_qat_fw_comp_bnp_op_header_t;
999 
1000 /**
1001  *****************************************************************************
1002  * @ingroup icp_qat_fw_comn
1003  *      Batch and Pack operation op data structure.
1004  * @description
1005  *      This structure contains data relating to describing the skipping and
1006  *      reset behaviour of source and skipping behaviour of destination buffer
1007  *      associated with the input job where job has a single sgl vector, and
1008  *      batch and pack might contain multiple jobs.
1009  *      The structure also contains a pointer to the next 'job' described by
1010  *      the next op_data structure.
1011  *      Corresponding SGL Buffer shall physically follow this structure.
1012  *****************************************************************************/
1013 typedef struct icp_qat_fw_comp_bnp_op_data_s {
1014 	icp_qat_fw_comp_bnp_op_header_t bnp_op_header;
1015 	/**< Pointer to next Op data, and general information on the operation
1016 	*/
1017 	icp_qat_fw_comp_bnp_skip_info_t src_bnp_skip_info;
1018 	/**< Optional skip regions in the input buffers */
1019 	icp_qat_fw_comp_bnp_skip_info_t dst_bnp_skip_info;
1020 	/**< Optional skip regions in the output buffers */
1021 
1022 } icp_qat_fw_comp_bnp_op_data_t;
1023 
1024 /**
1025  ******************************************************************************
1026  * @ingroup icp_qat_fw_comp
1027  *        Definition of the Compression Eagle Tail Response
1028  * @description
1029  *        This is the response delivered to the ET rings by the Compression
1030  *        QAT FW service for all commands
1031  *
1032  ******************************************************************************/
1033 typedef struct icp_qat_fw_comp_resp_s {
1034 	/**< LWs 0-1 */
1035 	icp_qat_fw_comn_resp_hdr_t comn_resp;
1036 	/**< Common interface response format see icp_qat_fw.h */
1037 
1038 	/**< LWs 2-3 */
1039 	uint64_t opaque_data;
1040 	/**< Opaque data passed from the request to the response message */
1041 
1042 	/**< LWs 4-7 */
1043 	icp_qat_fw_resp_comp_pars_t comp_resp_pars;
1044 	/**< Common response params (checksums and byte counts) */
1045 } icp_qat_fw_comp_resp_t;
1046 
1047 /* RAM Bank defines */
1048 #define QAT_FW_COMP_BANK_FLAG_MASK 0x1
1049 
1050 #define QAT_FW_COMP_BANK_I_BITPOS 8
1051 #define QAT_FW_COMP_BANK_H_BITPOS 7
1052 #define QAT_FW_COMP_BANK_G_BITPOS 6
1053 #define QAT_FW_COMP_BANK_F_BITPOS 5
1054 #define QAT_FW_COMP_BANK_E_BITPOS 4
1055 #define QAT_FW_COMP_BANK_D_BITPOS 3
1056 #define QAT_FW_COMP_BANK_C_BITPOS 2
1057 #define QAT_FW_COMP_BANK_B_BITPOS 1
1058 #define QAT_FW_COMP_BANK_A_BITPOS 0
1059 
1060 /**
1061  ******************************************************************************
1062  * @ingroup icp_qat_fw_comp
1063  *      Definition of the ram bank enabled values
1064  * @description
1065  *      Enumeration used to define whether a ram bank is enabled or not
1066  *
1067  ******************************************************************************/
1068 typedef enum {
1069 	ICP_QAT_FW_COMP_BANK_DISABLED = 0, /*!< BANK DISABLED */
1070 	ICP_QAT_FW_COMP_BANK_ENABLED = 1,  /*!< BANK ENABLED */
1071 	ICP_QAT_FW_COMP_BANK_DELIMITER = 2 /**< Delimiter type */
1072 } icp_qat_fw_comp_bank_enabled_t;
1073 
1074 /**
1075  ******************************************************************************
1076  * @ingroup icp_qat_fw_comp
1077  *
1078  * @description
1079  *      Build the ram bank flags in the compression content descriptor
1080  *      which specify which banks are used to save history
1081  *
1082  * @param bank_i_enable
1083  * @param bank_h_enable
1084  * @param bank_g_enable
1085  * @param bank_f_enable
1086  * @param bank_e_enable
1087  * @param bank_d_enable
1088  * @param bank_c_enable
1089  * @param bank_b_enable
1090  * @param bank_a_enable
1091  ******************************************************************************/
1092 #define ICP_QAT_FW_COMP_RAM_FLAGS_BUILD(bank_i_enable,                         \
1093 					bank_h_enable,                         \
1094 					bank_g_enable,                         \
1095 					bank_f_enable,                         \
1096 					bank_e_enable,                         \
1097 					bank_d_enable,                         \
1098 					bank_c_enable,                         \
1099 					bank_b_enable,                         \
1100 					bank_a_enable)                         \
1101 	((((bank_i_enable)&QAT_FW_COMP_BANK_FLAG_MASK)                         \
1102 	  << QAT_FW_COMP_BANK_I_BITPOS) |                                      \
1103 	 (((bank_h_enable)&QAT_FW_COMP_BANK_FLAG_MASK)                         \
1104 	  << QAT_FW_COMP_BANK_H_BITPOS) |                                      \
1105 	 (((bank_g_enable)&QAT_FW_COMP_BANK_FLAG_MASK)                         \
1106 	  << QAT_FW_COMP_BANK_G_BITPOS) |                                      \
1107 	 (((bank_f_enable)&QAT_FW_COMP_BANK_FLAG_MASK)                         \
1108 	  << QAT_FW_COMP_BANK_F_BITPOS) |                                      \
1109 	 (((bank_e_enable)&QAT_FW_COMP_BANK_FLAG_MASK)                         \
1110 	  << QAT_FW_COMP_BANK_E_BITPOS) |                                      \
1111 	 (((bank_d_enable)&QAT_FW_COMP_BANK_FLAG_MASK)                         \
1112 	  << QAT_FW_COMP_BANK_D_BITPOS) |                                      \
1113 	 (((bank_c_enable)&QAT_FW_COMP_BANK_FLAG_MASK)                         \
1114 	  << QAT_FW_COMP_BANK_C_BITPOS) |                                      \
1115 	 (((bank_b_enable)&QAT_FW_COMP_BANK_FLAG_MASK)                         \
1116 	  << QAT_FW_COMP_BANK_B_BITPOS) |                                      \
1117 	 (((bank_a_enable)&QAT_FW_COMP_BANK_FLAG_MASK)                         \
1118 	  << QAT_FW_COMP_BANK_A_BITPOS))
1119 
1120 /**
1121  *****************************************************************************
1122  * @ingroup icp_qat_fw_comp
1123  *      Definition of the xxhash32 acc state buffer
1124  * @description
1125  *      This is data structure used in stateful lite for xxhash32
1126  *
1127  *****************************************************************************/
1128 typedef struct xxhash_acc_state_buff_s {
1129 	/**< LW 0 */
1130 	uint32_t in_counter;
1131 	/**< Accumulated (total) consumed bytes. As oppose to the per request
1132 	 * IBC in the response.*/
1133 
1134 	/**< LW 1 */
1135 	uint32_t out_counter;
1136 	/**< OBC as in the response.*/
1137 
1138 	/**< LW 2-5 */
1139 	uint32_t xxhash_state[4];
1140 	/**< Initial value is set by IA to the values stated in HAS.*/
1141 
1142 	/**< LW 6-9 */
1143 	uint32_t clear_txt[4];
1144 	/**< Set to 0 for the first request.*/
1145 } xxhash_acc_state_buff_t;
1146 
1147 #endif /* _ICP_QAT_FW_COMP_H_ */
1148