The Design and Implementation of the FreeBSD Operating System, Second Edition
Now available: The Design and Implementation of the FreeBSD Operating System (Second Edition)


[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ] [ list types ] [ track identifier ]

FreeBSD/Linux Kernel Cross Reference
sys/dev/qat/qat_api/include/dc/cpa_dc.h

Version: -  FREEBSD  -  FREEBSD-13-STABLE  -  FREEBSD-13-0  -  FREEBSD-12-STABLE  -  FREEBSD-12-0  -  FREEBSD-11-STABLE  -  FREEBSD-11-0  -  FREEBSD-10-STABLE  -  FREEBSD-10-0  -  FREEBSD-9-STABLE  -  FREEBSD-9-0  -  FREEBSD-8-STABLE  -  FREEBSD-8-0  -  FREEBSD-7-STABLE  -  FREEBSD-7-0  -  FREEBSD-6-STABLE  -  FREEBSD-6-0  -  FREEBSD-5-STABLE  -  FREEBSD-5-0  -  FREEBSD-4-STABLE  -  FREEBSD-3-STABLE  -  FREEBSD22  -  l41  -  OPENBSD  -  linux-2.6  -  MK84  -  PLAN9  -  xnu-8792 
SearchContext: -  none  -  3  -  10 

    1 /****************************************************************************
    2  *
    3  *   BSD LICENSE
    4  * 
    5  *   Copyright(c) 2007-2022 Intel Corporation. All rights reserved.
    6  *   All rights reserved.
    7  * 
    8  *   Redistribution and use in source and binary forms, with or without
    9  *   modification, are permitted provided that the following conditions
   10  *   are met:
   11  * 
   12  *     * Redistributions of source code must retain the above copyright
   13  *       notice, this list of conditions and the following disclaimer.
   14  *     * Redistributions in binary form must reproduce the above copyright
   15  *       notice, this list of conditions and the following disclaimer in
   16  *       the documentation and/or other materials provided with the
   17  *       distribution.
   18  *     * Neither the name of Intel Corporation nor the names of its
   19  *       contributors may be used to endorse or promote products derived
   20  *       from this software without specific prior written permission.
   21  * 
   22  *   THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
   23  *   "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
   24  *   LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
   25  *   A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
   26  *   OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
   27  *   SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
   28  *   LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
   29  *   DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
   30  *   THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
   31  *   (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
   32  *   OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
   33  * 
   34  *
   35  ***************************************************************************/
   36 
   37 /*
   38  *****************************************************************************
   39  * Doxygen group definitions
   40  ****************************************************************************/
   41 
   42 /**
   43  *****************************************************************************
   44  * @file cpa_dc.h
   45  *
   46  * @defgroup cpaDc Data Compression API
   47  *
   48  * @ingroup cpa
   49  *
   50  * @description
   51  *      These functions specify the API for Data Compression operations.
   52  *
   53  * @remarks
   54  *
   55  *
   56  *****************************************************************************/
   57 
   58 #ifndef CPA_DC_H
   59 #define CPA_DC_H
   60 
   61 #ifdef __cplusplus
   62 extern"C" {
   63 #endif
   64 
   65 
   66 #ifndef CPA_H
   67 #include "cpa.h"
   68 #endif
   69 
   70 /**
   71  *****************************************************************************
   72  * @ingroup cpaDc
   73  *      CPA Dc Major Version Number
   74  * @description
   75  *      The CPA_DC API major version number. This number will be incremented
   76  *      when significant churn to the API has occurred. The combination of the
   77  *      major and minor number definitions represent the complete version number
   78  *      for this interface.
   79  *
   80  *****************************************************************************/
   81 #define CPA_DC_API_VERSION_NUM_MAJOR (2)
   82 
   83 /**
   84  *****************************************************************************
   85  * @ingroup cpaDc
   86  *       CPA DC Minor Version Number
   87  * @description
   88  *      The CPA_DC API minor version number. This number will be incremented
   89  *      when minor changes to the API has occurred. The combination of the major
   90  *      and minor number definitions represent the complete version number for
   91  *      this interface.
   92  *
   93  *****************************************************************************/
   94 #define CPA_DC_API_VERSION_NUM_MINOR (2)
   95 
   96 /**
   97  *****************************************************************************
   98  * @ingroup cpaDc
   99  *      Compression API session handle type
  100  *
  101  * @description
  102  *      Handle used to uniquely identify a Compression API session handle. This
  103  *      handle is established upon registration with the API using
  104  *      cpaDcInitSession().
  105  *
  106  *
  107  *
  108  *****************************************************************************/
  109 typedef void * CpaDcSessionHandle;
  110 
  111 
  112 /**
  113  *****************************************************************************
  114  * @ingroup cpaDc
  115  *      Supported file types
  116  *
  117  * @description
  118  *      This enumerated lists identified file types.  Used to select Huffman
  119  *      trees.
  120  *      File types are associated with Precompiled Huffman Trees.
  121  *
  122  * @deprecated
  123  *      As of v1.6 of the Compression API, this enum has been deprecated.
  124  *
  125  *****************************************************************************/
  126 typedef enum _CpaDcFileType
  127 {
  128     CPA_DC_FT_ASCII,
  129     /**< ASCII File Type */
  130     CPA_DC_FT_CSS,
  131     /**< Cascading Style Sheet File Type  */
  132     CPA_DC_FT_HTML,
  133     /**< HTML or XML (or similar) file type */
  134     CPA_DC_FT_JAVA,
  135     /**< File Java code or similar */
  136     CPA_DC_FT_OTHER
  137     /**< Other file types */
  138 } CpaDcFileType;
  139 /**
  140  *****************************************************************************
  141  * @ingroup cpaDc
  142  *      Supported flush flags
  143  *
  144  * @description
  145  *      This enumerated list identifies the types of flush that can be
  146  *      specified for stateful and stateless cpaDcCompressData and
  147  *      cpaDcDecompressData functions.
  148  *
  149  *****************************************************************************/
  150 typedef enum _CpaDcFlush
  151 {
  152     CPA_DC_FLUSH_NONE = 0,
  153     /**< No flush request. */
  154     CPA_DC_FLUSH_FINAL,
  155     /**< Indicates that the input buffer contains all of the data for
  156     the compression session allowing any buffered data to be released.
  157     For Deflate, BFINAL is set in the compression header.*/
  158     CPA_DC_FLUSH_SYNC,
  159     /**< Used for stateful deflate compression to indicate that all pending
  160     output is flushed, byte aligned, to the output buffer. The session state
  161     is not reset.*/
  162     CPA_DC_FLUSH_FULL
  163     /**< Used for deflate compression to indicate that all pending output is
  164     flushed to the output buffer and the session state is reset.*/
  165 } CpaDcFlush;
  166 /**
  167  *****************************************************************************
  168  * @ingroup cpaDc
  169  *      Supported Huffman Tree types
  170  *
  171  * @description
  172  *      This enumeration lists support for Huffman Tree types.
  173  *      Selecting Static Huffman trees generates compressed blocks with an RFC
  174  *      1951 header specifying "compressed with fixed Huffman trees".
  175  *
  176  *      Selecting Full Dynamic Huffman trees generates compressed blocks with
  177  *      an RFC 1951 header specifying "compressed with dynamic Huffman codes".
  178  *      The headers are calculated on the data being compressed, requiring two
  179  *      passes.
  180  *
  181  *      Selecting Precompiled Huffman Trees generates blocks with RFC 1951
  182  *      dynamic headers.  The headers are pre-calculated and are specified by
  183  *      the file type.
  184  *
  185  *****************************************************************************/
  186 typedef enum _CpaDcHuffType
  187 {
  188     CPA_DC_HT_STATIC,
  189     /**< Static Huffman Trees */
  190     CPA_DC_HT_PRECOMP,
  191     /**< Precompiled Huffman Trees  */
  192     CPA_DC_HT_FULL_DYNAMIC
  193     /**< Full Dynamic Huffman Trees */
  194 } CpaDcHuffType;
  195 
  196 /**
  197  *****************************************************************************
  198  * @ingroup cpaDc
  199  *      Supported compression types
  200  *
  201  * @description
  202  *      This enumeration lists the supported data compression algorithms.
  203  *      In combination with CpaDcChecksum it is used to decide on the file
  204  *      header and footer format.
  205  *
  206  * @deprecated
  207  *      As of v1.6 of the Compression API, CPA_DC_LZS, CPA_DC_ELZS and
  208  *      CPA_DC_LZSS have been deprecated and should not be used.
  209  *
  210  *****************************************************************************/
  211 typedef enum _CpaDcCompType
  212 {
  213     CPA_DC_LZS,
  214     /**< LZS Compression */
  215     CPA_DC_ELZS,
  216     /**< Extended LZS Compression */
  217     CPA_DC_LZSS,
  218     /**< LZSS Compression */
  219     CPA_DC_DEFLATE
  220     /**< Deflate Compression */
  221 } CpaDcCompType;
  222 
  223 /**
  224  *****************************************************************************
  225  * @ingroup cpaDc
  226  *      Supported checksum algorithms
  227  *
  228  * @description
  229  *      This enumeration lists the supported checksum algorithms
  230  *      Used to decide on file header and footer specifics.
  231  *
  232  *****************************************************************************/
  233 typedef enum _CpaDcChecksum
  234 {
  235     CPA_DC_NONE,
  236     /**< No checksums required */
  237     CPA_DC_CRC32,
  238     /**<  application requires a CRC32 checksum */
  239     CPA_DC_ADLER32
  240     /**< Application requires Adler-32 checksum */
  241 } CpaDcChecksum;
  242 
  243 
  244 /**
  245  *****************************************************************************
  246  * @ingroup cpaDc
  247  *      Supported session directions
  248  *
  249  * @description
  250  *      This enumerated list identifies the direction of a session.
  251  *      A session can be compress, decompress or both.
  252  *
  253  *****************************************************************************/
  254 typedef enum _CpaDcSessionDir
  255 {
  256     CPA_DC_DIR_COMPRESS,
  257     /**< Session will be used for compression */
  258     CPA_DC_DIR_DECOMPRESS,
  259     /**< Session will be used for decompression */
  260     CPA_DC_DIR_COMBINED
  261     /**< Session will be used for both compression and decompression */
  262 } CpaDcSessionDir;
  263 
  264 /**
  265  *****************************************************************************
  266  * @ingroup cpaDc
  267  *      Supported session state settings
  268  *
  269  * @description
  270  *      This enumerated list identifies the stateful setting of a session.
  271  *      A session can be either stateful or stateless.
  272  *
  273  *      Stateful sessions are limited to have only one in-flight message per
  274  *      session. This means a compress or decompress request must be complete
  275  *      before a new request can be started. This applies equally to sessions
  276  *      that are uni-directional in nature and sessions that are combined
  277  *      compress and decompress. Completion occurs when the synchronous function
  278  *      returns, or when the asynchronous callback function has completed.
  279  *
  280  *****************************************************************************/
  281 typedef enum _CpaDcSessionState
  282 {
  283     CPA_DC_STATEFUL,
  284     /**< Session will be stateful, implying that state may need to be
  285         saved in some situations */
  286     CPA_DC_STATELESS
  287     /**< Session will be stateless, implying no state will be stored*/
  288 } CpaDcSessionState;
  289 
  290 /**
  291  *****************************************************************************
  292  * @ingroup cpaDc
  293  *      Supported compression levels
  294  *
  295  * @description
  296  *      This enumerated lists the supported compressed levels.
  297  *      Lower values will result in less compressibility in less time.
  298  *
  299  *
  300  *****************************************************************************/
  301 typedef enum _CpaDcCompLvl
  302 {
  303     CPA_DC_L1 = 1,
  304     /**< Compression level 1 */
  305     CPA_DC_L2,
  306     /**< Compression level 2 */
  307     CPA_DC_L3,
  308     /**< Compression level 3 */
  309     CPA_DC_L4,
  310     /**< Compression level 4 */
  311     CPA_DC_L5,
  312     /**< Compression level 5 */
  313     CPA_DC_L6,
  314     /**< Compression level 6 */
  315     CPA_DC_L7,
  316     /**< Compression level 7 */
  317     CPA_DC_L8,
  318     /**< Compression level 8 */
  319     CPA_DC_L9
  320     /**< Compression level 9 */
  321 } CpaDcCompLvl;
  322 
  323 /**
  324  *****************************************************************************
  325  * @ingroup cpaDc
  326  *      Supported additional details from accelerator
  327  *
  328  * @description
  329  *      This enumeration lists the supported additional details from the
  330  *      accelerator.  These may be useful in determining the best way to
  331  *      recover from a failure.
  332  *
  333  *
  334  *****************************************************************************/
  335 typedef enum _CpaDcReqStatus
  336 {
  337     CPA_DC_OK = 0,
  338     /**< No error detected by compression slice */
  339     CPA_DC_INVALID_BLOCK_TYPE = -1,
  340     /**< Invalid block type (type == 3) */
  341     CPA_DC_BAD_STORED_BLOCK_LEN = -2,
  342     /**< Stored block length did not match one's complement */
  343     CPA_DC_TOO_MANY_CODES  = -3,
  344     /**< Too many length or distance codes */
  345     CPA_DC_INCOMPLETE_CODE_LENS = -4,
  346     /**< Code length codes incomplete */
  347     CPA_DC_REPEATED_LENS = -5,
  348     /**< Repeated lengths with no first length */
  349     CPA_DC_MORE_REPEAT = -6,
  350     /**< Repeat more than specified lengths */
  351     CPA_DC_BAD_LITLEN_CODES = -7,
  352     /**< Invalid literal/length code lengths */
  353     CPA_DC_BAD_DIST_CODES = -8,
  354     /**< Invalid distance code lengths */
  355     CPA_DC_INVALID_CODE = -9,
  356     /**< Invalid literal/length or distance code in fixed or dynamic block */
  357     CPA_DC_INVALID_DIST = -10,
  358     /**< Distance is too far back in fixed or dynamic block */
  359     CPA_DC_OVERFLOW = -11,
  360     /**< Overflow detected.  This is an indication that output buffer has overflowed.
  361      * For stateful sessions, this is a warning (the input can be adjusted and
  362      * resubmitted).
  363      * For stateless sessions this is an error condition */
  364     CPA_DC_SOFTERR = -12,
  365     /**< Other non-fatal detected */
  366     CPA_DC_FATALERR = -13,
  367     /**< Fatal error detected */
  368     CPA_DC_MAX_RESUBITERR = -14,
  369     /**< On an error being detected, the firmware attempted to correct and resubmitted the
  370      * request, however, the maximum resubmit value was exceeded */
  371     CPA_DC_INCOMPLETE_FILE_ERR = -15,
  372     /**< The input file is incomplete.  Note this is an indication that the request was
  373      * submitted with a CPA_DC_FLUSH_FINAL, however, a BFINAL bit was not found in the
  374      * request */
  375     CPA_DC_WDOG_TIMER_ERR = -16,
  376    /**< The request was not completed as a watchdog timer hardware event occurred */
  377     CPA_DC_EP_HARDWARE_ERR = -17,
  378     /**< Request was not completed as an end point hardware error occurred (for
  379      * example, a parity error) */
  380     CPA_DC_VERIFY_ERROR = -18,
  381     /**< Error detected during "compress and verify" operation */
  382     CPA_DC_EMPTY_DYM_BLK = -19,
  383     /**< Decompression request contained an empty dynamic stored block
  384      * (not supported) */
  385     CPA_DC_CRC_INTEG_ERR = -20,
  386     /**< A data integrity CRC error was detected */
  387 } CpaDcReqStatus;
  388 
  389 /**
  390  *****************************************************************************
  391  * @ingroup cpaDc
  392  *      Supported modes for automatically selecting the best compression type.
  393  *
  394  * @description
  395  *      This enumeration lists the supported modes for automatically selecting
  396  *      the best Huffman encoding which would lead to the best compression
  397  *      results.
  398  *
  399  *      The CPA_DC_ASB_UNCOMP_STATIC_DYNAMIC_WITH_NO_HDRS value is deprecated
  400  *      and should not be used.
  401  *
  402  *****************************************************************************/
  403 typedef enum _CpaDcAutoSelectBest
  404 {
  405     CPA_DC_ASB_DISABLED = 0,
  406     /**< Auto select best mode is disabled */
  407     CPA_DC_ASB_STATIC_DYNAMIC = 1,
  408     /**< Auto select between static and dynamic compression */
  409     CPA_DC_ASB_UNCOMP_STATIC_DYNAMIC_WITH_STORED_HDRS = 2,
  410     /**< Auto select between uncompressed, static and dynamic compression,
  411      * using stored block deflate headers if uncompressed is selected */
  412     CPA_DC_ASB_UNCOMP_STATIC_DYNAMIC_WITH_NO_HDRS = 3
  413     /**< Auto select between uncompressed, static and dynamic compression,
  414      * using no deflate headers if uncompressed is selected */
  415 } CpaDcAutoSelectBest;
  416 
  417 /**
  418  *****************************************************************************
  419  * @ingroup cpaDc
  420  *      Supported modes for skipping regions of input or output buffers.
  421  *
  422  * @description
  423  *      This enumeration lists the supported modes for skipping regions of 
  424  *      input or output buffers. 
  425  *
  426  *****************************************************************************/
  427 typedef enum _CpaDcSkipMode
  428 {
  429     CPA_DC_SKIP_DISABLED = 0,
  430     /**< Skip mode is disabled */
  431     CPA_DC_SKIP_AT_START = 1,
  432     /**< Skip region is at the start of the buffer. */
  433     CPA_DC_SKIP_AT_END = 2,
  434     /**< Skip region is at the end of the buffer. */
  435     CPA_DC_SKIP_STRIDE = 3
  436     /**< Skip region occurs at regular intervals within the buffer. 
  437      CpaDcSkipData.strideLength specifies the number of bytes between each
  438      skip region. */
  439 } CpaDcSkipMode;
  440 
  441 /**
  442  *****************************************************************************
  443  * @ingroup cpaDc
  444  *      Service specific return codes
  445  *
  446  * @description
  447  *      Compression specific return codes
  448  *
  449  *
  450  *****************************************************************************/
  451 
  452 #define CPA_DC_BAD_DATA     (-100)
  453     /**<Input data in invalid */
  454 
  455 /**
  456  *****************************************************************************
  457  * @ingroup cpaDc
  458  *      Definition of callback function invoked for asynchronous cpaDc
  459  *      requests.
  460  *
  461  * @description
  462  *      This is the prototype for the cpaDc compression callback functions.
  463  *      The callback function is registered by the application using the
  464  *      cpaDcInitSession() function call.
  465  *
  466  * @context
  467  *      This callback function can be executed in a context that DOES NOT
  468  *      permit sleeping to occur.
  469  * @assumptions
  470  *      None
  471  * @sideEffects
  472  *      None
  473  * @reentrant
  474  *      No
  475  * @threadSafe
  476  *      Yes
  477  *
  478  * @param callbackTag   User-supplied value to help identify request.
  479  * @param status        Status of the operation. Valid values are
  480  *                      CPA_STATUS_SUCCESS, CPA_STATUS_FAIL and
  481  *                      CPA_STATUS_UNSUPPORTED.
  482  *
  483  * @retval
  484  *      None
  485  * @pre
  486  *      Component has been initialized.
  487  * @post
  488  *      None
  489  * @note
  490  *      None
  491  * @see
  492  *      None
  493  *
  494  *****************************************************************************/
  495 typedef void (*CpaDcCallbackFn)(
  496     void *callbackTag,
  497     CpaStatus status);
  498 
  499 
  500 /**
  501  *****************************************************************************
  502  * @ingroup cpaDc
  503  *      Implementation Capabilities Structure
  504  * @description
  505  *      This structure contains data relating to the capabilities of an
  506  *      implementation. The capabilities include supported compression
  507  *      algorithms, RFC 1951 options and whether the implementation supports
  508  *      both stateful and stateless compress and decompress sessions.
  509  *
  510  ****************************************************************************/
  511 typedef struct _CpaDcInstanceCapabilities  {
  512         CpaBoolean  statefulLZSCompression;
  513             /**<True if the Instance supports Stateful LZS compression */
  514         CpaBoolean  statefulLZSDecompression;
  515             /**<True if the Instance supports Stateful LZS decompression */
  516         CpaBoolean  statelessLZSCompression;
  517             /**<True if the Instance supports Stateless LZS compression */
  518         CpaBoolean  statelessLZSDecompression;
  519             /**<True if the Instance supports Stateless LZS decompression */
  520         CpaBoolean  statefulLZSSCompression;
  521             /**<True if the Instance supports Stateful LZSS compression */
  522         CpaBoolean  statefulLZSSDecompression;
  523             /**<True if the Instance supports Stateful LZSS decompression */
  524         CpaBoolean  statelessLZSSCompression;
  525             /**<True if the Instance supports Stateless LZSS compression */
  526         CpaBoolean  statelessLZSSDecompression;
  527             /**<True if the Instance supports Stateless LZSS decompression */
  528         CpaBoolean  statefulELZSCompression;
  529             /**<True if the Instance supports Stateful Extended LZS
  530             compression */
  531         CpaBoolean  statefulELZSDecompression;
  532             /**<True if the Instance supports Stateful Extended LZS
  533             decompression */
  534         CpaBoolean  statelessELZSCompression;
  535             /**<True if the Instance supports Stateless Extended LZS
  536             compression */
  537         CpaBoolean  statelessELZSDecompression;
  538             /**<True if the Instance supports Stateless Extended LZS
  539             decompression */
  540         CpaBoolean  statefulDeflateCompression;
  541             /**<True if the Instance supports Stateful Deflate compression */
  542         CpaBoolean  statefulDeflateDecompression;
  543             /**<True if the Instance supports Stateful Deflate
  544             decompression */
  545         CpaBoolean  statelessDeflateCompression;
  546             /**<True if the Instance supports Stateless Deflate compression */
  547         CpaBoolean  statelessDeflateDecompression;
  548             /**<True if the Instance supports Stateless Deflate
  549             decompression */
  550         CpaBoolean  checksumCRC32;
  551             /**<True if the Instance can calculate a CRC32 checksum over
  552                 the uncompressed data*/
  553         CpaBoolean  checksumAdler32;
  554             /**<True if the Instance can calculate an Adler-32 checksum over
  555                 the uncompressed data */
  556         CpaBoolean  dynamicHuffman;
  557             /**<True if the Instance supports dynamic Huffman trees in deflate
  558                 blocks*/
  559         CpaBoolean  dynamicHuffmanBufferReq;
  560             /**<True if an Instance specific buffer is required to perform
  561                 a dynamic Huffman tree deflate request */
  562         CpaBoolean  precompiledHuffman;
  563             /**<True if the Instance supports precompiled Huffman trees in
  564                 deflate blocks*/
  565         CpaBoolean  autoSelectBestHuffmanTree;
  566             /**<True if the Instance has the ability to automatically select
  567                 between different Huffman encoding schemes for better
  568                 compression ratios */
  569         Cpa8U       validWindowSizeMaskCompression;
  570             /**<Bits set to '1' for each valid window size supported by
  571                 the compression implementation */
  572         Cpa8U       validWindowSizeMaskDecompression;
  573             /**<Bits set to '1' for each valid window size supported by
  574                 the decompression implementation */
  575         Cpa32U      internalHuffmanMem;
  576             /**<Number of bytes internally available to be used when
  577                     constructing dynamic Huffman trees. */
  578         CpaBoolean  endOfLastBlock;
  579             /**< True if the Instance supports stopping at the end of the last
  580              * block in a deflate stream during a decompression operation and
  581              * reporting that the end of the last block has been reached as
  582              * part of the CpaDcReqStatus data. */
  583         CpaBoolean  reportParityError;
  584             /**<True if the instance supports parity error reporting. */
  585         CpaBoolean  batchAndPack;
  586             /**< True if the instance supports 'batch and pack' compression */
  587         CpaBoolean  compressAndVerify;
  588             /**<True if the instance supports checking that compressed data,
  589              * generated as part of a compression operation, can be
  590              * successfully decompressed. */
  591         CpaBoolean  compressAndVerifyStrict;
  592             /**< True if compressAndVerify is 'strictly' enabled for the
  593              * instance. If strictly enabled, compressAndVerify will be enabled
  594              * by default for compression operations and cannot be disabled by
  595              * setting opData.compressAndVerify=0 with cpaDcCompressData2().
  596              * Compression operations with opData.compressAndVerify=0 will
  597              * return a CPA_STATUS_INVALID_PARAM error status when in
  598              * compressAndVerify strict mode.
  599              */
  600         CpaBoolean  compressAndVerifyAndRecover;
  601             /**<True if the instance supports recovering from errors detected
  602              * by compressAndVerify by generating a stored block in the
  603              * compressed output data buffer. This stored block replaces any
  604              * compressed content that resulted in a compressAndVerify error.
  605              */
  606         CpaBoolean integrityCrcs;
  607             /**<True if the instance supports integrity CRC checking in the
  608              * compression/decompression datapath. */
  609 } CpaDcInstanceCapabilities;
  610 
  611 /**
  612  *****************************************************************************
  613  * @ingroup cpaDc
  614  *      Session Setup Data.
  615  * @description
  616  *      This structure contains data relating to setting up a session. The
  617  *      client needs to complete the information in this structure in order to
  618  *      setup a session.
  619  *
  620  * @deprecated
  621  *      As of v1.6 of the Compression API, the fileType and deflateWindowSize
  622  *      fields in this structure have been deprecated and should not be used.
  623  *
  624  ****************************************************************************/
  625 typedef struct _CpaDcSessionSetupData  {
  626         CpaDcCompLvl compLevel;
  627           /**<Compression Level from CpaDcCompLvl */
  628         CpaDcCompType compType;
  629           /**<Compression type from CpaDcCompType */
  630         CpaDcHuffType huffType;
  631           /**<Huffman type from CpaDcHuffType */
  632         CpaDcAutoSelectBest autoSelectBestHuffmanTree;
  633           /**<Indicates if and how the implementation should select the best
  634            * Huffman encoding. */
  635         CpaDcFileType fileType;
  636           /**<File type for the purpose of determining Huffman Codes from
  637            * CpaDcFileType.
  638            * As of v1.6 of the Compression API, this field has been deprecated
  639            * and should not be used.  */
  640         CpaDcSessionDir sessDirection;
  641          /**<Session direction indicating whether session is used for
  642             compression, decompression or both */
  643         CpaDcSessionState sessState;
  644         /**<Session state indicating whether the session should be configured
  645             as stateless or stateful */
  646         Cpa32U deflateWindowSize;
  647         /**<Base 2 logarithm of maximum window size minus 8 (a value of 7 for
  648          * a 32K window size). Permitted values are 0 to 7. cpaDcDecompressData
  649          * may return an error if an attempt is made to decompress a stream that
  650          * has a larger window size.
  651          * As of v1.6 of the Compression API, this field has been deprecated and
  652          * should not be used. */
  653         CpaDcChecksum checksum;
  654         /**<Desired checksum required for the session */
  655 } CpaDcSessionSetupData;
  656 
  657 /**
  658  *****************************************************************************
  659  * @ingroup cpaDc
  660  *      Compression Statistics Data.
  661  * @description
  662  *      This structure contains data elements corresponding to statistics.
  663  *      Statistics are collected on a per instance basis and include:
  664  *      jobs submitted and completed for both compression and decompression.
  665  *
  666  ****************************************************************************/
  667 typedef struct _CpaDcStats  {
  668         Cpa64U numCompRequests;
  669           /**< Number of successful compression requests */
  670         Cpa64U numCompRequestsErrors;
  671           /**< Number of compression requests that had errors and
  672              could not be processed */
  673         Cpa64U numCompCompleted;
  674           /**< Compression requests completed */
  675         Cpa64U numCompCompletedErrors;
  676           /**< Compression requests not completed due to errors */
  677         Cpa64U numCompCnvErrorsRecovered;
  678           /**< Compression CNV errors that have been recovered */
  679 
  680         Cpa64U numDecompRequests;
  681           /**< Number of successful decompression requests */
  682         Cpa64U numDecompRequestsErrors;
  683           /**< Number of decompression requests that had errors and
  684              could not be processed */
  685         Cpa64U numDecompCompleted;
  686           /**< Decompression requests completed */
  687         Cpa64U numDecompCompletedErrors;
  688           /**< Decompression requests not completed due to errors */
  689 
  690 } CpaDcStats;
  691 
  692 /**
  693  *****************************************************************************
  694  * @ingroup cpaDc
  695  *      Request results data
  696  * @description
  697  *      This structure contains the request results.
  698  *
  699  *      For stateful sessions the status, produced, consumed and
  700  *      endOfLastBlock results are per request values while the checksum
  701  *      value is cumulative across all requests on the session so far.
  702  *      In this case the checksum value is not guaranteed to be correct
  703  *      until the final compressed data has been processed.
  704  *
  705  *      For stateless sessions, an initial checksum value is passed into
  706  *      the stateless operation. Once the stateless operation completes,
  707  *      the checksum value will contain checksum produced by the operation.
  708  *
  709  ****************************************************************************/
  710 typedef struct _CpaDcRqResults  {
  711         CpaDcReqStatus status;
  712           /**< Additional status details from accelerator */
  713         Cpa32U produced;
  714           /**< Octets produced by the operation */
  715         Cpa32U consumed;
  716           /**< Octets consumed by the operation */
  717         Cpa32U checksum;
  718           /**< Initial checksum passed into stateless operations.
  719              Will also be updated to the checksum produced by the operation  */
  720        CpaBoolean endOfLastBlock;
  721           /**< Decompression operation has stopped at the end of the last
  722            * block in a deflate stream. */
  723 } CpaDcRqResults;
  724 
  725 /**
  726  *****************************************************************************
  727  * @ingroup cpaDc
  728  *      Integrity CRC calculation details
  729  * @description
  730  *      This structure contains information about resulting integrity CRC
  731  *      calculations performed for a single request.
  732  *
  733  ****************************************************************************/
  734 typedef struct _CpaIntegrityCrc {
  735         Cpa32U iCrc;   /**< CRC calculated on request's input  buffer */
  736         Cpa32U oCrc;   /**< CRC calculated on request's output buffer */
  737 } CpaIntegrityCrc;
  738 
  739 /**
  740  *****************************************************************************
  741  * @ingroup cpaDc
  742  *      Collection of CRC related data
  743  * @description
  744  *      This structure contains data facilitating CRC calculations.
  745  *      After successful request, this structure will contain
  746  *      all resulting CRCs.
  747  *      Integrity specific CRCs (when enabled/supported) are located in
  748  *      'CpaIntegrityCrc integrityCrc' field.
  749  * @note
  750  *      this structure must be allocated in physical contiguous memory
  751  *
  752  ****************************************************************************/
  753 typedef struct _CpaCrcData {
  754         Cpa32U crc32;
  755         /**< CRC32 calculated on the input buffer during compression
  756          * requests and on the output buffer during decompression requests. */
  757         Cpa32U adler32;
  758         /**< ADLER32 calculated on the input buffer during compression
  759          * requests and on the output buffer during decompression requests. */
  760         CpaIntegrityCrc integrityCrc;
  761           /**< Integrity CRCs */
  762 } CpaCrcData;
  763 
  764 /**
  765  *****************************************************************************
  766  * @ingroup cpaDc
  767  *      Skip Region Data.
  768  * @description
  769  *      This structure contains data relating to configuring skip region
  770  *      behaviour. A skip region is a region of an input buffer that
  771  *      should be omitted from processing or a region that should be inserted
  772  *      into the output buffer.
  773  *
  774  ****************************************************************************/
  775 typedef struct _CpaDcSkipData {
  776         CpaDcSkipMode skipMode;
  777         /**<Skip mode from CpaDcSkipMode for buffer processing */
  778         Cpa32U skipLength;
  779         /**<Number of bytes to skip when skip mode is enabled */
  780         Cpa32U strideLength;
  781         /**<Size of the stride between skip regions when skip mode is
  782          * set to CPA_DC_SKIP_STRIDE. */
  783         Cpa32U firstSkipOffset;
  784         /**< Number of bytes to skip in a buffer before reading/writing the
  785          * input/output data. */
  786 } CpaDcSkipData;
  787 
  788 /**
  789  *****************************************************************************
  790  * @ingroup cpaDc
  791  *      (De)Compression request input parameters.
  792  * @description
  793  *      This structure contains the request information for use with
  794  *      compression operations.
  795  *
  796  ****************************************************************************/
  797 typedef struct _CpaDcOpData  {
  798         CpaDcFlush flushFlag;
  799         /**< Indicates the type of flush to be performed. */
  800         CpaBoolean compressAndVerify;
  801         /**< If set to true, for compression operations, the implementation
  802          * will verify that compressed data, generated by the compression
  803          * operation, can be successfully decompressed.
  804          * This behavior is only supported for stateless compression.
  805          * This behavior is only supported on instances that support the
  806          * compressAndVerify capability. */
  807         CpaBoolean compressAndVerifyAndRecover;
  808         /**< If set to true, for compression operations, the implementation
  809          * will automatically recover from a compressAndVerify error.
  810          * This behavior is only supported for stateless compression.
  811          * This behavior is only supported on instances that support the
  812          * compressAndVerifyAndRecover capability.
  813          * The compressAndVerify field in CpaDcOpData MUST be set to CPA_TRUE
  814          * if compressAndVerifyAndRecover is set to CPA_TRUE. */
  815         CpaBoolean integrityCrcCheck;
  816         /**< If set to true, the implementation will verify that data
  817          * integrity is preserved through the processing pipeline.
  818          * This behaviour supports stateless and stateful behavior for
  819          * both static and dynamic Huffman encoding.
  820          *
  821          * Integrity CRC checking is not supported for decompression operations
  822          * over data that contains multiple gzip headers. */
  823         CpaBoolean verifyHwIntegrityCrcs;
  824         /**< If set to true, software calculated CRCs will be compared
  825          * against hardware generated integrity CRCs to ensure that data
  826          * integrity is maintained when transferring data to and from the
  827          * hardware accelerator. */
  828         CpaDcSkipData inputSkipData;
  829         /**< Optional skip regions in the input buffers */
  830         CpaDcSkipData outputSkipData;
  831         /**< Optional skip regions in the output buffers */
  832         CpaCrcData *pCrcData;
  833         /**< Pointer to CRCs for this operation, when integrity checks
  834          * are enabled. */
  835 } CpaDcOpData;
  836 
  837 /**
  838  *****************************************************************************
  839  * @ingroup cpaDc
  840  *      Retrieve Instance Capabilities
  841  *
  842  * @description
  843  *      This function is used to retrieve the capabilities matrix of
  844  *      an instance.
  845  *
  846  * @context
  847  *      This function shall not be called in an interrupt context.
  848  * @assumptions
  849  *      None
  850  * @sideEffects
  851  *      None
  852  * @blocking
  853  *      Yes
  854  * @reentrant
  855  *      No
  856  * @threadSafe
  857  *      Yes
  858  *
  859  * @param[in]       dcInstance      Instance handle derived from discovery
  860  *                                  functions
  861  * @param[in,out]   pInstanceCapabilities   Pointer to a capabilities struct
  862  *
  863  * @retval CPA_STATUS_SUCCESS        Function executed successfully.
  864  * @retval CPA_STATUS_FAIL           Function failed.
  865  * @retval CPA_STATUS_INVALID_PARAM  Invalid parameter passed in.
  866  * @retval CPA_STATUS_RESOURCE       Error related to system resources.
  867  * @retval CPA_STATUS_RESTARTING     API implementation is restarting. Resubmit
  868  *                                   the request.
  869  * @retval CPA_STATUS_UNSUPPORTED    Function is not supported.
  870  *
  871  * @pre
  872  *      None
  873  * @post
  874  *      None
  875  * @note
  876  *      Only a synchronous version of this function is provided.
  877  *
  878  * @see
  879  *      None
  880  *
  881  *****************************************************************************/
  882 CpaStatus
  883 cpaDcQueryCapabilities(  CpaInstanceHandle dcInstance,
  884         CpaDcInstanceCapabilities *pInstanceCapabilities );
  885 
  886 /**
  887  *****************************************************************************
  888  * @ingroup cpaDc
  889  *      Initialize compression decompression session
  890  *
  891  * @description
  892  *      This function is used to initialize a compression/decompression
  893  *      session.
  894  *      This function specifies a BufferList for context data.
  895  *      A single session can be used for both compression and decompression
  896  *      requests.  Clients MAY register a callback
  897  *      function for the compression service using this function.
  898  *      This function returns a unique session handle each time this function
  899  *      is invoked.
  900  *      If the session has been configured with a callback function, then
  901  *      the order of the callbacks are guaranteed to be in the same order the
  902  *      compression or decompression requests were submitted for each session,
  903  *      so long as a single thread of execution is used for job submission.
  904  *
  905  * @context
  906  *      This is a synchronous function and it cannot sleep. It can be executed in
  907  *      a context that does not permit sleeping.
  908  * @assumptions
  909  *      None
  910  * @sideEffects
  911  *      None
  912  * @blocking
  913  *      No
  914  * @reentrant
  915  *      No
  916  * @threadSafe
  917  *      Yes
  918  *
  919  * @param[in]       dcInstance      Instance handle derived from discovery
  920  *                                  functions.
  921  * @param[in,out]   pSessionHandle  Pointer to a session handle.
  922  * @param[in,out]   pSessionData    Pointer to a user instantiated structure
  923  *                                  containing session data.
  924  * @param[in]       pContextBuffer  pointer to context buffer.  This is not
  925  *                                  required for stateless operations.
  926  *                                  The total size of the buffer list must
  927  *                                  be equal to or larger than the specified
  928  *                                  contextSize retrieved from the
  929  *                                  cpaDcGetSessionSize() function.
  930  * @param[in]        callbackFn     For synchronous operation this callback
  931  *                                  shall be a null pointer.
  932  *
  933  * @retval CPA_STATUS_SUCCESS        Function executed successfully.
  934  * @retval CPA_STATUS_FAIL           Function failed.
  935  * @retval CPA_STATUS_INVALID_PARAM  Invalid parameter passed in.
  936  * @retval CPA_STATUS_RESOURCE       Error related to system resources.
  937  * @retval CPA_STATUS_RESTARTING     API implementation is restarting. Resubmit
  938  *                                   the request.
  939  * @retval CPA_STATUS_UNSUPPORTED    Function is not supported.
  940  *
  941  * @pre
  942  *      dcInstance has been started using cpaDcStartInstance.
  943  * @post
  944  *      None
  945  * @note
  946  *      Only a synchronous version of this function is provided.
  947  *
  948  *      This initializes opaque data structures in the session handle. Data
  949  *      compressed under this session will be compressed to the level
  950  *      specified in the pSessionData structure. Lower compression level
  951  *      numbers indicate a request for faster compression at the
  952  *      expense of compression ratio.  Higher compression level numbers
  953  *      indicate a request for higher compression ratios at the expense of
  954  *      execution time.
  955  *
  956  *      The session is opaque to the user application and the session handle
  957  *      contains job specific data.
  958  *
  959  *      The pointer to the ContextBuffer will be stored in session specific
  960  *      data if required by the implementation.
  961  *
  962  *      It is not permitted to have multiple
  963  *      outstanding asynchronous compression requests for stateful sessions.
  964  *      It is possible to add
  965  *      parallelization to compression by using multiple sessions.
  966  *
  967  *      The window size specified in the pSessionData must be match exactly
  968  *      one of the supported window sizes specified in the capabilities
  969  *      structure.  If a bi-directional session is being initialized, then
  970  *      the window size must be valid for both compress and decompress.
  971  *
  972  * @see
  973  *      None
  974  *
  975  *****************************************************************************/
  976 CpaStatus
  977 cpaDcInitSession( CpaInstanceHandle     dcInstance,
  978         CpaDcSessionHandle              pSessionHandle,
  979         CpaDcSessionSetupData           *pSessionData,
  980         CpaBufferList                   *pContextBuffer,
  981         CpaDcCallbackFn                 callbackFn );
  982 
  983 
  984 /**
  985  *****************************************************************************
  986  * @ingroup cpaDc
  987  *      Compression Session Reset Function.
  988  *
  989  * @description
  990  *      This function will reset a previously initialized session handle
  991  *      Reset will fail if outstanding calls still exist for the initialized
  992  *      session handle.
  993  *      The client needs to retry the reset function at a later time.
  994  *
  995  * @context
  996  *      This is a synchronous function that cannot sleep. It can be
  997  *      executed in a context that does not permit sleeping.
  998  * @assumptions
  999  *      None
 1000  * @sideEffects
 1001  *      None
 1002  * @blocking
 1003  *      No.
 1004  * @reentrant
 1005  *      No
 1006  * @threadSafe
 1007  *      Yes
 1008  *
 1009  * @param[in]      dcInstance      Instance handle.
 1010  * @param[in,out]  pSessionHandle  Session handle.
 1011  *
 1012  * @retval CPA_STATUS_SUCCESS        Function executed successfully.
 1013  * @retval CPA_STATUS_FAIL           Function failed.
 1014  * @retval CPA_STATUS_RETRY          Resubmit the request.
 1015  * @retval CPA_STATUS_INVALID_PARAM  Invalid parameter passed in.
 1016  * @retval CPA_STATUS_UNSUPPORTED    Function is not supported.
 1017  *
 1018  * @pre
 1019  *      The component has been initialized via cpaDcStartInstance function.
 1020  *      The session has been initialized via cpaDcInitSession function.
 1021  * @post
 1022  *      None
 1023  * @note
 1024  *      This is a synchronous function and has no completion callback
 1025  *      associated with it.
 1026  *
 1027  * @see
 1028  *      cpaDcInitSession()
 1029  *
 1030  *****************************************************************************/
 1031 CpaStatus
 1032 cpaDcResetSession(const CpaInstanceHandle dcInstance,
 1033         CpaDcSessionHandle pSessionHandle );
 1034 
 1035 
 1036 /**
 1037  *****************************************************************************
 1038  * @ingroup cpaDc
 1039  *      Compression Session Remove Function.
 1040  *
 1041  * @description
 1042  *      This function will remove a previously initialized session handle
 1043  *      and the installed callback handler function. Removal will fail if
 1044  *      outstanding calls still exist for the initialized session handle.
 1045  *      The client needs to retry the remove function at a later time.
 1046  *      The memory for the session handle MUST not be freed until this call
 1047  *      has completed successfully.
 1048  *
 1049  * @context
 1050  *      This is a synchronous function that cannot sleep. It can be
 1051  *      executed in a context that does not permit sleeping.
 1052  * @assumptions
 1053  *      None
 1054  * @sideEffects
 1055  *      None
 1056  * @blocking
 1057  *      No.
 1058  * @reentrant
 1059  *      No
 1060  * @threadSafe
 1061  *      Yes
 1062  *
 1063  * @param[in]      dcInstance      Instance handle.
 1064  * @param[in,out]  pSessionHandle  Session handle.
 1065  *
 1066  * @retval CPA_STATUS_SUCCESS        Function executed successfully.
 1067  * @retval CPA_STATUS_FAIL           Function failed.
 1068  * @retval CPA_STATUS_RETRY          Resubmit the request.
 1069  * @retval CPA_STATUS_INVALID_PARAM  Invalid parameter passed in.
 1070  * @retval CPA_STATUS_RESOURCE       Error related to system resources.
 1071  * @retval CPA_STATUS_RESTARTING     API implementation is restarting. Resubmit
 1072  *                                   the request.
 1073  * @retval CPA_STATUS_UNSUPPORTED    Function is not supported.
 1074  *
 1075  * @pre
 1076  *      The component has been initialized via cpaDcStartInstance function.
 1077  * @post
 1078  *      None
 1079  * @note
 1080  *      This is a synchronous function and has no completion callback
 1081  *      associated with it.
 1082  *
 1083  * @see
 1084  *      cpaDcInitSession()
 1085  *
 1086  *****************************************************************************/
 1087 CpaStatus
 1088 cpaDcRemoveSession(const CpaInstanceHandle dcInstance,
 1089         CpaDcSessionHandle pSessionHandle );
 1090 
 1091 /**
 1092  *****************************************************************************
 1093  * @ingroup cpaDc
 1094  *      Deflate Compression Bound API
 1095  *
 1096  * @description
 1097  *      This function provides the maximum output buffer size for a Deflate
 1098  *      compression operation in the "worst case" (non-compressible) scenario.
 1099  *      It's primary purpose is for output buffer memory allocation.
 1100  *
 1101  * @context
 1102  *      This is a synchronous function that will not sleep. It can be
 1103  *      executed in a context that does not permit sleeping.
 1104  * @assumptions
 1105  *      None
 1106  * @sideEffects
 1107  *      None
 1108  * @blocking
 1109  *      No.
 1110  * @reentrant
 1111  *      No
 1112  * @threadSafe
 1113  *      Yes
 1114  *
 1115  * @param[in]      dcInstance      Instance handle.
 1116  * @param[in]      huffType        CpaDcHuffType to be used with this operation.
 1117  * @param[in]      inputSize       Input Buffer size.
 1118  * @param[out]     outputSize      Maximum output buffer size.
 1119  *
 1120  * @retval CPA_STATUS_SUCCESS        Function executed successfully.
 1121  * @retval CPA_STATUS_FAIL           Function failed.
 1122  * @retval CPA_STATUS_INVALID_PARAM  Invalid parameter passed in.
 1123  * @retval CPA_STATUS_UNSUPPORTED    Function is not supported.
 1124  *
 1125  * @pre
 1126  *      The component has been initialized via cpaDcStartInstance function.
 1127  * @post
 1128  *      None
 1129  * @note
 1130  *      This is a synchronous function and has no completion callback
 1131  *      associated with it.
 1132  *
 1133  * @see
 1134  *      None
 1135  *
 1136  *****************************************************************************/
 1137 CpaStatus
 1138 cpaDcDeflateCompressBound(const CpaInstanceHandle dcInstance,
 1139         CpaDcHuffType huffType,
 1140         Cpa32U inputSize,
 1141         Cpa32U *outputSize );
 1142 
 1143 /**
 1144  *****************************************************************************
 1145  * @ingroup cpaDc
 1146  *      Submit a request to compress a buffer of data.
 1147  *
 1148  * @description
 1149  *      This API consumes data from the input buffer and generates compressed
 1150  *      data in the output buffer.
 1151  *
 1152  * @context
 1153  *      When called as an asynchronous function it cannot sleep. It can be
 1154  *      executed in a context that does not permit sleeping.
 1155  *      When called as a synchronous function it may sleep. It MUST NOT be
 1156  *      executed in a context that DOES NOT permit sleeping.
 1157  * @assumptions
 1158  *      None
 1159  * @sideEffects
 1160  *      None
 1161  * @blocking
 1162  *      Yes when configured to operate in synchronous mode.
 1163  * @reentrant
 1164  *      No
 1165  * @threadSafe
 1166  *      Yes
 1167  *
 1168  * @param[in]       dcInstance          Target service instance.
 1169  * @param[in,out]   pSessionHandle      Session handle.
 1170  * @param[in]       pSrcBuff            Pointer to data buffer for compression.
 1171  * @param[in]       pDestBuff           Pointer to buffer space for data after
 1172  *                                      compression.
 1173  * @param[in,out]   pResults            Pointer to results structure
 1174  * @param[in]       flushFlag           Indicates the type of flush to be
 1175  *                                      performed.
 1176  * @param[in]       callbackTag         User supplied value to help correlate
 1177  *                                      the callback with its associated
 1178  *                                      request.
 1179  *
 1180  * @retval CPA_STATUS_SUCCESS       Function executed successfully.
 1181  * @retval CPA_STATUS_FAIL          Function failed.
 1182  * @retval CPA_STATUS_RETRY         Resubmit the request.
 1183  * @retval CPA_STATUS_INVALID_PARAM Invalid parameter passed in.
 1184  * @retval CPA_STATUS_RESOURCE      Error related to system resources.
 1185  * @retval CPA_DC_BAD_DATA          The input data was not properly formed.
 1186  * @retval CPA_STATUS_RESTARTING    API implementation is restarting. Resubmit
 1187  *                                  the request.
 1188  * @retval CPA_STATUS_UNSUPPORTED   Function is not supported.
 1189  *
 1190  * @pre
 1191  *      pSessionHandle has been setup using cpaDcInitSession()
 1192  * @post
 1193  *     pSessionHandle has session related state information
 1194  * @note
 1195  *     This function passes control to the compression service for processing
 1196  *
 1197  *  In synchronous mode the function returns the error status returned from the
 1198  *      service. In asynchronous mode the status is returned by the callback
 1199  *      function.
 1200  *
 1201  *  This function may be called repetitively with input until all of the
 1202  *  input has been consumed by the compression service and all the output
 1203  *      has been produced.
 1204  *
 1205  *  When this function returns, it may be that all of the available data
 1206  *  in the input buffer has not been compressed.  This situation will
 1207  *  occur when there is insufficient space in the output buffer.  The
 1208  *  calling application should note the amount of data processed, and clear
 1209  *  the output buffer and then submit the request again, with the input
 1210  *  buffer pointer to the data that was not previously compressed.
 1211  *
 1212  *  Relationship between input buffers and results buffers.
 1213  *  -# Implementations of this API must not modify the individual
 1214  *     flat buffers of the input buffer list.
 1215  *  -# The implementation communicates the amount of data
 1216  *     consumed from the source buffer list via pResults->consumed arg.
 1217  *  -# The implementation communicates the amount of data in the
 1218  *     destination buffer list via pResults->produced arg.
 1219  *
 1220  *  Source Buffer Setup Rules
 1221  *  -# The buffer list must have the correct number of flat buffers. This
 1222  *         is specified by the numBuffers element of the CpaBufferList.
 1223  *  -# Each flat buffer must have a pointer to contiguous memory that has
 1224  *     been allocated by the calling application.  The
 1225  *         number of octets to be compressed or decompressed must be stored
 1226  *     in the dataLenInBytes element of the flat buffer.
 1227  *  -# It is permissible to have one or more flat buffers with a zero length
 1228  *     data store.  This function will process all flat buffers until the
 1229  *     destination buffer is full or all source data has been processed.
 1230  *     If a buffer has zero length, then no data will be processed from
 1231  *     that buffer.
 1232  *
 1233  *  Source Buffer Processing Rules.
 1234  *  -# The buffer list is processed in index order - SrcBuff->pBuffers[0]
 1235  *     will be completely processed before SrcBuff->pBuffers[1] begins to
 1236  *     be processed.
 1237  *  -# The application must drain the destination buffers.
 1238  *     If the source data was not completely consumed, the application
 1239  *     must resubmit the request.
 1240  *  -# On return, the pResults->consumed will indicate the number of bytes
 1241  *     consumed from the input buffers.
 1242  *
 1243  *  Destination Buffer Setup Rules
 1244  *  -# The destination buffer list must have storage for processed data.
 1245  *     This implies at least one flat buffer must exist in the buffer list.
 1246  *  -# For each flat buffer in the buffer list, the dataLenInBytes element
 1247  *     must be set to the size of the buffer space.
 1248  *  -# It is permissible to have one or more flat buffers with a zero length
 1249  *         data store.
 1250  *     If a buffer has zero length, then no data will be added to
 1251  *     that buffer.
 1252  *
 1253  *  Destination Buffer Processing Rules.
 1254  *  -# The buffer list is processed in index order - DestBuff->pBuffers[0]
 1255  *     will be completely processed before DestBuff->pBuffers[1] begins to
 1256  *     be processed.
 1257  *  -# On return, the pResults->produced will indicate the number of bytes
 1258  *     written to the output buffers.
 1259  *  -# If processing has not been completed, the application must drain the
 1260  *         destination buffers and resubmit the request. The application must
 1261  *         reset the dataLenInBytes for each flat buffer in the destination
 1262  *         buffer list.
 1263  *
 1264  *  Checksum rules.
 1265  *      If a checksum is specified in the session setup data, then:
 1266  *  -# For the first request for a particular data segment the checksum
 1267  *     is initialised internally by the implementation.
 1268  *  -# The checksum is maintained by the implementation between calls
 1269  *         until the flushFlag is set to CPA_DC_FLUSH_FINAL indicating the
 1270  *         end of a particular data segment.
 1271  *      -# Intermediate checksum values are returned to the application,
 1272  *         via the CpaDcRqResults structure, in response to each request.
 1273  *         However these checksum values are not guaranteed to the valid
 1274  *         until the call with flushFlag set to CPA_DC_FLUSH_FINAL
 1275  *         completes successfully.
 1276  *
 1277  *  The application should set flushFlag to
 1278  *      CPA_DC_FLUSH_FINAL to indicate processing a particular data segment
 1279  *      is complete. It should be noted that this function may have to be
 1280  *      called more than once to process data after the flushFlag parameter has
 1281  *      been set to CPA_DC_FLUSH_FINAL if the destination buffer fills.  Refer
 1282  *      to buffer processing rules.
 1283  *
 1284  *  For stateful operations, when the function is invoked with flushFlag
 1285  *  set to CPA_DC_FLUSH_NONE or CPA_DC_FLUSH_SYNC, indicating more data
 1286  *  is yet to come, the function may or may not retain data.  When the
 1287  *  function is invoked with flushFlag set to CPA_DC_FLUSH_FULL or
 1288  *  CPA_DC_FLUSH_FINAL, the function will process all buffered data.
 1289  *
 1290  *  For stateless operations, CPA_DC_FLUSH_FINAL will cause the BFINAL
 1291  *  bit to be set for deflate compression. The initial checksum for the
 1292  *  stateless operation should be set to 0. CPA_DC_FLUSH_NONE and
 1293  *  CPA_DC_FLUSH_SYNC should not be used for stateless operations.
 1294  *
 1295  *  It is possible to maintain checksum and length information across
 1296  *  cpaDcCompressData() calls with a stateless session without maintaining
 1297  *  the full history state that is maintained by a stateful session. In this
 1298  *  mode of operation, an initial checksum value of 0 is passed into the
 1299  *  first cpaDcCompressData() call with the flush flag set to
 1300  *  CPA_DC_FLUSH_FULL. On subsequent calls to cpaDcCompressData() for this
 1301  *  session, the checksum passed to cpaDcCompressData should be set to the
 1302  *  checksum value produced by the previous call to cpaDcCompressData().
 1303  *  When the last block of input data is passed to cpaDcCompressData(), the
 1304  *  flush flag should be set to CP_DC_FLUSH_FINAL. This will cause the BFINAL
 1305  *  bit to be set in a deflate stream. It is the responsibility of the calling
 1306  *  application to maintain overall lengths across the stateless requests
 1307  *  and to pass the checksum produced by one request into the next request.
 1308  *
 1309  *  When an instance supports compressAndVerifyAndRecover, it is enabled by
 1310  *  default when using cpaDcCompressData(). If this feature needs to be
 1311  *  disabled, cpaDcCompressData2() must be used.
 1312  *
 1313  *  Synchronous or Asynchronous operation of the API is determined by
 1314  *  the value of the callbackFn parameter passed to cpaDcInitSession()
 1315  *  when the sessionHandle was setup. If a non-NULL value was specified
 1316  *  then the supplied callback function will be invoked asynchronously
 1317  *  with the response of this request.
 1318  *
 1319  *  Response ordering:
 1320  *  For each session, the implementation must maintain the order of
 1321  *  responses.  That is, if in asynchronous mode, the order of the callback
 1322  *  functions must match the order of jobs submitted by this function.
 1323  *  In a simple synchronous mode implementation, the practice of submitting
 1324  *  a request and blocking on its completion ensure ordering is preserved.
 1325  *
 1326  *  This limitation does not apply if the application employs multiple
 1327  *  threads to service a single session.
 1328  *
 1329  *  If this API is invoked asynchronous, the return code represents
 1330  *  the success or not of asynchronously scheduling the request.
 1331  *  The results of the operation, along with the amount of data consumed
 1332  *  and produced become available when the callback function is invoked.
 1333  *  As such, pResults->consumed and pResults->produced are available
 1334  *  only when the operation is complete.
 1335  *
 1336  *  The application must not use either the source or destination buffers
 1337  *  until the callback has completed.
 1338  *
 1339  * @see
 1340  *      None
 1341  *
 1342  *****************************************************************************/
 1343 CpaStatus
 1344 cpaDcCompressData( CpaInstanceHandle dcInstance,
 1345         CpaDcSessionHandle  pSessionHandle,
 1346         CpaBufferList       *pSrcBuff,
 1347         CpaBufferList       *pDestBuff,
 1348         CpaDcRqResults      *pResults,
 1349         CpaDcFlush          flushFlag,
 1350         void                 *callbackTag );
 1351 
 1352 /**
 1353  *****************************************************************************
 1354  * @ingroup cpaDc
 1355  *      Submit a request to compress a buffer of data.
 1356  *
 1357  * @description
 1358  *      This API consumes data from the input buffer and generates compressed
 1359  *      data in the output buffer. This API is very similar to
 1360  *      cpaDcCompressData() except it provides a CpaDcOpData structure for
 1361  *      passing additional input parameters not covered in cpaDcCompressData().
 1362  *
 1363  * @context
 1364  *      When called as an asynchronous function it cannot sleep. It can be
 1365  *      executed in a context that does not permit sleeping.
 1366  *      When called as a synchronous function it may sleep. It MUST NOT be
 1367  *      executed in a context that DOES NOT permit sleeping.
 1368  * @assumptions
 1369  *      None
 1370  * @sideEffects
 1371  *      None
 1372  * @blocking
 1373  *      Yes when configured to operate in synchronous mode.
 1374  * @reentrant
 1375  *      No
 1376  * @threadSafe
 1377  *      Yes
 1378  *
 1379  * @param[in]       dcInstance          Target service instance.
 1380  * @param[in,out]   pSessionHandle      Session handle.
 1381  * @param[in]       pSrcBuff            Pointer to data buffer for compression.
 1382  * @param[in]       pDestBuff           Pointer to buffer space for data after
 1383  *                                      compression.
 1384  * @param[in]       pOpData             Additional input parameters.
 1385  * @param[in,out]   pResults            Pointer to results structure
 1386  * @param[in]       callbackTag         User supplied value to help correlate
 1387  *                                      the callback with its associated
 1388  *                                      request.
 1389  *
 1390  * @retval CPA_STATUS_SUCCESS       Function executed successfully.
 1391  * @retval CPA_STATUS_FAIL          Function failed.
 1392  * @retval CPA_STATUS_RETRY         Resubmit the request.
 1393  * @retval CPA_STATUS_INVALID_PARAM Invalid parameter passed in.
 1394  * @retval CPA_STATUS_RESOURCE      Error related to system resources.
 1395  * @retval CPA_DC_BAD_DATA          The input data was not properly formed.
 1396  * @retval CPA_STATUS_UNSUPPORTED   Function is not supported.
 1397  * @retval CPA_STATUS_RESTARTING    API implementation is restarting. Resubmit
 1398  *                                  the request.
 1399  *
 1400  * @pre
 1401  *      pSessionHandle has been setup using cpaDcInitSession()
 1402  * @post
 1403  *     pSessionHandle has session related state information
 1404  * @note
 1405  *     This function passes control to the compression service for processing
 1406  *
 1407  * @see
 1408  *      cpaDcCompressData()
 1409  *
 1410  *****************************************************************************/
 1411 CpaStatus
 1412 cpaDcCompressData2( CpaInstanceHandle dcInstance,
 1413         CpaDcSessionHandle  pSessionHandle,
 1414         CpaBufferList       *pSrcBuff,
 1415         CpaBufferList       *pDestBuff,
 1416         CpaDcOpData         *pOpData,
 1417         CpaDcRqResults      *pResults,
 1418         void                 *callbackTag );
 1419 
 1420 /**
 1421  *****************************************************************************
 1422  * @ingroup cpaDc
 1423  *      Submit a request to decompress a buffer of data.
 1424  *
 1425  * @description
 1426  *      This API consumes compressed data from the input buffer and generates
 1427  *      uncompressed data in the output buffer.
 1428  *
 1429  * @context
 1430  *      When called as an asynchronous function it cannot sleep. It can be
 1431  *      executed in a context that does not permit sleeping.
 1432  *      When called as a synchronous function it may sleep. It MUST NOT be
 1433  *      executed in a context that DOES NOT permit sleeping.
 1434  * @assumptions
 1435  *      None
 1436  * @sideEffects
 1437  *      None
 1438  * @blocking
 1439  *      Yes when configured to operate in synchronous mode.
 1440  * @reentrant
 1441  *      No
 1442  * @threadSafe
 1443  *      Yes
 1444  *
 1445  * @param[in]       dcInstance          Target service instance.
 1446  * @param[in,out]   pSessionHandle      Session handle.
 1447  * @param[in]       pSrcBuff            Pointer to data buffer for compression.
 1448  * @param[in]       pDestBuff           Pointer to buffer space for data
 1449  *                                      after decompression.
 1450  * @param[in,out]   pResults            Pointer to results structure
 1451  * @param[in]       flushFlag           When set to CPA_DC_FLUSH_FINAL, indicates
 1452  *                                      that the input buffer contains all of
 1453  *                                      the data for the compression session,
 1454  *                                      allowing the function to release
 1455  *                                      history data.
 1456  * @param[in]        callbackTag        User supplied value to help correlate
 1457  *                                      the callback with its associated
 1458  *                                      request.
 1459  *
 1460  * @retval CPA_STATUS_SUCCESS       Function executed successfully.
 1461  * @retval CPA_STATUS_FAIL          Function failed.
 1462  * @retval CPA_STATUS_RETRY         Resubmit the request.
 1463  * @retval CPA_STATUS_INVALID_PARAM Invalid parameter passed in.
 1464  * @retval CPA_STATUS_RESOURCE      Error related to system resources.
 1465  * @retval CPA_DC_BAD_DATA          The input data was not properly formed.
 1466  * @retval CPA_STATUS_RESTARTING    API implementation is restarting. Resubmit
 1467  *                                  the request.
 1468  * @retval CPA_STATUS_UNSUPPORTED   Function is not supported.
 1469  *
 1470  * @pre
 1471  *      pSessionHandle has been setup using cpaDcInitSession()
 1472  * @post
 1473  *     pSessionHandle has session related state information
 1474  * @note
 1475  *      This function passes control to the compression service for
 1476  *      decompression.  The function returns the status from the service.
 1477  *
 1478  *      This function may be called repetitively with input until all of the
 1479  *      input has been provided and all the output has been consumed.
 1480  *
 1481  *      This function has identical buffer processing rules as
 1482  *      cpaDcCompressData().
 1483  *
 1484  *      This function has identical checksum processing rules as
 1485  *      cpaDcCompressData().
 1486  *
 1487  *      The application should set flushFlag to
 1488  *      CPA_DC_FLUSH_FINAL to indicate processing a particular compressed
 1489  *      data segment is complete. It should be noted that this function may
 1490  *      have to be called more than once to process data after flushFlag
 1491  *      has been set if the destination buffer fills.  Refer to
 1492  *      buffer processing rules in cpaDcCompressData().
 1493  *
 1494  *      Synchronous or Asynchronous operation of the API is determined by
 1495  *      the value of the callbackFn parameter passed to cpaDcInitSession()
 1496  *      when the sessionHandle was setup. If a non-NULL value was specified
 1497  *      then the supplied callback function will be invoked asynchronously
 1498  *      with the response of this request, along with the callbackTag
 1499  *      specified in the function.
 1500  *
 1501  *      The same response ordering constraints identified in the
 1502  *      cpaDcCompressData API apply to this function.
 1503  *
 1504  * @see
 1505  *      cpaDcCompressData()
 1506  *
 1507  *****************************************************************************/
 1508 CpaStatus
 1509 cpaDcDecompressData( CpaInstanceHandle dcInstance,
 1510         CpaDcSessionHandle  pSessionHandle,
 1511         CpaBufferList       *pSrcBuff,
 1512         CpaBufferList       *pDestBuff,
 1513         CpaDcRqResults      *pResults,
 1514         CpaDcFlush          flushFlag,
 1515         void                *callbackTag );
 1516 
 1517 
 1518 /**
 1519  *****************************************************************************
 1520  * @ingroup cpaDc
 1521  *      Submit a request to decompress a buffer of data.
 1522  *
 1523  * @description
 1524  *      This API consumes compressed data from the input buffer and generates
 1525  *      uncompressed data in the output buffer. This API is very similar to
 1526  *      cpaDcDecompressData() except it provides a CpaDcOpData structure for
 1527  *      passing additional input parameters not covered in cpaDcDecompressData().
 1528  *
 1529  * @context
 1530  *      When called as an asynchronous function it cannot sleep. It can be
 1531  *      executed in a context that does not permit sleeping.
 1532  *      When called as a synchronous function it may sleep. It MUST NOT be
 1533  *      executed in a context that DOES NOT permit sleeping.
 1534  * @assumptions
 1535  *      None
 1536  * @sideEffects
 1537  *      None
 1538  * @blocking
 1539  *      Yes when configured to operate in synchronous mode.
 1540  * @reentrant
 1541  *      No
 1542  * @threadSafe
 1543  *      Yes
 1544  *
 1545  * @param[in]       dcInstance          Target service instance.
 1546  * @param[in,out]   pSessionHandle      Session handle.
 1547  * @param[in]       pSrcBuff            Pointer to data buffer for compression.
 1548  * @param[in]       pDestBuff           Pointer to buffer space for data
 1549  *                                      after decompression.
 1550  * @param[in]       pOpData             Additional input parameters.
 1551  * @param[in,out]   pResults            Pointer to results structure
 1552  * @param[in]        callbackTag        User supplied value to help correlate
 1553  *                                      the callback with its associated
 1554  *                                      request.
 1555  *
 1556  * @retval CPA_STATUS_SUCCESS       Function executed successfully.
 1557  * @retval CPA_STATUS_FAIL          Function failed.
 1558  * @retval CPA_STATUS_RETRY         Resubmit the request.
 1559  * @retval CPA_STATUS_INVALID_PARAM Invalid parameter passed in.
 1560  * @retval CPA_STATUS_RESOURCE      Error related to system resources.
 1561  * @retval CPA_DC_BAD_DATA          The input data was not properly formed.
 1562  * @retval CPA_STATUS_UNSUPPORTED   Function is not supported.
 1563  * @retval CPA_STATUS_RESTARTING    API implementation is restarting. Resubmit
 1564  *                                  the request.
 1565  *
 1566  * @pre
 1567  *      pSessionHandle has been setup using cpaDcInitSession()
 1568  * @post
 1569  *     pSessionHandle has session related state information
 1570  * @note
 1571  *      This function passes control to the compression service for
 1572  *      decompression.  The function returns the status from the service.
 1573  *
 1574  * @see
 1575  *      cpaDcDecompressData()
 1576  *      cpaDcCompressData2()
 1577  *      cpaDcCompressData()
 1578  *
 1579  *****************************************************************************/
 1580 CpaStatus
 1581 cpaDcDecompressData2( CpaInstanceHandle dcInstance,
 1582         CpaDcSessionHandle  pSessionHandle,
 1583         CpaBufferList       *pSrcBuff,
 1584         CpaBufferList       *pDestBuff,
 1585         CpaDcOpData         *pOpData,
 1586         CpaDcRqResults      *pResults,
 1587         void                *callbackTag );
 1588 
 1589 /**
 1590  *****************************************************************************
 1591  * @ingroup cpaDc
 1592  *      Generate compression header.
 1593  *
 1594  * @description
 1595  *      This API generates the gzip or the zlib header and stores it in the
 1596  *      output buffer.
 1597  *
 1598  * @context
 1599  *      This function may be call from any context.
 1600  * @assumptions
 1601  *      None
 1602  * @sideEffects
 1603  *      None
 1604  * @blocking
 1605  *      No
 1606  * @reentrant
 1607  *      No
 1608  * @threadSafe
 1609  *      Yes
 1610  *
 1611  * @param[in,out] pSessionHandle    Session handle.
 1612  * @param[in] pDestBuff             Pointer to data buffer where the
 1613  *                                  compression header will go.
 1614  * @param[out] count                Pointer to counter filled in with
 1615  *                                  header size.
 1616  *
 1617  * @retval CPA_STATUS_SUCCESS        Function executed successfully.
 1618  * @retval CPA_STATUS_FAIL           Function failed.
 1619  * @retval CPA_STATUS_INVALID_PARAM  Invalid parameter passed in.
 1620  * @retval CPA_STATUS_RESTARTING     API implementation is restarting. Resubmit
 1621  *                                   the request.
 1622  * @retval CPA_STATUS_UNSUPPORTED    Function is not supported.
 1623  *
 1624  * @pre
 1625  *      pSessionHandle has been setup using cpaDcInitSession()
 1626  *
 1627  * @note
 1628  *      This function can output a 10 byte gzip header or 2 byte zlib header to
 1629  *      the destination buffer. The session properties are used to determine
 1630  *      the header type. To output a header the session must have been
 1631  *      initialized with CpaDcCompType CPA_DC_DEFLATE for any other value no
 1632  *      header is produced. To output a gzip header the session must have been
 1633  *      initialized with CpaDcChecksum CPA_DC_CRC32. To output a zlib header
 1634  *      the session must have been initialized with CpaDcChecksum CPA_DC_ADLER32.
 1635  *      For CpaDcChecksum CPA_DC_NONE no header is output.
 1636  *
 1637  *      If the compression requires a gzip header, then this header requires
 1638  *      at a minimum the following fields, defined in RFC1952:
 1639  *          ID1: 0x1f
 1640  *          ID2: 0x8b
 1641  *          CM: Compression method = 8 for deflate
 1642  *
 1643  *      The zlib header is defined in RFC1950 and this function must implement
 1644  *      as a minimum:
 1645  *          CM: four bit compression method - 8 is deflate with window size to
 1646  *              32k
 1647  *          CINFO: four bit window size (see RFC1950 for details), 7 is 32k
 1648  *              window
 1649  *          FLG: defined as:
 1650  *              -   Bits 0 - 4: check bits for CM, CINFO and FLG (see RFC1950)
 1651  *              -   Bit 5:  FDICT 0 = default, 1 is preset dictionary
 1652  *              -   Bits 6 - 7: FLEVEL, compression level (see RFC 1950)
 1653  *
 1654  *      The counter parameter will be set
 1655  *      to the number of bytes added to the buffer. The pData will be
 1656  *      not be changed.
 1657  *
 1658  * @see
 1659  *      None
 1660  *
 1661  *****************************************************************************/
 1662 CpaStatus
 1663 cpaDcGenerateHeader( CpaDcSessionHandle pSessionHandle,
 1664     CpaFlatBuffer *pDestBuff, Cpa32U *count );
 1665 
 1666 /**
 1667  *****************************************************************************
 1668  * @ingroup cpaDc
 1669  *      Generate compression footer.
 1670  *
 1671  * @description
 1672  *      This API generates the footer for gzip or zlib and stores it in the
 1673  *      output buffer.
 1674  * @context
 1675  *      This function may be call from any context.
 1676  * @assumptions
 1677  *      None
 1678  * @sideEffects
 1679  *      All session variables are reset
 1680  * @blocking
 1681  *      No
 1682  * @reentrant
 1683  *      No
 1684  * @threadSafe
 1685  *      Yes
 1686  *
 1687  * @param[in,out] pSessionHandle    Session handle.
 1688  * @param[in] pDestBuff             Pointer to data buffer where the
 1689  *                                  compression footer will go.
 1690  * @param[in,out] pResults          Pointer to results structure filled by
 1691  *                                  CpaDcCompressData.  Updated with the
 1692  *                                  results of this API call
 1693  *
 1694  * @retval CPA_STATUS_SUCCESS        Function executed successfully.
 1695  * @retval CPA_STATUS_FAIL           Function failed.
 1696  * @retval CPA_STATUS_UNSUPPORTED    Function is not supported.
 1697  * @retval CPA_STATUS_INVALID_PARAM  Invalid parameter passed in.
 1698  * @retval CPA_STATUS_RESTARTING     API implementation is restarting. Resubmit
 1699  *                                   the request.
 1700  * @retval CPA_STATUS_UNSUPPORTED    Function is not supported.
 1701  *
 1702  * @pre
 1703  *      pSessionHandle has been setup using cpaDcInitSession()
 1704  *      pResults structure has been filled by CpaDcCompressData().
 1705  *
 1706  * @note
 1707  *      Depending on the session variables, this function can add the
 1708  *      alder32 footer to the zlib compressed data as defined in RFC1950.  If
 1709  *      required, it can also add the gzip footer, which is the crc32 of the
 1710  *      uncompressed data and the length of the uncompressed data.  This
 1711  *      section is defined in RFC1952. The session variables used to determine
 1712  *      the header type are CpaDcCompType and CpaDcChecksum, see cpaDcGenerateHeader
 1713  *      for more details.
 1714  *
 1715  *      An artifact of invoking this function for writing the footer data is
 1716  *      that all opaque session specific data is re-initialized.  If the
 1717  *      compression level and file types are consistent, the upper level
 1718  *      application can continue processing compression requests using the
 1719  *      same session handle.
 1720  *
 1721  *      The produced element of the pResults structure will be incremented by the
 1722  *      numbers bytes added to the buffer.  The pointer to the buffer
 1723  *      will not be modified.
 1724  *
 1725  *      This function is not supported for stateless sessions.
 1726  *
 1727  * @see
 1728  *      None
 1729  *
 1730  *****************************************************************************/
 1731 CpaStatus
 1732 cpaDcGenerateFooter( CpaDcSessionHandle pSessionHandle,
 1733     CpaFlatBuffer *pDestBuff, CpaDcRqResults *pResults );
 1734 
 1735 
 1736 /**
 1737  *****************************************************************************
 1738  * @ingroup cpaDc
 1739  *      Retrieve statistics
 1740  *
 1741  * @description
 1742  *      This API retrieves the current statistics for a compression instance.
 1743  *
 1744  * @context
 1745  *      This function may be call from any context.
 1746  * @assumptions
 1747  *      None
 1748  * @sideEffects
 1749  *        None
 1750  * @blocking
 1751  *      Yes
 1752  * @reentrant
 1753  *      No
 1754  * @threadSafe
 1755  *      Yes
 1756  *
 1757  * @param[in]  dcInstance       Instance handle.
 1758  * @param[out] pStatistics      Pointer to statistics structure.
 1759  *
 1760  * @retval CPA_STATUS_SUCCESS        Function executed successfully.
 1761  * @retval CPA_STATUS_FAIL           Function failed.
 1762  * @retval CPA_STATUS_INVALID_PARAM  Invalid parameter passed in.
 1763  * @retval CPA_STATUS_RESTARTING     API implementation is restarting. Resubmit
 1764  *                                   the request.
 1765  * @retval CPA_STATUS_UNSUPPORTED    Function is not supported.
 1766  *
 1767  * @pre
 1768  *      None
 1769  * @post
 1770  *     None
 1771  *
 1772  * @see
 1773  *      None
 1774  *
 1775  *****************************************************************************/
 1776 CpaStatus
 1777 cpaDcGetStats( CpaInstanceHandle dcInstance,
 1778       CpaDcStats *pStatistics );
 1779 
 1780 /*****************************************************************************/
 1781 /* Instance Discovery Functions */
 1782 
 1783 /**
 1784  *****************************************************************************
 1785  * @ingroup cpaDc
 1786  *      Get the number of device instances that are supported by the API
 1787  *      implementation.
 1788  *
 1789  * @description
 1790  *
 1791  *     This function will get the number of device instances that are supported
 1792  *     by an implementation of the compression API. This number is then used to
 1793  *     determine the size of the array that must be passed to
 1794  *     cpaDcGetInstances().
 1795  *
 1796  * @context
 1797  *      This function MUST NOT be called from an interrupt context as it MAY
 1798  *      sleep.
 1799  * @assumptions
 1800  *      None
 1801  * @sideEffects
 1802  *      None
 1803  * @blocking
 1804  *      This function is synchronous and blocking.
 1805  * @reentrant
 1806  *      No
 1807  * @threadSafe
 1808  *      Yes
 1809  *
 1810  * @param[out] pNumInstances        Pointer to where the number of
 1811  *                                   instances will be written.
 1812  *
 1813  * @retval CPA_STATUS_SUCCESS        Function executed successfully.
 1814  * @retval CPA_STATUS_FAIL           Function failed.
 1815  * @retval CPA_STATUS_INVALID_PARAM  Invalid parameter passed in.
 1816  * @retval CPA_STATUS_UNSUPPORTED    Function is not supported.
 1817  *
 1818  * @pre
 1819  *      None
 1820  * @post
 1821  *      None
 1822  * @note
 1823  *      This function operates in a synchronous manner and no asynchronous
 1824  *      callback will be generated
 1825  *
 1826  * @see
 1827  *      cpaDcGetInstances
 1828  *
 1829  *****************************************************************************/
 1830 CpaStatus
 1831 cpaDcGetNumInstances(Cpa16U* pNumInstances);
 1832 
 1833 /**
 1834  *****************************************************************************
 1835  * @ingroup cpaDc
 1836  *      Get the handles to the device instances that are supported by the
 1837  *      API implementation.
 1838  *
 1839  * @description
 1840  *
 1841  *      This function will return handles to the device instances that are
 1842  *      supported by an implementation of the compression API. These instance
 1843  *      handles can then be used as input parameters with other compression API
 1844  *      functions.
 1845  *
 1846  *      This function will populate an array that has been allocated by the
 1847  *      caller. The size of this API is determined by the
 1848  *      cpaDcGetNumInstances() function.
 1849  *
 1850  * @context
 1851  *      This function MUST NOT be called from an interrupt context as it MAY
 1852  *      sleep.
 1853  * @assumptions
 1854  *      None
 1855  * @sideEffects
 1856  *      None
 1857  * @blocking
 1858  *      This function is synchronous and blocking.
 1859  * @reentrant
 1860  *      No
 1861  * @threadSafe
 1862  *      Yes
 1863  *
 1864  * @param[in]  numInstances     Size of the array.
 1865  * @param[out] dcInstances          Pointer to where the instance
 1866  *                                   handles will be written.
 1867  *
 1868  * @retval CPA_STATUS_SUCCESS        Function executed successfully.
 1869  * @retval CPA_STATUS_FAIL           Function failed.
 1870  * @retval CPA_STATUS_INVALID_PARAM  Invalid parameter passed in.
 1871  * @retval CPA_STATUS_UNSUPPORTED    Function is not supported.
 1872  *
 1873  * @pre
 1874  *      None
 1875  * @post
 1876  *      None
 1877  * @note
 1878  *      This function operates in a synchronous manner and no asynchronous
 1879  *      callback will be generated
 1880  *
 1881  * @see
 1882  *      cpaDcGetInstances
 1883  *
 1884  *****************************************************************************/
 1885 CpaStatus
 1886 cpaDcGetInstances(Cpa16U numInstances,
 1887                         CpaInstanceHandle* dcInstances);
 1888 
 1889 /**
 1890  *****************************************************************************
 1891  * @ingroup cpaDc
 1892  *      Compression Component utility function to determine the number of
 1893  *      intermediate buffers required by an implementation.
 1894  *
 1895  * @description
 1896  *      This function will determine the number of intermediate buffer lists
 1897  *      required by an implementation for a compression instance. These buffers
 1898  *      should then be allocated and provided when calling @ref cpaDcStartInstance()
 1899  *      to start a compression instance that will use dynamic compression.
 1900  *
 1901  * @context
 1902  *      This function may sleep, and  MUST NOT be called in interrupt context.
 1903  * @assumptions
 1904  *      None
 1905  * @sideEffects
 1906  *      None
 1907  * @blocking
 1908  *      This function is synchronous and blocking.
 1909  * @reentrant
 1910  *      No
 1911  * @threadSafe
 1912  *      Yes
 1913  * @param[in,out] instanceHandle        Handle to an instance of this API to be
 1914  *                                      initialized.
 1915  * @param[out]  pNumBuffers             When the function returns, this will
 1916  *                                      specify the number of buffer lists that
 1917  *                                      should be used as intermediate buffers
 1918  *                                      when calling cpaDcStartInstance().
 1919  *
 1920  * @retval CPA_STATUS_SUCCESS       Function executed successfully.
 1921  * @retval CPA_STATUS_FAIL          Function failed. Suggested course of action
 1922  *                                  is to shutdown and restart.
 1923  * @retval CPA_STATUS_UNSUPPORTED    Function is not supported.
 1924  *
 1925  * @pre
 1926  *      None
 1927  * @post
 1928  *      None
 1929  * @note
 1930  *      Note that this is a synchronous function and has no completion callback
 1931  *      associated with it.
 1932  *
 1933  * @see
 1934  *      cpaDcStartInstance()
 1935  *
 1936  *****************************************************************************/
 1937 CpaStatus
 1938 cpaDcGetNumIntermediateBuffers(CpaInstanceHandle instanceHandle,
 1939         Cpa16U *pNumBuffers);
 1940 
 1941 /**
 1942  *****************************************************************************
 1943  * @ingroup cpaDc
 1944  *      Compression Component Initialization and Start function.
 1945  *
 1946  * @description
 1947  *      This function will initialize and start the compression component.
 1948  *      It MUST be called before any other compress function is called. This
 1949  *      function SHOULD be called only once (either for the very first time,
 1950  *      or after an cpaDcStopInstance call which succeeded) per instance.
 1951  *      Subsequent calls will have no effect.
 1952  *
 1953  *      If required by an implementation, this function can be provided with
 1954  *      instance specific intermediate buffers.  The intent is to provide an
 1955  *      instance specific location to store intermediate results during dynamic
 1956  *      instance Huffman tree compression requests. The memory should be
 1957  *      accessible by the compression engine. The buffers are to support
 1958  *      deflate compression with dynamic Huffman Trees.  Each buffer list
 1959  *      should be similar in size to twice the destination buffer size passed
 1960  *      to the compress API. The number of intermediate buffer lists may vary
 1961  *      between implementations and so @ref cpaDcGetNumIntermediateBuffers()
 1962  *      should be called first to determine the number of intermediate
 1963  *      buffers required by the implementation.
 1964  *
 1965  *      If not required, this parameter can be passed in as NULL.
 1966  *
 1967  * @context
 1968  *      This function may sleep, and  MUST NOT be called in interrupt context.
 1969  * @assumptions
 1970  *      None
 1971  * @sideEffects
 1972  *      None
 1973  * @blocking
 1974  *      This function is synchronous and blocking.
 1975  * @reentrant
 1976  *      No
 1977  * @threadSafe
 1978  *      Yes
 1979  * @param[in,out] instanceHandle        Handle to an instance of this API to be
 1980  *                                      initialized.
 1981  * @param[in]   numBuffers              Number of buffer lists represented by
 1982  *                                      the pIntermediateBuffers parameter.
 1983  *                                      Note: @ref cpaDcGetNumIntermediateBuffers()
 1984  *                                      can be used to determine the number of
 1985  *                                      intermediate buffers that an implementation
 1986  *                                      requires.
 1987  * @param[in]   pIntermediateBuffers    Optional pointer to Instance specific
 1988  *                                      DRAM buffer.
 1989  *
 1990  * @retval CPA_STATUS_SUCCESS       Function executed successfully.
 1991  * @retval CPA_STATUS_FAIL          Function failed. Suggested course of action
 1992  *                                  is to shutdown and restart.
 1993  * @retval CPA_STATUS_UNSUPPORTED    Function is not supported.
 1994  *
 1995  * @pre
 1996  *      None
 1997  * @post
 1998  *      None
 1999  * @note
 2000  *      Note that this is a synchronous function and has no completion callback
 2001  *      associated with it.
 2002  *
 2003  * @see
 2004  *      cpaDcStopInstance()
 2005  *      cpaDcGetNumIntermediateBuffers()
 2006  *
 2007  *****************************************************************************/
 2008 CpaStatus
 2009 cpaDcStartInstance(CpaInstanceHandle instanceHandle,
 2010         Cpa16U numBuffers,
 2011         CpaBufferList **pIntermediateBuffers);
 2012 
 2013 /**
 2014  *****************************************************************************
 2015  * @ingroup cpaDc
 2016  *      Compress Component Stop function.
 2017  *
 2018  * @description
 2019  *      This function will stop the Compression component and free
 2020  *      all system resources associated with it. The client MUST ensure that
 2021  *      all outstanding operations have completed before calling this function.
 2022  *      The recommended approach to ensure this is to deregister all session or
 2023  *      callback handles before calling this function. If outstanding
 2024  *      operations still exist when this function is invoked, the callback
 2025  *      function for each of those operations will NOT be invoked and the
 2026  *      shutdown will continue.  If the component is to be restarted, then a
 2027  *      call to cpaDcStartInstance is required.
 2028  *
 2029  * @context
 2030  *      This function may sleep, and so MUST NOT be called in interrupt
 2031  *      context.
 2032  * @assumptions
 2033  *      None
 2034  * @sideEffects
 2035  *      None
 2036  * @blocking
 2037  *      This function is synchronous and blocking.
 2038  * @reentrant
 2039  *      No
 2040  * @threadSafe
 2041  *      Yes
 2042  * @param[in] instanceHandle        Handle to an instance of this API to be
 2043  *                                  shutdown.
 2044  *
 2045  * @retval CPA_STATUS_SUCCESS       Function executed successfully.
 2046  * @retval CPA_STATUS_FAIL          Function failed. Suggested course of action
 2047  *                                  is to ensure requests are not still being
 2048  *                                  submitted and that all sessions are
 2049  *                                  deregistered. If this does not help, then
 2050  *                                  forcefully remove the component from the
 2051  *                                  system.
 2052  * @retval CPA_STATUS_UNSUPPORTED   Function is not supported.
 2053  *
 2054  * @pre
 2055  *      The component has been initialized via cpaDcStartInstance
 2056  * @post
 2057  *      None
 2058  * @note
 2059  *      Note that this is a synchronous function and has no completion callback
 2060  *      associated with it.
 2061  *
 2062  * @see
 2063  *      cpaDcStartInstance()
 2064  *
 2065  *****************************************************************************/
 2066 CpaStatus
 2067 cpaDcStopInstance(CpaInstanceHandle instanceHandle);
 2068 
 2069 
 2070 /**
 2071  *****************************************************************************
 2072  * @ingroup cpaDc
 2073  *      Function to get information on a particular instance.
 2074  *
 2075  * @description
 2076  *      This function will provide instance specific information through a
 2077  *      @ref CpaInstanceInfo2 structure.
 2078  *
 2079  * @context
 2080  *      This function will be executed in a context that requires that sleeping
 2081  *      MUST NOT be permitted.
 2082  * @assumptions
 2083  *      None
 2084  * @sideEffects
 2085  *      None
 2086  * @blocking
 2087  *      Yes
 2088  * @reentrant
 2089  *      No
 2090  * @threadSafe
 2091  *      Yes
 2092  *
 2093  * @param[in]  instanceHandle       Handle to an instance of this API to be
 2094  *                                  initialized.
 2095  * @param[out] pInstanceInfo2       Pointer to the memory location allocated by
 2096  *                                  the client into which the CpaInstanceInfo2
 2097  *                                  structure will be written.
 2098  *
 2099  * @retval CPA_STATUS_SUCCESS        Function executed successfully.
 2100  * @retval CPA_STATUS_FAIL           Function failed.
 2101  * @retval CPA_STATUS_INVALID_PARAM  Invalid parameter passed in.
 2102  * @retval CPA_STATUS_UNSUPPORTED    Function is not supported.
 2103  *
 2104  * @pre
 2105  *      The client has retrieved an instanceHandle from successive calls to
 2106  *      @ref cpaDcGetNumInstances and @ref cpaDcGetInstances.
 2107  * @post
 2108  *      None
 2109  * @note
 2110  *      None
 2111  * @see
 2112  *      cpaDcGetNumInstances,
 2113  *      cpaDcGetInstances,
 2114  *      CpaInstanceInfo2
 2115  *
 2116  *****************************************************************************/
 2117 CpaStatus
 2118 cpaDcInstanceGetInfo2(const CpaInstanceHandle instanceHandle,
 2119         CpaInstanceInfo2 * pInstanceInfo2);
 2120 
 2121 /*****************************************************************************/
 2122 /* Instance Notification Functions                                           */
 2123 /*****************************************************************************/
 2124 /**
 2125  *****************************************************************************
 2126   * @ingroup cpaDc
 2127  *      Callback function for instance notification support.
 2128  *
 2129  * @description
 2130  *      This is the prototype for the instance notification callback function.
 2131  *      The callback function is passed in as a parameter to the
 2132  *      @ref cpaDcInstanceSetNotificationCb function.
 2133  *
 2134  * @context
 2135  *      This function will be executed in a context that requires that sleeping
 2136  *      MUST NOT be permitted.
 2137  * @assumptions
 2138  *      None
 2139  * @sideEffects
 2140  *      None
 2141  * @blocking
 2142  *      No
 2143  * @reentrant
 2144  *      No
 2145  * @threadSafe
 2146  *      Yes
 2147  *
 2148  * @param[in] instanceHandle   Instance handle.
 2149  * @param[in] pCallbackTag     Opaque value provided by user while making
 2150  *                             individual function calls.
 2151  * @param[in] instanceEvent    The event that will trigger this function to
 2152  *                             get invoked.
 2153  *
 2154  * @retval
 2155  *      None
 2156  * @pre
 2157  *      Component has been initialized and the notification function has been
 2158  *  set via the cpaDcInstanceSetNotificationCb function.
 2159  * @post
 2160  *      None
 2161  * @note
 2162  *      None
 2163  * @see
 2164  *      cpaDcInstanceSetNotificationCb(),
 2165  *
 2166  *****************************************************************************/
 2167 typedef void (*CpaDcInstanceNotificationCbFunc)(
 2168         const CpaInstanceHandle instanceHandle,
 2169         void * pCallbackTag,
 2170         const CpaInstanceEvent instanceEvent);
 2171 
 2172 /**
 2173  *****************************************************************************
 2174  * @ingroup cpaDc
 2175  *      Subscribe for instance notifications.
 2176  *
 2177  * @description
 2178  *      Clients of the CpaDc interface can subscribe for instance notifications
 2179  *      by registering a @ref CpaDcInstanceNotificationCbFunc function.
 2180  *
 2181  * @context
 2182  *      This function may be called from any context.
 2183  * @assumptions
 2184  *      None
 2185  * @sideEffects
 2186  *      None
 2187  * @blocking
 2188  *      No
 2189  * @reentrant
 2190  *      No
 2191  * @threadSafe
 2192  *      Yes
 2193  *
 2194  * @param[in] instanceHandle           Instance handle.
 2195  * @param[in] pInstanceNotificationCb  Instance notification callback
 2196  *                                     function pointer.
 2197  * @param[in] pCallbackTag             Opaque value provided by user while
 2198  *                                     making individual function calls.
 2199  *
 2200  * @retval CPA_STATUS_SUCCESS          Function executed successfully.
 2201  * @retval CPA_STATUS_FAIL             Function failed.
 2202  * @retval CPA_STATUS_INVALID_PARAM    Invalid parameter passed in.
 2203  * @retval CPA_STATUS_UNSUPPORTED    Function is not supported.
 2204  *
 2205  * @pre
 2206  *      Instance has been initialized.
 2207  * @post
 2208  *      None
 2209  * @note
 2210  *      None
 2211  * @see
 2212  *      CpaDcInstanceNotificationCbFunc
 2213  *
 2214  *****************************************************************************/
 2215 CpaStatus
 2216 cpaDcInstanceSetNotificationCb(
 2217         const CpaInstanceHandle instanceHandle,
 2218         const CpaDcInstanceNotificationCbFunc pInstanceNotificationCb,
 2219         void *pCallbackTag);
 2220 
 2221 
 2222 /**
 2223  *****************************************************************************
 2224  * @ingroup cpaDc
 2225  *      Get the size of the memory required to hold the session information.
 2226  *
 2227  * @description
 2228  *
 2229  *      The client of the Data Compression API is responsible for
 2230  *      allocating sufficient memory to hold session information and the context
 2231  *      data. This function provides a means for determining the size of the
 2232  *      session information and the size of the context data.
 2233  *
 2234  * @context
 2235  *      No restrictions
 2236  * @assumptions
 2237  *      None
 2238  * @sideEffects
 2239  *      None
 2240  * @blocking
 2241  *      No
 2242  * @reentrant
 2243  *      No
 2244  * @threadSafe
 2245  *      Yes
 2246  *
 2247  * @param[in] dcInstance            Instance handle.
 2248  * @param[in] pSessionData          Pointer to a user instantiated structure
 2249  *                                  containing session data.
 2250  * @param[out] pSessionSize         On return, this parameter will be the size
 2251  *                                  of the memory that will be
 2252  *                                  required by cpaDcInitSession() for session
 2253  *                                  data.
 2254  * @param[out] pContextSize         On return, this parameter will be the size
 2255  *                                  of the memory that will be required
 2256  *                                  for context data.  Context data is
 2257  *                                  save/restore data including history and
 2258  *                                  any implementation specific data that is
 2259  *                                  required for a save/restore operation.
 2260  *
 2261  * @retval CPA_STATUS_SUCCESS        Function executed successfully.
 2262  * @retval CPA_STATUS_FAIL           Function failed.
 2263  * @retval CPA_STATUS_INVALID_PARAM  Invalid parameter passed in.
 2264  * @retval CPA_STATUS_UNSUPPORTED    Function is not supported.
 2265  *
 2266  * @pre
 2267  *      None
 2268  * @post
 2269  *      None
 2270  * @note
 2271  *      Only a synchronous version of this function is provided.
 2272  *
 2273  *      It is expected that context data is comprised of the history and
 2274  *      any data stores that are specific to the history such as linked
 2275  *      lists or hash tables.
 2276  *      For stateless sessions the context size returned from this function
 2277  *      will be zero. For stateful sessions the context size returned will
 2278  *      depend on the session setup data.
 2279  *
 2280  *      Session data is expected to include interim checksum values, various
 2281  *      counters and other session related data that needs to persist
 2282  *      between invocations.
 2283  *      For a given implementation of this API, it is safe to assume that
 2284  *      cpaDcGetSessionSize() will always return the same session size and
 2285  *      that the size will not be different for different setup data
 2286  *      parameters. However, it should be noted that the size may change:
 2287  *       (1) between different implementations of the API (e.g. between software
 2288  *           and hardware implementations or between different hardware
 2289  *           implementations)
 2290  *       (2) between different releases of the same API implementation.
 2291  *
 2292  * @see
 2293  *      cpaDcInitSession()
 2294  *
 2295  *****************************************************************************/
 2296 CpaStatus
 2297 cpaDcGetSessionSize(CpaInstanceHandle dcInstance,
 2298         CpaDcSessionSetupData* pSessionData,
 2299         Cpa32U* pSessionSize, Cpa32U* pContextSize );
 2300 
 2301 /**
 2302  *****************************************************************************
 2303  * @ingroup cpaDc
 2304  *      Function to return the size of the memory which must be allocated for
 2305  *      the pPrivateMetaData member of CpaBufferList.
 2306  *
 2307  * @description
 2308  *      This function is used to obtain the size (in bytes) required to allocate
 2309  *      a buffer descriptor for the pPrivateMetaData member in the
 2310  *      CpaBufferList structure.
 2311  *      Should the function return zero then no meta data is required for the
 2312  *      buffer list.
 2313  *
 2314  * @context
 2315  *      This function may be called from any context.
 2316  * @assumptions
 2317  *      None
 2318  * @sideEffects
 2319  *      None
 2320  * @blocking
 2321  *      No
 2322  * @reentrant
 2323  *      No
 2324  * @threadSafe
 2325  *      Yes
 2326  *
 2327  * @param[in]  instanceHandle      Handle to an instance of this API.
 2328  * @param[in]  numBuffers          The number of pointers in the CpaBufferList.
 2329  *                                 This is the maximum number of CpaFlatBuffers
 2330  *                                 which may be contained in this CpaBufferList.
 2331  * @param[out] pSizeInBytes        Pointer to the size in bytes of memory to be
 2332  *                                 allocated when the client wishes to allocate
 2333  *                                 a cpaFlatBuffer.
 2334  *
 2335  * @retval CPA_STATUS_SUCCESS        Function executed successfully.
 2336  * @retval CPA_STATUS_FAIL           Function failed.
 2337  * @retval CPA_STATUS_INVALID_PARAM  Invalid parameter passed in.
 2338  * @retval CPA_STATUS_UNSUPPORTED    Function is not supported.
 2339  *
 2340  * @pre
 2341  *      None
 2342  * @post
 2343  *      None
 2344  * @note
 2345  *      None
 2346  * @see
 2347  *      cpaDcGetInstances()
 2348  *
 2349  *****************************************************************************/
 2350 CpaStatus
 2351 cpaDcBufferListGetMetaSize(const CpaInstanceHandle instanceHandle,
 2352         Cpa32U numBuffers,
 2353         Cpa32U *pSizeInBytes);
 2354 
 2355 
 2356 /**
 2357  *****************************************************************************
 2358  * @ingroup cpaDc
 2359  *      Function to return a string indicating the specific error that occurred
 2360  *      within the system.
 2361  *
 2362  * @description
 2363  *      When a function returns any error including CPA_STATUS_SUCCESS, the
 2364  *      client can invoke this function to get a string which describes the
 2365  *      general error condition, and if available additional information on
 2366  *      the specific error.
 2367  *      The Client MUST allocate CPA_STATUS_MAX_STR_LENGTH_IN_BYTES bytes for  the buffer
 2368  *      string.
 2369  *
 2370  * @context
 2371  *      This function may be called from any context.
 2372  * @assumptions
 2373  *      None
 2374  * @sideEffects
 2375  *      None
 2376  * @blocking
 2377  *      No
 2378  * @reentrant
 2379  *      No
 2380  * @threadSafe
 2381  *      Yes
 2382  *
 2383  * @param[in] dcInstance        Handle to an instance of this API.
 2384  * @param[in] errStatus         The error condition that occurred.
 2385  * @param[in,out] pStatusText   Pointer to the string buffer that will
 2386  *                              be updated with the status text. The invoking
 2387  *                              application MUST allocate this buffer to be
 2388  *                              exactly CPA_STATUS_MAX_STR_LENGTH_IN_BYTES.
 2389  *
 2390  * @retval CPA_STATUS_SUCCESS       Function executed successfully.
 2391  * @retval CPA_STATUS_FAIL          Function failed. Note, in this scenario
 2392  *                                  it is INVALID to call this function a
 2393  *                                  second time.
 2394  * @retval CPA_STATUS_INVALID_PARAM Invalid parameter passed in.
 2395  * @retval CPA_STATUS_UNSUPPORTED    Function is not supported.
 2396  *
 2397  * @pre
 2398  *      None
 2399  * @post
 2400  *      None
 2401  * @note
 2402  *      None
 2403  * @see
 2404  *      CpaStatus
 2405  *
 2406  *****************************************************************************/
 2407 
 2408 CpaStatus
 2409 cpaDcGetStatusText(const CpaInstanceHandle dcInstance,
 2410                    const CpaStatus errStatus,
 2411                    Cpa8S * pStatusText);
 2412 
 2413 
 2414 /**
 2415  *****************************************************************************
 2416  * @ingroup cpaDc
 2417  *      Set Address Translation function
 2418  *
 2419  * @description
 2420  *      This function is used to set the virtual to physical address
 2421  *      translation routine for the instance. The specified routine
 2422  *      is used by the instance to perform any required translation of
 2423  *      a virtual address to a physical address. If the application
 2424  *      does not invoke this function, then the instance will use its
 2425  *      default method, such as virt2phys, for address translation.
 2426  *
 2427  * @assumptions
 2428  *      None
 2429  * @sideEffects
 2430  *      None
 2431  * @blocking
 2432  *      This function is synchronous and blocking.
 2433  * @reentrant
 2434  *      No
 2435  * @threadSafe
 2436  *      Yes
 2437  *
 2438  * @param[in] instanceHandle         Data Compression API instance handle.
 2439  * @param[in] virtual2Physical       Routine that performs virtual to
 2440  *                                    physical address translation.
 2441  * @retval CPA_STATUS_SUCCESS        Function executed successfully.
 2442  * @retval CPA_STATUS_FAIL           Function failed.
 2443  * @retval CPA_STATUS_INVALID_PARAM  Invalid parameter passed in.
 2444  * @retval CPA_STATUS_UNSUPPORTED    Function is not supported.
 2445  *
 2446  * @pre
 2447  *      None
 2448  * @post
 2449  *      None
 2450  * @see
 2451  *      None
 2452  *
 2453  *****************************************************************************/
 2454 CpaStatus
 2455 cpaDcSetAddressTranslation(const CpaInstanceHandle instanceHandle,
 2456                            CpaVirtualToPhysical virtual2Physical);
 2457 #ifdef __cplusplus
 2458 } /* close the extern "C" { */
 2459 #endif
 2460 
 2461 #endif /* CPA_DC_H */

Cache object: 18a11c1a71acfce3df00e729041af761


[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ] [ list types ] [ track identifier ]


This page is part of the FreeBSD/Linux Linux Kernel Cross-Reference, and was automatically generated using a modified version of the LXR engine.