Page MenuHomeFreeBSD

D50379.id155568.diff
No OneTemporary

D50379.id155568.diff

This file is larger than 256 KB, so syntax highlighting was skipped.
diff --git a/share/man/man4/qat.4 b/share/man/man4/qat.4
--- a/share/man/man4/qat.4
+++ b/share/man/man4/qat.4
@@ -1,6 +1,6 @@
.\" SPDX-License-Identifier: BSD-3-Clause
-.\" Copyright(c) 2007-2022 Intel Corporation
-.Dd May 4, 2023
+.\" Copyright(c) 2007-2025 Intel Corporation
+.Dd Jan 20, 2025
.Dt QAT 4
.Os
.Sh NAME
@@ -130,6 +130,12 @@
.It Va num_user_processes
Override the number of uio user space processes that can connect to the QAT device.
Default: 2
+.It Va disable_safe_dc_mode
+Override history buffer mitigation.
+Disabled by default.
+If enabled, decompression throughput increases but may result in a data leak if num_user_processes is more than 1.
+Enable this option only if your system is not prone to user data leaks.
+
.El
.Pp
The following
diff --git a/sys/conf/NOTES b/sys/conf/NOTES
--- a/sys/conf/NOTES
+++ b/sys/conf/NOTES
@@ -2868,3 +2868,7 @@
# File system monitoring
device filemon # file monitoring for make(1) meta-mode
+
+
+# Options for the Intel QuickAssist (QAT) driver.
+options QAT_DISABLE_SAFE_DC_MODE # Disable QAT safe data compression mode (only for 4940 devices).
diff --git a/sys/conf/options b/sys/conf/options
--- a/sys/conf/options
+++ b/sys/conf/options
@@ -1012,3 +1012,6 @@
# This option is insecure except in controlled environments where the static
# environment's contents are known to be safe.
PRESERVE_EARLY_KENV opt_global.h
+
+# Options for the Intel QuickAssist (QAT) driver.
+QAT_DISABLE_SAFE_DC_MODE opt_qat.h
diff --git a/sys/contrib/dev/qat/qat_4xxx.bin b/sys/contrib/dev/qat/qat_4xxx.bin
index 23eb8077241a4c4b338e6a8be5e4a46cbe43ac84..7783d361a93cedba410590a22cc964526b73b1b3
GIT binary patch
literal 665356
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
zpMmAfW;q*sB|80Jg7FS2*zlG9C@b(%{~q!JAt50lAt50lAt50lAt50lAt50lAt50l
zAt50lAt50lAt50lAt50lAt50lAt50lAt50lAt50lAt50lAt50lAt50lAt50lAt50l
zAt50lAt50lAt50lAt50lAt50lAt50lAt50lAt50lAt50lAt50lAt50lAt50lAt50l
zAt50lAt50lAt50lAt50lAt50lAt50lAt50lAt50lAt50lAt50lAt50lAt50lAt50l
zAt50lAt50lAt50lAt50lAt50lAt50lAt50lAt50lAt50lAt50lAt50lAt50lAt50l
zAt50lAt50lAt50lAt50lAt50lAt50lAt50lAt50lAt50lAt50lAt50lAt50lAt50l
zAt50lAt50lAt50lAt50lAt50lAt50lAt50lAt50lAt50lAt50lAt50lAt50lAt50l
zAt50lAt50lAt50lAt50lAt50lAt50lAt50lAt50lAt50lAt50lAt50lAt50lAt50l
zAt50lAt50lAt50lAt50lAt50lAt50lAt50lAt50lAt50lAt50lAt50lAt50lAt50l
zAt50lAt50lAt50lAt50lAt50lAt50lAt50lAt50lAt50lAt50lAt50lAt50lAt50l
WAt50lAt50lAt50lAtB*E9{(?!Qk1^{
literal 665356
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%0DfeY@<3(04)xI<IF0-p6cLtBDsDTV>xE;G
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
z?>owU|55I%N4Xz3%KhL`?uU+YzxezA9$3z7mb0-}qLl{|jCWAMhOhKTS%H`O=a3f&
z2?+@a2?+@a2?+@a2?+@a2?+@a2?+@a2?+@a2?+@a2?+@a2?+@a2?+@a2?+@a2?+@a
z2?+@a2?+@a2?+@a2?+@a2?+@a2?+@a2?+@a2?+@a2?+@a2?+@a2?+@a2?+@a2?+@a
z2?+@a2?+@a2?+@a2?+@a2?+@a2?+@a2?+@a2?+@a2?+@a2?+@a2?+@a2?+@a2?+@a
z2?+@a2?+@a2?+@a2?+@a2?+@a2?+@a2?+@a2?+@a2?+@a2?+@a2?+@a2?+@a2?+@a
z2?+@a2?+@a2?+@a2?+@a2?+@a2?+@a2?+@a2?+@a2?+@a2?+@a2?+@a2?+@a2?+@a
z2?+@a2?+@a2?+@a2?+@a2?+@a2?+@a2?+@a2?+@a2?+@a2?+@a2?+@a2?+@a2?+@a
z2?+@a2?+@a2?+@a2?+@a2?+@a2?+@a2?+@a2?+@a2?+@a2?+@a2?+@a2?+@a2?+@a
z2?+@a2?+@a2?+@a2?+@a2?+@a2?+@a2?+@a2?+@a2?+@a2?+@a2?+@a2?+@a2?+@a
z2?+@a2?+@a2?+@a2?+@a2?+@a2?+@a2?+@a2?+@a2?+@a2?+@a2?+@a2?+@a2?+@a
u2?+@a2?+@a2?+@a2?+@a2?+@a2?+@a2?+@a2?+@a2?+@a2?_u9_<sR>QF%%L
diff --git a/sys/dev/qat/include/adf_cfg_device.h b/sys/dev/qat/include/adf_cfg_device.h
--- a/sys/dev/qat/include/adf_cfg_device.h
+++ b/sys/dev/qat/include/adf_cfg_device.h
@@ -1,5 +1,5 @@
/* SPDX-License-Identifier: BSD-3-Clause */
-/* Copyright(c) 2007-2022 Intel Corporation */
+/* Copyright(c) 2007-2025 Intel Corporation */
#ifndef ADF_CFG_DEVICE_H_
#define ADF_CFG_DEVICE_H_
@@ -79,4 +79,6 @@
void adf_cfg_device_clear(struct adf_cfg_device *device,
struct adf_accel_dev *accel_dev);
+void adf_cfg_device_clear_all(struct adf_accel_dev *accel_dev);
+
#endif
diff --git a/sys/dev/qat/include/adf_dbgfs.h b/sys/dev/qat/include/adf_dbgfs.h
new file mode 100644
--- /dev/null
+++ b/sys/dev/qat/include/adf_dbgfs.h
@@ -0,0 +1,11 @@
+/* SPDX-License-Identifier: BSD-3-Clause */
+/* Copyright(c) 2007-2025 Intel Corporation */
+
+#ifndef ADF_DBGFS_H
+#define ADF_DBGFS_H
+
+void adf_dbgfs_init(struct adf_accel_dev *accel_dev);
+void adf_dbgfs_add(struct adf_accel_dev *accel_dev);
+void adf_dbgfs_rm(struct adf_accel_dev *accel_dev);
+void adf_dbgfs_exit(struct adf_accel_dev *accel_dev);
+#endif
diff --git a/sys/dev/qat/include/adf_gen4vf_hw_csr_data.h b/sys/dev/qat/include/adf_gen4vf_hw_csr_data.h
--- a/sys/dev/qat/include/adf_gen4vf_hw_csr_data.h
+++ b/sys/dev/qat/include/adf_gen4vf_hw_csr_data.h
@@ -1,5 +1,5 @@
/* SPDX-License-Identifier: BSD-3-Clause */
-/* Copyright(c) 2007-2022 Intel Corporation */
+/* Copyright(c) 2007-2025 Intel Corporation */
#ifndef ADF_GEN4VF_HW_CSR_DATA_H_
#define ADF_GEN4VF_HW_CSR_DATA_H_
@@ -51,7 +51,7 @@
struct resource *_csr_base_addr = csr_base_addr; \
u32 _bank = bank; \
u32 _ring = ring; \
- dma_addr_t _value = value; \
+ bus_addr_t _value = value; \
u32 l_base = 0, u_base = 0; \
l_base = (u32)((_value)&0xFFFFFFFF); \
u_base = (u32)(((_value)&0xFFFFFFFF00000000ULL) >> 32); \
diff --git a/sys/dev/qat/include/adf_heartbeat.h b/sys/dev/qat/include/adf_heartbeat.h
--- a/sys/dev/qat/include/adf_heartbeat.h
+++ b/sys/dev/qat/include/adf_heartbeat.h
@@ -1,5 +1,5 @@
/* SPDX-License-Identifier: BSD-3-Clause */
-/* Copyright(c) 2007-2022 Intel Corporation */
+/* Copyright(c) 2007-2025 Intel Corporation */
#ifndef ADF_HEARTBEAT_H_
#define ADF_HEARTBEAT_H_
@@ -18,8 +18,8 @@
u64 last_hb_check_time;
enum adf_device_heartbeat_status last_hb_status;
struct qat_sysctl heartbeat;
- struct qat_sysctl *heartbeat_sent;
- struct qat_sysctl *heartbeat_failed;
+ struct qat_sysctl heartbeat_sent;
+ struct qat_sysctl heartbeat_failed;
};
int adf_heartbeat_init(struct adf_accel_dev *accel_dev);
diff --git a/sys/dev/qat/include/adf_pfvf_vf_msg.h b/sys/dev/qat/include/adf_pfvf_vf_msg.h
--- a/sys/dev/qat/include/adf_pfvf_vf_msg.h
+++ b/sys/dev/qat/include/adf_pfvf_vf_msg.h
@@ -1,5 +1,5 @@
/* SPDX-License-Identifier: BSD-3-Clause */
-/* Copyright(c) 2007-2022 Intel Corporation */
+/* Copyright(c) 2007-2025 Intel Corporation */
#ifndef ADF_PFVF_VF_MSG_H
#define ADF_PFVF_VF_MSG_H
@@ -8,5 +8,6 @@
int adf_vf2pf_request_version(struct adf_accel_dev *accel_dev);
int adf_vf2pf_get_capabilities(struct adf_accel_dev *accel_dev);
int adf_vf2pf_get_ring_to_svc(struct adf_accel_dev *accel_dev);
+void adf_vf2pf_restarting_complete(struct adf_accel_dev *accel_dev);
#endif /* ADF_PFVF_VF_MSG_H */
diff --git a/sys/dev/qat/include/common/adf_accel_devices.h b/sys/dev/qat/include/common/adf_accel_devices.h
--- a/sys/dev/qat/include/common/adf_accel_devices.h
+++ b/sys/dev/qat/include/common/adf_accel_devices.h
@@ -1,5 +1,5 @@
/* SPDX-License-Identifier: BSD-3-Clause */
-/* Copyright(c) 2007-2022 Intel Corporation */
+/* Copyright(c) 2007-2025 Intel Corporation */
#ifndef ADF_ACCEL_DEVICES_H_
#define ADF_ACCEL_DEVICES_H_
@@ -7,6 +7,8 @@
#include "adf_cfg_common.h"
#include "adf_pfvf_msg.h"
+#include "opt_qat.h"
+
#define ADF_CFG_NUM_SERVICES 4
#define ADF_DH895XCC_DEVICE_NAME "dh895xcc"
@@ -446,6 +448,7 @@
uint8_t num_accel;
uint8_t num_logical_accel;
uint8_t num_engines;
+ bool get_ring_to_svc_done;
int (*get_storage_enabled)(struct adf_accel_dev *accel_dev,
uint32_t *storage_enabled);
u8 query_storage_cap;
@@ -683,10 +686,18 @@
struct sysctl_oid *ras_reset;
struct sysctl_oid *pke_replay_dbgfile;
struct sysctl_oid *misc_error_dbgfile;
+ struct sysctl_oid *fw_version_oid;
+ struct sysctl_oid *mmp_version_oid;
+ struct sysctl_oid *hw_version_oid;
+ struct sysctl_oid *cnv_error_oid;
struct list_head list;
struct adf_accel_pci accel_pci_dev;
struct adf_accel_compat_manager *cm;
u8 compat_ver;
+#ifdef QAT_DISABLE_SAFE_DC_MODE
+ struct sysctl_oid *safe_dc_mode;
+ u8 disable_safe_dc_mode;
+#endif /* QAT_DISABLE_SAFE_DC_MODE */
union {
struct {
/* vf_info is non-zero when SR-IOV is init'ed */
@@ -711,5 +722,6 @@
bool is_vf;
u32 accel_id;
void *lac_dev;
+ struct mutex lock; /* protect accel_dev during start/stop e.t.c */
};
#endif
diff --git a/sys/dev/qat/include/common/adf_cfg_common.h b/sys/dev/qat/include/common/adf_cfg_common.h
--- a/sys/dev/qat/include/common/adf_cfg_common.h
+++ b/sys/dev/qat/include/common/adf_cfg_common.h
@@ -1,5 +1,5 @@
/* SPDX-License-Identifier: BSD-3-Clause */
-/* Copyright(c) 2007-2022 Intel Corporation */
+/* Copyright(c) 2007-2025 Intel Corporation */
#ifndef ADF_CFG_COMMON_H_
#define ADF_CFG_COMMON_H_
@@ -62,7 +62,7 @@
unsigned char bus;
unsigned char dev;
unsigned char func;
-} __packed;
+};
#define ADF_CFG_SERV_RING_PAIR_0_SHIFT 0
#define ADF_CFG_SERV_RING_PAIR_1_SHIFT 3
diff --git a/sys/dev/qat/include/common/adf_common_drv.h b/sys/dev/qat/include/common/adf_common_drv.h
--- a/sys/dev/qat/include/common/adf_common_drv.h
+++ b/sys/dev/qat/include/common/adf_common_drv.h
@@ -1,5 +1,5 @@
/* SPDX-License-Identifier: BSD-3-Clause */
-/* Copyright(c) 2007-2022 Intel Corporation */
+/* Copyright(c) 2007-2025 Intel Corporation */
#ifndef ADF_DRV_H
#define ADF_DRV_H
@@ -304,6 +304,7 @@
int adf_pf2vf_handle_pf_restarting(struct adf_accel_dev *accel_dev);
int adf_pf2vf_handle_pf_rp_reset(struct adf_accel_dev *accel_dev,
struct pfvf_message msg);
+int adf_pf2vf_handle_pf_error(struct adf_accel_dev *accel_dev);
bool adf_recv_and_handle_pf2vf_msg(struct adf_accel_dev *accel_dev);
static inline int
adf_sriov_configure(device_t *pdev, int numvfs)
diff --git a/sys/dev/qat/include/common/adf_gen4_hw_data.h b/sys/dev/qat/include/common/adf_gen4_hw_data.h
--- a/sys/dev/qat/include/common/adf_gen4_hw_data.h
+++ b/sys/dev/qat/include/common/adf_gen4_hw_data.h
@@ -1,5 +1,5 @@
-/* SPDX-License-Identifier: BSD-3-Clause */
-/* Copyright(c) 2021 Intel Corporation */
+/* SPDX-License-Identifier: BSD-3-Clause */
+/* Copyright(c) 2007-2025 Intel Corporation */
#ifndef ADF_GEN4_HW_CSR_DATA_H_
#define ADF_GEN4_HW_CSR_DATA_H_
@@ -62,7 +62,7 @@
struct resource *_csr_base_addr = csr_base_addr; \
u32 _bank = bank; \
u32 _ring = ring; \
- dma_addr_t _value = value; \
+ bus_addr_t _value = value; \
u32 l_base = 0, u_base = 0; \
l_base = lower_32_bits(_value); \
u_base = upper_32_bits(_value); \
diff --git a/sys/dev/qat/include/common/adf_pfvf_msg.h b/sys/dev/qat/include/common/adf_pfvf_msg.h
--- a/sys/dev/qat/include/common/adf_pfvf_msg.h
+++ b/sys/dev/qat/include/common/adf_pfvf_msg.h
@@ -1,5 +1,5 @@
/* SPDX-License-Identifier: BSD-3-Clause */
-/* Copyright(c) 2007-2022 Intel Corporation */
+/* Copyright(c) 2007-2025 Intel Corporation */
#ifndef ADF_PFVF_MSG_H
#define ADF_PFVF_MSG_H
@@ -97,6 +97,7 @@
ADF_PF2VF_MSGTYPE_RESTARTING = 0x01,
ADF_PF2VF_MSGTYPE_VERSION_RESP = 0x02,
ADF_PF2VF_MSGTYPE_BLKMSG_RESP = 0x03,
+ ADF_PF2VF_MSGTYPE_FATAL_ERROR = 0x04,
/* Values from 0x10 are Gen4 specific, message type is only 4 bits in
Gen2 devices. */
ADF_PF2VF_MSGTYPE_RP_RESET_RESP = 0x10,
@@ -111,6 +112,7 @@
ADF_VF2PF_MSGTYPE_LARGE_BLOCK_REQ = 0x07,
ADF_VF2PF_MSGTYPE_MEDIUM_BLOCK_REQ = 0x08,
ADF_VF2PF_MSGTYPE_SMALL_BLOCK_REQ = 0x09,
+ ADF_VF2PF_MSGTYPE_RESTARTING_COMPLETE = 0x0a,
/* Values from 0x10 are Gen4 specific, message type is only 4 bits in
Gen2 devices. */
ADF_VF2PF_MSGTYPE_RP_RESET = 0x10,
@@ -124,8 +126,10 @@
ADF_PFVF_COMPAT_FAST_ACK = 0x03,
/* Ring to service mapping support for non-standard mappings */
ADF_PFVF_COMPAT_RING_TO_SVC_MAP = 0x04,
+ /* Fallback compat */
+ ADF_PFVF_COMPAT_FALLBACK = 0x05,
/* Reference to the latest version */
- ADF_PFVF_COMPAT_THIS_VERSION = 0x04,
+ ADF_PFVF_COMPAT_THIS_VERSION = 0x05,
};
/* PF->VF Version Response */
diff --git a/sys/dev/qat/include/common/adf_uio_cleanup.h b/sys/dev/qat/include/common/adf_uio_cleanup.h
--- a/sys/dev/qat/include/common/adf_uio_cleanup.h
+++ b/sys/dev/qat/include/common/adf_uio_cleanup.h
@@ -1,10 +1,9 @@
/* SPDX-License-Identifier: BSD-3-Clause */
-/* Copyright(c) 2007-2023 Intel Corporation */
+/* Copyright(c) 2007-2025 Intel Corporation */
#ifndef ADF_UIO_CLEANUP_H
#define ADF_UIO_CLEANUP_H
void adf_uio_do_cleanup_orphan(int bank,
struct adf_uio_control_accel *accel);
-
#endif
diff --git a/sys/dev/qat/include/common/adf_uio_control.h b/sys/dev/qat/include/common/adf_uio_control.h
--- a/sys/dev/qat/include/common/adf_uio_control.h
+++ b/sys/dev/qat/include/common/adf_uio_control.h
@@ -1,5 +1,5 @@
/* SPDX-License-Identifier: BSD-3-Clause */
-/* Copyright(c) 2007-2023 Intel Corporation */
+/* Copyright(c) 2007-2025 Intel Corporation */
#ifndef QAT_UIO_CONTROL_H
#define QAT_UIO_CONTROL_H
#include <sys/condvar.h>
@@ -38,5 +38,4 @@
};
-
#endif /* end of include guard: QAT_UIO_CONTROL_H */
diff --git a/sys/dev/qat/include/icp_qat_fw_init_admin.h b/sys/dev/qat/include/icp_qat_fw_init_admin.h
--- a/sys/dev/qat/include/icp_qat_fw_init_admin.h
+++ b/sys/dev/qat/include/icp_qat_fw_init_admin.h
@@ -1,5 +1,5 @@
/* SPDX-License-Identifier: BSD-3-Clause */
-/* Copyright(c) 2007-2022 Intel Corporation */
+/* Copyright(c) 2007-2025 Intel Corporation */
#ifndef _ICP_QAT_FW_INIT_ADMIN_H_
#define _ICP_QAT_FW_INIT_ADMIN_H_
@@ -43,6 +43,8 @@
CNV_ERR_TYPE_UNKNOWN_ERROR
};
+#define ICP_QAT_FW_INIT_DISABLE_SAFE_DC_MODE_FLAG 0x02
+
#define CNV_ERROR_TYPE_GET(latest_error) \
({ \
__typeof__(latest_error) _lerror = latest_error; \
@@ -69,7 +71,8 @@
struct {
u64 resrvd2;
u16 ibuf_size_in_kb;
- u16 resrvd3;
+ u8 fw_flags;
+ u8 resrvd3;
u32 resrvd4;
};
/* ICP_QAT_FW_CONSTANTS_CFG */
@@ -195,8 +198,8 @@
enum icp_qat_fw_init_admin_init_flag { ICP_QAT_FW_INIT_FLAG_PKE_DISABLED = 0 };
struct icp_qat_fw_init_admin_hb_cnt {
- u16 resp_heartbeat_cnt;
u16 req_heartbeat_cnt;
+ u16 resp_heartbeat_cnt;
};
#define ICP_QAT_FW_COMN_HEARTBEAT_OK 0
diff --git a/sys/dev/qat/qat/qat_ocf.c b/sys/dev/qat/qat/qat_ocf.c
--- a/sys/dev/qat/qat/qat_ocf.c
+++ b/sys/dev/qat/qat/qat_ocf.c
@@ -1,5 +1,5 @@
/* SPDX-License-Identifier: BSD-3-Clause */
-/* Copyright(c) 2007-2022 Intel Corporation */
+/* Copyright(c) 2007-2025 Intel Corporation */
/* System headers */
#include <sys/param.h>
#include <sys/systm.h>
@@ -1280,7 +1280,6 @@
.size = sizeof(struct qat_ocf_softc),
};
-
DRIVER_MODULE_ORDERED(qat,
nexus,
qat_ocf_driver,
diff --git a/sys/dev/qat/qat_api/common/compression/dc_datapath.c b/sys/dev/qat/qat_api/common/compression/dc_datapath.c
--- a/sys/dev/qat/qat_api/common/compression/dc_datapath.c
+++ b/sys/dev/qat/qat_api/common/compression/dc_datapath.c
@@ -1,5 +1,5 @@
/* SPDX-License-Identifier: BSD-3-Clause */
-/* Copyright(c) 2007-2022 Intel Corporation */
+/* Copyright(c) 2007-2025 Intel Corporation */
/**
*****************************************************************************
* @file dc_datapath.c
@@ -118,14 +118,19 @@
/* Cast response message to compression response message type */
pCompRespMsg = (icp_qat_fw_comp_resp_t *)pRespMsg;
-
+ if (!(pCompRespMsg)) {
+ QAT_UTILS_LOG("pCompRespMsg is NULL\n");
+ return;
+ }
/* Extract request data pointer from the opaque data */
LAC_MEM_SHARED_READ_TO_PTR(pCompRespMsg->opaque_data, pReqData);
+ if (!(pReqData)) {
+ QAT_UTILS_LOG("pReqData is NULL\n");
+ return;
+ }
/* Extract fields from the request data structure */
pCookie = (dc_compression_cookie_t *)pReqData;
- if (!pCookie)
- return;
pSessionDesc = DC_SESSION_DESC_FROM_CTX_GET(pCookie->pSessionHandle);
pService = (sal_compression_service_t *)(pCookie->dcInstance);
@@ -523,7 +528,7 @@
if (CPA_TRUE == pOpData->integrityCrcCheck &&
NULL == pOpData->pCrcData) {
LAC_INVALID_PARAM_LOG("Integrity CRC data structure "
- "not intialized in CpaDcOpData");
+ "not initialized in CpaDcOpData");
return CPA_STATUS_INVALID_PARAM;
}
@@ -1401,7 +1406,6 @@
CpaInstanceHandle insHandle = NULL;
Cpa64U srcBuffSize = 0;
-
if (CPA_INSTANCE_HANDLE_SINGLE == dcInstance) {
insHandle = dcGetFirstHandle();
} else {
@@ -1507,7 +1511,6 @@
return CPA_STATUS_INVALID_PARAM;
}
-
if ((CPA_TRUE == pOpData->compressAndVerify) &&
(CPA_TRUE == pOpData->compressAndVerifyAndRecover) &&
(CPA_FALSE == pOpData->integrityCrcCheck)) {
@@ -1526,7 +1529,6 @@
return CPA_STATUS_UNSUPPORTED;
}
-
if (CPA_INSTANCE_HANDLE_SINGLE == dcInstance) {
insHandle = dcGetFirstHandle();
} else {
@@ -1703,7 +1705,6 @@
return CPA_STATUS_INVALID_PARAM;
}
-
*srcBufferSize = srcBuffSize;
return CPA_STATUS_SUCCESS;
@@ -1724,7 +1725,6 @@
Cpa64U srcBuffSize = 0;
CpaStatus status = CPA_STATUS_SUCCESS;
-
if (CPA_INSTANCE_HANDLE_SINGLE == dcInstance) {
insHandle = dcGetFirstHandle();
} else {
@@ -1783,7 +1783,6 @@
return CPA_STATUS_INVALID_PARAM;
}
-
if (CPA_DC_STATEFUL == pSessionDesc->sessState) {
/* Lock the session to check if there are in-flight stateful
* requests */
@@ -1864,7 +1863,6 @@
callbackTag);
}
-
if (CPA_INSTANCE_HANDLE_SINGLE == dcInstance) {
insHandle = dcGetFirstHandle();
} else {
@@ -1931,7 +1929,6 @@
return CPA_STATUS_INVALID_PARAM;
}
-
if (CPA_DC_STATEFUL == pSessionDesc->sessState) {
/* Lock the session to check if there are in-flight stateful
* requests */
diff --git a/sys/dev/qat/qat_api/common/crypto/sym/include/lac_session.h b/sys/dev/qat/qat_api/common/crypto/sym/include/lac_session.h
--- a/sys/dev/qat/qat_api/common/crypto/sym/include/lac_session.h
+++ b/sys/dev/qat/qat_api/common/crypto/sym/include/lac_session.h
@@ -1,5 +1,5 @@
/* SPDX-License-Identifier: BSD-3-Clause */
-/* Copyright(c) 2007-2022 Intel Corporation */
+/* Copyright(c) 2007-2025 Intel Corporation */
/**
*****************************************************************************
@@ -56,7 +56,7 @@
* while there are requests in flight.
*
* <b>Reference Count</b>\n
- * - The perform funcion increments the reference count for the session.
+ * - The perform function increments the reference count for the session.
* - The callback function decrements the reference count for the session.
* - The Remove function checks the reference count to ensure that it is 0.
*
@@ -256,14 +256,14 @@
/**< Cipher slice type to be used, set at init session time */
Cpa8U cipherAesXtsKey1Forward[LAC_CIPHER_AES_XTS_KEY_MAX_LENGTH];
/**< Cached AES XTS Forward key
- * For CPM2.0 AES XTS key convertion need to be done in SW.
+ * For CPM2.0 AES XTS key conversions need to be done in SW.
* Because use can update session direction at any time,
* also forward key needs to be cached
*/
Cpa8U cipherAesXtsKey1Reverse[LAC_CIPHER_AES_XTS_KEY_MAX_LENGTH];
/**< AES XTS Reverse key
- * For CPM2.0 AES XTS key convertion need to be done in SW.
- * Reverse key always will be calcilated at session setup time and
+ * For CPM2.0 AES XTS key conversions need to be done in SW.
+ * Reverse key always will be calculated at session setup time and
* cached to be used when needed */
Cpa8U cipherAesXtsKey2[LAC_CIPHER_AES_XTS_KEY_MAX_LENGTH];
/**< For AES XTS session need to store Key2 value in order to generate
@@ -442,14 +442,14 @@
/**< Cipher slice type to be used, set at init session time */
Cpa8U cipherAesXtsKey1Forward[LAC_CIPHER_AES_XTS_KEY_MAX_LENGTH];
/**< Cached AES XTS Forward key
- * For CPM2.0 AES XTS key convertion need to be done in SW.
+ * For CPM2.0 AES XTS key conversions need to be done in SW.
* Because use can update session direction at any time,
* also forward key needs to be cached
*/
Cpa8U cipherAesXtsKey1Reverse[LAC_CIPHER_AES_XTS_KEY_MAX_LENGTH];
/**< AES XTS Reverse key
- * For CPM2.0 AES XTS key convertion need to be done in SW.
- * Reverse key always will be calcilated at session setup time and
+ * For CPM2.0 AES XTS key conversions need to be done in SW.
+ * Reverse key always will be calculated at session setup time and
* cached to be used when needed */
Cpa8U cipherAesXtsKey2[LAC_CIPHER_AES_XTS_KEY_MAX_LENGTH];
/**< For AES XTS session need to store Key2 value in order to generate
@@ -594,14 +594,14 @@
/**< Cipher slice type to be used, set at init session time */
Cpa8U cipherAesXtsKey1Forward[LAC_CIPHER_AES_XTS_KEY_MAX_LENGTH];
/**< Cached AES XTS Forward key
- * For CPM2.0 AES XTS key convertion need to be done in SW.
+ * For CPM2.0 AES XTS key conversions need to be done in SW.
* Because use can update session direction at any time,
* also forward key needs to be cached
*/
Cpa8U cipherAesXtsKey1Reverse[LAC_CIPHER_AES_XTS_KEY_MAX_LENGTH];
/**< AES XTS Reverse key
- * For CPM2.0 AES XTS key convertion need to be done in SW.
- * Reverse key always will be calcilated at session setup time and
+ * For CPM2.0 AES XTS key conversions need to be done in SW.
+ * Reverse key always will be calculated at session setup time and
* cached to be used when needed */
Cpa8U cipherAesXtsKey2[LAC_CIPHER_AES_XTS_KEY_MAX_LENGTH];
/**< For AES XTS session need to store Key2 value in order to generate
@@ -625,7 +625,7 @@
sizeof(LAC_ARCH_UINT))
/**< @ingroup LacSym_Session
* Size of the memory that the client has to allocate for a session. Extra
- * memory is needed to internally re-align the data. The pointer to the algined
+ * memory is needed to internally re-align the data. The pointer to the aligned
* data is stored at the start of the user allocated memory hence the extra
* space for an LAC_ARCH_UINT */
@@ -669,7 +669,7 @@
*
* @param[in] instanceHandle_in Instance Handle
* @param[in] pSymCb callback function
-* @param[in] pSessionSetupData pointer to the strucutre containing the setup
+* @param[in] pSessionSetupData pointer to the structure containing the setup
*data
* @param[in] isDpSession CPA_TRUE for a data plane session
* @param[out] pSessionCtx Pointer to session context
diff --git a/sys/dev/qat/qat_api/common/crypto/sym/include/lac_sym.h b/sys/dev/qat/qat_api/common/crypto/sym/include/lac_sym.h
--- a/sys/dev/qat/qat_api/common/crypto/sym/include/lac_sym.h
+++ b/sys/dev/qat/qat_api/common/crypto/sym/include/lac_sym.h
@@ -1,5 +1,5 @@
/* SPDX-License-Identifier: BSD-3-Clause */
-/* Copyright(c) 2007-2022 Intel Corporation */
+/* Copyright(c) 2007-2025 Intel Corporation */
/**
***************************************************************************
@@ -18,7 +18,7 @@
* The symmetric component demuliplexes the following crypto operations to
* the appropriate sub-components: cipher, hash, algorithm chaining and
* authentication encryption. It is a common layer between the above
- * mentioned components where common resources are allocated and paramater
+ * mentioned components where common resources are allocated and parameter
* checks are done. The operation specific resource allocation and parameter
* checks are done in the sub-component itself.
*
@@ -32,15 +32,15 @@
* chain to ensure it is valid.
* - \ref LacSymStats "Statistics": Manages statistics for symmetric
* - \ref LacSymQat "Symmetric QAT": The symmetric qat component is
- * initialiased by the symmetric component.
- * - \ref LacCipher "Cipher" : demultiplex cipher opertions to this component.
- * - \ref LacHash "Hash" : demultiplex hash opertions to this component.
+ * initialised by the symmetric component.
+ * - \ref LacCipher "Cipher" : demultiplex cipher operations to this component.
+ * - \ref LacHash "Hash" : demultiplex hash operations to this component.
* to this component.
* - \ref LacAlgChain "Algorithm Chaining": The algorithm chaining component
* - OSAL : Memory allocation, Mutex's, atomics
*
* @lld_initialisation
- * This component is initialied during the LAC initialisation sequence. It
+ * This component is initialized during the LAC initialisation sequence. It
* initialises the session table, statistics, symmetric QAT, initialises the
* hash definitions lookup table, the hash alg supported lookup table and
* registers a callback function with the symmetric response handler to process
diff --git a/sys/dev/qat/qat_api/common/crypto/sym/include/lac_sym_alg_chain.h b/sys/dev/qat/qat_api/common/crypto/sym/include/lac_sym_alg_chain.h
--- a/sys/dev/qat/qat_api/common/crypto/sym/include/lac_sym_alg_chain.h
+++ b/sys/dev/qat/qat_api/common/crypto/sym/include/lac_sym_alg_chain.h
@@ -1,8 +1,5 @@
-/***************************************************************************
- *
- * <COPYRIGHT_TAG>
- *
- ***************************************************************************/
+/* SPDX-License-Identifier: BSD-3-Clause */
+/* Copyright(c) 2007-2025 Intel Corporation */
/**
*****************************************************************************
diff --git a/sys/dev/qat/qat_api/common/crypto/sym/include/lac_sym_cb.h b/sys/dev/qat/qat_api/common/crypto/sym/include/lac_sym_cb.h
--- a/sys/dev/qat/qat_api/common/crypto/sym/include/lac_sym_cb.h
+++ b/sys/dev/qat/qat_api/common/crypto/sym/include/lac_sym_cb.h
@@ -1,5 +1,5 @@
/* SPDX-License-Identifier: BSD-3-Clause */
-/* Copyright(c) 2007-2022 Intel Corporation */
+/* Copyright(c) 2007-2025 Intel Corporation */
/**
***************************************************************************
@@ -21,7 +21,7 @@
* Dequeue pending requests
* @description
* This function is called by a callback function of a blocking
- * operation (either a partial packet or a hash precompute operaion)
+ * operation (either a partial packet or a hash precompute operation)
* in softIRQ context. It dequeues requests for the following reasons:
* 1. All pre-computes that happened when initialising a session
* have completed. Dequeue any requests that were queued on the
@@ -40,7 +40,7 @@
/**
*****************************************************************************
* @ingroup LacSym
- * Register symmetric callback funcion handlers
+ * Register symmetric callback function handlers
*
* @description
* This function registers the symmetric callback handler functions with
diff --git a/sys/dev/qat/qat_api/common/crypto/sym/include/lac_sym_cipher.h b/sys/dev/qat/qat_api/common/crypto/sym/include/lac_sym_cipher.h
--- a/sys/dev/qat/qat_api/common/crypto/sym/include/lac_sym_cipher.h
+++ b/sys/dev/qat/qat_api/common/crypto/sym/include/lac_sym_cipher.h
@@ -1,5 +1,5 @@
/* SPDX-License-Identifier: BSD-3-Clause */
-/* Copyright(c) 2007-2022 Intel Corporation */
+/* Copyright(c) 2007-2025 Intel Corporation */
/**
*****************************************************************************
@@ -23,14 +23,14 @@
* and Triple-DES cipher algorithms, in ECB, CBC and CTR modes. The ARC4 stream
* cipher algorithm is also supported. Data may be provided as a full packet,
* or as a sequence of partial packets. The result of the operation can be
- * written back to the source buffer (in-place) or to a seperate output buffer
+ * written back to the source buffer (in-place) or to a separate output buffer
* (out-of-place). Data must be encapsulated in ICP buffers.
*
* The cipher component is responsible for implementing the cipher-specific
* functionality for registering and de-registering a session, for the perform
* operation and for processing the QAT responses to cipher requests. Statistics
* are maintained for cipher in the symmetric \ref CpaCySymStats64 "stats"
- * structure. This module has been seperated out into two. The cipher QAT module
+ * structure. This module has been separated out into two. The cipher QAT module
* deals entirely with QAT data structures. The cipher module itself has minimal
* exposure to the QAT data structures.
*
diff --git a/sys/dev/qat/qat_api/common/crypto/sym/include/lac_sym_hash.h b/sys/dev/qat/qat_api/common/crypto/sym/include/lac_sym_hash.h
--- a/sys/dev/qat/qat_api/common/crypto/sym/include/lac_sym_hash.h
+++ b/sys/dev/qat/qat_api/common/crypto/sym/include/lac_sym_hash.h
@@ -1,8 +1,5 @@
-/***************************************************************************
- *
- * <COPYRIGHT_TAG>
- *
- ***************************************************************************/
+/* SPDX-License-Identifier: BSD-3-Clause */
+/* Copyright(c) 2007-2025 Intel Corporation */
/**
*****************************************************************************
@@ -24,7 +21,7 @@
*
* The hash component supports hashing in 3 modes. PLAIN, AUTH and NESTED.
* Plain mode is used to provide data integrity while auth mode is used to
- * provide integrity as well as its authenticity. Nested mode is inteded
+ * provide integrity as well as its authenticity. Nested mode is intended
* for use by non standard HMAC like algorithms such as for the SSL master
* key secret. Partial packets is supported for both plain and auth modes.
* In-place and out-of-place processing is supported for all modes. The
@@ -33,7 +30,7 @@
* The hash component is responsible for implementing the hash specific
* functionality for initialising a session and for a perform operation.
* Statistics are maintained in the symmetric \ref CpaCySymStats64 "stats"
- * structure. This module has been seperated out into two. The hash QAT module
+ * structure. This module has been separated out into two. The hash QAT module
* deals entirely with QAT data structures. The hash module itself has minimal
* exposure to the QAT data structures.
*
@@ -62,7 +59,7 @@
* the data path by the length of time it takes to do two hashes on a block
* size of data. Note: a partial packet operation generates an intermediate
* state. The final operation on a partial packet or when a full packet is
- * used applies padding and gives the final hash result. Esentially for the
+ * used applies padding and gives the final hash result. Essentially for the
* inner hash, a partial packet final is issued on the data, using the
* precomputed intermediate state and returns the digest.
*
diff --git a/sys/dev/qat/qat_api/common/crypto/sym/include/lac_sym_hash_defs.h b/sys/dev/qat/qat_api/common/crypto/sym/include/lac_sym_hash_defs.h
--- a/sys/dev/qat/qat_api/common/crypto/sym/include/lac_sym_hash_defs.h
+++ b/sys/dev/qat/qat_api/common/crypto/sym/include/lac_sym_hash_defs.h
@@ -1,5 +1,5 @@
/* SPDX-License-Identifier: BSD-3-Clause */
-/* Copyright(c) 2007-2022 Intel Corporation */
+/* Copyright(c) 2007-2025 Intel Corporation */
/**
***************************************************************************
@@ -313,7 +313,7 @@
/**< @ingroup LacSymQatHash
* Macro to check for qat hash mode is set to 2 and the hash mode is
* Auth. This applies to HMAC algorithms (no pre compute). This is used
- * to differntiate between TLS and HMAC */
+ * to differentiate between TLS and HMAC */
#define IS_HASH_MODE_2_NESTED(qatHashMode, hashMode) \
((IS_HASH_MODE_2(qatHashMode)) && \
diff --git a/sys/dev/qat/qat_api/common/crypto/sym/include/lac_sym_hash_precomputes.h b/sys/dev/qat/qat_api/common/crypto/sym/include/lac_sym_hash_precomputes.h
--- a/sys/dev/qat/qat_api/common/crypto/sym/include/lac_sym_hash_precomputes.h
+++ b/sys/dev/qat/qat_api/common/crypto/sym/include/lac_sym_hash_precomputes.h
@@ -1,5 +1,5 @@
/* SPDX-License-Identifier: BSD-3-Clause */
-/* Copyright(c) 2007-2022 Intel Corporation */
+/* Copyright(c) 2007-2025 Intel Corporation */
/**
***************************************************************************
@@ -34,7 +34,7 @@
/**< maximum size of the working data for the HMAC precompute operations
*
* Maximum size of lac_sym_hash_precomp_op_data_t is 264 bytes. For hash
- * precomputes there are 2 of these structrues and a further
+ * precomputes there are 2 of these structures and a further
* lac_sym_hash_precomp_op_t structure required. This comes to a total of 536
* bytes.
* For the asynchronous version of the precomputes, the memory for the hash
@@ -122,7 +122,7 @@
Cpa8U contentDesc[LAC_SYM_QAT_MAX_CIPHER_SETUP_BLK_SZ];
/**< Content descriptor for a cipher operation */
Cpa8U data[LAC_SYM_HASH_PRECOMP_MAX_AES_ECB_DATA];
- /**< The data to be ciphered is conatined here and the result is
+ /**< The data to be ciphered is contained here and the result is
* written in place back into this buffer */
icp_qat_fw_la_cipher_req_params_t cipherReqParams;
/**< Request parameters as read in by the QAT */
diff --git a/sys/dev/qat/qat_api/common/crypto/sym/include/lac_sym_key.h b/sys/dev/qat/qat_api/common/crypto/sym/include/lac_sym_key.h
--- a/sys/dev/qat/qat_api/common/crypto/sym/include/lac_sym_key.h
+++ b/sys/dev/qat/qat_api/common/crypto/sym/include/lac_sym_key.h
@@ -1,8 +1,5 @@
-/***************************************************************************
- *
- * <COPYRIGHT_TAG>
- *
- ***************************************************************************/
+/* SPDX-License-Identifier: BSD-3-Clause */
+/* Copyright(c) 2007-2025 Intel Corporation */
/**
*****************************************************************************
@@ -16,7 +13,7 @@
*
* @lld_overview
*
- * Key generation component is reponsible for SSL, TLS & MGF operations. All
+ * Key generation component is responsible for SSL, TLS & MGF operations. All
* memory required for the keygen operations is got from the keygen cookie
* structure which is carved up as required.
*
@@ -24,8 +21,8 @@
* outer hash and SHA1 as the inner hash.
*
* Refer to sections in draft-freier-ssl-version3-02.txt:
- * 6.1 Asymmetric cryptographic computations - This refers to coverting
- * the pre master secret to the master secret.
+ * 6.1 Asymmetric cryptographic computations - This refers to converting
+ * the pre-master secret to the master secret.
* 6.2.2 Converting the master secret into keys and MAC secrets - Using
* the master secret to generate the key material.
*
@@ -40,11 +37,11 @@
*
* @lld_dependencies
* \ref LacSymQatHash: for building up hash content descriptor
- * \ref LacMem: for virt to phys coversions
+ * \ref LacMem: for virt to phys conversions
*
* @lld_initialisation
- * The reponse handler is registered with Symmetric. The Maximum SSL is
- * allocated. A structure is allocated containing all the TLS lables that
+ * The response handler is registered with Symmetric. The Maximum SSL is
+ * allocated. A structure is allocated containing all the TLS labels that
* are supported. On shutdown the memory for these structures are freed.
*
* @lld_module_algorithms
@@ -115,7 +112,7 @@
*
* @description
* This structure is used to hold the various TLS labels. Each field is
- * on an 8 byte boundary provided the structure itslef is 8 bytes aligned.
+ * on an 8 byte boundary provided the structure itself is 8 bytes aligned.
*****************************************************************************/
typedef struct lac_sym_key_tls_labels_s {
Cpa8U masterSecret[ICP_QAT_FW_LA_TLS_LABEL_LEN_MAX];
diff --git a/sys/dev/qat/qat_api/common/crypto/sym/include/lac_sym_partial.h b/sys/dev/qat/qat_api/common/crypto/sym/include/lac_sym_partial.h
--- a/sys/dev/qat/qat_api/common/crypto/sym/include/lac_sym_partial.h
+++ b/sys/dev/qat/qat_api/common/crypto/sym/include/lac_sym_partial.h
@@ -1,5 +1,5 @@
/* SPDX-License-Identifier: BSD-3-Clause */
-/* Copyright(c) 2007-2022 Intel Corporation */
+/* Copyright(c) 2007-2025 Intel Corporation */
/**
***************************************************************************
@@ -20,7 +20,7 @@
* proceed where they would get an incorrect digest, cipher result.
*
* Maintain a SpinLock for partials in flight per session. Try and acquire this
- * SpinLock. If it cant be acquired return an error straight away to the client
+ * SpinLock. If it can't be acquired return an error straight away to the client
* as there is already a partial in flight. There is no blocking in the data
* path for this.
*
diff --git a/sys/dev/qat/qat_api/common/crypto/sym/include/lac_sym_qat.h b/sys/dev/qat/qat_api/common/crypto/sym/include/lac_sym_qat.h
--- a/sys/dev/qat/qat_api/common/crypto/sym/include/lac_sym_qat.h
+++ b/sys/dev/qat/qat_api/common/crypto/sym/include/lac_sym_qat.h
@@ -1,5 +1,5 @@
/* SPDX-License-Identifier: BSD-3-Clause */
-/* Copyright(c) 2007-2022 Intel Corporation */
+/* Copyright(c) 2007-2025 Intel Corporation */
/**
*****************************************************************************
@@ -24,7 +24,7 @@
* - \ref LacMem "Memory" - Inline memory functions
*
* @lld_initialisation
- * This component is initialied during the LAC initialisation sequence. It
+ * This component is initialized during the LAC initialisation sequence. It
* is called by the Symmetric Initialisation function.
*
* @lld_module_algorithms
diff --git a/sys/dev/qat/qat_api/common/crypto/sym/include/lac_sym_qat_cipher.h b/sys/dev/qat/qat_api/common/crypto/sym/include/lac_sym_qat_cipher.h
--- a/sys/dev/qat/qat_api/common/crypto/sym/include/lac_sym_qat_cipher.h
+++ b/sys/dev/qat/qat_api/common/crypto/sym/include/lac_sym_qat_cipher.h
@@ -1,5 +1,5 @@
/* SPDX-License-Identifier: BSD-3-Clause */
-/* Copyright(c) 2007-2022 Intel Corporation */
+/* Copyright(c) 2007-2025 Intel Corporation */
/**
*****************************************************************************
@@ -172,7 +172,7 @@
* LacSymQat_CipherCtrlBlockInitialize()
*
* @description
- * intialize the cipher control block with all zeros
+ * initialize the cipher control block with all zeros
*
* @param[in] pMsg Pointer to the common request message
*
diff --git a/sys/dev/qat/qat_api/common/crypto/sym/include/lac_sym_qat_hash.h b/sys/dev/qat/qat_api/common/crypto/sym/include/lac_sym_qat_hash.h
--- a/sys/dev/qat/qat_api/common/crypto/sym/include/lac_sym_qat_hash.h
+++ b/sys/dev/qat/qat_api/common/crypto/sym/include/lac_sym_qat_hash.h
@@ -1,5 +1,5 @@
/* SPDX-License-Identifier: BSD-3-Clause */
-/* Copyright(c) 2007-2022 Intel Corporation */
+/* Copyright(c) 2007-2025 Intel Corporation */
/**
*****************************************************************************
@@ -42,7 +42,7 @@
* hash precomputes
*
* @description
- * This structure contains infomation on the hash precomputes
+ * This structure contains information on the hash precomputes
*
*****************************************************************************/
typedef struct lac_sym_qat_hash_precompute_info_s {
@@ -62,7 +62,7 @@
* hash state prefix buffer info
*
* @description
- * This structure contains infomation on the hash state prefix aad buffer
+ * This structure contains information on the hash state prefix aad buffer
*
*****************************************************************************/
typedef struct lac_sym_qat_hash_state_buffer_info_s {
diff --git a/sys/dev/qat/qat_api/common/crypto/sym/include/lac_sym_qat_hash_defs_lookup.h b/sys/dev/qat/qat_api/common/crypto/sym/include/lac_sym_qat_hash_defs_lookup.h
--- a/sys/dev/qat/qat_api/common/crypto/sym/include/lac_sym_qat_hash_defs_lookup.h
+++ b/sys/dev/qat/qat_api/common/crypto/sym/include/lac_sym_qat_hash_defs_lookup.h
@@ -1,5 +1,5 @@
/* SPDX-License-Identifier: BSD-3-Clause */
-/* Copyright(c) 2007-2022 Intel Corporation */
+/* Copyright(c) 2007-2025 Intel Corporation */
/**
*****************************************************************************
@@ -117,7 +117,7 @@
/**
*******************************************************************************
* @ingroup LacSymQatHashDefsLookup
-* get hash defintions from lookup table.
+* get hash definitions from lookup table.
*
* @description
* This function looks up the hash lookup array for a structure
diff --git a/sys/dev/qat/qat_api/common/crypto/sym/include/lac_sym_stats.h b/sys/dev/qat/qat_api/common/crypto/sym/include/lac_sym_stats.h
--- a/sys/dev/qat/qat_api/common/crypto/sym/include/lac_sym_stats.h
+++ b/sys/dev/qat/qat_api/common/crypto/sym/include/lac_sym_stats.h
@@ -1,5 +1,5 @@
/* SPDX-License-Identifier: BSD-3-Clause */
-/* Copyright(c) 2007-2022 Intel Corporation */
+/* Copyright(c) 2007-2025 Intel Corporation */
/**
***************************************************************************
@@ -9,7 +9,7 @@
*
* @ingroup LacSym
*
- * Symetric Common consists of common statistics, buffer and partial packet
+ * Symmetric Common consists of common statistics, buffer and partial packet
* functionality.
*
***************************************************************************/
@@ -123,7 +123,7 @@
/**
*******************************************************************************
* @ingroup LacSymStats
-* Inrement a stat
+* Increment a stat
*
* @description
* This function incrementes a stat for a specific engine.
diff --git a/sys/dev/qat/qat_api/common/crypto/sym/key/lac_sym_key.c b/sys/dev/qat/qat_api/common/crypto/sym/key/lac_sym_key.c
--- a/sys/dev/qat/qat_api/common/crypto/sym/key/lac_sym_key.c
+++ b/sys/dev/qat/qat_api/common/crypto/sym/key/lac_sym_key.c
@@ -1,8 +1,5 @@
-/***************************************************************************
- *
- * <COPYRIGHT_TAG>
- *
- ***************************************************************************/
+/* SPDX-License-Identifier: BSD-3-Clause */
+/* Copyright(c) 2007-2025 Intel Corporation */
/**
*****************************************************************************
@@ -365,7 +362,6 @@
{
CpaInstanceHandle instanceHandle = NULL;
-
if (CPA_INSTANCE_HANDLE_SINGLE == instanceHandle_in) {
instanceHandle =
Lac_GetFirstHandle(SAL_SERVICE_TYPE_CRYPTO_SYM);
@@ -393,7 +389,6 @@
{
CpaInstanceHandle instanceHandle = NULL;
-
if (CPA_INSTANCE_HANDLE_SINGLE == instanceHandle_in) {
instanceHandle =
Lac_GetFirstHandle(SAL_SERVICE_TYPE_CRYPTO_SYM);
@@ -917,7 +912,6 @@
{
CpaInstanceHandle instanceHandle = NULL;
-
if (CPA_INSTANCE_HANDLE_SINGLE == instanceHandle_in) {
instanceHandle =
Lac_GetFirstHandle(SAL_SERVICE_TYPE_CRYPTO_SYM);
@@ -956,7 +950,6 @@
{
CpaInstanceHandle instanceHandle = NULL;
-
if (CPA_INSTANCE_HANDLE_SINGLE == instanceHandle_in) {
instanceHandle =
Lac_GetFirstHandle(SAL_SERVICE_TYPE_CRYPTO_SYM);
@@ -2167,6 +2160,14 @@
}
}
+ /* check 0 secret length as it is not valid for SSL3 Key Gen
+ * request */
+ if (0 == uSecretLen) {
+ LAC_INVALID_PARAM_LOG1("%u secret.dataLenInBytes",
+ uSecretLen);
+ return CPA_STATUS_INVALID_PARAM;
+ }
+
/* Only seed length for SSL3 Key Gen request */
if (maxSeedLen != uSeedLen) {
LAC_INVALID_PARAM_LOG("seed.dataLenInBytes");
@@ -2194,11 +2195,11 @@
/* Api max value */
/* ICP_QAT_FW_LA_TLS_V1_1_SECRET_LEN_MAX needs to be
* multiplied
- * by 4 in order to verifiy the 512 conditions. We did
+ * by 4 in order to verify the 512 conditions. We did
* not change
* ICP_QAT_FW_LA_TLS_V1_1_SECRET_LEN_MAX as it
* represents
- * the max value tha firmware can handle.
+ * the max value that firmware can handle.
*/
maxSecretLen =
ICP_QAT_FW_LA_TLS_V1_1_SECRET_LEN_MAX * 4;
@@ -2206,11 +2207,11 @@
/* Api max value */
/* ICP_QAT_FW_LA_TLS_V1_2_SECRET_LEN_MAX needs to be
* multiplied
- * by 8 in order to verifiy the 512 conditions. We did
+ * by 8 in order to verify the 512 conditions. We did
* not change
* ICP_QAT_FW_LA_TLS_V1_2_SECRET_LEN_MAX as it
* represents
- * the max value tha firmware can handle.
+ * the max value that firmware can handle.
*/
maxSecretLen =
ICP_QAT_FW_LA_TLS_V1_2_SECRET_LEN_MAX * 8;
@@ -2596,7 +2597,6 @@
{
CpaInstanceHandle instanceHandle = NULL;
-
if (CPA_INSTANCE_HANDLE_SINGLE == instanceHandle_in) {
instanceHandle =
Lac_GetFirstHandle(SAL_SERVICE_TYPE_CRYPTO_SYM);
@@ -2669,7 +2669,6 @@
{
CpaInstanceHandle instanceHandle = NULL;
-
if (CPA_INSTANCE_HANDLE_SINGLE == instanceHandle_in) {
instanceHandle =
Lac_GetFirstHandle(SAL_SERVICE_TYPE_CRYPTO_SYM);
@@ -2756,7 +2755,6 @@
return CPA_STATUS_INVALID_PARAM;
}
-
return LacSymKey_KeyGenSslTls(instanceHandle_in,
pKeyGenCb,
pCallbackTag,
diff --git a/sys/dev/qat/qat_api/common/crypto/sym/lac_sym_alg_chain.c b/sys/dev/qat/qat_api/common/crypto/sym/lac_sym_alg_chain.c
--- a/sys/dev/qat/qat_api/common/crypto/sym/lac_sym_alg_chain.c
+++ b/sys/dev/qat/qat_api/common/crypto/sym/lac_sym_alg_chain.c
@@ -1,8 +1,5 @@
-/***************************************************************************
- *
- * <COPYRIGHT_TAG>
- *
- ***************************************************************************/
+/* SPDX-License-Identifier: BSD-3-Clause */
+/* Copyright(c) 2007-2025 Intel Corporation */
/**
***************************************************************************
@@ -403,7 +400,6 @@
&sizeInBytes);
}
}
-
static Cpa16U
LacAlgChain_GetCipherConfigSize(lac_session_desc_t *pSessionDesc)
{
@@ -1178,7 +1174,7 @@
&cipherOffsetInConstantsTable,
&hashOffsetInConstantsTable);
- /* for a certain combination of Algorthm Chaining we want to
+ /* for a certain combination of Algorithm Chaining we want to
use an optimised cd block */
if (pSessionDesc->symOperation ==
diff --git a/sys/dev/qat/qat_api/common/crypto/sym/lac_sym_api.c b/sys/dev/qat/qat_api/common/crypto/sym/lac_sym_api.c
--- a/sys/dev/qat/qat_api/common/crypto/sym/lac_sym_api.c
+++ b/sys/dev/qat/qat_api/common/crypto/sym/lac_sym_api.c
@@ -1,5 +1,5 @@
/* SPDX-License-Identifier: BSD-3-Clause */
-/* Copyright(c) 2007-2022 Intel Corporation */
+/* Copyright(c) 2007-2025 Intel Corporation */
/**
***************************************************************************
@@ -336,7 +336,6 @@
return CPA_STATUS_SUCCESS;
}
-
/**
* @ingroup LacSym
* Function which perform parameter checks on data buffers for symmetric
@@ -445,7 +444,7 @@
}
}
- /* check for partial packet suport for the session operation */
+ /* check for partial packet support for the session operation */
if (CPA_CY_SYM_PACKET_TYPE_FULL != pOpData->packetType) {
if (CPA_FALSE == pSessionDesc->isPartialSupported) {
/* return out here to simplify cleanup */
@@ -569,7 +568,6 @@
return CPA_STATUS_INVALID_PARAM;
}
-
pCipherSetupData = &pSessionSetupData->cipherSetupData;
pHashSetupData = &pSessionSetupData->hashSetupData;
@@ -673,7 +671,6 @@
CpaInstanceHandle instanceHandle = NULL;
Cpa64U numPendingRequests = 0;
-
if (CPA_INSTANCE_HANDLE_SINGLE == instanceHandle_in) {
instanceHandle =
Lac_GetFirstHandle(SAL_SERVICE_TYPE_CRYPTO_SYM);
@@ -794,7 +791,6 @@
}
}
-
/* If synchronous Operation - Callback function stored in the session
* descriptor so a flag is set in the perform to indicate that
* the perform is being re-called for the synchronous operation */
@@ -872,7 +868,7 @@
pVerifyResult);
if (CPA_STATUS_SUCCESS == status) {
- /* check for partial packet suport for the session operation */
+ /* check for partial packet support for the session operation */
if (CPA_CY_SYM_PACKET_TYPE_FULL != pOpData->packetType) {
LacSym_PartialPacketStateUpdate(
pOpData->packetType, &pSessionDesc->partialState);
@@ -923,7 +919,6 @@
CpaInstanceHandle instanceHandle = NULL;
-
if (CPA_INSTANCE_HANDLE_SINGLE == instanceHandle_in) {
instanceHandle =
Lac_GetFirstHandle(SAL_SERVICE_TYPE_CRYPTO_SYM);
@@ -955,7 +950,6 @@
CpaInstanceHandle instanceHandle = NULL;
-
if (CPA_INSTANCE_HANDLE_SINGLE == instanceHandle_in) {
instanceHandle =
Lac_GetFirstHandle(SAL_SERVICE_TYPE_CRYPTO_SYM);
@@ -1037,7 +1031,6 @@
/* Choose Session Context size */
getCtxSize(pSessionSetupData, pSessionCtxSizeInBytes);
-
return CPA_STATUS_SUCCESS;
}
@@ -1116,6 +1109,5 @@
(sizeof(icp_flat_buffer_desc_t) * numBuffers) +
ICP_DESCRIPTOR_ALIGNMENT_BYTES;
-
return CPA_STATUS_SUCCESS;
}
diff --git a/sys/dev/qat/qat_api/common/crypto/sym/lac_sym_auth_enc.c b/sys/dev/qat/qat_api/common/crypto/sym/lac_sym_auth_enc.c
--- a/sys/dev/qat/qat_api/common/crypto/sym/lac_sym_auth_enc.c
+++ b/sys/dev/qat/qat_api/common/crypto/sym/lac_sym_auth_enc.c
@@ -1,5 +1,5 @@
/* SPDX-License-Identifier: BSD-3-Clause */
-/* Copyright(c) 2007-2022 Intel Corporation */
+/* Copyright(c) 2007-2025 Intel Corporation */
/**
***************************************************************************
@@ -91,7 +91,6 @@
return CPA_STATUS_SUCCESS;
}
-
/**
* @ingroup LacAuthEnc
*/
diff --git a/sys/dev/qat/qat_api/common/crypto/sym/lac_sym_cb.c b/sys/dev/qat/qat_api/common/crypto/sym/lac_sym_cb.c
--- a/sys/dev/qat/qat_api/common/crypto/sym/lac_sym_cb.c
+++ b/sys/dev/qat/qat_api/common/crypto/sym/lac_sym_cb.c
@@ -1,5 +1,5 @@
/* SPDX-License-Identifier: BSD-3-Clause */
-/* Copyright(c) 2007-2022 Intel Corporation */
+/* Copyright(c) 2007-2025 Intel Corporation */
/**
***************************************************************************
@@ -296,7 +296,7 @@
/* For CCM and GCM, if qatRespStatusOkFlag is false, the data has to be
* cleaned as stated in RFC 3610; in DP mode, it is the user
- * responsability to do so */
+ * responsibility to do so */
if (((CPA_CY_SYM_OP_CIPHER == pSessionDesc->symOperation) &&
SPC != pSessionDesc->singlePassState) ||
@@ -450,12 +450,11 @@
}
/*
- * Now we'll attempt to send the message directly to QAT. We'll
- * keep looing until it succeeds (or at least a very high number
- * of retries), as the failure only happens when the ring is
- * full, and this is only a temporary situation. After a few
- * retries, space will become availble, allowing the putMsg to
- * succeed.
+ * Now we'll attempt to send the message directly to QAT. We'll keep
+ * looking until it succeeds (or at least a very high number of
+ * retries), as the failure only happens when the ring is full,
+ * and this is only a temporary situation. After a few retries,
+ * space will become available, allowing the putMsg to succeed.
*/
retries = 0;
do {
diff --git a/sys/dev/qat/qat_api/common/crypto/sym/lac_sym_cipher.c b/sys/dev/qat/qat_api/common/crypto/sym/lac_sym_cipher.c
--- a/sys/dev/qat/qat_api/common/crypto/sym/lac_sym_cipher.c
+++ b/sys/dev/qat/qat_api/common/crypto/sym/lac_sym_cipher.c
@@ -1,5 +1,5 @@
/* SPDX-License-Identifier: BSD-3-Clause */
-/* Copyright(c) 2007-2022 Intel Corporation */
+/* Copyright(c) 2007-2025 Intel Corporation */
/**
***************************************************************************
@@ -143,7 +143,7 @@
CPA_TRUE;
}
/* For subsequent partials in a sequence, we'll
- * re-use the IV that was written back by the
+ * reuse the IV that was written back by the
* QAT, using internal request queueing if
* necessary to ensure that the next partial
* request isn't issued to the QAT until the
@@ -215,7 +215,6 @@
return CPA_STATUS_SUCCESS;
}
-
CpaStatus
LacCipher_SessionSetupDataCheck(const CpaCySymCipherSetupData *pCipherSetupData,
Cpa32U capabilitiesMask)
@@ -440,7 +439,7 @@
Cpa32U capabilitiesMask =
pService->generic_service_info.capabilitiesMask;
- /* UCS Slice is supproted only in Gen4 */
+ /* UCS Slice is supported only in Gen4 */
if (isCyGen4x(pService)) {
if (LAC_CIPHER_IS_XTS_MODE(cipherAlgorithm) ||
LAC_CIPHER_IS_CHACHA(cipherAlgorithm) ||
diff --git a/sys/dev/qat/qat_api/common/crypto/sym/lac_sym_compile_check.c b/sys/dev/qat/qat_api/common/crypto/sym/lac_sym_compile_check.c
--- a/sys/dev/qat/qat_api/common/crypto/sym/lac_sym_compile_check.c
+++ b/sys/dev/qat/qat_api/common/crypto/sym/lac_sym_compile_check.c
@@ -1,8 +1,5 @@
-/***************************************************************************
- *
- * <COPYRIGHT_TAG>
- *
- ***************************************************************************/
+/* SPDX-License-Identifier: BSD-3-Clause */
+/* Copyright(c) 2007-2025 Intel Corporation */
/**
***************************************************************************
diff --git a/sys/dev/qat/qat_api/common/crypto/sym/lac_sym_dp.c b/sys/dev/qat/qat_api/common/crypto/sym/lac_sym_dp.c
--- a/sys/dev/qat/qat_api/common/crypto/sym/lac_sym_dp.c
+++ b/sys/dev/qat/qat_api/common/crypto/sym/lac_sym_dp.c
@@ -1,5 +1,5 @@
/* SPDX-License-Identifier: BSD-3-Clause */
-/* Copyright(c) 2007-2022 Intel Corporation */
+/* Copyright(c) 2007-2025 Intel Corporation */
/**
***************************************************************************
@@ -962,7 +962,6 @@
CpaStatus status = CPA_STATUS_FAIL;
sal_service_t *pService = NULL;
-
LAC_CHECK_INSTANCE_HANDLE(instanceHandle);
SAL_CHECK_INSTANCE_TYPE(instanceHandle,
(SAL_SERVICE_TYPE_CRYPTO |
@@ -999,7 +998,6 @@
{
sal_crypto_service_t *pService = (sal_crypto_service_t *)instanceHandle;
-
LAC_CHECK_INSTANCE_HANDLE(instanceHandle);
SAL_CHECK_INSTANCE_TYPE(instanceHandle,
(SAL_SERVICE_TYPE_CRYPTO |
@@ -1021,7 +1019,6 @@
CpaStatus status = CPA_STATUS_SUCCESS;
-
LAC_CHECK_NULL_PARAM(pRequest);
status = LacDp_EnqueueParamCheck(pRequest);
if (CPA_STATUS_SUCCESS != status) {
@@ -1064,7 +1061,6 @@
{
icp_comms_trans_handle trans_handle = NULL;
-
LAC_CHECK_INSTANCE_HANDLE(instanceHandle);
SAL_CHECK_INSTANCE_TYPE(instanceHandle,
(SAL_SERVICE_TYPE_CRYPTO |
@@ -1097,7 +1093,6 @@
CpaStatus status = CPA_STATUS_SUCCESS;
sal_crypto_service_t *pService = NULL;
-
LAC_CHECK_NULL_PARAM(pRequests);
LAC_CHECK_NULL_PARAM(pRequests[0]);
LAC_CHECK_NULL_PARAM(pRequests[0]->instanceHandle);
diff --git a/sys/dev/qat/qat_api/common/crypto/sym/lac_sym_hash.c b/sys/dev/qat/qat_api/common/crypto/sym/lac_sym_hash.c
--- a/sys/dev/qat/qat_api/common/crypto/sym/lac_sym_hash.c
+++ b/sys/dev/qat/qat_api/common/crypto/sym/lac_sym_hash.c
@@ -1,5 +1,5 @@
/* SPDX-License-Identifier: BSD-3-Clause */
-/* Copyright(c) 2007-2022 Intel Corporation */
+/* Copyright(c) 2007-2025 Intel Corporation */
/**
***************************************************************************
@@ -366,7 +366,6 @@
return status;
}
-
/** @ingroup LacHash */
CpaStatus
LacHash_HashContextCheck(CpaInstanceHandle instanceHandle,
@@ -752,10 +751,13 @@
&pHashAlgInfo);
/* check if the message is a multiple of the block size. */
- if ((pOpData->messageLenToHashInBytes %
- pHashAlgInfo->blockLength) != 0) {
- LAC_INVALID_PARAM_LOG(
- "messageLenToHashInBytes not block size");
+ if (pOpData->messageLenToHashInBytes %
+ pHashAlgInfo->blockLength !=
+ 0) {
+ LAC_INVALID_PARAM_LOG2(
+ "message(%d) not block-size(%d) multiple",
+ pOpData->messageLenToHashInBytes,
+ pHashAlgInfo->blockLength);
return CPA_STATUS_INVALID_PARAM;
}
}
diff --git a/sys/dev/qat/qat_api/common/crypto/sym/lac_sym_hash_sw_precomputes.c b/sys/dev/qat/qat_api/common/crypto/sym/lac_sym_hash_sw_precomputes.c
--- a/sys/dev/qat/qat_api/common/crypto/sym/lac_sym_hash_sw_precomputes.c
+++ b/sys/dev/qat/qat_api/common/crypto/sym/lac_sym_hash_sw_precomputes.c
@@ -1,5 +1,5 @@
/* SPDX-License-Identifier: BSD-3-Clause */
-/* Copyright(c) 2007-2022 Intel Corporation */
+/* Copyright(c) 2007-2025 Intel Corporation */
/**
***************************************************************************
@@ -53,7 +53,7 @@
* Note: from SHA hashes appropriate endian swapping is required.
* For sha1, sha224 and sha256 double words based swapping.
* For sha384 and sha512 quad words swapping.
- * No endianes swapping for md5 is required.
+ * No endianness swapping for md5 is required.
*/
CpaStatus status = CPA_STATUS_FAIL;
Cpa32U i = 0;
diff --git a/sys/dev/qat/qat_api/common/crypto/sym/lac_sym_queue.c b/sys/dev/qat/qat_api/common/crypto/sym/lac_sym_queue.c
--- a/sys/dev/qat/qat_api/common/crypto/sym/lac_sym_queue.c
+++ b/sys/dev/qat/qat_api/common/crypto/sym/lac_sym_queue.c
@@ -1,5 +1,5 @@
/* SPDX-License-Identifier: BSD-3-Clause */
-/* Copyright(c) 2007-2022 Intel Corporation */
+/* Copyright(c) 2007-2025 Intel Corporation */
/**
***************************************************************************
@@ -111,7 +111,7 @@
*/
if (CPA_CY_SYM_PACKET_TYPE_FULL !=
pRequest->pOpData->packetType) {
- /* Select blocking operations which this reqest will
+ /* Select blocking operations which this request will
* complete */
pSessionDesc->nonBlockingOpsInProgress = CPA_FALSE;
}
diff --git a/sys/dev/qat/qat_api/common/crypto/sym/qat/lac_sym_qat.c b/sys/dev/qat/qat_api/common/crypto/sym/qat/lac_sym_qat.c
--- a/sys/dev/qat/qat_api/common/crypto/sym/qat/lac_sym_qat.c
+++ b/sys/dev/qat/qat_api/common/crypto/sym/qat/lac_sym_qat.c
@@ -1,5 +1,5 @@
/* SPDX-License-Identifier: BSD-3-Clause */
-/* Copyright(c) 2007-2022 Intel Corporation */
+/* Copyright(c) 2007-2025 Intel Corporation */
/**
*****************************************************************************
@@ -244,7 +244,7 @@
*pCipherOffset = 0;
*pHashOffset = 0;
- /* for chaining can we use the optimised content descritor */
+ /* for chaining can we use the optimised content descriptor */
if (pSession->laCmdId == ICP_QAT_FW_LA_CMD_CIPHER_HASH ||
pSession->laCmdId == ICP_QAT_FW_LA_CMD_HASH_CIPHER) {
useOptimisedContentDesc =
@@ -297,7 +297,7 @@
(pSession->qatHashMode == ICP_QAT_HW_AUTH_MODE1)) {
/* we can only use the SHA1-mode1 in the SHRAM constants
* table when
- * we are using the opimised content desc */
+ * we are using the optimised content desc */
return CPA_FALSE;
}
diff --git a/sys/dev/qat/qat_api/common/crypto/sym/qat/lac_sym_qat_cipher.c b/sys/dev/qat/qat_api/common/crypto/sym/qat/lac_sym_qat_cipher.c
--- a/sys/dev/qat/qat_api/common/crypto/sym/qat/lac_sym_qat_cipher.c
+++ b/sys/dev/qat/qat_api/common/crypto/sym/qat/lac_sym_qat_cipher.c
@@ -1,5 +1,5 @@
/* SPDX-License-Identifier: BSD-3-Clause */
-/* Copyright(c) 2007-2022 Intel Corporation */
+/* Copyright(c) 2007-2025 Intel Corporation */
/**
***************************************************************************
@@ -214,6 +214,11 @@
ICP_QAT_HW_CIPHER_ALGO_AES256 /* ICP_QAT_HW_AES_256_F8_KEY_SZ */
};
+/* This array must be kept aligned with CpaCySymCipherAlgorithm enum but
+ * offset by -1 as that enum starts at 1. LacSymQat_CipherGetCfgData()
+ * below relies on that alignment and uses that enum -1 to index into this
+ * array.
+ */
typedef struct _icp_qat_hw_cipher_info {
icp_qat_hw_cipher_algo_t algorithm;
icp_qat_hw_cipher_mode_t mode;
@@ -478,7 +483,7 @@
in this case, and add padding. It makes no sense
to force applications to provide such key length for couple reasons:
1. It won't be possible to distinguish between AES 192 and 256 based
- on key lenght only
+ on key length only
2. Only some modes of AES will use UCS slice, then application will
have to know which ones */
if (ICP_QAT_FW_LA_USE_UCS_SLICE_TYPE == sliceType &&
@@ -542,7 +547,7 @@
sal_crypto_service_t *pService =
(sal_crypto_service_t *)pSession->pInstance;
- CpaCySymCipherAlgorithm cipherAlgorithm = 0;
+ int cipherIdx = 0;
icp_qat_hw_cipher_dir_t cipherDirection = 0;
/* Set defaults */
@@ -551,21 +556,33 @@
*pMode = ICP_QAT_HW_CIPHER_ECB_MODE;
*pDir = ICP_QAT_HW_CIPHER_ENCRYPT;
- /* decrease since it's numbered from 1 instead of 0 */
- cipherAlgorithm = pSession->cipherAlgorithm - 1;
+ /* offset index as CpaCySymCipherAlgorithm enum starts from 1, not from
+ * 0 */
+ cipherIdx = pSession->cipherAlgorithm - 1;
cipherDirection =
pSession->cipherDirection == CPA_CY_SYM_CIPHER_DIRECTION_ENCRYPT ?
ICP_QAT_HW_CIPHER_ENCRYPT :
ICP_QAT_HW_CIPHER_DECRYPT;
- *pAlgorithm = icp_qat_alg_info[cipherAlgorithm].algorithm;
- *pMode = icp_qat_alg_info[cipherAlgorithm].mode;
- *pDir = icp_qat_alg_info[cipherAlgorithm].dir[cipherDirection];
+ /* Boundary check against the last value in the algorithm enum */
+ if (!(pSession->cipherAlgorithm <= CPA_CY_SYM_CIPHER_SM4_CTR)) {
+ QAT_UTILS_LOG("Invalid cipherAlgorithm value\n");
+ return;
+ }
+
+ if (!(cipherDirection <= ICP_QAT_HW_CIPHER_DECRYPT)) {
+ QAT_UTILS_LOG("Invalid cipherDirection value\n");
+ return;
+ }
+
+ *pAlgorithm = icp_qat_alg_info[cipherIdx].algorithm;
+ *pMode = icp_qat_alg_info[cipherIdx].mode;
+ *pDir = icp_qat_alg_info[cipherIdx].dir[cipherDirection];
*pKey_convert =
- icp_qat_alg_info[cipherAlgorithm].key_convert[cipherDirection];
+ icp_qat_alg_info[cipherIdx].key_convert[cipherDirection];
- if (IS_KEY_DEP_NO != icp_qat_alg_info[cipherAlgorithm].isKeyLenDepend) {
- *pAlgorithm = icp_qat_alg_info[cipherAlgorithm]
+ if (IS_KEY_DEP_NO != icp_qat_alg_info[cipherIdx].isKeyLenDepend) {
+ *pAlgorithm = icp_qat_alg_info[cipherIdx]
.pAlgByKeySize[pSession->cipherKeyLenInBytes];
}
@@ -657,12 +674,11 @@
/* Special handling of AES 192 key for UCS slice.
UCS requires it to have 32 bytes - set is as targetKeyLen
in this case, and add padding. It makes no sense
- to force applications to provide such key length for couple
- reasons:
- 1. It won't be possible to distinguish between AES 192 and
- 256 based on key lenght only
- 2. Only some modes of AES will use UCS slice, then
- application will have to know which ones */
+ to force applications to provide such key length for couple reasons:
+ 1. It won't be possible to distinguish between AES 192 and 256 based
+ on key length only
+ 2. Only some modes of AES will use UCS slice, then application will
+ have to know which ones */
if (ICP_QAT_FW_LA_USE_UCS_SLICE_TYPE == sliceType &&
ICP_QAT_HW_AES_192_KEY_SZ == targetKeyLenInBytes) {
targetKeyLenInBytes = ICP_QAT_HW_UCS_AES_192_KEY_SZ;
@@ -918,10 +934,10 @@
/* Populate the field with the contents of the buffer,
* zero field first as data may be smaller than the field */
- /* In case of XTS mode using UCS slice always embedd IV.
- * IV provided by user needs to be encrypted to calculate
- * initial tweak, use pCipherReqParams->u.cipher_IV_array as
- * destination buffer for tweak value */
+ /* In case of XTS mode using UCS slice always encrypt the embedded IV.
+ * IV provided by user needs to be encrypted to calculate initial tweak,
+ * use pCipherReqParams->u.cipher_IV_array as destination buffer for
+ * tweak value */
if (ICP_QAT_FW_LA_USE_UCS_SLICE_TYPE ==
pSessionDesc->cipherSliceType &&
LAC_CIPHER_IS_XTS_MODE(pSessionDesc->cipherAlgorithm)) {
diff --git a/sys/dev/qat/qat_api/common/crypto/sym/qat/lac_sym_qat_hash_defs_lookup.c b/sys/dev/qat/qat_api/common/crypto/sym/qat/lac_sym_qat_hash_defs_lookup.c
--- a/sys/dev/qat/qat_api/common/crypto/sym/qat/lac_sym_qat_hash_defs_lookup.c
+++ b/sys/dev/qat/qat_api/common/crypto/sym/qat/lac_sym_qat_hash_defs_lookup.c
@@ -1,5 +1,5 @@
/* SPDX-License-Identifier: BSD-3-Clause */
-/* Copyright(c) 2007-2022 Intel Corporation */
+/* Copyright(c) 2007-2025 Intel Corporation */
/**
***************************************************************************
@@ -42,7 +42,7 @@
CpaCySymHashAlgorithm hashAlgorithm;
/* hash algorithm */
lac_sym_qat_hash_defs_t hashDefs;
- /* hash defintions pointers */
+ /* hash definitions pointers */
} lac_sym_qat_hash_def_map_t;
/*
@@ -219,7 +219,7 @@
static lac_sym_qat_hash_alg_info_t polyInfo = { LAC_HASH_POLY_DIGEST_SIZE,
LAC_HASH_POLY_BLOCK_SIZE,
- NULL, /* intial state */
+ NULL, /* initial state */
LAC_HASH_POLY_STATE_SIZE };
static lac_sym_qat_hash_alg_info_t xcbcMacInfo = {
@@ -239,7 +239,7 @@
static lac_sym_qat_hash_alg_info_t aesCcmInfo = {
LAC_HASH_AES_CCM_DIGEST_SIZE,
LAC_HASH_AES_CCM_BLOCK_SIZE,
- NULL, /* intial state */
+ NULL, /* initial state */
0 /* state size */
};
diff --git a/sys/dev/qat/qat_api/common/ctrl/sal_compression.c b/sys/dev/qat/qat_api/common/ctrl/sal_compression.c
--- a/sys/dev/qat/qat_api/common/ctrl/sal_compression.c
+++ b/sys/dev/qat/qat_api/common/ctrl/sal_compression.c
@@ -1,5 +1,5 @@
/* SPDX-License-Identifier: BSD-3-Clause */
-/* Copyright(c) 2007-2022 Intel Corporation */
+/* Copyright(c) 2007-2025 Intel Corporation */
/**
*****************************************************************************
* @file sal_compression.c
@@ -371,9 +371,6 @@
SAL_SERVICE_GOOD_FOR_INIT(pCompressionService);
- pCompressionService->generic_service_info.state =
- SAL_SERVICE_STATE_INITIALIZING;
-
if (CPA_FALSE == pCompressionService->generic_service_info.is_dyn) {
section = icpGetProcessName();
}
@@ -1438,7 +1435,8 @@
pInstanceInfo2->isOffloaded = CPA_TRUE;
/* Get the instance name and part name from the config file */
dev = icp_adf_getAccelDevByAccelId(pCompressionService->pkgID);
- if (NULL == dev) {
+ if (NULL == dev ||
+ 0 == strnlen(dev->deviceName, ADF_DEVICE_TYPE_LENGTH + 1)) {
QAT_UTILS_LOG("Can not find device for the instance.\n");
LAC_OS_BZERO(pInstanceInfo2, sizeof(CpaInstanceInfo2));
return CPA_STATUS_FAIL;
diff --git a/sys/dev/qat/qat_api/common/ctrl/sal_crypto.c b/sys/dev/qat/qat_api/common/ctrl/sal_crypto.c
--- a/sys/dev/qat/qat_api/common/ctrl/sal_crypto.c
+++ b/sys/dev/qat/qat_api/common/ctrl/sal_crypto.c
@@ -1,5 +1,5 @@
/* SPDX-License-Identifier: BSD-3-Clause */
-/* Copyright(c) 2007-2022 Intel Corporation */
+/* Copyright(c) 2007-2025 Intel Corporation */
/**
***************************************************************************
@@ -73,6 +73,15 @@
#define NUM_CRYPTO_ASYM_RX_RINGS 1
#define NUM_CRYPTO_NRBG_RX_RINGS 1
+CpaStatus Lac_GetCyInstancesByType(
+ const CpaAccelerationServiceType accelerationServiceType,
+ Cpa16U numInstances,
+ CpaInstanceHandle *pInstances);
+
+CpaStatus Lac_GetCyNumInstancesByType(
+ const CpaAccelerationServiceType accelerationServiceType,
+ Cpa16U *pNumInstances);
+
static CpaInstanceHandle
Lac_CryptoGetFirstHandle(void)
{
@@ -88,7 +97,6 @@
return instHandle;
}
-
/* Function to release the sym handles. */
static CpaStatus
SalCtrl_SymReleaseTransHandle(sal_service_t *service)
@@ -116,7 +124,6 @@
return ret_status;
}
-
/*
* @ingroup sal_crypto
* Frees resources (memory and transhandles) if allocated
@@ -153,7 +160,6 @@
return status;
}
-
/**
***********************************************************************
* @ingroup SalCtrl
@@ -175,7 +181,6 @@
} \
} while (0)
-
/* Function that creates the Sym Handles. */
static CpaStatus
SalCtrl_SymCreateTransHandle(icp_accel_dev_t *device,
@@ -325,7 +330,6 @@
return ++offset;
}
-
static CpaStatus
SalCtrl_SymInit(icp_accel_dev_t *device, sal_service_t *service)
{
@@ -342,7 +346,6 @@
section = icpGetProcessName();
}
-
/* Register callbacks for the symmetric services
* (Hash, Cipher, Algorithm-Chaining) (returns void)*/
LacSymCb_CallbacksRegister();
@@ -581,7 +584,6 @@
section = icpGetProcessName();
}
-
/* Get Config Info: Accel Num, bank Num, packageID,
coreAffinity, nodeAffinity and response mode */
@@ -847,7 +849,6 @@
return CPA_STATUS_FAIL;
}
-
/* Free memory and transhandles */
switch (svc_type) {
case SAL_SERVICE_TYPE_CRYPTO_ASYM:
@@ -886,7 +887,6 @@
{
CpaStatus status = CPA_STATUS_SUCCESS;
-
LAC_CHECK_NULL_PARAM(pStatusText);
switch (errStatus) {
@@ -969,7 +969,6 @@
CpaStatus status = CPA_STATUS_SUCCESS;
sal_crypto_service_t *pService = NULL;
-
if (CPA_INSTANCE_HANDLE_SINGLE == instanceHandle_in) {
instanceHandle = Lac_GetFirstHandle(SAL_SERVICE_TYPE_CRYPTO);
if (!instanceHandle) {
@@ -1021,7 +1020,6 @@
CpaStatus status = CPA_STATUS_SUCCESS;
sal_crypto_service_t *pService = NULL;
-
if (CPA_INSTANCE_HANDLE_SINGLE == instanceHandle_in) {
instanceHandle = Lac_CryptoGetFirstHandle();
} else {
@@ -1066,7 +1064,6 @@
CpaStatus status = CPA_STATUS_SUCCESS;
sal_service_t *gen_handle = instanceHandle;
-
LAC_CHECK_NULL_PARAM(gen_handle);
gen_handle->notification_cb = pInstanceNotificationCb;
gen_handle->cb_tag = pCallbackTag;
@@ -1080,84 +1077,8 @@
CpaStatus
cpaCyGetNumInstances(Cpa16U *pNumInstances)
{
- CpaStatus status = CPA_STATUS_SUCCESS;
- CpaInstanceHandle cyInstanceHandle;
- CpaInstanceInfo2 info;
- icp_accel_dev_t **pAdfInsts = NULL;
- icp_accel_dev_t *dev_addr = NULL;
- sal_t *base_addr = NULL;
- sal_list_t *list_temp = NULL;
- Cpa16U num_accel_dev = 0;
- Cpa16U num_inst = 0;
- Cpa16U i = 0;
-
- LAC_CHECK_NULL_PARAM(pNumInstances);
-
- /* Get the number of accel_dev in the system */
- status = icp_amgr_getNumInstances(&num_accel_dev);
- LAC_CHECK_STATUS(status);
-
- /* Allocate memory to store addr of accel_devs */
- pAdfInsts =
- malloc(num_accel_dev * sizeof(icp_accel_dev_t *), M_QAT, M_WAITOK);
- num_accel_dev = 0;
- /* Get ADF to return all accel_devs that support either
- * symmetric or asymmetric crypto */
- status = icp_amgr_getAllAccelDevByCapabilities(
- (ICP_ACCEL_CAPABILITIES_CRYPTO_ASYMMETRIC |
- ICP_ACCEL_CAPABILITIES_CRYPTO_SYMMETRIC),
- pAdfInsts,
- &num_accel_dev);
- if (CPA_STATUS_SUCCESS != status) {
- LAC_LOG_ERROR("No support for crypto\n");
- *pNumInstances = 0;
- free(pAdfInsts, M_QAT);
- return status;
- }
-
- for (i = 0; i < num_accel_dev; i++) {
- dev_addr = (icp_accel_dev_t *)pAdfInsts[i];
- if (NULL == dev_addr || NULL == dev_addr->pSalHandle) {
- continue;
- }
-
- base_addr = dev_addr->pSalHandle;
- list_temp = base_addr->crypto_services;
- while (NULL != list_temp) {
- cyInstanceHandle = SalList_getObject(list_temp);
- status = cpaCyInstanceGetInfo2(cyInstanceHandle, &info);
- if (CPA_STATUS_SUCCESS == status &&
- CPA_TRUE == info.isPolled) {
- num_inst++;
- }
- list_temp = SalList_next(list_temp);
- }
- list_temp = base_addr->asym_services;
- while (NULL != list_temp) {
- cyInstanceHandle = SalList_getObject(list_temp);
- status = cpaCyInstanceGetInfo2(cyInstanceHandle, &info);
- if (CPA_STATUS_SUCCESS == status &&
- CPA_TRUE == info.isPolled) {
- num_inst++;
- }
- list_temp = SalList_next(list_temp);
- }
- list_temp = base_addr->sym_services;
- while (NULL != list_temp) {
- cyInstanceHandle = SalList_getObject(list_temp);
- status = cpaCyInstanceGetInfo2(cyInstanceHandle, &info);
- if (CPA_STATUS_SUCCESS == status &&
- CPA_TRUE == info.isPolled) {
- num_inst++;
- }
- list_temp = SalList_next(list_temp);
- }
- }
- *pNumInstances = num_inst;
- free(pAdfInsts, M_QAT);
-
-
- return status;
+ return Lac_GetCyNumInstancesByType(CPA_ACC_SVC_TYPE_CRYPTO,
+ pNumInstances);
}
/**
@@ -1167,119 +1088,9 @@
CpaStatus
cpaCyGetInstances(Cpa16U numInstances, CpaInstanceHandle *pCyInstances)
{
- CpaStatus status = CPA_STATUS_SUCCESS;
- CpaInstanceHandle cyInstanceHandle;
- CpaInstanceInfo2 info;
- icp_accel_dev_t **pAdfInsts = NULL;
- icp_accel_dev_t *dev_addr = NULL;
- sal_t *base_addr = NULL;
- sal_list_t *list_temp = NULL;
- Cpa16U num_accel_dev = 0;
- Cpa16U num_allocated_instances = 0;
- Cpa16U index = 0;
- Cpa16U i = 0;
-
-
- LAC_CHECK_NULL_PARAM(pCyInstances);
- if (0 == numInstances) {
- LAC_INVALID_PARAM_LOG("NumInstances is 0");
- return CPA_STATUS_INVALID_PARAM;
- }
-
- /* Get the number of crypto instances */
- status = cpaCyGetNumInstances(&num_allocated_instances);
- if (CPA_STATUS_SUCCESS != status) {
- return status;
- }
-
- if (numInstances > num_allocated_instances) {
- QAT_UTILS_LOG("Only %d crypto instances available\n",
- num_allocated_instances);
- return CPA_STATUS_RESOURCE;
- }
-
- /* Get the number of accel devices in the system */
- status = icp_amgr_getNumInstances(&num_accel_dev);
- LAC_CHECK_STATUS(status);
-
- /* Allocate memory to store addr of accel_devs */
- pAdfInsts =
- malloc(num_accel_dev * sizeof(icp_accel_dev_t *), M_QAT, M_WAITOK);
-
- num_accel_dev = 0;
- /* Get ADF to return all accel_devs that support either
- * symmetric or asymmetric crypto */
- status = icp_amgr_getAllAccelDevByCapabilities(
- (ICP_ACCEL_CAPABILITIES_CRYPTO_ASYMMETRIC |
- ICP_ACCEL_CAPABILITIES_CRYPTO_SYMMETRIC),
- pAdfInsts,
- &num_accel_dev);
- if (CPA_STATUS_SUCCESS != status) {
- LAC_LOG_ERROR("No support for crypto\n");
- free(pAdfInsts, M_QAT);
- return status;
- }
-
- for (i = 0; i < num_accel_dev; i++) {
- dev_addr = (icp_accel_dev_t *)pAdfInsts[i];
- /* Note dev_addr cannot be NULL here as numInstances = 0
- * is not valid and if dev_addr = NULL then index = 0 (which
- * is less than numInstances and status is set to _RESOURCE
- * above
- */
- base_addr = dev_addr->pSalHandle;
- if (NULL == base_addr) {
- continue;
- }
- list_temp = base_addr->crypto_services;
- while (NULL != list_temp) {
- if (index > (numInstances - 1)) {
- break;
- }
- cyInstanceHandle = SalList_getObject(list_temp);
- status = cpaCyInstanceGetInfo2(cyInstanceHandle, &info);
- list_temp = SalList_next(list_temp);
- if (CPA_STATUS_SUCCESS != status ||
- CPA_TRUE != info.isPolled) {
- continue;
- }
- pCyInstances[index] = cyInstanceHandle;
- index++;
- }
- list_temp = base_addr->asym_services;
- while (NULL != list_temp) {
- if (index > (numInstances - 1)) {
- break;
- }
- cyInstanceHandle = SalList_getObject(list_temp);
- status = cpaCyInstanceGetInfo2(cyInstanceHandle, &info);
- list_temp = SalList_next(list_temp);
- if (CPA_STATUS_SUCCESS != status ||
- CPA_TRUE != info.isPolled) {
- continue;
- }
- pCyInstances[index] = cyInstanceHandle;
- index++;
- }
- list_temp = base_addr->sym_services;
- while (NULL != list_temp) {
- if (index > (numInstances - 1)) {
- break;
- }
- cyInstanceHandle = SalList_getObject(list_temp);
- status = cpaCyInstanceGetInfo2(cyInstanceHandle, &info);
- list_temp = SalList_next(list_temp);
- if (CPA_STATUS_SUCCESS != status ||
- CPA_TRUE != info.isPolled) {
- continue;
- }
- pCyInstances[index] = cyInstanceHandle;
- index++;
- }
- }
- free(pAdfInsts, M_QAT);
-
- return status;
+ return Lac_GetCyInstancesByType(CPA_ACC_SVC_TYPE_CRYPTO,
+ numInstances,
+ pCyInstances);
}
/**
@@ -1359,7 +1170,6 @@
char valStr[ADF_CFG_MAX_VAL_LEN_IN_BYTES] = { 0 };
char *section = DYN_SEC;
-
if (CPA_INSTANCE_HANDLE_SINGLE == instanceHandle_in) {
instanceHandle = Lac_CryptoGetFirstHandle();
} else {
@@ -1423,9 +1233,10 @@
}
pInstanceInfo2->isOffloaded = CPA_TRUE;
- /* Get the instance name and part name*/
+ /* Get the instance name and part name */
dev = icp_adf_getAccelDevByAccelId(pCryptoService->pkgID);
- if (NULL == dev) {
+ if (NULL == dev ||
+ 0 == strnlen(dev->deviceName, ADF_DEVICE_TYPE_LENGTH + 1)) {
LAC_LOG_ERROR("Can not find device for the instance\n");
LAC_OS_BZERO(pInstanceInfo2, sizeof(CpaInstanceInfo2));
return CPA_STATUS_FAIL;
@@ -1474,7 +1285,6 @@
/* Verify Instance exists */
CpaInstanceHandle instanceHandle = NULL;
-
if (CPA_INSTANCE_HANDLE_SINGLE == instanceHandle_in) {
instanceHandle = Lac_CryptoGetFirstHandle();
} else {
@@ -1634,7 +1444,6 @@
CpaInstanceHandle instanceHandle = NULL;
sal_service_t *pService = NULL;
-
if (CPA_INSTANCE_HANDLE_SINGLE == instanceHandle_in) {
instanceHandle = Lac_CryptoGetFirstHandle();
} else {
@@ -1756,7 +1565,6 @@
return status;
}
-
/**
******************************************************************************
* @ingroup cpaCyCommon
@@ -1910,7 +1718,6 @@
default:
LAC_LOG_ERROR("Invalid service type\n");
return NULL;
- break;
}
/* Only need 1 dev with crypto enabled - so check all devices*/
status = icp_amgr_getAllAccelDevByEachCapability(capabilities,
@@ -1978,7 +1785,6 @@
numInflightRequests);
}
-
CpaStatus
icp_sal_dp_SymGetInflightRequests(CpaInstanceHandle instanceHandle,
Cpa32U *maxInflightRequests,
@@ -1994,7 +1800,6 @@
numInflightRequests);
}
-
CpaStatus
icp_sal_setForceAEADMACVerify(CpaInstanceHandle instanceHandle,
CpaBoolean forceAEADMacVerify)
diff --git a/sys/dev/qat/qat_api/common/ctrl/sal_get_instances.c b/sys/dev/qat/qat_api/common/ctrl/sal_get_instances.c
--- a/sys/dev/qat/qat_api/common/ctrl/sal_get_instances.c
+++ b/sys/dev/qat/qat_api/common/ctrl/sal_get_instances.c
@@ -1,5 +1,5 @@
/* SPDX-License-Identifier: BSD-3-Clause */
-/* Copyright(c) 2007-2022 Intel Corporation */
+/* Copyright(c) 2007-2025 Intel Corporation */
/**
*****************************************************************************
@@ -10,7 +10,9 @@
* @ingroup SalCtrl
*
* @description
- * This file contains the main function to get SAL instances.
+ * This file contains generic functions to get instances of a specified
+ * service type. Note these are complementary to the already existing
+ * service-specific functions.
*
*****************************************************************************/
@@ -34,19 +36,22 @@
#include "lac_mem.h"
#include "lac_list.h"
#include "lac_sal_types.h"
+#include "lac_sal_types_crypto.h"
/**
******************************************************************************
* @ingroup SalCtrl
* @description
- * Get either sym or asym instance number
+ * Get the total number of either sym, asym or cy instances
*****************************************************************************/
-static CpaStatus
-Lac_GetSingleCyNumInstances(
+CpaStatus
+Lac_GetCyNumInstancesByType(
const CpaAccelerationServiceType accelerationServiceType,
Cpa16U *pNumInstances)
{
CpaStatus status = CPA_STATUS_SUCCESS;
+ CpaInstanceHandle instanceHandle;
+ CpaInstanceInfo2 info;
icp_accel_dev_t **pAdfInsts = NULL;
icp_accel_dev_t *dev_addr = NULL;
sal_t *base_addr = NULL;
@@ -71,6 +76,12 @@
service = "sym";
break;
+ case CPA_ACC_SVC_TYPE_CRYPTO:
+ accel_capability = ICP_ACCEL_CAPABILITIES_CRYPTO_SYMMETRIC |
+ ICP_ACCEL_CAPABILITIES_CRYPTO_ASYMMETRIC;
+ service = "cy";
+ break;
+
default:
QAT_UTILS_LOG("Invalid service type\n");
return CPA_STATUS_INVALID_PARAM;
@@ -106,14 +117,48 @@
}
base_addr = dev_addr->pSalHandle;
- if (CPA_ACC_SVC_TYPE_CRYPTO_ASYM == accelerationServiceType) {
+ if (CPA_ACC_SVC_TYPE_CRYPTO == accelerationServiceType) {
+ list_temp = base_addr->crypto_services;
+ while (NULL != list_temp) {
+ instanceHandle = SalList_getObject(list_temp);
+ status = cpaCyInstanceGetInfo2(instanceHandle,
+ &info);
+ if (CPA_STATUS_SUCCESS == status &&
+ CPA_TRUE == info.isPolled) {
+ num_inst++;
+ }
+ list_temp = SalList_next(list_temp);
+ }
+ }
+
+ if (CPA_ACC_SVC_TYPE_CRYPTO_ASYM == accelerationServiceType ||
+ CPA_ACC_SVC_TYPE_CRYPTO == accelerationServiceType) {
list_temp = base_addr->asym_services;
- } else {
- list_temp = base_addr->sym_services;
+ while (NULL != list_temp) {
+ instanceHandle = SalList_getObject(list_temp);
+ status = cpaCyInstanceGetInfo2(instanceHandle,
+ &info);
+ if (CPA_STATUS_SUCCESS == status &&
+ CPA_TRUE == info.isPolled) {
+ num_inst++;
+ }
+ list_temp = SalList_next(list_temp);
+ }
}
- while (NULL != list_temp) {
- num_inst++;
- list_temp = SalList_next(list_temp);
+
+ if (CPA_ACC_SVC_TYPE_CRYPTO_SYM == accelerationServiceType ||
+ CPA_ACC_SVC_TYPE_CRYPTO == accelerationServiceType) {
+ list_temp = base_addr->sym_services;
+ while (NULL != list_temp) {
+ instanceHandle = SalList_getObject(list_temp);
+ status = cpaCyInstanceGetInfo2(instanceHandle,
+ &info);
+ if (CPA_STATUS_SUCCESS == status &&
+ CPA_TRUE == info.isPolled) {
+ num_inst++;
+ }
+ list_temp = SalList_next(list_temp);
+ }
}
}
@@ -127,15 +172,17 @@
******************************************************************************
* @ingroup SalCtrl
* @description
- * Get either sym or asym instance
+ * Get either sym, asym or cy instance
*****************************************************************************/
-static CpaStatus
-Lac_GetSingleCyInstances(
+CpaStatus
+Lac_GetCyInstancesByType(
const CpaAccelerationServiceType accelerationServiceType,
Cpa16U numInstances,
CpaInstanceHandle *pInstances)
{
CpaStatus status = CPA_STATUS_SUCCESS;
+ CpaInstanceHandle instanceHandle = NULL;
+ CpaInstanceInfo2 info;
icp_accel_dev_t **pAdfInsts = NULL;
icp_accel_dev_t *dev_addr = NULL;
sal_t *base_addr = NULL;
@@ -163,14 +210,21 @@
accel_capability = ICP_ACCEL_CAPABILITIES_CRYPTO_SYMMETRIC;
service = "sym";
break;
+
+ case CPA_ACC_SVC_TYPE_CRYPTO:
+ accel_capability = ICP_ACCEL_CAPABILITIES_CRYPTO_SYMMETRIC |
+ ICP_ACCEL_CAPABILITIES_CRYPTO_ASYMMETRIC;
+ service = "cy";
+ break;
+
default:
QAT_UTILS_LOG("Invalid service type\n");
return CPA_STATUS_INVALID_PARAM;
}
/* Get the number of instances */
- status = cpaGetNumInstances(accelerationServiceType,
- &num_allocated_instances);
+ status = Lac_GetCyNumInstancesByType(accelerationServiceType,
+ &num_allocated_instances);
if (CPA_STATUS_SUCCESS != status) {
return status;
}
@@ -216,17 +270,63 @@
continue;
}
- if (CPA_ACC_SVC_TYPE_CRYPTO_ASYM == accelerationServiceType)
+ if (CPA_ACC_SVC_TYPE_CRYPTO == accelerationServiceType) {
+ list_temp = base_addr->crypto_services;
+ while (NULL != list_temp) {
+ if (index > (numInstances - 1))
+ break;
+
+ instanceHandle = SalList_getObject(list_temp);
+ status = cpaCyInstanceGetInfo2(instanceHandle,
+ &info);
+ list_temp = SalList_next(list_temp);
+ if (CPA_STATUS_SUCCESS != status ||
+ CPA_TRUE != info.isPolled) {
+ continue;
+ }
+ pInstances[index] = instanceHandle;
+ index++;
+ }
+ }
+
+ if (CPA_ACC_SVC_TYPE_CRYPTO_ASYM == accelerationServiceType ||
+ CPA_ACC_SVC_TYPE_CRYPTO == accelerationServiceType) {
list_temp = base_addr->asym_services;
- else
- list_temp = base_addr->sym_services;
- while (NULL != list_temp) {
- if (index > (numInstances - 1))
- break;
+ while (NULL != list_temp) {
+ if (index > (numInstances - 1))
+ break;
+
+ instanceHandle = SalList_getObject(list_temp);
+ status = cpaCyInstanceGetInfo2(instanceHandle,
+ &info);
+ list_temp = SalList_next(list_temp);
+ if (CPA_STATUS_SUCCESS != status ||
+ CPA_TRUE != info.isPolled) {
+ continue;
+ }
+ pInstances[index] = instanceHandle;
+ index++;
+ }
+ }
- pInstances[index] = SalList_getObject(list_temp);
- list_temp = SalList_next(list_temp);
- index++;
+ if (CPA_ACC_SVC_TYPE_CRYPTO_SYM == accelerationServiceType ||
+ CPA_ACC_SVC_TYPE_CRYPTO == accelerationServiceType) {
+ list_temp = base_addr->sym_services;
+ while (NULL != list_temp) {
+ if (index > (numInstances - 1))
+ break;
+
+ instanceHandle = SalList_getObject(list_temp);
+ status = cpaCyInstanceGetInfo2(instanceHandle,
+ &info);
+ list_temp = SalList_next(list_temp);
+ if (CPA_STATUS_SUCCESS != status ||
+ CPA_TRUE != info.isPolled) {
+ continue;
+ }
+ pInstances[index] = instanceHandle;
+ index++;
+ }
}
}
free(pAdfInsts, M_QAT);
@@ -242,16 +342,24 @@
cpaGetNumInstances(const CpaAccelerationServiceType accelerationServiceType,
Cpa16U *pNumInstances)
{
+ LAC_CHECK_NULL_PARAM(pNumInstances);
+
switch (accelerationServiceType) {
case CPA_ACC_SVC_TYPE_CRYPTO_ASYM:
case CPA_ACC_SVC_TYPE_CRYPTO_SYM:
- return Lac_GetSingleCyNumInstances(accelerationServiceType,
- pNumInstances);
case CPA_ACC_SVC_TYPE_CRYPTO:
- return cpaCyGetNumInstances(pNumInstances);
+ return Lac_GetCyNumInstancesByType(accelerationServiceType,
+ pNumInstances);
+
case CPA_ACC_SVC_TYPE_DATA_COMPRESSION:
return cpaDcGetNumInstances(pNumInstances);
+ case CPA_ACC_SVC_TYPE_PATTERN_MATCH:
+ case CPA_ACC_SVC_TYPE_RAID:
+ case CPA_ACC_SVC_TYPE_XML:
+ QAT_UTILS_LOG("Unsupported service type\n");
+ return CPA_STATUS_UNSUPPORTED;
+
default:
QAT_UTILS_LOG("Invalid service type\n");
*pNumInstances = 0;
@@ -268,18 +376,25 @@
Cpa16U numInstances,
CpaInstanceHandle *pInstances)
{
+ LAC_CHECK_NULL_PARAM(pInstances);
+
switch (accelerationServiceType) {
case CPA_ACC_SVC_TYPE_CRYPTO_ASYM:
case CPA_ACC_SVC_TYPE_CRYPTO_SYM:
- return Lac_GetSingleCyInstances(accelerationServiceType,
+ case CPA_ACC_SVC_TYPE_CRYPTO:
+ return Lac_GetCyInstancesByType(accelerationServiceType,
numInstances,
pInstances);
- case CPA_ACC_SVC_TYPE_CRYPTO:
- return cpaCyGetInstances(numInstances, pInstances);
case CPA_ACC_SVC_TYPE_DATA_COMPRESSION:
return cpaDcGetInstances(numInstances, pInstances);
+ case CPA_ACC_SVC_TYPE_PATTERN_MATCH:
+ case CPA_ACC_SVC_TYPE_RAID:
+ case CPA_ACC_SVC_TYPE_XML:
+ QAT_UTILS_LOG("Unsupported service type\n");
+ return CPA_STATUS_UNSUPPORTED;
+
default:
QAT_UTILS_LOG("Invalid service type\n");
return CPA_STATUS_INVALID_PARAM;
diff --git a/sys/dev/qat/qat_api/common/include/lac_common.h b/sys/dev/qat/qat_api/common/include/lac_common.h
--- a/sys/dev/qat/qat_api/common/include/lac_common.h
+++ b/sys/dev/qat/qat_api/common/include/lac_common.h
@@ -1,5 +1,5 @@
/* SPDX-License-Identifier: BSD-3-Clause */
-/* Copyright(c) 2007-2022 Intel Corporation */
+/* Copyright(c) 2007-2025 Intel Corporation */
/**
*****************************************************************************
* @file lac_common.h Common macros
@@ -574,7 +574,6 @@
******************************************************************************/
#define LAC_QUADWORDS_TO_BYTES(x) ((x) << 3)
-
/******************************************************************************/
/*
diff --git a/sys/dev/qat/qat_api/common/include/lac_hooks.h b/sys/dev/qat/qat_api/common/include/lac_hooks.h
--- a/sys/dev/qat/qat_api/common/include/lac_hooks.h
+++ b/sys/dev/qat/qat_api/common/include/lac_hooks.h
@@ -1,5 +1,5 @@
/* SPDX-License-Identifier: BSD-3-Clause */
-/* Copyright(c) 2007-2022 Intel Corporation */
+/* Copyright(c) 2007-2025 Intel Corporation */
/**
*******************************************************************************
* @file lac_hooks.h
@@ -9,7 +9,7 @@
* @ingroup LacCommon
*
* Component Init/Shutdown functions. These are:
- * - an init function which is called during the intialisation sequence,
+ * - an init function which is called during the initialisation sequence,
* - a shutdown function which is called by the overall shutdown function,
*
******************************************************************************/
diff --git a/sys/dev/qat/qat_api/common/include/lac_mem.h b/sys/dev/qat/qat_api/common/include/lac_mem.h
--- a/sys/dev/qat/qat_api/common/include/lac_mem.h
+++ b/sys/dev/qat/qat_api/common/include/lac_mem.h
@@ -1,5 +1,5 @@
/* SPDX-License-Identifier: BSD-3-Clause */
-/* Copyright(c) 2007-2022 Intel Corporation */
+/* Copyright(c) 2007-2025 Intel Corporation */
/**
***************************************************************************
* @file lac_mem.h
@@ -351,7 +351,7 @@
* results in following entry:
* static const unsigned int highest_bit_of_lac_mem_blk_t = 3
*
- * CAUTION!!
+ * CAUTION!
* Macro is prepared only for type names NOT-containing ANY
* special characters. Types as amongst others:
* - void *
@@ -481,7 +481,7 @@
* This is because pInternalMem describes the memory that will be sent to
* QAT.
*
- * The caller must keep the original buffer pointer. The alllocated buffer
+ * The caller must keep the original buffer pointer. The allocated buffer
*is
* freed (as necessary) using icp_LacBufferRestore().
*
diff --git a/sys/dev/qat/qat_api/common/include/lac_mem_pools.h b/sys/dev/qat/qat_api/common/include/lac_mem_pools.h
--- a/sys/dev/qat/qat_api/common/include/lac_mem_pools.h
+++ b/sys/dev/qat/qat_api/common/include/lac_mem_pools.h
@@ -1,5 +1,5 @@
/* SPDX-License-Identifier: BSD-3-Clause */
-/* Copyright(c) 2007-2022 Intel Corporation */
+/* Copyright(c) 2007-2025 Intel Corporation */
/**
***************************************************************************
* @file lac_mem_pools.h
@@ -15,20 +15,20 @@
* This component is designed as a set of utility functions for the
* creation of pre-allocated memory pools. Each pool will be created using OS
* memory with a user specified number of elements, element size and element
- * alignment(alignmnet is at byte granularity).
+ * alignment(alignment is at byte granularity).
* @lld_dependencies
* These utilities rely on QAT Utils for locking mechanisms and memory
- *allocation
+ * allocation
* @lld_initialisation
* Pool creation needs to be done by each component. There is no specific
* initialisation required for this feature.
* @lld_module_algorithms
- * The following is a diagram of how the memory is layed out for each block
+ * The following is a diagram of how the memory is laid out for each block
* in a pool. Each element must be aligned on the boundary requested for in the
* create call. In order to hide the management of the pools from the user,
* the memory block data is hidden prior to the
* data pointer. This way it can be accessed easily on a free call with pointer
- * arithmatic. The Padding at the start is simply there for alignment and is
+ * arithmetic. The Padding at the start is simply there for alignment and is
* unused in the pools.
*
* -------------------------------------------------------
@@ -73,7 +73,7 @@
CpaBoolean isInUse;
/**< indicates if the pool item is in use */
struct lac_mem_blk_s *pNext;
- /**< link to next blcok in the pool */
+ /**< link to next block in the pool */
struct lac_mem_pool_hdr_s *pPoolID;
/**< identifier of the pool that this block was allocated from */
} lac_mem_blk_t;
@@ -82,7 +82,7 @@
(((lac_mem_blk_t *)((LAC_ARCH_UINT)pVirtAddr - sizeof(lac_mem_blk_t))) \
->physDataPtr)
/**< @ingroup LacMemPool
- * macro for retreiving the physical address of the memory block. */
+ * macro for retrieving the physical address of the memory block. */
#define LAC_MEM_POOL_INIT_POOL_ID 0
/**< @ingroup LacMemPool
diff --git a/sys/dev/qat/qat_api/common/include/lac_sal.h b/sys/dev/qat/qat_api/common/include/lac_sal.h
--- a/sys/dev/qat/qat_api/common/include/lac_sal.h
+++ b/sys/dev/qat/qat_api/common/include/lac_sal.h
@@ -1,5 +1,5 @@
/* SPDX-License-Identifier: BSD-3-Clause */
-/* Copyright(c) 2007-2022 Intel Corporation */
+/* Copyright(c) 2007-2025 Intel Corporation */
/**
*****************************************************************************
* @file lac_sal.h
@@ -57,7 +57,7 @@
* @ingroup SalCtl
* @description
* This macro goes through the 'list' passed in as a parameter. For each
- * element found in the list, it peforms a cast to the type of the element
+ * element found in the list, it performs a cast to the type of the element
* given by the 'type' parameter. Finally, it calls the function given by
* the 'function' parameter, passing itself and the device as parameters.
*
@@ -114,7 +114,7 @@
* @ingroup SalCtl
* @description
* This macro goes through the 'list' passed in as a parameter. For each
- * element found in the list, it peforms a cast to the type of the element
+ * element found in the list, it performs a cast to the type of the element
* given by the 'type' parameter. Finally, it checks the state of the
* element and if it is in state 'state_check' then it calls the
* function given by the 'function' parameter, passing itself
@@ -212,7 +212,7 @@
* @ingroup SalCtrl
* @description
* This function is used to stop an instance of crypto service.
- * It checks for inflight messages to the FW. If no messages are pending
+ * It checks for in-flight messages to the FW. If no messages are pending
* it returns success. If messages are pending it returns retry.
*
* @context
@@ -340,7 +340,7 @@
* @ingroup SalCtrl
* @description
* This function is used to stop an instance of compression service.
- * It checks for inflight messages to the FW. If no messages are pending
+ * It checks for in-flight messages to the FW. If no messages are pending
* it returns success. If messages are pending it returns retry.
*
* @context
diff --git a/sys/dev/qat/qat_api/common/include/lac_sal_types.h b/sys/dev/qat/qat_api/common/include/lac_sal_types.h
--- a/sys/dev/qat/qat_api/common/include/lac_sal_types.h
+++ b/sys/dev/qat/qat_api/common/include/lac_sal_types.h
@@ -1,5 +1,5 @@
/* SPDX-License-Identifier: BSD-3-Clause */
-/* Copyright(c) 2007-2022 Intel Corporation */
+/* Copyright(c) 2007-2025 Intel Corporation */
/**
***************************************************************************
* @file lac_sal_types.h
@@ -195,8 +195,8 @@
* @param[in] pService pointer to service instance
* @param[in] service_type service type to check againstx.
*
- * @return CPA_STATUS_FAIL Parameter is incorrect type
- *
+ * @return CPA_STATUS_FAIL Parameter is incorrect type
+ *
******************************************************************************/
#define SAL_CHECK_INSTANCE_TYPE(pService, service_type) \
do { \
diff --git a/sys/dev/qat/qat_api/common/include/lac_sal_types_crypto.h b/sys/dev/qat/qat_api/common/include/lac_sal_types_crypto.h
--- a/sys/dev/qat/qat_api/common/include/lac_sal_types_crypto.h
+++ b/sys/dev/qat/qat_api/common/include/lac_sal_types_crypto.h
@@ -1,5 +1,5 @@
/* SPDX-License-Identifier: BSD-3-Clause */
-/* Copyright(c) 2007-2022 Intel Corporation */
+/* Copyright(c) 2007-2025 Intel Corporation */
/**
***************************************************************************
@@ -187,4 +187,25 @@
CpaInstanceHandle Lac_GetFirstHandle(sal_service_type_t svc_type);
+/**
+ ******************************************************************************
+ * @ingroup SalCtrl
+ * @description
+ * Get the total number of either sym, asym or cy instances
+ *****************************************************************************/
+CpaStatus Lac_GetCyNumInstancesByType(
+ const CpaAccelerationServiceType accelerationServiceType,
+ Cpa16U *pNumInstances);
+
+/**
+ ******************************************************************************
+ * @ingroup SalCtrl
+ * @description
+ * Get either sym, asym or cy instance
+ *****************************************************************************/
+CpaStatus Lac_GetCyInstancesByType(
+ const CpaAccelerationServiceType accelerationServiceType,
+ Cpa16U numInstances,
+ CpaInstanceHandle *pInstances);
+
#endif /*LAC_SAL_TYPES_CRYPTO_H_*/
diff --git a/sys/dev/qat/qat_api/common/include/sal_qat_cmn_msg.h b/sys/dev/qat/qat_api/common/include/sal_qat_cmn_msg.h
--- a/sys/dev/qat/qat_api/common/include/sal_qat_cmn_msg.h
+++ b/sys/dev/qat/qat_api/common/include/sal_qat_cmn_msg.h
@@ -1,5 +1,5 @@
/* SPDX-License-Identifier: BSD-3-Clause */
-/* Copyright(c) 2007-2022 Intel Corporation */
+/* Copyright(c) 2007-2025 Intel Corporation */
/**
*****************************************************************************
* @file sal_qat_cmn_msg.c
@@ -147,7 +147,7 @@
* section of the Request Msg.
*
* @param[in] pMsg Pointer to 128B Request Msg buffer.
- * @param[in] pContentDescInfo content descripter info.
+ * @param[in] pContentDescInfo content descriptor info.
*
* @return
* none
diff --git a/sys/dev/qat/qat_api/common/include/sal_types_compression.h b/sys/dev/qat/qat_api/common/include/sal_types_compression.h
--- a/sys/dev/qat/qat_api/common/include/sal_types_compression.h
+++ b/sys/dev/qat/qat_api/common/include/sal_types_compression.h
@@ -1,5 +1,5 @@
/* SPDX-License-Identifier: BSD-3-Clause */
-/* Copyright(c) 2007-2022 Intel Corporation */
+/* Copyright(c) 2007-2025 Intel Corporation */
/**
***************************************************************************
* @file sal_types_compression.h
@@ -24,6 +24,8 @@
#define DC_NUM_RX_RINGS (1)
#define DC_NUM_COMPRESSION_LEVELS (CPA_DC_L12)
+#define MAX_SGL_NUM 0x10000
+
/**
*****************************************************************************
* @ingroup SalCtrl
diff --git a/sys/dev/qat/qat_api/common/qat_comms/sal_qat_cmn_msg.c b/sys/dev/qat/qat_api/common/qat_comms/sal_qat_cmn_msg.c
--- a/sys/dev/qat/qat_api/common/qat_comms/sal_qat_cmn_msg.c
+++ b/sys/dev/qat/qat_api/common/qat_comms/sal_qat_cmn_msg.c
@@ -1,5 +1,5 @@
/* SPDX-License-Identifier: BSD-3-Clause */
-/* Copyright(c) 2007-2022 Intel Corporation */
+/* Copyright(c) 2007-2025 Intel Corporation */
/**
*****************************************************************************
* @file sal_qat_cmn_msg.h
@@ -145,7 +145,7 @@
* icp_qat_fw_comn_req_hdr_cd_pars_t section of the Request Msg.
*
* @param[in] pMsg Pointer to 128B Request Msg buffer.
- * @param[in] pContentDescInfo content descripter info.
+ * @param[in] pContentDescInfo content descriptor info.
*
* @return
* none
diff --git a/sys/dev/qat/qat_api/common/utils/lac_buffer_desc.c b/sys/dev/qat/qat_api/common/utils/lac_buffer_desc.c
--- a/sys/dev/qat/qat_api/common/utils/lac_buffer_desc.c
+++ b/sys/dev/qat/qat_api/common/utils/lac_buffer_desc.c
@@ -1,5 +1,5 @@
/* SPDX-License-Identifier: BSD-3-Clause */
-/* Copyright(c) 2007-2022 Intel Corporation */
+/* Copyright(c) 2007-2025 Intel Corporation */
/**
*****************************************************************************
* @file lac_buffer_desc.c Utility functions for setting buffer descriptors
@@ -31,7 +31,7 @@
/* Invalid physical address value */
#define INVALID_PHYSICAL_ADDRESS 0
-/* Indicates what type of buffer writes need to be perfomed */
+/* Indicates what type of buffer writes need to be performed */
typedef enum lac_buff_write_op_e {
WRITE_NORMAL = 0,
WRITE_AND_GET_SIZE,
@@ -153,7 +153,7 @@
/* This function implements the buffer description writes for the traditional
* APIs Zero length buffers are allowed, should be used for CHA-CHA-POLY and
- * GCM aglorithms */
+ * GCM algorithms */
CpaStatus
LacBuffDesc_BufferListDescWriteAndAllowZeroBuffer(
const CpaBufferList *pUserBufferList,
diff --git a/sys/dev/qat/qat_api/firmware/include/icp_qat_fw.h b/sys/dev/qat/qat_api/firmware/include/icp_qat_fw.h
--- a/sys/dev/qat/qat_api/firmware/include/icp_qat_fw.h
+++ b/sys/dev/qat/qat_api/firmware/include/icp_qat_fw.h
@@ -1,5 +1,5 @@
/* SPDX-License-Identifier: BSD-3-Clause */
-/* Copyright(c) 2007-2022 Intel Corporation */
+/* Copyright(c) 2007-2025 Intel Corporation */
/**
*****************************************************************************
* @file icp_qat_fw.h
@@ -241,13 +241,12 @@
* field */
uint32_t src_length;
- /** < Length of source flat buffer incase src buffer
+ /** < Length of source flat buffer in case src buffer
* type is flat */
uint32_t dst_length;
- /** < Length of source flat buffer incase dst buffer
+ /** < Length of source flat buffer in case dst buffer
* type is flat */
-
} icp_qat_fw_comn_req_mid_t;
/**
diff --git a/sys/dev/qat/qat_api/firmware/include/icp_qat_fw_comp.h b/sys/dev/qat/qat_api/firmware/include/icp_qat_fw_comp.h
--- a/sys/dev/qat/qat_api/firmware/include/icp_qat_fw_comp.h
+++ b/sys/dev/qat/qat_api/firmware/include/icp_qat_fw_comp.h
@@ -1,5 +1,5 @@
/* SPDX-License-Identifier: BSD-3-Clause */
-/* Copyright(c) 2007-2022 Intel Corporation */
+/* Copyright(c) 2007-2025 Intel Corporation */
/**
*****************************************************************************
* @file icp_qat_fw_comp.h
@@ -47,7 +47,6 @@
} icp_qat_fw_comp_cmd_id_t;
-
/*
* REQUEST FLAGS IN COMMON COMPRESSION
* In common message it is named as SERVICE SPECIFIC FLAGS.
@@ -65,7 +64,6 @@
* are don't care. i.e., these features are removed from QAT 2.0.
*/
-
/**< Flag usage */
#define ICP_QAT_FW_COMP_STATELESS_SESSION 0
@@ -410,7 +408,6 @@
((crc & ICP_QAT_FW_COMP_CRC_MODE_MASK) \
<< ICP_QAT_FW_COMP_CRC_MODE_BITPOS))
-
/*
* REQUEST FLAGS IN REQUEST PARAMETERS COMPRESSION
*
@@ -423,7 +420,6 @@
* +=====+-----+----- + --- + ----+-----+ --- + ----- + --- + ---- + -- + -- +
*/
-
/**
*****************************************************************************
* @ingroup icp_qat_fw_comp
@@ -446,18 +442,17 @@
ICP_QAT_FW_COMP_20_CMD_LZ4S_DECOMPRESS = 6,
/*!< LZ4S Decompress Request */
- ICP_QAT_FW_COMP_20_CMD_XP10_COMPRESS = 7,
- /*!< XP10 Compress Request -- Placeholder */
+ ICP_QAT_FW_COMP_20_CMD_RESERVED_1 = 7,
+ /*!< Placeholder */
- ICP_QAT_FW_COMP_20_CMD_XP10_DECOMPRESS = 8,
- /*!< XP10 Decompress Request -- Placeholder */
+ ICP_QAT_FW_COMP_20_CMD_RESERVED_2 = 8,
+ /*!< Placeholder */
ICP_QAT_FW_COMP_20_CMD_DELIMITER
/**< Delimiter type */
} icp_qat_fw_comp_20_cmd_id_t;
-
/*
* REQUEST FLAGS IN REQUEST PARAMETERS COMPRESSION
*
diff --git a/sys/dev/qat/qat_api/firmware/include/icp_qat_fw_la.h b/sys/dev/qat/qat_api/firmware/include/icp_qat_fw_la.h
--- a/sys/dev/qat/qat_api/firmware/include/icp_qat_fw_la.h
+++ b/sys/dev/qat/qat_api/firmware/include/icp_qat_fw_la.h
@@ -1,5 +1,5 @@
/* SPDX-License-Identifier: BSD-3-Clause */
-/* Copyright(c) 2007-2022 Intel Corporation */
+/* Copyright(c) 2007-2025 Intel Corporation */
/**
*****************************************************************************
* @file icp_qat_fw_la.h
@@ -451,7 +451,7 @@
* the case of partial processing. See the HLD for further details
*
* + ====== + ------------------------- + ----------------------- +
- * | Parial | Prefix Addr | Hash State Sz |
+ * | Partial| Prefix Addr | Hash State Sz |
* | State | | |
* + ====== + ------------------------- + ----------------------- +
* | FULL | Points to the prefix data | Prefix size as below. |
@@ -509,7 +509,7 @@
* is required
* @param ciphIV Cipher IV field contents
* @param ciphcfg Cipher/Auth Config offset type
- * @param partial Inidicate if the packet is a partial part
+ * @param partial Indicate if the packet is a partial part
*
*****************************************************************************/
#define ICP_QAT_FW_LA_FLAGS_BUILD(zuc_proto, \
@@ -1042,7 +1042,7 @@
/**< LW 27 */
uint8_t cipher_state_sz;
/**< State size in quad words of the cipher algorithm used in this
- * session. Set to zero if the algorithm doesnt provide any state */
+ * session. Set to zero if the algorithm doesn't provide any state */
uint8_t cipher_key_sz;
/**< Key size in quad words of the cipher algorithm used in this session
@@ -1179,7 +1179,7 @@
/**< LW 27 */
uint8_t cipher_state_sz;
/**< State size in quad words of the cipher algorithm used in this
- * session. Set to zero if the algorithm doesnt provide any state */
+ * session. Set to zero if the algorithm doesn't provide any state */
uint8_t cipher_key_sz;
/**< Key size in quad words of the cipher algorithm used in this session
diff --git a/sys/dev/qat/qat_api/firmware/include/icp_qat_fw_mmp.h b/sys/dev/qat/qat_api/firmware/include/icp_qat_fw_mmp.h
--- a/sys/dev/qat/qat_api/firmware/include/icp_qat_fw_mmp.h
+++ b/sys/dev/qat/qat_api/firmware/include/icp_qat_fw_mmp.h
@@ -1,9 +1,8 @@
/* SPDX-License-Identifier: BSD-3-Clause */
-/* Copyright(c) 2007-2022 Intel Corporation */
+/* Copyright(c) 2007-2025 Intel Corporation */
/* --- (Automatically generated (build v. 2.7), do not modify manually) --- */
-
/**
* @file icp_qat_fw_mmp.h
* @defgroup icp_qat_fw_mmp ICP QAT FW MMP Processing Definitions
@@ -12,10 +11,9 @@
* @brief
* This file documents the external interfaces that the QAT FW running
* on the QAT Acceleration Engine provides to clients wanting to
- * accelerate crypto assymetric applications
+ * accelerate crypto asymmetric applications
*/
-
#ifndef __ICP_QAT_FW_MMP__
#define __ICP_QAT_FW_MMP__
@@ -33,12 +31,12 @@
* Local constants
**************************************************************************
*/
-#define ICP_QAT_FW_PKE_INPUT_COUNT_MAX 7
+#define ICP_QAT_FW_PKE_INPUT_COUNT_MAX 7
/**< @ingroup icp_qat_fw_pke
- * Maximum number of input paramaters in all PKE request */
-#define ICP_QAT_FW_PKE_OUTPUT_COUNT_MAX 5
+ * Maximum number of input parameters in all PKE request */
+#define ICP_QAT_FW_PKE_OUTPUT_COUNT_MAX 5
/**< @ingroup icp_qat_fw_pke
- * Maximum number of output paramaters in all PKE request */
+ * Maximum number of output parameters in all PKE request */
/**
* @ingroup icp_qat_fw_mmp
diff --git a/sys/dev/qat/qat_api/firmware/include/icp_qat_fw_mmp_ids.h b/sys/dev/qat/qat_api/firmware/include/icp_qat_fw_mmp_ids.h
--- a/sys/dev/qat/qat_api/firmware/include/icp_qat_fw_mmp_ids.h
+++ b/sys/dev/qat/qat_api/firmware/include/icp_qat_fw_mmp_ids.h
@@ -1,6 +1,5 @@
/* SPDX-License-Identifier: BSD-3-Clause */
-/* Copyright(c) 2007-2022 Intel Corporation */
-
+/* Copyright(c) 2007-2025 Intel Corporation */
/* --- (Automatically generated (relocation v. 1.3), do not modify manually) --- */
@@ -11,7 +10,7 @@
* @brief
* This file documents the external interfaces that the QAT FW running
* on the QAT Acceleration Engine provides to clients wanting to
- * accelerate crypto assymetric applications
+ * accelerate crypto asymmetric applications
*/
#ifndef __ICP_QAT_FW_MMP_IDS__
diff --git a/sys/dev/qat/qat_api/firmware/include/icp_qat_fw_pke.h b/sys/dev/qat/qat_api/firmware/include/icp_qat_fw_pke.h
--- a/sys/dev/qat/qat_api/firmware/include/icp_qat_fw_pke.h
+++ b/sys/dev/qat/qat_api/firmware/include/icp_qat_fw_pke.h
@@ -1,5 +1,5 @@
/* SPDX-License-Identifier: BSD-3-Clause */
-/* Copyright(c) 2007-2022 Intel Corporation */
+/* Copyright(c) 2007-2025 Intel Corporation */
/**
* @file icp_qat_fw_pke.h
* @defgroup icp_qat_fw_pke ICP QAT FW PKE Processing Definitions
@@ -8,7 +8,7 @@
* @brief
* This file documents the external interfaces that the QAT FW running
* on the QAT Acceleration Engine provides to clients wanting to
- * accelerate crypto assymetric applications
+ * accelerate crypto asymmetric applications
*/
#ifndef _ICP_QAT_FW_PKE_
diff --git a/sys/dev/qat/qat_api/firmware/include/icp_qat_hw.h b/sys/dev/qat/qat_api/firmware/include/icp_qat_hw.h
--- a/sys/dev/qat/qat_api/firmware/include/icp_qat_hw.h
+++ b/sys/dev/qat/qat_api/firmware/include/icp_qat_hw.h
@@ -1,5 +1,5 @@
/* SPDX-License-Identifier: BSD-3-Clause */
-/* Copyright(c) 2007-2022 Intel Corporation */
+/* Copyright(c) 2007-2025 Intel Corporation */
/**
*****************************************************************************
* @file icp_qat_hw.h
@@ -163,7 +163,7 @@
#define QAT_AUTH_MODE_MASK 0xF
/**< @ingroup icp_qat_hw_defs
- * Four bit mask used for determing the Auth mode */
+ * Four bit mask used for determining the Auth mode */
#define QAT_AUTH_ALGO_BITPOS 0
/**< @ingroup icp_qat_hw_defs
@@ -1277,7 +1277,7 @@
#define QAT_TRNG_TEST_STATUS_MASK 0x1
/**< @ingroup icp_qat_hw_defs
- * Mask of one bit used to determine the TRNG Test staus */
+ * Mask of one bit used to determine the TRNG Test status */
#define QAT_TRNG_TEST_STATUS_BITPOS 1
/**< @ingroup icp_qat_hw_defs
diff --git a/sys/dev/qat/qat_api/firmware/include/icp_qat_hw_20_comp.h b/sys/dev/qat/qat_api/firmware/include/icp_qat_hw_20_comp.h
--- a/sys/dev/qat/qat_api/firmware/include/icp_qat_hw_20_comp.h
+++ b/sys/dev/qat/qat_api/firmware/include/icp_qat_hw_20_comp.h
@@ -1,5 +1,5 @@
/* SPDX-License-Identifier: BSD-3-Clause */
-/* Copyright(c) 2007-2022 Intel Corporation */
+/* Copyright(c) 2007-2025 Intel Corporation */
/**
*****************************************************************************
* @file icp_qat_hw_2x_comp.h
@@ -17,7 +17,6 @@
#include "icp_qat_hw_20_comp_defs.h" /* For HW definitions */
#include "icp_qat_fw.h" /* For Set Field Macros. */
-
#define BYTE_SWAP_32 __builtin_bswap32
/**
diff --git a/sys/dev/qat/qat_api/include/cpa.h b/sys/dev/qat/qat_api/include/cpa.h
--- a/sys/dev/qat/qat_api/include/cpa.h
+++ b/sys/dev/qat/qat_api/include/cpa.h
@@ -1,14 +1,14 @@
/***************************************************************************
*
* BSD LICENSE
- *
- * Copyright(c) 2007-2023 Intel Corporation. All rights reserved.
+ *
+ * Copyright(c) 2007-2025 Intel Corporation. All rights reserved.
* All rights reserved.
- *
+ *
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
- *
+ *
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* * Redistributions in binary form must reproduce the above copyright
@@ -18,7 +18,7 @@
* * Neither the name of Intel Corporation nor the names of its
* contributors may be used to endorse or promote products derived
* from this software without specific prior written permission.
- *
+ *
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
@@ -30,7 +30,7 @@
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
+ *
*
***************************************************************************/
diff --git a/sys/dev/qat/qat_api/include/cpa_dev.h b/sys/dev/qat/qat_api/include/cpa_dev.h
--- a/sys/dev/qat/qat_api/include/cpa_dev.h
+++ b/sys/dev/qat/qat_api/include/cpa_dev.h
@@ -1,14 +1,14 @@
-/****************************************************************************
+/***************************************************************************
*
* BSD LICENSE
- *
- * Copyright(c) 2007-2023 Intel Corporation. All rights reserved.
+ *
+ * Copyright(c) 2007-2025 Intel Corporation. All rights reserved.
* All rights reserved.
- *
+ *
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
- *
+ *
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* * Redistributions in binary form must reproduce the above copyright
@@ -18,7 +18,7 @@
* * Neither the name of Intel Corporation nor the names of its
* contributors may be used to endorse or promote products derived
* from this software without specific prior written permission.
- *
+ *
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
@@ -30,7 +30,7 @@
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
+ *
*
***************************************************************************/
@@ -101,9 +101,9 @@
CpaBoolean dcEnabled;
/**< Compression service enabled */
CpaBoolean cySymEnabled;
- /**< Symetric crypto service enabled */
+ /**< Symmetric crypto service enabled */
CpaBoolean cyAsymEnabled;
- /**< Asymetric crypto service enabled */
+ /**< Asymmetric crypto service enabled */
CpaBoolean inlineEnabled;
/**< Inline service enabled */
Cpa32U deviceMemorySizeAvailable;
diff --git a/sys/dev/qat/qat_api/include/cpa_types.h b/sys/dev/qat/qat_api/include/cpa_types.h
--- a/sys/dev/qat/qat_api/include/cpa_types.h
+++ b/sys/dev/qat/qat_api/include/cpa_types.h
@@ -1,14 +1,14 @@
/***************************************************************************
*
* BSD LICENSE
- *
- * Copyright(c) 2007-2023 Intel Corporation. All rights reserved.
+ *
+ * Copyright(c) 2007-2025 Intel Corporation. All rights reserved.
* All rights reserved.
- *
+ *
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
- *
+ *
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* * Redistributions in binary form must reproduce the above copyright
@@ -18,7 +18,7 @@
* * Neither the name of Intel Corporation nor the names of its
* contributors may be used to endorse or promote products derived
* from this software without specific prior written permission.
- *
+ *
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
@@ -30,7 +30,7 @@
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
+ *
*
***************************************************************************/
diff --git a/sys/dev/qat/qat_api/include/dc/cpa_dc.h b/sys/dev/qat/qat_api/include/dc/cpa_dc.h
--- a/sys/dev/qat/qat_api/include/dc/cpa_dc.h
+++ b/sys/dev/qat/qat_api/include/dc/cpa_dc.h
@@ -1,14 +1,14 @@
-/****************************************************************************
+/***************************************************************************
*
* BSD LICENSE
- *
- * Copyright(c) 2007-2023 Intel Corporation. All rights reserved.
+ *
+ * Copyright(c) 2007-2025 Intel Corporation. All rights reserved.
* All rights reserved.
- *
+ *
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
- *
+ *
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* * Redistributions in binary form must reproduce the above copyright
@@ -18,7 +18,7 @@
* * Neither the name of Intel Corporation nor the names of its
* contributors may be used to endorse or promote products derived
* from this software without specific prior written permission.
- *
+ *
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
@@ -30,7 +30,7 @@
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
+ *
*
***************************************************************************/
@@ -135,6 +135,7 @@
(CPA_DC_API_VERSION_NUM_MAJOR == major && \
CPA_DC_API_VERSION_NUM_MINOR < minor))
+
/**
*****************************************************************************
* @ingroup cpaDc
@@ -999,7 +1000,7 @@
/**< CRC32 calculated on the input buffer during compression
* requests and on the output buffer during decompression requests. */
Cpa32U adler32;
- /**< ADLER32 calculated on the input buffer during compression
+ /**< Adler32 calculated on the input buffer during compression
* requests and on the output buffer during decompression requests. */
CpaIntegrityCrc integrityCrc;
/**< 32bit Integrity CRCs */
@@ -1289,7 +1290,7 @@
* This function will reset the internal xxHash state maintained within a
* session. This would be used in conjunction with the
* CpaDcSessionSetupData.accumulateXXHash flag being set to TRUE for this
- * session. It will enable reseting (reinitialising) just the xxHash
+ * session. It will enable resetting (reinitialising) just the xxHash
* calculation back to the state when the session was first initialised.
*
* @context
@@ -1761,7 +1762,7 @@
* session, the checksum passed to cpaDcCompressData should be set to the
* checksum value produced by the previous call to cpaDcCompressData().
* When the last block of input data is passed to cpaDcCompressData(), the
- * flush flag should be set to CP_DC_FLUSH_FINAL. This will cause the BFINAL
+ * flush flag should be set to CPA_DC_FLUSH_FINAL. This will cause the BFINAL
* bit to be set in a deflate stream. It is the responsibility of the calling
* application to maintain overall lengths across the stateless requests
* and to pass the checksum produced by one request into the next request.
@@ -2286,7 +2287,7 @@
* - Content size = 0
* - Dictionary ID = 0
* - Header checksum = 1 byte representing the second byte of the
- * XXH32 of the frame decriptor field.
+ * XXH32 of the frame descriptor field.
*
* The counter parameter will be set to the number of bytes added to the
* buffer. The pData will be not be changed.
diff --git a/sys/dev/qat/qat_api/include/dc/cpa_dc_bp.h b/sys/dev/qat/qat_api/include/dc/cpa_dc_bp.h
--- a/sys/dev/qat/qat_api/include/dc/cpa_dc_bp.h
+++ b/sys/dev/qat/qat_api/include/dc/cpa_dc_bp.h
@@ -1,14 +1,14 @@
-/****************************************************************************
+/***************************************************************************
*
* BSD LICENSE
- *
- * Copyright(c) 2007-2023 Intel Corporation. All rights reserved.
+ *
+ * Copyright(c) 2007-2025 Intel Corporation. All rights reserved.
* All rights reserved.
- *
+ *
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
- *
+ *
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* * Redistributions in binary form must reproduce the above copyright
@@ -18,7 +18,7 @@
* * Neither the name of Intel Corporation nor the names of its
* contributors may be used to endorse or promote products derived
* from this software without specific prior written permission.
- *
+ *
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
@@ -30,7 +30,7 @@
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
+ *
*
***************************************************************************/
diff --git a/sys/dev/qat/qat_api/include/dc/cpa_dc_chain.h b/sys/dev/qat/qat_api/include/dc/cpa_dc_chain.h
--- a/sys/dev/qat/qat_api/include/dc/cpa_dc_chain.h
+++ b/sys/dev/qat/qat_api/include/dc/cpa_dc_chain.h
@@ -1,8 +1,8 @@
-/****************************************************************************
+/***************************************************************************
*
* BSD LICENSE
*
- * Copyright(c) 2007-2023 Intel Corporation. All rights reserved.
+ * Copyright(c) 2007-2025 Intel Corporation. All rights reserved.
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
@@ -77,21 +77,21 @@
*****************************************************************************/
typedef enum _CpaDcChainOperations
{
- CPA_DC_CHAIN_COMPRESS_THEN_HASH,
+ CPA_DC_CHAIN_COMPRESS_THEN_HASH = 0,
/**< 2 operations for chaining:
* 1st operation is to perform compression on plain text
* 2nd operation is to perform hash on compressed text
**< 2 entries in CpaDcChainSessionSetupData array:
* 1st entry is for compression setup data
* 2nd entry is for hash setup data*/
- CPA_DC_CHAIN_COMPRESS_THEN_ENCRYPT,
+ CPA_DC_CHAIN_COMPRESS_THEN_ENCRYPT = 1,
/**< 2 operations for chaining:
* 1st operation is to perform compression on plain text
* 2nd operation is to perform encryption on compressed text
**< 2 entries in CpaDcChainSessionSetupData array:
* 1st entry is for compression setup data
* 2nd entry is for encryption setup data*/
- CPA_DC_CHAIN_COMPRESS_THEN_HASH_ENCRYPT,
+ CPA_DC_CHAIN_COMPRESS_THEN_HASH_ENCRYPT = 2,
/**< 2 operations for chaining:
* 1st operation is to perform compression on plain text
* 2nd operation is to perform hash on compressed text and
@@ -99,7 +99,7 @@
**< 2 entries in CpaDcChainSessionSetupData array:
* 1st entry is for compression setup data
* 2nd entry is for hash and encryption setup data*/
- CPA_DC_CHAIN_COMPRESS_THEN_ENCRYPT_HASH,
+ CPA_DC_CHAIN_COMPRESS_THEN_ENCRYPT_HASH = 3,
/**< 2 operations for chaining:
* 1st operation is to perform compression on plain text
* 2nd operation is to perform encryption on compressed text and
@@ -107,35 +107,35 @@
**< 2 entries in CpaDcChainSessionSetupData array:
* 1st entry is for compression setup data
* 2nd entry is for encryption and hash setup data*/
- CPA_DC_CHAIN_COMPRESS_THEN_AEAD,
+ CPA_DC_CHAIN_COMPRESS_THEN_AEAD = 4,
/**< 2 operations for chaining:
* 1st operation is to perform compression on plain text
* 2nd operation is to perform AEAD encryption on compressed text
**< 2 entries in CpaDcChainSessionSetupData array:
* 1st entry is for compression setup data
* 2nd entry is for AEAD encryption setup data*/
- CPA_DC_CHAIN_HASH_THEN_COMPRESS,
+ CPA_DC_CHAIN_HASH_THEN_COMPRESS = 5,
/**< 2 operations for chaining:
* 1st operation is to perform hash on plain text
* 2nd operation is to perform compression on plain text
**< 2 entries in CpaDcChainSessionSetupData array:
* 1st entry is for hash setup data
* 2nd entry is for compression setup data*/
- CPA_DC_CHAIN_HASH_VERIFY_THEN_DECOMPRESS,
+ CPA_DC_CHAIN_HASH_VERIFY_THEN_DECOMPRESS = 6,
/**< 2 operations for chaining:
* 1st operation is to perform hash verify on compressed text
* 2nd operation is to perform decompression on compressed text
**< 2 entries in CpaDcChainSessionSetupData array:
* 1st entry is for hash setup data
* 2nd entry is for decompression setup data*/
- CPA_DC_CHAIN_DECRYPT_THEN_DECOMPRESS,
+ CPA_DC_CHAIN_DECRYPT_THEN_DECOMPRESS = 7,
/**< 2 operations for chaining:
* 1st operation is to perform decryption on compressed & encrypted text
* 2nd operation is to perform decompression on compressed text
**< 2 entries in CpaDcChainSessionSetupData array:
* 1st entry is for decryption setup data
* 2nd entry is for decompression setup data*/
- CPA_DC_CHAIN_HASH_VERIFY_DECRYPT_THEN_DECOMPRESS,
+ CPA_DC_CHAIN_HASH_VERIFY_DECRYPT_THEN_DECOMPRESS = 8,
/**< 2 operations for chaining:
* 1st operation is to perform hash verify on compressed & encrypted text
* and decryption on compressed & encrypted text
@@ -143,7 +143,7 @@
**< 2 entries in CpaDcChainSessionSetupData array:
* 1st entry is for hash and decryption setup data
* 2nd entry is for decompression setup data*/
- CPA_DC_CHAIN_DECRYPT_HASH_VERIFY_THEN_DECOMPRESS,
+ CPA_DC_CHAIN_DECRYPT_HASH_VERIFY_THEN_DECOMPRESS = 9,
/**< 2 operations for chaining:
* 1st operation is to perform decryption on compressed & encrypted text
* and hash verify on compressed text
@@ -151,25 +151,25 @@
**< 2 entries in CpaDcChainSessionSetupData array:
* 1st entry is for decryption and hash setup data
* 2nd entry is for decompression setup data*/
- CPA_DC_CHAIN_AEAD_THEN_DECOMPRESS,
+ CPA_DC_CHAIN_AEAD_THEN_DECOMPRESS = 10,
/**< 2 operations for chaining:
* 1st operation is to perform AEAD decryption on compressed & encrypted text
* 2nd operation is to perform decompression on compressed text
**< 2 entries in CpaDcChainSessionSetupData array:
* 1st entry is for AEAD decryption setup data
* 2nd entry is for decompression setup data*/
- CPA_DC_CHAIN_DECOMPRESS_THEN_HASH_VERIFY,
+ CPA_DC_CHAIN_DECOMPRESS_THEN_HASH_VERIFY = 11,
/**< 2 operations for chaining:
* 1st operation is to perform decompression on compressed text
* 2nd operation is to perform hash verify on plain text
**< 2 entries in CpaDcChainSessionSetupData array:
* 1st entry is for decompression setup data
* 2nd entry is for hash setup data*/
- CPA_DC_CHAIN_COMPRESS_THEN_AEAD_THEN_HASH,
+ CPA_DC_CHAIN_COMPRESS_THEN_AEAD_THEN_HASH = 12,
/**< 3 operations for chaining:
* 1st operation is to perform compression on plain text
- * 2nd operation is to perform AEAD encryption compressed text
- * 3rd operation is to perfom hash on compressed & encrypted text
+ * 2nd operation is to perform AEAD encryption on compressed text
+ * 3rd operation is to perform hash on compressed & encrypted text
**< 3 entries in CpaDcChainSessionSetupData array:
* 1st entry is for compression setup data
* 2nd entry is for AEAD encryption setup data
@@ -187,9 +187,9 @@
*****************************************************************************/
typedef enum _CpaDcChainSessionType
{
- CPA_DC_CHAIN_COMPRESS_DECOMPRESS,
+ CPA_DC_CHAIN_COMPRESS_DECOMPRESS = 0,
/**< Indicate the session is for compression or decompression */
- CPA_DC_CHAIN_SYMMETRIC_CRYPTO,
+ CPA_DC_CHAIN_SYMMETRIC_CRYPTO
/**< Indicate the session is for symmetric crypto */
} CpaDcChainSessionType;
@@ -210,7 +210,7 @@
CpaDcSessionSetupData *pDcSetupData;
/**< Pointer to compression session setup data */
CpaCySymSessionSetupData *pCySetupData;
- /**< Pointer to symmectric crypto session setup data */
+ /**< Pointer to symmetric crypto session setup data */
};
} CpaDcChainSessionSetupData;
@@ -230,7 +230,7 @@
CpaDcOpData *pDcOp;
/**< Pointer to compression operation data */
CpaCySymOpData *pCySymOp;
- /**< Pointer to symmectric crypto operation data */
+ /**< Pointer to symmetric crypto operation data */
};
} CpaDcChainOpData;
@@ -259,7 +259,7 @@
Cpa32U crc32;
/**< crc32 checksum produced by chaining operations */
Cpa32U adler32;
- /**< adler32 checksum produced by chaining operations */
+ /**< Adler32 checksum produced by chaining operations */
}CpaDcChainRqResults;
/**
@@ -366,8 +366,6 @@
* @retval CPA_STATUS_FAIL Function failed.
* @retval CPA_STATUS_INVALID_PARAM Invalid parameter passed in.
* @retval CPA_STATUS_RESOURCE Error related to system resources.
- * @retval CPA_STATUS_RESTARTING API implementation is restarting. Resubmit
- * the request.
* @retval CPA_STATUS_UNSUPPORTED Function is not supported.
*
* @pre
@@ -563,7 +561,7 @@
* @param[in] pChainOpData Pointer to an array of CpaDcChainOpData
* structures. There should be numOpDatas
* entries in the array.
- * @param[in,out] pResults Pointer to CpaDcChainRqResults structure.
+ * @param[in,out] pResults Pointer to CpaDcChainRqResults
* @param[in] callbackTag User supplied value to help correlate
* the callback with its associated request.
*
@@ -593,9 +591,9 @@
* -# The order of entries in pChainOpData[] must be consistent with the
* order of operations described for the chaining operation in
* CpaDcChainOperations.
- * As an example, for CPA_DC_CHAIN_COMPRESS_THEN_ENCRYPT, pChainOpData[0]
- * must contain the compression operation data and pChainOpData[1] must
- * contain the encryption operation data.
+ * As an example, for CPA_DC_CHAIN_HASH_THEN_COMPRESS, pChainOpData[0]
+ * must contain the hash operation data and pChainOpData[1] must
+ * contain the compress operation data.
*
* -# The numOpDatas for each chaining operation are specified in the
* comments for the operation in CpaDcChainOperations.
@@ -610,8 +608,6 @@
* CPA_DC_CHAIN_SYMMETRIC_CRYPTO and pChainOpData[]->pCySymOp should
* point to a CpaCySymOpData structure.
*
- * -# Stateful compression is not supported for chaining.
- *
* -# Partial packet processing is not supported.
*
* This function has identical buffer processing rules as
diff --git a/sys/dev/qat/qat_api/include/dc/cpa_dc_dp.h b/sys/dev/qat/qat_api/include/dc/cpa_dc_dp.h
--- a/sys/dev/qat/qat_api/include/dc/cpa_dc_dp.h
+++ b/sys/dev/qat/qat_api/include/dc/cpa_dc_dp.h
@@ -1,14 +1,14 @@
/***************************************************************************
*
* BSD LICENSE
- *
- * Copyright(c) 2007-2023 Intel Corporation. All rights reserved.
+ *
+ * Copyright(c) 2007-2025 Intel Corporation. All rights reserved.
* All rights reserved.
- *
+ *
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
- *
+ *
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* * Redistributions in binary form must reproduce the above copyright
@@ -18,7 +18,7 @@
* * Neither the name of Intel Corporation nor the names of its
* contributors may be used to endorse or promote products derived
* from this software without specific prior written permission.
- *
+ *
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
@@ -30,7 +30,7 @@
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
+ *
*
***************************************************************************/
diff --git a/sys/dev/qat/qat_api/include/icp_buffer_desc.h b/sys/dev/qat/qat_api/include/icp_buffer_desc.h
--- a/sys/dev/qat/qat_api/include/icp_buffer_desc.h
+++ b/sys/dev/qat/qat_api/include/icp_buffer_desc.h
@@ -1,5 +1,6 @@
/* SPDX-License-Identifier: BSD-3-Clause */
-/* Copyright(c) 2007-2022 Intel Corporation */
+/* Copyright(c) 2007-2025 Intel Corporation */
+
/**
*****************************************************************************
* @file icp_buffer_desc.h
@@ -20,7 +21,7 @@
typedef Cpa64U icp_qat_addr_width_t; // hi32 first, lo32 second
-// Alignement constraint of the buffer list.
+/* Alignment constraint of the buffer list. */
#define ICP_DESCRIPTOR_ALIGNMENT_BYTES 8
/**
@@ -31,7 +32,7 @@
*
* @description
* A QAT friendly buffer descriptor.
- * All buffer descriptor described in this structure are physcial
+ * All buffer descriptor described in this structure are physical
* and are 64 bit wide.
*
* Updates in the CpaFlatBuffer should be also reflected in this
@@ -55,7 +56,7 @@
*
* @description
* A QAT friendly buffer descriptor.
- * All buffer descriptor described in this structure are physcial
+ * All buffer descriptor described in this structure are physical
* and are 64 bit wide.
*
* Updates in the CpaBufferList should be also reflected in this structure
diff --git a/sys/dev/qat/qat_api/include/icp_sal_user.h b/sys/dev/qat/qat_api/include/icp_sal_user.h
--- a/sys/dev/qat/qat_api/include/icp_sal_user.h
+++ b/sys/dev/qat/qat_api/include/icp_sal_user.h
@@ -1,5 +1,5 @@
/* SPDX-License-Identifier: BSD-3-Clause */
-/* Copyright(c) 2007-2022 Intel Corporation */
+/* Copyright(c) 2007-2025 Intel Corporation */
/**
***************************************************************************
* @file icp_sal_user.h
@@ -75,7 +75,7 @@
*
* @param[in] limitDevAccess Specifies if the address space is limited
* to one device (true) or if it spans
- * accross multiple devices.
+ * across multiple devices.
*
* @retval CPA_STATUS_SUCCESS No error
* @retval CPA_STATUS_FAIL Operation failed. In this case user
@@ -478,7 +478,7 @@
* @assumptions
* None
* @sideEffects
- * In case a device has beed stoped or restarted the application
+ * In case a device has been stopped or restarted the application
* will get restarting/stop/shutdown events
* @reentrant
* No
diff --git a/sys/dev/qat/qat_api/include/icp_sal_versions.h b/sys/dev/qat/qat_api/include/icp_sal_versions.h
--- a/sys/dev/qat/qat_api/include/icp_sal_versions.h
+++ b/sys/dev/qat/qat_api/include/icp_sal_versions.h
@@ -1,5 +1,5 @@
/* SPDX-License-Identifier: BSD-3-Clause */
-/* Copyright(c) 2007-2022 Intel Corporation */
+/* Copyright(c) 2007-2025 Intel Corporation */
/**
***************************************************************************
* @file icp_sal_versions.h
@@ -26,7 +26,7 @@
/* Part name and number of the accelerator device */
#define SAL_INFO2_DRIVER_SW_VERSION_MAJ_NUMBER 3
-#define SAL_INFO2_DRIVER_SW_VERSION_MIN_NUMBER 14
+#define SAL_INFO2_DRIVER_SW_VERSION_MIN_NUMBER 15
#define SAL_INFO2_DRIVER_SW_VERSION_PATCH_NUMBER 0
/**
diff --git a/sys/dev/qat/qat_api/include/lac/cpa_cy_common.h b/sys/dev/qat/qat_api/include/lac/cpa_cy_common.h
--- a/sys/dev/qat/qat_api/include/lac/cpa_cy_common.h
+++ b/sys/dev/qat/qat_api/include/lac/cpa_cy_common.h
@@ -1,14 +1,14 @@
/***************************************************************************
*
* BSD LICENSE
- *
- * Copyright(c) 2007-2023 Intel Corporation. All rights reserved.
+ *
+ * Copyright(c) 2007-2025 Intel Corporation. All rights reserved.
* All rights reserved.
- *
+ *
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
- *
+ *
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* * Redistributions in binary form must reproduce the above copyright
@@ -18,7 +18,7 @@
* * Neither the name of Intel Corporation nor the names of its
* contributors may be used to endorse or promote products derived
* from this software without specific prior written permission.
- *
+ *
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
@@ -30,7 +30,7 @@
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
+ *
*
***************************************************************************/
diff --git a/sys/dev/qat/qat_api/include/lac/cpa_cy_dh.h b/sys/dev/qat/qat_api/include/lac/cpa_cy_dh.h
--- a/sys/dev/qat/qat_api/include/lac/cpa_cy_dh.h
+++ b/sys/dev/qat/qat_api/include/lac/cpa_cy_dh.h
@@ -1,14 +1,14 @@
/***************************************************************************
*
* BSD LICENSE
- *
- * Copyright(c) 2007-2023 Intel Corporation. All rights reserved.
+ *
+ * Copyright(c) 2007-2025 Intel Corporation. All rights reserved.
* All rights reserved.
- *
+ *
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
- *
+ *
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* * Redistributions in binary form must reproduce the above copyright
@@ -18,7 +18,7 @@
* * Neither the name of Intel Corporation nor the names of its
* contributors may be used to endorse or promote products derived
* from this software without specific prior written permission.
- *
+ *
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
@@ -30,7 +30,7 @@
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
+ *
*
***************************************************************************/
diff --git a/sys/dev/qat/qat_api/include/lac/cpa_cy_dsa.h b/sys/dev/qat/qat_api/include/lac/cpa_cy_dsa.h
--- a/sys/dev/qat/qat_api/include/lac/cpa_cy_dsa.h
+++ b/sys/dev/qat/qat_api/include/lac/cpa_cy_dsa.h
@@ -1,14 +1,14 @@
/***************************************************************************
*
* BSD LICENSE
- *
- * Copyright(c) 2007-2023 Intel Corporation. All rights reserved.
+ *
+ * Copyright(c) 2007-2025 Intel Corporation. All rights reserved.
* All rights reserved.
- *
+ *
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
- *
+ *
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* * Redistributions in binary form must reproduce the above copyright
@@ -18,7 +18,7 @@
* * Neither the name of Intel Corporation nor the names of its
* contributors may be used to endorse or promote products derived
* from this software without specific prior written permission.
- *
+ *
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
@@ -30,7 +30,7 @@
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
+ *
*
***************************************************************************/
diff --git a/sys/dev/qat/qat_api/include/lac/cpa_cy_ec.h b/sys/dev/qat/qat_api/include/lac/cpa_cy_ec.h
--- a/sys/dev/qat/qat_api/include/lac/cpa_cy_ec.h
+++ b/sys/dev/qat/qat_api/include/lac/cpa_cy_ec.h
@@ -1,14 +1,14 @@
/***************************************************************************
*
* BSD LICENSE
- *
- * Copyright(c) 2007-2023 Intel Corporation. All rights reserved.
+ *
+ * Copyright(c) 2007-2025 Intel Corporation. All rights reserved.
* All rights reserved.
- *
+ *
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
- *
+ *
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* * Redistributions in binary form must reproduce the above copyright
@@ -18,7 +18,7 @@
* * Neither the name of Intel Corporation nor the names of its
* contributors may be used to endorse or promote products derived
* from this software without specific prior written permission.
- *
+ *
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
@@ -30,7 +30,7 @@
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
+ *
*
***************************************************************************/
@@ -266,7 +266,7 @@
*
* @description
* This union allows for the characterisation of different curve types
- * encapsulted in one data type. The intention is that new curve types
+ * encapsulated in one data type. The intention is that new curve types
* will be added in the future.
*
* @note
@@ -451,7 +451,7 @@
*****************************************************************************
* @ingroup cpaCyEc
* EC Point Multiplication Operation Data for Edwards or
- * Montgomery curves as specificied in RFC#7748.
+ * Montgomery curves as specified in RFC#7748.
*
* @description
* This structure contains the operation data for the
@@ -486,11 +486,11 @@
/**< field type for the operation */
CpaBoolean generator;
/**< True if the operation is a generator multiplication (kG)
- * False if it is a variable point multiplcation (kP). */
+ * False if it is a variable point multiplication (kP). */
CpaFlatBuffer k;
/**< k scalar multiplier for the operation */
CpaFlatBuffer x;
- /**< x value. Used in scalar varable point multiplication operations.
+ /**< x value. Used in scalar variable point multiplication operations.
* Not required if the generator is True. Must be NULL if not required.
* The size of the buffer MUST be 32B for 25519 curves and 64B for 448
* curves */
diff --git a/sys/dev/qat/qat_api/include/lac/cpa_cy_ecdh.h b/sys/dev/qat/qat_api/include/lac/cpa_cy_ecdh.h
--- a/sys/dev/qat/qat_api/include/lac/cpa_cy_ecdh.h
+++ b/sys/dev/qat/qat_api/include/lac/cpa_cy_ecdh.h
@@ -1,14 +1,14 @@
/***************************************************************************
*
* BSD LICENSE
- *
- * Copyright(c) 2007-2023 Intel Corporation. All rights reserved.
+ *
+ * Copyright(c) 2007-2025 Intel Corporation. All rights reserved.
* All rights reserved.
- *
+ *
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
- *
+ *
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* * Redistributions in binary form must reproduce the above copyright
@@ -18,7 +18,7 @@
* * Neither the name of Intel Corporation nor the names of its
* contributors may be used to endorse or promote products derived
* from this software without specific prior written permission.
- *
+ *
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
@@ -30,7 +30,7 @@
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
+ *
*
***************************************************************************/
diff --git a/sys/dev/qat/qat_api/include/lac/cpa_cy_ecdsa.h b/sys/dev/qat/qat_api/include/lac/cpa_cy_ecdsa.h
--- a/sys/dev/qat/qat_api/include/lac/cpa_cy_ecdsa.h
+++ b/sys/dev/qat/qat_api/include/lac/cpa_cy_ecdsa.h
@@ -1,14 +1,14 @@
/***************************************************************************
*
* BSD LICENSE
- *
- * Copyright(c) 2007-2023 Intel Corporation. All rights reserved.
+ *
+ * Copyright(c) 2007-2025 Intel Corporation. All rights reserved.
* All rights reserved.
- *
+ *
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
- *
+ *
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* * Redistributions in binary form must reproduce the above copyright
@@ -18,7 +18,7 @@
* * Neither the name of Intel Corporation nor the names of its
* contributors may be used to endorse or promote products derived
* from this software without specific prior written permission.
- *
+ *
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
@@ -30,7 +30,7 @@
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
+ *
*
***************************************************************************/
diff --git a/sys/dev/qat/qat_api/include/lac/cpa_cy_im.h b/sys/dev/qat/qat_api/include/lac/cpa_cy_im.h
--- a/sys/dev/qat/qat_api/include/lac/cpa_cy_im.h
+++ b/sys/dev/qat/qat_api/include/lac/cpa_cy_im.h
@@ -1,14 +1,14 @@
/***************************************************************************
*
* BSD LICENSE
- *
- * Copyright(c) 2007-2023 Intel Corporation. All rights reserved.
+ *
+ * Copyright(c) 2007-2025 Intel Corporation. All rights reserved.
* All rights reserved.
- *
+ *
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
- *
+ *
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* * Redistributions in binary form must reproduce the above copyright
@@ -18,7 +18,7 @@
* * Neither the name of Intel Corporation nor the names of its
* contributors may be used to endorse or promote products derived
* from this software without specific prior written permission.
- *
+ *
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
@@ -30,7 +30,7 @@
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
+ *
*
***************************************************************************/
diff --git a/sys/dev/qat/qat_api/include/lac/cpa_cy_key.h b/sys/dev/qat/qat_api/include/lac/cpa_cy_key.h
--- a/sys/dev/qat/qat_api/include/lac/cpa_cy_key.h
+++ b/sys/dev/qat/qat_api/include/lac/cpa_cy_key.h
@@ -1,14 +1,14 @@
/***************************************************************************
*
* BSD LICENSE
- *
- * Copyright(c) 2007-2023 Intel Corporation. All rights reserved.
+ *
+ * Copyright(c) 2007-2025 Intel Corporation. All rights reserved.
* All rights reserved.
- *
+ *
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
- *
+ *
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* * Redistributions in binary form must reproduce the above copyright
@@ -18,7 +18,7 @@
* * Neither the name of Intel Corporation nor the names of its
* contributors may be used to endorse or promote products derived
* from this software without specific prior written permission.
- *
+ *
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
@@ -30,7 +30,7 @@
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
+ *
*
***************************************************************************/
diff --git a/sys/dev/qat/qat_api/include/lac/cpa_cy_kpt.h b/sys/dev/qat/qat_api/include/lac/cpa_cy_kpt.h
--- a/sys/dev/qat/qat_api/include/lac/cpa_cy_kpt.h
+++ b/sys/dev/qat/qat_api/include/lac/cpa_cy_kpt.h
@@ -2,7 +2,7 @@
*
* BSD LICENSE
*
- * Copyright(c) 2007-2023 Intel Corporation. All rights reserved.
+ * Copyright(c) 2007-2025 Intel Corporation. All rights reserved.
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
@@ -96,14 +96,14 @@
typedef enum CpaCyKptKeyManagementStatus_t
{
CPA_CY_KPT_SUCCESS = 0,
- /**< Generic success status for all KPT wrapping key handling functions*/
+ /**< Generic success status for all KPT wrapping key handling functions */
CPA_CY_KPT_LOADKEY_FAIL_QUOTA_EXCEEDED_PER_VFID,
- /**< SWK count exceeds the configured maxmium value per VFID*/
+ /**< SWK count exceeds the configured maximum value per VFID */
CPA_CY_KPT_LOADKEY_FAIL_QUOTA_EXCEEDED_PER_PASID,
- /**< SWK count exceeds the configured maxmium value per PASID*/
+ /**< SWK count exceeds the configured maximum value per PASID */
CPA_CY_KPT_LOADKEY_FAIL_QUOTA_EXCEEDED,
- /**< SWK count exceeds the configured maxmium value when not scoped to
- * VFID or PASID*/
+ /**< SWK count exceeds the configured maximum value when not scoped to
+ * VFID or PASID */
CPA_CY_KPT_SWK_FAIL_NOT_FOUND,
/**< Unable to find SWK entry by handle */
CPA_CY_KPT_FAILED,
@@ -277,7 +277,7 @@
* describing the RSA private key. The quintuple of p, q, dP, dQ, and qInv
* (explained below and in the spec) are required for the second
* representation. For KPT the parameters are Encrypted
- * with the assoicated SWK as follows:
+ * with the associated SWK as follows:
* Encrypt - AES-256-GCM (Key, AAD, Input)
* "||" - denotes concatenation
* Key = SWK
@@ -584,11 +584,11 @@
* enumerate type CpaCyKptKeyManagementStatus
* CPA_CY_KPT_SUCCESS Key Loaded successfully
* CPA_CY_KPT_LOADKEY_FAIL_QUOTA_EXCEEDED_PER_VFID
- * SWK count exceeds the configured maxmium value per VFID
+ * SWK count exceeds the configured maximum value per VFID
* CPA_CY_KPT_LOADKEY_FAIL_QUOTA_EXCEEDED_PER_PASID
- * SWK count exceeds the configured maxmium value per PASID
+ * SWK count exceeds the configured maximum value per PASID
* CPA_CY_KPT_LOADKEY_FAIL_QUOTA_EXCEEDED
- * SWK count exceeds the configured maxmium value when not scoped to
+ * SWK count exceeds the configured maximum value when not scoped to
* VFID or PASID
* CPA_CY_KPT_FAILED Operation failed due to unspecified reason
*
diff --git a/sys/dev/qat/qat_api/include/lac/cpa_cy_ln.h b/sys/dev/qat/qat_api/include/lac/cpa_cy_ln.h
--- a/sys/dev/qat/qat_api/include/lac/cpa_cy_ln.h
+++ b/sys/dev/qat/qat_api/include/lac/cpa_cy_ln.h
@@ -1,14 +1,14 @@
/***************************************************************************
*
* BSD LICENSE
- *
- * Copyright(c) 2007-2023 Intel Corporation. All rights reserved.
+ *
+ * Copyright(c) 2007-2025 Intel Corporation. All rights reserved.
* All rights reserved.
- *
+ *
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
- *
+ *
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* * Redistributions in binary form must reproduce the above copyright
@@ -18,7 +18,7 @@
* * Neither the name of Intel Corporation nor the names of its
* contributors may be used to endorse or promote products derived
* from this software without specific prior written permission.
- *
+ *
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
@@ -30,7 +30,7 @@
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
+ *
*
***************************************************************************/
diff --git a/sys/dev/qat/qat_api/include/lac/cpa_cy_prime.h b/sys/dev/qat/qat_api/include/lac/cpa_cy_prime.h
--- a/sys/dev/qat/qat_api/include/lac/cpa_cy_prime.h
+++ b/sys/dev/qat/qat_api/include/lac/cpa_cy_prime.h
@@ -1,14 +1,14 @@
/***************************************************************************
*
* BSD LICENSE
- *
- * Copyright(c) 2007-2023 Intel Corporation. All rights reserved.
+ *
+ * Copyright(c) 2007-2025 Intel Corporation. All rights reserved.
* All rights reserved.
- *
+ *
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
- *
+ *
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* * Redistributions in binary form must reproduce the above copyright
@@ -18,7 +18,7 @@
* * Neither the name of Intel Corporation nor the names of its
* contributors may be used to endorse or promote products derived
* from this software without specific prior written permission.
- *
+ *
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
@@ -30,7 +30,7 @@
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
+ *
*
***************************************************************************/
diff --git a/sys/dev/qat/qat_api/include/lac/cpa_cy_rsa.h b/sys/dev/qat/qat_api/include/lac/cpa_cy_rsa.h
--- a/sys/dev/qat/qat_api/include/lac/cpa_cy_rsa.h
+++ b/sys/dev/qat/qat_api/include/lac/cpa_cy_rsa.h
@@ -1,14 +1,14 @@
/***************************************************************************
*
* BSD LICENSE
- *
- * Copyright(c) 2007-2023 Intel Corporation. All rights reserved.
+ *
+ * Copyright(c) 2007-2025 Intel Corporation. All rights reserved.
* All rights reserved.
- *
+ *
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
- *
+ *
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* * Redistributions in binary form must reproduce the above copyright
@@ -18,7 +18,7 @@
* * Neither the name of Intel Corporation nor the names of its
* contributors may be used to endorse or promote products derived
* from this software without specific prior written permission.
- *
+ *
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
@@ -30,7 +30,7 @@
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
+ *
*
***************************************************************************/
diff --git a/sys/dev/qat/qat_api/include/lac/cpa_cy_sym.h b/sys/dev/qat/qat_api/include/lac/cpa_cy_sym.h
--- a/sys/dev/qat/qat_api/include/lac/cpa_cy_sym.h
+++ b/sys/dev/qat/qat_api/include/lac/cpa_cy_sym.h
@@ -1,14 +1,14 @@
/***************************************************************************
*
* BSD LICENSE
- *
- * Copyright(c) 2007-2023 Intel Corporation. All rights reserved.
+ *
+ * Copyright(c) 2007-2025 Intel Corporation. All rights reserved.
* All rights reserved.
- *
+ *
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
- *
+ *
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* * Redistributions in binary form must reproduce the above copyright
@@ -18,7 +18,7 @@
* * Neither the name of Intel Corporation nor the names of its
* contributors may be used to endorse or promote products derived
* from this software without specific prior written permission.
- *
+ *
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
@@ -30,7 +30,7 @@
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
+ *
*
***************************************************************************/
@@ -71,7 +71,7 @@
* is allocated by the client. The size of the memory that the client needs
* to allocate is determined by a call to the @ref
* cpaCySymSessionCtxGetSize or @ref cpaCySymSessionCtxGetDynamicSize
- * functions. The session context memory is initialized with a call to
+ * functions. The session context memory is initialized with a call to
* the @ref cpaCySymInitSession function.
* This memory MUST not be freed until a call to @ref
* cpaCySymRemoveSession has completed successfully.
@@ -253,7 +253,7 @@
* Symmetric Cipher Setup Data.
* @description
* This structure contains data relating to Cipher (Encryption and
- * Decryption) to set up a session.
+ * Decryption) to setup a session.
*
*****************************************************************************/
typedef struct _CpaCySymCipherSetupData {
@@ -272,7 +272,8 @@
* - Two keys must be provided and cipherKeyLenInBytes refers to total
* length of the two keys.
* - Each key can be either 128 bits (16 bytes) or 256 bits (32 bytes).
- * - Both keys must have the same size. */
+ * - Both keys must have the same size.
+ */
Cpa8U *pCipherKey;
/**< Cipher key
* For the CPA_CY_SYM_CIPHER_AES_F8 mode of operation, pCipherKey will
@@ -281,7 +282,9 @@
* bytes to match the length of the encryption key used.
* For AES-XTS mode of operation, two keys must be provided and pCipherKey
* must point to the two keys concatenated together (Key1 || Key2).
- * cipherKeyLenInBytes will contain the total size of both keys. */
+ * cipherKeyLenInBytes will contain the total size of both keys.
+ * These fields are set to NULL if key derivation will be used.
+ */
CpaCySymCipherDirection cipherDirection;
/**< This parameter determines if the cipher operation is an encrypt or
* a decrypt operation.
@@ -651,11 +654,11 @@
* setup a session.
*
****************************************************************************/
-typedef struct _CpaCySymSessionSetupData {
+typedef struct _CpaCySymSessionSetupData {
CpaCyPriority sessionPriority;
/**< Priority of this session */
CpaCySymOp symOperation;
- /**< Operation to perfom */
+ /**< Operation to perform */
CpaCySymCipherSetupData cipherSetupData;
/**< Cipher Setup Data for the session. This member is ignored for the
* CPA_CY_SYM_OP_HASH operation. */
@@ -665,7 +668,7 @@
CpaCySymAlgChainOrder algChainOrder;
/**< If this operation data structure relates to an algorithm chaining
* session then this parameter determines the order in which the chained
- * operations are performed. If this structure does not relate to an
+ * operations are performed. If this structure does not relate to an
* algorithm chaining session then this parameter will be ignored.
*
* @note In the case of authenticated ciphers (GCM and CCM), which are
@@ -674,7 +677,7 @@
* cases. */
CpaBoolean digestIsAppended;
/**< Flag indicating whether the digest is appended immediately following
- * the region over which the digest is computed. This is true for both
+ * the region over which the digest is computed. This is true for both
* IPsec packets and SSL/TLS records.
*
* If this flag is set, then the value of the pDigestResult field of
@@ -689,7 +692,7 @@
*/
CpaBoolean verifyDigest;
/**< This flag is relevant only for operations which generate a message
- * digest. If set to true, the computed digest will not be written back
+ * digest. If set to true, the computed digest will not be written back
* to the buffer location specified by other parameters, but instead will
* be verified (i.e. compared to the value passed in at that location).
* The number of bytes to be written or compared is indicated by the
@@ -697,7 +700,7 @@
* @note This option is only valid for full packets and for final
* partial packets when using partials without algorithm chaining.
* @note The value of this field is ignored for the authenticated ciphers
- * (AES_CCM and AES_GCM). Digest verification is always done for these
+ * (AES_CCM and AES_GCM). Digest verification is always done for these
* (when the direction is decrypt) and unless the DP API is used,
* the message buffer will be zeroed if verification fails. When using the
* DP API, it is the API clients responsibility to clear the message
@@ -938,6 +941,7 @@
* operation, this field is not used and should be set to 0. Instead
* the AAD data should be placed in the source buffer.
*/
+
} CpaCySymOpData;
/**
@@ -961,7 +965,7 @@
* @description
* This macro sets the additional authentication data in the
* appropriate location of the@ref CpaCySymOpData struct for the
- * authenticated encryptionalgorithm @ref CPA_CY_SYM_HASH_AES_CCM.
+ * authenticated encryption algorithm @ref CPA_CY_SYM_HASH_AES_CCM.
****************************************************************************/
#define CPA_CY_SYM_CCM_SET_AAD(pOpData, pAad, aadLen) do { \
memcpy(&pOpData->pAdditionalAuthData[18], pAad, aadLen); \
@@ -1122,10 +1126,10 @@
* implementations)
* (2) between different releases of the same API implementation.
*
- * The size returned by this function is the smallest size needed to
+ * The size returned by this function is the smallest size needed to
* support all possible combinations of setup data parameters. Some
- * setup data parameter combinations may fit within a smaller session
- * context size. The alternate cpaCySymSessionCtxGetDynamicSize()
+ * setup data parameter combinations may fit within a smaller session
+ * context size. The alternate cpaCySymSessionCtxGetDynamicSize()
* function will return the smallest size needed to fit the
* provided setup data parameters.
*
@@ -1183,17 +1187,17 @@
* Gets the minimum size required to store a session context.
*
* @description
- * This function is used by the client to determine the smallest size of
- * the memory it must allocate in order to store the session context.
- * This MUST be called before the client allocates the memory for the
- * session context and before the client calls the @ref cpaCySymInitSession
+ * This function is used by the client to determine the smallest size of
+ * the memory it must allocate in order to store the session context.
+ * This MUST be called before the client allocates the memory for the
+ * session context and before the client calls the @ref cpaCySymInitSession
* function.
*
* This function is an alternate to cpaCySymSessionGetSize().
- * cpaCySymSessionCtxGetSize() will return a fixed size which is the
- * minimum memory size needed to support all possible setup data parameter
- * combinations. cpaCySymSessionCtxGetDynamicSize() will return the
- * minimum memory size needed to support the specific session setup
+ * cpaCySymSessionCtxGetSize() will return a fixed size which is the
+ * minimum memory size needed to support all possible setup data parameter
+ * combinations. cpaCySymSessionCtxGetDynamicSize() will return the
+ * minimum memory size needed to support the specific session setup
* data parameters provided. This size may be different for different setup
* data parameters.
*
@@ -1564,7 +1568,7 @@
* a multiple of the relevant block size.
* i.e. padding WILL NOT be applied to the data.
* For optimum performance, the buffer should
- * only contain the data region that the
+ * only contain the data region that the
* cryptographic operation(s) must be performed on.
* Any additional data in the source buffer may be
* copied to the destination buffer and this copy
diff --git a/sys/dev/qat/qat_api/include/lac/cpa_cy_sym_dp.h b/sys/dev/qat/qat_api/include/lac/cpa_cy_sym_dp.h
--- a/sys/dev/qat/qat_api/include/lac/cpa_cy_sym_dp.h
+++ b/sys/dev/qat/qat_api/include/lac/cpa_cy_sym_dp.h
@@ -1,14 +1,14 @@
/***************************************************************************
*
* BSD LICENSE
- *
- * Copyright(c) 2007-2023 Intel Corporation. All rights reserved.
+ *
+ * Copyright(c) 2007-2025 Intel Corporation. All rights reserved.
* All rights reserved.
- *
+ *
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
- *
+ *
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* * Redistributions in binary form must reproduce the above copyright
@@ -18,7 +18,7 @@
* * Neither the name of Intel Corporation nor the names of its
* contributors may be used to endorse or promote products derived
* from this software without specific prior written permission.
- *
+ *
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
@@ -30,7 +30,7 @@
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
+ *
*
***************************************************************************/
@@ -376,7 +376,7 @@
* @description
* This is the callback function prototype. The callback function is
* registered by the application using the @ref cpaCySymDpRegCbFunc
- * function call, and called back on completion of asycnhronous
+ * function call, and called back on completion of asynchronous
* requests made via calls to @ref cpaCySymDpEnqueueOp or @ref
* cpaCySymDpEnqueueOpBatch.
*
@@ -428,7 +428,7 @@
* @description
* This function allows a completion callback function to be registered.
* The registered callback function is invoked on completion of
- * asycnhronous requests made via calls to @ref cpaCySymDpEnqueueOp
+ * asynchronous requests made via calls to @ref cpaCySymDpEnqueueOp
* or @ref cpaCySymDpEnqueueOpBatch.
*
* If a callback function was previously registered, it is overwritten.
diff --git a/sys/dev/qat/qat_api/qat_direct/include/icp_accel_devices.h b/sys/dev/qat/qat_api/qat_direct/include/icp_accel_devices.h
--- a/sys/dev/qat/qat_api/qat_direct/include/icp_accel_devices.h
+++ b/sys/dev/qat/qat_api/qat_direct/include/icp_accel_devices.h
@@ -1,5 +1,5 @@
/* SPDX-License-Identifier: BSD-3-Clause */
-/* Copyright(c) 2007-2022 Intel Corporation */
+/* Copyright(c) 2007-2025 Intel Corporation */
/*****************************************************************************
* @file icp_accel_devices.h
*
@@ -126,7 +126,7 @@
QatUtilsAtomic usageCounter; /* Usage counter. Prevents
shutting down the dev if not 0*/
Cpa32U deviceMemAvail; /* Device memory for intermediate buffers */
- /* Component specific fields - cast to relevent layer */
+ /* Component specific fields - cast to relevant layer */
void *pRingInflight; /* For offload optimization */
void *pSalHandle; /* For SAL*/
void *pQatStats; /* For QATAL/SAL stats */
diff --git a/sys/dev/qat/qat_api/qat_direct/include/icp_adf_init.h b/sys/dev/qat/qat_api/qat_direct/include/icp_adf_init.h
--- a/sys/dev/qat/qat_api/qat_direct/include/icp_adf_init.h
+++ b/sys/dev/qat/qat_api/qat_direct/include/icp_adf_init.h
@@ -1,5 +1,5 @@
/* SPDX-License-Identifier: BSD-3-Clause */
-/* Copyright(c) 2007-2022 Intel Corporation */
+/* Copyright(c) 2007-2025 Intel Corporation */
/*****************************************************************************
* @file icp_adf_init.h
*
@@ -40,7 +40,7 @@
} icp_adf_ringInfoOperation_t;
/*
- * Ring generic serivce info private data
+ * Ring generic service info private data
*/
typedef enum icp_adf_ringInfoService_e {
ICP_ADF_RING_SERVICE_0 = 0,
diff --git a/sys/dev/qat/qat_api/qat_kernel/src/lac_adf_interface_freebsd.c b/sys/dev/qat/qat_api/qat_kernel/src/lac_adf_interface_freebsd.c
--- a/sys/dev/qat/qat_api/qat_kernel/src/lac_adf_interface_freebsd.c
+++ b/sys/dev/qat/qat_api/qat_kernel/src/lac_adf_interface_freebsd.c
@@ -1,5 +1,5 @@
/* SPDX-License-Identifier: BSD-3-Clause */
-/* Copyright(c) 2007-2022 Intel Corporation */
+/* Copyright(c) 2007-2025 Intel Corporation */
#include "adf_cfg.h"
#include "cpa.h"
#include "icp_accel_devices.h"
@@ -288,8 +288,8 @@
/*
* icp_amgr_getAllAccelDevByEachCapabilities
- * Returns table of accel devices that are started and implement
- * each of the capabilities specified in capabilitiesMask.
+ * Returns table of accel devices that are started and that implement
+ * at least one of the capabilities specified in capabilitiesMask.
*/
CpaStatus
icp_amgr_getAllAccelDevByEachCapability(Cpa32U capabilitiesMask,
diff --git a/sys/dev/qat/qat_api/qat_utils/include/qat_utils.h b/sys/dev/qat/qat_api/qat_utils/include/qat_utils.h
--- a/sys/dev/qat/qat_api/qat_utils/include/qat_utils.h
+++ b/sys/dev/qat/qat_api/qat_utils/include/qat_utils.h
@@ -1,9 +1,8 @@
/* SPDX-License-Identifier: BSD-3-Clause */
-/* Copyright(c) 2007-2022 Intel Corporation */
+/* Copyright(c) 2007-2025 Intel Corporation */
#ifndef QAT_UTILS_H
#define QAT_UTILS_H
-
#include <sys/param.h>
#include <sys/ctype.h>
#include <sys/endian.h>
@@ -830,7 +829,7 @@
*
* @brief Single block AES encrypt
*
- * @param key - pointer to symetric key.
+ * @param key - pointer to symmetric key.
* keyLenInBytes - key length
* in - pointer to data to encrypt
* out - pointer to output buffer for encrypted text
@@ -853,7 +852,7 @@
*
* @brief Converts AES forward key to reverse key
*
- * @param key - pointer to symetric key.
+ * @param key - pointer to symmetric key.
* keyLenInBytes - key length
* out - pointer to output buffer for reversed key
* The in and out buffers need to be at least AES block size long
diff --git a/sys/dev/qat/qat_api/qat_utils/src/QatUtilsServices.c b/sys/dev/qat/qat_api/qat_utils/src/QatUtilsServices.c
--- a/sys/dev/qat/qat_api/qat_utils/src/QatUtilsServices.c
+++ b/sys/dev/qat/qat_api/qat_utils/src/QatUtilsServices.c
@@ -1,5 +1,5 @@
/* SPDX-License-Identifier: BSD-3-Clause */
-/* Copyright(c) 2007-2022 Intel Corporation */
+/* Copyright(c) 2007-2025 Intel Corporation */
#include "qat_utils.h"
#include <sys/param.h>
@@ -20,7 +20,7 @@
*
* Data struct to store the information on the
* memory allocated. This structure is stored at the beginning of
- * the allocated chunck of memory
+ * the allocated chunk of memory
* size is the no of byte passed to the memory allocation functions
* mSize is the real size of the memory required to the OS
*
diff --git a/sys/dev/qat/qat_common/adf_aer.c b/sys/dev/qat/qat_common/adf_aer.c
--- a/sys/dev/qat/qat_common/adf_aer.c
+++ b/sys/dev/qat/qat_common/adf_aer.c
@@ -1,5 +1,5 @@
/* SPDX-License-Identifier: BSD-3-Clause */
-/* Copyright(c) 2007-2022 Intel Corporation */
+/* Copyright(c) 2007-2025 Intel Corporation */
#include "qat_freebsd.h"
#include "adf_cfg.h"
#include "adf_common_drv.h"
@@ -276,6 +276,15 @@
struct adf_fatal_error_data *wq_data =
container_of(work, struct adf_fatal_error_data, work);
struct adf_accel_dev *accel_dev = wq_data->accel_dev;
+ struct adf_hw_device_data *hw_device = accel_dev->hw_device;
+
+ if (adf_dev_in_use(accel_dev)) {
+ if (hw_device->pre_reset) {
+ device_printf(GET_DEV(accel_dev),
+ "Performing pre reset save\n");
+ hw_device->pre_reset(accel_dev);
+ }
+ }
adf_error_notifier((uintptr_t)accel_dev);
if (!accel_dev->is_vf) {
diff --git a/sys/dev/qat/qat_common/adf_cfg.c b/sys/dev/qat/qat_common/adf_cfg.c
--- a/sys/dev/qat/qat_common/adf_cfg.c
+++ b/sys/dev/qat/qat_common/adf_cfg.c
@@ -1,15 +1,10 @@
/* SPDX-License-Identifier: BSD-3-Clause */
-/* Copyright(c) 2007-2022 Intel Corporation */
+/* Copyright(c) 2007-2025 Intel Corporation */
#include "adf_accel_devices.h"
#include "adf_cfg.h"
#include "adf_common_drv.h"
-#include "adf_cfg_dev_dbg.h"
#include "adf_cfg_device.h"
#include "adf_cfg_sysctl.h"
-#include "adf_heartbeat_dbg.h"
-#include "adf_ver_dbg.h"
-#include "adf_fw_counters.h"
-#include "adf_cnvnr_freq_counters.h"
/**
* adf_cfg_dev_add() - Create an acceleration device configuration table.
@@ -73,31 +68,13 @@
ADF_CFG_MAX_VAL);
}
- if (adf_cfg_sysctl_add(accel_dev))
- goto err;
-
- if (adf_cfg_dev_dbg_add(accel_dev))
- goto err;
-
- if (!accel_dev->is_vf) {
- if (adf_heartbeat_dbg_add(accel_dev))
- goto err;
-
- if (adf_ver_dbg_add(accel_dev))
- goto err;
-
- if (adf_fw_counters_add(accel_dev))
- goto err;
-
- if (adf_cnvnr_freq_counters_add(accel_dev))
- goto err;
+ if (adf_cfg_sysctl_add(accel_dev)) {
+ free(dev_cfg_data, M_QAT);
+ accel_dev->cfg = NULL;
+ return EFAULT;
}
- return 0;
-err:
- free(dev_cfg_data, M_QAT);
- accel_dev->cfg = NULL;
- return EFAULT;
+ return 0;
}
static void adf_cfg_section_del_all(struct list_head *head);
@@ -142,13 +119,6 @@
sx_xunlock(&dev_cfg_data->lock);
adf_cfg_sysctl_remove(accel_dev);
- adf_cfg_dev_dbg_remove(accel_dev);
- if (!accel_dev->is_vf) {
- adf_ver_dbg_del(accel_dev);
- adf_heartbeat_dbg_del(accel_dev);
- adf_fw_counters_remove(accel_dev);
- adf_cnvnr_freq_counters_remove(accel_dev);
- }
free(dev_cfg_data, M_QAT);
accel_dev->cfg = NULL;
diff --git a/sys/dev/qat/qat_common/adf_cfg_device.c b/sys/dev/qat/qat_common/adf_cfg_device.c
--- a/sys/dev/qat/qat_common/adf_cfg_device.c
+++ b/sys/dev/qat/qat_common/adf_cfg_device.c
@@ -1,5 +1,5 @@
/* SPDX-License-Identifier: BSD-3-Clause */
-/* Copyright(c) 2007-2022 Intel Corporation */
+/* Copyright(c) 2007-2025 Intel Corporation */
#include "adf_cfg_instance.h"
#include "adf_cfg_section.h"
#include "adf_cfg_device.h"
@@ -677,6 +677,18 @@
device->instances = NULL;
}
+void
+adf_cfg_device_clear_all(struct adf_accel_dev *accel_dev)
+{
+ sx_xlock(&accel_dev->cfg->lock);
+ if (accel_dev->cfg->dev) {
+ adf_cfg_device_clear(accel_dev->cfg->dev, accel_dev);
+ free (accel_dev->cfg->dev, M_QAT);
+ accel_dev->cfg->dev = NULL;
+ }
+ sx_xunlock(&accel_dev->cfg->lock);
+}
+
/*
* Static configuration for userspace
*/
diff --git a/sys/dev/qat/qat_common/adf_cfg_sysctl.c b/sys/dev/qat/qat_common/adf_cfg_sysctl.c
--- a/sys/dev/qat/qat_common/adf_cfg_sysctl.c
+++ b/sys/dev/qat/qat_common/adf_cfg_sysctl.c
@@ -1,5 +1,5 @@
/* SPDX-License-Identifier: BSD-3-Clause */
-/* Copyright(c) 2007-2022 Intel Corporation */
+/* Copyright(c) 2007-2025 Intel Corporation */
#include <sys/types.h>
#include <sys/sysctl.h>
#include <sys/systm.h>
@@ -10,6 +10,7 @@
#include "adf_common_drv.h"
#include <sys/mutex.h>
#include <sys/sbuf.h>
+#include <sys/priv.h>
#define ADF_CFG_SYSCTL_BUF_SZ ADF_CFG_MAX_VAL
#define ADF_CFG_UP_STR "up"
@@ -105,6 +106,9 @@
int ret = 0;
int i = 0;
+ if (priv_check(curthread, PRIV_DRIVER) != 0)
+ return EPERM;
+
accel_dev = arg1;
if (!accel_dev)
return ENXIO;
@@ -156,6 +160,9 @@
int ret = 0;
int i = 0;
+ if (priv_check(curthread, PRIV_DRIVER) != 0)
+ return EPERM;
+
accel_dev = arg1;
if (!accel_dev)
return ENXIO;
@@ -204,6 +211,9 @@
unsigned int len;
int ret = 0;
+ if (priv_check(curthread, PRIV_DRIVER) != 0)
+ return EPERM;
+
accel_dev = arg1;
if (!accel_dev)
return ENXIO;
@@ -245,6 +255,9 @@
uint32_t num_user_processes = 0;
int ret = 0;
+ if (priv_check(curthread, PRIV_DRIVER) != 0)
+ return EPERM;
+
accel_dev = arg1;
if (!accel_dev)
return ENXIO;
diff --git a/sys/dev/qat/qat_common/adf_clock.c b/sys/dev/qat/qat_common/adf_clock.c
--- a/sys/dev/qat/qat_common/adf_clock.c
+++ b/sys/dev/qat/qat_common/adf_clock.c
@@ -1,9 +1,10 @@
/* SPDX-License-Identifier: BSD-3-Clause */
-/* Copyright(c) 2007-2022 Intel Corporation */
+/* Copyright(c) 2007-2025 Intel Corporation */
#include "adf_accel_devices.h"
#include "adf_common_drv.h"
#include <linux/delay.h>
+#include <sys/priv.h>
#define MEASURE_CLOCK_RETRIES 10
#define MEASURE_CLOCK_DELTA_THRESHOLD 100
@@ -21,11 +22,30 @@
} \
} while (0)
+static int adf_clock_read_frequency(SYSCTL_HANDLER_ARGS)
+{
+ struct adf_accel_dev *accel_dev = arg1;
+ struct adf_hw_device_data *hw_data;
+ int error = EFAULT;
+
+ if (priv_check(curthread, PRIV_DRIVER) != 0)
+ return EPERM;
+
+ if (accel_dev == NULL)
+ return EINVAL;
+
+ hw_data = accel_dev->hw_device;
+
+ error = sysctl_handle_int(oidp, &hw_data->clock_frequency, 0, req);
+ if (error || !req->newptr)
+ return error;
+
+ return (0);
+}
+
int
adf_clock_debugfs_add(struct adf_accel_dev *accel_dev)
{
- struct adf_hw_device_data *hw_data = accel_dev->hw_device;
-
struct sysctl_ctx_list *qat_sysctl_ctx;
struct sysctl_oid *qat_sysctl_tree;
struct sysctl_oid *rc = 0;
@@ -35,13 +55,15 @@
qat_sysctl_tree =
device_get_sysctl_tree(accel_dev->accel_pci_dev.pci_dev);
- rc = SYSCTL_ADD_UINT(qat_sysctl_ctx,
+ rc = SYSCTL_ADD_PROC(qat_sysctl_ctx,
SYSCTL_CHILDREN(qat_sysctl_tree),
OID_AUTO,
CLK_DBGFS_FILE,
- CTLFLAG_RD,
- &hw_data->clock_frequency,
+ CTLTYPE_INT | CTLFLAG_RD,
+ accel_dev,
0,
+ adf_clock_read_frequency,
+ "IU",
"clock frequency");
HB_SYSCTL_ERR(rc);
return 0;
diff --git a/sys/dev/qat/qat_common/adf_freebsd_cfg_dev_dbg.c b/sys/dev/qat/qat_common/adf_freebsd_cfg_dev_dbg.c
--- a/sys/dev/qat/qat_common/adf_freebsd_cfg_dev_dbg.c
+++ b/sys/dev/qat/qat_common/adf_freebsd_cfg_dev_dbg.c
@@ -1,5 +1,5 @@
/* SPDX-License-Identifier: BSD-3-Clause */
-/* Copyright(c) 2007-2022 Intel Corporation */
+/* Copyright(c) 2007-2025 Intel Corporation */
#include "qat_freebsd.h"
#include "adf_common_drv.h"
#include "adf_cfg_device.h"
@@ -12,6 +12,7 @@
#include <sys/sx.h>
#include <sys/systm.h>
#include <sys/malloc.h>
+#include <sys/priv.h>
static int qat_dev_cfg_show(SYSCTL_HANDLER_ARGS)
{
@@ -21,6 +22,9 @@
struct sbuf sb;
int error;
+ if (priv_check(curthread, PRIV_DRIVER) != 0)
+ return EPERM;
+
sbuf_new_for_sysctl(&sb, NULL, 128, req);
dev_cfg = arg1;
sx_slock(&dev_cfg->lock);
diff --git a/sys/dev/qat/qat_common/adf_freebsd_cnvnr_ctrs_dbg.c b/sys/dev/qat/qat_common/adf_freebsd_cnvnr_ctrs_dbg.c
--- a/sys/dev/qat/qat_common/adf_freebsd_cnvnr_ctrs_dbg.c
+++ b/sys/dev/qat/qat_common/adf_freebsd_cnvnr_ctrs_dbg.c
@@ -1,8 +1,9 @@
/* SPDX-License-Identifier: BSD-3-Clause */
-/* Copyright(c) 2007-2022 Intel Corporation */
+/* Copyright(c) 2007-2025 Intel Corporation */
#include <sys/types.h>
#include <sys/sysctl.h>
#include <sys/systm.h>
+#include <sys/priv.h>
#include "adf_cnvnr_freq_counters.h"
#include "adf_common_drv.h"
#include "adf_cfg.h"
@@ -45,6 +46,9 @@
char report[MAX_REPORT_SIZE];
char *report_ptr = report;
+ if (priv_check(curthread, PRIV_DRIVER) != 0)
+ return EPERM;
+
/* Defensive check */
if (!accel_dev || accel_dev->accel_id > ADF_MAX_DEVICES)
return EINVAL;
@@ -89,6 +93,7 @@
/* Extracting number of Acceleration Engines */
num_aes = hw_device->get_num_aes(hw_device);
+ explicit_bzero(&request, sizeof(struct icp_qat_fw_init_admin_req));
for (ae = 0; ae < num_aes; ae++) {
if (accel_dev->au_info && !test_bit(ae, &dc_ae_msk))
continue;
@@ -123,10 +128,12 @@
cnvnr_err_str[error_type],
latest_error);
if (bytes_written <= 0) {
- printf("ERROR: No space left in CnV ctrs line buffer\n"
- "\tAcceleration ID: %d, Engine: %d\n",
- accel_dev->accel_id,
- ae);
+ device_printf(
+ GET_DEV(accel_dev),
+ "ERROR: No space left in CnV ctrs line buffer\n"
+ "\tAcceleration ID: %d, Engine: %d\n",
+ accel_dev->accel_id,
+ ae);
break;
}
report_ptr += bytes_written;
@@ -141,7 +148,6 @@
{
struct sysctl_ctx_list *qat_sysctl_ctx;
struct sysctl_oid *qat_cnvnr_ctrs_sysctl_tree;
- struct sysctl_oid *oid_rc;
/* Defensive checks */
if (!accel_dev)
@@ -154,19 +160,22 @@
device_get_sysctl_tree(accel_dev->accel_pci_dev.pci_dev);
/* Create "cnv_error" string type leaf - with callback */
- oid_rc = SYSCTL_ADD_PROC(qat_sysctl_ctx,
- SYSCTL_CHILDREN(qat_cnvnr_ctrs_sysctl_tree),
- OID_AUTO,
- "cnv_error",
- CTLTYPE_STRING | CTLFLAG_RD,
- accel_dev,
- 0,
- qat_cnvnr_ctrs_dbg_read,
- "IU",
- "QAT CnVnR status");
-
- if (!oid_rc) {
- printf("ERROR: Memory allocation failed\n");
+ accel_dev->cnv_error_oid =
+ SYSCTL_ADD_PROC(qat_sysctl_ctx,
+ SYSCTL_CHILDREN(qat_cnvnr_ctrs_sysctl_tree),
+ OID_AUTO,
+ "cnv_error",
+ CTLTYPE_STRING | CTLFLAG_RD,
+ accel_dev,
+ 0,
+ qat_cnvnr_ctrs_dbg_read,
+ "IU",
+ "QAT CnVnR status");
+
+ if (!accel_dev->cnv_error_oid) {
+ device_printf(
+ GET_DEV(accel_dev),
+ "Failed to create qat cnvnr freq counters sysctl entry.\n");
return ENOMEM;
}
return 0;
@@ -175,4 +184,17 @@
void
adf_cnvnr_freq_counters_remove(struct adf_accel_dev *accel_dev)
{
+ struct sysctl_ctx_list *qat_sysctl_ctx;
+
+ if (!accel_dev)
+ return;
+
+ qat_sysctl_ctx =
+ device_get_sysctl_ctx(accel_dev->accel_pci_dev.pci_dev);
+
+ if (accel_dev->cnv_error_oid) {
+ sysctl_ctx_entry_del(qat_sysctl_ctx, accel_dev->cnv_error_oid);
+ sysctl_remove_oid(accel_dev->cnv_error_oid, 1, 1);
+ accel_dev->cnv_error_oid = NULL;
+ }
}
diff --git a/sys/dev/qat/qat_common/adf_freebsd_dbgfs.c b/sys/dev/qat/qat_common/adf_freebsd_dbgfs.c
new file mode 100644
--- /dev/null
+++ b/sys/dev/qat/qat_common/adf_freebsd_dbgfs.c
@@ -0,0 +1,70 @@
+/* SPDX-License-Identifier: BSD-3-Clause */
+/* Copyright(c) 2007-2025 Intel Corporation */
+
+#include "adf_accel_devices.h"
+#include "adf_cfg_dev_dbg.h"
+#include "adf_cnvnr_freq_counters.h"
+#include "adf_common_drv.h"
+#include "adf_dbgfs.h"
+#include "adf_fw_counters.h"
+#include "adf_freebsd_pfvf_ctrs_dbg.h"
+#include "adf_heartbeat_dbg.h"
+#include "adf_ver_dbg.h"
+
+/**
+ * adf_dbgfs_init() - add persistent debugfs entries
+ * @accel_dev: Pointer to acceleration device.
+ *
+ * This function creates debugfs entries that are persistent through a device
+ * state change (from up to down or vice versa).
+ */
+void
+adf_dbgfs_init(struct adf_accel_dev *accel_dev)
+{
+ adf_cfg_dev_dbg_add(accel_dev);
+}
+EXPORT_SYMBOL_GPL(adf_dbgfs_init);
+
+/**
+ * adf_dbgfs_exit() - remove persistent debugfs entries
+ * @accel_dev: Pointer to acceleration device.
+ */
+void
+adf_dbgfs_exit(struct adf_accel_dev *accel_dev)
+{
+ adf_cfg_dev_dbg_remove(accel_dev);
+}
+EXPORT_SYMBOL_GPL(adf_dbgfs_exit);
+
+/**
+ * adf_dbgfs_add() - add non-persistent debugfs entries
+ * @accel_dev: Pointer to acceleration device.
+ *
+ * This function creates debugfs entries that are not persistent through
+ * a device state change (from up to down or vice versa).
+ */
+void
+adf_dbgfs_add(struct adf_accel_dev *accel_dev)
+{
+ if (!accel_dev->is_vf) {
+ adf_heartbeat_dbg_add(accel_dev);
+ adf_ver_dbg_add(accel_dev);
+ adf_fw_counters_add(accel_dev);
+ adf_cnvnr_freq_counters_add(accel_dev);
+ }
+}
+
+/**
+ * adf_dbgfs_rm() - remove non-persistent debugfs entries
+ * @accel_dev: Pointer to acceleration device.
+ */
+void
+adf_dbgfs_rm(struct adf_accel_dev *accel_dev)
+{
+ if (!accel_dev->is_vf) {
+ adf_cnvnr_freq_counters_remove(accel_dev);
+ adf_fw_counters_remove(accel_dev);
+ adf_ver_dbg_del(accel_dev);
+ adf_heartbeat_dbg_del(accel_dev);
+ }
+}
diff --git a/sys/dev/qat/qat_common/adf_freebsd_dev_processes.c b/sys/dev/qat/qat_common/adf_freebsd_dev_processes.c
--- a/sys/dev/qat/qat_common/adf_freebsd_dev_processes.c
+++ b/sys/dev/qat/qat_common/adf_freebsd_dev_processes.c
@@ -1,6 +1,5 @@
/* SPDX-License-Identifier: BSD-3-Clause */
-/* Copyright(c) 2007-2022 Intel Corporation */
-
+/* Copyright(c) 2007-2025 Intel Corporation */
#include "qat_freebsd.h"
#include "adf_cfg.h"
#include "adf_common_drv.h"
@@ -85,7 +84,7 @@
.d_name = ADF_DEV_STATE_NAME,
};
-static const struct filterops adf_state_read_filterops = {
+static struct filterops adf_state_read_filterops = {
.f_isfd = 1,
.f_attach = NULL,
.f_detach = adf_state_kqread_detach,
@@ -410,17 +409,6 @@
state->state.dev_state = event;
state->state.dev_id = dev;
STAILQ_INSERT_TAIL(head, state, entries_state);
- if (event == ADF_EVENT_STOP) {
- state = NULL;
- state = malloc(sizeof(struct entry_state),
- M_QAT,
- M_NOWAIT | M_ZERO);
- if (!state)
- continue;
- state->state.dev_state = ADF_EVENT_SHUTDOWN;
- state->state.dev_id = dev;
- STAILQ_INSERT_TAIL(head, state, entries_state);
- }
}
mtx_unlock(&mtx);
callout_schedule(&callout, ADF_STATE_CALLOUT_TIME);
@@ -451,7 +439,7 @@
case ADF_EVENT_START:
return ret;
case ADF_EVENT_STOP:
- break;
+ return ret;
case ADF_EVENT_ERROR:
break;
#if defined(QAT_UIO) && defined(QAT_DBG)
@@ -548,6 +536,7 @@
struct entry_proc_events *proc_events = NULL;
adf_service_unregister(&adf_state_hndl);
+ destroy_dev(adf_state_dev);
mtx_lock(&callout_mtx);
callout_stop(&callout);
mtx_unlock(&callout_mtx);
@@ -560,7 +549,6 @@
}
mtx_unlock(&mtx);
mtx_destroy(&mtx);
- destroy_dev(adf_state_dev);
}
static int
diff --git a/sys/dev/qat/qat_common/adf_freebsd_heartbeat_dbg.c b/sys/dev/qat/qat_common/adf_freebsd_heartbeat_dbg.c
--- a/sys/dev/qat/qat_common/adf_freebsd_heartbeat_dbg.c
+++ b/sys/dev/qat/qat_common/adf_freebsd_heartbeat_dbg.c
@@ -1,8 +1,9 @@
/* SPDX-License-Identifier: BSD-3-Clause */
-/* Copyright(c) 2007-2022 Intel Corporation */
+/* Copyright(c) 2007-2025 Intel Corporation */
#include <sys/types.h>
#include <sys/sysctl.h>
#include <sys/systm.h>
+#include <sys/priv.h>
#include "adf_heartbeat_dbg.h"
#include "adf_common_drv.h"
#include "adf_cfg.h"
@@ -17,6 +18,49 @@
} \
} while (0)
+
+static int qat_dev_hb_read_sent(SYSCTL_HANDLER_ARGS)
+{
+ struct adf_accel_dev *accel_dev = arg1;
+ struct adf_heartbeat *hb;
+ int error = EFAULT;
+
+ if (priv_check(curthread, PRIV_DRIVER) != 0)
+ return EPERM;
+
+ if (accel_dev == NULL)
+ return EINVAL;
+
+ hb = accel_dev->heartbeat;
+
+ error = sysctl_handle_int(oidp, &hb->hb_sent_counter, 0, req);
+ if (error || !req->newptr)
+ return error;
+
+ return (0);
+}
+
+static int qat_dev_hb_read_failed(SYSCTL_HANDLER_ARGS)
+{
+ struct adf_accel_dev *accel_dev = arg1;
+ struct adf_heartbeat *hb;
+ int error = EFAULT;
+
+ if (priv_check(curthread, PRIV_DRIVER) != 0)
+ return EPERM;
+
+ if (accel_dev == NULL)
+ return EINVAL;
+
+ hb = accel_dev->heartbeat;
+
+ error = sysctl_handle_int(oidp, &hb->hb_failed_counter, 0, req);
+ if (error || !req->newptr)
+ return error;
+
+ return (0);
+}
+
/* Handler for HB status check */
static int qat_dev_hb_read(SYSCTL_HANDLER_ARGS)
{
@@ -24,6 +68,10 @@
struct adf_accel_dev *accel_dev = arg1;
struct adf_heartbeat *hb;
int ret = 0;
+
+ if (priv_check(curthread, PRIV_DRIVER) != 0)
+ return EPERM;
+
if (accel_dev == NULL) {
return EINVAL;
}
@@ -48,7 +96,6 @@
struct sysctl_ctx_list *qat_hb_sysctl_ctx;
struct sysctl_oid *qat_hb_sysctl_tree;
struct adf_heartbeat *hb;
- struct sysctl_oid *rc = 0;
if (accel_dev == NULL) {
return EINVAL;
@@ -63,43 +110,80 @@
qat_hb_sysctl_tree =
device_get_sysctl_tree(accel_dev->accel_pci_dev.pci_dev);
- rc = SYSCTL_ADD_UINT(qat_hb_sysctl_ctx,
- SYSCTL_CHILDREN(qat_hb_sysctl_tree),
- OID_AUTO,
- "heartbeat_sent",
- CTLFLAG_RD,
- &hb->hb_sent_counter,
- 0,
- "HB sent count");
- HB_SYSCTL_ERR(rc);
-
- rc = SYSCTL_ADD_UINT(qat_hb_sysctl_ctx,
- SYSCTL_CHILDREN(qat_hb_sysctl_tree),
- OID_AUTO,
- "heartbeat_failed",
- CTLFLAG_RD,
- &hb->hb_failed_counter,
- 0,
- "HB failed count");
- HB_SYSCTL_ERR(rc);
-
- rc = SYSCTL_ADD_PROC(qat_hb_sysctl_ctx,
- SYSCTL_CHILDREN(qat_hb_sysctl_tree),
- OID_AUTO,
- "heartbeat",
- CTLTYPE_INT | CTLFLAG_RD,
- accel_dev,
- 0,
- qat_dev_hb_read,
- "IU",
- "QAT device status");
- HB_SYSCTL_ERR(rc);
+ hb->heartbeat_sent.oid =
+ SYSCTL_ADD_PROC(qat_hb_sysctl_ctx,
+ SYSCTL_CHILDREN(qat_hb_sysctl_tree),
+ OID_AUTO,
+ "heartbeat_sent",
+ CTLTYPE_INT | CTLFLAG_RD,
+ accel_dev,
+ 0,
+ qat_dev_hb_read_sent,
+ "IU",
+ "HB failed count");
+ HB_SYSCTL_ERR(hb->heartbeat_sent.oid);
+
+ hb->heartbeat_failed.oid =
+ SYSCTL_ADD_PROC(qat_hb_sysctl_ctx,
+ SYSCTL_CHILDREN(qat_hb_sysctl_tree),
+ OID_AUTO,
+ "heartbeat_failed",
+ CTLTYPE_INT | CTLFLAG_RD,
+ accel_dev,
+ 0,
+ qat_dev_hb_read_failed,
+ "IU",
+ "HB failed count");
+ HB_SYSCTL_ERR(hb->heartbeat_failed.oid);
+
+ hb->heartbeat.oid = SYSCTL_ADD_PROC(qat_hb_sysctl_ctx,
+ SYSCTL_CHILDREN(qat_hb_sysctl_tree),
+ OID_AUTO,
+ "heartbeat",
+ CTLTYPE_INT | CTLFLAG_RD,
+ accel_dev,
+ 0,
+ qat_dev_hb_read,
+ "IU",
+ "QAT device status");
+ HB_SYSCTL_ERR(hb->heartbeat.oid);
return 0;
}
int
adf_heartbeat_dbg_del(struct adf_accel_dev *accel_dev)
{
+ struct sysctl_ctx_list *qat_sysctl_ctx;
+ struct adf_heartbeat *hb;
+
+ if (!accel_dev) {
+ return EINVAL;
+ }
+
+ hb = accel_dev->heartbeat;
+
+ qat_sysctl_ctx =
+ device_get_sysctl_ctx(accel_dev->accel_pci_dev.pci_dev);
+
+ if (hb->heartbeat.oid) {
+ sysctl_ctx_entry_del(qat_sysctl_ctx, hb->heartbeat.oid);
+ sysctl_remove_oid(hb->heartbeat.oid, 1, 1);
+ hb->heartbeat.oid = NULL;
+ }
+
+ if (hb->heartbeat_failed.oid) {
+ sysctl_ctx_entry_del(qat_sysctl_ctx, hb->heartbeat_failed.oid);
+ sysctl_remove_oid(hb->heartbeat_failed.oid, 1, 1);
+ hb->heartbeat_failed.oid = NULL;
+ }
+
+ if (hb->heartbeat_sent.oid) {
+ sysctl_ctx_entry_del(qat_sysctl_ctx, hb->heartbeat_sent.oid);
+ sysctl_remove_oid(hb->heartbeat_sent.oid, 1, 1);
+ hb->heartbeat_sent.oid = NULL;
+ }
+
adf_heartbeat_clean(accel_dev);
+
return 0;
}
diff --git a/sys/dev/qat/qat_common/adf_freebsd_pfvf_ctrs_dbg.c b/sys/dev/qat/qat_common/adf_freebsd_pfvf_ctrs_dbg.c
--- a/sys/dev/qat/qat_common/adf_freebsd_pfvf_ctrs_dbg.c
+++ b/sys/dev/qat/qat_common/adf_freebsd_pfvf_ctrs_dbg.c
@@ -1,9 +1,10 @@
/* SPDX-License-Identifier: BSD-3-Clause */
-/* Copyright(c) 2007-2022 Intel Corporation */
+/* Copyright(c) 2007-2025 Intel Corporation */
#include "adf_accel_devices.h"
#include "adf_common_drv.h"
#include "adf_dev_err.h"
#include "adf_freebsd_pfvf_ctrs_dbg.h"
+#include <sys/priv.h>
#define MAX_REPORT_LINES (14)
#define MAX_REPORT_LINE_LEN (64)
@@ -92,6 +93,9 @@
struct pfvf_stats *pfvf_counters = arg1;
char report[MAX_REPORT_SIZE];
+ if (priv_check(curthread, PRIV_DRIVER) != 0)
+ return EPERM;
+
if (!pfvf_counters)
return EINVAL;
diff --git a/sys/dev/qat/qat_common/adf_freebsd_transport_debug.c b/sys/dev/qat/qat_common/adf_freebsd_transport_debug.c
--- a/sys/dev/qat/qat_common/adf_freebsd_transport_debug.c
+++ b/sys/dev/qat/qat_common/adf_freebsd_transport_debug.c
@@ -1,5 +1,5 @@
/* SPDX-License-Identifier: BSD-3-Clause */
-/* Copyright(c) 2007-2022 Intel Corporation */
+/* Copyright(c) 2007-2025 Intel Corporation */
#include "qat_freebsd.h"
#include "adf_cfg.h"
#include "adf_common_drv.h"
@@ -14,6 +14,7 @@
#include <sys/sbuf.h>
#include <sys/sysctl.h>
#include <sys/systm.h>
+#include <sys/priv.h>
static int adf_ring_show(SYSCTL_HANDLER_ARGS)
{
@@ -25,6 +26,9 @@
int error, word;
uint32_t *wp, *end;
+ if (priv_check(curthread, PRIV_DRIVER) != 0)
+ return EPERM;
+
sbuf_new_for_sysctl(&sb, NULL, 128, req);
{
int head, tail, empty;
@@ -125,6 +129,9 @@
struct sbuf sb;
int error, ring_id;
+ if (priv_check(curthread, PRIV_DRIVER) != 0)
+ return EPERM;
+
sbuf_new_for_sysctl(&sb, NULL, 128, req);
bank = arg1;
accel_dev = bank->accel_dev;
diff --git a/sys/dev/qat/qat_common/adf_freebsd_ver_dbg.c b/sys/dev/qat/qat_common/adf_freebsd_ver_dbg.c
--- a/sys/dev/qat/qat_common/adf_freebsd_ver_dbg.c
+++ b/sys/dev/qat/qat_common/adf_freebsd_ver_dbg.c
@@ -1,16 +1,20 @@
/* SPDX-License-Identifier: BSD-3-Clause */
-/* Copyright(c) 2007-2022 Intel Corporation */
+/* Copyright(c) 2007-2025 Intel Corporation */
#include "qat_freebsd.h"
#include "adf_cfg.h"
#include "adf_common_drv.h"
#include "adf_accel_devices.h"
#include "adf_ver_dbg.h"
+#include <sys/priv.h>
static int adf_sysctl_read_fw_versions(SYSCTL_HANDLER_ARGS)
{
struct adf_accel_dev *accel_dev = arg1;
char fw_version[ADF_CFG_MAX_VAL_LEN_IN_BYTES];
+ if (priv_check(curthread, PRIV_DRIVER) != 0)
+ return EPERM;
+
if (!accel_dev)
return -EINVAL;
@@ -34,6 +38,9 @@
struct adf_accel_dev *accel_dev = arg1;
char hw_version[ADF_CFG_MAX_VAL_LEN_IN_BYTES];
+ if (priv_check(curthread, PRIV_DRIVER) != 0)
+ return EPERM;
+
if (!accel_dev)
return -EINVAL;
@@ -55,6 +62,9 @@
struct adf_accel_dev *accel_dev = arg1;
char mmp_version[ADF_CFG_MAX_VAL_LEN_IN_BYTES];
+ if (priv_check(curthread, PRIV_DRIVER) != 0)
+ return EPERM;
+
if (!accel_dev)
return -EINVAL;
@@ -86,7 +96,6 @@
{
struct sysctl_ctx_list *qat_sysctl_ctx;
struct sysctl_oid *qat_sysctl_tree;
- struct sysctl_oid *rc = 0;
if (!accel_dev)
return -EINVAL;
@@ -96,43 +105,46 @@
qat_sysctl_tree =
device_get_sysctl_tree(accel_dev->accel_pci_dev.pci_dev);
- rc = SYSCTL_ADD_OID(qat_sysctl_ctx,
- SYSCTL_CHILDREN(qat_sysctl_tree),
- OID_AUTO,
- "fw_version",
- CTLTYPE_STRING | CTLFLAG_RD,
- accel_dev,
- 0,
- adf_sysctl_read_fw_versions,
- "A",
- "QAT FW version");
- if (!rc)
+ accel_dev->fw_version_oid =
+ SYSCTL_ADD_OID(qat_sysctl_ctx,
+ SYSCTL_CHILDREN(qat_sysctl_tree),
+ OID_AUTO,
+ "fw_version",
+ CTLTYPE_STRING | CTLFLAG_RD,
+ accel_dev,
+ 0,
+ adf_sysctl_read_fw_versions,
+ "A",
+ "QAT FW version");
+ if (!accel_dev->fw_version_oid)
goto err;
- rc = SYSCTL_ADD_OID(qat_sysctl_ctx,
- SYSCTL_CHILDREN(qat_sysctl_tree),
- OID_AUTO,
- "hw_version",
- CTLTYPE_STRING | CTLFLAG_RD,
- accel_dev,
- 0,
- adf_sysctl_read_hw_versions,
- "A",
- "QAT HW version");
- if (!rc)
+ accel_dev->hw_version_oid =
+ SYSCTL_ADD_OID(qat_sysctl_ctx,
+ SYSCTL_CHILDREN(qat_sysctl_tree),
+ OID_AUTO,
+ "hw_version",
+ CTLTYPE_STRING | CTLFLAG_RD,
+ accel_dev,
+ 0,
+ adf_sysctl_read_hw_versions,
+ "A",
+ "QAT HW version");
+ if (!accel_dev->hw_version_oid)
goto err;
- rc = SYSCTL_ADD_OID(qat_sysctl_ctx,
- SYSCTL_CHILDREN(qat_sysctl_tree),
- OID_AUTO,
- "mmp_version",
- CTLTYPE_STRING | CTLFLAG_RD,
- accel_dev,
- 0,
- adf_sysctl_read_mmp_versions,
- "A",
- "QAT MMP version");
- if (!rc)
+ accel_dev->mmp_version_oid =
+ SYSCTL_ADD_OID(qat_sysctl_ctx,
+ SYSCTL_CHILDREN(qat_sysctl_tree),
+ OID_AUTO,
+ "mmp_version",
+ CTLTYPE_STRING | CTLFLAG_RD,
+ accel_dev,
+ 0,
+ adf_sysctl_read_mmp_versions,
+ "A",
+ "QAT MMP version");
+ if (!accel_dev->mmp_version_oid)
goto err;
return 0;
@@ -145,4 +157,30 @@
void
adf_ver_dbg_del(struct adf_accel_dev *accel_dev)
{
+ struct sysctl_ctx_list *qat_sysctl_ctx;
+
+ if (!accel_dev)
+ return;
+
+ qat_sysctl_ctx =
+ device_get_sysctl_ctx(accel_dev->accel_pci_dev.pci_dev);
+
+ if (accel_dev->mmp_version_oid) {
+ sysctl_ctx_entry_del(qat_sysctl_ctx,
+ accel_dev->mmp_version_oid);
+ sysctl_remove_oid(accel_dev->mmp_version_oid, 1, 1);
+ accel_dev->mmp_version_oid = NULL;
+ }
+
+ if (accel_dev->hw_version_oid) {
+ sysctl_ctx_entry_del(qat_sysctl_ctx, accel_dev->hw_version_oid);
+ sysctl_remove_oid(accel_dev->hw_version_oid, 1, 1);
+ accel_dev->hw_version_oid = NULL;
+ }
+
+ if (accel_dev->fw_version_oid) {
+ sysctl_ctx_entry_del(qat_sysctl_ctx, accel_dev->fw_version_oid);
+ sysctl_remove_oid(accel_dev->fw_version_oid, 1, 1);
+ accel_dev->fw_version_oid = NULL;
+ }
}
diff --git a/sys/dev/qat/qat_common/adf_fw_counters.c b/sys/dev/qat/qat_common/adf_fw_counters.c
--- a/sys/dev/qat/qat_common/adf_fw_counters.c
+++ b/sys/dev/qat/qat_common/adf_fw_counters.c
@@ -1,5 +1,5 @@
/* SPDX-License-Identifier: BSD-3-Clause */
-/* Copyright(c) 2007-2022 Intel Corporation */
+/* Copyright(c) 2007-2025 Intel Corporation */
#include <sys/types.h>
#include <sys/sysctl.h>
#include <sys/systm.h>
@@ -9,6 +9,7 @@
#include "icp_qat_fw_init_admin.h"
#include <sys/mutex.h>
#include <sys/sbuf.h>
+#include <sys/priv.h>
#define ADF_FW_COUNTERS_BUF_SZ 4096
#define ADF_RAS_EVENT_STR "RAS events"
@@ -126,6 +127,9 @@
struct sbuf *sbuf = NULL;
char *cbuf = NULL;
+ if (priv_check(curthread, PRIV_DRIVER) != 0)
+ return EPERM;
+
if (accel_dev == NULL) {
return EINVAL;
}
@@ -211,7 +215,6 @@
struct adf_fw_counters_data *fw_counters_data;
struct sysctl_ctx_list *qat_sysctl_ctx;
struct sysctl_oid *qat_sysctl_tree;
- struct sysctl_oid *rc = 0;
fw_counters_data =
malloc(sizeof(*fw_counters_data), M_QAT, M_WAITOK | M_ZERO);
@@ -225,20 +228,24 @@
device_get_sysctl_ctx(accel_dev->accel_pci_dev.pci_dev);
qat_sysctl_tree =
device_get_sysctl_tree(accel_dev->accel_pci_dev.pci_dev);
- rc = SYSCTL_ADD_OID(qat_sysctl_ctx,
- SYSCTL_CHILDREN(qat_sysctl_tree),
- OID_AUTO,
- "fw_counters",
- CTLTYPE_STRING | CTLFLAG_RD,
- accel_dev,
- 0,
- adf_read_fw_counters,
- "A",
- "QAT FW counters");
- if (!rc)
+ fw_counters_data->debug =
+ SYSCTL_ADD_OID(qat_sysctl_ctx,
+ SYSCTL_CHILDREN(qat_sysctl_tree),
+ OID_AUTO,
+ "fw_counters",
+ CTLTYPE_STRING | CTLFLAG_RD,
+ accel_dev,
+ 0,
+ adf_read_fw_counters,
+ "A",
+ "QAT FW counters");
+ if (!fw_counters_data->debug) {
+ free(fw_counters_data, M_QAT);
+ accel_dev->fw_counters_data = NULL;
return ENOMEM;
- else
- return 0;
+ }
+
+ return 0;
}
static void
@@ -396,12 +403,21 @@
void
adf_fw_counters_remove(struct adf_accel_dev *accel_dev)
{
+ struct sysctl_ctx_list *qat_sysctl_ctx;
struct adf_fw_counters_data *fw_counters_data =
accel_dev->fw_counters_data;
if (!fw_counters_data)
return;
+ if (fw_counters_data->debug) {
+ qat_sysctl_ctx =
+ device_get_sysctl_ctx(accel_dev->accel_pci_dev.pci_dev);
+ sysctl_ctx_entry_del(qat_sysctl_ctx, fw_counters_data->debug);
+ sysctl_remove_oid(fw_counters_data->debug, 1, 1);
+ fw_counters_data->debug = NULL;
+ }
+
down_write(&fw_counters_data->lock);
adf_fw_counters_section_del_all(&fw_counters_data->ae_sec_list);
up_write(&fw_counters_data->lock);
diff --git a/sys/dev/qat/qat_common/adf_gen2_hw_data.c b/sys/dev/qat/qat_common/adf_gen2_hw_data.c
--- a/sys/dev/qat/qat_common/adf_gen2_hw_data.c
+++ b/sys/dev/qat/qat_common/adf_gen2_hw_data.c
@@ -1,5 +1,5 @@
-/* SPDX-License-Identifier: BSD-3-Clause */
-/* Copyright(c) 2021 Intel Corporation */
+/* SPDX-License-Identifier: BSD-3-Clause */
+/* Copyright(c) 2007-2025 Intel Corporation */
#include "adf_gen2_hw_data.h"
#include "icp_qat_hw.h"
@@ -54,7 +54,7 @@
WRITE_CSR_RING_CONFIG(csr_base_addr, bank, ring, value);
}
-static dma_addr_t
+static bus_addr_t
read_csr_ring_base(struct resource *csr_base_addr, u32 bank, u32 ring)
{
return READ_CSR_RING_BASE(csr_base_addr, bank, ring);
diff --git a/sys/dev/qat/qat_common/adf_gen4_pfvf.c b/sys/dev/qat/qat_common/adf_gen4_pfvf.c
--- a/sys/dev/qat/qat_common/adf_gen4_pfvf.c
+++ b/sys/dev/qat/qat_common/adf_gen4_pfvf.c
@@ -1,7 +1,6 @@
/* SPDX-License-Identifier: BSD-3-Clause */
-/* Copyright(c) 2007-2022 Intel Corporation */
+/* Copyright(c) 2007-2025 Intel Corporation */
#include <linux/iopoll.h>
-#include <linux/mutex.h>
#include <linux/types.h>
#include "adf_accel_devices.h"
#include "adf_common_drv.h"
diff --git a/sys/dev/qat/qat_common/adf_gen4vf_hw_csr_data.c b/sys/dev/qat/qat_common/adf_gen4vf_hw_csr_data.c
--- a/sys/dev/qat/qat_common/adf_gen4vf_hw_csr_data.c
+++ b/sys/dev/qat/qat_common/adf_gen4vf_hw_csr_data.c
@@ -1,10 +1,10 @@
/* SPDX-License-Identifier: BSD-3-Clause */
-/* Copyright(c) 2007-2022 Intel Corporation */
+/* Copyright(c) 2007-2025 Intel Corporation */
#include "adf_accel_devices.h"
#include "adf_gen4vf_hw_csr_data.h"
static u64
-build_csr_ring_base_addr(dma_addr_t addr, u32 size)
+build_csr_ring_base_addr(bus_addr_t addr, u32 size)
{
return BUILD_RING_BASE_ADDR_GEN4(addr, size);
}
@@ -54,7 +54,7 @@
WRITE_CSR_RING_CONFIG_GEN4VF(csr_base_addr, bank, ring, value);
}
-static dma_addr_t
+static bus_addr_t
read_csr_ring_base(struct resource *csr_base_addr, u32 bank, u32 ring)
{
return READ_CSR_RING_BASE_GEN4VF(csr_base_addr, bank, ring);
@@ -64,7 +64,7 @@
write_csr_ring_base(struct resource *csr_base_addr,
u32 bank,
u32 ring,
- dma_addr_t addr)
+ bus_addr_t addr)
{
WRITE_CSR_RING_BASE_GEN4VF(csr_base_addr, bank, ring, addr);
}
diff --git a/sys/dev/qat/qat_common/adf_init.c b/sys/dev/qat/qat_common/adf_init.c
--- a/sys/dev/qat/qat_common/adf_init.c
+++ b/sys/dev/qat/qat_common/adf_init.c
@@ -1,8 +1,9 @@
/* SPDX-License-Identifier: BSD-3-Clause */
-/* Copyright(c) 2007-2022 Intel Corporation */
+/* Copyright(c) 2007-2025 Intel Corporation */
#include "qat_freebsd.h"
#include "adf_cfg.h"
#include "adf_common_drv.h"
+#include "adf_dbgfs.h"
#include "adf_accel_devices.h"
#include "icp_qat_uclo.h"
#include "icp_qat_fw.h"
@@ -19,6 +20,10 @@
#include "adf_common_drv.h"
#include "icp_qat_fw.h"
+#if defined(QAT_UIO)
+#include "adf_cfg_device.h"
+#endif /* QAT_UIO*/
+
/* Mask used to check the CompressAndVerify capability bit */
#define DC_CNV_EXTENDED_CAPABILITY (0x01)
@@ -28,6 +33,11 @@
static LIST_HEAD(service_table);
static DEFINE_MUTEX(service_lock);
+static int adf_dev_init_locked(struct adf_accel_dev *accel_dev);
+static int adf_dev_start_locked(struct adf_accel_dev *accel_dev);
+static int adf_dev_stop_locked(struct adf_accel_dev *accel_dev);
+static void adf_dev_shutdown_locked(struct adf_accel_dev *accel_dev);
+
static void
adf_service_add(struct service_hndl *service)
{
@@ -260,6 +270,18 @@
*/
int
adf_dev_init(struct adf_accel_dev *accel_dev)
+{
+ int ret = 0;
+
+ mutex_lock(&accel_dev->lock);
+ ret = adf_dev_init_locked(accel_dev);
+ mutex_unlock(&accel_dev->lock);
+
+ return ret;
+}
+
+static int
+adf_dev_init_locked(struct adf_accel_dev *accel_dev)
{
struct service_hndl *service;
struct list_head *list_itr;
@@ -409,18 +431,24 @@
*/
int
adf_dev_start(struct adf_accel_dev *accel_dev)
+{
+ int ret = 0;
+
+ mutex_lock(&accel_dev->lock);
+ ret = adf_dev_start_locked(accel_dev);
+ mutex_unlock(&accel_dev->lock);
+
+ return ret;
+}
+
+static int
+adf_dev_start_locked(struct adf_accel_dev *accel_dev)
{
struct adf_hw_device_data *hw_data = accel_dev->hw_device;
struct service_hndl *service;
struct list_head *list_itr;
set_bit(ADF_STATUS_STARTING, &accel_dev->status);
- if (adf_devmgr_verify_id(&accel_dev->accel_id)) {
- device_printf(GET_DEV(accel_dev),
- "QAT: Device %d not found\n",
- accel_dev->accel_id);
- return ENODEV;
- }
if (adf_ae_start(accel_dev)) {
device_printf(GET_DEV(accel_dev), "AE Start Failed\n");
return EFAULT;
@@ -489,6 +517,8 @@
clear_bit(ADF_STATUS_STARTING, &accel_dev->status);
set_bit(ADF_STATUS_STARTED, &accel_dev->status);
+ adf_dbgfs_add(accel_dev);
+
return 0;
}
@@ -504,16 +534,25 @@
*/
int
adf_dev_stop(struct adf_accel_dev *accel_dev)
+{
+ int ret = 0;
+
+ mutex_lock(&accel_dev->lock);
+ ret = adf_dev_stop_locked(accel_dev);
+ mutex_unlock(&accel_dev->lock);
+
+ return ret;
+}
+
+static int
+adf_dev_stop_locked(struct adf_accel_dev *accel_dev)
{
struct service_hndl *service;
struct list_head *list_itr;
- if (adf_devmgr_verify_id(&accel_dev->accel_id)) {
- device_printf(GET_DEV(accel_dev),
- "QAT: Device %d not found\n",
- accel_dev->accel_id);
- return ENODEV;
- }
+ if (!test_bit(ADF_STATUS_CONFIGURED, &accel_dev->status))
+ return 0;
+
if (!adf_dev_started(accel_dev) &&
!test_bit(ADF_STATUS_STARTING, &accel_dev->status)) {
return 0;
@@ -526,6 +565,8 @@
return EBUSY;
}
+ adf_dbgfs_rm(accel_dev);
+
clear_bit(ADF_STATUS_STARTING, &accel_dev->status);
clear_bit(ADF_STATUS_STARTED, &accel_dev->status);
@@ -565,11 +606,22 @@
*/
void
adf_dev_shutdown(struct adf_accel_dev *accel_dev)
+{
+ mutex_lock(&accel_dev->lock);
+ adf_dev_shutdown_locked(accel_dev);
+ mutex_unlock(&accel_dev->lock);
+}
+
+static void
+adf_dev_shutdown_locked(struct adf_accel_dev *accel_dev)
{
struct adf_hw_device_data *hw_data = accel_dev->hw_device;
struct service_hndl *service;
struct list_head *list_itr;
+ if (!test_bit(ADF_STATUS_CONFIGURED, &accel_dev->status))
+ return;
+
if (test_bit(ADF_STATUS_SYSCTL_CTX_INITIALISED, &accel_dev->status)) {
sysctl_ctx_free(&accel_dev->sysctl_ctx);
clear_bit(ADF_STATUS_SYSCTL_CTX_INITIALISED,
@@ -618,8 +670,12 @@
}
/* Delete configuration only if not restarting */
- if (!test_bit(ADF_STATUS_RESTARTING, &accel_dev->status))
+ if (!test_bit(ADF_STATUS_RESTARTING, &accel_dev->status)) {
adf_cfg_del_all(accel_dev);
+#ifdef QAT_UIO
+ adf_cfg_device_clear_all(accel_dev);
+#endif
+ }
if (hw_data->remove_pke_stats)
hw_data->remove_pke_stats(accel_dev);
diff --git a/sys/dev/qat/qat_common/adf_pfvf_vf_msg.c b/sys/dev/qat/qat_common/adf_pfvf_vf_msg.c
--- a/sys/dev/qat/qat_common/adf_pfvf_vf_msg.c
+++ b/sys/dev/qat/qat_common/adf_pfvf_vf_msg.c
@@ -1,5 +1,5 @@
/* SPDX-License-Identifier: BSD-3-Clause */
-/* Copyright(c) 2007-2022 Intel Corporation */
+/* Copyright(c) 2007-2025 Intel Corporation */
#include <linux/bitfield.h>
#include "adf_accel_devices.h"
#include "adf_common_drv.h"
@@ -98,6 +98,22 @@
return 0;
}
+void
+adf_vf2pf_restarting_complete(struct adf_accel_dev *accel_dev)
+{
+ struct pfvf_message msg = { .type =
+ ADF_VF2PF_MSGTYPE_RESTARTING_COMPLETE };
+
+ if (accel_dev->u1.vf.pf_compat_ver < ADF_PFVF_COMPAT_FALLBACK)
+ return;
+
+ if (adf_send_vf2pf_msg(accel_dev, msg)) {
+ device_printf(
+ GET_DEV(accel_dev),
+ "Failed to send Restarting complete event to PF\n");
+ }
+}
+
int
adf_vf2pf_get_capabilities(struct adf_accel_dev *accel_dev)
{
@@ -180,5 +196,7 @@
/* Only v1 at present */
accel_dev->hw_device->ring_to_svc_map = rts_map_msg.map;
+ accel_dev->hw_device->get_ring_to_svc_done = true;
+
return 0;
}
diff --git a/sys/dev/qat/qat_common/adf_pfvf_vf_proto.c b/sys/dev/qat/qat_common/adf_pfvf_vf_proto.c
--- a/sys/dev/qat/qat_common/adf_pfvf_vf_proto.c
+++ b/sys/dev/qat/qat_common/adf_pfvf_vf_proto.c
@@ -1,5 +1,5 @@
/* SPDX-License-Identifier: BSD-3-Clause */
-/* Copyright(c) 2007-2022 Intel Corporation */
+/* Copyright(c) 2007-2025 Intel Corporation */
#include <linux/kernel.h>
#include "adf_accel_devices.h"
#include "adf_common_drv.h"
@@ -89,9 +89,15 @@
}
/* Wait for response, if it times out retry */
- ret =
- wait_for_completion_timeout(&accel_dev->u1.vf.msg_received,
- timeout);
+ if (!cold) {
+ ret = wait_for_completion_timeout(
+ &accel_dev->u1.vf.msg_received, timeout);
+ } else {
+ /* In cold start timers may not be initialized yet */
+ DELAY(ADF_PFVF_MSG_RESP_TIMEOUT * 1000);
+ ret = try_wait_for_completion(
+ &accel_dev->u1.vf.msg_received);
+ }
if (ret) {
if (likely(resp))
*resp = accel_dev->u1.vf.response;
@@ -346,6 +352,9 @@
case ADF_PF2VF_MSGTYPE_RP_RESET_RESP:
adf_pf2vf_handle_pf_rp_reset(accel_dev, msg);
return true;
+ case ADF_PF2VF_MSGTYPE_FATAL_ERROR:
+ adf_pf2vf_handle_pf_error(accel_dev);
+ return true;
case ADF_PF2VF_MSGTYPE_VERSION_RESP:
case ADF_PF2VF_MSGTYPE_BLKMSG_RESP:
accel_dev->u1.vf.response = msg;
diff --git a/sys/dev/qat/qat_common/adf_vf_isr.c b/sys/dev/qat/qat_common/adf_vf_isr.c
--- a/sys/dev/qat/qat_common/adf_vf_isr.c
+++ b/sys/dev/qat/qat_common/adf_vf_isr.c
@@ -1,5 +1,5 @@
/* SPDX-License-Identifier: BSD-3-Clause */
-/* Copyright(c) 2007-2022 Intel Corporation */
+/* Copyright(c) 2007-2025 Intel Corporation */
#include "qat_freebsd.h"
#include <sys/kernel.h>
#include <sys/systm.h>
@@ -17,6 +17,7 @@
#include "adf_transport_access_macros.h"
#include "adf_transport_internal.h"
#include "adf_pfvf_utils.h"
+#include "adf_pfvf_vf_msg.h"
static TASKQUEUE_DEFINE_THREAD(qat_vf);
static TASKQUEUE_DEFINE_THREAD(qat_bank_handler);
@@ -65,6 +66,7 @@
/* Re-enable PF2VF interrupts */
hw_data->enable_pf2vf_interrupt(accel_dev);
+ adf_vf2pf_restarting_complete(accel_dev);
kfree(stop_data);
}
@@ -123,6 +125,17 @@
return 0;
}
+int
+adf_pf2vf_handle_pf_error(struct adf_accel_dev *accel_dev)
+{
+ device_printf(GET_DEV(accel_dev), "Fatal error received from PF\n");
+
+ if (adf_notify_fatal_error(accel_dev))
+ device_printf(GET_DEV(accel_dev), "Couldn't notify fatal error\n");
+
+ return 0;
+}
+
static void
adf_pf2vf_bh_handler(void *data, int pending)
{
diff --git a/sys/dev/qat/qat_common/qat_hal.c b/sys/dev/qat/qat_common/qat_hal.c
--- a/sys/dev/qat/qat_common/qat_hal.c
+++ b/sys/dev/qat/qat_common/qat_hal.c
@@ -1,5 +1,5 @@
/* SPDX-License-Identifier: BSD-3-Clause */
-/* Copyright(c) 2007-2022 Intel Corporation */
+/* Copyright(c) 2007-2025 Intel Corporation */
#include "qat_freebsd.h"
#include "adf_cfg.h"
#include "adf_common_drv.h"
@@ -1052,8 +1052,7 @@
handle->hal_cap_ae_xfer_csr_addr_v = ae_offset;
handle->hal_ep_csr_addr_v = ep_offset;
handle->hal_cap_ae_local_csr_addr_v =
- ((uintptr_t)handle->hal_cap_ae_xfer_csr_addr_v +
- LOCAL_TO_XFER_REG_OFFSET);
+ ((uintptr_t)handle->hal_cap_ae_xfer_csr_addr_v + LOCAL_TO_XFER_REG_OFFSET);
handle->fw_auth = (pci_get_device(GET_DEV(handle->accel_dev)) ==
ADF_DH895XCC_PCI_DEVICE_ID) ?
false :
@@ -1283,7 +1282,7 @@
unsigned int max_cycle,
unsigned int *endpc)
{
- uint64_t savuwords[MAX_EXEC_INST];
+ u64 *savuwords = NULL;
unsigned int ind_lm_addr0, ind_lm_addr1;
unsigned int ind_lm_addr2, ind_lm_addr3;
unsigned int ind_lm_addr_byte0, ind_lm_addr_byte1;
@@ -1300,6 +1299,11 @@
pr_err("QAT: invalid instruction num %d\n", inst_num);
return EINVAL;
}
+
+ savuwords = kzalloc(sizeof(u64) * MAX_EXEC_INST, GFP_KERNEL);
+ if (!savuwords)
+ return ENOMEM;
+
/* save current context */
qat_hal_rd_indr_csr(handle, ae, ctx, LM_ADDR_0_INDIRECT, &ind_lm_addr0);
qat_hal_rd_indr_csr(handle, ae, ctx, LM_ADDR_1_INDIRECT, &ind_lm_addr1);
@@ -1360,8 +1364,10 @@
qat_hal_wr_ae_csr(handle, ae, CTX_SIG_EVENTS_ACTIVE, 0);
qat_hal_enable_ctx(handle, ae, (1 << ctx));
/* wait for micro codes to finish */
- if (qat_hal_wait_cycles(handle, ae, max_cycle, 1) != 0)
+ if (qat_hal_wait_cycles(handle, ae, max_cycle, 1) != 0) {
+ kfree(savuwords);
return EFAULT;
+ }
if (endpc) {
unsigned int ctx_status;
@@ -1429,6 +1435,7 @@
handle, ae, (1 << ctx), CTX_SIG_EVENTS_INDIRECT, ind_sig);
qat_hal_wr_ae_csr(handle, ae, CTX_SIG_EVENTS_ACTIVE, act_sig);
qat_hal_wr_ae_csr(handle, ae, CTX_ENABLES, ctx_enables);
+ kfree(savuwords);
return 0;
}
diff --git a/sys/dev/qat/qat_common/qat_uclo.c b/sys/dev/qat/qat_common/qat_uclo.c
--- a/sys/dev/qat/qat_common/qat_uclo.c
+++ b/sys/dev/qat/qat_common/qat_uclo.c
@@ -1,5 +1,5 @@
/* SPDX-License-Identifier: BSD-3-Clause */
-/* Copyright(c) 2007-2022 Intel Corporation */
+/* Copyright(c) 2007-2025 Intel Corporation */
#include "qat_freebsd.h"
#include "adf_cfg.h"
#include "adf_common_drv.h"
@@ -1618,11 +1618,17 @@
unsigned int length, simg_offset = sizeof(*auth_chunk);
unsigned int device_id = pci_get_device(GET_DEV(handle->accel_dev));
+ if (size <= ICP_QAT_AE_IMG_OFFSET(device_id)) {
+ pr_err("QAT: error, input image size too small %d\n", size);
+ return EINVAL;
+ }
+
if (size >
(ICP_QAT_AE_IMG_OFFSET(device_id) + ICP_QAT_CSS_MAX_IMAGE_LEN)) {
pr_err("QAT: error, input image size overflow %d\n", size);
return EINVAL;
}
+
length = (css_hdr->fw_type == CSS_AE_FIRMWARE) ?
ICP_QAT_CSS_AE_SIMG_LEN(device_id) + simg_offset :
size + ICP_QAT_CSS_FWSK_PAD_LEN(device_id) + simg_offset;
@@ -1824,11 +1830,6 @@
GET_DEV(handle->accel_dev)));
return status;
}
- if (pci_get_device(GET_DEV(handle->accel_dev)) ==
- ADF_C3XXX_PCI_DEVICE_ID) {
- pr_err("QAT: C3XXX doesn't support unsigned MMP\n");
- return EINVAL;
- }
status = qat_uclo_wr_sram_by_words(handle,
handle->hal_sram_offset,
addr_ptr,
diff --git a/sys/dev/qat/qat_hw/qat_200xx/adf_200xx_hw_data.h b/sys/dev/qat/qat_hw/qat_200xx/adf_200xx_hw_data.h
--- a/sys/dev/qat/qat_hw/qat_200xx/adf_200xx_hw_data.h
+++ b/sys/dev/qat/qat_hw/qat_200xx/adf_200xx_hw_data.h
@@ -1,11 +1,11 @@
/* SPDX-License-Identifier: BSD-3-Clause */
-/* Copyright(c) 2007-2022 Intel Corporation */
+/* Copyright(c) 2007-2025 Intel Corporation */
#ifndef ADF_200XX_HW_DATA_H_
#define ADF_200XX_HW_DATA_H_
/* PCIe configuration space */
-#define ADF_200XX_PMISC_BAR 0
-#define ADF_200XX_ETR_BAR 1
+#define ADF_200XX_PMISC_BAR 1
+#define ADF_200XX_ETR_BAR 2
#define ADF_200XX_RX_RINGS_OFFSET 8
#define ADF_200XX_TX_RINGS_MASK 0xFF
#define ADF_200XX_MAX_ACCELERATORS 3
diff --git a/sys/dev/qat/qat_hw/qat_200xx/adf_drv.c b/sys/dev/qat/qat_hw/qat_200xx/adf_drv.c
--- a/sys/dev/qat/qat_hw/qat_200xx/adf_drv.c
+++ b/sys/dev/qat/qat_hw/qat_200xx/adf_drv.c
@@ -1,5 +1,5 @@
/* SPDX-License-Identifier: BSD-3-Clause */
-/* Copyright(c) 2007-2022 Intel Corporation */
+/* Copyright(c) 2007-2025 Intel Corporation */
#include "qat_freebsd.h"
#include "adf_cfg.h"
#include "adf_common_drv.h"
@@ -7,13 +7,12 @@
#include "adf_200xx_hw_data.h"
#include "adf_fw_counters.h"
#include "adf_cfg_device.h"
+#include "adf_dbgfs.h"
#include <sys/types.h>
#include <sys/kernel.h>
#include <sys/malloc.h>
#include <machine/bus_dma.h>
#include <dev/pci/pcireg.h>
-#include "adf_heartbeat_dbg.h"
-#include "adf_cnvnr_freq_counters.h"
static MALLOC_DEFINE(M_QAT_200XX, "qat_200xx", "qat_200xx");
@@ -73,6 +72,7 @@
free(accel_dev->hw_device, M_QAT_200XX);
accel_dev->hw_device = NULL;
}
+ adf_dbgfs_exit(accel_dev);
adf_cfg_dev_remove(accel_dev);
adf_devmgr_rm_dev(accel_dev, NULL);
}
@@ -84,7 +84,7 @@
struct adf_accel_pci *accel_pci_dev;
struct adf_hw_device_data *hw_data;
unsigned int i = 0, bar_nr = 0, reg_val = 0;
- int ret, rid;
+ int ret = 0, rid;
struct adf_cfg_device *cfg_dev = NULL;
/* Set pci MaxPayLoad to 256. Implemented to avoid the issue of
@@ -96,6 +96,7 @@
accel_dev = device_get_softc(dev);
+ mutex_init(&accel_dev->lock);
INIT_LIST_HEAD(&accel_dev->crypto_list);
accel_pci_dev = &accel_dev->accel_pci_dev;
accel_pci_dev->pci_dev = dev;
@@ -108,9 +109,10 @@
/* Add accel device to accel table.
* This should be called before adf_cleanup_accel is called
*/
- if (adf_devmgr_add_dev(accel_dev, NULL)) {
+ ret = adf_devmgr_add_dev(accel_dev, NULL);
+ if (ret) {
device_printf(dev, "Failed to add new accelerator device.\n");
- return ENXIO;
+ goto out_err_lock;
}
/* Allocate and configure device configuration structure */
@@ -215,6 +217,8 @@
}
pci_enable_busmaster(dev);
+ adf_dbgfs_init(accel_dev);
+
if (!accel_dev->hw_device->config_device) {
ret = EFAULT;
goto out_err;
@@ -243,6 +247,9 @@
adf_dev_shutdown(accel_dev);
out_err:
adf_cleanup_accel(accel_dev);
+out_err_lock:
+ mutex_destroy(&accel_dev->lock);
+
return ret;
}
@@ -259,6 +266,7 @@
adf_dev_shutdown(accel_dev);
adf_cleanup_accel(accel_dev);
+ mutex_destroy(&accel_dev->lock);
return 0;
}
diff --git a/sys/dev/qat/qat_hw/qat_4xxx/adf_4xxx_hw_data.h b/sys/dev/qat/qat_hw/qat_4xxx/adf_4xxx_hw_data.h
--- a/sys/dev/qat/qat_hw/qat_4xxx/adf_4xxx_hw_data.h
+++ b/sys/dev/qat/qat_hw/qat_4xxx/adf_4xxx_hw_data.h
@@ -1,5 +1,5 @@
/* SPDX-License-Identifier: BSD-3-Clause */
-/* Copyright(c) 2007 - 2022 Intel Corporation */
+/* Copyright(c) 2007-2025 Intel Corporation */
#ifndef ADF_4XXX_HW_DATA_H_
#define ADF_4XXX_HW_DATA_H_
@@ -105,7 +105,7 @@
ICP_ACCEL_4XXX_MASK_COMPRESS_SLICE = BIT(3),
ICP_ACCEL_4XXX_MASK_UCS_SLICE = BIT(4),
ICP_ACCEL_4XXX_MASK_EIA3_SLICE = BIT(5),
- ICP_ACCEL_4XXX_MASK_SMX_SLICE = BIT(6),
+ ICP_ACCEL_4XXX_MASK_SMX_SLICE = BIT(7),
};
void adf_init_hw_data_4xxx(struct adf_hw_device_data *hw_data, u32 id);
diff --git a/sys/dev/qat/qat_hw/qat_4xxx/adf_4xxx_hw_data.c b/sys/dev/qat/qat_hw/qat_4xxx/adf_4xxx_hw_data.c
--- a/sys/dev/qat/qat_hw/qat_4xxx/adf_4xxx_hw_data.c
+++ b/sys/dev/qat/qat_hw/qat_4xxx/adf_4xxx_hw_data.c
@@ -1,5 +1,5 @@
/* SPDX-License-Identifier: BSD-3-Clause */
-/* Copyright(c) 2007-2022 Intel Corporation */
+/* Copyright(c) 2007-2025 Intel Corporation */
#include <linux/iopoll.h>
#include <adf_accel_devices.h>
#include <adf_cfg.h>
@@ -212,57 +212,77 @@
{
device_t pdev = accel_dev->accel_pci_dev.pci_dev;
u32 fusectl1;
- u32 capabilities;
+ u32 capabilities_sym, capabilities_sym_cipher, capabilities_sym_auth,
+ capabilities_asym, capabilities_dc, capabilities_other;
+
+ capabilities_other = ICP_ACCEL_CAPABILITIES_RL;
/* Read accelerator capabilities mask */
fusectl1 = pci_read_config(pdev, ADF_4XXX_FUSECTL1_OFFSET, 4);
- capabilities = ICP_ACCEL_CAPABILITIES_CRYPTO_SYMMETRIC |
- ICP_ACCEL_CAPABILITIES_CRYPTO_ASYMMETRIC |
- ICP_ACCEL_CAPABILITIES_CIPHER |
- ICP_ACCEL_CAPABILITIES_AUTHENTICATION |
- ICP_ACCEL_CAPABILITIES_COMPRESSION |
- ICP_ACCEL_CAPABILITIES_LZ4_COMPRESSION |
- ICP_ACCEL_CAPABILITIES_LZ4S_COMPRESSION |
- ICP_ACCEL_CAPABILITIES_SHA3 | ICP_ACCEL_CAPABILITIES_HKDF |
- ICP_ACCEL_CAPABILITIES_SHA3_EXT | ICP_ACCEL_CAPABILITIES_SM3 |
+
+ capabilities_sym_cipher = ICP_ACCEL_CAPABILITIES_HKDF |
ICP_ACCEL_CAPABILITIES_SM4 | ICP_ACCEL_CAPABILITIES_CHACHA_POLY |
- ICP_ACCEL_CAPABILITIES_AESGCM_SPC | ICP_ACCEL_CAPABILITIES_AES_V2 |
- ICP_ACCEL_CAPABILITIES_RL | ICP_ACCEL_CAPABILITIES_ECEDMONT |
- ICP_ACCEL_CAPABILITIES_CNV_INTEGRITY64;
+ ICP_ACCEL_CAPABILITIES_AESGCM_SPC | ICP_ACCEL_CAPABILITIES_AES_V2;
+ capabilities_sym_auth = ICP_ACCEL_CAPABILITIES_SM3 |
+ ICP_ACCEL_CAPABILITIES_SHA3 | ICP_ACCEL_CAPABILITIES_SHA3_EXT;
+ /* A set bit in fusectl1 means the feature is OFF in this SKU */
if (fusectl1 & ICP_ACCEL_4XXX_MASK_CIPHER_SLICE) {
- capabilities &= ~ICP_ACCEL_CAPABILITIES_CRYPTO_SYMMETRIC;
- capabilities &= ~ICP_ACCEL_CAPABILITIES_HKDF;
- capabilities &= ~ICP_ACCEL_CAPABILITIES_CIPHER;
- }
- if (fusectl1 & ICP_ACCEL_4XXX_MASK_AUTH_SLICE) {
- capabilities &= ~ICP_ACCEL_CAPABILITIES_AUTHENTICATION;
- capabilities &= ~ICP_ACCEL_CAPABILITIES_SHA3;
- capabilities &= ~ICP_ACCEL_CAPABILITIES_SHA3_EXT;
- capabilities &= ~ICP_ACCEL_CAPABILITIES_CIPHER;
+ capabilities_sym_cipher &= ~ICP_ACCEL_CAPABILITIES_HKDF;
+ capabilities_sym_cipher &= ~ICP_ACCEL_CAPABILITIES_SM4;
}
- if (fusectl1 & ICP_ACCEL_MASK_PKE_SLICE) {
- capabilities &= ~ICP_ACCEL_CAPABILITIES_CRYPTO_ASYMMETRIC;
- capabilities &= ~ICP_ACCEL_CAPABILITIES_ECEDMONT;
+
+ if (fusectl1 & ICP_ACCEL_4XXX_MASK_UCS_SLICE) {
+ capabilities_sym_cipher &= ~ICP_ACCEL_CAPABILITIES_CHACHA_POLY;
+ capabilities_sym_cipher &= ~ICP_ACCEL_CAPABILITIES_AESGCM_SPC;
+ capabilities_sym_cipher &= ~ICP_ACCEL_CAPABILITIES_AES_V2;
}
- if (fusectl1 & ICP_ACCEL_4XXX_MASK_COMPRESS_SLICE) {
- capabilities &= ~ICP_ACCEL_CAPABILITIES_COMPRESSION;
- capabilities &= ~ICP_ACCEL_CAPABILITIES_LZ4_COMPRESSION;
- capabilities &= ~ICP_ACCEL_CAPABILITIES_LZ4S_COMPRESSION;
- capabilities &= ~ICP_ACCEL_CAPABILITIES_CNV_INTEGRITY64;
+
+ if (fusectl1 & ICP_ACCEL_4XXX_MASK_AUTH_SLICE) {
+ capabilities_sym_auth &= ~ICP_ACCEL_CAPABILITIES_SM3;
+ capabilities_sym_auth &= ~ICP_ACCEL_CAPABILITIES_SHA3;
+ capabilities_sym_auth &= ~ICP_ACCEL_CAPABILITIES_SHA3_EXT;
}
+
if (fusectl1 & ICP_ACCEL_4XXX_MASK_SMX_SLICE) {
- capabilities &= ~ICP_ACCEL_CAPABILITIES_SM3;
- capabilities &= ~ICP_ACCEL_CAPABILITIES_SM4;
+ capabilities_sym_cipher &= ~ICP_ACCEL_CAPABILITIES_SM4;
+ capabilities_sym_auth &= ~ICP_ACCEL_CAPABILITIES_SM3;
}
- if (fusectl1 & ICP_ACCEL_4XXX_MASK_UCS_SLICE) {
- capabilities &= ~ICP_ACCEL_CAPABILITIES_CHACHA_POLY;
- capabilities &= ~ICP_ACCEL_CAPABILITIES_AESGCM_SPC;
- capabilities &= ~ICP_ACCEL_CAPABILITIES_AES_V2;
- capabilities &= ~ICP_ACCEL_CAPABILITIES_CIPHER;
+
+ if (capabilities_sym_cipher)
+ capabilities_sym_cipher |= ICP_ACCEL_CAPABILITIES_CIPHER;
+
+ if (capabilities_sym_auth)
+ capabilities_sym_auth |= ICP_ACCEL_CAPABILITIES_AUTHENTICATION;
+
+ capabilities_sym = capabilities_sym_cipher | capabilities_sym_auth;
+
+ if (capabilities_sym)
+ capabilities_sym |= ICP_ACCEL_CAPABILITIES_CRYPTO_SYMMETRIC;
+
+ capabilities_asym = ICP_ACCEL_CAPABILITIES_CRYPTO_ASYMMETRIC |
+ ICP_ACCEL_CAPABILITIES_SM2 | ICP_ACCEL_CAPABILITIES_ECEDMONT;
+
+ if (fusectl1 & ICP_ACCEL_4XXX_MASK_PKE_SLICE) {
+ capabilities_asym &= ~ICP_ACCEL_CAPABILITIES_CRYPTO_ASYMMETRIC;
+ capabilities_asym &= ~ICP_ACCEL_CAPABILITIES_SM2;
+ capabilities_asym &= ~ICP_ACCEL_CAPABILITIES_ECEDMONT;
+ }
+
+ capabilities_dc = ICP_ACCEL_CAPABILITIES_COMPRESSION |
+ ICP_ACCEL_CAPABILITIES_LZ4_COMPRESSION |
+ ICP_ACCEL_CAPABILITIES_LZ4S_COMPRESSION |
+ ICP_ACCEL_CAPABILITIES_CNV_INTEGRITY64;
+
+ if (fusectl1 & ICP_ACCEL_4XXX_MASK_COMPRESS_SLICE) {
+ capabilities_dc &= ~ICP_ACCEL_CAPABILITIES_COMPRESSION;
+ capabilities_dc &= ~ICP_ACCEL_CAPABILITIES_LZ4_COMPRESSION;
+ capabilities_dc &= ~ICP_ACCEL_CAPABILITIES_LZ4S_COMPRESSION;
+ capabilities_dc &= ~ICP_ACCEL_CAPABILITIES_CNV_INTEGRITY64;
}
- return capabilities;
+ return capabilities_sym | capabilities_dc | capabilities_asym |
+ capabilities_other;
}
static u32
@@ -709,6 +729,10 @@
memset(&req, 0, sizeof(req));
memset(&resp, 0, sizeof(resp));
req.cmd_id = ICP_QAT_FW_INIT_ME;
+#ifdef QAT_DISABLE_SAFE_DC_MODE
+ if (accel_dev->disable_safe_dc_mode)
+ req.fw_flags = ICP_QAT_FW_INIT_DISABLE_SAFE_DC_MODE_FLAG;
+#endif /* QAT_DISABLE_SAFE_DC_MODE */
if (adf_send_admin(accel_dev, &req, &resp, ae_mask)) {
device_printf(GET_DEV(accel_dev),
"Error sending init message\n");
@@ -989,6 +1013,9 @@
hw_data->get_hb_clock = get_hb_clock;
hw_data->int_timer_init = adf_int_timer_init;
hw_data->int_timer_exit = adf_int_timer_exit;
+ hw_data->pre_reset = adf_dev_pre_reset;
+ hw_data->post_reset = adf_dev_post_reset;
+ hw_data->disable_arb = adf_disable_arb;
hw_data->get_heartbeat_status = adf_get_heartbeat_status;
hw_data->get_ae_clock = get_ae_clock;
hw_data->measure_clock = measure_clock;
diff --git a/sys/dev/qat/qat_hw/qat_4xxx/adf_drv.c b/sys/dev/qat/qat_hw/qat_4xxx/adf_drv.c
--- a/sys/dev/qat/qat_hw/qat_4xxx/adf_drv.c
+++ b/sys/dev/qat/qat_hw/qat_4xxx/adf_drv.c
@@ -1,5 +1,5 @@
/* SPDX-License-Identifier: BSD-3-Clause */
-/* Copyright(c) 2007 - 2022 Intel Corporation */
+/* Copyright(c) 2007-2025 Intel Corporation */
#include "qat_freebsd.h"
#include "adf_cfg.h"
#include "adf_common_drv.h"
@@ -8,13 +8,12 @@
#include "adf_gen4_hw_data.h"
#include "adf_fw_counters.h"
#include "adf_cfg_device.h"
+#include "adf_dbgfs.h"
#include <sys/types.h>
#include <sys/kernel.h>
#include <sys/malloc.h>
#include <machine/bus_dma.h>
#include <dev/pci/pcireg.h>
-#include "adf_heartbeat_dbg.h"
-#include "adf_cnvnr_freq_counters.h"
static MALLOC_DEFINE(M_QAT_4XXX, "qat_4xxx", "qat_4xxx");
@@ -47,6 +46,74 @@
return ENXIO;
}
+#ifdef QAT_DISABLE_SAFE_DC_MODE
+static int adf_4xxx_sysctl_disable_safe_dc_mode(SYSCTL_HANDLER_ARGS)
+{
+ struct adf_accel_dev *accel_dev = arg1;
+ int error, value = accel_dev->disable_safe_dc_mode;
+
+ error = sysctl_handle_int(oidp, &value, 0, req);
+ if (error || !req->newptr)
+ return error;
+
+ if (value != 1 && value != 0)
+ return EINVAL;
+
+ if (adf_dev_started(accel_dev)) {
+ device_printf(
+ GET_DEV(accel_dev),
+ "QAT: configuration can only be changed in \"down\" device state\n");
+ return EBUSY;
+ }
+
+ accel_dev->disable_safe_dc_mode = (u8)value;
+
+ return 0;
+}
+
+static void
+adf_4xxx_disable_safe_dc_sysctl_add(struct adf_accel_dev *accel_dev)
+{
+ struct sysctl_ctx_list *qat_sysctl_ctx;
+ struct sysctl_oid *qat_sysctl_tree;
+
+ qat_sysctl_ctx =
+ device_get_sysctl_ctx(accel_dev->accel_pci_dev.pci_dev);
+ qat_sysctl_tree =
+ device_get_sysctl_tree(accel_dev->accel_pci_dev.pci_dev);
+ accel_dev->safe_dc_mode =
+ SYSCTL_ADD_OID(qat_sysctl_ctx,
+ SYSCTL_CHILDREN(qat_sysctl_tree),
+ OID_AUTO,
+ "disable_safe_dc_mode",
+ CTLTYPE_INT | CTLFLAG_WR | CTLFLAG_TUN |
+ CTLFLAG_SKIP,
+ accel_dev,
+ 0,
+ adf_4xxx_sysctl_disable_safe_dc_mode,
+ "LU",
+ "Disable QAT safe data compression mode");
+}
+
+static void
+adf_4xxx_disable_safe_dc_sysctl_remove(struct adf_accel_dev *accel_dev)
+{
+ int ret;
+ struct sysctl_ctx_list *qat_sysctl_ctx =
+ device_get_sysctl_ctx(accel_dev->accel_pci_dev.pci_dev);
+
+ ret = sysctl_ctx_entry_del(qat_sysctl_ctx, accel_dev->safe_dc_mode);
+ if (ret) {
+ device_printf(GET_DEV(accel_dev), "Failed to delete entry\n");
+ } else {
+ ret = sysctl_remove_oid(accel_dev->safe_dc_mode, 1, 1);
+ if (ret)
+ device_printf(GET_DEV(accel_dev),
+ "Failed to delete oid\n");
+ }
+}
+#endif /* QAT_DISABLE_SAFE_DC_MODE */
+
static void
adf_cleanup_accel(struct adf_accel_dev *accel_dev)
{
@@ -76,6 +143,10 @@
free(accel_dev->hw_device, M_QAT_4XXX);
accel_dev->hw_device = NULL;
}
+#ifdef QAT_DISABLE_SAFE_DC_MODE
+ adf_4xxx_disable_safe_dc_sysctl_remove(accel_dev);
+#endif /* QAT_DISABLE_SAFE_DC_MODE */
+ adf_dbgfs_exit(accel_dev);
adf_cfg_dev_remove(accel_dev);
adf_devmgr_rm_dev(accel_dev, NULL);
}
@@ -87,7 +158,7 @@
struct adf_accel_pci *accel_pci_dev;
struct adf_hw_device_data *hw_data;
unsigned int bar_nr;
- int ret, rid;
+ int ret = 0, rid;
struct adf_cfg_device *cfg_dev = NULL;
/* Set pci MaxPayLoad to 512. Implemented to avoid the issue of
@@ -99,6 +170,7 @@
accel_dev = device_get_softc(dev);
+ mutex_init(&accel_dev->lock);
INIT_LIST_HEAD(&accel_dev->crypto_list);
accel_pci_dev = &accel_dev->accel_pci_dev;
accel_pci_dev->pci_dev = dev;
@@ -109,9 +181,10 @@
/* Add accel device to accel table.
* This should be called before adf_cleanup_accel is called
*/
- if (adf_devmgr_add_dev(accel_dev, NULL)) {
+ ret = adf_devmgr_add_dev(accel_dev, NULL);
+ if (ret) {
device_printf(dev, "Failed to add new accelerator device.\n");
- return ENXIO;
+ goto out_err_lock;
}
/* Allocate and configure device configuration structure */
@@ -121,11 +194,6 @@
adf_init_hw_data_4xxx(accel_dev->hw_device, pci_get_device(dev));
accel_pci_dev->revid = pci_get_revid(dev);
hw_data->fuses = pci_read_config(dev, ADF_4XXX_FUSECTL4_OFFSET, 4);
- if (accel_pci_dev->revid == 0x00) {
- device_printf(dev, "A0 stepping is not supported.\n");
- ret = ENODEV;
- goto out_err;
- }
/* Get PPAERUCM values and store */
ret = adf_aer_store_ppaerucm_reg(dev, hw_data);
@@ -153,6 +221,10 @@
if (ret)
goto out_err;
+#ifdef QAT_DISABLE_SAFE_DC_MODE
+ adf_4xxx_disable_safe_dc_sysctl_add(accel_dev);
+#endif /* QAT_DISABLE_SAFE_DC_MODE */
+
pci_set_max_read_req(dev, 4096);
ret = bus_dma_tag_create(bus_get_dma_tag(dev),
@@ -205,6 +277,8 @@
}
pci_enable_busmaster(dev);
+ adf_dbgfs_init(accel_dev);
+
if (!accel_dev->hw_device->config_device) {
ret = EFAULT;
goto out_err;
@@ -233,6 +307,9 @@
adf_dev_shutdown(accel_dev);
out_err:
adf_cleanup_accel(accel_dev);
+out_err_lock:
+ mutex_destroy(&accel_dev->lock);
+
return ret;
}
@@ -249,6 +326,7 @@
adf_dev_shutdown(accel_dev);
adf_cleanup_accel(accel_dev);
+ mutex_destroy(&accel_dev->lock);
return 0;
}
diff --git a/sys/dev/qat/qat_hw/qat_4xxxvf/adf_4xxxvf_hw_data.h b/sys/dev/qat/qat_hw/qat_4xxxvf/adf_4xxxvf_hw_data.h
--- a/sys/dev/qat/qat_hw/qat_4xxxvf/adf_4xxxvf_hw_data.h
+++ b/sys/dev/qat/qat_hw/qat_4xxxvf/adf_4xxxvf_hw_data.h
@@ -1,5 +1,5 @@
/* SPDX-License-Identifier: BSD-3-Clause */
-/* Copyright(c) 2007-2022 Intel Corporation */
+/* Copyright(c) 2007-2025 Intel Corporation */
#ifndef ADF_4XXXVF_HW_DATA_H_
#define ADF_4XXXVF_HW_DATA_H_
@@ -27,6 +27,18 @@
#define ADF_4XXXIOV_VFFUSECTL4_OFFSET (0x1C4)
#define ADF_4XXXIOV_VFFUSECTL5_OFFSET (0x1C8)
+/*qat_4xxxvf fuse bits are same as qat_4xxx*/
+enum icp_qat_4xxxvf_slice_mask {
+ ICP_ACCEL_4XXXVF_MASK_CIPHER_SLICE = 0x01,
+ ICP_ACCEL_4XXXVF_MASK_AUTH_SLICE = 0x02,
+ ICP_ACCEL_4XXXVF_MASK_PKE_SLICE = 0x04,
+ ICP_ACCEL_4XXXVF_MASK_COMPRESS_SLICE = 0x08,
+ ICP_ACCEL_4XXXVF_MASK_UCS_SLICE = 0x10,
+ ICP_ACCEL_4XXXVF_MASK_EIA3_SLICE = 0x20,
+ /*SM3&SM4 are indicated by same bit*/
+ ICP_ACCEL_4XXXVF_MASK_SMX_SLICE = 0x80,
+};
+
void adf_init_hw_data_4xxxiov(struct adf_hw_device_data *hw_data);
void adf_clean_hw_data_4xxxiov(struct adf_hw_device_data *hw_data);
u32 adf_4xxxvf_get_hw_cap(struct adf_accel_dev *accel_dev);
diff --git a/sys/dev/qat/qat_hw/qat_4xxxvf/adf_4xxxvf_hw_data.c b/sys/dev/qat/qat_hw/qat_4xxxvf/adf_4xxxvf_hw_data.c
--- a/sys/dev/qat/qat_hw/qat_4xxxvf/adf_4xxxvf_hw_data.c
+++ b/sys/dev/qat/qat_hw/qat_4xxxvf/adf_4xxxvf_hw_data.c
@@ -1,5 +1,5 @@
/* SPDX-License-Identifier: BSD-3-Clause */
-/* Copyright(c) 2007-2022 Intel Corporation */
+/* Copyright(c) 2007-2025 Intel Corporation */
#include <adf_accel_devices.h>
#include <adf_cfg.h>
#include <adf_common_drv.h>
@@ -133,45 +133,74 @@
{
device_t pdev = accel_dev->accel_pci_dev.pci_dev;
u32 vffusectl1;
- u32 capabilities;
-
- capabilities = ICP_ACCEL_CAPABILITIES_CRYPTO_SYMMETRIC +
- ICP_ACCEL_CAPABILITIES_CRYPTO_ASYMMETRIC +
- ICP_ACCEL_CAPABILITIES_CIPHER +
- ICP_ACCEL_CAPABILITIES_AUTHENTICATION +
- ICP_ACCEL_CAPABILITIES_COMPRESSION +
- ICP_ACCEL_CAPABILITIES_SHA3_EXT + ICP_ACCEL_CAPABILITIES_SM2 +
- ICP_ACCEL_CAPABILITIES_SM3 + ICP_ACCEL_CAPABILITIES_SM4 +
- ICP_ACCEL_CAPABILITIES_CHACHA_POLY +
- ICP_ACCEL_CAPABILITIES_AESGCM_SPC +
- ICP_ACCEL_CAPABILITIES_CNV_INTEGRITY64 +
- ICP_ACCEL_CAPABILITIES_LZ4_COMPRESSION +
- ICP_ACCEL_CAPABILITIES_LZ4S_COMPRESSION;
+ u32 capabilities_sym, capabilities_sym_cipher, capabilities_sym_auth,
+ capabilities_asym, capabilities_dc;
/* Get fused capabilities */
vffusectl1 = pci_read_config(pdev, ADF_4XXXIOV_VFFUSECTL1_OFFSET, 4);
- if (vffusectl1 & BIT(7)) {
- capabilities &=
- ~(ICP_ACCEL_CAPABILITIES_SM3 + ICP_ACCEL_CAPABILITIES_SM4);
+ capabilities_sym_cipher = ICP_ACCEL_CAPABILITIES_HKDF |
+ ICP_ACCEL_CAPABILITIES_SM4 | ICP_ACCEL_CAPABILITIES_CHACHA_POLY |
+ ICP_ACCEL_CAPABILITIES_AESGCM_SPC | ICP_ACCEL_CAPABILITIES_AES_V2;
+ capabilities_sym_auth = ICP_ACCEL_CAPABILITIES_SM3 |
+ ICP_ACCEL_CAPABILITIES_SHA3 | ICP_ACCEL_CAPABILITIES_SHA3_EXT;
+
+ /* A set bit in vffusectl1 means the feature is OFF in this SKU */
+ if (vffusectl1 & ICP_ACCEL_4XXXVF_MASK_CIPHER_SLICE) {
+ capabilities_sym_cipher &= ~ICP_ACCEL_CAPABILITIES_HKDF;
+ capabilities_sym_cipher &= ~ICP_ACCEL_CAPABILITIES_SM4;
}
- if (vffusectl1 & BIT(6)) {
- capabilities &= ~ICP_ACCEL_CAPABILITIES_SM3;
+
+ if (vffusectl1 & ICP_ACCEL_4XXXVF_MASK_UCS_SLICE) {
+ capabilities_sym_cipher &= ~ICP_ACCEL_CAPABILITIES_CHACHA_POLY;
+ capabilities_sym_cipher &= ~ICP_ACCEL_CAPABILITIES_AESGCM_SPC;
+ capabilities_sym_cipher &= ~ICP_ACCEL_CAPABILITIES_AES_V2;
}
- if (vffusectl1 & BIT(3)) {
- capabilities &= ~(ICP_ACCEL_CAPABILITIES_COMPRESSION +
- ICP_ACCEL_CAPABILITIES_CNV_INTEGRITY64);
+
+ if (vffusectl1 & ICP_ACCEL_4XXXVF_MASK_AUTH_SLICE) {
+ capabilities_sym_auth &= ~ICP_ACCEL_CAPABILITIES_SM3;
+ capabilities_sym_auth &= ~ICP_ACCEL_CAPABILITIES_SHA3;
+ capabilities_sym_auth &= ~ICP_ACCEL_CAPABILITIES_SHA3_EXT;
}
- if (vffusectl1 & BIT(2)) {
- capabilities &= ~ICP_ACCEL_CAPABILITIES_CRYPTO_ASYMMETRIC;
+
+ if (vffusectl1 & ICP_ACCEL_4XXXVF_MASK_SMX_SLICE) {
+ capabilities_sym_cipher &= ~ICP_ACCEL_CAPABILITIES_SM4;
+ capabilities_sym_auth &= ~ICP_ACCEL_CAPABILITIES_SM3;
}
- if (vffusectl1 & BIT(1)) {
- capabilities &= ~ICP_ACCEL_CAPABILITIES_AUTHENTICATION;
+
+ if (capabilities_sym_cipher)
+ capabilities_sym_cipher |= ICP_ACCEL_CAPABILITIES_CIPHER;
+
+ if (capabilities_sym_auth)
+ capabilities_sym_auth |= ICP_ACCEL_CAPABILITIES_AUTHENTICATION;
+
+ capabilities_sym = capabilities_sym_cipher | capabilities_sym_auth;
+
+ if (capabilities_sym)
+ capabilities_sym |= ICP_ACCEL_CAPABILITIES_CRYPTO_SYMMETRIC;
+
+ capabilities_asym = ICP_ACCEL_CAPABILITIES_CRYPTO_ASYMMETRIC |
+ ICP_ACCEL_CAPABILITIES_SM2 | ICP_ACCEL_CAPABILITIES_ECEDMONT;
+
+ if (vffusectl1 & ICP_ACCEL_4XXXVF_MASK_PKE_SLICE) {
+ capabilities_asym &= ~ICP_ACCEL_CAPABILITIES_CRYPTO_ASYMMETRIC;
+ capabilities_asym &= ~ICP_ACCEL_CAPABILITIES_SM2;
+ capabilities_asym &= ~ICP_ACCEL_CAPABILITIES_ECEDMONT;
}
- if (vffusectl1 & BIT(0)) {
- capabilities &= ~ICP_ACCEL_CAPABILITIES_CIPHER;
+
+ capabilities_dc = ICP_ACCEL_CAPABILITIES_COMPRESSION |
+ ICP_ACCEL_CAPABILITIES_LZ4_COMPRESSION |
+ ICP_ACCEL_CAPABILITIES_LZ4S_COMPRESSION |
+ ICP_ACCEL_CAPABILITIES_CNV_INTEGRITY64;
+
+ if (vffusectl1 & ICP_ACCEL_4XXXVF_MASK_COMPRESS_SLICE) {
+ capabilities_dc &= ~ICP_ACCEL_CAPABILITIES_COMPRESSION;
+ capabilities_dc &= ~ICP_ACCEL_CAPABILITIES_LZ4_COMPRESSION;
+ capabilities_dc &= ~ICP_ACCEL_CAPABILITIES_LZ4S_COMPRESSION;
+ capabilities_dc &= ~ICP_ACCEL_CAPABILITIES_CNV_INTEGRITY64;
}
- return capabilities;
+
+ return capabilities_sym | capabilities_dc | capabilities_asym;
}
static void
@@ -265,6 +294,9 @@
char val[ADF_CFG_MAX_KEY_LEN_IN_BYTES];
u32 i = 0;
+ if (accel_dev->hw_device->get_ring_to_svc_done)
+ return 0;
+
/* Get the services enabled by user if provided.
* The function itself will also be called during the driver probe
* procedure where no ServicesEnable is provided. Then the device
diff --git a/sys/dev/qat/qat_hw/qat_4xxxvf/adf_drv.c b/sys/dev/qat/qat_hw/qat_4xxxvf/adf_drv.c
--- a/sys/dev/qat/qat_hw/qat_4xxxvf/adf_drv.c
+++ b/sys/dev/qat/qat_hw/qat_4xxxvf/adf_drv.c
@@ -1,5 +1,5 @@
/* SPDX-License-Identifier: BSD-3-Clause */
-/* Copyright(c) 2007-2022 Intel Corporation */
+/* Copyright(c) 2007-2025 Intel Corporation */
#include "qat_freebsd.h"
#include <adf_accel_devices.h>
#include <adf_common_drv.h>
@@ -8,6 +8,7 @@
#include "adf_gen4_hw_data.h"
#include "adf_fw_counters.h"
#include "adf_cfg_device.h"
+#include "adf_dbgfs.h"
#include <sys/types.h>
#include <sys/kernel.h>
#include <sys/malloc.h>
@@ -83,6 +84,7 @@
free(accel_dev->hw_device, M_QAT_4XXXVF);
accel_dev->hw_device = NULL;
}
+ adf_dbgfs_exit(accel_dev);
adf_cfg_dev_remove(accel_dev);
}
@@ -99,6 +101,7 @@
struct adf_cfg_device *cfg_dev = NULL;
accel_dev = device_get_softc(dev);
+ mutex_init(&accel_dev->lock);
accel_dev->is_vf = true;
pf = adf_devmgr_pci_to_accel_dev(pci_find_pf(dev));
@@ -110,11 +113,13 @@
accel_pci_dev->node = 0;
/* Add accel device to accel table */
- if (adf_devmgr_add_dev(accel_dev, pf)) {
+ ret = adf_devmgr_add_dev(accel_dev, pf);
+ if (ret) {
device_printf(GET_DEV(accel_dev),
"Failed to add new accelerator device.\n");
- return -EFAULT;
+ goto out_err_lock;
}
+
/* Allocate and configure device configuration structure */
hw_data = malloc(sizeof(*hw_data), M_QAT_4XXXVF, M_WAITOK | M_ZERO);
accel_dev->hw_device = hw_data;
@@ -150,6 +155,8 @@
NULL,
NULL,
&accel_dev->dma_tag);
+ if (ret)
+ goto out_err;
hw_data->accel_capabilities_mask = adf_4xxxvf_get_hw_cap(accel_dev);
@@ -178,7 +185,11 @@
bar->base_addr = rman_get_start(bar->virt_addr);
bar->size = rman_get_size(bar->virt_addr);
}
- pci_enable_busmaster(dev);
+ ret = pci_enable_busmaster(dev);
+ if (ret)
+ goto out_err;
+
+ adf_dbgfs_init(accel_dev);
/* Completion for VF2PF request/response message exchange */
init_completion(&accel_dev->u1.vf.msg_received);
@@ -186,7 +197,7 @@
ret = hw_data->config_device(accel_dev);
if (ret)
- goto out_err;
+ goto out_err_disable;
ret = adf_dev_init(accel_dev);
if (!ret)
@@ -208,8 +219,13 @@
return ret;
+out_err_disable:
+ pci_disable_busmaster(dev);
out_err:
adf_cleanup_accel(accel_dev);
+out_err_lock:
+ mutex_destroy(&accel_dev->lock);
+
return ret;
}
@@ -228,6 +244,7 @@
adf_dev_stop(accel_dev);
adf_dev_shutdown(accel_dev);
adf_cleanup_accel(accel_dev);
+ mutex_destroy(&accel_dev->lock);
return 0;
}
diff --git a/sys/dev/qat/qat_hw/qat_c3xxx/adf_c3xxx_hw_data.h b/sys/dev/qat/qat_hw/qat_c3xxx/adf_c3xxx_hw_data.h
--- a/sys/dev/qat/qat_hw/qat_c3xxx/adf_c3xxx_hw_data.h
+++ b/sys/dev/qat/qat_hw/qat_c3xxx/adf_c3xxx_hw_data.h
@@ -1,11 +1,11 @@
/* SPDX-License-Identifier: BSD-3-Clause */
-/* Copyright(c) 2007-2022 Intel Corporation */
+/* Copyright(c) 2007-2025 Intel Corporation */
#ifndef ADF_C3XXX_HW_DATA_H_
#define ADF_C3XXX_HW_DATA_H_
/* PCIe configuration space */
-#define ADF_C3XXX_PMISC_BAR 0
-#define ADF_C3XXX_ETR_BAR 1
+#define ADF_C3XXX_PMISC_BAR 1
+#define ADF_C3XXX_ETR_BAR 2
#define ADF_C3XXX_RX_RINGS_OFFSET 8
#define ADF_C3XXX_TX_RINGS_MASK 0xFF
#define ADF_C3XXX_MAX_ACCELERATORS 3
diff --git a/sys/dev/qat/qat_hw/qat_c3xxx/adf_drv.c b/sys/dev/qat/qat_hw/qat_c3xxx/adf_drv.c
--- a/sys/dev/qat/qat_hw/qat_c3xxx/adf_drv.c
+++ b/sys/dev/qat/qat_hw/qat_c3xxx/adf_drv.c
@@ -1,5 +1,5 @@
/* SPDX-License-Identifier: BSD-3-Clause */
-/* Copyright(c) 2007-2022 Intel Corporation */
+/* Copyright(c) 2007-2025 Intel Corporation */
#include "qat_freebsd.h"
#include "adf_cfg.h"
#include "adf_common_drv.h"
@@ -7,13 +7,12 @@
#include "adf_c3xxx_hw_data.h"
#include "adf_fw_counters.h"
#include "adf_cfg_device.h"
+#include "adf_dbgfs.h"
#include <sys/types.h>
#include <sys/kernel.h>
#include <sys/malloc.h>
#include <machine/bus_dma.h>
#include <dev/pci/pcireg.h>
-#include "adf_heartbeat_dbg.h"
-#include "adf_cnvnr_freq_counters.h"
static MALLOC_DEFINE(M_QAT_C3XXX, "qat_c3xxx", "qat_c3xxx");
@@ -73,6 +72,7 @@
free(accel_dev->hw_device, M_QAT_C3XXX);
accel_dev->hw_device = NULL;
}
+ adf_dbgfs_exit(accel_dev);
adf_cfg_dev_remove(accel_dev);
adf_devmgr_rm_dev(accel_dev, NULL);
}
@@ -84,7 +84,7 @@
struct adf_accel_pci *accel_pci_dev;
struct adf_hw_device_data *hw_data;
unsigned int i, bar_nr;
- int ret, rid;
+ int ret = 0, rid;
struct adf_cfg_device *cfg_dev = NULL;
/* Set pci MaxPayLoad to 256. Implemented to avoid the issue of
@@ -95,6 +95,7 @@
accel_dev = device_get_softc(dev);
+ mutex_init(&accel_dev->lock);
INIT_LIST_HEAD(&accel_dev->crypto_list);
accel_pci_dev = &accel_dev->accel_pci_dev;
accel_pci_dev->pci_dev = dev;
@@ -106,9 +107,10 @@
/* Add accel device to accel table.
* This should be called before adf_cleanup_accel is called */
- if (adf_devmgr_add_dev(accel_dev, NULL)) {
+ ret = adf_devmgr_add_dev(accel_dev, NULL);
+ if (ret) {
device_printf(dev, "Failed to add new accelerator device.\n");
- return ENXIO;
+ goto out_err_lock;
}
/* Allocate and configure device configuration structure */
@@ -204,6 +206,8 @@
}
pci_enable_busmaster(dev);
+ adf_dbgfs_init(accel_dev);
+
if (!accel_dev->hw_device->config_device) {
ret = EFAULT;
goto out_err;
@@ -232,6 +236,9 @@
adf_dev_shutdown(accel_dev);
out_err:
adf_cleanup_accel(accel_dev);
+out_err_lock:
+ mutex_destroy(&accel_dev->lock);
+
return ret;
}
@@ -248,6 +255,7 @@
adf_dev_shutdown(accel_dev);
adf_cleanup_accel(accel_dev);
+ mutex_destroy(&accel_dev->lock);
return 0;
}
diff --git a/sys/dev/qat/qat_hw/qat_c4xxx/adf_c4xxx_ae_config.c b/sys/dev/qat/qat_hw/qat_c4xxx/adf_c4xxx_ae_config.c
--- a/sys/dev/qat/qat_hw/qat_c4xxx/adf_c4xxx_ae_config.c
+++ b/sys/dev/qat/qat_hw/qat_c4xxx/adf_c4xxx_ae_config.c
@@ -1,5 +1,5 @@
/* SPDX-License-Identifier: BSD-3-Clause */
-/* Copyright(c) 2007-2022 Intel Corporation */
+/* Copyright(c) 2007-2025 Intel Corporation */
#include "adf_c4xxx_hw_data.h"
#include <linux/kernel.h>
#include <linux/types.h>
@@ -9,6 +9,7 @@
#include <linux/io.h>
#include <sys/sbuf.h>
#include <sys/sysctl.h>
+#include <sys/priv.h>
#include <adf_accel_devices.h>
#include <adf_common_drv.h>
#include <adf_cfg.h>
@@ -59,6 +60,10 @@
u8 ae_index;
u8 num_aes;
int ret = 0;
+
+ if (priv_check(curthread, PRIV_DRIVER) != 0)
+ return EPERM;
+
u32 num_au = hw_data->get_num_accel_units(hw_data);
sbuf_new_for_sysctl(&sb, NULL, 2048, req);
diff --git a/sys/dev/qat/qat_hw/qat_c4xxx/adf_c4xxx_hw_data.c b/sys/dev/qat/qat_hw/qat_c4xxx/adf_c4xxx_hw_data.c
--- a/sys/dev/qat/qat_hw/qat_c4xxx/adf_c4xxx_hw_data.c
+++ b/sys/dev/qat/qat_hw/qat_c4xxx/adf_c4xxx_hw_data.c
@@ -1,5 +1,5 @@
/* SPDX-License-Identifier: BSD-3-Clause */
-/* Copyright(c) 2007-2022 Intel Corporation */
+/* Copyright(c) 2007-2025 Intel Corporation */
#include <linux/atomic.h>
#include <linux/compiler.h>
#include <adf_accel_devices.h>
@@ -858,10 +858,10 @@
if (!au_info->asym_ae_msk)
disabled_caps = ICP_ACCEL_CAPABILITIES_CRYPTO_ASYMMETRIC |
- ICP_ACCEL_CAPABILITIES_AUTHENTICATION;
-
+ ICP_ACCEL_CAPABILITIES_ECEDMONT;
if (!au_info->sym_ae_msk)
disabled_caps |= ICP_ACCEL_CAPABILITIES_CRYPTO_SYMMETRIC |
+ ICP_ACCEL_CAPABILITIES_AUTHENTICATION |
ICP_ACCEL_CAPABILITIES_CIPHER | ICP_ACCEL_CAPABILITIES_ZUC |
ICP_ACCEL_CAPABILITIES_SHA3_EXT |
ICP_ACCEL_CAPABILITIES_SM3 | ICP_ACCEL_CAPABILITIES_SM4 |
diff --git a/sys/dev/qat/qat_hw/qat_c4xxx/adf_c4xxx_misc_error_stats.c b/sys/dev/qat/qat_hw/qat_c4xxx/adf_c4xxx_misc_error_stats.c
--- a/sys/dev/qat/qat_hw/qat_c4xxx/adf_c4xxx_misc_error_stats.c
+++ b/sys/dev/qat/qat_hw/qat_c4xxx/adf_c4xxx_misc_error_stats.c
@@ -1,11 +1,12 @@
/* SPDX-License-Identifier: BSD-3-Clause */
-/* Copyright(c) 2007-2022 Intel Corporation */
+/* Copyright(c) 2007-2025 Intel Corporation */
#include "adf_c4xxx_hw_data.h"
#include "adf_c4xxx_misc_error_stats.h"
#include "adf_common_drv.h"
#include "adf_cfg_common.h"
#include <sys/sbuf.h>
#include <sys/sysctl.h>
+#include <sys/priv.h>
#define MISC_ERROR_DBG_FILE "misc_error_stats"
#define LINE \
@@ -23,6 +24,9 @@
{
struct sbuf sb;
+ if (priv_check(curthread, PRIV_DRIVER) != 0)
+ return EPERM;
+
sbuf_new_for_sysctl(&sb, NULL, 256, req);
sbuf_printf(&sb, "\n");
sbuf_printf(&sb, LINE);
diff --git a/sys/dev/qat/qat_hw/qat_c4xxx/adf_c4xxx_pke_replay_stats.c b/sys/dev/qat/qat_hw/qat_c4xxx/adf_c4xxx_pke_replay_stats.c
--- a/sys/dev/qat/qat_hw/qat_c4xxx/adf_c4xxx_pke_replay_stats.c
+++ b/sys/dev/qat/qat_hw/qat_c4xxx/adf_c4xxx_pke_replay_stats.c
@@ -1,11 +1,12 @@
/* SPDX-License-Identifier: BSD-3-Clause */
-/* Copyright(c) 2007-2022 Intel Corporation */
+/* Copyright(c) 2007-2025 Intel Corporation */
#include "adf_c4xxx_hw_data.h"
#include "adf_c4xxx_pke_replay_stats.h"
#include "adf_common_drv.h"
#include "icp_qat_fw_init_admin.h"
#include <sys/sbuf.h>
#include <sys/sysctl.h>
+#include <sys/priv.h>
#define PKE_REPLAY_DBG_FILE "pke_replay_stats"
#define LINE \
@@ -21,6 +22,9 @@
u64 suc_counter = 0;
u64 unsuc_counter = 0;
+ if (priv_check(curthread, PRIV_DRIVER) != 0)
+ return EPERM;
+
sbuf_new_for_sysctl(&sb, NULL, 256, req);
sbuf_printf(&sb, "\n");
diff --git a/sys/dev/qat/qat_hw/qat_c4xxx/adf_c4xxx_ras.c b/sys/dev/qat/qat_hw/qat_c4xxx/adf_c4xxx_ras.c
--- a/sys/dev/qat/qat_hw/qat_c4xxx/adf_c4xxx_ras.c
+++ b/sys/dev/qat/qat_hw/qat_c4xxx/adf_c4xxx_ras.c
@@ -1,10 +1,11 @@
/* SPDX-License-Identifier: BSD-3-Clause */
-/* Copyright(c) 2007-2022 Intel Corporation */
+/* Copyright(c) 2007-2025 Intel Corporation */
#include "adf_c4xxx_ras.h"
#include "adf_accel_devices.h"
#include "adf_c4xxx_hw_data.h"
#include <adf_dev_err.h>
#include "adf_c4xxx_inline.h"
+#include <sys/priv.h>
#define ADF_RAS_STR_LEN 64
@@ -13,6 +14,9 @@
struct adf_accel_dev *accel_dev = arg1;
unsigned long counter = 0;
+ if (priv_check(curthread, PRIV_DRIVER) != 0)
+ return EPERM;
+
if (accel_dev->ras_counters)
counter = atomic_read(&accel_dev->ras_counters[ADF_RAS_CORR]);
@@ -24,6 +28,9 @@
struct adf_accel_dev *accel_dev = arg1;
unsigned long counter = 0;
+ if (priv_check(curthread, PRIV_DRIVER) != 0)
+ return EPERM;
+
if (accel_dev->ras_counters)
counter = atomic_read(&accel_dev->ras_counters[ADF_RAS_UNCORR]);
@@ -35,6 +42,9 @@
struct adf_accel_dev *accel_dev = arg1;
unsigned long counter = 0;
+ if (priv_check(curthread, PRIV_DRIVER) != 0)
+ return EPERM;
+
if (accel_dev->ras_counters)
counter = atomic_read(&accel_dev->ras_counters[ADF_RAS_FATAL]);
@@ -47,6 +57,9 @@
int value = 0;
int ret = SYSCTL_IN(req, &value, sizeof(value));
+ if (priv_check(curthread, PRIV_DRIVER) != 0)
+ return EPERM;
+
if (!ret && value != 0 && accel_dev->ras_counters) {
}
diff --git a/sys/dev/qat/qat_hw/qat_c4xxx/adf_drv.c b/sys/dev/qat/qat_hw/qat_c4xxx/adf_drv.c
--- a/sys/dev/qat/qat_hw/qat_c4xxx/adf_drv.c
+++ b/sys/dev/qat/qat_hw/qat_c4xxx/adf_drv.c
@@ -1,5 +1,5 @@
/* SPDX-License-Identifier: BSD-3-Clause */
-/* Copyright(c) 2007-2022 Intel Corporation */
+/* Copyright(c) 2007-2025 Intel Corporation */
#include "qat_freebsd.h"
#include "adf_cfg.h"
#include "adf_common_drv.h"
@@ -7,13 +7,12 @@
#include "adf_c4xxx_hw_data.h"
#include "adf_fw_counters.h"
#include "adf_cfg_device.h"
+#include "adf_dbgfs.h"
#include <sys/types.h>
#include <sys/kernel.h>
#include <sys/malloc.h>
#include <machine/bus_dma.h>
#include <dev/pci/pcireg.h>
-#include "adf_heartbeat_dbg.h"
-#include "adf_cnvnr_freq_counters.h"
static MALLOC_DEFINE(M_QAT_C4XXX, "qat_c4xx", "qat_c4xx");
@@ -73,6 +72,7 @@
free(accel_dev->hw_device, M_QAT_C4XXX);
accel_dev->hw_device = NULL;
}
+ adf_dbgfs_exit(accel_dev);
adf_cfg_dev_remove(accel_dev);
adf_devmgr_rm_dev(accel_dev, NULL);
}
@@ -84,7 +84,7 @@
struct adf_accel_pci *accel_pci_dev;
struct adf_hw_device_data *hw_data;
unsigned int i, bar_nr;
- int ret, rid;
+ int ret = 0, rid;
struct adf_cfg_device *cfg_dev = NULL;
/* Set pci MaxPayLoad to 256. Implemented to avoid the issue of
@@ -96,6 +96,7 @@
accel_dev = device_get_softc(dev);
+ mutex_init(&accel_dev->lock);
INIT_LIST_HEAD(&accel_dev->crypto_list);
accel_pci_dev = &accel_dev->accel_pci_dev;
accel_pci_dev->pci_dev = dev;
@@ -108,9 +109,10 @@
/* Add accel device to accel table.
* This should be called before adf_cleanup_accel is called
*/
- if (adf_devmgr_add_dev(accel_dev, NULL)) {
+ ret = adf_devmgr_add_dev(accel_dev, NULL);
+ if (ret) {
device_printf(dev, "Failed to add new accelerator device.\n");
- return ENXIO;
+ goto out_err_lock;
}
/* Allocate and configure device configuration structure */
@@ -203,6 +205,8 @@
}
pci_enable_busmaster(dev);
+ adf_dbgfs_init(accel_dev);
+
if (!accel_dev->hw_device->config_device) {
ret = EFAULT;
goto out_err;
@@ -231,6 +235,9 @@
adf_dev_shutdown(accel_dev);
out_err:
adf_cleanup_accel(accel_dev);
+out_err_lock:
+ mutex_destroy(&accel_dev->lock);
+
return ret;
}
@@ -247,6 +254,7 @@
adf_dev_shutdown(accel_dev);
adf_cleanup_accel(accel_dev);
+ mutex_destroy(&accel_dev->lock);
return 0;
}
diff --git a/sys/dev/qat/qat_hw/qat_c62x/adf_drv.c b/sys/dev/qat/qat_hw/qat_c62x/adf_drv.c
--- a/sys/dev/qat/qat_hw/qat_c62x/adf_drv.c
+++ b/sys/dev/qat/qat_hw/qat_c62x/adf_drv.c
@@ -1,5 +1,5 @@
/* SPDX-License-Identifier: BSD-3-Clause */
-/* Copyright(c) 2007-2022 Intel Corporation */
+/* Copyright(c) 2007-2025 Intel Corporation */
#include "qat_freebsd.h"
#include "adf_cfg.h"
#include "adf_common_drv.h"
@@ -7,13 +7,12 @@
#include "adf_c62x_hw_data.h"
#include "adf_fw_counters.h"
#include "adf_cfg_device.h"
+#include "adf_dbgfs.h"
#include <sys/types.h>
#include <sys/kernel.h>
#include <sys/malloc.h>
#include <machine/bus_dma.h>
#include <dev/pci/pcireg.h>
-#include "adf_heartbeat_dbg.h"
-#include "adf_cnvnr_freq_counters.h"
static MALLOC_DEFINE(M_QAT_C62X, "qat_c62x", "qat_c62x");
@@ -73,6 +72,7 @@
free(accel_dev->hw_device, M_QAT_C62X);
accel_dev->hw_device = NULL;
}
+ adf_dbgfs_exit(accel_dev);
adf_cfg_dev_remove(accel_dev);
adf_devmgr_rm_dev(accel_dev, NULL);
}
@@ -84,7 +84,7 @@
struct adf_accel_pci *accel_pci_dev;
struct adf_hw_device_data *hw_data;
unsigned int i, bar_nr;
- int ret, rid;
+ int ret = 0, rid;
struct adf_cfg_device *cfg_dev = NULL;
/* Set pci MaxPayLoad to 256. Implemented to avoid the issue of
@@ -95,6 +95,7 @@
accel_dev = device_get_softc(dev);
+ mutex_init(&accel_dev->lock);
INIT_LIST_HEAD(&accel_dev->crypto_list);
accel_pci_dev = &accel_dev->accel_pci_dev;
accel_pci_dev->pci_dev = dev;
@@ -106,9 +107,10 @@
/* Add accel device to accel table.
* This should be called before adf_cleanup_accel is called */
- if (adf_devmgr_add_dev(accel_dev, NULL)) {
+ ret = adf_devmgr_add_dev(accel_dev, NULL);
+ if (ret) {
device_printf(dev, "Failed to add new accelerator device.\n");
- return ENXIO;
+ goto out_err_lock;
}
/* Allocate and configure device configuration structure */
@@ -205,6 +207,8 @@
}
pci_enable_busmaster(dev);
+ adf_dbgfs_init(accel_dev);
+
if (!accel_dev->hw_device->config_device) {
ret = EFAULT;
goto out_err;
@@ -233,6 +237,9 @@
adf_dev_shutdown(accel_dev);
out_err:
adf_cleanup_accel(accel_dev);
+out_err_lock:
+ mutex_destroy(&accel_dev->lock);
+
return ret;
}
@@ -249,6 +256,7 @@
adf_dev_shutdown(accel_dev);
adf_cleanup_accel(accel_dev);
+ mutex_destroy(&accel_dev->lock);
return 0;
}
diff --git a/sys/dev/qat/qat_hw/qat_dh895xcc/adf_drv.c b/sys/dev/qat/qat_hw/qat_dh895xcc/adf_drv.c
--- a/sys/dev/qat/qat_hw/qat_dh895xcc/adf_drv.c
+++ b/sys/dev/qat/qat_hw/qat_dh895xcc/adf_drv.c
@@ -1,5 +1,5 @@
/* SPDX-License-Identifier: BSD-3-Clause */
-/* Copyright(c) 2007-2022 Intel Corporation */
+/* Copyright(c) 2007-2025 Intel Corporation */
#include "qat_freebsd.h"
#include "adf_cfg.h"
#include "adf_common_drv.h"
@@ -7,13 +7,12 @@
#include "adf_dh895xcc_hw_data.h"
#include "adf_fw_counters.h"
#include "adf_cfg_device.h"
+#include "adf_dbgfs.h"
#include <sys/types.h>
#include <sys/kernel.h>
#include <sys/malloc.h>
#include <machine/bus_dma.h>
#include <dev/pci/pcireg.h>
-#include "adf_heartbeat_dbg.h"
-#include "adf_cnvnr_freq_counters.h"
static MALLOC_DEFINE(M_QAT_DH895XCC, "qat_dh895xcc", "qat_dh895xcc");
@@ -73,6 +72,7 @@
free(accel_dev->hw_device, M_QAT_DH895XCC);
accel_dev->hw_device = NULL;
}
+ adf_dbgfs_exit(accel_dev);
adf_cfg_dev_remove(accel_dev);
adf_devmgr_rm_dev(accel_dev, NULL);
}
@@ -84,7 +84,7 @@
struct adf_accel_pci *accel_pci_dev;
struct adf_hw_device_data *hw_data;
unsigned int i, bar_nr;
- int ret, rid;
+ int ret = 0, rid;
struct adf_cfg_device *cfg_dev = NULL;
/* Set pci MaxPayLoad to 256. Implemented to avoid the issue of
@@ -95,6 +95,7 @@
accel_dev = device_get_softc(dev);
+ mutex_init(&accel_dev->lock);
INIT_LIST_HEAD(&accel_dev->crypto_list);
accel_pci_dev = &accel_dev->accel_pci_dev;
accel_pci_dev->pci_dev = dev;
@@ -104,9 +105,10 @@
/* Add accel device to accel table.
* This should be called before adf_cleanup_accel is called */
- if (adf_devmgr_add_dev(accel_dev, NULL)) {
+ ret = adf_devmgr_add_dev(accel_dev, NULL);
+ if (ret) {
device_printf(dev, "Failed to add new accelerator device.\n");
- return ENXIO;
+ goto out_err_lock;
}
/* Allocate and configure device configuration structure */
@@ -193,6 +195,8 @@
}
pci_enable_busmaster(dev);
+ adf_dbgfs_init(accel_dev);
+
if (!accel_dev->hw_device->config_device) {
ret = EFAULT;
goto out_err;
@@ -221,6 +225,9 @@
adf_dev_shutdown(accel_dev);
out_err:
adf_cleanup_accel(accel_dev);
+out_err_lock:
+ mutex_destroy(&accel_dev->lock);
+
return ret;
}
@@ -237,6 +244,8 @@
adf_dev_shutdown(accel_dev);
adf_cleanup_accel(accel_dev);
+ mutex_destroy(&accel_dev->lock);
+
return 0;
}
diff --git a/sys/modules/qat/qat/Makefile b/sys/modules/qat/qat/Makefile
--- a/sys/modules/qat/qat/Makefile
+++ b/sys/modules/qat/qat/Makefile
@@ -4,7 +4,7 @@
KMOD= qat
SRCS+= qat_ocf.c qat_ocf_mem_pool.c qat_ocf_utils.c
-SRCS+= device_if.h bus_if.h vnode_if.h pci_if.h cryptodev_if.h
+SRCS+= device_if.h bus_if.h vnode_if.h pci_if.h cryptodev_if.h opt_qat.h
CFLAGS+= ${LINUXKPI_INCLUDES}
CFLAGS+= -I${SRCTOP}/sys/dev/qat/include
@@ -17,6 +17,17 @@
CFLAGS+= -I${SRCTOP}/sys/dev/qat/qat_api/firmware/include
CFLAGS+= -I${SRCTOP}/sys/dev/qat/qat_api/common/crypto/sym/include
+.if !defined(KERNBUILDDIR)
+CFLAGS+= -include opt_qat.h
+MKDEP= -include opt_qat.h
+
+opt_qat.h:
+ :> ${.TARGET}
+.if defined(QAT_DISABLE_SAFE_DC_MODE) && ${QAT_DISABLE_SAFE_DC_MODE} == "1"
+ @echo "#define QAT_DISABLE_SAFE_DC_MODE 1" > ${.TARGET}
+.endif
+.endif
+
.include <bsd.kmod.mk>
.if ${COMPILER_TYPE} == "clang"
diff --git a/sys/modules/qat/qat_api/Makefile b/sys/modules/qat/qat_api/Makefile
--- a/sys/modules/qat/qat_api/Makefile
+++ b/sys/modules/qat/qat_api/Makefile
@@ -60,7 +60,7 @@
SRCS+= qat_utils/src/QatUtilsSpinLock.c
SRCS+= qat_utils/src/QatUtilsAtomic.c
SRCS+= qat_utils/src/QatUtilsCrypto.c
-SRCS+= bus_if.h cryptodev_if.h device_if.h pci_if.h vnode_if.h
+SRCS+= bus_if.h cryptodev_if.h device_if.h pci_if.h vnode_if.h opt_qat.h
CFLAGS+= -I${SRCTOP}/sys/dev/qat/qat_api/include
CFLAGS+= -I${SRCTOP}/sys/dev/qat/qat_api/include/lac
@@ -74,6 +74,17 @@
CFLAGS+= -I${SRCTOP}/sys/dev/qat/include/common
CFLAGS+= ${LINUXKPI_INCLUDES}
+.if !defined(KERNBUILDDIR)
+CFLAGS+= -include opt_qat.h
+MKDEP= -include opt_qat.h
+
+opt_qat.h:
+ :> ${.TARGET}
+.if defined(QAT_DISABLE_SAFE_DC_MODE) && ${QAT_DISABLE_SAFE_DC_MODE} == "1"
+ @echo "#define QAT_DISABLE_SAFE_DC_MODE 1" > ${.TARGET}
+.endif
+.endif
+
.include <bsd.kmod.mk>
CWARNFLAGS+= -Wno-cast-qual
diff --git a/sys/modules/qat/qat_common/Makefile b/sys/modules/qat/qat_common/Makefile
--- a/sys/modules/qat/qat_common/Makefile
+++ b/sys/modules/qat/qat_common/Makefile
@@ -22,11 +22,23 @@
SRCS+= adf_gen4vf_hw_csr_data.c
SRCS+= adf_freebsd_transport_debug.c adf_clock.c
SRCS+= adf_freebsd_cnvnr_ctrs_dbg.c
+SRCS+= adf_freebsd_dbgfs.c
SRCS+= adf_freebsd_pfvf_ctrs_dbg.c
-SRCS+= bus_if.h device_if.h pci_if.h vnode_if.h
+SRCS+= bus_if.h device_if.h pci_if.h vnode_if.h opt_qat.h
CFLAGS+= -I${SRCTOP}/sys/dev/qat/include
CFLAGS+= -I${SRCTOP}/sys/dev/qat/include/common
CFLAGS+= ${LINUXKPI_INCLUDES}
+.if !defined(KERNBUILDDIR)
+CFLAGS+= -include opt_qat.h
+MKDEP= -include opt_qat.h
+
+opt_qat.h:
+ :> ${.TARGET}
+.if defined(QAT_DISABLE_SAFE_DC_MODE) && ${QAT_DISABLE_SAFE_DC_MODE} == "1"
+ @echo "#define QAT_DISABLE_SAFE_DC_MODE 1" > ${.TARGET}
+.endif
+.endif
+
.include <bsd.kmod.mk>
diff --git a/sys/modules/qat/qat_hw/Makefile b/sys/modules/qat/qat_hw/Makefile
--- a/sys/modules/qat/qat_hw/Makefile
+++ b/sys/modules/qat/qat_hw/Makefile
@@ -12,7 +12,7 @@
SRCS+= qat_c4xxx/adf_c4xxx_hw_data.c qat_c4xxx/adf_drv.c qat_c4xxx/adf_c4xxx_ae_config.c qat_c4xxx/adf_c4xxx_misc_error_stats.c
SRCS+= qat_c4xxx/adf_c4xxx_pke_replay_stats.c qat_c4xxx/adf_c4xxx_ras.c qat_c4xxx/adf_c4xxx_res_part.c
SRCS+= qat_c4xxx/adf_c4xxx_reset.c
-SRCS+= device_if.h bus_if.h vnode_if.h pci_if.h cryptodev_if.h
+SRCS+= device_if.h bus_if.h vnode_if.h pci_if.h cryptodev_if.h opt_qat.h
CFLAGS+= ${LINUXKPI_INCLUDES}
CFLAGS+= -I${SRCTOP}/sys/dev/qat/include
@@ -25,4 +25,15 @@
CFLAGS+= -I${SRCTOP}/sys/dev/qat/qat_api/firmware/include
CFLAGS+= -I${SRCTOP}/sys/dev/qat/qat_api/common/crypto/sym/include
+.if !defined(KERNBUILDDIR)
+CFLAGS+= -include opt_qat.h
+MKDEP= -include opt_qat.h
+
+opt_qat.h:
+ :> ${.TARGET}
+.if defined(QAT_DISABLE_SAFE_DC_MODE) && ${QAT_DISABLE_SAFE_DC_MODE} == "1"
+ @echo "#define QAT_DISABLE_SAFE_DC_MODE 1" > ${.TARGET}
+.endif
+.endif
+
.include <bsd.kmod.mk>

File Metadata

Mime Type
text/plain
Expires
Sat, Dec 13, 3:22 AM (10 h, 58 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
26919815
Default Alt Text
D50379.id155568.diff (655 KB)

Event Timeline