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