Torsten Duwe 93b5f1
From 4d03135faa059443a2cfcbee758d9db8bada7fe1 Mon Sep 17 00:00:00 2001
Torsten Duwe 93b5f1
From: Marco Chiappero <marco.chiappero@intel.com>
Torsten Duwe 93b5f1
Date: Thu, 16 Dec 2021 09:13:24 +0000
Torsten Duwe 93b5f1
Subject: [PATCH] crypto: qat - store the PFVF protocol version of the
Torsten Duwe 93b5f1
 endpoints
Torsten Duwe 93b5f1
Git-commit: 4d03135faa059443a2cfcbee758d9db8bada7fe1
Torsten Duwe 93b5f1
Patch-mainline: v5.17-rc1
Torsten Duwe 93b5f1
References: jsc#PED-1073
Torsten Duwe 93b5f1
Torsten Duwe 93b5f1
This patch adds an entry for storing the PFVF protocol version for both
Torsten Duwe 93b5f1
PF and VFs. While not currently used, knowing and storing the remote
Torsten Duwe 93b5f1
protocol version enables more complex compatibility checks and/or newer
Torsten Duwe 93b5f1
features for compatible PFVF endpoints in the future.
Torsten Duwe 93b5f1
Torsten Duwe 93b5f1
Signed-off-by: Marco Chiappero <marco.chiappero@intel.com>
Torsten Duwe 93b5f1
Reviewed-by: Giovanni Cabiddu <giovanni.cabiddu@intel.com>
Torsten Duwe 93b5f1
Reviewed-by: Fiona Trahe <fiona.trahe@intel.com>
Torsten Duwe 93b5f1
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
Torsten Duwe 93b5f1
Signed-off-by: Torsten Duwe <duwe@suse.de>
Torsten Duwe 93b5f1
Torsten Duwe 93b5f1
---
Torsten Duwe 93b5f1
 drivers/crypto/qat/qat_common/adf_accel_devices.h | 3 ++-
Torsten Duwe 93b5f1
 drivers/crypto/qat/qat_common/adf_pfvf_pf_proto.c | 5 +++++
Torsten Duwe 93b5f1
 drivers/crypto/qat/qat_common/adf_pfvf_vf_msg.c   | 2 +-
Torsten Duwe 93b5f1
 drivers/crypto/qat/qat_common/adf_sriov.c         | 1 +
Torsten Duwe 93b5f1
 4 files changed, 9 insertions(+), 2 deletions(-)
Torsten Duwe 93b5f1
Torsten Duwe 93b5f1
diff --git a/drivers/crypto/qat/qat_common/adf_accel_devices.h b/drivers/crypto/qat/qat_common/adf_accel_devices.h
Torsten Duwe 93b5f1
index d5ccefc041535..1fb32f3e78df6 100644
Torsten Duwe 93b5f1
--- a/drivers/crypto/qat/qat_common/adf_accel_devices.h
Torsten Duwe 93b5f1
+++ b/drivers/crypto/qat/qat_common/adf_accel_devices.h
Torsten Duwe 93b5f1
@@ -249,6 +249,7 @@ struct adf_accel_vf_info {
Torsten Duwe 93b5f1
 	struct ratelimit_state vf2pf_ratelimit;
Torsten Duwe 93b5f1
 	u32 vf_nr;
Torsten Duwe 93b5f1
 	bool init;
Torsten Duwe 93b5f1
+	u8 vf_compat_ver;
Torsten Duwe 93b5f1
 };
Torsten Duwe 93b5f1
 
Torsten Duwe 93b5f1
 struct adf_accel_dev {
Torsten Duwe 93b5f1
@@ -278,7 +279,7 @@ struct adf_accel_dev {
Torsten Duwe 93b5f1
 			struct mutex vf2pf_lock; /* protect CSR access */
Torsten Duwe 93b5f1
 			struct completion msg_received;
Torsten Duwe 93b5f1
 			struct pfvf_message response; /* temp field holding pf2vf response */
Torsten Duwe 93b5f1
-			u8 pf_version;
Torsten Duwe 93b5f1
+			u8 pf_compat_ver;
Torsten Duwe 93b5f1
 		} vf;
Torsten Duwe 93b5f1
 	};
Torsten Duwe 93b5f1
 	bool is_vf;
