blob: d4eb9c3b6e0c70b9def61ddae58591fb0befcd14 (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
|
/* SPDX-License-Identifier: BSD-3-Clause */
/* Copyright(c) 2007-2022 Intel Corporation */
/**
*****************************************************************************
* @file dev_info.c
*
* @defgroup Device
*
* @description
* This file contains implementation of functions for device level APIs
*
*****************************************************************************/
/* QAT-API includes */
#include "cpa_dev.h"
#include "icp_accel_devices.h"
#include "lac_common.h"
#include "icp_adf_cfg.h"
#include "lac_sal_types.h"
#include "icp_adf_accel_mgr.h"
#include "sal_string_parse.h"
#include "lac_sal.h"
CpaStatus
cpaGetNumDevices(Cpa16U *numDevices)
{
LAC_CHECK_NULL_PARAM(numDevices);
return icp_amgr_getNumInstances(numDevices);
}
CpaStatus
cpaGetDeviceInfo(Cpa16U device, CpaDeviceInfo *deviceInfo)
{
CpaStatus status = CPA_STATUS_SUCCESS;
icp_accel_dev_t *pDevice = NULL;
Cpa16U numDevicesAvail = 0;
Cpa32U capabilitiesMask = 0;
Cpa32U enabledServices = 0;
LAC_CHECK_NULL_PARAM(deviceInfo);
status = icp_amgr_getNumInstances(&numDevicesAvail);
/* Check if the application is not attempting to access a
* device that does not exist.
*/
if (0 == numDevicesAvail) {
QAT_UTILS_LOG("Failed to retrieve number of devices!\n");
return CPA_STATUS_FAIL;
}
if (device >= numDevicesAvail) {
QAT_UTILS_LOG(
"Invalid device access! Number of devices available: %d.\n",
numDevicesAvail);
return CPA_STATUS_FAIL;
}
/* Clear the entire capability structure before initialising it */
memset(deviceInfo, 0x00, sizeof(CpaDeviceInfo));
/* Bus/Device/Function should be 0xFF until initialised */
deviceInfo->bdf = 0xffff;
pDevice = icp_adf_getAccelDevByAccelId(device);
if (NULL == pDevice) {
QAT_UTILS_LOG("Failed to retrieve device.\n");
return status;
}
/* Device of interest is found, retrieve the information for it */
deviceInfo->sku = pDevice->sku;
deviceInfo->deviceId = pDevice->pciDevId;
deviceInfo->bdf = icp_adf_get_busAddress(pDevice->accelId);
deviceInfo->numaNode = pDevice->pkg_id;
if (DEVICE_DH895XCCVF == pDevice->deviceType ||
DEVICE_C62XVF == pDevice->deviceType ||
DEVICE_C3XXXVF == pDevice->deviceType ||
DEVICE_C4XXXVF == pDevice->deviceType) {
deviceInfo->isVf = CPA_TRUE;
}
status = SalCtrl_GetEnabledServices(pDevice, &enabledServices);
if (CPA_STATUS_SUCCESS != status) {
QAT_UTILS_LOG("Failed to retrieve enabled services!\n");
return status;
}
status = icp_amgr_getAccelDevCapabilities(pDevice, &capabilitiesMask);
if (CPA_STATUS_SUCCESS != status) {
QAT_UTILS_LOG("Failed to retrieve accel capabilities mask!\n");
return status;
}
/* Determine if Compression service is enabled */
if (enabledServices & SAL_SERVICE_TYPE_COMPRESSION) {
deviceInfo->dcEnabled =
(((capabilitiesMask & ICP_ACCEL_CAPABILITIES_COMPRESSION) !=
0) ?
CPA_TRUE :
CPA_FALSE);
}
/* Determine if Crypto service is enabled */
if (enabledServices & SAL_SERVICE_TYPE_CRYPTO) {
deviceInfo->cySymEnabled =
(((capabilitiesMask &
ICP_ACCEL_CAPABILITIES_CRYPTO_SYMMETRIC)) ?
CPA_TRUE :
CPA_FALSE);
deviceInfo->cyAsymEnabled =
(((capabilitiesMask &
ICP_ACCEL_CAPABILITIES_CRYPTO_ASYMMETRIC) != 0) ?
CPA_TRUE :
CPA_FALSE);
}
/* Determine if Crypto Sym service is enabled */
if (enabledServices & SAL_SERVICE_TYPE_CRYPTO_SYM) {
deviceInfo->cySymEnabled =
(((capabilitiesMask &
ICP_ACCEL_CAPABILITIES_CRYPTO_SYMMETRIC)) ?
CPA_TRUE :
CPA_FALSE);
}
/* Determine if Crypto Asym service is enabled */
if (enabledServices & SAL_SERVICE_TYPE_CRYPTO_ASYM) {
deviceInfo->cyAsymEnabled =
(((capabilitiesMask &
ICP_ACCEL_CAPABILITIES_CRYPTO_ASYMMETRIC) != 0) ?
CPA_TRUE :
CPA_FALSE);
}
deviceInfo->deviceMemorySizeAvailable = pDevice->deviceMemAvail;
return status;
}
|