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/cpa.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.h
   45  *
   46  * @defgroup cpa CPA API
   47  *
   48  * @description
   49  *      This is the top level API definition for Intel(R) QuickAssist Technology.
   50  *              It contains structures, data types and definitions that are common
   51  *              across the interface.
   52  *
   53  *****************************************************************************/
   54 
   55 /**
   56  *****************************************************************************
   57  * @defgroup cpa_BaseDataTypes Base Data Types
   58  * @file cpa.h
   59  *
   60  * @ingroup cpa
   61  *
   62  * @description
   63  *      The base data types for the Intel CPA API.
   64  *
   65  *****************************************************************************/
   66 
   67 #ifndef CPA_H
   68 #define CPA_H
   69 
   70 #ifdef __cplusplus
   71 extern "C" {
   72 #endif
   73 
   74 #include "cpa_types.h"
   75 
   76 /**
   77  *****************************************************************************
   78  * @ingroup cpa_BaseDataTypes
   79  *      Instance handle type.
   80  *
   81  * @description
   82  *      Handle used to uniquely identify an instance.
   83  *
   84  * @note
   85  *      Where only a single instantiation exists this field may be set to
   86  *      @ref CPA_INSTANCE_HANDLE_SINGLE.
   87  *
   88  *****************************************************************************/
   89 typedef void * CpaInstanceHandle;
   90 
   91 /**
   92  *****************************************************************************
   93  * @ingroup cpa_BaseDataTypes
   94  *      Default instantiation handle value where there is only a single instance
   95  *
   96  * @description
   97  *      Used as an instance handle value where only one instance exists.
   98  *
   99  *****************************************************************************/
  100 #define CPA_INSTANCE_HANDLE_SINGLE ((CpaInstanceHandle)0)
  101 
  102 /**
  103  *****************************************************************************
  104  * @ingroup cpa_BaseDataTypes
  105  *      Physical memory address.
  106  * @description
  107  *      Type for physical memory addresses.
  108  *****************************************************************************/
  109 typedef Cpa64U CpaPhysicalAddr;
  110 
  111 /**
  112  *****************************************************************************
  113  * @ingroup cpa_BaseDataTypes
  114  *      Virtual to physical address conversion routine.
  115  *
  116  * @description
  117  *      This function is used to convert virtual addresses to physical
  118  *      addresses.
  119  *
  120  * @context
  121  *      The function shall not be called in an interrupt context.
  122  * @assumptions
  123  *      None
  124  * @sideEffects
  125  *      None
  126  * @blocking
  127  *      This function is synchronous and blocking.
  128  * @reentrant
  129  *      No
  130  * @threadSafe
  131  *      Yes
  132  *
  133  * @param[in] pVirtualAddr           Virtual address to be converted.
  134  *
  135  * @return
  136  *              Returns the corresponding physical address.
  137  *      On error, the value NULL is returned.
  138  *
  139  * @post
  140  *      None
  141  * @see
  142  *      None
  143  *
  144  *****************************************************************************/
  145 typedef CpaPhysicalAddr (*CpaVirtualToPhysical)(void * pVirtualAddr);
  146 
  147 
  148 /**
  149  *****************************************************************************
  150  * @ingroup cpa_BaseDataTypes
  151  *      Flat buffer structure containing a pointer and length member.
  152  *
  153  * @description
  154  *      A flat buffer structure. The data pointer, pData, is a virtual address.
  155  *      An API instance may require the actual data to be in contiguous
  156  *      physical memory as determined by @ref CpaInstanceInfo2.
  157  *
  158  *****************************************************************************/
  159 typedef struct _CpaFlatBuffer {
  160     Cpa32U dataLenInBytes;
  161     /**< Data length specified in bytes.
  162      * When used as an input parameter to a function, the length specifies
  163      * the current length of the buffer.
  164      * When used as an output parameter to a function, the length passed in
  165      * specifies the maximum length of the buffer on return (i.e. the allocated
  166      * length).  The implementation will not write past this length.  On return,
  167      * the length is always unchanged. */
  168   Cpa8U *pData;
  169     /**< The data pointer is a virtual address, however the actual data pointed
  170      * to is required to be in contiguous physical memory unless the field
  171      requiresPhysicallyContiguousMemory in CpaInstanceInfo2 is false. */
  172 } CpaFlatBuffer;
  173 
  174 /**
  175  *****************************************************************************
  176  * @ingroup cpa_BaseDataTypes
  177  *      Scatter/Gather buffer list containing an array of flat buffers.
  178  *
  179  * @description
  180  *      A scatter/gather buffer list structure.  This buffer structure is
  181  *      typically used to represent a region of memory which is not
  182  *      physically contiguous, by describing it as a collection of
  183  *      buffers, each of which is physically contiguous.
  184  *
  185  * @note
  186  *      The memory for the pPrivateMetaData member must be allocated
  187  *      by the client as physically contiguous memory.  When allocating
  188  *      memory for pPrivateMetaData, a call to the corresponding
  189  *      BufferListGetMetaSize function (e.g. cpaCyBufferListGetMetaSize)
  190  *      MUST be made to determine the size of the Meta Data Buffer.  The
  191  *      returned size (in bytes) may then be passed in a memory allocation
  192  *      routine to allocate the pPrivateMetaData memory.
  193  *****************************************************************************/
  194 typedef struct _CpaBufferList {
  195     Cpa32U numBuffers;
  196     /**< Number of buffers in the list */
  197     CpaFlatBuffer *pBuffers;
  198     /**< Pointer to an unbounded array containing the number of CpaFlatBuffers
  199      * defined by numBuffers
  200      */
  201     void *pUserData;
  202     /**< This is an opaque field that is not read or modified internally. */
  203     void *pPrivateMetaData;
  204     /**< Private representation of this buffer list.  The memory for this
  205      * buffer needs to be allocated by the client as contiguous data.
  206      * The amount of memory required is returned with a call to
  207      * the corresponding BufferListGetMetaSize function. If that function
  208      * returns a size of zero then no memory needs to be allocated, and this
  209      * parameter can be NULL.
  210      */
  211 } CpaBufferList;
  212 
  213 /**
  214  *****************************************************************************
  215  * @ingroup cpa_BaseDataTypes
  216  *      Flat buffer structure with physical address.
  217  *
  218  * @description
  219  *      Functions taking this structure do not need to do any virtual to
  220  *      physical address translation before writing the buffer to hardware.
  221  *****************************************************************************/
  222 typedef struct _CpaPhysFlatBuffer {
  223     Cpa32U dataLenInBytes;
  224     /**< Data length specified in bytes.
  225      * When used as an input parameter to a function, the length specifies
  226      * the current length of the buffer.
  227      * When used as an output parameter to a function, the length passed in
  228      * specifies the maximum length of the buffer on return (i.e. the allocated
  229      * length).  The implementation will not write past this length.  On return,
  230      * the length is always unchanged.
  231      */
  232     Cpa32U reserved;
  233     /**< Reserved for alignment */
  234     CpaPhysicalAddr bufferPhysAddr;
  235     /**< The physical address at which the data resides.  The data pointed
  236      * to is required to be in contiguous physical memory.
  237      */
  238 } CpaPhysFlatBuffer;
  239 
  240 /**
  241  *****************************************************************************
  242  * @ingroup cpa_BaseDataTypes
  243  *      Scatter/gather list containing an array of flat buffers with
  244  *      physical addresses.
  245  *
  246  * @description
  247  *      Similar to @ref CpaBufferList, this buffer structure is typically
  248  *      used to represent a region of memory which is not physically
  249  *      contiguous, by describing it as a collection of buffers, each of
  250  *      which is physically contiguous.  The difference is that, in this
  251  *      case, the individual "flat" buffers are represented using
  252  *      physical, rather than virtual, addresses.
  253  *****************************************************************************/
  254 typedef struct _CpaPhysBufferList {
  255     Cpa64U reserved0;
  256     /**< Reserved for internal usage */
  257     Cpa32U numBuffers;
  258     /**< Number of buffers in the list */
  259     Cpa32U reserved1;
  260     /**< Reserved for alignment */
  261     CpaPhysFlatBuffer flatBuffers[];
  262     /**< Array of flat buffer structures, of size numBuffers */
  263 } CpaPhysBufferList;
  264 
  265 
  266 /**
  267  *****************************************************************************
  268  * @ingroup cpa_BaseDataTypes
  269  *      Special value which can be taken by length fields on some of the
  270  *      "data plane" APIs to indicate that the buffer in question is of
  271  *      type CpaPhysBufferList, rather than simply an array of bytes.
  272  ****************************************************************************/
  273 #define CPA_DP_BUFLIST ((Cpa32U)0xFFFFFFFF)
  274 
  275 
  276 /**
  277  *****************************************************************************
  278  * @ingroup cpa_BaseDataTypes
  279  *      API status value type definition
  280  *
  281  * @description
  282  *      This type definition is used for the return values used in all the
  283  *      API functions.  Common values are defined, for example see
  284  *      @ref CPA_STATUS_SUCCESS, @ref CPA_STATUS_FAIL, etc.
  285  *****************************************************************************/
  286 typedef Cpa32S CpaStatus;
  287 
  288 #define CPA_STATUS_SUCCESS (0)
  289 /**<
  290  *  @ingroup cpa_BaseDataTypes
  291  *   Success status value. */
  292 #define CPA_STATUS_FAIL (-1)
  293 /**<
  294  *  @ingroup cpa_BaseDataTypes
  295  *   Fail status value. */
  296 #define CPA_STATUS_RETRY (-2)
  297 /**<
  298  *  @ingroup cpa_BaseDataTypes
  299  *  Retry status value. */
  300 #define CPA_STATUS_RESOURCE (-3)
  301 /**<
  302  *  @ingroup cpa_BaseDataTypes
  303  *  The resource that has been requested is unavailable. Refer
  304  *  to relevant sections of the API for specifics on what the suggested
  305  *  course of action is. */
  306 #define CPA_STATUS_INVALID_PARAM (-4)
  307 /**<
  308  *  @ingroup cpa_BaseDataTypes
  309  *  Invalid parameter has been passed in. */
  310 #define CPA_STATUS_FATAL (-5)
  311 /**<
  312  *  @ingroup cpa_BaseDataTypes
  313  *  A serious error has occurred. Recommended course of action
  314  *  is to shutdown and restart the component. */
  315 #define CPA_STATUS_UNSUPPORTED (-6)
  316 /**<
  317  *  @ingroup cpa_BaseDataTypes
  318  *  The function is not supported, at least not with the specific
  319  *  parameters supplied.  This may be because a particular
  320  *  capability is not supported by the current implementation. */
  321 #define CPA_STATUS_RESTARTING (-7)
  322 /**<
  323  *  @ingroup cpa_BaseDataTypes
  324  *  The API implementation is restarting. This may be reported if, for example,
  325  *  a hardware implementation is undergoing a reset. Recommended course of
  326  *  action is to retry the request. */
  327 
  328 /**
  329  *****************************************************************************
  330  * @ingroup cpa_BaseDataTypes
  331  *      API status string type definition
  332  * @description
  333  *      This type definition is used for the generic status text strings
  334  *      provided by cpaXxGetStatusText API functions.  Common values are
  335  *      defined, for example see @ref CPA_STATUS_STR_SUCCESS,
  336  *      @ref CPA_STATUS_FAIL, etc., as well as the maximum size
  337  *      @ref CPA_STATUS_MAX_STR_LENGTH_IN_BYTES.
  338  *****************************************************************************/
  339 #define CPA_STATUS_MAX_STR_LENGTH_IN_BYTES (255)
  340 /**<
  341  *  @ingroup cpa_BaseDataTypes
  342  *   Maximum length of the Overall Status String (including generic and specific
  343  *   strings returned by calls to cpaXxGetStatusText) */
  344 
  345 #define CPA_STATUS_STR_SUCCESS       ("Operation was successful:")
  346 /**<
  347  *  @ingroup cpa_BaseDataTypes
  348  *   Status string for @ref CPA_STATUS_SUCCESS. */
  349 #define CPA_STATUS_STR_FAIL          ("General or unspecified error occurred:")
  350 /**<
  351  *  @ingroup cpa_BaseDataTypes
  352  *   Status string for @ref CPA_STATUS_FAIL. */
  353 #define CPA_STATUS_STR_RETRY         ("Recoverable error occurred:")
  354 /**<
  355  *  @ingroup cpa_BaseDataTypes
  356  *   Status string for @ref CPA_STATUS_RETRY. */
  357 #define CPA_STATUS_STR_RESOURCE      ("Required resource unavailable:")
  358 /**<
  359  *  @ingroup cpa_BaseDataTypes
  360  *   Status string for @ref CPA_STATUS_RESOURCE. */
  361 #define CPA_STATUS_STR_INVALID_PARAM ("Invalid parameter supplied:")
  362 /**<
  363  *  @ingroup cpa_BaseDataTypes
  364  *   Status string for @ref CPA_STATUS_INVALID_PARAM. */
  365 #define CPA_STATUS_STR_FATAL         ("Fatal error has occurred:")
  366 /**<
  367  *  @ingroup cpa_BaseDataTypes
  368  *   Status string for @ref CPA_STATUS_FATAL. */
  369 #define CPA_STATUS_STR_UNSUPPORTED   ("Operation not supported:")
  370 /**<
  371  *  @ingroup cpa_BaseDataTypes
  372  *   Status string for @ref CPA_STATUS_UNSUPPORTED. */
  373 
  374 /**
  375  *****************************************************************************
  376  * @ingroup cpa_BaseDataTypes
  377  *      Instance Types
  378  *
  379  * @deprecated
  380  *              As of v1.3 of the Crypto API, this enum has been deprecated,
  381  *              replaced by @ref CpaAccelerationServiceType.
  382  *
  383  * @description
  384  *      Enumeration of the different instance types.
  385  *
  386  *****************************************************************************/
  387 typedef enum _CpaInstanceType
  388 {
  389     CPA_INSTANCE_TYPE_CRYPTO = 0,
  390     /**< Cryptographic instance type */
  391     CPA_INSTANCE_TYPE_DATA_COMPRESSION,
  392     /**< Data compression instance type */
  393     CPA_INSTANCE_TYPE_RAID,
  394     /**< RAID instance type */
  395     CPA_INSTANCE_TYPE_XML,
  396     /**< XML instance type */
  397     CPA_INSTANCE_TYPE_REGEX
  398     /**< Regular Expression instance type */
  399 } CpaInstanceType CPA_DEPRECATED;
  400 
  401 /**
  402  *****************************************************************************
  403  * @ingroup cpa_BaseDataTypes
  404  *      Service Type
  405  * @description
  406  *      Enumeration of the different service types.
  407  *
  408  *****************************************************************************/
  409 typedef enum _CpaAccelerationServiceType
  410 {
  411     CPA_ACC_SVC_TYPE_CRYPTO = CPA_INSTANCE_TYPE_CRYPTO,
  412     /**< Cryptography */
  413     CPA_ACC_SVC_TYPE_DATA_COMPRESSION = CPA_INSTANCE_TYPE_DATA_COMPRESSION,
  414     /**< Data Compression */
  415     CPA_ACC_SVC_TYPE_PATTERN_MATCH = CPA_INSTANCE_TYPE_REGEX,
  416     /**< Pattern Match */
  417     CPA_ACC_SVC_TYPE_RAID = CPA_INSTANCE_TYPE_RAID,
  418     /**< RAID */
  419     CPA_ACC_SVC_TYPE_XML = CPA_INSTANCE_TYPE_XML,
  420     /**< XML */
  421     CPA_ACC_SVC_TYPE_VIDEO_ANALYTICS
  422     /**< Video Analytics */
  423 } CpaAccelerationServiceType;
  424 
  425 /**
  426  *****************************************************************************
  427  * @ingroup cpa_BaseDataTypes
  428  *      Instance State
  429  *
  430  * @deprecated
  431  *      As of v1.3 of the Crypto API, this enum has been deprecated,
  432  *      replaced by @ref CpaOperationalState.
  433  *
  434  * @description
  435  *      Enumeration of the different instance states that are possible.
  436  *
  437  *****************************************************************************/
  438 typedef enum _CpaInstanceState
  439 {
  440     CPA_INSTANCE_STATE_INITIALISED = 0,
  441     /**< Instance is in the initialized state and ready for use. */
  442     CPA_INSTANCE_STATE_SHUTDOWN
  443     /**< Instance is in the shutdown state and not available for use. */
  444 } CpaInstanceState CPA_DEPRECATED;
  445 
  446 /**
  447  *****************************************************************************
  448  * @ingroup cpa_BaseDataTypes
  449  *      Instance operational state
  450  * @description
  451  *      Enumeration of the different operational states that are possible.
  452  *
  453  *****************************************************************************/
  454 typedef enum _CpaOperationalState
  455 {
  456     CPA_OPER_STATE_DOWN= 0,
  457     /**< Instance is not available for use. May not yet be initialized,
  458      * or stopped. */
  459     CPA_OPER_STATE_UP
  460     /**< Instance is available for use. Has been initialized and started. */
  461 } CpaOperationalState;
  462 
  463 #define CPA_INSTANCE_MAX_NAME_SIZE_IN_BYTES 64
  464 /**<
  465  *  @ingroup cpa_BaseDataTypes
  466  *  Maximum instance info name string length in bytes */
  467 #define CPA_INSTANCE_MAX_ID_SIZE_IN_BYTES 128
  468 /**<
  469  *  @ingroup cpa_BaseDataTypes
  470  *  Maximum instance info id string length in bytes */
  471 #define CPA_INSTANCE_MAX_VERSION_SIZE_IN_BYTES 64
  472 /**<
  473  *  @ingroup cpa_BaseDataTypes
  474  * Maximum instance info version string length in bytes */
  475 
  476 /**
  477  *****************************************************************************
  478  * @ingroup cpa_BaseDataTypes
  479  *      Instance Info Structure
  480  *
  481  * @deprecated
  482  *              As of v1.3 of the Crypto API, this structure has been deprecated,
  483  *              replaced by CpaInstanceInfo2.
  484  *
  485  * @description
  486  *      Structure that contains the information to describe the instance.
  487  *
  488  *****************************************************************************/
  489 typedef struct _CpaInstanceInfo {
  490     enum _CpaInstanceType type;
  491     /**< Type definition for this instance. */
  492     enum _CpaInstanceState state;
  493     /**< Operational state of the instance. */
  494     Cpa8U name[CPA_INSTANCE_MAX_NAME_SIZE_IN_BYTES];
  495     /**< Simple text string identifier for the instance. */
  496     Cpa8U version[CPA_INSTANCE_MAX_VERSION_SIZE_IN_BYTES];
  497     /**< Version string. There may be multiple versions of the same type of
  498      * instance accessible through a particular library. */
  499 } CpaInstanceInfo CPA_DEPRECATED;
  500 
  501 /**
  502  *****************************************************************************
  503  * @ingroup cpa_BaseDataTypes
  504  *      Physical Instance ID
  505  * @description
  506  *      Identifies the physical instance of an accelerator execution
  507  *      engine.
  508  *
  509  *      Accelerators grouped into "packages".  Each accelerator can in
  510  *      turn contain one or more execution engines.  Implementations of
  511  *      this API will define the packageId, acceleratorId,
  512  *      executionEngineId and busAddress as appropriate for the
  513  *      implementation.  For example, for hardware-based accelerators,
  514  *      the packageId might identify the chip, which might contain
  515  *      multiple accelerators, each of which might contain multiple
  516  *      execution engines. The combination of packageId, acceleratorId
  517  *      and executionEngineId uniquely identifies the instance.
  518  *
  519  *      Hardware based accelerators implementing this API may also provide
  520  *      information on the location of the accelerator in the busAddress
  521  *      field. This field will be defined as appropriate for the
  522  *      implementation. For example, for PCIe attached accelerators,
  523  *      the busAddress may contain the PCIe bus, device and function
  524  *      number of the accelerators.
  525  *
  526  *****************************************************************************/
  527 typedef struct _CpaPhysicalInstanceId {
  528     Cpa16U packageId;
  529     /**< Identifies the package within which the accelerator is
  530      * contained. */
  531     Cpa16U acceleratorId;
  532     /**< Identifies the specific accelerator within the package. */
  533     Cpa16U executionEngineId;
  534     /**< Identifies the specific execution engine within the
  535      * accelerator. */
  536     Cpa16U busAddress;
  537     /**< Identifies the bus address associated with the accelerator
  538      * execution engine. */
  539     Cpa32U kptAcHandle;
  540     /**< Identifies the achandle of the accelerator. */
  541 } CpaPhysicalInstanceId;
  542 
  543 /**
  544  *****************************************************************************
  545  * @ingroup cpa_BaseDataTypes
  546  *      Instance Info Structure, version 2
  547  * @description
  548  *      Structure that contains the information to describe the instance.
  549  *
  550  *****************************************************************************/
  551 typedef struct _CpaInstanceInfo2 {
  552     CpaAccelerationServiceType accelerationServiceType;
  553     /**< Type of service provided by this instance. */
  554 #define CPA_INST_VENDOR_NAME_SIZE CPA_INSTANCE_MAX_NAME_SIZE_IN_BYTES
  555     /**< Maximum length of the vendor name. */
  556     Cpa8U vendorName[CPA_INST_VENDOR_NAME_SIZE];
  557     /**< String identifying the vendor of the accelerator. */
  558 
  559 #define CPA_INST_PART_NAME_SIZE CPA_INSTANCE_MAX_NAME_SIZE_IN_BYTES
  560     /**< Maximum length of the part name. */
  561     Cpa8U partName[CPA_INST_PART_NAME_SIZE];
  562     /**< String identifying the part (name and/or number). */
  563 
  564 #define CPA_INST_SW_VERSION_SIZE CPA_INSTANCE_MAX_VERSION_SIZE_IN_BYTES
  565     /**< Maximum length of the software version string. */
  566     Cpa8U swVersion[CPA_INST_SW_VERSION_SIZE];
  567     /**< String identifying the version of the software associated with
  568      * the instance.  For hardware-based implementations of the API,
  569      * this should be the driver version.  For software-based
  570      * implementations of the API, this should be the version of the
  571      * library.
  572      *
  573      * Note that this should NOT be used to store the version of the
  574      * API, nor should it be used to report the hardware revision
  575      * (which can be captured as part of the @ref partName, if required). */
  576 
  577 #define CPA_INST_NAME_SIZE CPA_INSTANCE_MAX_NAME_SIZE_IN_BYTES
  578     /**< Maximum length of the instance name. */
  579     Cpa8U instName[CPA_INST_NAME_SIZE];
  580     /**< String identifying the name of the instance. */
  581 
  582 #define CPA_INST_ID_SIZE CPA_INSTANCE_MAX_ID_SIZE_IN_BYTES
  583     Cpa8U instID[CPA_INST_ID_SIZE];
  584     /**< String containing a unique identifier for the instance */
  585 
  586     CpaPhysicalInstanceId physInstId;
  587     /**< Identifies the "physical instance" of the accelerator. */
  588 
  589 #define CPA_MAX_CORES 256
  590     /**< Maximum number of cores to support in the coreAffinity bitmap. */
  591     CPA_BITMAP(coreAffinity, CPA_MAX_CORES);
  592     /**< A bitmap identifying the core or cores to which the instance
  593      * is affinitized in an SMP operating system.
  594      *
  595      * The term core here is used to mean a "logical" core - for example,
  596      * in a dual-processor, quad-core system with hyperthreading (two
  597      * threads per core), there would be 16 such cores (2 processors x
  598      * 4 cores/processor x 2 threads/core).  The numbering of these cores
  599      * and the corresponding bit positions is OS-specific.  Note that Linux
  600      * refers to this as "processor affinity" or "CPU affinity", and refers
  601      * to the bitmap as a "cpumask".
  602      *
  603      * The term "affinity" is used to mean that this is the core on which
  604      * the callback function will be invoked when using the asynchronous
  605      * mode of the API.  In a hardware-based implementation of the API,
  606      * this might be the core to which the interrupt is affinitized.
  607      * In a software-based implementation, this might be the core to which
  608      * the process running the algorithm is affinitized.  Where there is
  609      * no affinity, the bitmap can be set to all zeroes.
  610      *
  611      * This bitmap should be manipulated using the macros @ref
  612      * CPA_BITMAP_BIT_SET, @ref CPA_BITMAP_BIT_CLEAR and @ref
  613      * CPA_BITMAP_BIT_TEST. */
  614 
  615     Cpa32U nodeAffinity;
  616     /**< Identifies the processor complex, or node, to which the accelerator
  617      * is physically connected, to help identify locality in NUMA systems.
  618      *
  619      * The values taken by this attribute will typically be in the range
  620      * 0..n-1, where n is the number of nodes (processor complexes) in the
  621      * system.  For example, in a dual-processor configuration, n=2.  The
  622      * precise values and their interpretation are OS-specific. */
  623 
  624     CpaOperationalState operState;
  625     /**< Operational state of the instance. */
  626     CpaBoolean requiresPhysicallyContiguousMemory;
  627     /**< Specifies whether the data pointed to by flat buffers
  628      * (CpaFlatBuffer::pData) supplied to this instance must be in
  629      * physically contiguous memory. */
  630     CpaBoolean isPolled;
  631     /**< Specifies whether the instance must be polled, or is event driven.
  632      * For hardware accelerators, the alternative to polling would be
  633      * interrupts. */
  634     CpaBoolean isOffloaded;
  635     /**< Identifies whether the instance uses hardware offload, or is a
  636      * software-only implementation. */
  637 } CpaInstanceInfo2;
  638 
  639 /**
  640  *****************************************************************************
  641  * @ingroup cpa_BaseDataTypes
  642  *      Instance Events
  643  * @description
  644  *      Enumeration of the different events that will cause the registered
  645  *  Instance notification callback function to be invoked.
  646  *
  647  *****************************************************************************/
  648 typedef enum _CpaInstanceEvent
  649 {
  650     CPA_INSTANCE_EVENT_RESTARTING = 0,
  651     /**< Event type that triggers the registered instance notification callback
  652      * function when and instance is restarting. The reason why an instance is
  653      * restarting is implementation specific. For example a hardware
  654      * implementation may send this event if the hardware device is about to
  655      * be reset.
  656      */
  657     CPA_INSTANCE_EVENT_RESTARTED,
  658     /**< Event type that triggers the registered instance notification callback
  659      * function when and instance has restarted. The reason why an instance has
  660      * restarted is implementation specific. For example a hardware
  661      * implementation may send this event after the hardware device has
  662      * been reset.
  663      */
  664     CPA_INSTANCE_EVENT_FATAL_ERROR
  665     /**< Event type that triggers the registered instance notification callback
  666      * function when an error has been detected that requires the device
  667      * to be reset. 
  668      * This event will be sent by all instances using the device, both on the 
  669      * host and guests. 
  670      */
  671 } CpaInstanceEvent;
  672 
  673 #ifdef __cplusplus
  674 } /* close the extern "C" { */
  675 #endif
  676 
  677 #endif /* CPA_H */

Cache object: 7cfb051142073520f67f9ef7c18b1b47


[ 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.