Torsten Duwe 93b5f1
diff --git a/drivers/crypto/qat/qat_common/adf_pfvf_pf_proto.c b/drivers/crypto/qat/qat_common/adf_pfvf_pf_proto.c
Torsten Duwe 93b5f1
index 8785b9d1df91a..f461aa0a95c7e 100644
Torsten Duwe 93b5f1
--- a/drivers/crypto/qat/qat_common/adf_pfvf_pf_proto.c
Torsten Duwe 93b5f1
+++ b/drivers/crypto/qat/qat_common/adf_pfvf_pf_proto.c
Torsten Duwe 93b5f1
@@ -64,6 +64,8 @@ static int adf_handle_vf2pf_msg(struct adf_accel_dev *accel_dev, u8 vf_nr,
Torsten Duwe 93b5f1
 		else
Torsten Duwe 93b5f1
 			compat = ADF_PF2VF_VF_COMPAT_UNKNOWN;
Torsten Duwe 93b5f1
 
Torsten Duwe 93b5f1
+		vf_info->vf_compat_ver = vf_compat_ver;
Torsten Duwe 93b5f1
+
Torsten Duwe 93b5f1
 		resp->type = ADF_PF2VF_MSGTYPE_VERSION_RESP;
Torsten Duwe 93b5f1
 		resp->data = FIELD_PREP(ADF_PF2VF_VERSION_RESP_VERS_MASK,
Torsten Duwe 93b5f1
 					ADF_PFVF_COMPAT_THIS_VERSION) |
Torsten Duwe 93b5f1
@@ -78,6 +80,9 @@ static int adf_handle_vf2pf_msg(struct adf_accel_dev *accel_dev, u8 vf_nr,
Torsten Duwe 93b5f1
 			"Legacy VersionRequest received from VF%d to PF (vers 1.1)\n",
Torsten Duwe 93b5f1
 			vf_nr);
Torsten Duwe 93b5f1
 
Torsten Duwe 93b5f1
+		/* legacy driver, VF compat_ver is 0 */
Torsten Duwe 93b5f1
+		vf_info->vf_compat_ver = 0;
Torsten Duwe 93b5f1
+
Torsten Duwe 93b5f1
 		/* PF always newer than legacy VF */
Torsten Duwe 93b5f1
 		compat = ADF_PF2VF_VF_COMPATIBLE;
Torsten Duwe 93b5f1
 
Torsten Duwe 93b5f1
diff --git a/drivers/crypto/qat/qat_common/adf_pfvf_vf_msg.c b/drivers/crypto/qat/qat_common/adf_pfvf_vf_msg.c
Torsten Duwe 93b5f1
index 130d7b9c12ea7..307d593042f3e 100644
Torsten Duwe 93b5f1
--- a/drivers/crypto/qat/qat_common/adf_pfvf_vf_msg.c
Torsten Duwe 93b5f1
+++ b/drivers/crypto/qat/qat_common/adf_pfvf_vf_msg.c
Torsten Duwe 93b5f1
@@ -89,6 +89,6 @@ int adf_vf2pf_request_version(struct adf_accel_dev *accel_dev)
Torsten Duwe 93b5f1
 		return -EINVAL;
Torsten Duwe 93b5f1
 	}
Torsten Duwe 93b5f1
 
Torsten Duwe 93b5f1
-	accel_dev->vf.pf_version = pf_version;
Torsten Duwe 93b5f1
+	accel_dev->vf.pf_compat_ver = pf_version;
Torsten Duwe 93b5f1
 	return 0;
Torsten Duwe 93b5f1
 }
Torsten Duwe 93b5f1
diff --git a/drivers/crypto/qat/qat_common/adf_sriov.c b/drivers/crypto/qat/qat_common/adf_sriov.c
Torsten Duwe 93b5f1
index 429990c5e0f34..6366622ff8fd1 100644
Torsten Duwe 93b5f1
--- a/drivers/crypto/qat/qat_common/adf_sriov.c
Torsten Duwe 93b5f1
+++ b/drivers/crypto/qat/qat_common/adf_sriov.c
Torsten Duwe 93b5f1
@@ -58,6 +58,7 @@ static int adf_enable_sriov(struct adf_accel_dev *accel_dev)
Torsten Duwe 93b5f1
 		/* This ptr will be populated when VFs will be created */
Torsten Duwe 93b5f1
 		vf_info->accel_dev = accel_dev;
Torsten Duwe 93b5f1
 		vf_info->vf_nr = i;
Torsten Duwe 93b5f1
+		vf_info->vf_compat_ver = 0;
Torsten Duwe 93b5f1
 
Torsten Duwe 93b5f1
 		mutex_init(&vf_info->pf2vf_lock);
Torsten Duwe 93b5f1
 		ratelimit_state_init(&vf_info->vf2pf_ratelimit,
Torsten Duwe 93b5f1
-- 
Torsten Duwe 93b5f1
2.35.3
Torsten Duwe 93b5f1