1*25421895SHareshx Sankar Raj /* SPDX-License-Identifier: BSD-3-Clause */ 2*25421895SHareshx Sankar Raj /* Copyright(c) 2007-2025 Intel Corporation */ 378ee8d1cSJulian Grajkowski 478ee8d1cSJulian Grajkowski /* 578ee8d1cSJulian Grajkowski ***************************************************************************** 678ee8d1cSJulian Grajkowski * Doxygen group definitions 778ee8d1cSJulian Grajkowski ****************************************************************************/ 878ee8d1cSJulian Grajkowski 978ee8d1cSJulian Grajkowski /** 1078ee8d1cSJulian Grajkowski ***************************************************************************** 1178ee8d1cSJulian Grajkowski * @file cpa.h 1278ee8d1cSJulian Grajkowski * 1378ee8d1cSJulian Grajkowski * @defgroup cpa CPA API 1478ee8d1cSJulian Grajkowski * 1578ee8d1cSJulian Grajkowski * @description 1678ee8d1cSJulian Grajkowski * This is the top level API definition for Intel(R) QuickAssist Technology. 1778ee8d1cSJulian Grajkowski * It contains structures, data types and definitions that are common 1878ee8d1cSJulian Grajkowski * across the interface. 1978ee8d1cSJulian Grajkowski * 2078ee8d1cSJulian Grajkowski *****************************************************************************/ 2178ee8d1cSJulian Grajkowski 2278ee8d1cSJulian Grajkowski /** 2378ee8d1cSJulian Grajkowski ***************************************************************************** 2478ee8d1cSJulian Grajkowski * @defgroup cpa_BaseDataTypes Base Data Types 2578ee8d1cSJulian Grajkowski * @file cpa.h 2678ee8d1cSJulian Grajkowski * 2778ee8d1cSJulian Grajkowski * @ingroup cpa 2878ee8d1cSJulian Grajkowski * 2978ee8d1cSJulian Grajkowski * @description 3078ee8d1cSJulian Grajkowski * The base data types for the Intel CPA API. 3178ee8d1cSJulian Grajkowski * 3278ee8d1cSJulian Grajkowski *****************************************************************************/ 3378ee8d1cSJulian Grajkowski 3478ee8d1cSJulian Grajkowski #ifndef CPA_H 3578ee8d1cSJulian Grajkowski #define CPA_H 3678ee8d1cSJulian Grajkowski 3778ee8d1cSJulian Grajkowski #ifdef __cplusplus 3878ee8d1cSJulian Grajkowski extern "C" { 3978ee8d1cSJulian Grajkowski #endif 4078ee8d1cSJulian Grajkowski 4178ee8d1cSJulian Grajkowski #include "cpa_types.h" 4278ee8d1cSJulian Grajkowski 4378ee8d1cSJulian Grajkowski /** 4478ee8d1cSJulian Grajkowski ***************************************************************************** 4578ee8d1cSJulian Grajkowski * @ingroup cpa_BaseDataTypes 4678ee8d1cSJulian Grajkowski * Instance handle type. 4778ee8d1cSJulian Grajkowski * 4878ee8d1cSJulian Grajkowski * @description 4978ee8d1cSJulian Grajkowski * Handle used to uniquely identify an instance. 5078ee8d1cSJulian Grajkowski * 5178ee8d1cSJulian Grajkowski * @note 5278ee8d1cSJulian Grajkowski * Where only a single instantiation exists this field may be set to 5378ee8d1cSJulian Grajkowski * @ref CPA_INSTANCE_HANDLE_SINGLE. 5478ee8d1cSJulian Grajkowski * 5578ee8d1cSJulian Grajkowski *****************************************************************************/ 5678ee8d1cSJulian Grajkowski typedef void * CpaInstanceHandle; 5778ee8d1cSJulian Grajkowski 5878ee8d1cSJulian Grajkowski /** 5978ee8d1cSJulian Grajkowski ***************************************************************************** 6078ee8d1cSJulian Grajkowski * @ingroup cpa_BaseDataTypes 6178ee8d1cSJulian Grajkowski * Default instantiation handle value where there is only a single instance 6278ee8d1cSJulian Grajkowski * 6378ee8d1cSJulian Grajkowski * @description 6478ee8d1cSJulian Grajkowski * Used as an instance handle value where only one instance exists. 6578ee8d1cSJulian Grajkowski * 6678ee8d1cSJulian Grajkowski *****************************************************************************/ 6778ee8d1cSJulian Grajkowski #define CPA_INSTANCE_HANDLE_SINGLE ((CpaInstanceHandle)0) 6878ee8d1cSJulian Grajkowski 6978ee8d1cSJulian Grajkowski /** 7078ee8d1cSJulian Grajkowski ***************************************************************************** 7178ee8d1cSJulian Grajkowski * @ingroup cpa_BaseDataTypes 7278ee8d1cSJulian Grajkowski * Physical memory address. 7378ee8d1cSJulian Grajkowski * @description 7478ee8d1cSJulian Grajkowski * Type for physical memory addresses. 7578ee8d1cSJulian Grajkowski *****************************************************************************/ 7678ee8d1cSJulian Grajkowski typedef Cpa64U CpaPhysicalAddr; 7778ee8d1cSJulian Grajkowski 7878ee8d1cSJulian Grajkowski /** 7978ee8d1cSJulian Grajkowski ***************************************************************************** 8078ee8d1cSJulian Grajkowski * @ingroup cpa_BaseDataTypes 8178ee8d1cSJulian Grajkowski * Virtual to physical address conversion routine. 8278ee8d1cSJulian Grajkowski * 8378ee8d1cSJulian Grajkowski * @description 8478ee8d1cSJulian Grajkowski * This function is used to convert virtual addresses to physical 8578ee8d1cSJulian Grajkowski * addresses. 8678ee8d1cSJulian Grajkowski * 8778ee8d1cSJulian Grajkowski * @context 8878ee8d1cSJulian Grajkowski * The function shall not be called in an interrupt context. 8978ee8d1cSJulian Grajkowski * @assumptions 9078ee8d1cSJulian Grajkowski * None 9178ee8d1cSJulian Grajkowski * @sideEffects 9278ee8d1cSJulian Grajkowski * None 9378ee8d1cSJulian Grajkowski * @blocking 9478ee8d1cSJulian Grajkowski * This function is synchronous and blocking. 9578ee8d1cSJulian Grajkowski * @reentrant 9678ee8d1cSJulian Grajkowski * No 9778ee8d1cSJulian Grajkowski * @threadSafe 9878ee8d1cSJulian Grajkowski * Yes 9978ee8d1cSJulian Grajkowski * 10078ee8d1cSJulian Grajkowski * @param[in] pVirtualAddr Virtual address to be converted. 10178ee8d1cSJulian Grajkowski * 10278ee8d1cSJulian Grajkowski * @return 10378ee8d1cSJulian Grajkowski * Returns the corresponding physical address. 10478ee8d1cSJulian Grajkowski * On error, the value NULL is returned. 10578ee8d1cSJulian Grajkowski * 10678ee8d1cSJulian Grajkowski * @post 10778ee8d1cSJulian Grajkowski * None 10878ee8d1cSJulian Grajkowski * @see 10978ee8d1cSJulian Grajkowski * None 11078ee8d1cSJulian Grajkowski * 11178ee8d1cSJulian Grajkowski *****************************************************************************/ 11278ee8d1cSJulian Grajkowski typedef CpaPhysicalAddr (*CpaVirtualToPhysical)(void * pVirtualAddr); 11378ee8d1cSJulian Grajkowski 11478ee8d1cSJulian Grajkowski 11578ee8d1cSJulian Grajkowski /** 11678ee8d1cSJulian Grajkowski ***************************************************************************** 11778ee8d1cSJulian Grajkowski * @ingroup cpa_BaseDataTypes 11878ee8d1cSJulian Grajkowski * Flat buffer structure containing a pointer and length member. 11978ee8d1cSJulian Grajkowski * 12078ee8d1cSJulian Grajkowski * @description 12178ee8d1cSJulian Grajkowski * A flat buffer structure. The data pointer, pData, is a virtual address. 12278ee8d1cSJulian Grajkowski * An API instance may require the actual data to be in contiguous 12378ee8d1cSJulian Grajkowski * physical memory as determined by @ref CpaInstanceInfo2. 12478ee8d1cSJulian Grajkowski * 12578ee8d1cSJulian Grajkowski *****************************************************************************/ 12678ee8d1cSJulian Grajkowski typedef struct _CpaFlatBuffer { 12778ee8d1cSJulian Grajkowski Cpa32U dataLenInBytes; 12878ee8d1cSJulian Grajkowski /**< Data length specified in bytes. 12978ee8d1cSJulian Grajkowski * When used as an input parameter to a function, the length specifies 13078ee8d1cSJulian Grajkowski * the current length of the buffer. 13178ee8d1cSJulian Grajkowski * When used as an output parameter to a function, the length passed in 13278ee8d1cSJulian Grajkowski * specifies the maximum length of the buffer on return (i.e. the allocated 13378ee8d1cSJulian Grajkowski * length). The implementation will not write past this length. On return, 13478ee8d1cSJulian Grajkowski * the length is always unchanged. */ 13578ee8d1cSJulian Grajkowski Cpa8U *pData; 13678ee8d1cSJulian Grajkowski /**< The data pointer is a virtual address, however the actual data pointed 13778ee8d1cSJulian Grajkowski * to is required to be in contiguous physical memory unless the field 13878ee8d1cSJulian Grajkowski requiresPhysicallyContiguousMemory in CpaInstanceInfo2 is false. */ 13978ee8d1cSJulian Grajkowski } CpaFlatBuffer; 14078ee8d1cSJulian Grajkowski 14178ee8d1cSJulian Grajkowski /** 14278ee8d1cSJulian Grajkowski ***************************************************************************** 14378ee8d1cSJulian Grajkowski * @ingroup cpa_BaseDataTypes 14478ee8d1cSJulian Grajkowski * Scatter/Gather buffer list containing an array of flat buffers. 14578ee8d1cSJulian Grajkowski * 14678ee8d1cSJulian Grajkowski * @description 14778ee8d1cSJulian Grajkowski * A scatter/gather buffer list structure. This buffer structure is 14878ee8d1cSJulian Grajkowski * typically used to represent a region of memory which is not 14978ee8d1cSJulian Grajkowski * physically contiguous, by describing it as a collection of 15078ee8d1cSJulian Grajkowski * buffers, each of which is physically contiguous. 15178ee8d1cSJulian Grajkowski * 15278ee8d1cSJulian Grajkowski * @note 15378ee8d1cSJulian Grajkowski * The memory for the pPrivateMetaData member must be allocated 15478ee8d1cSJulian Grajkowski * by the client as physically contiguous memory. When allocating 15578ee8d1cSJulian Grajkowski * memory for pPrivateMetaData, a call to the corresponding 15678ee8d1cSJulian Grajkowski * BufferListGetMetaSize function (e.g. cpaCyBufferListGetMetaSize) 15778ee8d1cSJulian Grajkowski * MUST be made to determine the size of the Meta Data Buffer. The 15878ee8d1cSJulian Grajkowski * returned size (in bytes) may then be passed in a memory allocation 15978ee8d1cSJulian Grajkowski * routine to allocate the pPrivateMetaData memory. 16078ee8d1cSJulian Grajkowski *****************************************************************************/ 16178ee8d1cSJulian Grajkowski typedef struct _CpaBufferList { 16278ee8d1cSJulian Grajkowski Cpa32U numBuffers; 16378ee8d1cSJulian Grajkowski /**< Number of buffers in the list */ 16478ee8d1cSJulian Grajkowski CpaFlatBuffer *pBuffers; 16578ee8d1cSJulian Grajkowski /**< Pointer to an unbounded array containing the number of CpaFlatBuffers 16678ee8d1cSJulian Grajkowski * defined by numBuffers 16778ee8d1cSJulian Grajkowski */ 16878ee8d1cSJulian Grajkowski void *pUserData; 16978ee8d1cSJulian Grajkowski /**< This is an opaque field that is not read or modified internally. */ 17078ee8d1cSJulian Grajkowski void *pPrivateMetaData; 17178ee8d1cSJulian Grajkowski /**< Private representation of this buffer list. The memory for this 17278ee8d1cSJulian Grajkowski * buffer needs to be allocated by the client as contiguous data. 17378ee8d1cSJulian Grajkowski * The amount of memory required is returned with a call to 17478ee8d1cSJulian Grajkowski * the corresponding BufferListGetMetaSize function. If that function 17578ee8d1cSJulian Grajkowski * returns a size of zero then no memory needs to be allocated, and this 17678ee8d1cSJulian Grajkowski * parameter can be NULL. 17778ee8d1cSJulian Grajkowski */ 17878ee8d1cSJulian Grajkowski } CpaBufferList; 17978ee8d1cSJulian Grajkowski 18078ee8d1cSJulian Grajkowski /** 18178ee8d1cSJulian Grajkowski ***************************************************************************** 18278ee8d1cSJulian Grajkowski * @ingroup cpa_BaseDataTypes 18378ee8d1cSJulian Grajkowski * Flat buffer structure with physical address. 18478ee8d1cSJulian Grajkowski * 18578ee8d1cSJulian Grajkowski * @description 18678ee8d1cSJulian Grajkowski * Functions taking this structure do not need to do any virtual to 18778ee8d1cSJulian Grajkowski * physical address translation before writing the buffer to hardware. 18878ee8d1cSJulian Grajkowski *****************************************************************************/ 18978ee8d1cSJulian Grajkowski typedef struct _CpaPhysFlatBuffer { 19078ee8d1cSJulian Grajkowski Cpa32U dataLenInBytes; 19178ee8d1cSJulian Grajkowski /**< Data length specified in bytes. 19278ee8d1cSJulian Grajkowski * When used as an input parameter to a function, the length specifies 19378ee8d1cSJulian Grajkowski * the current length of the buffer. 19478ee8d1cSJulian Grajkowski * When used as an output parameter to a function, the length passed in 19578ee8d1cSJulian Grajkowski * specifies the maximum length of the buffer on return (i.e. the allocated 19678ee8d1cSJulian Grajkowski * length). The implementation will not write past this length. On return, 19778ee8d1cSJulian Grajkowski * the length is always unchanged. 19878ee8d1cSJulian Grajkowski */ 19978ee8d1cSJulian Grajkowski Cpa32U reserved; 20078ee8d1cSJulian Grajkowski /**< Reserved for alignment */ 20178ee8d1cSJulian Grajkowski CpaPhysicalAddr bufferPhysAddr; 20278ee8d1cSJulian Grajkowski /**< The physical address at which the data resides. The data pointed 20378ee8d1cSJulian Grajkowski * to is required to be in contiguous physical memory. 20478ee8d1cSJulian Grajkowski */ 20578ee8d1cSJulian Grajkowski } CpaPhysFlatBuffer; 20678ee8d1cSJulian Grajkowski 20778ee8d1cSJulian Grajkowski /** 20878ee8d1cSJulian Grajkowski ***************************************************************************** 20978ee8d1cSJulian Grajkowski * @ingroup cpa_BaseDataTypes 21078ee8d1cSJulian Grajkowski * Scatter/gather list containing an array of flat buffers with 21178ee8d1cSJulian Grajkowski * physical addresses. 21278ee8d1cSJulian Grajkowski * 21378ee8d1cSJulian Grajkowski * @description 21478ee8d1cSJulian Grajkowski * Similar to @ref CpaBufferList, this buffer structure is typically 21578ee8d1cSJulian Grajkowski * used to represent a region of memory which is not physically 21678ee8d1cSJulian Grajkowski * contiguous, by describing it as a collection of buffers, each of 21778ee8d1cSJulian Grajkowski * which is physically contiguous. The difference is that, in this 21878ee8d1cSJulian Grajkowski * case, the individual "flat" buffers are represented using 21978ee8d1cSJulian Grajkowski * physical, rather than virtual, addresses. 22078ee8d1cSJulian Grajkowski *****************************************************************************/ 22178ee8d1cSJulian Grajkowski typedef struct _CpaPhysBufferList { 22278ee8d1cSJulian Grajkowski Cpa64U reserved0; 22378ee8d1cSJulian Grajkowski /**< Reserved for internal usage */ 22478ee8d1cSJulian Grajkowski Cpa32U numBuffers; 22578ee8d1cSJulian Grajkowski /**< Number of buffers in the list */ 22678ee8d1cSJulian Grajkowski Cpa32U reserved1; 22778ee8d1cSJulian Grajkowski /**< Reserved for alignment */ 22878ee8d1cSJulian Grajkowski CpaPhysFlatBuffer flatBuffers[]; 22978ee8d1cSJulian Grajkowski /**< Array of flat buffer structures, of size numBuffers */ 23078ee8d1cSJulian Grajkowski } CpaPhysBufferList; 23178ee8d1cSJulian Grajkowski 23278ee8d1cSJulian Grajkowski 23378ee8d1cSJulian Grajkowski /** 23478ee8d1cSJulian Grajkowski ***************************************************************************** 23578ee8d1cSJulian Grajkowski * @ingroup cpa_BaseDataTypes 23678ee8d1cSJulian Grajkowski * Special value which can be taken by length fields on some of the 23778ee8d1cSJulian Grajkowski * "data plane" APIs to indicate that the buffer in question is of 23878ee8d1cSJulian Grajkowski * type CpaPhysBufferList, rather than simply an array of bytes. 23978ee8d1cSJulian Grajkowski ****************************************************************************/ 24078ee8d1cSJulian Grajkowski #define CPA_DP_BUFLIST ((Cpa32U)0xFFFFFFFF) 24178ee8d1cSJulian Grajkowski 24278ee8d1cSJulian Grajkowski 24378ee8d1cSJulian Grajkowski /** 24478ee8d1cSJulian Grajkowski ***************************************************************************** 24578ee8d1cSJulian Grajkowski * @ingroup cpa_BaseDataTypes 24678ee8d1cSJulian Grajkowski * API status value type definition 24778ee8d1cSJulian Grajkowski * 24878ee8d1cSJulian Grajkowski * @description 24978ee8d1cSJulian Grajkowski * This type definition is used for the return values used in all the 25078ee8d1cSJulian Grajkowski * API functions. Common values are defined, for example see 25178ee8d1cSJulian Grajkowski * @ref CPA_STATUS_SUCCESS, @ref CPA_STATUS_FAIL, etc. 25278ee8d1cSJulian Grajkowski *****************************************************************************/ 25378ee8d1cSJulian Grajkowski typedef Cpa32S CpaStatus; 25478ee8d1cSJulian Grajkowski 25578ee8d1cSJulian Grajkowski #define CPA_STATUS_SUCCESS (0) 25678ee8d1cSJulian Grajkowski /**< 25778ee8d1cSJulian Grajkowski * @ingroup cpa_BaseDataTypes 25878ee8d1cSJulian Grajkowski * Success status value. */ 25978ee8d1cSJulian Grajkowski #define CPA_STATUS_FAIL (-1) 26078ee8d1cSJulian Grajkowski /**< 26178ee8d1cSJulian Grajkowski * @ingroup cpa_BaseDataTypes 26278ee8d1cSJulian Grajkowski * Fail status value. */ 26378ee8d1cSJulian Grajkowski #define CPA_STATUS_RETRY (-2) 26478ee8d1cSJulian Grajkowski /**< 26578ee8d1cSJulian Grajkowski * @ingroup cpa_BaseDataTypes 26678ee8d1cSJulian Grajkowski * Retry status value. */ 26778ee8d1cSJulian Grajkowski #define CPA_STATUS_RESOURCE (-3) 26878ee8d1cSJulian Grajkowski /**< 26978ee8d1cSJulian Grajkowski * @ingroup cpa_BaseDataTypes 27078ee8d1cSJulian Grajkowski * The resource that has been requested is unavailable. Refer 27178ee8d1cSJulian Grajkowski * to relevant sections of the API for specifics on what the suggested 27278ee8d1cSJulian Grajkowski * course of action is. */ 27378ee8d1cSJulian Grajkowski #define CPA_STATUS_INVALID_PARAM (-4) 27478ee8d1cSJulian Grajkowski /**< 27578ee8d1cSJulian Grajkowski * @ingroup cpa_BaseDataTypes 27678ee8d1cSJulian Grajkowski * Invalid parameter has been passed in. */ 27778ee8d1cSJulian Grajkowski #define CPA_STATUS_FATAL (-5) 27878ee8d1cSJulian Grajkowski /**< 27978ee8d1cSJulian Grajkowski * @ingroup cpa_BaseDataTypes 28078ee8d1cSJulian Grajkowski * A serious error has occurred. Recommended course of action 28178ee8d1cSJulian Grajkowski * is to shutdown and restart the component. */ 28278ee8d1cSJulian Grajkowski #define CPA_STATUS_UNSUPPORTED (-6) 28378ee8d1cSJulian Grajkowski /**< 28478ee8d1cSJulian Grajkowski * @ingroup cpa_BaseDataTypes 28578ee8d1cSJulian Grajkowski * The function is not supported, at least not with the specific 28678ee8d1cSJulian Grajkowski * parameters supplied. This may be because a particular 28778ee8d1cSJulian Grajkowski * capability is not supported by the current implementation. */ 28878ee8d1cSJulian Grajkowski #define CPA_STATUS_RESTARTING (-7) 28978ee8d1cSJulian Grajkowski /**< 29078ee8d1cSJulian Grajkowski * @ingroup cpa_BaseDataTypes 29178ee8d1cSJulian Grajkowski * The API implementation is restarting. This may be reported if, for example, 29278ee8d1cSJulian Grajkowski * a hardware implementation is undergoing a reset. Recommended course of 29378ee8d1cSJulian Grajkowski * action is to retry the request. */ 29478ee8d1cSJulian Grajkowski 29578ee8d1cSJulian Grajkowski /** 29678ee8d1cSJulian Grajkowski ***************************************************************************** 29778ee8d1cSJulian Grajkowski * @ingroup cpa_BaseDataTypes 29878ee8d1cSJulian Grajkowski * API status string type definition 29978ee8d1cSJulian Grajkowski * @description 30078ee8d1cSJulian Grajkowski * This type definition is used for the generic status text strings 30178ee8d1cSJulian Grajkowski * provided by cpaXxGetStatusText API functions. Common values are 30278ee8d1cSJulian Grajkowski * defined, for example see @ref CPA_STATUS_STR_SUCCESS, 30378ee8d1cSJulian Grajkowski * @ref CPA_STATUS_FAIL, etc., as well as the maximum size 30478ee8d1cSJulian Grajkowski * @ref CPA_STATUS_MAX_STR_LENGTH_IN_BYTES. 30578ee8d1cSJulian Grajkowski *****************************************************************************/ 30678ee8d1cSJulian Grajkowski #define CPA_STATUS_MAX_STR_LENGTH_IN_BYTES (255) 30778ee8d1cSJulian Grajkowski /**< 30878ee8d1cSJulian Grajkowski * @ingroup cpa_BaseDataTypes 30978ee8d1cSJulian Grajkowski * Maximum length of the Overall Status String (including generic and specific 31078ee8d1cSJulian Grajkowski * strings returned by calls to cpaXxGetStatusText) */ 31178ee8d1cSJulian Grajkowski 31278ee8d1cSJulian Grajkowski #define CPA_STATUS_STR_SUCCESS ("Operation was successful:") 31378ee8d1cSJulian Grajkowski /**< 31478ee8d1cSJulian Grajkowski * @ingroup cpa_BaseDataTypes 31578ee8d1cSJulian Grajkowski * Status string for @ref CPA_STATUS_SUCCESS. */ 31678ee8d1cSJulian Grajkowski #define CPA_STATUS_STR_FAIL ("General or unspecified error occurred:") 31778ee8d1cSJulian Grajkowski /**< 31878ee8d1cSJulian Grajkowski * @ingroup cpa_BaseDataTypes 31978ee8d1cSJulian Grajkowski * Status string for @ref CPA_STATUS_FAIL. */ 32078ee8d1cSJulian Grajkowski #define CPA_STATUS_STR_RETRY ("Recoverable error occurred:") 32178ee8d1cSJulian Grajkowski /**< 32278ee8d1cSJulian Grajkowski * @ingroup cpa_BaseDataTypes 32378ee8d1cSJulian Grajkowski * Status string for @ref CPA_STATUS_RETRY. */ 32478ee8d1cSJulian Grajkowski #define CPA_STATUS_STR_RESOURCE ("Required resource unavailable:") 32578ee8d1cSJulian Grajkowski /**< 32678ee8d1cSJulian Grajkowski * @ingroup cpa_BaseDataTypes 32778ee8d1cSJulian Grajkowski * Status string for @ref CPA_STATUS_RESOURCE. */ 32878ee8d1cSJulian Grajkowski #define CPA_STATUS_STR_INVALID_PARAM ("Invalid parameter supplied:") 32978ee8d1cSJulian Grajkowski /**< 33078ee8d1cSJulian Grajkowski * @ingroup cpa_BaseDataTypes 33178ee8d1cSJulian Grajkowski * Status string for @ref CPA_STATUS_INVALID_PARAM. */ 33278ee8d1cSJulian Grajkowski #define CPA_STATUS_STR_FATAL ("Fatal error has occurred:") 33378ee8d1cSJulian Grajkowski /**< 33478ee8d1cSJulian Grajkowski * @ingroup cpa_BaseDataTypes 33578ee8d1cSJulian Grajkowski * Status string for @ref CPA_STATUS_FATAL. */ 33678ee8d1cSJulian Grajkowski #define CPA_STATUS_STR_UNSUPPORTED ("Operation not supported:") 33778ee8d1cSJulian Grajkowski /**< 33878ee8d1cSJulian Grajkowski * @ingroup cpa_BaseDataTypes 33978ee8d1cSJulian Grajkowski * Status string for @ref CPA_STATUS_UNSUPPORTED. */ 34078ee8d1cSJulian Grajkowski 34178ee8d1cSJulian Grajkowski /** 34278ee8d1cSJulian Grajkowski ***************************************************************************** 34378ee8d1cSJulian Grajkowski * @ingroup cpa_BaseDataTypes 34478ee8d1cSJulian Grajkowski * Instance Types 34578ee8d1cSJulian Grajkowski * 34678ee8d1cSJulian Grajkowski * @deprecated 34778ee8d1cSJulian Grajkowski * As of v1.3 of the Crypto API, this enum has been deprecated, 34878ee8d1cSJulian Grajkowski * replaced by @ref CpaAccelerationServiceType. 34978ee8d1cSJulian Grajkowski * 35078ee8d1cSJulian Grajkowski * @description 35178ee8d1cSJulian Grajkowski * Enumeration of the different instance types. 35278ee8d1cSJulian Grajkowski * 35378ee8d1cSJulian Grajkowski *****************************************************************************/ 35478ee8d1cSJulian Grajkowski typedef enum _CpaInstanceType 35578ee8d1cSJulian Grajkowski { 35678ee8d1cSJulian Grajkowski CPA_INSTANCE_TYPE_CRYPTO = 0, 35778ee8d1cSJulian Grajkowski /**< Cryptographic instance type */ 35878ee8d1cSJulian Grajkowski CPA_INSTANCE_TYPE_DATA_COMPRESSION, 35978ee8d1cSJulian Grajkowski /**< Data compression instance type */ 36078ee8d1cSJulian Grajkowski CPA_INSTANCE_TYPE_RAID, 36178ee8d1cSJulian Grajkowski /**< RAID instance type */ 36278ee8d1cSJulian Grajkowski CPA_INSTANCE_TYPE_XML, 36378ee8d1cSJulian Grajkowski /**< XML instance type */ 36478ee8d1cSJulian Grajkowski CPA_INSTANCE_TYPE_REGEX 36578ee8d1cSJulian Grajkowski /**< Regular Expression instance type */ 36678ee8d1cSJulian Grajkowski } CpaInstanceType CPA_DEPRECATED; 36778ee8d1cSJulian Grajkowski 36878ee8d1cSJulian Grajkowski /** 36978ee8d1cSJulian Grajkowski ***************************************************************************** 37078ee8d1cSJulian Grajkowski * @ingroup cpa_BaseDataTypes 37178ee8d1cSJulian Grajkowski * Service Type 37278ee8d1cSJulian Grajkowski * @description 37378ee8d1cSJulian Grajkowski * Enumeration of the different service types. 37478ee8d1cSJulian Grajkowski * 37578ee8d1cSJulian Grajkowski *****************************************************************************/ 37678ee8d1cSJulian Grajkowski typedef enum _CpaAccelerationServiceType 37778ee8d1cSJulian Grajkowski { 37878ee8d1cSJulian Grajkowski CPA_ACC_SVC_TYPE_CRYPTO = CPA_INSTANCE_TYPE_CRYPTO, 37978ee8d1cSJulian Grajkowski /**< Cryptography */ 38078ee8d1cSJulian Grajkowski CPA_ACC_SVC_TYPE_DATA_COMPRESSION = CPA_INSTANCE_TYPE_DATA_COMPRESSION, 38178ee8d1cSJulian Grajkowski /**< Data Compression */ 38278ee8d1cSJulian Grajkowski CPA_ACC_SVC_TYPE_PATTERN_MATCH = CPA_INSTANCE_TYPE_REGEX, 38378ee8d1cSJulian Grajkowski /**< Pattern Match */ 38478ee8d1cSJulian Grajkowski CPA_ACC_SVC_TYPE_RAID = CPA_INSTANCE_TYPE_RAID, 38578ee8d1cSJulian Grajkowski /**< RAID */ 38678ee8d1cSJulian Grajkowski CPA_ACC_SVC_TYPE_XML = CPA_INSTANCE_TYPE_XML, 38778ee8d1cSJulian Grajkowski /**< XML */ 388266b0663SKrzysztof Zdziarski CPA_ACC_SVC_TYPE_VIDEO_ANALYTICS, 38978ee8d1cSJulian Grajkowski /**< Video Analytics */ 390266b0663SKrzysztof Zdziarski CPA_ACC_SVC_TYPE_CRYPTO_ASYM, 391266b0663SKrzysztof Zdziarski /**< Cryptography - Asymmetric service */ 392266b0663SKrzysztof Zdziarski CPA_ACC_SVC_TYPE_CRYPTO_SYM 393266b0663SKrzysztof Zdziarski /**< Cryptography - Symmetric service */ 39478ee8d1cSJulian Grajkowski } CpaAccelerationServiceType; 39578ee8d1cSJulian Grajkowski 39678ee8d1cSJulian Grajkowski /** 39778ee8d1cSJulian Grajkowski ***************************************************************************** 39878ee8d1cSJulian Grajkowski * @ingroup cpa_BaseDataTypes 39978ee8d1cSJulian Grajkowski * Instance State 40078ee8d1cSJulian Grajkowski * 40178ee8d1cSJulian Grajkowski * @deprecated 40278ee8d1cSJulian Grajkowski * As of v1.3 of the Crypto API, this enum has been deprecated, 40378ee8d1cSJulian Grajkowski * replaced by @ref CpaOperationalState. 40478ee8d1cSJulian Grajkowski * 40578ee8d1cSJulian Grajkowski * @description 40678ee8d1cSJulian Grajkowski * Enumeration of the different instance states that are possible. 40778ee8d1cSJulian Grajkowski * 40878ee8d1cSJulian Grajkowski *****************************************************************************/ 40978ee8d1cSJulian Grajkowski typedef enum _CpaInstanceState 41078ee8d1cSJulian Grajkowski { 41178ee8d1cSJulian Grajkowski CPA_INSTANCE_STATE_INITIALISED = 0, 41278ee8d1cSJulian Grajkowski /**< Instance is in the initialized state and ready for use. */ 41378ee8d1cSJulian Grajkowski CPA_INSTANCE_STATE_SHUTDOWN 41478ee8d1cSJulian Grajkowski /**< Instance is in the shutdown state and not available for use. */ 41578ee8d1cSJulian Grajkowski } CpaInstanceState CPA_DEPRECATED; 41678ee8d1cSJulian Grajkowski 41778ee8d1cSJulian Grajkowski /** 41878ee8d1cSJulian Grajkowski ***************************************************************************** 41978ee8d1cSJulian Grajkowski * @ingroup cpa_BaseDataTypes 42078ee8d1cSJulian Grajkowski * Instance operational state 42178ee8d1cSJulian Grajkowski * @description 42278ee8d1cSJulian Grajkowski * Enumeration of the different operational states that are possible. 42378ee8d1cSJulian Grajkowski * 42478ee8d1cSJulian Grajkowski *****************************************************************************/ 42578ee8d1cSJulian Grajkowski typedef enum _CpaOperationalState 42678ee8d1cSJulian Grajkowski { 42778ee8d1cSJulian Grajkowski CPA_OPER_STATE_DOWN= 0, 42878ee8d1cSJulian Grajkowski /**< Instance is not available for use. May not yet be initialized, 42978ee8d1cSJulian Grajkowski * or stopped. */ 43078ee8d1cSJulian Grajkowski CPA_OPER_STATE_UP 43178ee8d1cSJulian Grajkowski /**< Instance is available for use. Has been initialized and started. */ 43278ee8d1cSJulian Grajkowski } CpaOperationalState; 43378ee8d1cSJulian Grajkowski 43478ee8d1cSJulian Grajkowski #define CPA_INSTANCE_MAX_NAME_SIZE_IN_BYTES 64 43578ee8d1cSJulian Grajkowski /**< 43678ee8d1cSJulian Grajkowski * @ingroup cpa_BaseDataTypes 43778ee8d1cSJulian Grajkowski * Maximum instance info name string length in bytes */ 43878ee8d1cSJulian Grajkowski #define CPA_INSTANCE_MAX_ID_SIZE_IN_BYTES 128 43978ee8d1cSJulian Grajkowski /**< 44078ee8d1cSJulian Grajkowski * @ingroup cpa_BaseDataTypes 44178ee8d1cSJulian Grajkowski * Maximum instance info id string length in bytes */ 44278ee8d1cSJulian Grajkowski #define CPA_INSTANCE_MAX_VERSION_SIZE_IN_BYTES 64 44378ee8d1cSJulian Grajkowski /**< 44478ee8d1cSJulian Grajkowski * @ingroup cpa_BaseDataTypes 44578ee8d1cSJulian Grajkowski * Maximum instance info version string length in bytes */ 44678ee8d1cSJulian Grajkowski 44778ee8d1cSJulian Grajkowski /** 44878ee8d1cSJulian Grajkowski ***************************************************************************** 44978ee8d1cSJulian Grajkowski * @ingroup cpa_BaseDataTypes 45078ee8d1cSJulian Grajkowski * Instance Info Structure 45178ee8d1cSJulian Grajkowski * 45278ee8d1cSJulian Grajkowski * @deprecated 45378ee8d1cSJulian Grajkowski * As of v1.3 of the Crypto API, this structure has been deprecated, 45478ee8d1cSJulian Grajkowski * replaced by CpaInstanceInfo2. 45578ee8d1cSJulian Grajkowski * 45678ee8d1cSJulian Grajkowski * @description 45778ee8d1cSJulian Grajkowski * Structure that contains the information to describe the instance. 45878ee8d1cSJulian Grajkowski * 45978ee8d1cSJulian Grajkowski *****************************************************************************/ 46078ee8d1cSJulian Grajkowski typedef struct _CpaInstanceInfo { 46178ee8d1cSJulian Grajkowski enum _CpaInstanceType type; 46278ee8d1cSJulian Grajkowski /**< Type definition for this instance. */ 46378ee8d1cSJulian Grajkowski enum _CpaInstanceState state; 46478ee8d1cSJulian Grajkowski /**< Operational state of the instance. */ 46578ee8d1cSJulian Grajkowski Cpa8U name[CPA_INSTANCE_MAX_NAME_SIZE_IN_BYTES]; 46678ee8d1cSJulian Grajkowski /**< Simple text string identifier for the instance. */ 46778ee8d1cSJulian Grajkowski Cpa8U version[CPA_INSTANCE_MAX_VERSION_SIZE_IN_BYTES]; 46878ee8d1cSJulian Grajkowski /**< Version string. There may be multiple versions of the same type of 46978ee8d1cSJulian Grajkowski * instance accessible through a particular library. */ 47078ee8d1cSJulian Grajkowski } CpaInstanceInfo CPA_DEPRECATED; 47178ee8d1cSJulian Grajkowski 47278ee8d1cSJulian Grajkowski /** 47378ee8d1cSJulian Grajkowski ***************************************************************************** 47478ee8d1cSJulian Grajkowski * @ingroup cpa_BaseDataTypes 47578ee8d1cSJulian Grajkowski * Physical Instance ID 47678ee8d1cSJulian Grajkowski * @description 47778ee8d1cSJulian Grajkowski * Identifies the physical instance of an accelerator execution 47878ee8d1cSJulian Grajkowski * engine. 47978ee8d1cSJulian Grajkowski * 48078ee8d1cSJulian Grajkowski * Accelerators grouped into "packages". Each accelerator can in 48178ee8d1cSJulian Grajkowski * turn contain one or more execution engines. Implementations of 48278ee8d1cSJulian Grajkowski * this API will define the packageId, acceleratorId, 48378ee8d1cSJulian Grajkowski * executionEngineId and busAddress as appropriate for the 48478ee8d1cSJulian Grajkowski * implementation. For example, for hardware-based accelerators, 48578ee8d1cSJulian Grajkowski * the packageId might identify the chip, which might contain 48678ee8d1cSJulian Grajkowski * multiple accelerators, each of which might contain multiple 48778ee8d1cSJulian Grajkowski * execution engines. The combination of packageId, acceleratorId 48878ee8d1cSJulian Grajkowski * and executionEngineId uniquely identifies the instance. 48978ee8d1cSJulian Grajkowski * 49078ee8d1cSJulian Grajkowski * Hardware based accelerators implementing this API may also provide 49178ee8d1cSJulian Grajkowski * information on the location of the accelerator in the busAddress 49278ee8d1cSJulian Grajkowski * field. This field will be defined as appropriate for the 49378ee8d1cSJulian Grajkowski * implementation. For example, for PCIe attached accelerators, 49478ee8d1cSJulian Grajkowski * the busAddress may contain the PCIe bus, device and function 49578ee8d1cSJulian Grajkowski * number of the accelerators. 49678ee8d1cSJulian Grajkowski * 49778ee8d1cSJulian Grajkowski *****************************************************************************/ 49878ee8d1cSJulian Grajkowski typedef struct _CpaPhysicalInstanceId { 49978ee8d1cSJulian Grajkowski Cpa16U packageId; 50078ee8d1cSJulian Grajkowski /**< Identifies the package within which the accelerator is 50178ee8d1cSJulian Grajkowski * contained. */ 50278ee8d1cSJulian Grajkowski Cpa16U acceleratorId; 50378ee8d1cSJulian Grajkowski /**< Identifies the specific accelerator within the package. */ 50478ee8d1cSJulian Grajkowski Cpa16U executionEngineId; 50578ee8d1cSJulian Grajkowski /**< Identifies the specific execution engine within the 50678ee8d1cSJulian Grajkowski * accelerator. */ 50778ee8d1cSJulian Grajkowski Cpa16U busAddress; 50878ee8d1cSJulian Grajkowski /**< Identifies the bus address associated with the accelerator 50978ee8d1cSJulian Grajkowski * execution engine. */ 51078ee8d1cSJulian Grajkowski Cpa32U kptAcHandle; 51178ee8d1cSJulian Grajkowski /**< Identifies the achandle of the accelerator. */ 51278ee8d1cSJulian Grajkowski } CpaPhysicalInstanceId; 51378ee8d1cSJulian Grajkowski 51478ee8d1cSJulian Grajkowski /** 51578ee8d1cSJulian Grajkowski ***************************************************************************** 51678ee8d1cSJulian Grajkowski * @ingroup cpa_BaseDataTypes 51778ee8d1cSJulian Grajkowski * Instance Info Structure, version 2 51878ee8d1cSJulian Grajkowski * @description 51978ee8d1cSJulian Grajkowski * Structure that contains the information to describe the instance. 52078ee8d1cSJulian Grajkowski * 52178ee8d1cSJulian Grajkowski *****************************************************************************/ 52278ee8d1cSJulian Grajkowski typedef struct _CpaInstanceInfo2 { 52378ee8d1cSJulian Grajkowski CpaAccelerationServiceType accelerationServiceType; 52478ee8d1cSJulian Grajkowski /**< Type of service provided by this instance. */ 52578ee8d1cSJulian Grajkowski #define CPA_INST_VENDOR_NAME_SIZE CPA_INSTANCE_MAX_NAME_SIZE_IN_BYTES 52678ee8d1cSJulian Grajkowski /**< Maximum length of the vendor name. */ 52778ee8d1cSJulian Grajkowski Cpa8U vendorName[CPA_INST_VENDOR_NAME_SIZE]; 52878ee8d1cSJulian Grajkowski /**< String identifying the vendor of the accelerator. */ 52978ee8d1cSJulian Grajkowski 53078ee8d1cSJulian Grajkowski #define CPA_INST_PART_NAME_SIZE CPA_INSTANCE_MAX_NAME_SIZE_IN_BYTES 53178ee8d1cSJulian Grajkowski /**< Maximum length of the part name. */ 53278ee8d1cSJulian Grajkowski Cpa8U partName[CPA_INST_PART_NAME_SIZE]; 53378ee8d1cSJulian Grajkowski /**< String identifying the part (name and/or number). */ 53478ee8d1cSJulian Grajkowski 53578ee8d1cSJulian Grajkowski #define CPA_INST_SW_VERSION_SIZE CPA_INSTANCE_MAX_VERSION_SIZE_IN_BYTES 53678ee8d1cSJulian Grajkowski /**< Maximum length of the software version string. */ 53778ee8d1cSJulian Grajkowski Cpa8U swVersion[CPA_INST_SW_VERSION_SIZE]; 53878ee8d1cSJulian Grajkowski /**< String identifying the version of the software associated with 53978ee8d1cSJulian Grajkowski * the instance. For hardware-based implementations of the API, 54078ee8d1cSJulian Grajkowski * this should be the driver version. For software-based 54178ee8d1cSJulian Grajkowski * implementations of the API, this should be the version of the 54278ee8d1cSJulian Grajkowski * library. 54378ee8d1cSJulian Grajkowski * 54478ee8d1cSJulian Grajkowski * Note that this should NOT be used to store the version of the 54578ee8d1cSJulian Grajkowski * API, nor should it be used to report the hardware revision 54678ee8d1cSJulian Grajkowski * (which can be captured as part of the @ref partName, if required). */ 54778ee8d1cSJulian Grajkowski 54878ee8d1cSJulian Grajkowski #define CPA_INST_NAME_SIZE CPA_INSTANCE_MAX_NAME_SIZE_IN_BYTES 54978ee8d1cSJulian Grajkowski /**< Maximum length of the instance name. */ 55078ee8d1cSJulian Grajkowski Cpa8U instName[CPA_INST_NAME_SIZE]; 55178ee8d1cSJulian Grajkowski /**< String identifying the name of the instance. */ 55278ee8d1cSJulian Grajkowski 55378ee8d1cSJulian Grajkowski #define CPA_INST_ID_SIZE CPA_INSTANCE_MAX_ID_SIZE_IN_BYTES 55478ee8d1cSJulian Grajkowski Cpa8U instID[CPA_INST_ID_SIZE]; 55578ee8d1cSJulian Grajkowski /**< String containing a unique identifier for the instance */ 55678ee8d1cSJulian Grajkowski 55778ee8d1cSJulian Grajkowski CpaPhysicalInstanceId physInstId; 55878ee8d1cSJulian Grajkowski /**< Identifies the "physical instance" of the accelerator. */ 55978ee8d1cSJulian Grajkowski 560266b0663SKrzysztof Zdziarski #define CPA_MAX_CORES 4096 56178ee8d1cSJulian Grajkowski /**< Maximum number of cores to support in the coreAffinity bitmap. */ 56278ee8d1cSJulian Grajkowski CPA_BITMAP(coreAffinity, CPA_MAX_CORES); 56378ee8d1cSJulian Grajkowski /**< A bitmap identifying the core or cores to which the instance 56478ee8d1cSJulian Grajkowski * is affinitized in an SMP operating system. 56578ee8d1cSJulian Grajkowski * 56678ee8d1cSJulian Grajkowski * The term core here is used to mean a "logical" core - for example, 56778ee8d1cSJulian Grajkowski * in a dual-processor, quad-core system with hyperthreading (two 56878ee8d1cSJulian Grajkowski * threads per core), there would be 16 such cores (2 processors x 56978ee8d1cSJulian Grajkowski * 4 cores/processor x 2 threads/core). The numbering of these cores 57078ee8d1cSJulian Grajkowski * and the corresponding bit positions is OS-specific. Note that Linux 57178ee8d1cSJulian Grajkowski * refers to this as "processor affinity" or "CPU affinity", and refers 57278ee8d1cSJulian Grajkowski * to the bitmap as a "cpumask". 57378ee8d1cSJulian Grajkowski * 57478ee8d1cSJulian Grajkowski * The term "affinity" is used to mean that this is the core on which 57578ee8d1cSJulian Grajkowski * the callback function will be invoked when using the asynchronous 57678ee8d1cSJulian Grajkowski * mode of the API. In a hardware-based implementation of the API, 57778ee8d1cSJulian Grajkowski * this might be the core to which the interrupt is affinitized. 57878ee8d1cSJulian Grajkowski * In a software-based implementation, this might be the core to which 57978ee8d1cSJulian Grajkowski * the process running the algorithm is affinitized. Where there is 58078ee8d1cSJulian Grajkowski * no affinity, the bitmap can be set to all zeroes. 58178ee8d1cSJulian Grajkowski * 58278ee8d1cSJulian Grajkowski * This bitmap should be manipulated using the macros @ref 58378ee8d1cSJulian Grajkowski * CPA_BITMAP_BIT_SET, @ref CPA_BITMAP_BIT_CLEAR and @ref 58478ee8d1cSJulian Grajkowski * CPA_BITMAP_BIT_TEST. */ 58578ee8d1cSJulian Grajkowski 58678ee8d1cSJulian Grajkowski Cpa32U nodeAffinity; 58778ee8d1cSJulian Grajkowski /**< Identifies the processor complex, or node, to which the accelerator 58878ee8d1cSJulian Grajkowski * is physically connected, to help identify locality in NUMA systems. 58978ee8d1cSJulian Grajkowski * 59078ee8d1cSJulian Grajkowski * The values taken by this attribute will typically be in the range 59178ee8d1cSJulian Grajkowski * 0..n-1, where n is the number of nodes (processor complexes) in the 59278ee8d1cSJulian Grajkowski * system. For example, in a dual-processor configuration, n=2. The 59378ee8d1cSJulian Grajkowski * precise values and their interpretation are OS-specific. */ 59478ee8d1cSJulian Grajkowski 59578ee8d1cSJulian Grajkowski CpaOperationalState operState; 59678ee8d1cSJulian Grajkowski /**< Operational state of the instance. */ 59778ee8d1cSJulian Grajkowski CpaBoolean requiresPhysicallyContiguousMemory; 59878ee8d1cSJulian Grajkowski /**< Specifies whether the data pointed to by flat buffers 59978ee8d1cSJulian Grajkowski * (CpaFlatBuffer::pData) supplied to this instance must be in 60078ee8d1cSJulian Grajkowski * physically contiguous memory. */ 60178ee8d1cSJulian Grajkowski CpaBoolean isPolled; 60278ee8d1cSJulian Grajkowski /**< Specifies whether the instance must be polled, or is event driven. 60378ee8d1cSJulian Grajkowski * For hardware accelerators, the alternative to polling would be 60478ee8d1cSJulian Grajkowski * interrupts. */ 60578ee8d1cSJulian Grajkowski CpaBoolean isOffloaded; 60678ee8d1cSJulian Grajkowski /**< Identifies whether the instance uses hardware offload, or is a 60778ee8d1cSJulian Grajkowski * software-only implementation. */ 60878ee8d1cSJulian Grajkowski } CpaInstanceInfo2; 60978ee8d1cSJulian Grajkowski 61078ee8d1cSJulian Grajkowski /** 61178ee8d1cSJulian Grajkowski ***************************************************************************** 61278ee8d1cSJulian Grajkowski * @ingroup cpa_BaseDataTypes 61378ee8d1cSJulian Grajkowski * Instance Events 61478ee8d1cSJulian Grajkowski * @description 61578ee8d1cSJulian Grajkowski * Enumeration of the different events that will cause the registered 61678ee8d1cSJulian Grajkowski * Instance notification callback function to be invoked. 61778ee8d1cSJulian Grajkowski * 61878ee8d1cSJulian Grajkowski *****************************************************************************/ 61978ee8d1cSJulian Grajkowski typedef enum _CpaInstanceEvent 62078ee8d1cSJulian Grajkowski { 62178ee8d1cSJulian Grajkowski CPA_INSTANCE_EVENT_RESTARTING = 0, 62278ee8d1cSJulian Grajkowski /**< Event type that triggers the registered instance notification callback 62378ee8d1cSJulian Grajkowski * function when and instance is restarting. The reason why an instance is 62478ee8d1cSJulian Grajkowski * restarting is implementation specific. For example a hardware 62578ee8d1cSJulian Grajkowski * implementation may send this event if the hardware device is about to 62678ee8d1cSJulian Grajkowski * be reset. 62778ee8d1cSJulian Grajkowski */ 62878ee8d1cSJulian Grajkowski CPA_INSTANCE_EVENT_RESTARTED, 62978ee8d1cSJulian Grajkowski /**< Event type that triggers the registered instance notification callback 63078ee8d1cSJulian Grajkowski * function when and instance has restarted. The reason why an instance has 63178ee8d1cSJulian Grajkowski * restarted is implementation specific. For example a hardware 63278ee8d1cSJulian Grajkowski * implementation may send this event after the hardware device has 63378ee8d1cSJulian Grajkowski * been reset. 63478ee8d1cSJulian Grajkowski */ 63578ee8d1cSJulian Grajkowski CPA_INSTANCE_EVENT_FATAL_ERROR 63678ee8d1cSJulian Grajkowski /**< Event type that triggers the registered instance notification callback 63778ee8d1cSJulian Grajkowski * function when an error has been detected that requires the device 63878ee8d1cSJulian Grajkowski * to be reset. 63978ee8d1cSJulian Grajkowski * This event will be sent by all instances using the device, both on the 64078ee8d1cSJulian Grajkowski * host and guests. 64178ee8d1cSJulian Grajkowski */ 64278ee8d1cSJulian Grajkowski } CpaInstanceEvent; 64378ee8d1cSJulian Grajkowski 644266b0663SKrzysztof Zdziarski /*****************************************************************************/ 645266b0663SKrzysztof Zdziarski /* CPA Instance Management Functions */ 646266b0663SKrzysztof Zdziarski /*****************************************************************************/ 647266b0663SKrzysztof Zdziarski /** 648266b0663SKrzysztof Zdziarski ***************************************************************************** 649266b0663SKrzysztof Zdziarski * @file cpa.h 650266b0663SKrzysztof Zdziarski * @ingroup cpa 651266b0663SKrzysztof Zdziarski * Get the number of Acceleration Service instances that are supported by 652266b0663SKrzysztof Zdziarski * the API implementation. 653266b0663SKrzysztof Zdziarski * 654266b0663SKrzysztof Zdziarski * @description 655266b0663SKrzysztof Zdziarski * This function will get the number of instances that are supported 656266b0663SKrzysztof Zdziarski * for the required Acceleration Service by an implementation of the CPA 657266b0663SKrzysztof Zdziarski * API. This number is then used to determine the size of the array that 658266b0663SKrzysztof Zdziarski * must be passed to @ref cpaGetInstances(). 659266b0663SKrzysztof Zdziarski * 660266b0663SKrzysztof Zdziarski * @context 661266b0663SKrzysztof Zdziarski * This function MUST NOT be called from an interrupt context as it MAY 662266b0663SKrzysztof Zdziarski * sleep. 663266b0663SKrzysztof Zdziarski * @assumptions 664266b0663SKrzysztof Zdziarski * None 665266b0663SKrzysztof Zdziarski * @sideEffects 666266b0663SKrzysztof Zdziarski * None 667266b0663SKrzysztof Zdziarski * @blocking 668266b0663SKrzysztof Zdziarski * This function is synchronous and blocking. 669266b0663SKrzysztof Zdziarski * @reentrant 670266b0663SKrzysztof Zdziarski * No 671266b0663SKrzysztof Zdziarski * @threadSafe 672266b0663SKrzysztof Zdziarski * Yes 673266b0663SKrzysztof Zdziarski * 674266b0663SKrzysztof Zdziarski * @param[in] accelerationServiceType Acceleration Service required 675266b0663SKrzysztof Zdziarski * @param[out] pNumInstances Pointer to where the number of 676266b0663SKrzysztof Zdziarski * instances will be written. 677266b0663SKrzysztof Zdziarski * 678266b0663SKrzysztof Zdziarski * @retval CPA_STATUS_SUCCESS Function executed successfully. 679266b0663SKrzysztof Zdziarski * @retval CPA_STATUS_FAIL Function failed. 680266b0663SKrzysztof Zdziarski * @retval CPA_STATUS_INVALID_PARAM Invalid parameter passed in. 681266b0663SKrzysztof Zdziarski * @retval CPA_STATUS_UNSUPPORTED Function is not supported. 682266b0663SKrzysztof Zdziarski * 683266b0663SKrzysztof Zdziarski * @pre 684266b0663SKrzysztof Zdziarski * None 685266b0663SKrzysztof Zdziarski * @post 686266b0663SKrzysztof Zdziarski * None 687266b0663SKrzysztof Zdziarski * @note 688266b0663SKrzysztof Zdziarski * This function operates in a synchronous manner and no asynchronous 689266b0663SKrzysztof Zdziarski * callback will be generated 690266b0663SKrzysztof Zdziarski * 691266b0663SKrzysztof Zdziarski * @see 692266b0663SKrzysztof Zdziarski * cpaGetInstances 693266b0663SKrzysztof Zdziarski * 694266b0663SKrzysztof Zdziarski *****************************************************************************/ 695266b0663SKrzysztof Zdziarski CpaStatus 696266b0663SKrzysztof Zdziarski cpaGetNumInstances( 697266b0663SKrzysztof Zdziarski const CpaAccelerationServiceType accelerationServiceType, 698266b0663SKrzysztof Zdziarski Cpa16U *pNumInstances); 699266b0663SKrzysztof Zdziarski 700266b0663SKrzysztof Zdziarski /** 701266b0663SKrzysztof Zdziarski ***************************************************************************** 702266b0663SKrzysztof Zdziarski * @file cpa.h 703266b0663SKrzysztof Zdziarski * @ingroup cpa 704266b0663SKrzysztof Zdziarski * Get the handles to the required Acceleration Service instances that are 705266b0663SKrzysztof Zdziarski * supported by the API implementation. 706266b0663SKrzysztof Zdziarski * 707266b0663SKrzysztof Zdziarski * @description 708266b0663SKrzysztof Zdziarski * This function will return handles to the required Acceleration Service 709266b0663SKrzysztof Zdziarski * instances that are supported by an implementation of the CPA API. These 710266b0663SKrzysztof Zdziarski * instance handles can then be used as input parameters with other 711266b0663SKrzysztof Zdziarski * API functions. 712266b0663SKrzysztof Zdziarski * 713266b0663SKrzysztof Zdziarski * This function will populate an array that has been allocated by the 714266b0663SKrzysztof Zdziarski * caller. The size of this array will have been determined by the 715266b0663SKrzysztof Zdziarski * cpaGetNumInstances() function. 716266b0663SKrzysztof Zdziarski * 717266b0663SKrzysztof Zdziarski * @context 718266b0663SKrzysztof Zdziarski * This function MUST NOT be called from an interrupt context as it MAY 719266b0663SKrzysztof Zdziarski * sleep. 720266b0663SKrzysztof Zdziarski * @assumptions 721266b0663SKrzysztof Zdziarski * None 722266b0663SKrzysztof Zdziarski * @sideEffects 723266b0663SKrzysztof Zdziarski * None 724266b0663SKrzysztof Zdziarski * @blocking 725266b0663SKrzysztof Zdziarski * This function is synchronous and blocking. 726266b0663SKrzysztof Zdziarski * @reentrant 727266b0663SKrzysztof Zdziarski * No 728266b0663SKrzysztof Zdziarski * @threadSafe 729266b0663SKrzysztof Zdziarski * Yes 730266b0663SKrzysztof Zdziarski * 731266b0663SKrzysztof Zdziarski * @param[in] accelerationServiceType Acceleration Service requested 732266b0663SKrzysztof Zdziarski * @param[in] numInstances Size of the array. If the value is 733266b0663SKrzysztof Zdziarski * greater than the number of instances 734266b0663SKrzysztof Zdziarski * supported, then an error (@ref 735266b0663SKrzysztof Zdziarski * CPA_STATUS_INVALID_PARAM) is returned. 736266b0663SKrzysztof Zdziarski * @param[in,out] cpaInstances Pointer to where the instance 737266b0663SKrzysztof Zdziarski * handles will be written. 738266b0663SKrzysztof Zdziarski * 739266b0663SKrzysztof Zdziarski * @retval CPA_STATUS_SUCCESS Function executed successfully. 740266b0663SKrzysztof Zdziarski * @retval CPA_STATUS_FAIL Function failed. 741266b0663SKrzysztof Zdziarski * @retval CPA_STATUS_INVALID_PARAM Invalid parameter passed in. 742266b0663SKrzysztof Zdziarski * @retval CPA_STATUS_UNSUPPORTED Function is not supported. 743266b0663SKrzysztof Zdziarski * 744266b0663SKrzysztof Zdziarski * @pre 745266b0663SKrzysztof Zdziarski * None 746266b0663SKrzysztof Zdziarski * @post 747266b0663SKrzysztof Zdziarski * None 748266b0663SKrzysztof Zdziarski * @note 749266b0663SKrzysztof Zdziarski * This function operates in a synchronous manner and no asynchronous 750266b0663SKrzysztof Zdziarski * callback will be generated 751266b0663SKrzysztof Zdziarski * 752266b0663SKrzysztof Zdziarski * @see 753266b0663SKrzysztof Zdziarski * cpaGetNumInstances 754266b0663SKrzysztof Zdziarski * 755266b0663SKrzysztof Zdziarski *****************************************************************************/ 756266b0663SKrzysztof Zdziarski CpaStatus 757266b0663SKrzysztof Zdziarski cpaGetInstances( 758266b0663SKrzysztof Zdziarski const CpaAccelerationServiceType accelerationServiceType, 759266b0663SKrzysztof Zdziarski Cpa16U numInstances, 760266b0663SKrzysztof Zdziarski CpaInstanceHandle *cpaInstances); 761266b0663SKrzysztof Zdziarski 76278ee8d1cSJulian Grajkowski #ifdef __cplusplus 76378ee8d1cSJulian Grajkowski } /* close the extern "C" { */ 76478ee8d1cSJulian Grajkowski #endif 76578ee8d1cSJulian Grajkowski 76678ee8d1cSJulian Grajkowski #endif /* CPA_H */ 767