xref: /freebsd/sys/dev/qat/qat_api/include/cpa_dev.h (revision 2542189532b3025577fa4e782904494f3587008b)
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_dev.h
1278ee8d1cSJulian Grajkowski  *
1378ee8d1cSJulian Grajkowski  * @defgroup cpaDev Device API
1478ee8d1cSJulian Grajkowski  *
1578ee8d1cSJulian Grajkowski  * @ingroup cpa
1678ee8d1cSJulian Grajkowski  *
1778ee8d1cSJulian Grajkowski  * @description
1878ee8d1cSJulian Grajkowski  *      These functions specify the API for device level operation.
1978ee8d1cSJulian Grajkowski  *
2078ee8d1cSJulian Grajkowski  * @remarks
2178ee8d1cSJulian Grajkowski  *
2278ee8d1cSJulian Grajkowski  *
2378ee8d1cSJulian Grajkowski  *****************************************************************************/
2478ee8d1cSJulian Grajkowski 
2578ee8d1cSJulian Grajkowski #ifndef CPA_DEV_H
2678ee8d1cSJulian Grajkowski #define CPA_DEV_H
2778ee8d1cSJulian Grajkowski 
2878ee8d1cSJulian Grajkowski #ifdef __cplusplus
2978ee8d1cSJulian Grajkowski extern"C" {
3078ee8d1cSJulian Grajkowski #endif
3178ee8d1cSJulian Grajkowski 
3278ee8d1cSJulian Grajkowski 
3378ee8d1cSJulian Grajkowski #ifndef CPA_H
3478ee8d1cSJulian Grajkowski #include "cpa.h"
3578ee8d1cSJulian Grajkowski #endif
3678ee8d1cSJulian Grajkowski 
3778ee8d1cSJulian Grajkowski 
3878ee8d1cSJulian Grajkowski  /*****************************************************************************
3978ee8d1cSJulian Grajkowski  * @ingroup cpaDev
4078ee8d1cSJulian Grajkowski  *      Returns device information
4178ee8d1cSJulian Grajkowski  *
4278ee8d1cSJulian Grajkowski  * @description
4378ee8d1cSJulian Grajkowski  *      This data structure contains the device information. The device
4478ee8d1cSJulian Grajkowski  *      information are available to both Physical and Virtual Functions.
4578ee8d1cSJulian Grajkowski  *      Depending on the resource partitioning configuration, the services
4678ee8d1cSJulian Grajkowski  *      available may changes. This configuration will impact the size of the
4778ee8d1cSJulian Grajkowski  *      Security Association Database (SADB). Other properties such device SKU
4878ee8d1cSJulian Grajkowski  *      and device ID are also reported.
4978ee8d1cSJulian Grajkowski  *
5078ee8d1cSJulian Grajkowski  *****************************************************************************/
5178ee8d1cSJulian Grajkowski typedef struct _CpaDeviceInfo {
5278ee8d1cSJulian Grajkowski 	Cpa32U sku;
5378ee8d1cSJulian Grajkowski 	/**< Identifies the SKU of the device. */
5478ee8d1cSJulian Grajkowski 	Cpa16U bdf;
5578ee8d1cSJulian Grajkowski 	/**< Identifies the Bus Device Function of the device.
5678ee8d1cSJulian Grajkowski 	 *   Format is reported as follow:
5778ee8d1cSJulian Grajkowski 	 *   - bits<2:0> represent the function number.
5878ee8d1cSJulian Grajkowski 	 *   - bits<7:3> represent the device
5978ee8d1cSJulian Grajkowski 	 *   - bits<15:8> represent the bus
6078ee8d1cSJulian Grajkowski 	 */
6178ee8d1cSJulian Grajkowski 	Cpa32U deviceId;
6278ee8d1cSJulian Grajkowski 	/**< Returns the device ID. */
6378ee8d1cSJulian Grajkowski 	Cpa32U numaNode;
6478ee8d1cSJulian Grajkowski 	/**< Return the local NUMA node mapped to the device. */
6578ee8d1cSJulian Grajkowski 	CpaBoolean isVf;
6678ee8d1cSJulian Grajkowski 	/**< Return whether the device is currently used in a virtual function
6778ee8d1cSJulian Grajkowski 	 *   or not. */
6878ee8d1cSJulian Grajkowski 	CpaBoolean dcEnabled;
6978ee8d1cSJulian Grajkowski     /**< Compression service enabled */
7078ee8d1cSJulian Grajkowski 	CpaBoolean cySymEnabled;
7125f09d4aSHareshx Sankar Raj     /**< Symmetric crypto service enabled */
7278ee8d1cSJulian Grajkowski 	CpaBoolean cyAsymEnabled;
7325f09d4aSHareshx Sankar Raj     /**< Asymmetric crypto service enabled */
7478ee8d1cSJulian Grajkowski 	CpaBoolean inlineEnabled;
7578ee8d1cSJulian Grajkowski     /**< Inline service enabled */
7678ee8d1cSJulian Grajkowski 	Cpa32U deviceMemorySizeAvailable;
7778ee8d1cSJulian Grajkowski 	/**< Return the size of the device memory available. This device memory
7878ee8d1cSJulian Grajkowski 	 *   section could be used for the intermediate buffers in the
7978ee8d1cSJulian Grajkowski 	 *   compression service.
8078ee8d1cSJulian Grajkowski 	 */
8178ee8d1cSJulian Grajkowski } CpaDeviceInfo;
8278ee8d1cSJulian Grajkowski 
8378ee8d1cSJulian Grajkowski 
8478ee8d1cSJulian Grajkowski /*****************************************************************************
8578ee8d1cSJulian Grajkowski * @ingroup cpaDev
8678ee8d1cSJulian Grajkowski *      Returns number devices.
8778ee8d1cSJulian Grajkowski *
8878ee8d1cSJulian Grajkowski * @description
8978ee8d1cSJulian Grajkowski *      This API returns the number of devices available to the application.
9078ee8d1cSJulian Grajkowski *      If used on the host, it will return the number of physical devices.
9178ee8d1cSJulian Grajkowski *      If used on the guest, it will return the number of function mapped
9278ee8d1cSJulian Grajkowski *      to the virtual machine.
9378ee8d1cSJulian Grajkowski *
9478ee8d1cSJulian Grajkowski *****************************************************************************/
9578ee8d1cSJulian Grajkowski CpaStatus cpaGetNumDevices (Cpa16U *numDevices);
9678ee8d1cSJulian Grajkowski 
9778ee8d1cSJulian Grajkowski /*****************************************************************************
9878ee8d1cSJulian Grajkowski * @ingroup cpaDev
9978ee8d1cSJulian Grajkowski *      Returns device information for a given device index.
10078ee8d1cSJulian Grajkowski *
10178ee8d1cSJulian Grajkowski * @description
10278ee8d1cSJulian Grajkowski *      Returns device information for a given device index. This API must
10378ee8d1cSJulian Grajkowski *      be used with cpaGetNumDevices().
10478ee8d1cSJulian Grajkowski *****************************************************************************/
10578ee8d1cSJulian Grajkowski CpaStatus cpaGetDeviceInfo (Cpa16U device, CpaDeviceInfo *deviceInfo);
10678ee8d1cSJulian Grajkowski 
10778ee8d1cSJulian Grajkowski #ifdef __cplusplus
10878ee8d1cSJulian Grajkowski } /* close the extern "C" { */
10978ee8d1cSJulian Grajkowski #endif
11078ee8d1cSJulian Grajkowski 
11178ee8d1cSJulian Grajkowski #endif /* CPA_DEV_H */
112