Commit c35c76c6 authored by Marco Chiappero's avatar Marco Chiappero Committed by Herbert Xu

crypto: qat - refactor pfvf version request messages

Refactor version handling logic for ADF_VF2PF_MSGTYPE_COMPAT_VER_REQ
and ADF_VF2PF_MSGTYPE_VERSION_REQ on the PF.
Response messages are now filled only after fully parsing the request,
in a consisted way with the rest of the PFVF codebase.

This patch also fixes a harmless double setting for VERSION in the
response for ADF_VF2PF_MSGTYPE_VERSION_REQ.
Signed-off-by: default avatarMarco Chiappero <marco.chiappero@intel.com>
Co-developed-by: default avatarGiovanni Cabiddu <giovanni.cabiddu@intel.com>
Signed-off-by: default avatarGiovanni Cabiddu <giovanni.cabiddu@intel.com>
Signed-off-by: default avatarHerbert Xu <herbert@gondor.apana.org.au>
parent 25110fd2
...@@ -47,12 +47,7 @@ static int adf_handle_vf2pf_msg(struct adf_accel_dev *accel_dev, u32 vf_nr, ...@@ -47,12 +47,7 @@ static int adf_handle_vf2pf_msg(struct adf_accel_dev *accel_dev, u32 vf_nr,
case ADF_VF2PF_MSGTYPE_COMPAT_VER_REQ: case ADF_VF2PF_MSGTYPE_COMPAT_VER_REQ:
{ {
u8 vf_compat_ver = msg >> ADF_VF2PF_COMPAT_VER_REQ_SHIFT; u8 vf_compat_ver = msg >> ADF_VF2PF_COMPAT_VER_REQ_SHIFT;
u8 compat;
resp = (ADF_PF2VF_MSGORIGIN_SYSTEM |
(ADF_PF2VF_MSGTYPE_VERSION_RESP <<
ADF_PF2VF_MSGTYPE_SHIFT) |
(ADF_PFVF_COMPAT_THIS_VERSION <<
ADF_PF2VF_VERSION_RESP_VERS_SHIFT));
dev_dbg(&GET_DEV(accel_dev), dev_dbg(&GET_DEV(accel_dev),
"Compatibility Version Request from VF%d vers=%u\n", "Compatibility Version Request from VF%d vers=%u\n",
...@@ -62,37 +57,46 @@ static int adf_handle_vf2pf_msg(struct adf_accel_dev *accel_dev, u32 vf_nr, ...@@ -62,37 +57,46 @@ static int adf_handle_vf2pf_msg(struct adf_accel_dev *accel_dev, u32 vf_nr,
dev_err(&GET_DEV(accel_dev), dev_err(&GET_DEV(accel_dev),
"VF (vers %d) incompatible with PF (vers %d)\n", "VF (vers %d) incompatible with PF (vers %d)\n",
vf_compat_ver, ADF_PFVF_COMPAT_THIS_VERSION); vf_compat_ver, ADF_PFVF_COMPAT_THIS_VERSION);
resp |= ADF_PF2VF_VF_INCOMPATIBLE << compat = ADF_PF2VF_VF_INCOMPATIBLE;
ADF_PF2VF_VERSION_RESP_RESULT_SHIFT;
} else if (vf_compat_ver > ADF_PFVF_COMPAT_THIS_VERSION) { } else if (vf_compat_ver > ADF_PFVF_COMPAT_THIS_VERSION) {
dev_err(&GET_DEV(accel_dev), dev_err(&GET_DEV(accel_dev),
"VF (vers %d) compat with PF (vers %d) unkn.\n", "VF (vers %d) compat with PF (vers %d) unkn.\n",
vf_compat_ver, ADF_PFVF_COMPAT_THIS_VERSION); vf_compat_ver, ADF_PFVF_COMPAT_THIS_VERSION);
resp |= ADF_PF2VF_VF_COMPAT_UNKNOWN << compat = ADF_PF2VF_VF_COMPAT_UNKNOWN;
ADF_PF2VF_VERSION_RESP_RESULT_SHIFT;
} else { } else {
dev_dbg(&GET_DEV(accel_dev), dev_dbg(&GET_DEV(accel_dev),
"VF (vers %d) compatible with PF (vers %d)\n", "VF (vers %d) compatible with PF (vers %d)\n",
vf_compat_ver, ADF_PFVF_COMPAT_THIS_VERSION); vf_compat_ver, ADF_PFVF_COMPAT_THIS_VERSION);
resp |= ADF_PF2VF_VF_COMPATIBLE << compat = ADF_PF2VF_VF_COMPATIBLE;
ADF_PF2VF_VERSION_RESP_RESULT_SHIFT;
} }
resp = ADF_PF2VF_MSGORIGIN_SYSTEM;
resp |= ADF_PF2VF_MSGTYPE_VERSION_RESP <<
ADF_PF2VF_MSGTYPE_SHIFT;
resp |= ADF_PFVF_COMPAT_THIS_VERSION <<
ADF_PF2VF_VERSION_RESP_VERS_SHIFT;
resp |= compat << ADF_PF2VF_VERSION_RESP_RESULT_SHIFT;
} }
break; break;
case ADF_VF2PF_MSGTYPE_VERSION_REQ: case ADF_VF2PF_MSGTYPE_VERSION_REQ:
{
u8 compat;
dev_dbg(&GET_DEV(accel_dev), dev_dbg(&GET_DEV(accel_dev),
"Legacy VersionRequest received from VF%d 0x%x\n", "Legacy VersionRequest received from VF%d 0x%x\n",
vf_nr + 1, msg); vf_nr + 1, msg);
resp = (ADF_PF2VF_MSGORIGIN_SYSTEM |
(ADF_PF2VF_MSGTYPE_VERSION_RESP << /* PF always newer than legacy VF */
ADF_PF2VF_MSGTYPE_SHIFT) | compat = ADF_PF2VF_VF_COMPATIBLE;
(ADF_PFVF_COMPAT_THIS_VERSION <<
ADF_PF2VF_VERSION_RESP_VERS_SHIFT)); resp = ADF_PF2VF_MSGORIGIN_SYSTEM;
resp |= ADF_PF2VF_VF_COMPATIBLE << resp |= ADF_PF2VF_MSGTYPE_VERSION_RESP <<
ADF_PF2VF_VERSION_RESP_RESULT_SHIFT; ADF_PF2VF_MSGTYPE_SHIFT;
/* Set legacy major and minor version num */ /* Set legacy major and minor version num */
resp |= 1 << ADF_PF2VF_MAJORVERSION_SHIFT | resp |= 1 << ADF_PF2VF_MAJORVERSION_SHIFT |
1 << ADF_PF2VF_MINORVERSION_SHIFT; 1 << ADF_PF2VF_MINORVERSION_SHIFT;
resp |= compat << ADF_PF2VF_VERSION_RESP_RESULT_SHIFT;
}
break; break;
case ADF_VF2PF_MSGTYPE_INIT: case ADF_VF2PF_MSGTYPE_INIT:
{ {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment