Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit a9905320 authored by Tadeusz Struk's avatar Tadeusz Struk Committed by Herbert Xu
Browse files

crypto: qat - Add support for RSA algorithm



Add RSA support to QAT driver.
Removed unused RNG rings.

Signed-off-by: default avatarTadeusz Struk <tadeusz.struk@intel.com>
Signed-off-by: default avatarHerbert Xu <herbert@gondor.apana.org.au>
parent 28cfaf67
Loading
Loading
Loading
Loading
+2 −0
Original line number Original line Diff line number Diff line
@@ -3,11 +3,13 @@ config CRYPTO_DEV_QAT
	select CRYPTO_AEAD
	select CRYPTO_AEAD
	select CRYPTO_AUTHENC
	select CRYPTO_AUTHENC
	select CRYPTO_BLKCIPHER
	select CRYPTO_BLKCIPHER
	select CRYPTO_AKCIPHER
	select CRYPTO_HMAC
	select CRYPTO_HMAC
	select CRYPTO_SHA1
	select CRYPTO_SHA1
	select CRYPTO_SHA256
	select CRYPTO_SHA256
	select CRYPTO_SHA512
	select CRYPTO_SHA512
	select FW_LOADER
	select FW_LOADER
	select ASN1


config CRYPTO_DEV_QAT_DH895xCC
config CRYPTO_DEV_QAT_DH895xCC
	tristate "Support for Intel(R) DH895xCC"
	tristate "Support for Intel(R) DH895xCC"
+1 −0
Original line number Original line Diff line number Diff line
*-asn1.[ch]
+5 −0
Original line number Original line Diff line number Diff line
$(obj)/qat_rsakey-asn1.o: $(obj)/qat_rsakey-asn1.c $(obj)/qat_rsakey-asn1.h
clean-files += qat_rsakey-asn1.c qat_rsakey-asn1.h

obj-$(CONFIG_CRYPTO_DEV_QAT) += intel_qat.o
obj-$(CONFIG_CRYPTO_DEV_QAT) += intel_qat.o
intel_qat-objs := adf_cfg.o \
intel_qat-objs := adf_cfg.o \
	adf_ctl_drv.o \
	adf_ctl_drv.o \
@@ -8,6 +11,8 @@ intel_qat-objs := adf_cfg.o \
	adf_transport.o \
	adf_transport.o \
	qat_crypto.o \
	qat_crypto.o \
	qat_algs.o \
	qat_algs.o \
	qat_rsakey-asn1.o \
	qat_asym_algs.o \
	qat_uclo.o \
	qat_uclo.o \
	qat_hal.o
	qat_hal.o


+9 −1
Original line number Original line Diff line number Diff line
@@ -55,7 +55,7 @@


#define ADF_MAJOR_VERSION	0
#define ADF_MAJOR_VERSION	0
#define ADF_MINOR_VERSION	1
#define ADF_MINOR_VERSION	1
#define ADF_BUILD_VERSION	3
#define ADF_BUILD_VERSION	4
#define ADF_DRV_VERSION		__stringify(ADF_MAJOR_VERSION) "." \
#define ADF_DRV_VERSION		__stringify(ADF_MAJOR_VERSION) "." \
				__stringify(ADF_MINOR_VERSION) "." \
				__stringify(ADF_MINOR_VERSION) "." \
				__stringify(ADF_BUILD_VERSION)
				__stringify(ADF_BUILD_VERSION)
@@ -94,6 +94,11 @@ struct service_hndl {
	int admin;
	int admin;
};
};


static inline int get_current_node(void)
{
	return cpu_data(current_thread_info()->cpu).phys_proc_id;
}

int adf_service_register(struct service_hndl *service);
int adf_service_register(struct service_hndl *service);
int adf_service_unregister(struct service_hndl *service);
int adf_service_unregister(struct service_hndl *service);


@@ -141,10 +146,13 @@ int qat_crypto_unregister(void);
struct qat_crypto_instance *qat_crypto_get_instance_node(int node);
struct qat_crypto_instance *qat_crypto_get_instance_node(int node);
void qat_crypto_put_instance(struct qat_crypto_instance *inst);
void qat_crypto_put_instance(struct qat_crypto_instance *inst);
void qat_alg_callback(void *resp);
void qat_alg_callback(void *resp);
void qat_alg_asym_callback(void *resp);
int qat_algs_init(void);
int qat_algs_init(void);
void qat_algs_exit(void);
void qat_algs_exit(void);
int qat_algs_register(void);
int qat_algs_register(void);
int qat_algs_unregister(void);
int qat_algs_unregister(void);
int qat_asym_algs_register(void);
void qat_asym_algs_unregister(void);


int qat_hal_init(struct adf_accel_dev *accel_dev);
int qat_hal_init(struct adf_accel_dev *accel_dev);
void qat_hal_deinit(struct icp_qat_fw_loader_handle *handle);
void qat_hal_deinit(struct icp_qat_fw_loader_handle *handle);
+3 −1
Original line number Original line Diff line number Diff line
@@ -257,7 +257,7 @@ int adf_dev_start(struct adf_accel_dev *accel_dev)
	clear_bit(ADF_STATUS_STARTING, &accel_dev->status);
	clear_bit(ADF_STATUS_STARTING, &accel_dev->status);
	set_bit(ADF_STATUS_STARTED, &accel_dev->status);
	set_bit(ADF_STATUS_STARTED, &accel_dev->status);


	if (qat_algs_register()) {
	if (qat_algs_register() || qat_asym_algs_register()) {
		dev_err(&GET_DEV(accel_dev),
		dev_err(&GET_DEV(accel_dev),
			"Failed to register crypto algs\n");
			"Failed to register crypto algs\n");
		set_bit(ADF_STATUS_STARTING, &accel_dev->status);
		set_bit(ADF_STATUS_STARTING, &accel_dev->status);
@@ -296,6 +296,8 @@ int adf_dev_stop(struct adf_accel_dev *accel_dev)
		dev_err(&GET_DEV(accel_dev),
		dev_err(&GET_DEV(accel_dev),
			"Failed to unregister crypto algs\n");
			"Failed to unregister crypto algs\n");


	qat_asym_algs_unregister();

	list_for_each(list_itr, &service_table) {
	list_for_each(list_itr, &service_table) {
		service = list_entry(list_itr, struct service_hndl, list);
		service = list_entry(list_itr, struct service_hndl, list);
		if (service->admin)
		if (service->admin)
Loading