xref: /freebsd/sys/dev/qat/qat_api/include/dc/cpa_dc.h (revision 22cf89c938886d14f5796fc49f9f020c23ea8eaf)
178ee8d1cSJulian Grajkowski /****************************************************************************
278ee8d1cSJulian Grajkowski  *
378ee8d1cSJulian Grajkowski  *   BSD LICENSE
478ee8d1cSJulian Grajkowski  *
5266b0663SKrzysztof Zdziarski  *   Copyright(c) 2007-2023 Intel Corporation. All rights reserved.
678ee8d1cSJulian Grajkowski  *   All rights reserved.
778ee8d1cSJulian Grajkowski  *
878ee8d1cSJulian Grajkowski  *   Redistribution and use in source and binary forms, with or without
978ee8d1cSJulian Grajkowski  *   modification, are permitted provided that the following conditions
1078ee8d1cSJulian Grajkowski  *   are met:
1178ee8d1cSJulian Grajkowski  *
1278ee8d1cSJulian Grajkowski  *     * Redistributions of source code must retain the above copyright
1378ee8d1cSJulian Grajkowski  *       notice, this list of conditions and the following disclaimer.
1478ee8d1cSJulian Grajkowski  *     * Redistributions in binary form must reproduce the above copyright
1578ee8d1cSJulian Grajkowski  *       notice, this list of conditions and the following disclaimer in
1678ee8d1cSJulian Grajkowski  *       the documentation and/or other materials provided with the
1778ee8d1cSJulian Grajkowski  *       distribution.
1878ee8d1cSJulian Grajkowski  *     * Neither the name of Intel Corporation nor the names of its
1978ee8d1cSJulian Grajkowski  *       contributors may be used to endorse or promote products derived
2078ee8d1cSJulian Grajkowski  *       from this software without specific prior written permission.
2178ee8d1cSJulian Grajkowski  *
2278ee8d1cSJulian Grajkowski  *   THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
2378ee8d1cSJulian Grajkowski  *   "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
2478ee8d1cSJulian Grajkowski  *   LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
2578ee8d1cSJulian Grajkowski  *   A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
2678ee8d1cSJulian Grajkowski  *   OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
2778ee8d1cSJulian Grajkowski  *   SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
2878ee8d1cSJulian Grajkowski  *   LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
2978ee8d1cSJulian Grajkowski  *   DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
3078ee8d1cSJulian Grajkowski  *   THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
3178ee8d1cSJulian Grajkowski  *   (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
3278ee8d1cSJulian Grajkowski  *   OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
3378ee8d1cSJulian Grajkowski  *
3478ee8d1cSJulian Grajkowski  *
3578ee8d1cSJulian Grajkowski  ***************************************************************************/
3678ee8d1cSJulian Grajkowski 
3778ee8d1cSJulian Grajkowski /*
3878ee8d1cSJulian Grajkowski  *****************************************************************************
3978ee8d1cSJulian Grajkowski  * Doxygen group definitions
4078ee8d1cSJulian Grajkowski  ****************************************************************************/
4178ee8d1cSJulian Grajkowski 
4278ee8d1cSJulian Grajkowski /**
4378ee8d1cSJulian Grajkowski  *****************************************************************************
4478ee8d1cSJulian Grajkowski  * @file cpa_dc.h
4578ee8d1cSJulian Grajkowski  *
4678ee8d1cSJulian Grajkowski  * @defgroup cpaDc Data Compression API
4778ee8d1cSJulian Grajkowski  *
4878ee8d1cSJulian Grajkowski  * @ingroup cpa
4978ee8d1cSJulian Grajkowski  *
5078ee8d1cSJulian Grajkowski  * @description
5178ee8d1cSJulian Grajkowski  *      These functions specify the API for Data Compression operations.
5278ee8d1cSJulian Grajkowski  *
53266b0663SKrzysztof Zdziarski  *      The Data Compression API has the following:
54266b0663SKrzysztof Zdziarski  *      1) Session based API functions
55266b0663SKrzysztof Zdziarski  *         These functions require a session to be created before performing any
56266b0663SKrzysztof Zdziarski  *         DC operations. Subsequent DC API functions make use of the returned
57266b0663SKrzysztof Zdziarski  *         Session Handle within their structures or function prototypes.
58266b0663SKrzysztof Zdziarski  *      2) Session-less or No-Session (Ns) based API functions.
59266b0663SKrzysztof Zdziarski  *         These functions do not require a session to be initialized before
60266b0663SKrzysztof Zdziarski  *         performing DC operations. They are "one-shot" API function calls
61266b0663SKrzysztof Zdziarski  *         that submit DC requests directly using the supplied parameters.
62266b0663SKrzysztof Zdziarski  *
6378ee8d1cSJulian Grajkowski  * @remarks
6478ee8d1cSJulian Grajkowski  *
6578ee8d1cSJulian Grajkowski  *
6678ee8d1cSJulian Grajkowski  *****************************************************************************/
6778ee8d1cSJulian Grajkowski 
6878ee8d1cSJulian Grajkowski #ifndef CPA_DC_H
6978ee8d1cSJulian Grajkowski #define CPA_DC_H
7078ee8d1cSJulian Grajkowski 
7178ee8d1cSJulian Grajkowski #ifdef __cplusplus
7278ee8d1cSJulian Grajkowski extern"C" {
7378ee8d1cSJulian Grajkowski #endif
7478ee8d1cSJulian Grajkowski 
7578ee8d1cSJulian Grajkowski 
7678ee8d1cSJulian Grajkowski #ifndef CPA_H
7778ee8d1cSJulian Grajkowski #include "cpa.h"
7878ee8d1cSJulian Grajkowski #endif
7978ee8d1cSJulian Grajkowski 
8078ee8d1cSJulian Grajkowski /**
8178ee8d1cSJulian Grajkowski  *****************************************************************************
8278ee8d1cSJulian Grajkowski  * @ingroup cpaDc
8378ee8d1cSJulian Grajkowski  *      CPA Dc Major Version Number
8478ee8d1cSJulian Grajkowski  * @description
8578ee8d1cSJulian Grajkowski  *      The CPA_DC API major version number. This number will be incremented
8678ee8d1cSJulian Grajkowski  *      when significant churn to the API has occurred. The combination of the
8778ee8d1cSJulian Grajkowski  *      major and minor number definitions represent the complete version number
8878ee8d1cSJulian Grajkowski  *      for this interface.
8978ee8d1cSJulian Grajkowski  *
9078ee8d1cSJulian Grajkowski  *****************************************************************************/
91266b0663SKrzysztof Zdziarski #define CPA_DC_API_VERSION_NUM_MAJOR (3)
9278ee8d1cSJulian Grajkowski 
9378ee8d1cSJulian Grajkowski /**
9478ee8d1cSJulian Grajkowski  *****************************************************************************
9578ee8d1cSJulian Grajkowski  * @ingroup cpaDc
9678ee8d1cSJulian Grajkowski  *       CPA DC Minor Version Number
9778ee8d1cSJulian Grajkowski  * @description
9878ee8d1cSJulian Grajkowski  *      The CPA_DC API minor version number. This number will be incremented
9978ee8d1cSJulian Grajkowski  *      when minor changes to the API has occurred. The combination of the major
10078ee8d1cSJulian Grajkowski  *      and minor number definitions represent the complete version number for
10178ee8d1cSJulian Grajkowski  *      this interface.
10278ee8d1cSJulian Grajkowski  *
10378ee8d1cSJulian Grajkowski  *****************************************************************************/
10478ee8d1cSJulian Grajkowski #define CPA_DC_API_VERSION_NUM_MINOR (2)
10578ee8d1cSJulian Grajkowski 
10678ee8d1cSJulian Grajkowski /**
10778ee8d1cSJulian Grajkowski  *****************************************************************************
108266b0663SKrzysztof Zdziarski  * @file cpa_dc.h
109266b0663SKrzysztof Zdziarski  * @ingroup cpaDc
110266b0663SKrzysztof Zdziarski  *       CPA DC API version at least
111266b0663SKrzysztof Zdziarski  * @description
112266b0663SKrzysztof Zdziarski  *      The minimal supported CPA_DC API version. Allow to check if the API
113266b0663SKrzysztof Zdziarski  *      version is equal or above some version to avoid compilation issues
114266b0663SKrzysztof Zdziarski  *      with an older API version.
115266b0663SKrzysztof Zdziarski  *
116266b0663SKrzysztof Zdziarski  *****************************************************************************/
117266b0663SKrzysztof Zdziarski #define CPA_DC_API_VERSION_AT_LEAST(major, minor)                              \
118266b0663SKrzysztof Zdziarski     (CPA_DC_API_VERSION_NUM_MAJOR > major ||                                   \
119266b0663SKrzysztof Zdziarski      (CPA_DC_API_VERSION_NUM_MAJOR == major &&                                 \
120266b0663SKrzysztof Zdziarski       CPA_DC_API_VERSION_NUM_MINOR >= minor))
121266b0663SKrzysztof Zdziarski 
122266b0663SKrzysztof Zdziarski /**
123266b0663SKrzysztof Zdziarski  *****************************************************************************
124266b0663SKrzysztof Zdziarski  * @file cpa_dc.h
125266b0663SKrzysztof Zdziarski  * @ingroup cpaDc
126266b0663SKrzysztof Zdziarski  *       CPA DC API version less than
127266b0663SKrzysztof Zdziarski  * @description
128266b0663SKrzysztof Zdziarski  *      The maximum supported CPA_DC API version. Allow to check if the API
129266b0663SKrzysztof Zdziarski  *      version is below some version to avoid compilation issues with a newer
130266b0663SKrzysztof Zdziarski  *      API version.
131266b0663SKrzysztof Zdziarski  *
132266b0663SKrzysztof Zdziarski  *****************************************************************************/
133266b0663SKrzysztof Zdziarski #define CPA_DC_API_VERSION_LESS_THAN(major, minor)                             \
134266b0663SKrzysztof Zdziarski     (CPA_DC_API_VERSION_NUM_MAJOR < major ||                                   \
135266b0663SKrzysztof Zdziarski      (CPA_DC_API_VERSION_NUM_MAJOR == major &&                                 \
136266b0663SKrzysztof Zdziarski       CPA_DC_API_VERSION_NUM_MINOR < minor))
137266b0663SKrzysztof Zdziarski 
138266b0663SKrzysztof Zdziarski /**
139266b0663SKrzysztof Zdziarski  *****************************************************************************
140266b0663SKrzysztof Zdziarski  * @ingroup cpaDc
141266b0663SKrzysztof Zdziarski  *      Size of bitmap needed for compression chaining capabilities.
142266b0663SKrzysztof Zdziarski  *
143266b0663SKrzysztof Zdziarski  * @description
144266b0663SKrzysztof Zdziarski  *      Defines the number of bits in the bitmap to represent supported
145266b0663SKrzysztof Zdziarski  *      chaining capabilities @ref dcChainCapInfo. Should be set to
146266b0663SKrzysztof Zdziarski  *      at least one greater than the largest value in the enumerated type
147266b0663SKrzysztof Zdziarski  *      @ref CpaDcChainOperations, so that the value of the enum constant
148266b0663SKrzysztof Zdziarski  *      can also be used as the bit position in the bitmap.
149266b0663SKrzysztof Zdziarski  *
150266b0663SKrzysztof Zdziarski  *      A larger value was chosen to allow for extensibility without the need
151266b0663SKrzysztof Zdziarski  *      to change the size of the bitmap (to ease backwards compatibility in
152266b0663SKrzysztof Zdziarski  *      future versions of the API).
153266b0663SKrzysztof Zdziarski  *
154266b0663SKrzysztof Zdziarski  *****************************************************************************/
155266b0663SKrzysztof Zdziarski #define CPA_DC_CHAIN_CAP_BITMAP_SIZE (32)
156266b0663SKrzysztof Zdziarski 
157266b0663SKrzysztof Zdziarski /**
158266b0663SKrzysztof Zdziarski  *****************************************************************************
15978ee8d1cSJulian Grajkowski  * @ingroup cpaDc
16078ee8d1cSJulian Grajkowski  *      Compression API session handle type
16178ee8d1cSJulian Grajkowski  *
16278ee8d1cSJulian Grajkowski  * @description
16378ee8d1cSJulian Grajkowski  *      Handle used to uniquely identify a Compression API session handle. This
16478ee8d1cSJulian Grajkowski  *      handle is established upon registration with the API using
16578ee8d1cSJulian Grajkowski  *      cpaDcInitSession().
16678ee8d1cSJulian Grajkowski  *
16778ee8d1cSJulian Grajkowski  *
16878ee8d1cSJulian Grajkowski  *
16978ee8d1cSJulian Grajkowski  *****************************************************************************/
17078ee8d1cSJulian Grajkowski typedef void * CpaDcSessionHandle;
17178ee8d1cSJulian Grajkowski 
17278ee8d1cSJulian Grajkowski 
17378ee8d1cSJulian Grajkowski /**
17478ee8d1cSJulian Grajkowski  *****************************************************************************
17578ee8d1cSJulian Grajkowski  * @ingroup cpaDc
17678ee8d1cSJulian Grajkowski  *      Supported flush flags
17778ee8d1cSJulian Grajkowski  *
17878ee8d1cSJulian Grajkowski  * @description
17978ee8d1cSJulian Grajkowski  *      This enumerated list identifies the types of flush that can be
18078ee8d1cSJulian Grajkowski  *      specified for stateful and stateless cpaDcCompressData and
18178ee8d1cSJulian Grajkowski  *      cpaDcDecompressData functions.
18278ee8d1cSJulian Grajkowski  *
18378ee8d1cSJulian Grajkowski  *****************************************************************************/
18478ee8d1cSJulian Grajkowski typedef enum _CpaDcFlush
18578ee8d1cSJulian Grajkowski {
18678ee8d1cSJulian Grajkowski     CPA_DC_FLUSH_NONE = 0,
18778ee8d1cSJulian Grajkowski     /**< No flush request. */
18878ee8d1cSJulian Grajkowski     CPA_DC_FLUSH_FINAL,
18978ee8d1cSJulian Grajkowski     /**< Indicates that the input buffer contains all of the data for
19078ee8d1cSJulian Grajkowski     the compression session allowing any buffered data to be released.
19178ee8d1cSJulian Grajkowski     For Deflate, BFINAL is set in the compression header.*/
19278ee8d1cSJulian Grajkowski     CPA_DC_FLUSH_SYNC,
19378ee8d1cSJulian Grajkowski     /**< Used for stateful deflate compression to indicate that all pending
19478ee8d1cSJulian Grajkowski     output is flushed, byte aligned, to the output buffer. The session state
19578ee8d1cSJulian Grajkowski     is not reset.*/
19678ee8d1cSJulian Grajkowski     CPA_DC_FLUSH_FULL
19778ee8d1cSJulian Grajkowski     /**< Used for deflate compression to indicate that all pending output is
19878ee8d1cSJulian Grajkowski     flushed to the output buffer and the session state is reset.*/
19978ee8d1cSJulian Grajkowski } CpaDcFlush;
20078ee8d1cSJulian Grajkowski /**
20178ee8d1cSJulian Grajkowski  *****************************************************************************
20278ee8d1cSJulian Grajkowski  * @ingroup cpaDc
20378ee8d1cSJulian Grajkowski  *      Supported Huffman Tree types
20478ee8d1cSJulian Grajkowski  *
20578ee8d1cSJulian Grajkowski  * @description
20678ee8d1cSJulian Grajkowski  *      This enumeration lists support for Huffman Tree types.
20778ee8d1cSJulian Grajkowski  *      Selecting Static Huffman trees generates compressed blocks with an RFC
20878ee8d1cSJulian Grajkowski  *      1951 header specifying "compressed with fixed Huffman trees".
20978ee8d1cSJulian Grajkowski  *
21078ee8d1cSJulian Grajkowski  *      Selecting Full Dynamic Huffman trees generates compressed blocks with
21178ee8d1cSJulian Grajkowski  *      an RFC 1951 header specifying "compressed with dynamic Huffman codes".
21278ee8d1cSJulian Grajkowski  *      The headers are calculated on the data being compressed, requiring two
21378ee8d1cSJulian Grajkowski  *      passes.
21478ee8d1cSJulian Grajkowski  *
21578ee8d1cSJulian Grajkowski  *      Selecting Precompiled Huffman Trees generates blocks with RFC 1951
21678ee8d1cSJulian Grajkowski  *      dynamic headers.  The headers are pre-calculated and are specified by
21778ee8d1cSJulian Grajkowski  *      the file type.
21878ee8d1cSJulian Grajkowski  *
21978ee8d1cSJulian Grajkowski  *****************************************************************************/
22078ee8d1cSJulian Grajkowski typedef enum _CpaDcHuffType
22178ee8d1cSJulian Grajkowski {
222266b0663SKrzysztof Zdziarski     CPA_DC_HT_STATIC = 0,
22378ee8d1cSJulian Grajkowski     /**< Static Huffman Trees */
22478ee8d1cSJulian Grajkowski     CPA_DC_HT_PRECOMP,
22578ee8d1cSJulian Grajkowski     /**< Precompiled Huffman Trees  */
22678ee8d1cSJulian Grajkowski     CPA_DC_HT_FULL_DYNAMIC
22778ee8d1cSJulian Grajkowski     /**< Full Dynamic Huffman Trees */
22878ee8d1cSJulian Grajkowski } CpaDcHuffType;
22978ee8d1cSJulian Grajkowski 
23078ee8d1cSJulian Grajkowski /**
23178ee8d1cSJulian Grajkowski  *****************************************************************************
23278ee8d1cSJulian Grajkowski  * @ingroup cpaDc
23378ee8d1cSJulian Grajkowski  *      Supported compression types
23478ee8d1cSJulian Grajkowski  *
23578ee8d1cSJulian Grajkowski  * @description
23678ee8d1cSJulian Grajkowski  *      This enumeration lists the supported data compression algorithms.
23778ee8d1cSJulian Grajkowski  *      In combination with CpaDcChecksum it is used to decide on the file
23878ee8d1cSJulian Grajkowski  *      header and footer format.
23978ee8d1cSJulian Grajkowski  *
24078ee8d1cSJulian Grajkowski  *****************************************************************************/
24178ee8d1cSJulian Grajkowski typedef enum _CpaDcCompType
24278ee8d1cSJulian Grajkowski {
243266b0663SKrzysztof Zdziarski     CPA_DC_DEFLATE = 3,
24478ee8d1cSJulian Grajkowski     /**< Deflate Compression */
245266b0663SKrzysztof Zdziarski     CPA_DC_LZ4,
246266b0663SKrzysztof Zdziarski     /**< LZ4 Compression */
247266b0663SKrzysztof Zdziarski     CPA_DC_LZ4S
248266b0663SKrzysztof Zdziarski     /**< LZ4S Compression */
24978ee8d1cSJulian Grajkowski } CpaDcCompType;
25078ee8d1cSJulian Grajkowski 
25178ee8d1cSJulian Grajkowski /**
25278ee8d1cSJulian Grajkowski  *****************************************************************************
25378ee8d1cSJulian Grajkowski  * @ingroup cpaDc
254266b0663SKrzysztof Zdziarski  *      Support for defined algorithm window sizes
255266b0663SKrzysztof Zdziarski  *
256266b0663SKrzysztof Zdziarski  * @description
257266b0663SKrzysztof Zdziarski  *      This enumerated list defines the valid window sizes that can be
258266b0663SKrzysztof Zdziarski  *      used with the supported algorithms
259266b0663SKrzysztof Zdziarski  *****************************************************************************/
260266b0663SKrzysztof Zdziarski typedef enum _CpaDcCompWindowSize
261266b0663SKrzysztof Zdziarski {
262266b0663SKrzysztof Zdziarski     CPA_DC_WINSIZE_4K = 0,
263266b0663SKrzysztof Zdziarski     /**< Window size of 4KB */
264266b0663SKrzysztof Zdziarski     CPA_DC_WINSIZE_8K,
265266b0663SKrzysztof Zdziarski     /**< Window size of 8KB */
266266b0663SKrzysztof Zdziarski     CPA_DC_WINSIZE_16K,
267266b0663SKrzysztof Zdziarski     /**< Window size of 16KB */
268266b0663SKrzysztof Zdziarski     CPA_DC_WINSIZE_32K
269266b0663SKrzysztof Zdziarski     /**< Window size of 32KB */
270266b0663SKrzysztof Zdziarski } CpaDcCompWindowSize;
271266b0663SKrzysztof Zdziarski 
272266b0663SKrzysztof Zdziarski /**
273266b0663SKrzysztof Zdziarski  *****************************************************************************
274266b0663SKrzysztof Zdziarski  * @ingroup cpaDc
275266b0663SKrzysztof Zdziarski  *      Min match size in bytes
276266b0663SKrzysztof Zdziarski  * @description
277266b0663SKrzysztof Zdziarski  *      This is the min match size that will be used for the search algorithm.
278266b0663SKrzysztof Zdziarski  *      It is only configurable for LZ4S.
279266b0663SKrzysztof Zdziarski  *****************************************************************************/
280266b0663SKrzysztof Zdziarski typedef enum _CpaDcCompMinMatch
281266b0663SKrzysztof Zdziarski {
282266b0663SKrzysztof Zdziarski     CPA_DC_MIN_3_BYTE_MATCH = 0,
283266b0663SKrzysztof Zdziarski     /**< Min Match of 3 bytes */
284266b0663SKrzysztof Zdziarski     CPA_DC_MIN_4_BYTE_MATCH
285266b0663SKrzysztof Zdziarski     /**< Min Match of 4 bytes */
286266b0663SKrzysztof Zdziarski } CpaDcCompMinMatch;
287266b0663SKrzysztof Zdziarski 
288266b0663SKrzysztof Zdziarski /**
289266b0663SKrzysztof Zdziarski  *****************************************************************************
290266b0663SKrzysztof Zdziarski  * @ingroup cpaDc
291266b0663SKrzysztof Zdziarski  *      Maximum LZ4 output block size
292266b0663SKrzysztof Zdziarski  * @description
293266b0663SKrzysztof Zdziarski  *      Maximum LZ4 output block size
294266b0663SKrzysztof Zdziarski  *****************************************************************************/
295266b0663SKrzysztof Zdziarski typedef enum _CpaDcCompLZ4BlockMaxSize
296266b0663SKrzysztof Zdziarski {
297266b0663SKrzysztof Zdziarski     CPA_DC_LZ4_MAX_BLOCK_SIZE_64K = 0,
298266b0663SKrzysztof Zdziarski     /**< Maximum block size 64K */
299266b0663SKrzysztof Zdziarski     CPA_DC_LZ4_MAX_BLOCK_SIZE_256K,
300266b0663SKrzysztof Zdziarski     /**< Maximum block size 256K */
301266b0663SKrzysztof Zdziarski     CPA_DC_LZ4_MAX_BLOCK_SIZE_1M,
302266b0663SKrzysztof Zdziarski     /**< Maximum block size 1M */
303266b0663SKrzysztof Zdziarski     CPA_DC_LZ4_MAX_BLOCK_SIZE_4M,
304266b0663SKrzysztof Zdziarski     /**< Maximum block size 4M */
305266b0663SKrzysztof Zdziarski } CpaDcCompLZ4BlockMaxSize;
306266b0663SKrzysztof Zdziarski 
307266b0663SKrzysztof Zdziarski /**
308266b0663SKrzysztof Zdziarski  *****************************************************************************
309266b0663SKrzysztof Zdziarski  * @ingroup cpaDc
31078ee8d1cSJulian Grajkowski  *      Supported checksum algorithms
31178ee8d1cSJulian Grajkowski  *
31278ee8d1cSJulian Grajkowski  * @description
31378ee8d1cSJulian Grajkowski  *      This enumeration lists the supported checksum algorithms
31478ee8d1cSJulian Grajkowski  *      Used to decide on file header and footer specifics.
31578ee8d1cSJulian Grajkowski  *
31678ee8d1cSJulian Grajkowski  *****************************************************************************/
31778ee8d1cSJulian Grajkowski typedef enum _CpaDcChecksum
31878ee8d1cSJulian Grajkowski {
319266b0663SKrzysztof Zdziarski     CPA_DC_NONE = 0,
320266b0663SKrzysztof Zdziarski     /**< No checksum required */
32178ee8d1cSJulian Grajkowski     CPA_DC_CRC32,
322266b0663SKrzysztof Zdziarski     /**< Application requires a CRC32 checksum */
323266b0663SKrzysztof Zdziarski     CPA_DC_ADLER32,
32478ee8d1cSJulian Grajkowski     /**< Application requires Adler-32 checksum */
325266b0663SKrzysztof Zdziarski     CPA_DC_CRC32_ADLER32,
326266b0663SKrzysztof Zdziarski     /**< Application requires both CRC32 and Adler-32 checksums */
327266b0663SKrzysztof Zdziarski     CPA_DC_XXHASH32,
328266b0663SKrzysztof Zdziarski     /**< Application requires xxHash-32 checksum */
32978ee8d1cSJulian Grajkowski } CpaDcChecksum;
33078ee8d1cSJulian Grajkowski 
33178ee8d1cSJulian Grajkowski 
33278ee8d1cSJulian Grajkowski /**
33378ee8d1cSJulian Grajkowski  *****************************************************************************
33478ee8d1cSJulian Grajkowski  * @ingroup cpaDc
33578ee8d1cSJulian Grajkowski  *      Supported session directions
33678ee8d1cSJulian Grajkowski  *
33778ee8d1cSJulian Grajkowski  * @description
33878ee8d1cSJulian Grajkowski  *      This enumerated list identifies the direction of a session.
33978ee8d1cSJulian Grajkowski  *      A session can be compress, decompress or both.
34078ee8d1cSJulian Grajkowski  *
34178ee8d1cSJulian Grajkowski  *****************************************************************************/
34278ee8d1cSJulian Grajkowski typedef enum _CpaDcSessionDir
34378ee8d1cSJulian Grajkowski {
344266b0663SKrzysztof Zdziarski     CPA_DC_DIR_COMPRESS = 0,
34578ee8d1cSJulian Grajkowski     /**< Session will be used for compression */
34678ee8d1cSJulian Grajkowski     CPA_DC_DIR_DECOMPRESS,
34778ee8d1cSJulian Grajkowski     /**< Session will be used for decompression */
34878ee8d1cSJulian Grajkowski     CPA_DC_DIR_COMBINED
34978ee8d1cSJulian Grajkowski     /**< Session will be used for both compression and decompression */
35078ee8d1cSJulian Grajkowski } CpaDcSessionDir;
35178ee8d1cSJulian Grajkowski 
352266b0663SKrzysztof Zdziarski typedef CpaDcSessionDir CpaDcDir;
353266b0663SKrzysztof Zdziarski 
35478ee8d1cSJulian Grajkowski /**
35578ee8d1cSJulian Grajkowski  *****************************************************************************
35678ee8d1cSJulian Grajkowski  * @ingroup cpaDc
35778ee8d1cSJulian Grajkowski  *      Supported session state settings
35878ee8d1cSJulian Grajkowski  *
35978ee8d1cSJulian Grajkowski  * @description
36078ee8d1cSJulian Grajkowski  *      This enumerated list identifies the stateful setting of a session.
36178ee8d1cSJulian Grajkowski  *      A session can be either stateful or stateless.
36278ee8d1cSJulian Grajkowski  *
36378ee8d1cSJulian Grajkowski  *      Stateful sessions are limited to have only one in-flight message per
36478ee8d1cSJulian Grajkowski  *      session. This means a compress or decompress request must be complete
36578ee8d1cSJulian Grajkowski  *      before a new request can be started. This applies equally to sessions
36678ee8d1cSJulian Grajkowski  *      that are uni-directional in nature and sessions that are combined
36778ee8d1cSJulian Grajkowski  *      compress and decompress. Completion occurs when the synchronous function
36878ee8d1cSJulian Grajkowski  *      returns, or when the asynchronous callback function has completed.
36978ee8d1cSJulian Grajkowski  *
37078ee8d1cSJulian Grajkowski  *****************************************************************************/
37178ee8d1cSJulian Grajkowski typedef enum _CpaDcSessionState
37278ee8d1cSJulian Grajkowski {
373266b0663SKrzysztof Zdziarski     CPA_DC_STATEFUL = 0,
37478ee8d1cSJulian Grajkowski     /**< Session will be stateful, implying that state may need to be
37578ee8d1cSJulian Grajkowski         saved in some situations */
37678ee8d1cSJulian Grajkowski     CPA_DC_STATELESS
37778ee8d1cSJulian Grajkowski     /**< Session will be stateless, implying no state will be stored*/
37878ee8d1cSJulian Grajkowski } CpaDcSessionState;
37978ee8d1cSJulian Grajkowski 
380266b0663SKrzysztof Zdziarski typedef CpaDcSessionState CpaDcState;
381266b0663SKrzysztof Zdziarski 
38278ee8d1cSJulian Grajkowski /**
38378ee8d1cSJulian Grajkowski  *****************************************************************************
38478ee8d1cSJulian Grajkowski  * @ingroup cpaDc
38578ee8d1cSJulian Grajkowski  *      Supported compression levels
38678ee8d1cSJulian Grajkowski  *
38778ee8d1cSJulian Grajkowski  * @description
38878ee8d1cSJulian Grajkowski  *      This enumerated lists the supported compressed levels.
38978ee8d1cSJulian Grajkowski  *      Lower values will result in less compressibility in less time.
39078ee8d1cSJulian Grajkowski  *
39178ee8d1cSJulian Grajkowski  *
39278ee8d1cSJulian Grajkowski  *****************************************************************************/
39378ee8d1cSJulian Grajkowski typedef enum _CpaDcCompLvl
39478ee8d1cSJulian Grajkowski {
39578ee8d1cSJulian Grajkowski     CPA_DC_L1 = 1,
39678ee8d1cSJulian Grajkowski     /**< Compression level 1 */
39778ee8d1cSJulian Grajkowski     CPA_DC_L2,
39878ee8d1cSJulian Grajkowski     /**< Compression level 2 */
39978ee8d1cSJulian Grajkowski     CPA_DC_L3,
40078ee8d1cSJulian Grajkowski     /**< Compression level 3 */
40178ee8d1cSJulian Grajkowski     CPA_DC_L4,
40278ee8d1cSJulian Grajkowski     /**< Compression level 4 */
40378ee8d1cSJulian Grajkowski     CPA_DC_L5,
40478ee8d1cSJulian Grajkowski     /**< Compression level 5 */
40578ee8d1cSJulian Grajkowski     CPA_DC_L6,
40678ee8d1cSJulian Grajkowski     /**< Compression level 6 */
40778ee8d1cSJulian Grajkowski     CPA_DC_L7,
40878ee8d1cSJulian Grajkowski     /**< Compression level 7 */
40978ee8d1cSJulian Grajkowski     CPA_DC_L8,
41078ee8d1cSJulian Grajkowski     /**< Compression level 8 */
411266b0663SKrzysztof Zdziarski     CPA_DC_L9,
41278ee8d1cSJulian Grajkowski     /**< Compression level 9 */
413266b0663SKrzysztof Zdziarski     CPA_DC_L10,
414266b0663SKrzysztof Zdziarski     /**< Compression level 10 */
415266b0663SKrzysztof Zdziarski     CPA_DC_L11,
416266b0663SKrzysztof Zdziarski     /**< Compression level 11 */
417266b0663SKrzysztof Zdziarski     CPA_DC_L12
418266b0663SKrzysztof Zdziarski     /**< Compression level 12 */
41978ee8d1cSJulian Grajkowski } CpaDcCompLvl;
42078ee8d1cSJulian Grajkowski 
42178ee8d1cSJulian Grajkowski /**
42278ee8d1cSJulian Grajkowski  *****************************************************************************
42378ee8d1cSJulian Grajkowski  * @ingroup cpaDc
42478ee8d1cSJulian Grajkowski  *      Supported additional details from accelerator
42578ee8d1cSJulian Grajkowski  *
42678ee8d1cSJulian Grajkowski  * @description
42778ee8d1cSJulian Grajkowski  *      This enumeration lists the supported additional details from the
42878ee8d1cSJulian Grajkowski  *      accelerator.  These may be useful in determining the best way to
42978ee8d1cSJulian Grajkowski  *      recover from a failure.
43078ee8d1cSJulian Grajkowski  *
43178ee8d1cSJulian Grajkowski  *
43278ee8d1cSJulian Grajkowski  *****************************************************************************/
43378ee8d1cSJulian Grajkowski typedef enum _CpaDcReqStatus
43478ee8d1cSJulian Grajkowski {
43578ee8d1cSJulian Grajkowski     CPA_DC_OK = 0,
43678ee8d1cSJulian Grajkowski     /**< No error detected by compression slice */
43778ee8d1cSJulian Grajkowski     CPA_DC_INVALID_BLOCK_TYPE = -1,
43878ee8d1cSJulian Grajkowski     /**< Invalid block type (type == 3) */
43978ee8d1cSJulian Grajkowski     CPA_DC_BAD_STORED_BLOCK_LEN = -2,
44078ee8d1cSJulian Grajkowski     /**< Stored block length did not match one's complement */
44178ee8d1cSJulian Grajkowski     CPA_DC_TOO_MANY_CODES  = -3,
44278ee8d1cSJulian Grajkowski     /**< Too many length or distance codes */
44378ee8d1cSJulian Grajkowski     CPA_DC_INCOMPLETE_CODE_LENS = -4,
44478ee8d1cSJulian Grajkowski     /**< Code length codes incomplete */
44578ee8d1cSJulian Grajkowski     CPA_DC_REPEATED_LENS = -5,
44678ee8d1cSJulian Grajkowski     /**< Repeated lengths with no first length */
44778ee8d1cSJulian Grajkowski     CPA_DC_MORE_REPEAT = -6,
44878ee8d1cSJulian Grajkowski     /**< Repeat more than specified lengths */
44978ee8d1cSJulian Grajkowski     CPA_DC_BAD_LITLEN_CODES = -7,
45078ee8d1cSJulian Grajkowski     /**< Invalid literal/length code lengths */
45178ee8d1cSJulian Grajkowski     CPA_DC_BAD_DIST_CODES = -8,
45278ee8d1cSJulian Grajkowski     /**< Invalid distance code lengths */
45378ee8d1cSJulian Grajkowski     CPA_DC_INVALID_CODE = -9,
45478ee8d1cSJulian Grajkowski     /**< Invalid literal/length or distance code in fixed or dynamic block */
45578ee8d1cSJulian Grajkowski     CPA_DC_INVALID_DIST = -10,
45678ee8d1cSJulian Grajkowski     /**< Distance is too far back in fixed or dynamic block */
45778ee8d1cSJulian Grajkowski     CPA_DC_OVERFLOW = -11,
45878ee8d1cSJulian Grajkowski     /**< Overflow detected.  This is an indication that output buffer has overflowed.
45978ee8d1cSJulian Grajkowski      * For stateful sessions, this is a warning (the input can be adjusted and
46078ee8d1cSJulian Grajkowski      * resubmitted).
46178ee8d1cSJulian Grajkowski      * For stateless sessions this is an error condition */
46278ee8d1cSJulian Grajkowski     CPA_DC_SOFTERR = -12,
46378ee8d1cSJulian Grajkowski     /**< Other non-fatal detected */
46478ee8d1cSJulian Grajkowski     CPA_DC_FATALERR = -13,
46578ee8d1cSJulian Grajkowski     /**< Fatal error detected */
46678ee8d1cSJulian Grajkowski     CPA_DC_MAX_RESUBITERR = -14,
46778ee8d1cSJulian Grajkowski     /**< On an error being detected, the firmware attempted to correct and resubmitted the
46878ee8d1cSJulian Grajkowski      * request, however, the maximum resubmit value was exceeded */
46978ee8d1cSJulian Grajkowski     CPA_DC_INCOMPLETE_FILE_ERR = -15,
47078ee8d1cSJulian Grajkowski     /**< The input file is incomplete.  Note this is an indication that the request was
47178ee8d1cSJulian Grajkowski      * submitted with a CPA_DC_FLUSH_FINAL, however, a BFINAL bit was not found in the
47278ee8d1cSJulian Grajkowski      * request */
47378ee8d1cSJulian Grajkowski     CPA_DC_WDOG_TIMER_ERR = -16,
47478ee8d1cSJulian Grajkowski    /**< The request was not completed as a watchdog timer hardware event occurred */
47578ee8d1cSJulian Grajkowski     CPA_DC_EP_HARDWARE_ERR = -17,
47678ee8d1cSJulian Grajkowski     /**< Request was not completed as an end point hardware error occurred (for
47778ee8d1cSJulian Grajkowski      * example, a parity error) */
47878ee8d1cSJulian Grajkowski     CPA_DC_VERIFY_ERROR = -18,
47978ee8d1cSJulian Grajkowski     /**< Error detected during "compress and verify" operation */
48078ee8d1cSJulian Grajkowski     CPA_DC_EMPTY_DYM_BLK = -19,
48178ee8d1cSJulian Grajkowski     /**< Decompression request contained an empty dynamic stored block
48278ee8d1cSJulian Grajkowski      * (not supported) */
48378ee8d1cSJulian Grajkowski     CPA_DC_CRC_INTEG_ERR = -20,
48478ee8d1cSJulian Grajkowski     /**< A data integrity CRC error was detected */
485*22cf89c9SPiotr Kasierski     CPA_DC_REGION_OUT_OF_BOUNDS = -21,
486*22cf89c9SPiotr Kasierski     /**< Error returned when decompression ends before the specified partial
487*22cf89c9SPiotr Kasierski      * decompression region was produced */
488266b0663SKrzysztof Zdziarski     CPA_DC_LZ4_MAX_BLOCK_SIZE_EXCEEDED = -93,
489266b0663SKrzysztof Zdziarski     /**< LZ4 max block size exceeded */
490266b0663SKrzysztof Zdziarski     CPA_DC_LZ4_BLOCK_OVERFLOW_ERR = -95,
491266b0663SKrzysztof Zdziarski     /**< LZ4 Block Overflow Error */
492266b0663SKrzysztof Zdziarski     CPA_DC_LZ4_TOKEN_IS_ZERO_ERR = -98,
493266b0663SKrzysztof Zdziarski     /**< LZ4 Decoded token offset or token length is zero */
494266b0663SKrzysztof Zdziarski     CPA_DC_LZ4_DISTANCE_OUT_OF_RANGE_ERR = -100,
495266b0663SKrzysztof Zdziarski     /**< LZ4 Distance out of range for len/distance pair */
49678ee8d1cSJulian Grajkowski } CpaDcReqStatus;
49778ee8d1cSJulian Grajkowski 
49878ee8d1cSJulian Grajkowski /**
49978ee8d1cSJulian Grajkowski  *****************************************************************************
50078ee8d1cSJulian Grajkowski  * @ingroup cpaDc
50178ee8d1cSJulian Grajkowski  *      Supported modes for automatically selecting the best compression type.
50278ee8d1cSJulian Grajkowski  *
50378ee8d1cSJulian Grajkowski  * @description
50478ee8d1cSJulian Grajkowski  *      This enumeration lists the supported modes for automatically selecting
505266b0663SKrzysztof Zdziarski  *      the best encoding which would lead to the best compression results.
50678ee8d1cSJulian Grajkowski  *
507266b0663SKrzysztof Zdziarski  *      When CPA_DC_ASB_ENABLED is used the output will be a format compliant
508266b0663SKrzysztof Zdziarski  *      block, whether the data is compressed or not.
509266b0663SKrzysztof Zdziarski  *
510266b0663SKrzysztof Zdziarski  *      The following values are deprecated and should not be used. They
511266b0663SKrzysztof Zdziarski  *      will be removed in a future version of this file.
512266b0663SKrzysztof Zdziarski  *        - CPA_DC_ASB_STATIC_DYNAMIC
513266b0663SKrzysztof Zdziarski  *        - CPA_DC_ASB_UNCOMP_STATIC_DYNAMIC_WITH_STORED_HDRS
514266b0663SKrzysztof Zdziarski  *        - CPA_DC_ASB_UNCOMP_STATIC_DYNAMIC_WITH_NO_HDRS
51578ee8d1cSJulian Grajkowski  *
51678ee8d1cSJulian Grajkowski  *****************************************************************************/
51778ee8d1cSJulian Grajkowski typedef enum _CpaDcAutoSelectBest
51878ee8d1cSJulian Grajkowski {
51978ee8d1cSJulian Grajkowski     CPA_DC_ASB_DISABLED = 0,
52078ee8d1cSJulian Grajkowski     /**< Auto select best mode is disabled */
52178ee8d1cSJulian Grajkowski     CPA_DC_ASB_STATIC_DYNAMIC = 1,
52278ee8d1cSJulian Grajkowski     /**< Auto select between static and dynamic compression */
52378ee8d1cSJulian Grajkowski     CPA_DC_ASB_UNCOMP_STATIC_DYNAMIC_WITH_STORED_HDRS = 2,
52478ee8d1cSJulian Grajkowski     /**< Auto select between uncompressed, static and dynamic compression,
52578ee8d1cSJulian Grajkowski      * using stored block deflate headers if uncompressed is selected */
526266b0663SKrzysztof Zdziarski     CPA_DC_ASB_UNCOMP_STATIC_DYNAMIC_WITH_NO_HDRS = 3,
52778ee8d1cSJulian Grajkowski     /**< Auto select between uncompressed, static and dynamic compression,
52878ee8d1cSJulian Grajkowski      * using no deflate headers if uncompressed is selected */
529266b0663SKrzysztof Zdziarski     CPA_DC_ASB_ENABLED = 4,
530266b0663SKrzysztof Zdziarski     /**< Auto select best mode is enabled */
53178ee8d1cSJulian Grajkowski } CpaDcAutoSelectBest;
53278ee8d1cSJulian Grajkowski 
53378ee8d1cSJulian Grajkowski /**
53478ee8d1cSJulian Grajkowski  *****************************************************************************
53578ee8d1cSJulian Grajkowski  * @ingroup cpaDc
53678ee8d1cSJulian Grajkowski  *      Supported modes for skipping regions of input or output buffers.
53778ee8d1cSJulian Grajkowski  *
53878ee8d1cSJulian Grajkowski  * @description
53978ee8d1cSJulian Grajkowski  *      This enumeration lists the supported modes for skipping regions of
54078ee8d1cSJulian Grajkowski  *      input or output buffers.
54178ee8d1cSJulian Grajkowski  *
54278ee8d1cSJulian Grajkowski  *****************************************************************************/
54378ee8d1cSJulian Grajkowski typedef enum _CpaDcSkipMode
54478ee8d1cSJulian Grajkowski {
54578ee8d1cSJulian Grajkowski     CPA_DC_SKIP_DISABLED = 0,
54678ee8d1cSJulian Grajkowski     /**< Skip mode is disabled */
54778ee8d1cSJulian Grajkowski     CPA_DC_SKIP_AT_START = 1,
54878ee8d1cSJulian Grajkowski     /**< Skip region is at the start of the buffer. */
54978ee8d1cSJulian Grajkowski     CPA_DC_SKIP_AT_END = 2,
55078ee8d1cSJulian Grajkowski     /**< Skip region is at the end of the buffer. */
55178ee8d1cSJulian Grajkowski     CPA_DC_SKIP_STRIDE = 3
55278ee8d1cSJulian Grajkowski     /**< Skip region occurs at regular intervals within the buffer.
55378ee8d1cSJulian Grajkowski      CpaDcSkipData.strideLength specifies the number of bytes between each
55478ee8d1cSJulian Grajkowski      skip region. */
55578ee8d1cSJulian Grajkowski } CpaDcSkipMode;
55678ee8d1cSJulian Grajkowski 
55778ee8d1cSJulian Grajkowski /**
55878ee8d1cSJulian Grajkowski  *****************************************************************************
55978ee8d1cSJulian Grajkowski  * @ingroup cpaDc
56078ee8d1cSJulian Grajkowski  *      Service specific return codes
56178ee8d1cSJulian Grajkowski  *
56278ee8d1cSJulian Grajkowski  * @description
56378ee8d1cSJulian Grajkowski  *      Compression specific return codes
56478ee8d1cSJulian Grajkowski  *
56578ee8d1cSJulian Grajkowski  *
56678ee8d1cSJulian Grajkowski  *****************************************************************************/
56778ee8d1cSJulian Grajkowski 
56878ee8d1cSJulian Grajkowski #define CPA_DC_BAD_DATA     (-100)
56978ee8d1cSJulian Grajkowski     /**<Input data in invalid */
57078ee8d1cSJulian Grajkowski 
57178ee8d1cSJulian Grajkowski /**
57278ee8d1cSJulian Grajkowski  *****************************************************************************
57378ee8d1cSJulian Grajkowski  * @ingroup cpaDc
57478ee8d1cSJulian Grajkowski  *      Definition of callback function invoked for asynchronous cpaDc
57578ee8d1cSJulian Grajkowski  *      requests.
57678ee8d1cSJulian Grajkowski  *
57778ee8d1cSJulian Grajkowski  * @description
57878ee8d1cSJulian Grajkowski  *      This is the prototype for the cpaDc compression callback functions.
57978ee8d1cSJulian Grajkowski  *      The callback function is registered by the application using the
58078ee8d1cSJulian Grajkowski  *      cpaDcInitSession() function call.
58178ee8d1cSJulian Grajkowski  *
58278ee8d1cSJulian Grajkowski  * @context
58378ee8d1cSJulian Grajkowski  *      This callback function can be executed in a context that DOES NOT
58478ee8d1cSJulian Grajkowski  *      permit sleeping to occur.
58578ee8d1cSJulian Grajkowski  * @assumptions
58678ee8d1cSJulian Grajkowski  *      None
58778ee8d1cSJulian Grajkowski  * @sideEffects
58878ee8d1cSJulian Grajkowski  *      None
58978ee8d1cSJulian Grajkowski  * @reentrant
59078ee8d1cSJulian Grajkowski  *      No
59178ee8d1cSJulian Grajkowski  * @threadSafe
59278ee8d1cSJulian Grajkowski  *      Yes
59378ee8d1cSJulian Grajkowski  *
59478ee8d1cSJulian Grajkowski  * @param callbackTag   User-supplied value to help identify request.
59578ee8d1cSJulian Grajkowski  * @param status        Status of the operation. Valid values are
59678ee8d1cSJulian Grajkowski  *                      CPA_STATUS_SUCCESS, CPA_STATUS_FAIL and
59778ee8d1cSJulian Grajkowski  *                      CPA_STATUS_UNSUPPORTED.
59878ee8d1cSJulian Grajkowski  *
59978ee8d1cSJulian Grajkowski  * @retval
60078ee8d1cSJulian Grajkowski  *      None
60178ee8d1cSJulian Grajkowski  * @pre
60278ee8d1cSJulian Grajkowski  *      Component has been initialized.
60378ee8d1cSJulian Grajkowski  * @post
60478ee8d1cSJulian Grajkowski  *      None
60578ee8d1cSJulian Grajkowski  * @note
60678ee8d1cSJulian Grajkowski  *      None
60778ee8d1cSJulian Grajkowski  * @see
60878ee8d1cSJulian Grajkowski  *      None
60978ee8d1cSJulian Grajkowski  *
61078ee8d1cSJulian Grajkowski  *****************************************************************************/
61178ee8d1cSJulian Grajkowski typedef void (*CpaDcCallbackFn)(
61278ee8d1cSJulian Grajkowski     void *callbackTag,
61378ee8d1cSJulian Grajkowski     CpaStatus status);
61478ee8d1cSJulian Grajkowski 
61578ee8d1cSJulian Grajkowski 
61678ee8d1cSJulian Grajkowski /**
61778ee8d1cSJulian Grajkowski  *****************************************************************************
61878ee8d1cSJulian Grajkowski  * @ingroup cpaDc
61978ee8d1cSJulian Grajkowski  *      Implementation Capabilities Structure
62078ee8d1cSJulian Grajkowski  * @description
62178ee8d1cSJulian Grajkowski  *      This structure contains data relating to the capabilities of an
62278ee8d1cSJulian Grajkowski  *      implementation. The capabilities include supported compression
62378ee8d1cSJulian Grajkowski  *      algorithms, RFC 1951 options and whether the implementation supports
62478ee8d1cSJulian Grajkowski  *      both stateful and stateless compress and decompress sessions.
62578ee8d1cSJulian Grajkowski  *
62678ee8d1cSJulian Grajkowski  ****************************************************************************/
62778ee8d1cSJulian Grajkowski typedef struct _CpaDcInstanceCapabilities  {
62878ee8d1cSJulian Grajkowski         CpaBoolean  statefulLZSCompression;
62978ee8d1cSJulian Grajkowski             /**<True if the Instance supports Stateful LZS compression */
63078ee8d1cSJulian Grajkowski         CpaBoolean  statefulLZSDecompression;
63178ee8d1cSJulian Grajkowski             /**<True if the Instance supports Stateful LZS decompression */
63278ee8d1cSJulian Grajkowski         CpaBoolean  statelessLZSCompression;
63378ee8d1cSJulian Grajkowski             /**<True if the Instance supports Stateless LZS compression */
63478ee8d1cSJulian Grajkowski         CpaBoolean  statelessLZSDecompression;
63578ee8d1cSJulian Grajkowski             /**<True if the Instance supports Stateless LZS decompression */
63678ee8d1cSJulian Grajkowski         CpaBoolean  statefulLZSSCompression;
63778ee8d1cSJulian Grajkowski             /**<True if the Instance supports Stateful LZSS compression */
63878ee8d1cSJulian Grajkowski         CpaBoolean  statefulLZSSDecompression;
63978ee8d1cSJulian Grajkowski             /**<True if the Instance supports Stateful LZSS decompression */
64078ee8d1cSJulian Grajkowski         CpaBoolean  statelessLZSSCompression;
64178ee8d1cSJulian Grajkowski             /**<True if the Instance supports Stateless LZSS compression */
64278ee8d1cSJulian Grajkowski         CpaBoolean  statelessLZSSDecompression;
64378ee8d1cSJulian Grajkowski             /**<True if the Instance supports Stateless LZSS decompression */
64478ee8d1cSJulian Grajkowski         CpaBoolean  statefulELZSCompression;
64578ee8d1cSJulian Grajkowski             /**<True if the Instance supports Stateful Extended LZS
64678ee8d1cSJulian Grajkowski             compression */
64778ee8d1cSJulian Grajkowski         CpaBoolean  statefulELZSDecompression;
64878ee8d1cSJulian Grajkowski             /**<True if the Instance supports Stateful Extended LZS
64978ee8d1cSJulian Grajkowski             decompression */
65078ee8d1cSJulian Grajkowski         CpaBoolean  statelessELZSCompression;
65178ee8d1cSJulian Grajkowski             /**<True if the Instance supports Stateless Extended LZS
65278ee8d1cSJulian Grajkowski             compression */
65378ee8d1cSJulian Grajkowski         CpaBoolean  statelessELZSDecompression;
65478ee8d1cSJulian Grajkowski             /**<True if the Instance supports Stateless Extended LZS
65578ee8d1cSJulian Grajkowski             decompression */
65678ee8d1cSJulian Grajkowski         CpaBoolean  statefulDeflateCompression;
65778ee8d1cSJulian Grajkowski             /**<True if the Instance supports Stateful Deflate compression */
65878ee8d1cSJulian Grajkowski         CpaBoolean  statefulDeflateDecompression;
65978ee8d1cSJulian Grajkowski             /**<True if the Instance supports Stateful Deflate
66078ee8d1cSJulian Grajkowski             decompression */
66178ee8d1cSJulian Grajkowski         CpaBoolean  statelessDeflateCompression;
66278ee8d1cSJulian Grajkowski             /**<True if the Instance supports Stateless Deflate compression */
66378ee8d1cSJulian Grajkowski         CpaBoolean  statelessDeflateDecompression;
66478ee8d1cSJulian Grajkowski             /**<True if the Instance supports Stateless Deflate
66578ee8d1cSJulian Grajkowski             decompression */
666266b0663SKrzysztof Zdziarski         CpaBoolean  statelessLZ4Compression;
667266b0663SKrzysztof Zdziarski             /**<True if the Instance supports Stateless LZ4 compression */
668266b0663SKrzysztof Zdziarski         CpaBoolean  statelessLZ4Decompression;
669266b0663SKrzysztof Zdziarski             /**<True if the Instance supports Stateless LZ4 decompression */
670266b0663SKrzysztof Zdziarski         CpaBoolean  statefulLZ4Decompression;
671266b0663SKrzysztof Zdziarski             /**<True if the Instance supports Stateful LZ4 decompression */
672266b0663SKrzysztof Zdziarski         CpaBoolean  statelessLZ4SCompression;
673266b0663SKrzysztof Zdziarski             /**<True if the Instance supports Stateless LZ4S compression */
67478ee8d1cSJulian Grajkowski         CpaBoolean  checksumCRC32;
67578ee8d1cSJulian Grajkowski             /**<True if the Instance can calculate a CRC32 checksum over
676266b0663SKrzysztof Zdziarski                 the uncompressed data. This value is only calculated when
677266b0663SKrzysztof Zdziarski                 CPA_DC_DEFLATE is configured as the algorithm for
678266b0663SKrzysztof Zdziarski                 CpaDcCompType */
67978ee8d1cSJulian Grajkowski         CpaBoolean  checksumAdler32;
68078ee8d1cSJulian Grajkowski             /**<True if the Instance can calculate an Adler-32 checksum over
681266b0663SKrzysztof Zdziarski                 the uncompressed data. This value is only calculated when
682266b0663SKrzysztof Zdziarski                 CPA_DC_DEFLATE is configured as the algorithm for
683266b0663SKrzysztof Zdziarski                 CpaDcCompType */
684266b0663SKrzysztof Zdziarski         CpaBoolean  checksumXXHash32;
685266b0663SKrzysztof Zdziarski             /**<True if the Instance can calculate an xxHash-32 hash over
686266b0663SKrzysztof Zdziarski                 the uncompressed data. This value is only calculated when
687266b0663SKrzysztof Zdziarski                 CPA_DC_LZ4 or CPA_DC_LZ4S is configured as the algorithm for
688266b0663SKrzysztof Zdziarski                 CpaDcCompType */
68978ee8d1cSJulian Grajkowski         CpaBoolean  dynamicHuffman;
69078ee8d1cSJulian Grajkowski             /**<True if the Instance supports dynamic Huffman trees in deflate
69178ee8d1cSJulian Grajkowski                 blocks */
69278ee8d1cSJulian Grajkowski         CpaBoolean  dynamicHuffmanBufferReq;
69378ee8d1cSJulian Grajkowski             /**<True if an Instance specific buffer is required to perform
69478ee8d1cSJulian Grajkowski                 a dynamic Huffman tree deflate request */
69578ee8d1cSJulian Grajkowski         CpaBoolean  precompiledHuffman;
69678ee8d1cSJulian Grajkowski             /**<True if the Instance supports precompiled Huffman trees in
69778ee8d1cSJulian Grajkowski                 deflate blocks */
69878ee8d1cSJulian Grajkowski         CpaBoolean  autoSelectBestHuffmanTree;
69978ee8d1cSJulian Grajkowski             /**<True if the Instance has the ability to automatically select
70078ee8d1cSJulian Grajkowski                 between different Huffman encoding schemes for better
70178ee8d1cSJulian Grajkowski                 compression ratios */
70278ee8d1cSJulian Grajkowski         Cpa8U       validWindowSizeMaskCompression;
70378ee8d1cSJulian Grajkowski             /**<Bits set to '1' for each valid window size supported by
70478ee8d1cSJulian Grajkowski                 the compression implementation */
70578ee8d1cSJulian Grajkowski         Cpa8U       validWindowSizeMaskDecompression;
70678ee8d1cSJulian Grajkowski             /**<Bits set to '1' for each valid window size supported by
70778ee8d1cSJulian Grajkowski                 the decompression implementation */
70878ee8d1cSJulian Grajkowski         Cpa32U      internalHuffmanMem;
70978ee8d1cSJulian Grajkowski             /**<Number of bytes internally available to be used when
71078ee8d1cSJulian Grajkowski                     constructing dynamic Huffman trees. */
71178ee8d1cSJulian Grajkowski         CpaBoolean  endOfLastBlock;
71278ee8d1cSJulian Grajkowski             /**< True if the Instance supports stopping at the end of the last
71378ee8d1cSJulian Grajkowski              * block in a deflate stream during a decompression operation and
71478ee8d1cSJulian Grajkowski              * reporting that the end of the last block has been reached as
71578ee8d1cSJulian Grajkowski              * part of the CpaDcReqStatus data. */
71678ee8d1cSJulian Grajkowski         CpaBoolean  reportParityError;
71778ee8d1cSJulian Grajkowski             /**<True if the instance supports parity error reporting. */
71878ee8d1cSJulian Grajkowski         CpaBoolean  batchAndPack;
71978ee8d1cSJulian Grajkowski             /**< True if the instance supports 'batch and pack' compression */
72078ee8d1cSJulian Grajkowski         CpaBoolean  compressAndVerify;
72178ee8d1cSJulian Grajkowski             /**<True if the instance supports checking that compressed data,
72278ee8d1cSJulian Grajkowski              * generated as part of a compression operation, can be
72378ee8d1cSJulian Grajkowski              * successfully decompressed. */
72478ee8d1cSJulian Grajkowski         CpaBoolean  compressAndVerifyStrict;
72578ee8d1cSJulian Grajkowski             /**< True if compressAndVerify is 'strictly' enabled for the
72678ee8d1cSJulian Grajkowski              * instance. If strictly enabled, compressAndVerify will be enabled
72778ee8d1cSJulian Grajkowski              * by default for compression operations and cannot be disabled by
72878ee8d1cSJulian Grajkowski              * setting opData.compressAndVerify=0 with cpaDcCompressData2().
72978ee8d1cSJulian Grajkowski              * Compression operations with opData.compressAndVerify=0 will
73078ee8d1cSJulian Grajkowski              * return a CPA_STATUS_INVALID_PARAM error status when in
73178ee8d1cSJulian Grajkowski              * compressAndVerify strict mode.
73278ee8d1cSJulian Grajkowski              */
73378ee8d1cSJulian Grajkowski         CpaBoolean  compressAndVerifyAndRecover;
73478ee8d1cSJulian Grajkowski             /**<True if the instance supports recovering from errors detected
73578ee8d1cSJulian Grajkowski              * by compressAndVerify by generating a stored block in the
73678ee8d1cSJulian Grajkowski              * compressed output data buffer. This stored block replaces any
73778ee8d1cSJulian Grajkowski              * compressed content that resulted in a compressAndVerify error.
73878ee8d1cSJulian Grajkowski              */
73978ee8d1cSJulian Grajkowski         CpaBoolean integrityCrcs;
740266b0663SKrzysztof Zdziarski             /**<True if the instance supports 32 bit integrity CRC checking in
741266b0663SKrzysztof Zdziarski              * the compression/decompression datapath. Refer to
742266b0663SKrzysztof Zdziarski              * @ref CpaDcOpData for more details on integrity checking. */
743266b0663SKrzysztof Zdziarski         CPA_BITMAP(dcChainCapInfo, CPA_DC_CHAIN_CAP_BITMAP_SIZE);
744266b0663SKrzysztof Zdziarski             /**< Bitmap representing which chaining capabilities are supported
745266b0663SKrzysztof Zdziarski              * by the instance.
746266b0663SKrzysztof Zdziarski              * Bits can be tested using the macro @ref CPA_BITMAP_BIT_TEST.
747266b0663SKrzysztof Zdziarski              * The bit positions are those specified in the enumerated type
748266b0663SKrzysztof Zdziarski              * @ref CpaDcChainOperations in cpa_dc_chain.h. */
749266b0663SKrzysztof Zdziarski         CpaBoolean integrityCrcs64b;
750266b0663SKrzysztof Zdziarski             /**<True if the instance supports 64 bit integrity CRC checking in
751266b0663SKrzysztof Zdziarski              * the compression / decompression datapath. Refer to
752266b0663SKrzysztof Zdziarski              * @ref CpaDcOpData for more details on integrity checking. */
75378ee8d1cSJulian Grajkowski } CpaDcInstanceCapabilities;
75478ee8d1cSJulian Grajkowski 
75578ee8d1cSJulian Grajkowski /**
75678ee8d1cSJulian Grajkowski  *****************************************************************************
75778ee8d1cSJulian Grajkowski  * @ingroup cpaDc
75878ee8d1cSJulian Grajkowski  *      Session Setup Data.
75978ee8d1cSJulian Grajkowski  * @description
76078ee8d1cSJulian Grajkowski  *      This structure contains data relating to setting up a session. The
76178ee8d1cSJulian Grajkowski  *      client needs to complete the information in this structure in order to
76278ee8d1cSJulian Grajkowski  *      setup a session.
76378ee8d1cSJulian Grajkowski  *
76478ee8d1cSJulian Grajkowski  ****************************************************************************/
76578ee8d1cSJulian Grajkowski typedef struct _CpaDcSessionSetupData  {
76678ee8d1cSJulian Grajkowski         CpaDcCompLvl compLevel;
76778ee8d1cSJulian Grajkowski           /**<Compression Level from CpaDcCompLvl */
76878ee8d1cSJulian Grajkowski         CpaDcCompType compType;
76978ee8d1cSJulian Grajkowski           /**<Compression type from CpaDcCompType */
77078ee8d1cSJulian Grajkowski         CpaDcHuffType huffType;
77178ee8d1cSJulian Grajkowski           /**<Huffman type from CpaDcHuffType */
77278ee8d1cSJulian Grajkowski         CpaDcAutoSelectBest autoSelectBestHuffmanTree;
77378ee8d1cSJulian Grajkowski           /**<Indicates if and how the implementation should select the best
77478ee8d1cSJulian Grajkowski            * Huffman encoding. */
77578ee8d1cSJulian Grajkowski         CpaDcSessionDir sessDirection;
77678ee8d1cSJulian Grajkowski          /**<Session direction indicating whether session is used for
77778ee8d1cSJulian Grajkowski             compression, decompression or both */
77878ee8d1cSJulian Grajkowski         CpaDcSessionState sessState;
77978ee8d1cSJulian Grajkowski         /**<Session state indicating whether the session should be configured
78078ee8d1cSJulian Grajkowski             as stateless or stateful */
781266b0663SKrzysztof Zdziarski         CpaDcCompWindowSize windowSize;
782266b0663SKrzysztof Zdziarski         /**<Window size from CpaDcCompWindowSize */
783266b0663SKrzysztof Zdziarski         CpaDcCompMinMatch minMatch;
784266b0663SKrzysztof Zdziarski         /**<Min Match size from CpaDcCompMinMatch */
785266b0663SKrzysztof Zdziarski         CpaDcCompLZ4BlockMaxSize lz4BlockMaxSize;
786266b0663SKrzysztof Zdziarski         /**<Window size from CpaDcCompLZ4BlockMaxSize */
787266b0663SKrzysztof Zdziarski         CpaBoolean lz4BlockChecksum;
788266b0663SKrzysztof Zdziarski         /**<LZ4 Block Checksum setting for the LZ4 request.
789266b0663SKrzysztof Zdziarski             For LZ4 decompression operations, this setting must be set based
790266b0663SKrzysztof Zdziarski             on the B.Checksum flag originating from the LZ4 frame header.
791266b0663SKrzysztof Zdziarski             For LZ4 compression operations, this setting will be ignored as
792266b0663SKrzysztof Zdziarski             the implementation does not support generation of Data Block
793266b0663SKrzysztof Zdziarski             checksums. */
794266b0663SKrzysztof Zdziarski         CpaBoolean lz4BlockIndependence;
795266b0663SKrzysztof Zdziarski         /**<LZ4 Block Independence Flag setting.
796266b0663SKrzysztof Zdziarski             For LZ4 compression operations, this setting must be set based on
797266b0663SKrzysztof Zdziarski             the Block Independence Flag originating from the LZ4 frame header.
798266b0663SKrzysztof Zdziarski             For LZ4 decompression operations, this setting is ignored.
799266b0663SKrzysztof Zdziarski         For data compressed with lz4BlockIndependence set to CPA_FALSE,
800266b0663SKrzysztof Zdziarski             it is not possible to perform parallel decompression on the
801266b0663SKrzysztof Zdziarski             compressed blocks. It is also not possible to access the produced
802266b0663SKrzysztof Zdziarski             LZ4 blocks randomly.
803266b0663SKrzysztof Zdziarski             */
80478ee8d1cSJulian Grajkowski         CpaDcChecksum checksum;
80578ee8d1cSJulian Grajkowski         /**<Desired checksum required for the session */
806266b0663SKrzysztof Zdziarski         CpaBoolean accumulateXXHash;
807266b0663SKrzysztof Zdziarski         /**<If TRUE the xxHash calculation for LZ4 requests using the session
808266b0663SKrzysztof Zdziarski             based API, cpaDcCompressData2 and cpaDcCompressData, will be
809266b0663SKrzysztof Zdziarski             accumulated across requests, with a valid xxHash being written to
810266b0663SKrzysztof Zdziarski             CpaDcRqResults.checksum for the request which specifies
811266b0663SKrzysztof Zdziarski             CPA_DC_FLUSH_FINAL in CpaDcOpData.flushFlag. When the
812266b0663SKrzysztof Zdziarski             CPA_DC_FLUSH_FINAL is received, the internal XXHash state will be
813266b0663SKrzysztof Zdziarski             reset for this session.
814266b0663SKrzysztof Zdziarski             One exception is if a CPA_DC_OVERFLOW error is returned, the xxHash
815266b0663SKrzysztof Zdziarski             value in the checksum field will be valid for requests up to that
816266b0663SKrzysztof Zdziarski             point and the internal XXHash state will not be reset. This will
817266b0663SKrzysztof Zdziarski             allow a user to either create an LZ4 frame based off the data at the
818266b0663SKrzysztof Zdziarski             time of overflow, or correct the overflow condition and continue
819266b0663SKrzysztof Zdziarski             submitting requests until specifying CPA_DC_FLUSH_FINAL.
820266b0663SKrzysztof Zdziarski             Additionally the user can force the internal XXHash state to reset
821266b0663SKrzysztof Zdziarski             (even on overflow) by calling cpaDcResetXXHashState on this session.
822266b0663SKrzysztof Zdziarski             For the sessionless API, cpaDcNsCompressData, this flag will have
823266b0663SKrzysztof Zdziarski             no effect */
82478ee8d1cSJulian Grajkowski } CpaDcSessionSetupData;
82578ee8d1cSJulian Grajkowski 
826266b0663SKrzysztof Zdziarski typedef CpaDcSessionSetupData CpaDcNsSetupData;
827266b0663SKrzysztof Zdziarski 
828266b0663SKrzysztof Zdziarski /**
829266b0663SKrzysztof Zdziarski  *****************************************************************************
830266b0663SKrzysztof Zdziarski  * @ingroup cpaDc
831266b0663SKrzysztof Zdziarski  *      Session Update Data.
832266b0663SKrzysztof Zdziarski  * @description
833266b0663SKrzysztof Zdziarski  *      This structure contains data relating to updating up a session. The
834266b0663SKrzysztof Zdziarski  *      client needs to complete the information in this structure in order to
835266b0663SKrzysztof Zdziarski  *      update a session.
836266b0663SKrzysztof Zdziarski  *
837266b0663SKrzysztof Zdziarski  ****************************************************************************/
838266b0663SKrzysztof Zdziarski typedef struct _CpaDcSessionUpdateData  {
839266b0663SKrzysztof Zdziarski         CpaDcCompLvl compLevel;
840266b0663SKrzysztof Zdziarski           /**<Compression Level from CpaDcCompLvl */
841266b0663SKrzysztof Zdziarski         CpaDcHuffType huffType;
842266b0663SKrzysztof Zdziarski           /**<Huffman type from CpaDcHuffType */
843266b0663SKrzysztof Zdziarski         CpaBoolean   enableDmm;
844266b0663SKrzysztof Zdziarski         /**<Desired DMM required for the session */
845266b0663SKrzysztof Zdziarski } CpaDcSessionUpdateData ;
846266b0663SKrzysztof Zdziarski 
84778ee8d1cSJulian Grajkowski /**
84878ee8d1cSJulian Grajkowski  *****************************************************************************
84978ee8d1cSJulian Grajkowski  * @ingroup cpaDc
85078ee8d1cSJulian Grajkowski  *      Compression Statistics Data.
85178ee8d1cSJulian Grajkowski  * @description
85278ee8d1cSJulian Grajkowski  *      This structure contains data elements corresponding to statistics.
85378ee8d1cSJulian Grajkowski  *      Statistics are collected on a per instance basis and include:
85478ee8d1cSJulian Grajkowski  *      jobs submitted and completed for both compression and decompression.
85578ee8d1cSJulian Grajkowski  *
85678ee8d1cSJulian Grajkowski  ****************************************************************************/
85778ee8d1cSJulian Grajkowski typedef struct _CpaDcStats  {
85878ee8d1cSJulian Grajkowski         Cpa64U numCompRequests;
85978ee8d1cSJulian Grajkowski           /**< Number of successful compression requests */
86078ee8d1cSJulian Grajkowski         Cpa64U numCompRequestsErrors;
86178ee8d1cSJulian Grajkowski           /**< Number of compression requests that had errors and
86278ee8d1cSJulian Grajkowski              could not be processed */
86378ee8d1cSJulian Grajkowski         Cpa64U numCompCompleted;
86478ee8d1cSJulian Grajkowski           /**< Compression requests completed */
86578ee8d1cSJulian Grajkowski         Cpa64U numCompCompletedErrors;
86678ee8d1cSJulian Grajkowski           /**< Compression requests not completed due to errors */
86778ee8d1cSJulian Grajkowski         Cpa64U numCompCnvErrorsRecovered;
86878ee8d1cSJulian Grajkowski           /**< Compression CNV errors that have been recovered */
86978ee8d1cSJulian Grajkowski 
87078ee8d1cSJulian Grajkowski         Cpa64U numDecompRequests;
87178ee8d1cSJulian Grajkowski           /**< Number of successful decompression requests */
87278ee8d1cSJulian Grajkowski         Cpa64U numDecompRequestsErrors;
87378ee8d1cSJulian Grajkowski           /**< Number of decompression requests that had errors and
87478ee8d1cSJulian Grajkowski              could not be processed */
87578ee8d1cSJulian Grajkowski         Cpa64U numDecompCompleted;
87678ee8d1cSJulian Grajkowski           /**< Decompression requests completed */
87778ee8d1cSJulian Grajkowski         Cpa64U numDecompCompletedErrors;
87878ee8d1cSJulian Grajkowski           /**< Decompression requests not completed due to errors */
87978ee8d1cSJulian Grajkowski 
88078ee8d1cSJulian Grajkowski } CpaDcStats;
88178ee8d1cSJulian Grajkowski 
88278ee8d1cSJulian Grajkowski /**
88378ee8d1cSJulian Grajkowski  *****************************************************************************
88478ee8d1cSJulian Grajkowski  * @ingroup cpaDc
88578ee8d1cSJulian Grajkowski  *      Request results data
88678ee8d1cSJulian Grajkowski  * @description
88778ee8d1cSJulian Grajkowski  *      This structure contains the request results.
88878ee8d1cSJulian Grajkowski  *
88978ee8d1cSJulian Grajkowski  *      For stateful sessions the status, produced, consumed and
89078ee8d1cSJulian Grajkowski  *      endOfLastBlock results are per request values while the checksum
89178ee8d1cSJulian Grajkowski  *      value is cumulative across all requests on the session so far.
89278ee8d1cSJulian Grajkowski  *      In this case the checksum value is not guaranteed to be correct
89378ee8d1cSJulian Grajkowski  *      until the final compressed data has been processed.
89478ee8d1cSJulian Grajkowski  *
89578ee8d1cSJulian Grajkowski  *      For stateless sessions, an initial checksum value is passed into
89678ee8d1cSJulian Grajkowski  *      the stateless operation. Once the stateless operation completes,
89778ee8d1cSJulian Grajkowski  *      the checksum value will contain checksum produced by the operation.
89878ee8d1cSJulian Grajkowski  *
89978ee8d1cSJulian Grajkowski  ****************************************************************************/
90078ee8d1cSJulian Grajkowski typedef struct _CpaDcRqResults  {
90178ee8d1cSJulian Grajkowski         CpaDcReqStatus status;
90278ee8d1cSJulian Grajkowski           /**< Additional status details from accelerator */
90378ee8d1cSJulian Grajkowski         Cpa32U produced;
904*22cf89c9SPiotr Kasierski           /**< Octets produced by the operation.
905*22cf89c9SPiotr Kasierski            * For Data Plane "partial read" operations, the size of the produced
906*22cf89c9SPiotr Kasierski            * data should be equal to the sum of the data offset and length of
907*22cf89c9SPiotr Kasierski            * the requested decompressed data chunk.
908*22cf89c9SPiotr Kasierski            * See ref @CpaDcDpPartialReadData. */
90978ee8d1cSJulian Grajkowski         Cpa32U consumed;
91078ee8d1cSJulian Grajkowski           /**< Octets consumed by the operation */
91178ee8d1cSJulian Grajkowski         Cpa32U checksum;
912266b0663SKrzysztof Zdziarski           /**< The checksum produced by the operation. For some checksum
913266b0663SKrzysztof Zdziarski            * algorithms, setting this field on the input to a stateless
914266b0663SKrzysztof Zdziarski            * compression/decompression request can be used to pass in an initial
915266b0663SKrzysztof Zdziarski            * checksum value that will be used to seed the checksums produced by
916266b0663SKrzysztof Zdziarski            * the stateless operation.
917266b0663SKrzysztof Zdziarski            *
918266b0663SKrzysztof Zdziarski            * The checksum algorithm CPA_DC_XXHASH32 does not support passing an
919266b0663SKrzysztof Zdziarski            * input value in this parameter. Any initial value passed will be
920266b0663SKrzysztof Zdziarski            * ignored by the compression/decompression operation when this
921*22cf89c9SPiotr Kasierski            * checksum algorithm is used.
922*22cf89c9SPiotr Kasierski            *
923*22cf89c9SPiotr Kasierski            * For Data Plane "partial read" operations, the checksum is computed
924*22cf89c9SPiotr Kasierski            * from the beginning of the decompressed data to the end of the
925*22cf89c9SPiotr Kasierski            * requested chunk. See ref @CpaDcDpPartialReadData. */
92678ee8d1cSJulian Grajkowski         CpaBoolean endOfLastBlock;
92778ee8d1cSJulian Grajkowski           /**< Decompression operation has stopped at the end of the last
92878ee8d1cSJulian Grajkowski            * block in a deflate stream. */
929266b0663SKrzysztof Zdziarski         CpaBoolean dataUncompressed;
930266b0663SKrzysztof Zdziarski           /**< If TRUE the output data for this request is uncompressed and
931266b0663SKrzysztof Zdziarski            * in the format setup for the request. This value is only valid
932266b0663SKrzysztof Zdziarski            * for CPA_DC_ASB_ENABLED or if compressAndVerifyAndRecover is set to
933266b0663SKrzysztof Zdziarski            * TRUE in the CpaDcOpData structure for a request. */
93478ee8d1cSJulian Grajkowski } CpaDcRqResults;
93578ee8d1cSJulian Grajkowski 
93678ee8d1cSJulian Grajkowski /**
93778ee8d1cSJulian Grajkowski  *****************************************************************************
93878ee8d1cSJulian Grajkowski  * @ingroup cpaDc
939266b0663SKrzysztof Zdziarski  *      Integrity CRC Size
940266b0663SKrzysztof Zdziarski  * @description
941266b0663SKrzysztof Zdziarski  * 	Enum of possible integrity CRC sizes.
942266b0663SKrzysztof Zdziarski  *
943266b0663SKrzysztof Zdziarski  ****************************************************************************/
944266b0663SKrzysztof Zdziarski typedef enum _CpaDcIntegrityCrcSize
945266b0663SKrzysztof Zdziarski {
946266b0663SKrzysztof Zdziarski     CPA_DC_INTEGRITY_CRC32 = 0,
947266b0663SKrzysztof Zdziarski     /**< 32-bit Integrity CRCs */
948266b0663SKrzysztof Zdziarski     CPA_DC_INTEGRITY_CRC64,
949266b0663SKrzysztof Zdziarski     /**< 64-bit integrity CRCs */
950266b0663SKrzysztof Zdziarski } CpaDcIntegrityCrcSize;
951266b0663SKrzysztof Zdziarski 
952266b0663SKrzysztof Zdziarski /**
953266b0663SKrzysztof Zdziarski  *****************************************************************************
954266b0663SKrzysztof Zdziarski  * @ingroup cpaDc
95578ee8d1cSJulian Grajkowski  *      Integrity CRC calculation details
95678ee8d1cSJulian Grajkowski  * @description
95778ee8d1cSJulian Grajkowski  *      This structure contains information about resulting integrity CRC
95878ee8d1cSJulian Grajkowski  *      calculations performed for a single request.
95978ee8d1cSJulian Grajkowski  *
96078ee8d1cSJulian Grajkowski  ****************************************************************************/
96178ee8d1cSJulian Grajkowski typedef struct _CpaIntegrityCrc {
96278ee8d1cSJulian Grajkowski         Cpa32U iCrc;   /**< CRC calculated on request's input  buffer */
96378ee8d1cSJulian Grajkowski         Cpa32U oCrc;   /**< CRC calculated on request's output buffer */
96478ee8d1cSJulian Grajkowski } CpaIntegrityCrc;
96578ee8d1cSJulian Grajkowski 
96678ee8d1cSJulian Grajkowski /**
96778ee8d1cSJulian Grajkowski  *****************************************************************************
96878ee8d1cSJulian Grajkowski  * @ingroup cpaDc
969266b0663SKrzysztof Zdziarski  *      Integrity CRC64 calculation details
970266b0663SKrzysztof Zdziarski  * @description
971266b0663SKrzysztof Zdziarski  *      This structure contains information about resulting integrity CRC64
972266b0663SKrzysztof Zdziarski  *      calculations performed for a single request.
973266b0663SKrzysztof Zdziarski  *
974266b0663SKrzysztof Zdziarski  ****************************************************************************/
975266b0663SKrzysztof Zdziarski typedef struct _CpaIntegrityCrc64b {
976266b0663SKrzysztof Zdziarski         Cpa64U iCrc;   /**< CRC calculated on request's input  buffer */
977266b0663SKrzysztof Zdziarski         Cpa64U oCrc;   /**< CRC calculated on request's output buffer */
978266b0663SKrzysztof Zdziarski } CpaIntegrityCrc64b;
979266b0663SKrzysztof Zdziarski 
980266b0663SKrzysztof Zdziarski /**
981266b0663SKrzysztof Zdziarski  *****************************************************************************
982266b0663SKrzysztof Zdziarski  * @ingroup cpaDc
98378ee8d1cSJulian Grajkowski  *      Collection of CRC related data
98478ee8d1cSJulian Grajkowski  * @description
98578ee8d1cSJulian Grajkowski  *      This structure contains data facilitating CRC calculations.
98678ee8d1cSJulian Grajkowski  *      After successful request, this structure will contain
98778ee8d1cSJulian Grajkowski  *      all resulting CRCs.
98878ee8d1cSJulian Grajkowski  *      Integrity specific CRCs (when enabled/supported) are located in
989266b0663SKrzysztof Zdziarski  *      'CpaIntegrityCrc integrityCrc' field for 32bit values and in
990266b0663SKrzysztof Zdziarski  *      'CpaIntegrityCrc64b integrityCrC64b' field for 64 bit values.
991266b0663SKrzysztof Zdziarski  *      Integrity CRCs cannot be accumulated across multiple requests and
992266b0663SKrzysztof Zdziarski  *      do not provide seeding capabilities.
99378ee8d1cSJulian Grajkowski  * @note
99478ee8d1cSJulian Grajkowski  *      this structure must be allocated in physical contiguous memory
99578ee8d1cSJulian Grajkowski  *
99678ee8d1cSJulian Grajkowski  ****************************************************************************/
99778ee8d1cSJulian Grajkowski typedef struct _CpaCrcData {
99878ee8d1cSJulian Grajkowski         Cpa32U crc32;
99978ee8d1cSJulian Grajkowski         /**< CRC32 calculated on the input buffer during compression
100078ee8d1cSJulian Grajkowski          * requests and on the output buffer during decompression requests. */
100178ee8d1cSJulian Grajkowski         Cpa32U adler32;
100278ee8d1cSJulian Grajkowski         /**< ADLER32 calculated on the input buffer during compression
100378ee8d1cSJulian Grajkowski          * requests and on the output buffer during decompression requests. */
100478ee8d1cSJulian Grajkowski         CpaIntegrityCrc integrityCrc;
1005266b0663SKrzysztof Zdziarski           /**< 32bit Integrity CRCs */
1006266b0663SKrzysztof Zdziarski         CpaIntegrityCrc64b integrityCrc64b;
1007266b0663SKrzysztof Zdziarski           /**< 64bit Integrity CRCs */
100878ee8d1cSJulian Grajkowski } CpaCrcData;
100978ee8d1cSJulian Grajkowski 
101078ee8d1cSJulian Grajkowski /**
101178ee8d1cSJulian Grajkowski  *****************************************************************************
101278ee8d1cSJulian Grajkowski  * @ingroup cpaDc
101378ee8d1cSJulian Grajkowski  *      Skip Region Data.
101478ee8d1cSJulian Grajkowski  * @description
101578ee8d1cSJulian Grajkowski  *      This structure contains data relating to configuring skip region
101678ee8d1cSJulian Grajkowski  *      behaviour. A skip region is a region of an input buffer that
101778ee8d1cSJulian Grajkowski  *      should be omitted from processing or a region that should be inserted
101878ee8d1cSJulian Grajkowski  *      into the output buffer.
101978ee8d1cSJulian Grajkowski  *
102078ee8d1cSJulian Grajkowski  ****************************************************************************/
102178ee8d1cSJulian Grajkowski typedef struct _CpaDcSkipData {
102278ee8d1cSJulian Grajkowski         CpaDcSkipMode skipMode;
102378ee8d1cSJulian Grajkowski         /**<Skip mode from CpaDcSkipMode for buffer processing */
102478ee8d1cSJulian Grajkowski         Cpa32U skipLength;
102578ee8d1cSJulian Grajkowski         /**<Number of bytes to skip when skip mode is enabled */
102678ee8d1cSJulian Grajkowski         Cpa32U strideLength;
102778ee8d1cSJulian Grajkowski         /**<Size of the stride between skip regions when skip mode is
102878ee8d1cSJulian Grajkowski          * set to CPA_DC_SKIP_STRIDE. */
102978ee8d1cSJulian Grajkowski         Cpa32U firstSkipOffset;
103078ee8d1cSJulian Grajkowski         /**< Number of bytes to skip in a buffer before reading/writing the
103178ee8d1cSJulian Grajkowski          * input/output data. */
103278ee8d1cSJulian Grajkowski } CpaDcSkipData;
103378ee8d1cSJulian Grajkowski 
103478ee8d1cSJulian Grajkowski /**
103578ee8d1cSJulian Grajkowski  *****************************************************************************
103678ee8d1cSJulian Grajkowski  * @ingroup cpaDc
103778ee8d1cSJulian Grajkowski  *      (De)Compression request input parameters.
103878ee8d1cSJulian Grajkowski  * @description
103978ee8d1cSJulian Grajkowski  *      This structure contains the request information for use with
104078ee8d1cSJulian Grajkowski  *      compression operations.
104178ee8d1cSJulian Grajkowski  *
104278ee8d1cSJulian Grajkowski  ****************************************************************************/
104378ee8d1cSJulian Grajkowski typedef struct _CpaDcOpData  {
104478ee8d1cSJulian Grajkowski         CpaDcFlush flushFlag;
104578ee8d1cSJulian Grajkowski         /**< Indicates the type of flush to be performed. */
104678ee8d1cSJulian Grajkowski         CpaBoolean compressAndVerify;
104778ee8d1cSJulian Grajkowski         /**< If set to true, for compression operations, the implementation
104878ee8d1cSJulian Grajkowski          * will verify that compressed data, generated by the compression
104978ee8d1cSJulian Grajkowski          * operation, can be successfully decompressed.
105078ee8d1cSJulian Grajkowski          * This behavior is only supported for stateless compression.
105178ee8d1cSJulian Grajkowski          * This behavior is only supported on instances that support the
105278ee8d1cSJulian Grajkowski          * compressAndVerify capability. */
105378ee8d1cSJulian Grajkowski         CpaBoolean compressAndVerifyAndRecover;
105478ee8d1cSJulian Grajkowski         /**< If set to true, for compression operations, the implementation
105578ee8d1cSJulian Grajkowski          * will automatically recover from a compressAndVerify error.
105678ee8d1cSJulian Grajkowski          * This behavior is only supported for stateless compression.
105778ee8d1cSJulian Grajkowski          * This behavior is only supported on instances that support the
105878ee8d1cSJulian Grajkowski          * compressAndVerifyAndRecover capability.
105978ee8d1cSJulian Grajkowski          * The compressAndVerify field in CpaDcOpData MUST be set to CPA_TRUE
106078ee8d1cSJulian Grajkowski          * if compressAndVerifyAndRecover is set to CPA_TRUE. */
106178ee8d1cSJulian Grajkowski         CpaBoolean integrityCrcCheck;
106278ee8d1cSJulian Grajkowski         /**< If set to true, the implementation will verify that data
106378ee8d1cSJulian Grajkowski          * integrity is preserved through the processing pipeline.
106478ee8d1cSJulian Grajkowski          *
106578ee8d1cSJulian Grajkowski          * Integrity CRC checking is not supported for decompression operations
106678ee8d1cSJulian Grajkowski          * over data that contains multiple gzip headers. */
106778ee8d1cSJulian Grajkowski         CpaBoolean verifyHwIntegrityCrcs;
106878ee8d1cSJulian Grajkowski         /**< If set to true, software calculated CRCs will be compared
106978ee8d1cSJulian Grajkowski          * against hardware generated integrity CRCs to ensure that data
107078ee8d1cSJulian Grajkowski          * integrity is maintained when transferring data to and from the
107178ee8d1cSJulian Grajkowski          * hardware accelerator. */
1072266b0663SKrzysztof Zdziarski         CpaDcIntegrityCrcSize integrityCrcSize;
1073266b0663SKrzysztof Zdziarski         /**< This option specifies the size of the CRC to be used for data
1074266b0663SKrzysztof Zdziarski          * integrity checking. As such it is only valid if this request is
1075266b0663SKrzysztof Zdziarski          * configured for data integrity checks. */
107678ee8d1cSJulian Grajkowski         CpaDcSkipData inputSkipData;
107778ee8d1cSJulian Grajkowski         /**< Optional skip regions in the input buffers */
107878ee8d1cSJulian Grajkowski         CpaDcSkipData outputSkipData;
107978ee8d1cSJulian Grajkowski         /**< Optional skip regions in the output buffers */
108078ee8d1cSJulian Grajkowski         CpaCrcData *pCrcData;
108178ee8d1cSJulian Grajkowski         /**< Pointer to CRCs for this operation, when integrity checks
108278ee8d1cSJulian Grajkowski          * are enabled. */
108378ee8d1cSJulian Grajkowski } CpaDcOpData;
108478ee8d1cSJulian Grajkowski 
108578ee8d1cSJulian Grajkowski /**
108678ee8d1cSJulian Grajkowski  *****************************************************************************
108778ee8d1cSJulian Grajkowski  * @ingroup cpaDc
108878ee8d1cSJulian Grajkowski  *      Retrieve Instance Capabilities
108978ee8d1cSJulian Grajkowski  *
109078ee8d1cSJulian Grajkowski  * @description
109178ee8d1cSJulian Grajkowski  *      This function is used to retrieve the capabilities matrix of
109278ee8d1cSJulian Grajkowski  *      an instance.
109378ee8d1cSJulian Grajkowski  *
109478ee8d1cSJulian Grajkowski  * @context
109578ee8d1cSJulian Grajkowski  *      This function shall not be called in an interrupt context.
109678ee8d1cSJulian Grajkowski  * @assumptions
109778ee8d1cSJulian Grajkowski  *      None
109878ee8d1cSJulian Grajkowski  * @sideEffects
109978ee8d1cSJulian Grajkowski  *      None
110078ee8d1cSJulian Grajkowski  * @blocking
110178ee8d1cSJulian Grajkowski  *      Yes
110278ee8d1cSJulian Grajkowski  * @reentrant
110378ee8d1cSJulian Grajkowski  *      No
110478ee8d1cSJulian Grajkowski  * @threadSafe
110578ee8d1cSJulian Grajkowski  *      Yes
110678ee8d1cSJulian Grajkowski  *
110778ee8d1cSJulian Grajkowski  * @param[in]       dcInstance      Instance handle derived from discovery
110878ee8d1cSJulian Grajkowski  *                                  functions
110978ee8d1cSJulian Grajkowski  * @param[in,out]   pInstanceCapabilities   Pointer to a capabilities struct
111078ee8d1cSJulian Grajkowski  *
111178ee8d1cSJulian Grajkowski  * @retval CPA_STATUS_SUCCESS        Function executed successfully.
111278ee8d1cSJulian Grajkowski  * @retval CPA_STATUS_FAIL           Function failed.
111378ee8d1cSJulian Grajkowski  * @retval CPA_STATUS_INVALID_PARAM  Invalid parameter passed in.
111478ee8d1cSJulian Grajkowski  * @retval CPA_STATUS_RESOURCE       Error related to system resources.
111578ee8d1cSJulian Grajkowski  * @retval CPA_STATUS_RESTARTING     API implementation is restarting. Resubmit
111678ee8d1cSJulian Grajkowski  *                                   the request.
111778ee8d1cSJulian Grajkowski  * @retval CPA_STATUS_UNSUPPORTED    Function is not supported.
111878ee8d1cSJulian Grajkowski  *
111978ee8d1cSJulian Grajkowski  * @pre
112078ee8d1cSJulian Grajkowski  *      None
112178ee8d1cSJulian Grajkowski  * @post
112278ee8d1cSJulian Grajkowski  *      None
112378ee8d1cSJulian Grajkowski  * @note
112478ee8d1cSJulian Grajkowski  *      Only a synchronous version of this function is provided.
112578ee8d1cSJulian Grajkowski  *
112678ee8d1cSJulian Grajkowski  * @see
112778ee8d1cSJulian Grajkowski  *      None
112878ee8d1cSJulian Grajkowski  *
112978ee8d1cSJulian Grajkowski  *****************************************************************************/
113078ee8d1cSJulian Grajkowski CpaStatus
113178ee8d1cSJulian Grajkowski cpaDcQueryCapabilities(  CpaInstanceHandle dcInstance,
113278ee8d1cSJulian Grajkowski         CpaDcInstanceCapabilities *pInstanceCapabilities );
113378ee8d1cSJulian Grajkowski 
113478ee8d1cSJulian Grajkowski /**
113578ee8d1cSJulian Grajkowski  *****************************************************************************
113678ee8d1cSJulian Grajkowski  * @ingroup cpaDc
113778ee8d1cSJulian Grajkowski  *      Initialize compression decompression session
113878ee8d1cSJulian Grajkowski  *
113978ee8d1cSJulian Grajkowski  * @description
114078ee8d1cSJulian Grajkowski  *      This function is used to initialize a compression/decompression
114178ee8d1cSJulian Grajkowski  *      session.
114278ee8d1cSJulian Grajkowski  *      This function specifies a BufferList for context data.
114378ee8d1cSJulian Grajkowski  *      A single session can be used for both compression and decompression
114478ee8d1cSJulian Grajkowski  *      requests.  Clients MAY register a callback
114578ee8d1cSJulian Grajkowski  *      function for the compression service using this function.
114678ee8d1cSJulian Grajkowski  *      This function returns a unique session handle each time this function
114778ee8d1cSJulian Grajkowski  *      is invoked.
114878ee8d1cSJulian Grajkowski  *      If the session has been configured with a callback function, then
114978ee8d1cSJulian Grajkowski  *      the order of the callbacks are guaranteed to be in the same order the
115078ee8d1cSJulian Grajkowski  *      compression or decompression requests were submitted for each session,
115178ee8d1cSJulian Grajkowski  *      so long as a single thread of execution is used for job submission.
115278ee8d1cSJulian Grajkowski  *
115378ee8d1cSJulian Grajkowski  * @context
115478ee8d1cSJulian Grajkowski  *      This is a synchronous function and it cannot sleep. It can be executed in
115578ee8d1cSJulian Grajkowski  *      a context that does not permit sleeping.
115678ee8d1cSJulian Grajkowski  * @assumptions
115778ee8d1cSJulian Grajkowski  *      None
115878ee8d1cSJulian Grajkowski  * @sideEffects
115978ee8d1cSJulian Grajkowski  *      None
116078ee8d1cSJulian Grajkowski  * @blocking
116178ee8d1cSJulian Grajkowski  *      No
116278ee8d1cSJulian Grajkowski  * @reentrant
116378ee8d1cSJulian Grajkowski  *      No
116478ee8d1cSJulian Grajkowski  * @threadSafe
116578ee8d1cSJulian Grajkowski  *      Yes
116678ee8d1cSJulian Grajkowski  *
116778ee8d1cSJulian Grajkowski  * @param[in]       dcInstance      Instance handle derived from discovery
116878ee8d1cSJulian Grajkowski  *                                  functions.
116978ee8d1cSJulian Grajkowski  * @param[in,out]   pSessionHandle  Pointer to a session handle.
117078ee8d1cSJulian Grajkowski  * @param[in,out]   pSessionData    Pointer to a user instantiated structure
117178ee8d1cSJulian Grajkowski  *                                  containing session data.
117278ee8d1cSJulian Grajkowski  * @param[in]       pContextBuffer  pointer to context buffer.  This is not
117378ee8d1cSJulian Grajkowski  *                                  required for stateless operations.
117478ee8d1cSJulian Grajkowski  *                                  The total size of the buffer list must
117578ee8d1cSJulian Grajkowski  *                                  be equal to or larger than the specified
117678ee8d1cSJulian Grajkowski  *                                  contextSize retrieved from the
117778ee8d1cSJulian Grajkowski  *                                  cpaDcGetSessionSize() function.
117878ee8d1cSJulian Grajkowski  * @param[in]        callbackFn     For synchronous operation this callback
117978ee8d1cSJulian Grajkowski  *                                  shall be a null pointer.
118078ee8d1cSJulian Grajkowski  *
118178ee8d1cSJulian Grajkowski  * @retval CPA_STATUS_SUCCESS        Function executed successfully.
118278ee8d1cSJulian Grajkowski  * @retval CPA_STATUS_FAIL           Function failed.
118378ee8d1cSJulian Grajkowski  * @retval CPA_STATUS_INVALID_PARAM  Invalid parameter passed in.
118478ee8d1cSJulian Grajkowski  * @retval CPA_STATUS_RESOURCE       Error related to system resources.
118578ee8d1cSJulian Grajkowski  * @retval CPA_STATUS_RESTARTING     API implementation is restarting. Resubmit
118678ee8d1cSJulian Grajkowski  *                                   the request.
118778ee8d1cSJulian Grajkowski  * @retval CPA_STATUS_UNSUPPORTED    Function is not supported.
118878ee8d1cSJulian Grajkowski  *
118978ee8d1cSJulian Grajkowski  * @pre
119078ee8d1cSJulian Grajkowski  *      dcInstance has been started using cpaDcStartInstance.
119178ee8d1cSJulian Grajkowski  * @post
119278ee8d1cSJulian Grajkowski  *      None
119378ee8d1cSJulian Grajkowski  * @note
119478ee8d1cSJulian Grajkowski  *      Only a synchronous version of this function is provided.
119578ee8d1cSJulian Grajkowski  *
119678ee8d1cSJulian Grajkowski  *      This initializes opaque data structures in the session handle. Data
119778ee8d1cSJulian Grajkowski  *      compressed under this session will be compressed to the level
119878ee8d1cSJulian Grajkowski  *      specified in the pSessionData structure. Lower compression level
119978ee8d1cSJulian Grajkowski  *      numbers indicate a request for faster compression at the
120078ee8d1cSJulian Grajkowski  *      expense of compression ratio.  Higher compression level numbers
120178ee8d1cSJulian Grajkowski  *      indicate a request for higher compression ratios at the expense of
120278ee8d1cSJulian Grajkowski  *      execution time.
120378ee8d1cSJulian Grajkowski  *
120478ee8d1cSJulian Grajkowski  *      The session is opaque to the user application and the session handle
120578ee8d1cSJulian Grajkowski  *      contains job specific data.
120678ee8d1cSJulian Grajkowski  *
120778ee8d1cSJulian Grajkowski  *      The pointer to the ContextBuffer will be stored in session specific
120878ee8d1cSJulian Grajkowski  *      data if required by the implementation.
120978ee8d1cSJulian Grajkowski  *
121078ee8d1cSJulian Grajkowski  *      It is not permitted to have multiple
121178ee8d1cSJulian Grajkowski  *      outstanding asynchronous compression requests for stateful sessions.
121278ee8d1cSJulian Grajkowski  *      It is possible to add
121378ee8d1cSJulian Grajkowski  *      parallelization to compression by using multiple sessions.
121478ee8d1cSJulian Grajkowski  *
121578ee8d1cSJulian Grajkowski  *      The window size specified in the pSessionData must be match exactly
121678ee8d1cSJulian Grajkowski  *      one of the supported window sizes specified in the capabilities
121778ee8d1cSJulian Grajkowski  *      structure.  If a bi-directional session is being initialized, then
121878ee8d1cSJulian Grajkowski  *      the window size must be valid for both compress and decompress.
121978ee8d1cSJulian Grajkowski  *
122078ee8d1cSJulian Grajkowski  * @see
122178ee8d1cSJulian Grajkowski  *      None
122278ee8d1cSJulian Grajkowski  *
122378ee8d1cSJulian Grajkowski  *****************************************************************************/
122478ee8d1cSJulian Grajkowski CpaStatus
122578ee8d1cSJulian Grajkowski cpaDcInitSession( CpaInstanceHandle     dcInstance,
122678ee8d1cSJulian Grajkowski         CpaDcSessionHandle              pSessionHandle,
122778ee8d1cSJulian Grajkowski         CpaDcSessionSetupData           *pSessionData,
122878ee8d1cSJulian Grajkowski         CpaBufferList                   *pContextBuffer,
122978ee8d1cSJulian Grajkowski         CpaDcCallbackFn                 callbackFn );
123078ee8d1cSJulian Grajkowski 
123178ee8d1cSJulian Grajkowski 
123278ee8d1cSJulian Grajkowski /**
123378ee8d1cSJulian Grajkowski  *****************************************************************************
123478ee8d1cSJulian Grajkowski  * @ingroup cpaDc
123578ee8d1cSJulian Grajkowski  *      Compression Session Reset Function.
123678ee8d1cSJulian Grajkowski  *
123778ee8d1cSJulian Grajkowski  * @description
123878ee8d1cSJulian Grajkowski  *      This function will reset a previously initialized session handle
123978ee8d1cSJulian Grajkowski  *      Reset will fail if outstanding calls still exist for the initialized
124078ee8d1cSJulian Grajkowski  *      session handle.
124178ee8d1cSJulian Grajkowski  *      The client needs to retry the reset function at a later time.
124278ee8d1cSJulian Grajkowski  *
124378ee8d1cSJulian Grajkowski  * @context
124478ee8d1cSJulian Grajkowski  *      This is a synchronous function that cannot sleep. It can be
124578ee8d1cSJulian Grajkowski  *      executed in a context that does not permit sleeping.
124678ee8d1cSJulian Grajkowski  * @assumptions
124778ee8d1cSJulian Grajkowski  *      None
124878ee8d1cSJulian Grajkowski  * @sideEffects
124978ee8d1cSJulian Grajkowski  *      None
125078ee8d1cSJulian Grajkowski  * @blocking
125178ee8d1cSJulian Grajkowski  *      No.
125278ee8d1cSJulian Grajkowski  * @reentrant
125378ee8d1cSJulian Grajkowski  *      No
125478ee8d1cSJulian Grajkowski  * @threadSafe
125578ee8d1cSJulian Grajkowski  *      Yes
125678ee8d1cSJulian Grajkowski  *
125778ee8d1cSJulian Grajkowski  * @param[in]      dcInstance      Instance handle.
125878ee8d1cSJulian Grajkowski  * @param[in,out]  pSessionHandle  Session handle.
125978ee8d1cSJulian Grajkowski  *
126078ee8d1cSJulian Grajkowski  * @retval CPA_STATUS_SUCCESS        Function executed successfully.
126178ee8d1cSJulian Grajkowski  * @retval CPA_STATUS_FAIL           Function failed.
126278ee8d1cSJulian Grajkowski  * @retval CPA_STATUS_RETRY          Resubmit the request.
126378ee8d1cSJulian Grajkowski  * @retval CPA_STATUS_INVALID_PARAM  Invalid parameter passed in.
126478ee8d1cSJulian Grajkowski  * @retval CPA_STATUS_UNSUPPORTED    Function is not supported.
126578ee8d1cSJulian Grajkowski  *
126678ee8d1cSJulian Grajkowski  * @pre
126778ee8d1cSJulian Grajkowski  *      The component has been initialized via cpaDcStartInstance function.
126878ee8d1cSJulian Grajkowski  *      The session has been initialized via cpaDcInitSession function.
126978ee8d1cSJulian Grajkowski  * @post
127078ee8d1cSJulian Grajkowski  *      None
127178ee8d1cSJulian Grajkowski  * @note
127278ee8d1cSJulian Grajkowski  *      This is a synchronous function and has no completion callback
127378ee8d1cSJulian Grajkowski  *      associated with it.
127478ee8d1cSJulian Grajkowski  *
127578ee8d1cSJulian Grajkowski  * @see
127678ee8d1cSJulian Grajkowski  *      cpaDcInitSession()
127778ee8d1cSJulian Grajkowski  *
127878ee8d1cSJulian Grajkowski  *****************************************************************************/
127978ee8d1cSJulian Grajkowski CpaStatus
128078ee8d1cSJulian Grajkowski cpaDcResetSession(const CpaInstanceHandle dcInstance,
128178ee8d1cSJulian Grajkowski         CpaDcSessionHandle pSessionHandle );
128278ee8d1cSJulian Grajkowski 
1283266b0663SKrzysztof Zdziarski /**
1284266b0663SKrzysztof Zdziarski  *****************************************************************************
1285266b0663SKrzysztof Zdziarski  * @ingroup cpaDc
1286266b0663SKrzysztof Zdziarski  *      Reset of the xxHash internal state on a session.
1287266b0663SKrzysztof Zdziarski  *
1288266b0663SKrzysztof Zdziarski  * @description
1289266b0663SKrzysztof Zdziarski  *      This function will reset the internal xxHash state maintained within a
1290266b0663SKrzysztof Zdziarski  *      session. This would be used in conjunction with the
1291266b0663SKrzysztof Zdziarski  *      CpaDcSessionSetupData.accumulateXXHash flag being set to TRUE for this
1292266b0663SKrzysztof Zdziarski  *      session. It will enable reseting (reinitialising) just the xxHash
1293266b0663SKrzysztof Zdziarski  *      calculation back to the state when the session was first initialised.
1294266b0663SKrzysztof Zdziarski  *
1295266b0663SKrzysztof Zdziarski  * @context
1296266b0663SKrzysztof Zdziarski  *      This is a synchronous function that cannot sleep. It can be
1297266b0663SKrzysztof Zdziarski  *      executed in a context that does not permit sleeping.
1298266b0663SKrzysztof Zdziarski  * @assumptions
1299266b0663SKrzysztof Zdziarski  *      None
1300266b0663SKrzysztof Zdziarski  * @sideEffects
1301266b0663SKrzysztof Zdziarski  *      None
1302266b0663SKrzysztof Zdziarski  * @blocking
1303266b0663SKrzysztof Zdziarski  *      No.
1304266b0663SKrzysztof Zdziarski  * @reentrant
1305266b0663SKrzysztof Zdziarski  *      No
1306266b0663SKrzysztof Zdziarski  * @threadSafe
1307266b0663SKrzysztof Zdziarski  *      Yes
1308266b0663SKrzysztof Zdziarski  *
1309266b0663SKrzysztof Zdziarski  * @param[in]      dcInstance      Instance handle.
1310266b0663SKrzysztof Zdziarski  * @param[in,out]  pSessionHandle  Session handle.
1311266b0663SKrzysztof Zdziarski  *
1312266b0663SKrzysztof Zdziarski  * @retval CPA_STATUS_SUCCESS        Function executed successfully.
1313266b0663SKrzysztof Zdziarski  * @retval CPA_STATUS_FAIL           Function failed.
1314266b0663SKrzysztof Zdziarski  * @retval CPA_STATUS_INVALID_PARAM  Invalid parameter passed in.
1315266b0663SKrzysztof Zdziarski  * @retval CPA_STATUS_UNSUPPORTED    Function is not supported.
1316266b0663SKrzysztof Zdziarski  *
1317266b0663SKrzysztof Zdziarski  * @pre
1318266b0663SKrzysztof Zdziarski  *      The component has been initialized via cpaDcStartInstance function.
1319266b0663SKrzysztof Zdziarski  *      The session has been initialized via cpaDcInitSession function.
1320266b0663SKrzysztof Zdziarski  * @post
1321266b0663SKrzysztof Zdziarski  *      None
1322266b0663SKrzysztof Zdziarski  * @note
1323266b0663SKrzysztof Zdziarski  *      This is a synchronous function and has no completion callback
1324266b0663SKrzysztof Zdziarski  *      associated with it.
1325266b0663SKrzysztof Zdziarski  *
1326266b0663SKrzysztof Zdziarski  * @see
1327266b0663SKrzysztof Zdziarski  *
1328266b0663SKrzysztof Zdziarski  *****************************************************************************/
1329266b0663SKrzysztof Zdziarski CpaStatus
1330266b0663SKrzysztof Zdziarski cpaDcResetXXHashState(const CpaInstanceHandle dcInstance,
1331266b0663SKrzysztof Zdziarski         CpaDcSessionHandle pSessionHandle );
1332266b0663SKrzysztof Zdziarski 
1333266b0663SKrzysztof Zdziarski /**
1334266b0663SKrzysztof Zdziarski  *****************************************************************************
1335266b0663SKrzysztof Zdziarski  * @ingroup cpaDc
1336266b0663SKrzysztof Zdziarski  *      Compression Session Update Function.
1337266b0663SKrzysztof Zdziarski  *
1338266b0663SKrzysztof Zdziarski  * @description
1339266b0663SKrzysztof Zdziarski  *      This function is used to modify some select compression parameters
1340266b0663SKrzysztof Zdziarski  *      of a previously initialized session handle.
1341266b0663SKrzysztof Zdziarski  *      Th update will fail if resources required for the new session settings
1342266b0663SKrzysztof Zdziarski  *      are not available. Specifically, this function may fail if no
1343266b0663SKrzysztof Zdziarski  *      intermediate buffers are associated with the instance, and the
1344266b0663SKrzysztof Zdziarski  *      intended change would require these buffers.
1345266b0663SKrzysztof Zdziarski  *      This function can be called at any time after a successful call of
1346266b0663SKrzysztof Zdziarski  *      cpaDcDpInitSession().
1347266b0663SKrzysztof Zdziarski  *      This function does not change the parameters to compression request
1348266b0663SKrzysztof Zdziarski  *      already in flight.
1349266b0663SKrzysztof Zdziarski  *
1350266b0663SKrzysztof Zdziarski  * @context
1351266b0663SKrzysztof Zdziarski  *      This is a synchronous function that cannot sleep. It can be
1352266b0663SKrzysztof Zdziarski  *      executed in a context that does not permit sleeping.
1353266b0663SKrzysztof Zdziarski  * @assumptions
1354266b0663SKrzysztof Zdziarski  *      None
1355266b0663SKrzysztof Zdziarski  * @sideEffects
1356266b0663SKrzysztof Zdziarski  *      None
1357266b0663SKrzysztof Zdziarski  * @blocking
1358266b0663SKrzysztof Zdziarski  *      No.
1359266b0663SKrzysztof Zdziarski  * @reentrant
1360266b0663SKrzysztof Zdziarski  *      No
1361266b0663SKrzysztof Zdziarski  * @threadSafe
1362266b0663SKrzysztof Zdziarski  *      Yes
1363266b0663SKrzysztof Zdziarski  *
1364266b0663SKrzysztof Zdziarski  * @param[in]      dcInstance            Instance handle.
1365266b0663SKrzysztof Zdziarski  * @param[in,out]  pSessionHandle        Session handle.
1366266b0663SKrzysztof Zdziarski  * @param[in]      pSessionUpdateData    Session Data.
1367266b0663SKrzysztof Zdziarski  *
1368266b0663SKrzysztof Zdziarski  * @retval CPA_STATUS_SUCCESS        Function executed successfully.
1369266b0663SKrzysztof Zdziarski  * @retval CPA_STATUS_FAIL           Function failed.
1370266b0663SKrzysztof Zdziarski  * @retval CPA_STATUS_INVALID_PARAM  Invalid parameter passed in.
1371266b0663SKrzysztof Zdziarski  * @retval CPA_STATUS_RESOURCE       Error related to system resources.
1372266b0663SKrzysztof Zdziarski  * @retval CPA_STATUS_RESTARTING     API implementation is restarting.
1373266b0663SKrzysztof Zdziarski  *                                   Resubmit the request
1374266b0663SKrzysztof Zdziarski  *
1375266b0663SKrzysztof Zdziarski  *
1376266b0663SKrzysztof Zdziarski  * @pre
1377266b0663SKrzysztof Zdziarski  *      The component has been initialized via cpaDcStartInstance function.
1378266b0663SKrzysztof Zdziarski  *      The session has been initialized via cpaDcInitSession function.
1379266b0663SKrzysztof Zdziarski  * @post
1380266b0663SKrzysztof Zdziarski  *      None
1381266b0663SKrzysztof Zdziarski  * @note
1382266b0663SKrzysztof Zdziarski  *      This is a synchronous function and has no completion callback
1383266b0663SKrzysztof Zdziarski  *      associated with it.
1384266b0663SKrzysztof Zdziarski  *
1385266b0663SKrzysztof Zdziarski  * @see
1386266b0663SKrzysztof Zdziarski  *      cpaDcInitSession()
1387266b0663SKrzysztof Zdziarski  *
1388266b0663SKrzysztof Zdziarski  *****************************************************************************/
1389266b0663SKrzysztof Zdziarski CpaStatus cpaDcUpdateSession(const CpaInstanceHandle dcInstance,
1390266b0663SKrzysztof Zdziarski         CpaDcSessionHandle pSessionHandle,
1391266b0663SKrzysztof Zdziarski         CpaDcSessionUpdateData *pSessionUpdateData );
139278ee8d1cSJulian Grajkowski 
139378ee8d1cSJulian Grajkowski /**
139478ee8d1cSJulian Grajkowski  *****************************************************************************
139578ee8d1cSJulian Grajkowski  * @ingroup cpaDc
139678ee8d1cSJulian Grajkowski  *      Compression Session Remove Function.
139778ee8d1cSJulian Grajkowski  *
139878ee8d1cSJulian Grajkowski  * @description
139978ee8d1cSJulian Grajkowski  *      This function will remove a previously initialized session handle
140078ee8d1cSJulian Grajkowski  *      and the installed callback handler function. Removal will fail if
140178ee8d1cSJulian Grajkowski  *      outstanding calls still exist for the initialized session handle.
140278ee8d1cSJulian Grajkowski  *      The client needs to retry the remove function at a later time.
140378ee8d1cSJulian Grajkowski  *      The memory for the session handle MUST not be freed until this call
140478ee8d1cSJulian Grajkowski  *      has completed successfully.
140578ee8d1cSJulian Grajkowski  *
140678ee8d1cSJulian Grajkowski  * @context
140778ee8d1cSJulian Grajkowski  *      This is a synchronous function that cannot sleep. It can be
140878ee8d1cSJulian Grajkowski  *      executed in a context that does not permit sleeping.
140978ee8d1cSJulian Grajkowski  * @assumptions
141078ee8d1cSJulian Grajkowski  *      None
141178ee8d1cSJulian Grajkowski  * @sideEffects
141278ee8d1cSJulian Grajkowski  *      None
141378ee8d1cSJulian Grajkowski  * @blocking
141478ee8d1cSJulian Grajkowski  *      No.
141578ee8d1cSJulian Grajkowski  * @reentrant
141678ee8d1cSJulian Grajkowski  *      No
141778ee8d1cSJulian Grajkowski  * @threadSafe
141878ee8d1cSJulian Grajkowski  *      Yes
141978ee8d1cSJulian Grajkowski  *
142078ee8d1cSJulian Grajkowski  * @param[in]      dcInstance      Instance handle.
142178ee8d1cSJulian Grajkowski  * @param[in,out]  pSessionHandle  Session handle.
142278ee8d1cSJulian Grajkowski  *
142378ee8d1cSJulian Grajkowski  * @retval CPA_STATUS_SUCCESS        Function executed successfully.
142478ee8d1cSJulian Grajkowski  * @retval CPA_STATUS_FAIL           Function failed.
142578ee8d1cSJulian Grajkowski  * @retval CPA_STATUS_RETRY          Resubmit the request.
142678ee8d1cSJulian Grajkowski  * @retval CPA_STATUS_INVALID_PARAM  Invalid parameter passed in.
142778ee8d1cSJulian Grajkowski  * @retval CPA_STATUS_RESOURCE       Error related to system resources.
142878ee8d1cSJulian Grajkowski  * @retval CPA_STATUS_RESTARTING     API implementation is restarting. Resubmit
142978ee8d1cSJulian Grajkowski  *                                   the request.
143078ee8d1cSJulian Grajkowski  * @retval CPA_STATUS_UNSUPPORTED    Function is not supported.
143178ee8d1cSJulian Grajkowski  *
143278ee8d1cSJulian Grajkowski  * @pre
143378ee8d1cSJulian Grajkowski  *      The component has been initialized via cpaDcStartInstance function.
143478ee8d1cSJulian Grajkowski  * @post
143578ee8d1cSJulian Grajkowski  *      None
143678ee8d1cSJulian Grajkowski  * @note
143778ee8d1cSJulian Grajkowski  *      This is a synchronous function and has no completion callback
143878ee8d1cSJulian Grajkowski  *      associated with it.
143978ee8d1cSJulian Grajkowski  *
144078ee8d1cSJulian Grajkowski  * @see
144178ee8d1cSJulian Grajkowski  *      cpaDcInitSession()
144278ee8d1cSJulian Grajkowski  *
144378ee8d1cSJulian Grajkowski  *****************************************************************************/
144478ee8d1cSJulian Grajkowski CpaStatus
144578ee8d1cSJulian Grajkowski cpaDcRemoveSession(const CpaInstanceHandle dcInstance,
144678ee8d1cSJulian Grajkowski         CpaDcSessionHandle pSessionHandle );
144778ee8d1cSJulian Grajkowski 
144878ee8d1cSJulian Grajkowski /**
144978ee8d1cSJulian Grajkowski  *****************************************************************************
145078ee8d1cSJulian Grajkowski  * @ingroup cpaDc
145178ee8d1cSJulian Grajkowski  *      Deflate Compression Bound API
145278ee8d1cSJulian Grajkowski  *
145378ee8d1cSJulian Grajkowski  * @description
145478ee8d1cSJulian Grajkowski  *      This function provides the maximum output buffer size for a Deflate
145578ee8d1cSJulian Grajkowski  *      compression operation in the "worst case" (non-compressible) scenario.
145678ee8d1cSJulian Grajkowski  *      It's primary purpose is for output buffer memory allocation.
145778ee8d1cSJulian Grajkowski  *
145878ee8d1cSJulian Grajkowski  * @context
145978ee8d1cSJulian Grajkowski  *      This is a synchronous function that will not sleep. It can be
146078ee8d1cSJulian Grajkowski  *      executed in a context that does not permit sleeping.
146178ee8d1cSJulian Grajkowski  * @assumptions
146278ee8d1cSJulian Grajkowski  *      None
146378ee8d1cSJulian Grajkowski  * @sideEffects
146478ee8d1cSJulian Grajkowski  *      None
146578ee8d1cSJulian Grajkowski  * @blocking
146678ee8d1cSJulian Grajkowski  *      No.
146778ee8d1cSJulian Grajkowski  * @reentrant
146878ee8d1cSJulian Grajkowski  *      No
146978ee8d1cSJulian Grajkowski  * @threadSafe
147078ee8d1cSJulian Grajkowski  *      Yes
147178ee8d1cSJulian Grajkowski  *
147278ee8d1cSJulian Grajkowski  * @param[in]      dcInstance      Instance handle.
147378ee8d1cSJulian Grajkowski  * @param[in]      huffType        CpaDcHuffType to be used with this operation.
147478ee8d1cSJulian Grajkowski  * @param[in]      inputSize       Input Buffer size.
147578ee8d1cSJulian Grajkowski  * @param[out]     outputSize      Maximum output buffer size.
147678ee8d1cSJulian Grajkowski  *
147778ee8d1cSJulian Grajkowski  * @retval CPA_STATUS_SUCCESS        Function executed successfully.
147878ee8d1cSJulian Grajkowski  * @retval CPA_STATUS_FAIL           Function failed.
147978ee8d1cSJulian Grajkowski  * @retval CPA_STATUS_INVALID_PARAM  Invalid parameter passed in.
148078ee8d1cSJulian Grajkowski  * @retval CPA_STATUS_UNSUPPORTED    Function is not supported.
148178ee8d1cSJulian Grajkowski  *
148278ee8d1cSJulian Grajkowski  * @pre
148378ee8d1cSJulian Grajkowski  *      The component has been initialized via cpaDcStartInstance function.
148478ee8d1cSJulian Grajkowski  * @post
148578ee8d1cSJulian Grajkowski  *      None
148678ee8d1cSJulian Grajkowski  * @note
148778ee8d1cSJulian Grajkowski  *      This is a synchronous function and has no completion callback
148878ee8d1cSJulian Grajkowski  *      associated with it.
1489266b0663SKrzysztof Zdziarski  *      The cpaDcDeflateCompressBound() API is intended to reduce the likelihood
1490266b0663SKrzysztof Zdziarski  *      of overflow occurring during compression operations. An overflow may
1491266b0663SKrzysztof Zdziarski  *      occur in some exception cases.
149278ee8d1cSJulian Grajkowski  *
149378ee8d1cSJulian Grajkowski  * @see
149478ee8d1cSJulian Grajkowski  *      None
149578ee8d1cSJulian Grajkowski  *
149678ee8d1cSJulian Grajkowski  *****************************************************************************/
149778ee8d1cSJulian Grajkowski CpaStatus
149878ee8d1cSJulian Grajkowski cpaDcDeflateCompressBound(const CpaInstanceHandle dcInstance,
149978ee8d1cSJulian Grajkowski         CpaDcHuffType huffType,
150078ee8d1cSJulian Grajkowski         Cpa32U inputSize,
150178ee8d1cSJulian Grajkowski         Cpa32U *outputSize );
150278ee8d1cSJulian Grajkowski 
150378ee8d1cSJulian Grajkowski /**
150478ee8d1cSJulian Grajkowski  *****************************************************************************
150578ee8d1cSJulian Grajkowski  * @ingroup cpaDc
1506266b0663SKrzysztof Zdziarski  *      LZ4 Compression Bound API
1507266b0663SKrzysztof Zdziarski  *
1508266b0663SKrzysztof Zdziarski  * @description
1509266b0663SKrzysztof Zdziarski  *      This function provides the maximum output buffer size for a LZ4
1510266b0663SKrzysztof Zdziarski  *      compression operation in the "worst case" (non-compressible) scenario.
1511266b0663SKrzysztof Zdziarski  *      It's primary purpose is for output buffer memory allocation.
1512266b0663SKrzysztof Zdziarski  *
1513266b0663SKrzysztof Zdziarski  * @context
1514266b0663SKrzysztof Zdziarski  *      This is a synchronous function that will not sleep. It can be
1515266b0663SKrzysztof Zdziarski  *      executed in a context that does not permit sleeping.
1516266b0663SKrzysztof Zdziarski  * @assumptions
1517266b0663SKrzysztof Zdziarski  *      None
1518266b0663SKrzysztof Zdziarski  * @sideEffects
1519266b0663SKrzysztof Zdziarski  *      None
1520266b0663SKrzysztof Zdziarski  * @blocking
1521266b0663SKrzysztof Zdziarski  *      No.
1522266b0663SKrzysztof Zdziarski  * @reentrant
1523266b0663SKrzysztof Zdziarski  *      No
1524266b0663SKrzysztof Zdziarski  * @threadSafe
1525266b0663SKrzysztof Zdziarski  *      Yes
1526266b0663SKrzysztof Zdziarski  *
1527266b0663SKrzysztof Zdziarski  * @param[in]      dcInstance      Instance handle.
1528266b0663SKrzysztof Zdziarski  * @param[in]      inputSize       Input Buffer size.
1529266b0663SKrzysztof Zdziarski  * @param[out]     outputSize      Maximum output buffer size.
1530266b0663SKrzysztof Zdziarski  *
1531266b0663SKrzysztof Zdziarski  * @retval CPA_STATUS_SUCCESS        Function executed successfully.
1532266b0663SKrzysztof Zdziarski  * @retval CPA_STATUS_FAIL           Function failed.
1533266b0663SKrzysztof Zdziarski  * @retval CPA_STATUS_INVALID_PARAM  Invalid parameter passed in.
1534266b0663SKrzysztof Zdziarski  * @retval CPA_STATUS_UNSUPPORTED    Function is not supported.
1535266b0663SKrzysztof Zdziarski  *
1536266b0663SKrzysztof Zdziarski  * @pre
1537266b0663SKrzysztof Zdziarski  *      The component has been initialized via cpaDcStartInstance function.
1538266b0663SKrzysztof Zdziarski  * @post
1539266b0663SKrzysztof Zdziarski  *      None
1540266b0663SKrzysztof Zdziarski  * @note
1541266b0663SKrzysztof Zdziarski  *      This is a synchronous function and has no completion callback
1542266b0663SKrzysztof Zdziarski  *      associated with it.
1543266b0663SKrzysztof Zdziarski  *
1544266b0663SKrzysztof Zdziarski  * @see
1545266b0663SKrzysztof Zdziarski  *      None
1546266b0663SKrzysztof Zdziarski  *
1547266b0663SKrzysztof Zdziarski  *****************************************************************************/
1548266b0663SKrzysztof Zdziarski CpaStatus
1549266b0663SKrzysztof Zdziarski cpaDcLZ4CompressBound(const CpaInstanceHandle dcInstance,
1550266b0663SKrzysztof Zdziarski         Cpa32U inputSize,
1551266b0663SKrzysztof Zdziarski         Cpa32U *outputSize );
1552266b0663SKrzysztof Zdziarski 
1553266b0663SKrzysztof Zdziarski /**
1554266b0663SKrzysztof Zdziarski  *****************************************************************************
1555266b0663SKrzysztof Zdziarski  * @ingroup cpaDc
1556266b0663SKrzysztof Zdziarski  *      LZ4S Compression Bound API
1557266b0663SKrzysztof Zdziarski  *
1558266b0663SKrzysztof Zdziarski  * @description
1559266b0663SKrzysztof Zdziarski  *      This function provides the maximum output buffer size for a LZ4S
1560266b0663SKrzysztof Zdziarski  *      compression operation in the "worst case" (non-compressible) scenario.
1561266b0663SKrzysztof Zdziarski  *      It's primary purpose is for output buffer memory allocation.
1562266b0663SKrzysztof Zdziarski  *
1563266b0663SKrzysztof Zdziarski  * @context
1564266b0663SKrzysztof Zdziarski  *      This is a synchronous function that will not sleep. It can be
1565266b0663SKrzysztof Zdziarski  *      executed in a context that does not permit sleeping.
1566266b0663SKrzysztof Zdziarski  * @assumptions
1567266b0663SKrzysztof Zdziarski  *      None
1568266b0663SKrzysztof Zdziarski  * @sideEffects
1569266b0663SKrzysztof Zdziarski  *      None
1570266b0663SKrzysztof Zdziarski  * @blocking
1571266b0663SKrzysztof Zdziarski  *      No.
1572266b0663SKrzysztof Zdziarski  * @reentrant
1573266b0663SKrzysztof Zdziarski  *      No
1574266b0663SKrzysztof Zdziarski  * @threadSafe
1575266b0663SKrzysztof Zdziarski  *      Yes
1576266b0663SKrzysztof Zdziarski  *
1577266b0663SKrzysztof Zdziarski  * @param[in]      dcInstance      Instance handle.
1578266b0663SKrzysztof Zdziarski  * @param[in]      inputSize       Input Buffer size.
1579266b0663SKrzysztof Zdziarski  * @param[out]     outputSize      Maximum output buffer size.
1580266b0663SKrzysztof Zdziarski  *
1581266b0663SKrzysztof Zdziarski  * @retval CPA_STATUS_SUCCESS        Function executed successfully.
1582266b0663SKrzysztof Zdziarski  * @retval CPA_STATUS_FAIL           Function failed.
1583266b0663SKrzysztof Zdziarski  * @retval CPA_STATUS_INVALID_PARAM  Invalid parameter passed in.
1584266b0663SKrzysztof Zdziarski  * @retval CPA_STATUS_UNSUPPORTED    Function is not supported.
1585266b0663SKrzysztof Zdziarski  *
1586266b0663SKrzysztof Zdziarski  * @pre
1587266b0663SKrzysztof Zdziarski  *      The component has been initialized via cpaDcStartInstance function.
1588266b0663SKrzysztof Zdziarski  * @post
1589266b0663SKrzysztof Zdziarski  *      None
1590266b0663SKrzysztof Zdziarski  * @note
1591266b0663SKrzysztof Zdziarski  *      This is a synchronous function and has no completion callback
1592266b0663SKrzysztof Zdziarski  *      associated with it.
1593266b0663SKrzysztof Zdziarski  *
1594266b0663SKrzysztof Zdziarski  * @see
1595266b0663SKrzysztof Zdziarski  *      None
1596266b0663SKrzysztof Zdziarski  *
1597266b0663SKrzysztof Zdziarski  *****************************************************************************/
1598266b0663SKrzysztof Zdziarski CpaStatus
1599266b0663SKrzysztof Zdziarski cpaDcLZ4SCompressBound(const CpaInstanceHandle dcInstance,
1600266b0663SKrzysztof Zdziarski         Cpa32U inputSize,
1601266b0663SKrzysztof Zdziarski         Cpa32U *outputSize );
1602266b0663SKrzysztof Zdziarski 
1603266b0663SKrzysztof Zdziarski /**
1604266b0663SKrzysztof Zdziarski  *****************************************************************************
1605266b0663SKrzysztof Zdziarski  * @ingroup cpaDc
160678ee8d1cSJulian Grajkowski  *      Submit a request to compress a buffer of data.
160778ee8d1cSJulian Grajkowski  *
160878ee8d1cSJulian Grajkowski  * @description
160978ee8d1cSJulian Grajkowski  *      This API consumes data from the input buffer and generates compressed
161078ee8d1cSJulian Grajkowski  *      data in the output buffer.
161178ee8d1cSJulian Grajkowski  *
161278ee8d1cSJulian Grajkowski  * @context
161378ee8d1cSJulian Grajkowski  *      When called as an asynchronous function it cannot sleep. It can be
161478ee8d1cSJulian Grajkowski  *      executed in a context that does not permit sleeping.
161578ee8d1cSJulian Grajkowski  *      When called as a synchronous function it may sleep. It MUST NOT be
161678ee8d1cSJulian Grajkowski  *      executed in a context that DOES NOT permit sleeping.
161778ee8d1cSJulian Grajkowski  * @assumptions
161878ee8d1cSJulian Grajkowski  *      None
161978ee8d1cSJulian Grajkowski  * @sideEffects
162078ee8d1cSJulian Grajkowski  *      None
162178ee8d1cSJulian Grajkowski  * @blocking
162278ee8d1cSJulian Grajkowski  *      Yes when configured to operate in synchronous mode.
162378ee8d1cSJulian Grajkowski  * @reentrant
162478ee8d1cSJulian Grajkowski  *      No
162578ee8d1cSJulian Grajkowski  * @threadSafe
162678ee8d1cSJulian Grajkowski  *      Yes
162778ee8d1cSJulian Grajkowski  *
162878ee8d1cSJulian Grajkowski  * @param[in]       dcInstance          Target service instance.
162978ee8d1cSJulian Grajkowski  * @param[in,out]   pSessionHandle      Session handle.
163078ee8d1cSJulian Grajkowski  * @param[in]       pSrcBuff            Pointer to data buffer for compression.
163178ee8d1cSJulian Grajkowski  * @param[in]       pDestBuff           Pointer to buffer space for data after
163278ee8d1cSJulian Grajkowski  *                                      compression.
163378ee8d1cSJulian Grajkowski  * @param[in,out]   pResults            Pointer to results structure
163478ee8d1cSJulian Grajkowski  * @param[in]       flushFlag           Indicates the type of flush to be
163578ee8d1cSJulian Grajkowski  *                                      performed.
163678ee8d1cSJulian Grajkowski  * @param[in]       callbackTag         User supplied value to help correlate
163778ee8d1cSJulian Grajkowski  *                                      the callback with its associated
163878ee8d1cSJulian Grajkowski  *                                      request.
163978ee8d1cSJulian Grajkowski  *
164078ee8d1cSJulian Grajkowski  * @retval CPA_STATUS_SUCCESS       Function executed successfully.
164178ee8d1cSJulian Grajkowski  * @retval CPA_STATUS_FAIL          Function failed.
164278ee8d1cSJulian Grajkowski  * @retval CPA_STATUS_RETRY         Resubmit the request.
164378ee8d1cSJulian Grajkowski  * @retval CPA_STATUS_INVALID_PARAM Invalid parameter passed in.
164478ee8d1cSJulian Grajkowski  * @retval CPA_STATUS_RESOURCE      Error related to system resources.
164578ee8d1cSJulian Grajkowski  * @retval CPA_DC_BAD_DATA          The input data was not properly formed.
164678ee8d1cSJulian Grajkowski  * @retval CPA_STATUS_RESTARTING    API implementation is restarting. Resubmit
164778ee8d1cSJulian Grajkowski  *                                  the request.
164878ee8d1cSJulian Grajkowski  * @retval CPA_STATUS_UNSUPPORTED   Function is not supported.
164978ee8d1cSJulian Grajkowski  *
165078ee8d1cSJulian Grajkowski  * @pre
165178ee8d1cSJulian Grajkowski  *      pSessionHandle has been setup using cpaDcInitSession()
165278ee8d1cSJulian Grajkowski  * @post
165378ee8d1cSJulian Grajkowski  *     pSessionHandle has session related state information
165478ee8d1cSJulian Grajkowski  * @note
165578ee8d1cSJulian Grajkowski  *     This function passes control to the compression service for processing
165678ee8d1cSJulian Grajkowski  *
165778ee8d1cSJulian Grajkowski  *  In synchronous mode the function returns the error status returned from the
165878ee8d1cSJulian Grajkowski  *      service. In asynchronous mode the status is returned by the callback
165978ee8d1cSJulian Grajkowski  *      function.
166078ee8d1cSJulian Grajkowski  *
166178ee8d1cSJulian Grajkowski  *  This function may be called repetitively with input until all of the
166278ee8d1cSJulian Grajkowski  *  input has been consumed by the compression service and all the output
166378ee8d1cSJulian Grajkowski  *      has been produced.
166478ee8d1cSJulian Grajkowski  *
166578ee8d1cSJulian Grajkowski  *  When this function returns, it may be that all of the available data
166678ee8d1cSJulian Grajkowski  *  in the input buffer has not been compressed.  This situation will
166778ee8d1cSJulian Grajkowski  *  occur when there is insufficient space in the output buffer.  The
166878ee8d1cSJulian Grajkowski  *  calling application should note the amount of data processed, and clear
166978ee8d1cSJulian Grajkowski  *  the output buffer and then submit the request again, with the input
167078ee8d1cSJulian Grajkowski  *  buffer pointer to the data that was not previously compressed.
167178ee8d1cSJulian Grajkowski  *
167278ee8d1cSJulian Grajkowski  *  Relationship between input buffers and results buffers.
167378ee8d1cSJulian Grajkowski  *  -# Implementations of this API must not modify the individual
167478ee8d1cSJulian Grajkowski  *     flat buffers of the input buffer list.
167578ee8d1cSJulian Grajkowski  *  -# The implementation communicates the amount of data
167678ee8d1cSJulian Grajkowski  *     consumed from the source buffer list via pResults->consumed arg.
167778ee8d1cSJulian Grajkowski  *  -# The implementation communicates the amount of data in the
167878ee8d1cSJulian Grajkowski  *     destination buffer list via pResults->produced arg.
167978ee8d1cSJulian Grajkowski  *
168078ee8d1cSJulian Grajkowski  *  Source Buffer Setup Rules
168178ee8d1cSJulian Grajkowski  *  -# The buffer list must have the correct number of flat buffers. This
168278ee8d1cSJulian Grajkowski  *         is specified by the numBuffers element of the CpaBufferList.
168378ee8d1cSJulian Grajkowski  *  -# Each flat buffer must have a pointer to contiguous memory that has
168478ee8d1cSJulian Grajkowski  *     been allocated by the calling application.  The
168578ee8d1cSJulian Grajkowski  *         number of octets to be compressed or decompressed must be stored
168678ee8d1cSJulian Grajkowski  *     in the dataLenInBytes element of the flat buffer.
168778ee8d1cSJulian Grajkowski  *  -# It is permissible to have one or more flat buffers with a zero length
168878ee8d1cSJulian Grajkowski  *     data store.  This function will process all flat buffers until the
168978ee8d1cSJulian Grajkowski  *     destination buffer is full or all source data has been processed.
169078ee8d1cSJulian Grajkowski  *     If a buffer has zero length, then no data will be processed from
169178ee8d1cSJulian Grajkowski  *     that buffer.
169278ee8d1cSJulian Grajkowski  *
169378ee8d1cSJulian Grajkowski  *  Source Buffer Processing Rules.
169478ee8d1cSJulian Grajkowski  *  -# The buffer list is processed in index order - SrcBuff->pBuffers[0]
169578ee8d1cSJulian Grajkowski  *     will be completely processed before SrcBuff->pBuffers[1] begins to
169678ee8d1cSJulian Grajkowski  *     be processed.
169778ee8d1cSJulian Grajkowski  *  -# The application must drain the destination buffers.
169878ee8d1cSJulian Grajkowski  *     If the source data was not completely consumed, the application
169978ee8d1cSJulian Grajkowski  *     must resubmit the request.
170078ee8d1cSJulian Grajkowski  *  -# On return, the pResults->consumed will indicate the number of bytes
170178ee8d1cSJulian Grajkowski  *     consumed from the input buffers.
170278ee8d1cSJulian Grajkowski  *
170378ee8d1cSJulian Grajkowski  *  Destination Buffer Setup Rules
170478ee8d1cSJulian Grajkowski  *  -# The destination buffer list must have storage for processed data.
170578ee8d1cSJulian Grajkowski  *     This implies at least one flat buffer must exist in the buffer list.
170678ee8d1cSJulian Grajkowski  *  -# For each flat buffer in the buffer list, the dataLenInBytes element
170778ee8d1cSJulian Grajkowski  *     must be set to the size of the buffer space.
170878ee8d1cSJulian Grajkowski  *  -# It is permissible to have one or more flat buffers with a zero length
170978ee8d1cSJulian Grajkowski  *         data store.
171078ee8d1cSJulian Grajkowski  *     If a buffer has zero length, then no data will be added to
171178ee8d1cSJulian Grajkowski  *     that buffer.
171278ee8d1cSJulian Grajkowski  *
171378ee8d1cSJulian Grajkowski  *  Destination Buffer Processing Rules.
171478ee8d1cSJulian Grajkowski  *  -# The buffer list is processed in index order - DestBuff->pBuffers[0]
171578ee8d1cSJulian Grajkowski  *     will be completely processed before DestBuff->pBuffers[1] begins to
171678ee8d1cSJulian Grajkowski  *     be processed.
171778ee8d1cSJulian Grajkowski  *  -# On return, the pResults->produced will indicate the number of bytes
171878ee8d1cSJulian Grajkowski  *     written to the output buffers.
171978ee8d1cSJulian Grajkowski  *  -# If processing has not been completed, the application must drain the
172078ee8d1cSJulian Grajkowski  *         destination buffers and resubmit the request. The application must
172178ee8d1cSJulian Grajkowski  *         reset the dataLenInBytes for each flat buffer in the destination
172278ee8d1cSJulian Grajkowski  *         buffer list.
172378ee8d1cSJulian Grajkowski  *
172478ee8d1cSJulian Grajkowski  *  Checksum rules.
172578ee8d1cSJulian Grajkowski  *      If a checksum is specified in the session setup data, then:
172678ee8d1cSJulian Grajkowski  *  -# For the first request for a particular data segment the checksum
172778ee8d1cSJulian Grajkowski  *     is initialised internally by the implementation.
172878ee8d1cSJulian Grajkowski  *  -# The checksum is maintained by the implementation between calls
172978ee8d1cSJulian Grajkowski  *         until the flushFlag is set to CPA_DC_FLUSH_FINAL indicating the
173078ee8d1cSJulian Grajkowski  *         end of a particular data segment.
173178ee8d1cSJulian Grajkowski  *      -# Intermediate checksum values are returned to the application,
173278ee8d1cSJulian Grajkowski  *         via the CpaDcRqResults structure, in response to each request.
173378ee8d1cSJulian Grajkowski  *         However these checksum values are not guaranteed to the valid
173478ee8d1cSJulian Grajkowski  *         until the call with flushFlag set to CPA_DC_FLUSH_FINAL
173578ee8d1cSJulian Grajkowski  *         completes successfully.
173678ee8d1cSJulian Grajkowski  *
173778ee8d1cSJulian Grajkowski  *  The application should set flushFlag to
173878ee8d1cSJulian Grajkowski  *      CPA_DC_FLUSH_FINAL to indicate processing a particular data segment
173978ee8d1cSJulian Grajkowski  *      is complete. It should be noted that this function may have to be
174078ee8d1cSJulian Grajkowski  *      called more than once to process data after the flushFlag parameter has
174178ee8d1cSJulian Grajkowski  *      been set to CPA_DC_FLUSH_FINAL if the destination buffer fills.  Refer
174278ee8d1cSJulian Grajkowski  *      to buffer processing rules.
174378ee8d1cSJulian Grajkowski  *
174478ee8d1cSJulian Grajkowski  *  For stateful operations, when the function is invoked with flushFlag
174578ee8d1cSJulian Grajkowski  *  set to CPA_DC_FLUSH_NONE or CPA_DC_FLUSH_SYNC, indicating more data
174678ee8d1cSJulian Grajkowski  *  is yet to come, the function may or may not retain data.  When the
174778ee8d1cSJulian Grajkowski  *  function is invoked with flushFlag set to CPA_DC_FLUSH_FULL or
174878ee8d1cSJulian Grajkowski  *  CPA_DC_FLUSH_FINAL, the function will process all buffered data.
174978ee8d1cSJulian Grajkowski  *
175078ee8d1cSJulian Grajkowski  *  For stateless operations, CPA_DC_FLUSH_FINAL will cause the BFINAL
175178ee8d1cSJulian Grajkowski  *  bit to be set for deflate compression. The initial checksum for the
175278ee8d1cSJulian Grajkowski  *  stateless operation should be set to 0. CPA_DC_FLUSH_NONE and
175378ee8d1cSJulian Grajkowski  *  CPA_DC_FLUSH_SYNC should not be used for stateless operations.
175478ee8d1cSJulian Grajkowski  *
175578ee8d1cSJulian Grajkowski  *  It is possible to maintain checksum and length information across
175678ee8d1cSJulian Grajkowski  *  cpaDcCompressData() calls with a stateless session without maintaining
175778ee8d1cSJulian Grajkowski  *  the full history state that is maintained by a stateful session. In this
175878ee8d1cSJulian Grajkowski  *  mode of operation, an initial checksum value of 0 is passed into the
175978ee8d1cSJulian Grajkowski  *  first cpaDcCompressData() call with the flush flag set to
176078ee8d1cSJulian Grajkowski  *  CPA_DC_FLUSH_FULL. On subsequent calls to cpaDcCompressData() for this
176178ee8d1cSJulian Grajkowski  *  session, the checksum passed to cpaDcCompressData should be set to the
176278ee8d1cSJulian Grajkowski  *  checksum value produced by the previous call to cpaDcCompressData().
176378ee8d1cSJulian Grajkowski  *  When the last block of input data is passed to cpaDcCompressData(), the
176478ee8d1cSJulian Grajkowski  *  flush flag should be set to CP_DC_FLUSH_FINAL. This will cause the BFINAL
176578ee8d1cSJulian Grajkowski  *  bit to be set in a deflate stream. It is the responsibility of the calling
176678ee8d1cSJulian Grajkowski  *  application to maintain overall lengths across the stateless requests
176778ee8d1cSJulian Grajkowski  *  and to pass the checksum produced by one request into the next request.
176878ee8d1cSJulian Grajkowski  *
176978ee8d1cSJulian Grajkowski  *  When an instance supports compressAndVerifyAndRecover, it is enabled by
177078ee8d1cSJulian Grajkowski  *  default when using cpaDcCompressData(). If this feature needs to be
177178ee8d1cSJulian Grajkowski  *  disabled, cpaDcCompressData2() must be used.
177278ee8d1cSJulian Grajkowski  *
177378ee8d1cSJulian Grajkowski  *  Synchronous or Asynchronous operation of the API is determined by
177478ee8d1cSJulian Grajkowski  *  the value of the callbackFn parameter passed to cpaDcInitSession()
177578ee8d1cSJulian Grajkowski  *  when the sessionHandle was setup. If a non-NULL value was specified
177678ee8d1cSJulian Grajkowski  *  then the supplied callback function will be invoked asynchronously
177778ee8d1cSJulian Grajkowski  *  with the response of this request.
177878ee8d1cSJulian Grajkowski  *
177978ee8d1cSJulian Grajkowski  *  Response ordering:
178078ee8d1cSJulian Grajkowski  *  For each session, the implementation must maintain the order of
178178ee8d1cSJulian Grajkowski  *  responses.  That is, if in asynchronous mode, the order of the callback
178278ee8d1cSJulian Grajkowski  *  functions must match the order of jobs submitted by this function.
178378ee8d1cSJulian Grajkowski  *  In a simple synchronous mode implementation, the practice of submitting
178478ee8d1cSJulian Grajkowski  *  a request and blocking on its completion ensure ordering is preserved.
178578ee8d1cSJulian Grajkowski  *
178678ee8d1cSJulian Grajkowski  *  This limitation does not apply if the application employs multiple
178778ee8d1cSJulian Grajkowski  *  threads to service a single session.
178878ee8d1cSJulian Grajkowski  *
178978ee8d1cSJulian Grajkowski  *  If this API is invoked asynchronous, the return code represents
179078ee8d1cSJulian Grajkowski  *  the success or not of asynchronously scheduling the request.
179178ee8d1cSJulian Grajkowski  *  The results of the operation, along with the amount of data consumed
179278ee8d1cSJulian Grajkowski  *  and produced become available when the callback function is invoked.
179378ee8d1cSJulian Grajkowski  *  As such, pResults->consumed and pResults->produced are available
179478ee8d1cSJulian Grajkowski  *  only when the operation is complete.
179578ee8d1cSJulian Grajkowski  *
179678ee8d1cSJulian Grajkowski  *  The application must not use either the source or destination buffers
179778ee8d1cSJulian Grajkowski  *  until the callback has completed.
179878ee8d1cSJulian Grajkowski  *
179978ee8d1cSJulian Grajkowski  * @see
180078ee8d1cSJulian Grajkowski  *      None
180178ee8d1cSJulian Grajkowski  *
180278ee8d1cSJulian Grajkowski  *****************************************************************************/
180378ee8d1cSJulian Grajkowski CpaStatus
180478ee8d1cSJulian Grajkowski cpaDcCompressData( CpaInstanceHandle dcInstance,
180578ee8d1cSJulian Grajkowski         CpaDcSessionHandle  pSessionHandle,
180678ee8d1cSJulian Grajkowski         CpaBufferList       *pSrcBuff,
180778ee8d1cSJulian Grajkowski         CpaBufferList       *pDestBuff,
180878ee8d1cSJulian Grajkowski         CpaDcRqResults      *pResults,
180978ee8d1cSJulian Grajkowski         CpaDcFlush          flushFlag,
181078ee8d1cSJulian Grajkowski         void                 *callbackTag );
181178ee8d1cSJulian Grajkowski 
181278ee8d1cSJulian Grajkowski /**
181378ee8d1cSJulian Grajkowski  *****************************************************************************
181478ee8d1cSJulian Grajkowski  * @ingroup cpaDc
181578ee8d1cSJulian Grajkowski  *      Submit a request to compress a buffer of data.
181678ee8d1cSJulian Grajkowski  *
181778ee8d1cSJulian Grajkowski  * @description
181878ee8d1cSJulian Grajkowski  *      This API consumes data from the input buffer and generates compressed
181978ee8d1cSJulian Grajkowski  *      data in the output buffer. This API is very similar to
182078ee8d1cSJulian Grajkowski  *      cpaDcCompressData() except it provides a CpaDcOpData structure for
182178ee8d1cSJulian Grajkowski  *      passing additional input parameters not covered in cpaDcCompressData().
182278ee8d1cSJulian Grajkowski  *
182378ee8d1cSJulian Grajkowski  * @context
182478ee8d1cSJulian Grajkowski  *      When called as an asynchronous function it cannot sleep. It can be
182578ee8d1cSJulian Grajkowski  *      executed in a context that does not permit sleeping.
182678ee8d1cSJulian Grajkowski  *      When called as a synchronous function it may sleep. It MUST NOT be
182778ee8d1cSJulian Grajkowski  *      executed in a context that DOES NOT permit sleeping.
182878ee8d1cSJulian Grajkowski  * @assumptions
182978ee8d1cSJulian Grajkowski  *      None
183078ee8d1cSJulian Grajkowski  * @sideEffects
183178ee8d1cSJulian Grajkowski  *      None
183278ee8d1cSJulian Grajkowski  * @blocking
183378ee8d1cSJulian Grajkowski  *      Yes when configured to operate in synchronous mode.
183478ee8d1cSJulian Grajkowski  * @reentrant
183578ee8d1cSJulian Grajkowski  *      No
183678ee8d1cSJulian Grajkowski  * @threadSafe
183778ee8d1cSJulian Grajkowski  *      Yes
183878ee8d1cSJulian Grajkowski  *
183978ee8d1cSJulian Grajkowski  * @param[in]       dcInstance          Target service instance.
184078ee8d1cSJulian Grajkowski  * @param[in,out]   pSessionHandle      Session handle.
184178ee8d1cSJulian Grajkowski  * @param[in]       pSrcBuff            Pointer to data buffer for compression.
184278ee8d1cSJulian Grajkowski  * @param[in]       pDestBuff           Pointer to buffer space for data after
184378ee8d1cSJulian Grajkowski  *                                      compression.
1844266b0663SKrzysztof Zdziarski  * @param[in,out]   pOpData             Additional parameters.
184578ee8d1cSJulian Grajkowski  * @param[in,out]   pResults            Pointer to results structure
184678ee8d1cSJulian Grajkowski  * @param[in]       callbackTag         User supplied value to help correlate
184778ee8d1cSJulian Grajkowski  *                                      the callback with its associated
184878ee8d1cSJulian Grajkowski  *                                      request.
184978ee8d1cSJulian Grajkowski  *
185078ee8d1cSJulian Grajkowski  * @retval CPA_STATUS_SUCCESS       Function executed successfully.
185178ee8d1cSJulian Grajkowski  * @retval CPA_STATUS_FAIL          Function failed.
185278ee8d1cSJulian Grajkowski  * @retval CPA_STATUS_RETRY         Resubmit the request.
185378ee8d1cSJulian Grajkowski  * @retval CPA_STATUS_INVALID_PARAM Invalid parameter passed in.
185478ee8d1cSJulian Grajkowski  * @retval CPA_STATUS_RESOURCE      Error related to system resources.
185578ee8d1cSJulian Grajkowski  * @retval CPA_DC_BAD_DATA          The input data was not properly formed.
185678ee8d1cSJulian Grajkowski  * @retval CPA_STATUS_UNSUPPORTED   Function is not supported.
185778ee8d1cSJulian Grajkowski  * @retval CPA_STATUS_RESTARTING    API implementation is restarting. Resubmit
185878ee8d1cSJulian Grajkowski  *                                  the request.
185978ee8d1cSJulian Grajkowski  *
186078ee8d1cSJulian Grajkowski  * @pre
186178ee8d1cSJulian Grajkowski  *      pSessionHandle has been setup using cpaDcInitSession()
186278ee8d1cSJulian Grajkowski  * @post
186378ee8d1cSJulian Grajkowski  *     pSessionHandle has session related state information
186478ee8d1cSJulian Grajkowski  * @note
186578ee8d1cSJulian Grajkowski  *     This function passes control to the compression service for processing
186678ee8d1cSJulian Grajkowski  *
186778ee8d1cSJulian Grajkowski  * @see
186878ee8d1cSJulian Grajkowski  *      cpaDcCompressData()
186978ee8d1cSJulian Grajkowski  *
187078ee8d1cSJulian Grajkowski  *****************************************************************************/
187178ee8d1cSJulian Grajkowski CpaStatus
187278ee8d1cSJulian Grajkowski cpaDcCompressData2( CpaInstanceHandle dcInstance,
187378ee8d1cSJulian Grajkowski         CpaDcSessionHandle  pSessionHandle,
187478ee8d1cSJulian Grajkowski         CpaBufferList       *pSrcBuff,
187578ee8d1cSJulian Grajkowski         CpaBufferList       *pDestBuff,
187678ee8d1cSJulian Grajkowski         CpaDcOpData         *pOpData,
187778ee8d1cSJulian Grajkowski         CpaDcRqResults      *pResults,
187878ee8d1cSJulian Grajkowski         void                 *callbackTag );
187978ee8d1cSJulian Grajkowski 
188078ee8d1cSJulian Grajkowski /**
188178ee8d1cSJulian Grajkowski  *****************************************************************************
188278ee8d1cSJulian Grajkowski  * @ingroup cpaDc
1883266b0663SKrzysztof Zdziarski  *      Submit a request to compress a buffer of data without requiring a
1884266b0663SKrzysztof Zdziarski  *      session to be created. This is a No-Session (Ns) variant of the
1885266b0663SKrzysztof Zdziarski  *      cpaDcCompressData function.
1886266b0663SKrzysztof Zdziarski  *
1887266b0663SKrzysztof Zdziarski  * @description
1888266b0663SKrzysztof Zdziarski  *      This API consumes data from the input buffer and generates compressed
1889266b0663SKrzysztof Zdziarski  *      data in the output buffer. Unlike the other compression APIs this
1890266b0663SKrzysztof Zdziarski  *      does not use a previously created session. This is a "one-shot" API
1891266b0663SKrzysztof Zdziarski  *      that requests can be directly submitted to.
1892266b0663SKrzysztof Zdziarski  *
1893266b0663SKrzysztof Zdziarski  * @context
1894266b0663SKrzysztof Zdziarski  *      When called as an asynchronous function it cannot sleep. It can be
1895266b0663SKrzysztof Zdziarski  *      executed in a context that does not permit sleeping.
1896266b0663SKrzysztof Zdziarski  *      When called as a synchronous function it may sleep. It MUST NOT be
1897266b0663SKrzysztof Zdziarski  *      executed in a context that DOES NOT permit sleeping.
1898266b0663SKrzysztof Zdziarski  * @assumptions
1899266b0663SKrzysztof Zdziarski  *      None
1900266b0663SKrzysztof Zdziarski  * @sideEffects
1901266b0663SKrzysztof Zdziarski  *      None
1902266b0663SKrzysztof Zdziarski  * @blocking
1903266b0663SKrzysztof Zdziarski  *      Yes when configured to operate in synchronous mode.
1904266b0663SKrzysztof Zdziarski  * @reentrant
1905266b0663SKrzysztof Zdziarski  *      No
1906266b0663SKrzysztof Zdziarski  * @threadSafe
1907266b0663SKrzysztof Zdziarski  *      Yes
1908266b0663SKrzysztof Zdziarski  *
1909266b0663SKrzysztof Zdziarski  * @param[in]       dcInstance          Target service instance.
1910266b0663SKrzysztof Zdziarski  * @param[in]       pSetupData          Configuration structure for compression.
1911266b0663SKrzysztof Zdziarski  * @param[in]       pSrcBuff            Pointer to data buffer for compression.
1912266b0663SKrzysztof Zdziarski  * @param[in]       pDestBuff           Pointer to buffer space for data after
1913266b0663SKrzysztof Zdziarski  *                                      compression.
1914266b0663SKrzysztof Zdziarski  * @param[in]       pOpData             Additional input parameters.
1915266b0663SKrzysztof Zdziarski  * @param[in,out]   pResults            Pointer to results structure
1916266b0663SKrzysztof Zdziarski  * @param[in]       callbackFn          For synchronous operation this callback
1917266b0663SKrzysztof Zdziarski  *                                      shall be a null pointer.
1918266b0663SKrzysztof Zdziarski  * @param[in]       callbackTag         User supplied value to help correlate
1919266b0663SKrzysztof Zdziarski  *                                      the callback with its associated
1920266b0663SKrzysztof Zdziarski  *                                      request.
1921266b0663SKrzysztof Zdziarski  *
1922266b0663SKrzysztof Zdziarski  * @retval CPA_STATUS_SUCCESS       Function executed successfully.
1923266b0663SKrzysztof Zdziarski  * @retval CPA_STATUS_FAIL          Function failed.
1924266b0663SKrzysztof Zdziarski  * @retval CPA_STATUS_RETRY         Resubmit the request.
1925266b0663SKrzysztof Zdziarski  * @retval CPA_STATUS_INVALID_PARAM Invalid parameter passed in.
1926266b0663SKrzysztof Zdziarski  * @retval CPA_STATUS_RESOURCE      Error related to system resources.
1927266b0663SKrzysztof Zdziarski  * @retval CPA_STATUS_UNSUPPORTED   Function is not supported.
1928266b0663SKrzysztof Zdziarski  * @retval CPA_STATUS_RESTARTING    API implementation is restarting. Resubmit
1929266b0663SKrzysztof Zdziarski  *                                  the request.
1930266b0663SKrzysztof Zdziarski  *
1931266b0663SKrzysztof Zdziarski  * @pre
1932266b0663SKrzysztof Zdziarski  *     None
1933266b0663SKrzysztof Zdziarski  * @post
1934266b0663SKrzysztof Zdziarski  *     None
1935266b0663SKrzysztof Zdziarski  * @note
1936266b0663SKrzysztof Zdziarski  *     This function passes control to the compression service for processing
1937266b0663SKrzysztof Zdziarski  *
1938266b0663SKrzysztof Zdziarski  *  Checksum rules.
1939266b0663SKrzysztof Zdziarski  *     The checksum rules are the same as those for the session based APIs
1940266b0663SKrzysztof Zdziarski  *     (cpaDcCompressData or cpaDcCompressData2) with the following exception.
1941266b0663SKrzysztof Zdziarski  *     -# If the algorithm specified is CPA_DC_LZ4 or CPA_DC_LZ4S the xxHash32
1942266b0663SKrzysztof Zdziarski  *        checksum will not be maintained across calls to the API. The
1943266b0663SKrzysztof Zdziarski  *        implication is that the xxHash32 value will only be valid for the
1944266b0663SKrzysztof Zdziarski  *        output of a single request, no state will be saved. If an LZ4 frame is
1945266b0663SKrzysztof Zdziarski  *        required, even in recoverable error scenarios such as CPA_DC_OVERFLOW,
1946266b0663SKrzysztof Zdziarski  *        the checksum will not be continued. If that is required the session
1947266b0663SKrzysztof Zdziarski  *        based API must be used.
1948266b0663SKrzysztof Zdziarski  *
1949266b0663SKrzysztof Zdziarski  * @see
1950266b0663SKrzysztof Zdziarski  *     None
1951266b0663SKrzysztof Zdziarski  *
1952266b0663SKrzysztof Zdziarski  *****************************************************************************/
1953266b0663SKrzysztof Zdziarski CpaStatus
1954266b0663SKrzysztof Zdziarski cpaDcNsCompressData( CpaInstanceHandle dcInstance,
1955266b0663SKrzysztof Zdziarski         CpaDcNsSetupData    *pSetupData,
1956266b0663SKrzysztof Zdziarski         CpaBufferList       *pSrcBuff,
1957266b0663SKrzysztof Zdziarski         CpaBufferList       *pDestBuff,
1958266b0663SKrzysztof Zdziarski         CpaDcOpData         *pOpData,
1959266b0663SKrzysztof Zdziarski         CpaDcRqResults      *pResults,
1960266b0663SKrzysztof Zdziarski         CpaDcCallbackFn     callbackFn,
1961266b0663SKrzysztof Zdziarski         void                *callbackTag );
1962266b0663SKrzysztof Zdziarski /**
1963266b0663SKrzysztof Zdziarski  *****************************************************************************
1964266b0663SKrzysztof Zdziarski  * @ingroup cpaDc
196578ee8d1cSJulian Grajkowski  *      Submit a request to decompress a buffer of data.
196678ee8d1cSJulian Grajkowski  *
196778ee8d1cSJulian Grajkowski  * @description
196878ee8d1cSJulian Grajkowski  *      This API consumes compressed data from the input buffer and generates
196978ee8d1cSJulian Grajkowski  *      uncompressed data in the output buffer.
197078ee8d1cSJulian Grajkowski  *
197178ee8d1cSJulian Grajkowski  * @context
197278ee8d1cSJulian Grajkowski  *      When called as an asynchronous function it cannot sleep. It can be
197378ee8d1cSJulian Grajkowski  *      executed in a context that does not permit sleeping.
197478ee8d1cSJulian Grajkowski  *      When called as a synchronous function it may sleep. It MUST NOT be
197578ee8d1cSJulian Grajkowski  *      executed in a context that DOES NOT permit sleeping.
197678ee8d1cSJulian Grajkowski  * @assumptions
197778ee8d1cSJulian Grajkowski  *      None
197878ee8d1cSJulian Grajkowski  * @sideEffects
197978ee8d1cSJulian Grajkowski  *      None
198078ee8d1cSJulian Grajkowski  * @blocking
198178ee8d1cSJulian Grajkowski  *      Yes when configured to operate in synchronous mode.
198278ee8d1cSJulian Grajkowski  * @reentrant
198378ee8d1cSJulian Grajkowski  *      No
198478ee8d1cSJulian Grajkowski  * @threadSafe
198578ee8d1cSJulian Grajkowski  *      Yes
198678ee8d1cSJulian Grajkowski  *
198778ee8d1cSJulian Grajkowski  * @param[in]       dcInstance          Target service instance.
198878ee8d1cSJulian Grajkowski  * @param[in,out]   pSessionHandle      Session handle.
198978ee8d1cSJulian Grajkowski  * @param[in]       pSrcBuff            Pointer to data buffer for compression.
199078ee8d1cSJulian Grajkowski  * @param[in]       pDestBuff           Pointer to buffer space for data
199178ee8d1cSJulian Grajkowski  *                                      after decompression.
199278ee8d1cSJulian Grajkowski  * @param[in,out]   pResults            Pointer to results structure
199378ee8d1cSJulian Grajkowski  * @param[in]       flushFlag           When set to CPA_DC_FLUSH_FINAL, indicates
199478ee8d1cSJulian Grajkowski  *                                      that the input buffer contains all of
199578ee8d1cSJulian Grajkowski  *                                      the data for the compression session,
199678ee8d1cSJulian Grajkowski  *                                      allowing the function to release
199778ee8d1cSJulian Grajkowski  *                                      history data.
199878ee8d1cSJulian Grajkowski  * @param[in]        callbackTag        User supplied value to help correlate
199978ee8d1cSJulian Grajkowski  *                                      the callback with its associated
200078ee8d1cSJulian Grajkowski  *                                      request.
200178ee8d1cSJulian Grajkowski  *
200278ee8d1cSJulian Grajkowski  * @retval CPA_STATUS_SUCCESS       Function executed successfully.
200378ee8d1cSJulian Grajkowski  * @retval CPA_STATUS_FAIL          Function failed.
200478ee8d1cSJulian Grajkowski  * @retval CPA_STATUS_RETRY         Resubmit the request.
200578ee8d1cSJulian Grajkowski  * @retval CPA_STATUS_INVALID_PARAM Invalid parameter passed in.
200678ee8d1cSJulian Grajkowski  * @retval CPA_STATUS_RESOURCE      Error related to system resources.
200778ee8d1cSJulian Grajkowski  * @retval CPA_DC_BAD_DATA          The input data was not properly formed.
200878ee8d1cSJulian Grajkowski  * @retval CPA_STATUS_RESTARTING    API implementation is restarting. Resubmit
200978ee8d1cSJulian Grajkowski  *                                  the request.
201078ee8d1cSJulian Grajkowski  * @retval CPA_STATUS_UNSUPPORTED   Function is not supported.
201178ee8d1cSJulian Grajkowski  *
201278ee8d1cSJulian Grajkowski  * @pre
201378ee8d1cSJulian Grajkowski  *      pSessionHandle has been setup using cpaDcInitSession()
201478ee8d1cSJulian Grajkowski  * @post
201578ee8d1cSJulian Grajkowski  *     pSessionHandle has session related state information
201678ee8d1cSJulian Grajkowski  * @note
201778ee8d1cSJulian Grajkowski  *      This function passes control to the compression service for
201878ee8d1cSJulian Grajkowski  *      decompression.  The function returns the status from the service.
201978ee8d1cSJulian Grajkowski  *
202078ee8d1cSJulian Grajkowski  *      This function may be called repetitively with input until all of the
202178ee8d1cSJulian Grajkowski  *      input has been provided and all the output has been consumed.
202278ee8d1cSJulian Grajkowski  *
202378ee8d1cSJulian Grajkowski  *      This function has identical buffer processing rules as
202478ee8d1cSJulian Grajkowski  *      cpaDcCompressData().
202578ee8d1cSJulian Grajkowski  *
202678ee8d1cSJulian Grajkowski  *      This function has identical checksum processing rules as
202778ee8d1cSJulian Grajkowski  *      cpaDcCompressData().
202878ee8d1cSJulian Grajkowski  *
202978ee8d1cSJulian Grajkowski  *      The application should set flushFlag to
203078ee8d1cSJulian Grajkowski  *      CPA_DC_FLUSH_FINAL to indicate processing a particular compressed
203178ee8d1cSJulian Grajkowski  *      data segment is complete. It should be noted that this function may
203278ee8d1cSJulian Grajkowski  *      have to be called more than once to process data after flushFlag
203378ee8d1cSJulian Grajkowski  *      has been set if the destination buffer fills.  Refer to
203478ee8d1cSJulian Grajkowski  *      buffer processing rules in cpaDcCompressData().
203578ee8d1cSJulian Grajkowski  *
203678ee8d1cSJulian Grajkowski  *      Synchronous or Asynchronous operation of the API is determined by
203778ee8d1cSJulian Grajkowski  *      the value of the callbackFn parameter passed to cpaDcInitSession()
203878ee8d1cSJulian Grajkowski  *      when the sessionHandle was setup. If a non-NULL value was specified
203978ee8d1cSJulian Grajkowski  *      then the supplied callback function will be invoked asynchronously
204078ee8d1cSJulian Grajkowski  *      with the response of this request, along with the callbackTag
204178ee8d1cSJulian Grajkowski  *      specified in the function.
204278ee8d1cSJulian Grajkowski  *
204378ee8d1cSJulian Grajkowski  *      The same response ordering constraints identified in the
204478ee8d1cSJulian Grajkowski  *      cpaDcCompressData API apply to this function.
204578ee8d1cSJulian Grajkowski  *
204678ee8d1cSJulian Grajkowski  * @see
204778ee8d1cSJulian Grajkowski  *      cpaDcCompressData()
204878ee8d1cSJulian Grajkowski  *
204978ee8d1cSJulian Grajkowski  *****************************************************************************/
205078ee8d1cSJulian Grajkowski CpaStatus
205178ee8d1cSJulian Grajkowski cpaDcDecompressData( CpaInstanceHandle dcInstance,
205278ee8d1cSJulian Grajkowski         CpaDcSessionHandle  pSessionHandle,
205378ee8d1cSJulian Grajkowski         CpaBufferList       *pSrcBuff,
205478ee8d1cSJulian Grajkowski         CpaBufferList       *pDestBuff,
205578ee8d1cSJulian Grajkowski         CpaDcRqResults      *pResults,
205678ee8d1cSJulian Grajkowski         CpaDcFlush          flushFlag,
205778ee8d1cSJulian Grajkowski         void                *callbackTag );
205878ee8d1cSJulian Grajkowski 
205978ee8d1cSJulian Grajkowski 
206078ee8d1cSJulian Grajkowski /**
206178ee8d1cSJulian Grajkowski  *****************************************************************************
206278ee8d1cSJulian Grajkowski  * @ingroup cpaDc
206378ee8d1cSJulian Grajkowski  *      Submit a request to decompress a buffer of data.
206478ee8d1cSJulian Grajkowski  *
206578ee8d1cSJulian Grajkowski  * @description
206678ee8d1cSJulian Grajkowski  *      This API consumes compressed data from the input buffer and generates
206778ee8d1cSJulian Grajkowski  *      uncompressed data in the output buffer. This API is very similar to
206878ee8d1cSJulian Grajkowski  *      cpaDcDecompressData() except it provides a CpaDcOpData structure for
206978ee8d1cSJulian Grajkowski  *      passing additional input parameters not covered in cpaDcDecompressData().
207078ee8d1cSJulian Grajkowski  *
207178ee8d1cSJulian Grajkowski  * @context
207278ee8d1cSJulian Grajkowski  *      When called as an asynchronous function it cannot sleep. It can be
207378ee8d1cSJulian Grajkowski  *      executed in a context that does not permit sleeping.
207478ee8d1cSJulian Grajkowski  *      When called as a synchronous function it may sleep. It MUST NOT be
207578ee8d1cSJulian Grajkowski  *      executed in a context that DOES NOT permit sleeping.
207678ee8d1cSJulian Grajkowski  * @assumptions
207778ee8d1cSJulian Grajkowski  *      None
207878ee8d1cSJulian Grajkowski  * @sideEffects
207978ee8d1cSJulian Grajkowski  *      None
208078ee8d1cSJulian Grajkowski  * @blocking
208178ee8d1cSJulian Grajkowski  *      Yes when configured to operate in synchronous mode.
208278ee8d1cSJulian Grajkowski  * @reentrant
208378ee8d1cSJulian Grajkowski  *      No
208478ee8d1cSJulian Grajkowski  * @threadSafe
208578ee8d1cSJulian Grajkowski  *      Yes
208678ee8d1cSJulian Grajkowski  *
208778ee8d1cSJulian Grajkowski  * @param[in]       dcInstance          Target service instance.
208878ee8d1cSJulian Grajkowski  * @param[in,out]   pSessionHandle      Session handle.
208978ee8d1cSJulian Grajkowski  * @param[in]       pSrcBuff            Pointer to data buffer for compression.
209078ee8d1cSJulian Grajkowski  * @param[in]       pDestBuff           Pointer to buffer space for data
209178ee8d1cSJulian Grajkowski  *                                      after decompression.
209278ee8d1cSJulian Grajkowski  * @param[in]       pOpData             Additional input parameters.
209378ee8d1cSJulian Grajkowski  * @param[in,out]   pResults            Pointer to results structure
209478ee8d1cSJulian Grajkowski  * @param[in]        callbackTag        User supplied value to help correlate
209578ee8d1cSJulian Grajkowski  *                                      the callback with its associated
209678ee8d1cSJulian Grajkowski  *                                      request.
209778ee8d1cSJulian Grajkowski  *
209878ee8d1cSJulian Grajkowski  * @retval CPA_STATUS_SUCCESS       Function executed successfully.
209978ee8d1cSJulian Grajkowski  * @retval CPA_STATUS_FAIL          Function failed.
210078ee8d1cSJulian Grajkowski  * @retval CPA_STATUS_RETRY         Resubmit the request.
210178ee8d1cSJulian Grajkowski  * @retval CPA_STATUS_INVALID_PARAM Invalid parameter passed in.
210278ee8d1cSJulian Grajkowski  * @retval CPA_STATUS_RESOURCE      Error related to system resources.
210378ee8d1cSJulian Grajkowski  * @retval CPA_DC_BAD_DATA          The input data was not properly formed.
210478ee8d1cSJulian Grajkowski  * @retval CPA_STATUS_UNSUPPORTED   Function is not supported.
210578ee8d1cSJulian Grajkowski  * @retval CPA_STATUS_RESTARTING    API implementation is restarting. Resubmit
210678ee8d1cSJulian Grajkowski  *                                  the request.
210778ee8d1cSJulian Grajkowski  *
210878ee8d1cSJulian Grajkowski  * @pre
210978ee8d1cSJulian Grajkowski  *      pSessionHandle has been setup using cpaDcInitSession()
211078ee8d1cSJulian Grajkowski  * @post
211178ee8d1cSJulian Grajkowski  *     pSessionHandle has session related state information
211278ee8d1cSJulian Grajkowski  * @note
211378ee8d1cSJulian Grajkowski  *      This function passes control to the compression service for
211478ee8d1cSJulian Grajkowski  *      decompression.  The function returns the status from the service.
211578ee8d1cSJulian Grajkowski  *
211678ee8d1cSJulian Grajkowski  * @see
211778ee8d1cSJulian Grajkowski  *      cpaDcDecompressData()
211878ee8d1cSJulian Grajkowski  *      cpaDcCompressData2()
211978ee8d1cSJulian Grajkowski  *      cpaDcCompressData()
212078ee8d1cSJulian Grajkowski  *
212178ee8d1cSJulian Grajkowski  *****************************************************************************/
212278ee8d1cSJulian Grajkowski CpaStatus
212378ee8d1cSJulian Grajkowski cpaDcDecompressData2( CpaInstanceHandle dcInstance,
212478ee8d1cSJulian Grajkowski         CpaDcSessionHandle  pSessionHandle,
212578ee8d1cSJulian Grajkowski         CpaBufferList       *pSrcBuff,
212678ee8d1cSJulian Grajkowski         CpaBufferList       *pDestBuff,
212778ee8d1cSJulian Grajkowski         CpaDcOpData         *pOpData,
212878ee8d1cSJulian Grajkowski         CpaDcRqResults      *pResults,
212978ee8d1cSJulian Grajkowski         void                *callbackTag );
213078ee8d1cSJulian Grajkowski 
213178ee8d1cSJulian Grajkowski /**
213278ee8d1cSJulian Grajkowski  *****************************************************************************
213378ee8d1cSJulian Grajkowski  * @ingroup cpaDc
2134266b0663SKrzysztof Zdziarski  *      Submit a request to decompress a buffer of data without requiring a
2135266b0663SKrzysztof Zdziarski  *      session to be created. This is a No-Session (Ns) variant of the
2136266b0663SKrzysztof Zdziarski  *      cpaDcDecompressData function.
2137266b0663SKrzysztof Zdziarski  *
2138266b0663SKrzysztof Zdziarski  * @description
2139266b0663SKrzysztof Zdziarski  *      This API consumes data from the input buffer and generates decompressed
2140266b0663SKrzysztof Zdziarski  *      data in the output buffer. Unlike the other decompression APIs this
2141266b0663SKrzysztof Zdziarski  *      does not use a previously created session. This is a "one-shot" API
2142266b0663SKrzysztof Zdziarski  *      that requests can be directly submitted to.
2143266b0663SKrzysztof Zdziarski  *
2144266b0663SKrzysztof Zdziarski  * @context
2145266b0663SKrzysztof Zdziarski  *      When called as an asynchronous function it cannot sleep. It can be
2146266b0663SKrzysztof Zdziarski  *      executed in a context that does not permit sleeping.
2147266b0663SKrzysztof Zdziarski  *      When called as a synchronous function it may sleep. It MUST NOT be
2148266b0663SKrzysztof Zdziarski  *      executed in a context that DOES NOT permit sleeping.
2149266b0663SKrzysztof Zdziarski  * @assumptions
2150266b0663SKrzysztof Zdziarski  *      None
2151266b0663SKrzysztof Zdziarski  * @sideEffects
2152266b0663SKrzysztof Zdziarski  *      None
2153266b0663SKrzysztof Zdziarski  * @blocking
2154266b0663SKrzysztof Zdziarski  *      Yes when configured to operate in synchronous mode.
2155266b0663SKrzysztof Zdziarski  * @reentrant
2156266b0663SKrzysztof Zdziarski  *      No
2157266b0663SKrzysztof Zdziarski  * @threadSafe
2158266b0663SKrzysztof Zdziarski  *      Yes
2159266b0663SKrzysztof Zdziarski  *
2160266b0663SKrzysztof Zdziarski  * @param[in]       dcInstance          Target service instance.
2161266b0663SKrzysztof Zdziarski  * @param[in]       pSetupData          Configuration structure for decompression..
2162266b0663SKrzysztof Zdziarski  * @param[in]       pSrcBuff            Pointer to data buffer for decompression.
2163266b0663SKrzysztof Zdziarski  * @param[in]       pDestBuff           Pointer to buffer space for data
2164266b0663SKrzysztof Zdziarski  *                                      after decompression.
2165266b0663SKrzysztof Zdziarski  * @param[in]       pOpData             Additional input parameters.
2166266b0663SKrzysztof Zdziarski  * @param[in,out]   pResults            Pointer to results structure
2167266b0663SKrzysztof Zdziarski  * @param[in]       callbackFn          For synchronous operation this callback
2168266b0663SKrzysztof Zdziarski  *                                      shall be a null pointer.
2169266b0663SKrzysztof Zdziarski  * @param[in]       callbackTag         User supplied value to help correlate
2170266b0663SKrzysztof Zdziarski  *                                      the callback with its associated
2171266b0663SKrzysztof Zdziarski  *                                      request.
2172266b0663SKrzysztof Zdziarski  *
2173266b0663SKrzysztof Zdziarski  * @retval CPA_STATUS_SUCCESS       Function executed successfully.
2174266b0663SKrzysztof Zdziarski  * @retval CPA_STATUS_FAIL          Function failed.
2175266b0663SKrzysztof Zdziarski  * @retval CPA_STATUS_RETRY         Resubmit the request.
2176266b0663SKrzysztof Zdziarski  * @retval CPA_STATUS_INVALID_PARAM Invalid parameter passed in.
2177266b0663SKrzysztof Zdziarski  * @retval CPA_STATUS_RESOURCE      Error related to system resources.
2178266b0663SKrzysztof Zdziarski  * @retval CPA_STATUS_UNSUPPORTED   Function is not supported.
2179266b0663SKrzysztof Zdziarski  * @retval CPA_STATUS_RESTARTING    API implementation is restarting. Resubmit
2180266b0663SKrzysztof Zdziarski  *                                  the request.
2181266b0663SKrzysztof Zdziarski  *
2182266b0663SKrzysztof Zdziarski  * @pre
2183266b0663SKrzysztof Zdziarski  *     None
2184266b0663SKrzysztof Zdziarski  * @post
2185266b0663SKrzysztof Zdziarski  *     None
2186266b0663SKrzysztof Zdziarski  * @note
2187266b0663SKrzysztof Zdziarski  *     This function passes control to the decompression service. The function
2188266b0663SKrzysztof Zdziarski  *     returns the status from the service.
2189266b0663SKrzysztof Zdziarski  *
2190266b0663SKrzysztof Zdziarski  * @see
2191266b0663SKrzysztof Zdziarski  *      cpaDcDecompressData()
2192266b0663SKrzysztof Zdziarski  *      cpaDcCompressData2()
2193266b0663SKrzysztof Zdziarski  *      cpaDcCompressData()
2194266b0663SKrzysztof Zdziarski  *
2195266b0663SKrzysztof Zdziarski  *****************************************************************************/
2196266b0663SKrzysztof Zdziarski CpaStatus
2197266b0663SKrzysztof Zdziarski cpaDcNsDecompressData( CpaInstanceHandle dcInstance,
2198266b0663SKrzysztof Zdziarski         CpaDcNsSetupData    *pSetupData,
2199266b0663SKrzysztof Zdziarski         CpaBufferList       *pSrcBuff,
2200266b0663SKrzysztof Zdziarski         CpaBufferList       *pDestBuff,
2201266b0663SKrzysztof Zdziarski         CpaDcOpData         *pOpData,
2202266b0663SKrzysztof Zdziarski         CpaDcRqResults      *pResults,
2203266b0663SKrzysztof Zdziarski         CpaDcCallbackFn     callbackFn,
2204266b0663SKrzysztof Zdziarski         void                *callbackTag );
2205266b0663SKrzysztof Zdziarski 
2206266b0663SKrzysztof Zdziarski /**
2207266b0663SKrzysztof Zdziarski  *****************************************************************************
2208266b0663SKrzysztof Zdziarski  * @ingroup cpaDc
220978ee8d1cSJulian Grajkowski  *      Generate compression header.
221078ee8d1cSJulian Grajkowski  *
221178ee8d1cSJulian Grajkowski  * @description
2212266b0663SKrzysztof Zdziarski  *      This function generates the gzip header, zlib header or LZ4 frame
2213266b0663SKrzysztof Zdziarski  *      header and stores it in the destination buffer. The type of header
2214266b0663SKrzysztof Zdziarski  *      created is determined using the compression algorithm selected using
2215266b0663SKrzysztof Zdziarski  *      CpaDcSessionSetupData.compType, for the session associated with the
2216266b0663SKrzysztof Zdziarski  *      session handle.
221778ee8d1cSJulian Grajkowski  *
221878ee8d1cSJulian Grajkowski  * @context
221978ee8d1cSJulian Grajkowski  *      This function may be call from any context.
222078ee8d1cSJulian Grajkowski  * @assumptions
222178ee8d1cSJulian Grajkowski  *      None
222278ee8d1cSJulian Grajkowski  * @sideEffects
222378ee8d1cSJulian Grajkowski  *      None
222478ee8d1cSJulian Grajkowski  * @blocking
222578ee8d1cSJulian Grajkowski  *      No
222678ee8d1cSJulian Grajkowski  * @reentrant
222778ee8d1cSJulian Grajkowski  *      No
222878ee8d1cSJulian Grajkowski  * @threadSafe
222978ee8d1cSJulian Grajkowski  *      Yes
223078ee8d1cSJulian Grajkowski  *
2231266b0663SKrzysztof Zdziarski  * @param[in] pSessionHandle        Session handle.
223278ee8d1cSJulian Grajkowski  * @param[in] pDestBuff             Pointer to data buffer where the
223378ee8d1cSJulian Grajkowski  *                                  compression header will go.
223478ee8d1cSJulian Grajkowski  * @param[out] count                Pointer to counter filled in with
223578ee8d1cSJulian Grajkowski  *                                  header size.
223678ee8d1cSJulian Grajkowski  *
223778ee8d1cSJulian Grajkowski  * @retval CPA_STATUS_SUCCESS        Function executed successfully.
223878ee8d1cSJulian Grajkowski  * @retval CPA_STATUS_FAIL           Function failed.
223978ee8d1cSJulian Grajkowski  * @retval CPA_STATUS_INVALID_PARAM  Invalid parameter passed in.
224078ee8d1cSJulian Grajkowski  * @retval CPA_STATUS_RESTARTING     API implementation is restarting. Resubmit
224178ee8d1cSJulian Grajkowski  *                                   the request.
224278ee8d1cSJulian Grajkowski  * @retval CPA_STATUS_UNSUPPORTED    Function is not supported.
224378ee8d1cSJulian Grajkowski  *
224478ee8d1cSJulian Grajkowski  * @pre
224578ee8d1cSJulian Grajkowski  *      pSessionHandle has been setup using cpaDcInitSession()
224678ee8d1cSJulian Grajkowski  *
224778ee8d1cSJulian Grajkowski  * @note
2248266b0663SKrzysztof Zdziarski  *      When the deflate compression algorithm is used, this function can output
2249266b0663SKrzysztof Zdziarski  *      a 10 byte gzip header or 2 byte zlib header to the destination buffer.
2250266b0663SKrzysztof Zdziarski  *      The session properties are used to determine the header type. To
2251266b0663SKrzysztof Zdziarski  *      output a Gzip or a Zlib header the session must have been initialized
2252266b0663SKrzysztof Zdziarski  *      with CpaDcCompType CPA_DC_DEFLATE.
2253266b0663SKrzysztof Zdziarski  *      To output a gzip header the session must have been initialized with
2254266b0663SKrzysztof Zdziarski  *      CpaDcChecksum CPA_DC_CRC32. To output a zlib header the session must
2255266b0663SKrzysztof Zdziarski  *      have been initialized with CpaDcChecksum CPA_DC_ADLER32.
225678ee8d1cSJulian Grajkowski  *      For CpaDcChecksum CPA_DC_NONE no header is output.
225778ee8d1cSJulian Grajkowski  *
225878ee8d1cSJulian Grajkowski  *      If the compression requires a gzip header, then this header requires
225978ee8d1cSJulian Grajkowski  *      at a minimum the following fields, defined in RFC1952:
226078ee8d1cSJulian Grajkowski  *          ID1: 0x1f
226178ee8d1cSJulian Grajkowski  *          ID2: 0x8b
226278ee8d1cSJulian Grajkowski  *          CM: Compression method = 8 for deflate
226378ee8d1cSJulian Grajkowski  *
226478ee8d1cSJulian Grajkowski  *      The zlib header is defined in RFC1950 and this function must implement
226578ee8d1cSJulian Grajkowski  *      as a minimum:
226678ee8d1cSJulian Grajkowski  *          CM: four bit compression method - 8 is deflate with window size to
226778ee8d1cSJulian Grajkowski  *              32k
226878ee8d1cSJulian Grajkowski  *          CINFO: four bit window size (see RFC1950 for details), 7 is 32k
226978ee8d1cSJulian Grajkowski  *              window
227078ee8d1cSJulian Grajkowski  *          FLG: defined as:
227178ee8d1cSJulian Grajkowski  *              -   Bits 0 - 4: check bits for CM, CINFO and FLG (see RFC1950)
227278ee8d1cSJulian Grajkowski  *              -   Bit 5:  FDICT 0 = default, 1 is preset dictionary
227378ee8d1cSJulian Grajkowski  *              -   Bits 6 - 7: FLEVEL, compression level (see RFC 1950)
227478ee8d1cSJulian Grajkowski  *
2275266b0663SKrzysztof Zdziarski  *      When LZ4 algorithm is used, this function can output a 7 byte frame
2276266b0663SKrzysztof Zdziarski  *      header. This function will set the LZ4 frame header with:
2277266b0663SKrzysztof Zdziarski  *          - Magic number 0x184D2204
2278266b0663SKrzysztof Zdziarski  *          - The LZ4 max block size defined in the CpaDcSessionSetupData
2279266b0663SKrzysztof Zdziarski  *          - Flag byte as:
2280266b0663SKrzysztof Zdziarski  *              * Version = 1
2281266b0663SKrzysztof Zdziarski  *              * Block independence = 0
2282266b0663SKrzysztof Zdziarski  *              * Block checksum = 0
2283266b0663SKrzysztof Zdziarski  *              * Content size present = 0
2284266b0663SKrzysztof Zdziarski  *              * Content checksum present = 1
2285266b0663SKrzysztof Zdziarski  *              * Dictionary ID present = 0
2286266b0663SKrzysztof Zdziarski  *          - Content size = 0
2287266b0663SKrzysztof Zdziarski  *          - Dictionary ID = 0
2288266b0663SKrzysztof Zdziarski  *          - Header checksum = 1 byte representing the second byte of the
2289266b0663SKrzysztof Zdziarski  *                              XXH32 of the frame decriptor field.
229078ee8d1cSJulian Grajkowski  *
2291266b0663SKrzysztof Zdziarski  *      The counter parameter will be set to the number of bytes added to the
2292266b0663SKrzysztof Zdziarski  *      buffer. The pData will be not be changed.
2293266b0663SKrzysztof Zdziarski  *
2294266b0663SKrzysztof Zdziarski  *      For any of the compression algorithms used, the application is
2295266b0663SKrzysztof Zdziarski  *      responsible to offset the pData pointer in CpaBufferList by the length
2296266b0663SKrzysztof Zdziarski  *      of the header before calling the CpaDcCompressData() or
2297266b0663SKrzysztof Zdziarski  *      CpaDcCompressData2() functions.
229878ee8d1cSJulian Grajkowski  * @see
229978ee8d1cSJulian Grajkowski  *      None
230078ee8d1cSJulian Grajkowski  *
230178ee8d1cSJulian Grajkowski  *****************************************************************************/
230278ee8d1cSJulian Grajkowski CpaStatus
230378ee8d1cSJulian Grajkowski cpaDcGenerateHeader( CpaDcSessionHandle pSessionHandle,
230478ee8d1cSJulian Grajkowski     CpaFlatBuffer *pDestBuff, Cpa32U *count );
230578ee8d1cSJulian Grajkowski 
230678ee8d1cSJulian Grajkowski /**
230778ee8d1cSJulian Grajkowski  *****************************************************************************
230878ee8d1cSJulian Grajkowski  * @ingroup cpaDc
230978ee8d1cSJulian Grajkowski  *      Generate compression footer.
231078ee8d1cSJulian Grajkowski  *
231178ee8d1cSJulian Grajkowski  * @description
2312266b0663SKrzysztof Zdziarski  *      This function generates the footer for gzip, zlib or LZ4.
2313266b0663SKrzysztof Zdziarski  *      The generated footer is stored it in the destination buffer.
2314266b0663SKrzysztof Zdziarski  *      The type of footer created is determined using the compression
2315266b0663SKrzysztof Zdziarski  *      algorithm selected for the session associated with the session handle.
2316266b0663SKrzysztof Zdziarski  *
231778ee8d1cSJulian Grajkowski  * @context
231878ee8d1cSJulian Grajkowski  *      This function may be call from any context.
231978ee8d1cSJulian Grajkowski  * @assumptions
232078ee8d1cSJulian Grajkowski  *      None
232178ee8d1cSJulian Grajkowski  * @sideEffects
232278ee8d1cSJulian Grajkowski  *      All session variables are reset
232378ee8d1cSJulian Grajkowski  * @blocking
232478ee8d1cSJulian Grajkowski  *      No
232578ee8d1cSJulian Grajkowski  * @reentrant
232678ee8d1cSJulian Grajkowski  *      No
232778ee8d1cSJulian Grajkowski  * @threadSafe
232878ee8d1cSJulian Grajkowski  *      Yes
232978ee8d1cSJulian Grajkowski  *
233078ee8d1cSJulian Grajkowski  * @param[in,out] pSessionHandle    Session handle.
233178ee8d1cSJulian Grajkowski  * @param[in] pDestBuff             Pointer to data buffer where the
233278ee8d1cSJulian Grajkowski  *                                  compression footer will go.
233378ee8d1cSJulian Grajkowski  * @param[in,out] pResults          Pointer to results structure filled by
233478ee8d1cSJulian Grajkowski  *                                  CpaDcCompressData.  Updated with the
233578ee8d1cSJulian Grajkowski  *                                  results of this API call
233678ee8d1cSJulian Grajkowski  *
233778ee8d1cSJulian Grajkowski  * @retval CPA_STATUS_SUCCESS        Function executed successfully.
233878ee8d1cSJulian Grajkowski  * @retval CPA_STATUS_FAIL           Function failed.
233978ee8d1cSJulian Grajkowski  * @retval CPA_STATUS_UNSUPPORTED    Function is not supported.
234078ee8d1cSJulian Grajkowski  * @retval CPA_STATUS_INVALID_PARAM  Invalid parameter passed in.
234178ee8d1cSJulian Grajkowski  * @retval CPA_STATUS_RESTARTING     API implementation is restarting. Resubmit
234278ee8d1cSJulian Grajkowski  *                                   the request.
234378ee8d1cSJulian Grajkowski  * @retval CPA_STATUS_UNSUPPORTED    Function is not supported.
234478ee8d1cSJulian Grajkowski  *
234578ee8d1cSJulian Grajkowski  * @pre
234678ee8d1cSJulian Grajkowski  *      pSessionHandle has been setup using cpaDcInitSession()
234778ee8d1cSJulian Grajkowski  *      pResults structure has been filled by CpaDcCompressData().
234878ee8d1cSJulian Grajkowski  *
234978ee8d1cSJulian Grajkowski  * @note
235078ee8d1cSJulian Grajkowski  *      Depending on the session variables, this function can add the
2351266b0663SKrzysztof Zdziarski  *      alder32 footer to the zlib compressed data as defined in RFC1950.
2352266b0663SKrzysztof Zdziarski  *      If required, it can also add the gzip footer, which is the crc32 of the
2353266b0663SKrzysztof Zdziarski  *      uncompressed data and the length of the uncompressed data.
2354266b0663SKrzysztof Zdziarski  *      This section is defined in RFC1952. The session variables used to
2355266b0663SKrzysztof Zdziarski  *      determine the header type are CpaDcCompType and CpaDcChecksum, see
2356266b0663SKrzysztof Zdziarski  *      cpaDcGenerateHeader for more details.
2357266b0663SKrzysztof Zdziarski  *
2358266b0663SKrzysztof Zdziarski  *      For LZ4 compression, this function adds the LZ4 frame footer
2359266b0663SKrzysztof Zdziarski  *      using XXH32 algorithm of the uncompressed data. The XXH32 checksum is
2360266b0663SKrzysztof Zdziarski  *      added after the end mark. This section is defined in the documentation
2361266b0663SKrzysztof Zdziarski  *      of the LZ4 frame format at:
2362266b0663SKrzysztof Zdziarski  *      https://github.com/lz4/lz4/blob/dev/doc/lz4_Frame_format.md
236378ee8d1cSJulian Grajkowski  *
236478ee8d1cSJulian Grajkowski  *      An artifact of invoking this function for writing the footer data is
236578ee8d1cSJulian Grajkowski  *      that all opaque session specific data is re-initialized.  If the
236678ee8d1cSJulian Grajkowski  *      compression level and file types are consistent, the upper level
236778ee8d1cSJulian Grajkowski  *      application can continue processing compression requests using the
236878ee8d1cSJulian Grajkowski  *      same session handle.
236978ee8d1cSJulian Grajkowski  *
2370266b0663SKrzysztof Zdziarski  *      The produced element of the pResults structure will be incremented by
2371266b0663SKrzysztof Zdziarski  *      the numbers bytes added to the buffer.  The pointer to the buffer will
2372266b0663SKrzysztof Zdziarski  *      not be modified. It is necessary for the application to ensure that
2373266b0663SKrzysztof Zdziarski  *      there is always sufficient memory in the destination buffer to append
2374266b0663SKrzysztof Zdziarski  *      the footer. In the event that the destination buffer would be too small
2375266b0663SKrzysztof Zdziarski  *      to accept the footer, overflow will not be reported.
237678ee8d1cSJulian Grajkowski  *
237778ee8d1cSJulian Grajkowski  * @see
237878ee8d1cSJulian Grajkowski  *      None
237978ee8d1cSJulian Grajkowski  *
238078ee8d1cSJulian Grajkowski  *****************************************************************************/
238178ee8d1cSJulian Grajkowski CpaStatus
238278ee8d1cSJulian Grajkowski cpaDcGenerateFooter( CpaDcSessionHandle pSessionHandle,
2383266b0663SKrzysztof Zdziarski     CpaFlatBuffer *pDestBuff,
2384266b0663SKrzysztof Zdziarski     CpaDcRqResults *pResults );
2385266b0663SKrzysztof Zdziarski 
2386266b0663SKrzysztof Zdziarski 
2387266b0663SKrzysztof Zdziarski /**
2388266b0663SKrzysztof Zdziarski  *****************************************************************************
2389266b0663SKrzysztof Zdziarski  * @ingroup cpaDc
2390266b0663SKrzysztof Zdziarski  *      Generate compression header without requiring a session to be created.
2391266b0663SKrzysztof Zdziarski  *      This is a No-Session (Ns) variant of the cpaDcGenerateHeader function.
2392266b0663SKrzysztof Zdziarski  *
2393266b0663SKrzysztof Zdziarski  * @description
2394266b0663SKrzysztof Zdziarski  *      This API generates the required compression format header and stores it
2395266b0663SKrzysztof Zdziarski  *      in the output buffer.
2396266b0663SKrzysztof Zdziarski  *
2397266b0663SKrzysztof Zdziarski  * @context
2398266b0663SKrzysztof Zdziarski  *      This function may be called from any context.
2399266b0663SKrzysztof Zdziarski  * @assumptions
2400266b0663SKrzysztof Zdziarski  *      None
2401266b0663SKrzysztof Zdziarski  * @sideEffects
2402266b0663SKrzysztof Zdziarski  *      None
2403266b0663SKrzysztof Zdziarski  * @blocking
2404266b0663SKrzysztof Zdziarski  *      No
2405266b0663SKrzysztof Zdziarski  * @reentrant
2406266b0663SKrzysztof Zdziarski  *      No
2407266b0663SKrzysztof Zdziarski  * @threadSafe
2408266b0663SKrzysztof Zdziarski  *      Yes
2409266b0663SKrzysztof Zdziarski  *
2410266b0663SKrzysztof Zdziarski  * @param[in] pSetupData            Pointer to Ns Configuration structure.
2411266b0663SKrzysztof Zdziarski  * @param[in] pDestBuff             Pointer to data buffer where the
2412266b0663SKrzysztof Zdziarski  *                                  compression header will go.
2413266b0663SKrzysztof Zdziarski  * @param[out] count                Pointer to counter filled in with
2414266b0663SKrzysztof Zdziarski  *                                  header size.
2415266b0663SKrzysztof Zdziarski  *
2416266b0663SKrzysztof Zdziarski  * @retval CPA_STATUS_SUCCESS        Function executed successfully.
2417266b0663SKrzysztof Zdziarski  * @retval CPA_STATUS_FAIL           Function failed.
2418266b0663SKrzysztof Zdziarski  * @retval CPA_STATUS_INVALID_PARAM  Invalid parameter passed in.
2419266b0663SKrzysztof Zdziarski  * @retval CPA_STATUS_RESTARTING     API implementation is restarting. Resubmit
2420266b0663SKrzysztof Zdziarski  *                                   the request.
2421266b0663SKrzysztof Zdziarski  * @retval CPA_STATUS_UNSUPPORTED    Function is not supported.
2422266b0663SKrzysztof Zdziarski  *
2423266b0663SKrzysztof Zdziarski  * @pre
2424266b0663SKrzysztof Zdziarski  *      None
2425266b0663SKrzysztof Zdziarski  *
2426266b0663SKrzysztof Zdziarski  * @note
2427266b0663SKrzysztof Zdziarski  *      This function outputs the required compression format header to
2428266b0663SKrzysztof Zdziarski  *      the destination buffer. The CpaDcNsSetupData structure fields are used to
2429266b0663SKrzysztof Zdziarski  *      determine the header type.
2430266b0663SKrzysztof Zdziarski  *
2431266b0663SKrzysztof Zdziarski  *      To output an LZ4 header the structure must have been initialized with
2432266b0663SKrzysztof Zdziarski  *      with CpaDcCompType CPA_DC_LZ4.
2433266b0663SKrzysztof Zdziarski  *      To output a gzip or zlib header the structure must have been initialized
2434266b0663SKrzysztof Zdziarski  *      with CpaDcCompType CPA_DC_DEFLATE.
2435266b0663SKrzysztof Zdziarski  *      To output a gzip header the structure must have been initialized with
2436266b0663SKrzysztof Zdziarski  *      CpaDcChecksum CPA_DC_CRC32.
2437266b0663SKrzysztof Zdziarski  *      To output a zlib header the structure must have been initialized with
2438266b0663SKrzysztof Zdziarski  *      CpaDcChecksum CPA_DC_ADLER32.
2439266b0663SKrzysztof Zdziarski  *      For CpaDcChecksum CPA_DC_NONE no header is output.
2440266b0663SKrzysztof Zdziarski  *
2441266b0663SKrzysztof Zdziarski  *      The counter parameter will be set to the number of bytes added to the
2442266b0663SKrzysztof Zdziarski  *      buffer.
2443266b0663SKrzysztof Zdziarski  *
2444266b0663SKrzysztof Zdziarski  * @see
2445266b0663SKrzysztof Zdziarski  *      cpaDcGenerateHeader
2446266b0663SKrzysztof Zdziarski  *
2447266b0663SKrzysztof Zdziarski  *****************************************************************************/
2448266b0663SKrzysztof Zdziarski CpaStatus
2449266b0663SKrzysztof Zdziarski cpaDcNsGenerateHeader( CpaDcNsSetupData *pSetupData,
2450266b0663SKrzysztof Zdziarski     CpaFlatBuffer *pDestBuff,
2451266b0663SKrzysztof Zdziarski     Cpa32U *count );
2452266b0663SKrzysztof Zdziarski 
2453266b0663SKrzysztof Zdziarski /**
2454266b0663SKrzysztof Zdziarski  *****************************************************************************
2455266b0663SKrzysztof Zdziarski  * @ingroup cpaDc
2456266b0663SKrzysztof Zdziarski  *      Generate compression footer without requiring a session to be created.
2457266b0663SKrzysztof Zdziarski  *      This is a No-Session (Ns) variant of the cpaDcGenerateFooter function.
2458266b0663SKrzysztof Zdziarski  *
2459266b0663SKrzysztof Zdziarski  * @description
2460266b0663SKrzysztof Zdziarski  *      This API generates the footer for the required format and stores it in
2461266b0663SKrzysztof Zdziarski  *      the destination buffer.
2462266b0663SKrzysztof Zdziarski  * @context
2463266b0663SKrzysztof Zdziarski  *      This function may be call from any context.
2464266b0663SKrzysztof Zdziarski  * @assumptions
2465266b0663SKrzysztof Zdziarski  *      None
2466266b0663SKrzysztof Zdziarski  * @sideEffects
2467266b0663SKrzysztof Zdziarski  *      All session variables are reset
2468266b0663SKrzysztof Zdziarski  * @blocking
2469266b0663SKrzysztof Zdziarski  *      No
2470266b0663SKrzysztof Zdziarski  * @reentrant
2471266b0663SKrzysztof Zdziarski  *      No
2472266b0663SKrzysztof Zdziarski  * @threadSafe
2473266b0663SKrzysztof Zdziarski  *      Yes
2474266b0663SKrzysztof Zdziarski  *
2475266b0663SKrzysztof Zdziarski  * @param[in] pSetupData            Pointer to Ns Configuration structure.
2476266b0663SKrzysztof Zdziarski  * @param[in] totalLength           Total accumulated length of input data
2477266b0663SKrzysztof Zdziarski  *                                  processed. See description for formats
2478266b0663SKrzysztof Zdziarski  *                                  that make use of this parameter.
2479266b0663SKrzysztof Zdziarski  * @param[in] pDestBuff             Pointer to data buffer where the
2480266b0663SKrzysztof Zdziarski  *                                  compression footer will go.
2481266b0663SKrzysztof Zdziarski  * @param[in,out] pResults          Pointer to results structure filled by
2482266b0663SKrzysztof Zdziarski  *                                  CpaDcNsCompressData.  Updated with the
2483266b0663SKrzysztof Zdziarski  *                                  results of this API call
2484266b0663SKrzysztof Zdziarski  *
2485266b0663SKrzysztof Zdziarski  * @retval CPA_STATUS_SUCCESS        Function executed successfully.
2486266b0663SKrzysztof Zdziarski  * @retval CPA_STATUS_FAIL           Function failed.
2487266b0663SKrzysztof Zdziarski  * @retval CPA_STATUS_UNSUPPORTED    Function is not supported.
2488266b0663SKrzysztof Zdziarski  * @retval CPA_STATUS_INVALID_PARAM  Invalid parameter passed in.
2489266b0663SKrzysztof Zdziarski  * @retval CPA_STATUS_RESTARTING     API implementation is restarting. Resubmit
2490266b0663SKrzysztof Zdziarski  *                                   the request.
2491266b0663SKrzysztof Zdziarski  * @retval CPA_STATUS_UNSUPPORTED    Function is not supported.
2492266b0663SKrzysztof Zdziarski  *
2493266b0663SKrzysztof Zdziarski  * @pre
2494266b0663SKrzysztof Zdziarski  *      pResults structure has been filled by CpaDcNsCompressData().
2495266b0663SKrzysztof Zdziarski  *
2496266b0663SKrzysztof Zdziarski  * @note
2497266b0663SKrzysztof Zdziarski  *      This function outputs the required compression format footer to
2498266b0663SKrzysztof Zdziarski  *      the destination buffer. The CpaDcNsSetupData structure fields are used to
2499266b0663SKrzysztof Zdziarski  *      determine the footer type created.
2500266b0663SKrzysztof Zdziarski  *
2501266b0663SKrzysztof Zdziarski  *      To output an LZ4 footer the structure must have been initialized with
2502266b0663SKrzysztof Zdziarski  *      with CpaDcCompType CPA_DC_LZ4.
2503266b0663SKrzysztof Zdziarski  *      To output a gzip or zlib footer the structure must have been initialized
2504266b0663SKrzysztof Zdziarski  *      with CpaDcCompType CPA_DC_DEFLATE.
2505266b0663SKrzysztof Zdziarski  *      To output a gzip footer the structure must have been initialized with
2506266b0663SKrzysztof Zdziarski  *      CpaDcChecksum CPA_DC_CRC32 and the totalLength parameter initialized to
2507266b0663SKrzysztof Zdziarski  *      the total accumulated length of data processed.
2508266b0663SKrzysztof Zdziarski  *      To output a zlib footer the structure must have been initialized with
2509266b0663SKrzysztof Zdziarski  *      CpaDcChecksum CPA_DC_ADLER32.
2510266b0663SKrzysztof Zdziarski  *      For CpaDcChecksum CPA_DC_NONE no footer is output.
2511266b0663SKrzysztof Zdziarski  *
2512266b0663SKrzysztof Zdziarski  *      The produced element of the pResults structure will be incremented by the
2513266b0663SKrzysztof Zdziarski  *      number of bytes added to the buffer. The pointer to the buffer
2514266b0663SKrzysztof Zdziarski  *      will not be modified.
2515266b0663SKrzysztof Zdziarski  *
2516266b0663SKrzysztof Zdziarski  * @see
2517266b0663SKrzysztof Zdziarski  *      CpaDcNsSetupData
2518266b0663SKrzysztof Zdziarski  *      cpaDcNsGenerateHeader
2519266b0663SKrzysztof Zdziarski  *      cpaDcGenerateFooter
2520266b0663SKrzysztof Zdziarski  *
2521266b0663SKrzysztof Zdziarski  *****************************************************************************/
2522266b0663SKrzysztof Zdziarski CpaStatus
2523266b0663SKrzysztof Zdziarski cpaDcNsGenerateFooter( CpaDcNsSetupData *pSetupData,
2524266b0663SKrzysztof Zdziarski     Cpa64U totalLength,
2525266b0663SKrzysztof Zdziarski     CpaFlatBuffer *pDestBuff,
2526266b0663SKrzysztof Zdziarski     CpaDcRqResults *pResults );
252778ee8d1cSJulian Grajkowski 
252878ee8d1cSJulian Grajkowski 
252978ee8d1cSJulian Grajkowski /**
253078ee8d1cSJulian Grajkowski  *****************************************************************************
253178ee8d1cSJulian Grajkowski  * @ingroup cpaDc
253278ee8d1cSJulian Grajkowski  *      Retrieve statistics
253378ee8d1cSJulian Grajkowski  *
253478ee8d1cSJulian Grajkowski  * @description
253578ee8d1cSJulian Grajkowski  *      This API retrieves the current statistics for a compression instance.
253678ee8d1cSJulian Grajkowski  *
253778ee8d1cSJulian Grajkowski  * @context
253878ee8d1cSJulian Grajkowski  *      This function may be call from any context.
253978ee8d1cSJulian Grajkowski  * @assumptions
254078ee8d1cSJulian Grajkowski  *      None
254178ee8d1cSJulian Grajkowski  * @sideEffects
254278ee8d1cSJulian Grajkowski  *        None
254378ee8d1cSJulian Grajkowski  * @blocking
254478ee8d1cSJulian Grajkowski  *      Yes
254578ee8d1cSJulian Grajkowski  * @reentrant
254678ee8d1cSJulian Grajkowski  *      No
254778ee8d1cSJulian Grajkowski  * @threadSafe
254878ee8d1cSJulian Grajkowski  *      Yes
254978ee8d1cSJulian Grajkowski  *
255078ee8d1cSJulian Grajkowski  * @param[in]  dcInstance       Instance handle.
255178ee8d1cSJulian Grajkowski  * @param[out] pStatistics      Pointer to statistics structure.
255278ee8d1cSJulian Grajkowski  *
255378ee8d1cSJulian Grajkowski  * @retval CPA_STATUS_SUCCESS        Function executed successfully.
255478ee8d1cSJulian Grajkowski  * @retval CPA_STATUS_FAIL           Function failed.
255578ee8d1cSJulian Grajkowski  * @retval CPA_STATUS_INVALID_PARAM  Invalid parameter passed in.
255678ee8d1cSJulian Grajkowski  * @retval CPA_STATUS_RESTARTING     API implementation is restarting. Resubmit
255778ee8d1cSJulian Grajkowski  *                                   the request.
255878ee8d1cSJulian Grajkowski  * @retval CPA_STATUS_UNSUPPORTED    Function is not supported.
255978ee8d1cSJulian Grajkowski  *
256078ee8d1cSJulian Grajkowski  * @pre
256178ee8d1cSJulian Grajkowski  *      None
256278ee8d1cSJulian Grajkowski  * @post
256378ee8d1cSJulian Grajkowski  *     None
256478ee8d1cSJulian Grajkowski  *
256578ee8d1cSJulian Grajkowski  * @see
256678ee8d1cSJulian Grajkowski  *      None
256778ee8d1cSJulian Grajkowski  *
256878ee8d1cSJulian Grajkowski  *****************************************************************************/
256978ee8d1cSJulian Grajkowski CpaStatus
257078ee8d1cSJulian Grajkowski cpaDcGetStats( CpaInstanceHandle dcInstance,
257178ee8d1cSJulian Grajkowski       CpaDcStats *pStatistics );
257278ee8d1cSJulian Grajkowski 
257378ee8d1cSJulian Grajkowski /*****************************************************************************/
257478ee8d1cSJulian Grajkowski /* Instance Discovery Functions */
257578ee8d1cSJulian Grajkowski 
257678ee8d1cSJulian Grajkowski /**
257778ee8d1cSJulian Grajkowski  *****************************************************************************
257878ee8d1cSJulian Grajkowski  * @ingroup cpaDc
257978ee8d1cSJulian Grajkowski  *      Get the number of device instances that are supported by the API
258078ee8d1cSJulian Grajkowski  *      implementation.
258178ee8d1cSJulian Grajkowski  *
258278ee8d1cSJulian Grajkowski  * @description
258378ee8d1cSJulian Grajkowski  *
258478ee8d1cSJulian Grajkowski  *     This function will get the number of device instances that are supported
258578ee8d1cSJulian Grajkowski  *     by an implementation of the compression API. This number is then used to
258678ee8d1cSJulian Grajkowski  *     determine the size of the array that must be passed to
258778ee8d1cSJulian Grajkowski  *     cpaDcGetInstances().
258878ee8d1cSJulian Grajkowski  *
258978ee8d1cSJulian Grajkowski  * @context
259078ee8d1cSJulian Grajkowski  *      This function MUST NOT be called from an interrupt context as it MAY
259178ee8d1cSJulian Grajkowski  *      sleep.
259278ee8d1cSJulian Grajkowski  * @assumptions
259378ee8d1cSJulian Grajkowski  *      None
259478ee8d1cSJulian Grajkowski  * @sideEffects
259578ee8d1cSJulian Grajkowski  *      None
259678ee8d1cSJulian Grajkowski  * @blocking
259778ee8d1cSJulian Grajkowski  *      This function is synchronous and blocking.
259878ee8d1cSJulian Grajkowski  * @reentrant
259978ee8d1cSJulian Grajkowski  *      No
260078ee8d1cSJulian Grajkowski  * @threadSafe
260178ee8d1cSJulian Grajkowski  *      Yes
260278ee8d1cSJulian Grajkowski  *
260378ee8d1cSJulian Grajkowski  * @param[out] pNumInstances        Pointer to where the number of
260478ee8d1cSJulian Grajkowski  *                                   instances will be written.
260578ee8d1cSJulian Grajkowski  *
260678ee8d1cSJulian Grajkowski  * @retval CPA_STATUS_SUCCESS        Function executed successfully.
260778ee8d1cSJulian Grajkowski  * @retval CPA_STATUS_FAIL           Function failed.
260878ee8d1cSJulian Grajkowski  * @retval CPA_STATUS_INVALID_PARAM  Invalid parameter passed in.
260978ee8d1cSJulian Grajkowski  * @retval CPA_STATUS_UNSUPPORTED    Function is not supported.
261078ee8d1cSJulian Grajkowski  *
261178ee8d1cSJulian Grajkowski  * @pre
261278ee8d1cSJulian Grajkowski  *      None
261378ee8d1cSJulian Grajkowski  * @post
261478ee8d1cSJulian Grajkowski  *      None
261578ee8d1cSJulian Grajkowski  * @note
261678ee8d1cSJulian Grajkowski  *      This function operates in a synchronous manner and no asynchronous
261778ee8d1cSJulian Grajkowski  *      callback will be generated
261878ee8d1cSJulian Grajkowski  *
261978ee8d1cSJulian Grajkowski  * @see
262078ee8d1cSJulian Grajkowski  *      cpaDcGetInstances
262178ee8d1cSJulian Grajkowski  *
262278ee8d1cSJulian Grajkowski  *****************************************************************************/
262378ee8d1cSJulian Grajkowski CpaStatus
262478ee8d1cSJulian Grajkowski cpaDcGetNumInstances(Cpa16U* pNumInstances);
262578ee8d1cSJulian Grajkowski 
262678ee8d1cSJulian Grajkowski /**
262778ee8d1cSJulian Grajkowski  *****************************************************************************
262878ee8d1cSJulian Grajkowski  * @ingroup cpaDc
262978ee8d1cSJulian Grajkowski  *      Get the handles to the device instances that are supported by the
263078ee8d1cSJulian Grajkowski  *      API implementation.
263178ee8d1cSJulian Grajkowski  *
263278ee8d1cSJulian Grajkowski  * @description
263378ee8d1cSJulian Grajkowski  *
263478ee8d1cSJulian Grajkowski  *      This function will return handles to the device instances that are
263578ee8d1cSJulian Grajkowski  *      supported by an implementation of the compression API. These instance
263678ee8d1cSJulian Grajkowski  *      handles can then be used as input parameters with other compression API
263778ee8d1cSJulian Grajkowski  *      functions.
263878ee8d1cSJulian Grajkowski  *
263978ee8d1cSJulian Grajkowski  *      This function will populate an array that has been allocated by the
264078ee8d1cSJulian Grajkowski  *      caller. The size of this API is determined by the
264178ee8d1cSJulian Grajkowski  *      cpaDcGetNumInstances() function.
264278ee8d1cSJulian Grajkowski  *
264378ee8d1cSJulian Grajkowski  * @context
264478ee8d1cSJulian Grajkowski  *      This function MUST NOT be called from an interrupt context as it MAY
264578ee8d1cSJulian Grajkowski  *      sleep.
264678ee8d1cSJulian Grajkowski  * @assumptions
264778ee8d1cSJulian Grajkowski  *      None
264878ee8d1cSJulian Grajkowski  * @sideEffects
264978ee8d1cSJulian Grajkowski  *      None
265078ee8d1cSJulian Grajkowski  * @blocking
265178ee8d1cSJulian Grajkowski  *      This function is synchronous and blocking.
265278ee8d1cSJulian Grajkowski  * @reentrant
265378ee8d1cSJulian Grajkowski  *      No
265478ee8d1cSJulian Grajkowski  * @threadSafe
265578ee8d1cSJulian Grajkowski  *      Yes
265678ee8d1cSJulian Grajkowski  *
265778ee8d1cSJulian Grajkowski  * @param[in]  numInstances     Size of the array.
265878ee8d1cSJulian Grajkowski  * @param[out] dcInstances          Pointer to where the instance
265978ee8d1cSJulian Grajkowski  *                                   handles will be written.
266078ee8d1cSJulian Grajkowski  *
266178ee8d1cSJulian Grajkowski  * @retval CPA_STATUS_SUCCESS        Function executed successfully.
266278ee8d1cSJulian Grajkowski  * @retval CPA_STATUS_FAIL           Function failed.
266378ee8d1cSJulian Grajkowski  * @retval CPA_STATUS_INVALID_PARAM  Invalid parameter passed in.
266478ee8d1cSJulian Grajkowski  * @retval CPA_STATUS_UNSUPPORTED    Function is not supported.
266578ee8d1cSJulian Grajkowski  *
266678ee8d1cSJulian Grajkowski  * @pre
266778ee8d1cSJulian Grajkowski  *      None
266878ee8d1cSJulian Grajkowski  * @post
266978ee8d1cSJulian Grajkowski  *      None
267078ee8d1cSJulian Grajkowski  * @note
267178ee8d1cSJulian Grajkowski  *      This function operates in a synchronous manner and no asynchronous
267278ee8d1cSJulian Grajkowski  *      callback will be generated
267378ee8d1cSJulian Grajkowski  *
267478ee8d1cSJulian Grajkowski  * @see
267578ee8d1cSJulian Grajkowski  *      cpaDcGetInstances
267678ee8d1cSJulian Grajkowski  *
267778ee8d1cSJulian Grajkowski  *****************************************************************************/
267878ee8d1cSJulian Grajkowski CpaStatus
267978ee8d1cSJulian Grajkowski cpaDcGetInstances(Cpa16U numInstances,
268078ee8d1cSJulian Grajkowski                         CpaInstanceHandle* dcInstances);
268178ee8d1cSJulian Grajkowski 
268278ee8d1cSJulian Grajkowski /**
268378ee8d1cSJulian Grajkowski  *****************************************************************************
268478ee8d1cSJulian Grajkowski  * @ingroup cpaDc
268578ee8d1cSJulian Grajkowski  *      Compression Component utility function to determine the number of
268678ee8d1cSJulian Grajkowski  *      intermediate buffers required by an implementation.
268778ee8d1cSJulian Grajkowski  *
268878ee8d1cSJulian Grajkowski  * @description
268978ee8d1cSJulian Grajkowski  *      This function will determine the number of intermediate buffer lists
269078ee8d1cSJulian Grajkowski  *      required by an implementation for a compression instance. These buffers
269178ee8d1cSJulian Grajkowski  *      should then be allocated and provided when calling @ref cpaDcStartInstance()
269278ee8d1cSJulian Grajkowski  *      to start a compression instance that will use dynamic compression.
269378ee8d1cSJulian Grajkowski  *
269478ee8d1cSJulian Grajkowski  * @context
269578ee8d1cSJulian Grajkowski  *      This function may sleep, and  MUST NOT be called in interrupt context.
269678ee8d1cSJulian Grajkowski  * @assumptions
269778ee8d1cSJulian Grajkowski  *      None
269878ee8d1cSJulian Grajkowski  * @sideEffects
269978ee8d1cSJulian Grajkowski  *      None
270078ee8d1cSJulian Grajkowski  * @blocking
270178ee8d1cSJulian Grajkowski  *      This function is synchronous and blocking.
270278ee8d1cSJulian Grajkowski  * @reentrant
270378ee8d1cSJulian Grajkowski  *      No
270478ee8d1cSJulian Grajkowski  * @threadSafe
270578ee8d1cSJulian Grajkowski  *      Yes
270678ee8d1cSJulian Grajkowski  * @param[in,out] instanceHandle        Handle to an instance of this API to be
270778ee8d1cSJulian Grajkowski  *                                      initialized.
270878ee8d1cSJulian Grajkowski  * @param[out]  pNumBuffers             When the function returns, this will
270978ee8d1cSJulian Grajkowski  *                                      specify the number of buffer lists that
271078ee8d1cSJulian Grajkowski  *                                      should be used as intermediate buffers
271178ee8d1cSJulian Grajkowski  *                                      when calling cpaDcStartInstance().
271278ee8d1cSJulian Grajkowski  *
271378ee8d1cSJulian Grajkowski  * @retval CPA_STATUS_SUCCESS       Function executed successfully.
271478ee8d1cSJulian Grajkowski  * @retval CPA_STATUS_FAIL          Function failed. Suggested course of action
271578ee8d1cSJulian Grajkowski  *                                  is to shutdown and restart.
271678ee8d1cSJulian Grajkowski  * @retval CPA_STATUS_UNSUPPORTED    Function is not supported.
271778ee8d1cSJulian Grajkowski  *
271878ee8d1cSJulian Grajkowski  * @pre
271978ee8d1cSJulian Grajkowski  *      None
272078ee8d1cSJulian Grajkowski  * @post
272178ee8d1cSJulian Grajkowski  *      None
272278ee8d1cSJulian Grajkowski  * @note
272378ee8d1cSJulian Grajkowski  *      Note that this is a synchronous function and has no completion callback
272478ee8d1cSJulian Grajkowski  *      associated with it.
272578ee8d1cSJulian Grajkowski  *
272678ee8d1cSJulian Grajkowski  * @see
272778ee8d1cSJulian Grajkowski  *      cpaDcStartInstance()
272878ee8d1cSJulian Grajkowski  *
272978ee8d1cSJulian Grajkowski  *****************************************************************************/
273078ee8d1cSJulian Grajkowski CpaStatus
273178ee8d1cSJulian Grajkowski cpaDcGetNumIntermediateBuffers(CpaInstanceHandle instanceHandle,
273278ee8d1cSJulian Grajkowski         Cpa16U *pNumBuffers);
273378ee8d1cSJulian Grajkowski 
273478ee8d1cSJulian Grajkowski /**
273578ee8d1cSJulian Grajkowski  *****************************************************************************
273678ee8d1cSJulian Grajkowski  * @ingroup cpaDc
273778ee8d1cSJulian Grajkowski  *      Compression Component Initialization and Start function.
273878ee8d1cSJulian Grajkowski  *
273978ee8d1cSJulian Grajkowski  * @description
274078ee8d1cSJulian Grajkowski  *      This function will initialize and start the compression component.
274178ee8d1cSJulian Grajkowski  *      It MUST be called before any other compress function is called. This
274278ee8d1cSJulian Grajkowski  *      function SHOULD be called only once (either for the very first time,
274378ee8d1cSJulian Grajkowski  *      or after an cpaDcStopInstance call which succeeded) per instance.
274478ee8d1cSJulian Grajkowski  *      Subsequent calls will have no effect.
274578ee8d1cSJulian Grajkowski  *
274678ee8d1cSJulian Grajkowski  *      If required by an implementation, this function can be provided with
274778ee8d1cSJulian Grajkowski  *      instance specific intermediate buffers.  The intent is to provide an
274878ee8d1cSJulian Grajkowski  *      instance specific location to store intermediate results during dynamic
274978ee8d1cSJulian Grajkowski  *      instance Huffman tree compression requests. The memory should be
275078ee8d1cSJulian Grajkowski  *      accessible by the compression engine. The buffers are to support
275178ee8d1cSJulian Grajkowski  *      deflate compression with dynamic Huffman Trees.  Each buffer list
275278ee8d1cSJulian Grajkowski  *      should be similar in size to twice the destination buffer size passed
275378ee8d1cSJulian Grajkowski  *      to the compress API. The number of intermediate buffer lists may vary
275478ee8d1cSJulian Grajkowski  *      between implementations and so @ref cpaDcGetNumIntermediateBuffers()
275578ee8d1cSJulian Grajkowski  *      should be called first to determine the number of intermediate
275678ee8d1cSJulian Grajkowski  *      buffers required by the implementation.
275778ee8d1cSJulian Grajkowski  *
275878ee8d1cSJulian Grajkowski  *      If not required, this parameter can be passed in as NULL.
275978ee8d1cSJulian Grajkowski  *
276078ee8d1cSJulian Grajkowski  * @context
276178ee8d1cSJulian Grajkowski  *      This function may sleep, and  MUST NOT be called in interrupt context.
276278ee8d1cSJulian Grajkowski  * @assumptions
276378ee8d1cSJulian Grajkowski  *      None
276478ee8d1cSJulian Grajkowski  * @sideEffects
276578ee8d1cSJulian Grajkowski  *      None
276678ee8d1cSJulian Grajkowski  * @blocking
276778ee8d1cSJulian Grajkowski  *      This function is synchronous and blocking.
276878ee8d1cSJulian Grajkowski  * @reentrant
276978ee8d1cSJulian Grajkowski  *      No
277078ee8d1cSJulian Grajkowski  * @threadSafe
277178ee8d1cSJulian Grajkowski  *      Yes
277278ee8d1cSJulian Grajkowski  * @param[in,out] instanceHandle        Handle to an instance of this API to be
277378ee8d1cSJulian Grajkowski  *                                      initialized.
277478ee8d1cSJulian Grajkowski  * @param[in]   numBuffers              Number of buffer lists represented by
277578ee8d1cSJulian Grajkowski  *                                      the pIntermediateBuffers parameter.
277678ee8d1cSJulian Grajkowski  *                                      Note: @ref cpaDcGetNumIntermediateBuffers()
277778ee8d1cSJulian Grajkowski  *                                      can be used to determine the number of
277878ee8d1cSJulian Grajkowski  *                                      intermediate buffers that an implementation
277978ee8d1cSJulian Grajkowski  *                                      requires.
278078ee8d1cSJulian Grajkowski  * @param[in]   pIntermediateBuffers    Optional pointer to Instance specific
278178ee8d1cSJulian Grajkowski  *                                      DRAM buffer.
278278ee8d1cSJulian Grajkowski  *
278378ee8d1cSJulian Grajkowski  * @retval CPA_STATUS_SUCCESS       Function executed successfully.
278478ee8d1cSJulian Grajkowski  * @retval CPA_STATUS_FAIL          Function failed. Suggested course of action
278578ee8d1cSJulian Grajkowski  *                                  is to shutdown and restart.
278678ee8d1cSJulian Grajkowski  * @retval CPA_STATUS_UNSUPPORTED    Function is not supported.
278778ee8d1cSJulian Grajkowski  *
278878ee8d1cSJulian Grajkowski  * @pre
278978ee8d1cSJulian Grajkowski  *      None
279078ee8d1cSJulian Grajkowski  * @post
279178ee8d1cSJulian Grajkowski  *      None
279278ee8d1cSJulian Grajkowski  * @note
279378ee8d1cSJulian Grajkowski  *      Note that this is a synchronous function and has no completion callback
279478ee8d1cSJulian Grajkowski  *      associated with it.
279578ee8d1cSJulian Grajkowski  *
279678ee8d1cSJulian Grajkowski  * @see
279778ee8d1cSJulian Grajkowski  *      cpaDcStopInstance()
279878ee8d1cSJulian Grajkowski  *      cpaDcGetNumIntermediateBuffers()
279978ee8d1cSJulian Grajkowski  *
280078ee8d1cSJulian Grajkowski  *****************************************************************************/
280178ee8d1cSJulian Grajkowski CpaStatus
280278ee8d1cSJulian Grajkowski cpaDcStartInstance(CpaInstanceHandle instanceHandle,
280378ee8d1cSJulian Grajkowski         Cpa16U numBuffers,
280478ee8d1cSJulian Grajkowski         CpaBufferList **pIntermediateBuffers);
280578ee8d1cSJulian Grajkowski 
280678ee8d1cSJulian Grajkowski /**
280778ee8d1cSJulian Grajkowski  *****************************************************************************
280878ee8d1cSJulian Grajkowski  * @ingroup cpaDc
280978ee8d1cSJulian Grajkowski  *      Compress Component Stop function.
281078ee8d1cSJulian Grajkowski  *
281178ee8d1cSJulian Grajkowski  * @description
281278ee8d1cSJulian Grajkowski  *      This function will stop the Compression component and free
281378ee8d1cSJulian Grajkowski  *      all system resources associated with it. The client MUST ensure that
281478ee8d1cSJulian Grajkowski  *      all outstanding operations have completed before calling this function.
281578ee8d1cSJulian Grajkowski  *      The recommended approach to ensure this is to deregister all session or
281678ee8d1cSJulian Grajkowski  *      callback handles before calling this function. If outstanding
281778ee8d1cSJulian Grajkowski  *      operations still exist when this function is invoked, the callback
281878ee8d1cSJulian Grajkowski  *      function for each of those operations will NOT be invoked and the
281978ee8d1cSJulian Grajkowski  *      shutdown will continue.  If the component is to be restarted, then a
282078ee8d1cSJulian Grajkowski  *      call to cpaDcStartInstance is required.
282178ee8d1cSJulian Grajkowski  *
282278ee8d1cSJulian Grajkowski  * @context
282378ee8d1cSJulian Grajkowski  *      This function may sleep, and so MUST NOT be called in interrupt
282478ee8d1cSJulian Grajkowski  *      context.
282578ee8d1cSJulian Grajkowski  * @assumptions
282678ee8d1cSJulian Grajkowski  *      None
282778ee8d1cSJulian Grajkowski  * @sideEffects
282878ee8d1cSJulian Grajkowski  *      None
282978ee8d1cSJulian Grajkowski  * @blocking
283078ee8d1cSJulian Grajkowski  *      This function is synchronous and blocking.
283178ee8d1cSJulian Grajkowski  * @reentrant
283278ee8d1cSJulian Grajkowski  *      No
283378ee8d1cSJulian Grajkowski  * @threadSafe
283478ee8d1cSJulian Grajkowski  *      Yes
283578ee8d1cSJulian Grajkowski  * @param[in] instanceHandle        Handle to an instance of this API to be
283678ee8d1cSJulian Grajkowski  *                                  shutdown.
283778ee8d1cSJulian Grajkowski  *
283878ee8d1cSJulian Grajkowski  * @retval CPA_STATUS_SUCCESS       Function executed successfully.
283978ee8d1cSJulian Grajkowski  * @retval CPA_STATUS_FAIL          Function failed. Suggested course of action
284078ee8d1cSJulian Grajkowski  *                                  is to ensure requests are not still being
284178ee8d1cSJulian Grajkowski  *                                  submitted and that all sessions are
284278ee8d1cSJulian Grajkowski  *                                  deregistered. If this does not help, then
284378ee8d1cSJulian Grajkowski  *                                  forcefully remove the component from the
284478ee8d1cSJulian Grajkowski  *                                  system.
284578ee8d1cSJulian Grajkowski  * @retval CPA_STATUS_UNSUPPORTED   Function is not supported.
284678ee8d1cSJulian Grajkowski  *
284778ee8d1cSJulian Grajkowski  * @pre
284878ee8d1cSJulian Grajkowski  *      The component has been initialized via cpaDcStartInstance
284978ee8d1cSJulian Grajkowski  * @post
285078ee8d1cSJulian Grajkowski  *      None
285178ee8d1cSJulian Grajkowski  * @note
285278ee8d1cSJulian Grajkowski  *      Note that this is a synchronous function and has no completion callback
285378ee8d1cSJulian Grajkowski  *      associated with it.
285478ee8d1cSJulian Grajkowski  *
285578ee8d1cSJulian Grajkowski  * @see
285678ee8d1cSJulian Grajkowski  *      cpaDcStartInstance()
285778ee8d1cSJulian Grajkowski  *
285878ee8d1cSJulian Grajkowski  *****************************************************************************/
285978ee8d1cSJulian Grajkowski CpaStatus
286078ee8d1cSJulian Grajkowski cpaDcStopInstance(CpaInstanceHandle instanceHandle);
286178ee8d1cSJulian Grajkowski 
286278ee8d1cSJulian Grajkowski 
286378ee8d1cSJulian Grajkowski /**
286478ee8d1cSJulian Grajkowski  *****************************************************************************
286578ee8d1cSJulian Grajkowski  * @ingroup cpaDc
286678ee8d1cSJulian Grajkowski  *      Function to get information on a particular instance.
286778ee8d1cSJulian Grajkowski  *
286878ee8d1cSJulian Grajkowski  * @description
286978ee8d1cSJulian Grajkowski  *      This function will provide instance specific information through a
287078ee8d1cSJulian Grajkowski  *      @ref CpaInstanceInfo2 structure.
287178ee8d1cSJulian Grajkowski  *
287278ee8d1cSJulian Grajkowski  * @context
287378ee8d1cSJulian Grajkowski  *      This function will be executed in a context that requires that sleeping
287478ee8d1cSJulian Grajkowski  *      MUST NOT be permitted.
287578ee8d1cSJulian Grajkowski  * @assumptions
287678ee8d1cSJulian Grajkowski  *      None
287778ee8d1cSJulian Grajkowski  * @sideEffects
287878ee8d1cSJulian Grajkowski  *      None
287978ee8d1cSJulian Grajkowski  * @blocking
288078ee8d1cSJulian Grajkowski  *      Yes
288178ee8d1cSJulian Grajkowski  * @reentrant
288278ee8d1cSJulian Grajkowski  *      No
288378ee8d1cSJulian Grajkowski  * @threadSafe
288478ee8d1cSJulian Grajkowski  *      Yes
288578ee8d1cSJulian Grajkowski  *
288678ee8d1cSJulian Grajkowski  * @param[in]  instanceHandle       Handle to an instance of this API to be
288778ee8d1cSJulian Grajkowski  *                                  initialized.
288878ee8d1cSJulian Grajkowski  * @param[out] pInstanceInfo2       Pointer to the memory location allocated by
288978ee8d1cSJulian Grajkowski  *                                  the client into which the CpaInstanceInfo2
289078ee8d1cSJulian Grajkowski  *                                  structure will be written.
289178ee8d1cSJulian Grajkowski  *
289278ee8d1cSJulian Grajkowski  * @retval CPA_STATUS_SUCCESS        Function executed successfully.
289378ee8d1cSJulian Grajkowski  * @retval CPA_STATUS_FAIL           Function failed.
289478ee8d1cSJulian Grajkowski  * @retval CPA_STATUS_INVALID_PARAM  Invalid parameter passed in.
289578ee8d1cSJulian Grajkowski  * @retval CPA_STATUS_UNSUPPORTED    Function is not supported.
289678ee8d1cSJulian Grajkowski  *
289778ee8d1cSJulian Grajkowski  * @pre
289878ee8d1cSJulian Grajkowski  *      The client has retrieved an instanceHandle from successive calls to
289978ee8d1cSJulian Grajkowski  *      @ref cpaDcGetNumInstances and @ref cpaDcGetInstances.
290078ee8d1cSJulian Grajkowski  * @post
290178ee8d1cSJulian Grajkowski  *      None
290278ee8d1cSJulian Grajkowski  * @note
290378ee8d1cSJulian Grajkowski  *      None
290478ee8d1cSJulian Grajkowski  * @see
290578ee8d1cSJulian Grajkowski  *      cpaDcGetNumInstances,
290678ee8d1cSJulian Grajkowski  *      cpaDcGetInstances,
290778ee8d1cSJulian Grajkowski  *      CpaInstanceInfo2
290878ee8d1cSJulian Grajkowski  *
290978ee8d1cSJulian Grajkowski  *****************************************************************************/
291078ee8d1cSJulian Grajkowski CpaStatus
291178ee8d1cSJulian Grajkowski cpaDcInstanceGetInfo2(const CpaInstanceHandle instanceHandle,
291278ee8d1cSJulian Grajkowski         CpaInstanceInfo2 * pInstanceInfo2);
291378ee8d1cSJulian Grajkowski 
291478ee8d1cSJulian Grajkowski /*****************************************************************************/
291578ee8d1cSJulian Grajkowski /* Instance Notification Functions                                           */
291678ee8d1cSJulian Grajkowski /*****************************************************************************/
291778ee8d1cSJulian Grajkowski /**
291878ee8d1cSJulian Grajkowski  *****************************************************************************
291978ee8d1cSJulian Grajkowski   * @ingroup cpaDc
292078ee8d1cSJulian Grajkowski  *      Callback function for instance notification support.
292178ee8d1cSJulian Grajkowski  *
292278ee8d1cSJulian Grajkowski  * @description
292378ee8d1cSJulian Grajkowski  *      This is the prototype for the instance notification callback function.
292478ee8d1cSJulian Grajkowski  *      The callback function is passed in as a parameter to the
292578ee8d1cSJulian Grajkowski  *      @ref cpaDcInstanceSetNotificationCb function.
292678ee8d1cSJulian Grajkowski  *
292778ee8d1cSJulian Grajkowski  * @context
292878ee8d1cSJulian Grajkowski  *      This function will be executed in a context that requires that sleeping
292978ee8d1cSJulian Grajkowski  *      MUST NOT be permitted.
293078ee8d1cSJulian Grajkowski  * @assumptions
293178ee8d1cSJulian Grajkowski  *      None
293278ee8d1cSJulian Grajkowski  * @sideEffects
293378ee8d1cSJulian Grajkowski  *      None
293478ee8d1cSJulian Grajkowski  * @blocking
293578ee8d1cSJulian Grajkowski  *      No
293678ee8d1cSJulian Grajkowski  * @reentrant
293778ee8d1cSJulian Grajkowski  *      No
293878ee8d1cSJulian Grajkowski  * @threadSafe
293978ee8d1cSJulian Grajkowski  *      Yes
294078ee8d1cSJulian Grajkowski  *
294178ee8d1cSJulian Grajkowski  * @param[in] instanceHandle   Instance handle.
294278ee8d1cSJulian Grajkowski  * @param[in] pCallbackTag     Opaque value provided by user while making
294378ee8d1cSJulian Grajkowski  *                             individual function calls.
294478ee8d1cSJulian Grajkowski  * @param[in] instanceEvent    The event that will trigger this function to
294578ee8d1cSJulian Grajkowski  *                             get invoked.
294678ee8d1cSJulian Grajkowski  *
294778ee8d1cSJulian Grajkowski  * @retval
294878ee8d1cSJulian Grajkowski  *      None
294978ee8d1cSJulian Grajkowski  * @pre
295078ee8d1cSJulian Grajkowski  *      Component has been initialized and the notification function has been
295178ee8d1cSJulian Grajkowski  *  set via the cpaDcInstanceSetNotificationCb function.
295278ee8d1cSJulian Grajkowski  * @post
295378ee8d1cSJulian Grajkowski  *      None
295478ee8d1cSJulian Grajkowski  * @note
295578ee8d1cSJulian Grajkowski  *      None
295678ee8d1cSJulian Grajkowski  * @see
295778ee8d1cSJulian Grajkowski  *      cpaDcInstanceSetNotificationCb(),
295878ee8d1cSJulian Grajkowski  *
295978ee8d1cSJulian Grajkowski  *****************************************************************************/
296078ee8d1cSJulian Grajkowski typedef void (*CpaDcInstanceNotificationCbFunc)(
296178ee8d1cSJulian Grajkowski         const CpaInstanceHandle instanceHandle,
296278ee8d1cSJulian Grajkowski         void * pCallbackTag,
296378ee8d1cSJulian Grajkowski         const CpaInstanceEvent instanceEvent);
296478ee8d1cSJulian Grajkowski 
296578ee8d1cSJulian Grajkowski /**
296678ee8d1cSJulian Grajkowski  *****************************************************************************
296778ee8d1cSJulian Grajkowski  * @ingroup cpaDc
296878ee8d1cSJulian Grajkowski  *      Subscribe for instance notifications.
296978ee8d1cSJulian Grajkowski  *
297078ee8d1cSJulian Grajkowski  * @description
297178ee8d1cSJulian Grajkowski  *      Clients of the CpaDc interface can subscribe for instance notifications
297278ee8d1cSJulian Grajkowski  *      by registering a @ref CpaDcInstanceNotificationCbFunc function.
297378ee8d1cSJulian Grajkowski  *
297478ee8d1cSJulian Grajkowski  * @context
297578ee8d1cSJulian Grajkowski  *      This function may be called from any context.
297678ee8d1cSJulian Grajkowski  * @assumptions
297778ee8d1cSJulian Grajkowski  *      None
297878ee8d1cSJulian Grajkowski  * @sideEffects
297978ee8d1cSJulian Grajkowski  *      None
298078ee8d1cSJulian Grajkowski  * @blocking
298178ee8d1cSJulian Grajkowski  *      No
298278ee8d1cSJulian Grajkowski  * @reentrant
298378ee8d1cSJulian Grajkowski  *      No
298478ee8d1cSJulian Grajkowski  * @threadSafe
298578ee8d1cSJulian Grajkowski  *      Yes
298678ee8d1cSJulian Grajkowski  *
298778ee8d1cSJulian Grajkowski  * @param[in] instanceHandle           Instance handle.
298878ee8d1cSJulian Grajkowski  * @param[in] pInstanceNotificationCb  Instance notification callback
298978ee8d1cSJulian Grajkowski  *                                     function pointer.
299078ee8d1cSJulian Grajkowski  * @param[in] pCallbackTag             Opaque value provided by user while
299178ee8d1cSJulian Grajkowski  *                                     making individual function calls.
299278ee8d1cSJulian Grajkowski  *
299378ee8d1cSJulian Grajkowski  * @retval CPA_STATUS_SUCCESS          Function executed successfully.
299478ee8d1cSJulian Grajkowski  * @retval CPA_STATUS_FAIL             Function failed.
299578ee8d1cSJulian Grajkowski  * @retval CPA_STATUS_INVALID_PARAM    Invalid parameter passed in.
299678ee8d1cSJulian Grajkowski  * @retval CPA_STATUS_UNSUPPORTED    Function is not supported.
299778ee8d1cSJulian Grajkowski  *
299878ee8d1cSJulian Grajkowski  * @pre
299978ee8d1cSJulian Grajkowski  *      Instance has been initialized.
300078ee8d1cSJulian Grajkowski  * @post
300178ee8d1cSJulian Grajkowski  *      None
300278ee8d1cSJulian Grajkowski  * @note
300378ee8d1cSJulian Grajkowski  *      None
300478ee8d1cSJulian Grajkowski  * @see
300578ee8d1cSJulian Grajkowski  *      CpaDcInstanceNotificationCbFunc
300678ee8d1cSJulian Grajkowski  *
300778ee8d1cSJulian Grajkowski  *****************************************************************************/
300878ee8d1cSJulian Grajkowski CpaStatus
300978ee8d1cSJulian Grajkowski cpaDcInstanceSetNotificationCb(
301078ee8d1cSJulian Grajkowski         const CpaInstanceHandle instanceHandle,
301178ee8d1cSJulian Grajkowski         const CpaDcInstanceNotificationCbFunc pInstanceNotificationCb,
301278ee8d1cSJulian Grajkowski         void *pCallbackTag);
301378ee8d1cSJulian Grajkowski 
301478ee8d1cSJulian Grajkowski 
301578ee8d1cSJulian Grajkowski /**
301678ee8d1cSJulian Grajkowski  *****************************************************************************
301778ee8d1cSJulian Grajkowski  * @ingroup cpaDc
301878ee8d1cSJulian Grajkowski  *      Get the size of the memory required to hold the session information.
301978ee8d1cSJulian Grajkowski  *
302078ee8d1cSJulian Grajkowski  * @description
302178ee8d1cSJulian Grajkowski  *
302278ee8d1cSJulian Grajkowski  *      The client of the Data Compression API is responsible for
302378ee8d1cSJulian Grajkowski  *      allocating sufficient memory to hold session information and the context
302478ee8d1cSJulian Grajkowski  *      data. This function provides a means for determining the size of the
302578ee8d1cSJulian Grajkowski  *      session information and the size of the context data.
302678ee8d1cSJulian Grajkowski  *
302778ee8d1cSJulian Grajkowski  * @context
302878ee8d1cSJulian Grajkowski  *      No restrictions
302978ee8d1cSJulian Grajkowski  * @assumptions
303078ee8d1cSJulian Grajkowski  *      None
303178ee8d1cSJulian Grajkowski  * @sideEffects
303278ee8d1cSJulian Grajkowski  *      None
303378ee8d1cSJulian Grajkowski  * @blocking
303478ee8d1cSJulian Grajkowski  *      No
303578ee8d1cSJulian Grajkowski  * @reentrant
303678ee8d1cSJulian Grajkowski  *      No
303778ee8d1cSJulian Grajkowski  * @threadSafe
303878ee8d1cSJulian Grajkowski  *      Yes
303978ee8d1cSJulian Grajkowski  *
304078ee8d1cSJulian Grajkowski  * @param[in] dcInstance            Instance handle.
304178ee8d1cSJulian Grajkowski  * @param[in] pSessionData          Pointer to a user instantiated structure
304278ee8d1cSJulian Grajkowski  *                                  containing session data.
304378ee8d1cSJulian Grajkowski  * @param[out] pSessionSize         On return, this parameter will be the size
304478ee8d1cSJulian Grajkowski  *                                  of the memory that will be
304578ee8d1cSJulian Grajkowski  *                                  required by cpaDcInitSession() for session
304678ee8d1cSJulian Grajkowski  *                                  data.
304778ee8d1cSJulian Grajkowski  * @param[out] pContextSize         On return, this parameter will be the size
304878ee8d1cSJulian Grajkowski  *                                  of the memory that will be required
304978ee8d1cSJulian Grajkowski  *                                  for context data.  Context data is
305078ee8d1cSJulian Grajkowski  *                                  save/restore data including history and
305178ee8d1cSJulian Grajkowski  *                                  any implementation specific data that is
305278ee8d1cSJulian Grajkowski  *                                  required for a save/restore operation.
305378ee8d1cSJulian Grajkowski  *
305478ee8d1cSJulian Grajkowski  * @retval CPA_STATUS_SUCCESS        Function executed successfully.
305578ee8d1cSJulian Grajkowski  * @retval CPA_STATUS_FAIL           Function failed.
305678ee8d1cSJulian Grajkowski  * @retval CPA_STATUS_INVALID_PARAM  Invalid parameter passed in.
305778ee8d1cSJulian Grajkowski  * @retval CPA_STATUS_UNSUPPORTED    Function is not supported.
305878ee8d1cSJulian Grajkowski  *
305978ee8d1cSJulian Grajkowski  * @pre
306078ee8d1cSJulian Grajkowski  *      None
306178ee8d1cSJulian Grajkowski  * @post
306278ee8d1cSJulian Grajkowski  *      None
306378ee8d1cSJulian Grajkowski  * @note
306478ee8d1cSJulian Grajkowski  *      Only a synchronous version of this function is provided.
306578ee8d1cSJulian Grajkowski  *
306678ee8d1cSJulian Grajkowski  *      It is expected that context data is comprised of the history and
306778ee8d1cSJulian Grajkowski  *      any data stores that are specific to the history such as linked
306878ee8d1cSJulian Grajkowski  *      lists or hash tables.
306978ee8d1cSJulian Grajkowski  *      For stateless sessions the context size returned from this function
307078ee8d1cSJulian Grajkowski  *      will be zero. For stateful sessions the context size returned will
3071266b0663SKrzysztof Zdziarski  *      depend on the session setup data and may be zero.
307278ee8d1cSJulian Grajkowski  *
307378ee8d1cSJulian Grajkowski  *      Session data is expected to include interim checksum values, various
307478ee8d1cSJulian Grajkowski  *      counters and other session related data that needs to persist
307578ee8d1cSJulian Grajkowski  *      between invocations.
307678ee8d1cSJulian Grajkowski  *      For a given implementation of this API, it is safe to assume that
307778ee8d1cSJulian Grajkowski  *      cpaDcGetSessionSize() will always return the same session size and
307878ee8d1cSJulian Grajkowski  *      that the size will not be different for different setup data
307978ee8d1cSJulian Grajkowski  *      parameters. However, it should be noted that the size may change:
308078ee8d1cSJulian Grajkowski  *       (1) between different implementations of the API (e.g. between software
308178ee8d1cSJulian Grajkowski  *           and hardware implementations or between different hardware
308278ee8d1cSJulian Grajkowski  *           implementations)
308378ee8d1cSJulian Grajkowski  *       (2) between different releases of the same API implementation.
308478ee8d1cSJulian Grajkowski  *
308578ee8d1cSJulian Grajkowski  * @see
308678ee8d1cSJulian Grajkowski  *      cpaDcInitSession()
308778ee8d1cSJulian Grajkowski  *
308878ee8d1cSJulian Grajkowski  *****************************************************************************/
308978ee8d1cSJulian Grajkowski CpaStatus
309078ee8d1cSJulian Grajkowski cpaDcGetSessionSize(CpaInstanceHandle dcInstance,
309178ee8d1cSJulian Grajkowski         CpaDcSessionSetupData* pSessionData,
309278ee8d1cSJulian Grajkowski         Cpa32U* pSessionSize, Cpa32U* pContextSize );
309378ee8d1cSJulian Grajkowski 
309478ee8d1cSJulian Grajkowski /**
309578ee8d1cSJulian Grajkowski  *****************************************************************************
309678ee8d1cSJulian Grajkowski  * @ingroup cpaDc
309778ee8d1cSJulian Grajkowski  *      Function to return the size of the memory which must be allocated for
309878ee8d1cSJulian Grajkowski  *      the pPrivateMetaData member of CpaBufferList.
309978ee8d1cSJulian Grajkowski  *
310078ee8d1cSJulian Grajkowski  * @description
310178ee8d1cSJulian Grajkowski  *      This function is used to obtain the size (in bytes) required to allocate
310278ee8d1cSJulian Grajkowski  *      a buffer descriptor for the pPrivateMetaData member in the
310378ee8d1cSJulian Grajkowski  *      CpaBufferList structure.
310478ee8d1cSJulian Grajkowski  *      Should the function return zero then no meta data is required for the
310578ee8d1cSJulian Grajkowski  *      buffer list.
310678ee8d1cSJulian Grajkowski  *
310778ee8d1cSJulian Grajkowski  * @context
310878ee8d1cSJulian Grajkowski  *      This function may be called from any context.
310978ee8d1cSJulian Grajkowski  * @assumptions
311078ee8d1cSJulian Grajkowski  *      None
311178ee8d1cSJulian Grajkowski  * @sideEffects
311278ee8d1cSJulian Grajkowski  *      None
311378ee8d1cSJulian Grajkowski  * @blocking
311478ee8d1cSJulian Grajkowski  *      No
311578ee8d1cSJulian Grajkowski  * @reentrant
311678ee8d1cSJulian Grajkowski  *      No
311778ee8d1cSJulian Grajkowski  * @threadSafe
311878ee8d1cSJulian Grajkowski  *      Yes
311978ee8d1cSJulian Grajkowski  *
312078ee8d1cSJulian Grajkowski  * @param[in]  instanceHandle      Handle to an instance of this API.
312178ee8d1cSJulian Grajkowski  * @param[in]  numBuffers          The number of pointers in the CpaBufferList.
312278ee8d1cSJulian Grajkowski  *                                 This is the maximum number of CpaFlatBuffers
312378ee8d1cSJulian Grajkowski  *                                 which may be contained in this CpaBufferList.
312478ee8d1cSJulian Grajkowski  * @param[out] pSizeInBytes        Pointer to the size in bytes of memory to be
312578ee8d1cSJulian Grajkowski  *                                 allocated when the client wishes to allocate
312678ee8d1cSJulian Grajkowski  *                                 a cpaFlatBuffer.
312778ee8d1cSJulian Grajkowski  *
312878ee8d1cSJulian Grajkowski  * @retval CPA_STATUS_SUCCESS        Function executed successfully.
312978ee8d1cSJulian Grajkowski  * @retval CPA_STATUS_FAIL           Function failed.
313078ee8d1cSJulian Grajkowski  * @retval CPA_STATUS_INVALID_PARAM  Invalid parameter passed in.
313178ee8d1cSJulian Grajkowski  * @retval CPA_STATUS_UNSUPPORTED    Function is not supported.
313278ee8d1cSJulian Grajkowski  *
313378ee8d1cSJulian Grajkowski  * @pre
313478ee8d1cSJulian Grajkowski  *      None
313578ee8d1cSJulian Grajkowski  * @post
313678ee8d1cSJulian Grajkowski  *      None
313778ee8d1cSJulian Grajkowski  * @note
313878ee8d1cSJulian Grajkowski  *      None
313978ee8d1cSJulian Grajkowski  * @see
314078ee8d1cSJulian Grajkowski  *      cpaDcGetInstances()
314178ee8d1cSJulian Grajkowski  *
314278ee8d1cSJulian Grajkowski  *****************************************************************************/
314378ee8d1cSJulian Grajkowski CpaStatus
314478ee8d1cSJulian Grajkowski cpaDcBufferListGetMetaSize(const CpaInstanceHandle instanceHandle,
314578ee8d1cSJulian Grajkowski         Cpa32U numBuffers,
314678ee8d1cSJulian Grajkowski         Cpa32U *pSizeInBytes);
314778ee8d1cSJulian Grajkowski 
314878ee8d1cSJulian Grajkowski 
314978ee8d1cSJulian Grajkowski /**
315078ee8d1cSJulian Grajkowski  *****************************************************************************
315178ee8d1cSJulian Grajkowski  * @ingroup cpaDc
315278ee8d1cSJulian Grajkowski  *      Function to return a string indicating the specific error that occurred
315378ee8d1cSJulian Grajkowski  *      within the system.
315478ee8d1cSJulian Grajkowski  *
315578ee8d1cSJulian Grajkowski  * @description
315678ee8d1cSJulian Grajkowski  *      When a function returns any error including CPA_STATUS_SUCCESS, the
315778ee8d1cSJulian Grajkowski  *      client can invoke this function to get a string which describes the
315878ee8d1cSJulian Grajkowski  *      general error condition, and if available additional information on
315978ee8d1cSJulian Grajkowski  *      the specific error.
316078ee8d1cSJulian Grajkowski  *      The Client MUST allocate CPA_STATUS_MAX_STR_LENGTH_IN_BYTES bytes for  the buffer
316178ee8d1cSJulian Grajkowski  *      string.
316278ee8d1cSJulian Grajkowski  *
316378ee8d1cSJulian Grajkowski  * @context
316478ee8d1cSJulian Grajkowski  *      This function may be called from any context.
316578ee8d1cSJulian Grajkowski  * @assumptions
316678ee8d1cSJulian Grajkowski  *      None
316778ee8d1cSJulian Grajkowski  * @sideEffects
316878ee8d1cSJulian Grajkowski  *      None
316978ee8d1cSJulian Grajkowski  * @blocking
317078ee8d1cSJulian Grajkowski  *      No
317178ee8d1cSJulian Grajkowski  * @reentrant
317278ee8d1cSJulian Grajkowski  *      No
317378ee8d1cSJulian Grajkowski  * @threadSafe
317478ee8d1cSJulian Grajkowski  *      Yes
317578ee8d1cSJulian Grajkowski  *
317678ee8d1cSJulian Grajkowski  * @param[in] dcInstance        Handle to an instance of this API.
317778ee8d1cSJulian Grajkowski  * @param[in] errStatus         The error condition that occurred.
317878ee8d1cSJulian Grajkowski  * @param[in,out] pStatusText   Pointer to the string buffer that will
317978ee8d1cSJulian Grajkowski  *                              be updated with the status text. The invoking
318078ee8d1cSJulian Grajkowski  *                              application MUST allocate this buffer to be
318178ee8d1cSJulian Grajkowski  *                              exactly CPA_STATUS_MAX_STR_LENGTH_IN_BYTES.
318278ee8d1cSJulian Grajkowski  *
318378ee8d1cSJulian Grajkowski  * @retval CPA_STATUS_SUCCESS       Function executed successfully.
318478ee8d1cSJulian Grajkowski  * @retval CPA_STATUS_FAIL          Function failed. Note, in this scenario
318578ee8d1cSJulian Grajkowski  *                                  it is INVALID to call this function a
318678ee8d1cSJulian Grajkowski  *                                  second time.
318778ee8d1cSJulian Grajkowski  * @retval CPA_STATUS_INVALID_PARAM Invalid parameter passed in.
318878ee8d1cSJulian Grajkowski  * @retval CPA_STATUS_UNSUPPORTED    Function is not supported.
318978ee8d1cSJulian Grajkowski  *
319078ee8d1cSJulian Grajkowski  * @pre
319178ee8d1cSJulian Grajkowski  *      None
319278ee8d1cSJulian Grajkowski  * @post
319378ee8d1cSJulian Grajkowski  *      None
319478ee8d1cSJulian Grajkowski  * @note
319578ee8d1cSJulian Grajkowski  *      None
319678ee8d1cSJulian Grajkowski  * @see
319778ee8d1cSJulian Grajkowski  *      CpaStatus
319878ee8d1cSJulian Grajkowski  *
319978ee8d1cSJulian Grajkowski  *****************************************************************************/
320078ee8d1cSJulian Grajkowski 
320178ee8d1cSJulian Grajkowski CpaStatus
320278ee8d1cSJulian Grajkowski cpaDcGetStatusText(const CpaInstanceHandle dcInstance,
320378ee8d1cSJulian Grajkowski                    const CpaStatus errStatus,
320478ee8d1cSJulian Grajkowski                    Cpa8S * pStatusText);
320578ee8d1cSJulian Grajkowski 
320678ee8d1cSJulian Grajkowski 
320778ee8d1cSJulian Grajkowski /**
320878ee8d1cSJulian Grajkowski  *****************************************************************************
320978ee8d1cSJulian Grajkowski  * @ingroup cpaDc
321078ee8d1cSJulian Grajkowski  *      Set Address Translation function
321178ee8d1cSJulian Grajkowski  *
321278ee8d1cSJulian Grajkowski  * @description
321378ee8d1cSJulian Grajkowski  *      This function is used to set the virtual to physical address
321478ee8d1cSJulian Grajkowski  *      translation routine for the instance. The specified routine
321578ee8d1cSJulian Grajkowski  *      is used by the instance to perform any required translation of
321678ee8d1cSJulian Grajkowski  *      a virtual address to a physical address. If the application
321778ee8d1cSJulian Grajkowski  *      does not invoke this function, then the instance will use its
321878ee8d1cSJulian Grajkowski  *      default method, such as virt2phys, for address translation.
321978ee8d1cSJulian Grajkowski  *
322078ee8d1cSJulian Grajkowski  * @assumptions
322178ee8d1cSJulian Grajkowski  *      None
322278ee8d1cSJulian Grajkowski  * @sideEffects
322378ee8d1cSJulian Grajkowski  *      None
322478ee8d1cSJulian Grajkowski  * @blocking
322578ee8d1cSJulian Grajkowski  *      This function is synchronous and blocking.
322678ee8d1cSJulian Grajkowski  * @reentrant
322778ee8d1cSJulian Grajkowski  *      No
322878ee8d1cSJulian Grajkowski  * @threadSafe
322978ee8d1cSJulian Grajkowski  *      Yes
323078ee8d1cSJulian Grajkowski  *
323178ee8d1cSJulian Grajkowski  * @param[in] instanceHandle         Data Compression API instance handle.
323278ee8d1cSJulian Grajkowski  * @param[in] virtual2Physical       Routine that performs virtual to
323378ee8d1cSJulian Grajkowski  *                                    physical address translation.
323478ee8d1cSJulian Grajkowski  * @retval CPA_STATUS_SUCCESS        Function executed successfully.
323578ee8d1cSJulian Grajkowski  * @retval CPA_STATUS_FAIL           Function failed.
323678ee8d1cSJulian Grajkowski  * @retval CPA_STATUS_INVALID_PARAM  Invalid parameter passed in.
323778ee8d1cSJulian Grajkowski  * @retval CPA_STATUS_UNSUPPORTED    Function is not supported.
323878ee8d1cSJulian Grajkowski  *
323978ee8d1cSJulian Grajkowski  * @pre
324078ee8d1cSJulian Grajkowski  *      None
324178ee8d1cSJulian Grajkowski  * @post
324278ee8d1cSJulian Grajkowski  *      None
324378ee8d1cSJulian Grajkowski  * @see
324478ee8d1cSJulian Grajkowski  *      None
324578ee8d1cSJulian Grajkowski  *
324678ee8d1cSJulian Grajkowski  *****************************************************************************/
324778ee8d1cSJulian Grajkowski CpaStatus
324878ee8d1cSJulian Grajkowski cpaDcSetAddressTranslation(const CpaInstanceHandle instanceHandle,
324978ee8d1cSJulian Grajkowski                            CpaVirtualToPhysical virtual2Physical);
325078ee8d1cSJulian Grajkowski #ifdef __cplusplus
325178ee8d1cSJulian Grajkowski } /* close the extern "C" { */
325278ee8d1cSJulian Grajkowski #endif
325378ee8d1cSJulian Grajkowski 
325478ee8d1cSJulian Grajkowski #endif /* CPA_DC_H */
3255