crypto: qat - store the PFVF protocol version of the endpoints
authorMarco Chiappero <marco.chiappero@intel.com>
Thu, 16 Dec 2021 09:13:24 +0000 (09:13 +0000)
committerHerbert Xu <herbert@gondor.apana.org.au>
Fri, 24 Dec 2021 03:18:25 +0000 (14:18 +1100)
This patch adds an entry for storing the PFVF protocol version for both
PF and VFs. While not currently used, knowing and storing the remote
protocol version enables more complex compatibility checks and/or newer
features for compatible PFVF endpoints in the future.

Signed-off-by: Marco Chiappero <marco.chiappero@intel.com>
Reviewed-by: Giovanni Cabiddu <giovanni.cabiddu@intel.com>
Reviewed-by: Fiona Trahe <fiona.trahe@intel.com>
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
drivers/crypto/qat/qat_common/adf_accel_devices.h
drivers/crypto/qat/qat_common/adf_pfvf_pf_proto.c
drivers/crypto/qat/qat_common/adf_pfvf_vf_msg.c
drivers/crypto/qat/qat_common/adf_sriov.c

index d5ccefc041535987a7582134758326940957041c..1fb32f3e78df61fc718864907f8790a8ea13c21e 100644 (file)
@@ -249,6 +249,7 @@ struct adf_accel_vf_info {
        struct ratelimit_state vf2pf_ratelimit;
        u32 vf_nr;
        bool init;
+       u8 vf_compat_ver;
 };
 
 struct adf_accel_dev {
@@ -278,7 +279,7 @@ struct adf_accel_dev {
                        struct mutex vf2pf_lock; /* protect CSR access */
                        struct completion msg_received;
                        struct pfvf_message response; /* temp field holding pf2vf response */
-                       u8 pf_version;
+                       u8 pf_compat_ver;
                } vf;
        };
        bool is_vf;
index 8785b9d1df91ab97aeac13972cebf41f9ac932cb..f461aa0a95c7edea659ae5b9b9aafcd151a73d19 100644 (file)
@@ -64,6 +64,8 @@ static int adf_handle_vf2pf_msg(struct adf_accel_dev *accel_dev, u8 vf_nr,
                else
                        compat = ADF_PF2VF_VF_COMPAT_UNKNOWN;
 
+               vf_info->vf_compat_ver = vf_compat_ver;
+
                resp->type = ADF_PF2VF_MSGTYPE_VERSION_RESP;
                resp->data = FIELD_PREP(ADF_PF2VF_VERSION_RESP_VERS_MASK,
                                        ADF_PFVF_COMPAT_THIS_VERSION) |
@@ -78,6 +80,9 @@ static int adf_handle_vf2pf_msg(struct adf_accel_dev *accel_dev, u8 vf_nr,
                        "Legacy VersionRequest received from VF%d to PF (vers 1.1)\n",
                        vf_nr);
 
+               /* legacy driver, VF compat_ver is 0 */
+               vf_info->vf_compat_ver = 0;
+
                /* PF always newer than legacy VF */
                compat = ADF_PF2VF_VF_COMPATIBLE;
 
index 130d7b9c12ea74e991138af68f432286b330de05..307d593042f3e1b4ee2a83fa7f0976f16c5bd118 100644 (file)
@@ -89,6 +89,6 @@ int adf_vf2pf_request_version(struct adf_accel_dev *accel_dev)
                return -EINVAL;
        }
 
-       accel_dev->vf.pf_version = pf_version;
+       accel_dev->vf.pf_compat_ver = pf_version;
        return 0;
 }
index 429990c5e0f34c5afec813ad300f8b25ed937945..6366622ff8fd1147bd379601c0bc58c287374332 100644 (file)
@@ -58,6 +58,7 @@ static int adf_enable_sriov(struct adf_accel_dev *accel_dev)
                /* This ptr will be populated when VFs will be created */
                vf_info->accel_dev = accel_dev;
                vf_info->vf_nr = i;
+               vf_info->vf_compat_ver = 0;
 
                mutex_init(&vf_info->pf2vf_lock);
                ratelimit_state_init(&vf_info->vf2pf_ratelimit,