Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

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: Marco Chiappero <marco.chiappero@intel.com>
Co-developed-by: Giovanni Cabiddu <giovanni.cabiddu@intel.com>
Signed-off-by: Giovanni Cabiddu <giovanni.cabiddu@intel.com>
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>

authored by

Marco Chiappero and committed by
Herbert Xu
c35c76c6 25110fd2

+23 -19
+23 -19
drivers/crypto/qat/qat_common/adf_pfvf_pf_proto.c
··· 47 47 case ADF_VF2PF_MSGTYPE_COMPAT_VER_REQ: 48 48 { 49 49 u8 vf_compat_ver = msg >> ADF_VF2PF_COMPAT_VER_REQ_SHIFT; 50 - 51 - resp = (ADF_PF2VF_MSGORIGIN_SYSTEM | 52 - (ADF_PF2VF_MSGTYPE_VERSION_RESP << 53 - ADF_PF2VF_MSGTYPE_SHIFT) | 54 - (ADF_PFVF_COMPAT_THIS_VERSION << 55 - ADF_PF2VF_VERSION_RESP_VERS_SHIFT)); 50 + u8 compat; 56 51 57 52 dev_dbg(&GET_DEV(accel_dev), 58 53 "Compatibility Version Request from VF%d vers=%u\n", ··· 57 62 dev_err(&GET_DEV(accel_dev), 58 63 "VF (vers %d) incompatible with PF (vers %d)\n", 59 64 vf_compat_ver, ADF_PFVF_COMPAT_THIS_VERSION); 60 - resp |= ADF_PF2VF_VF_INCOMPATIBLE << 61 - ADF_PF2VF_VERSION_RESP_RESULT_SHIFT; 65 + compat = ADF_PF2VF_VF_INCOMPATIBLE; 62 66 } else if (vf_compat_ver > ADF_PFVF_COMPAT_THIS_VERSION) { 63 67 dev_err(&GET_DEV(accel_dev), 64 68 "VF (vers %d) compat with PF (vers %d) unkn.\n", 65 69 vf_compat_ver, ADF_PFVF_COMPAT_THIS_VERSION); 66 - resp |= ADF_PF2VF_VF_COMPAT_UNKNOWN << 67 - ADF_PF2VF_VERSION_RESP_RESULT_SHIFT; 70 + compat = ADF_PF2VF_VF_COMPAT_UNKNOWN; 68 71 } else { 69 72 dev_dbg(&GET_DEV(accel_dev), 70 73 "VF (vers %d) compatible with PF (vers %d)\n", 71 74 vf_compat_ver, ADF_PFVF_COMPAT_THIS_VERSION); 72 - resp |= ADF_PF2VF_VF_COMPATIBLE << 73 - ADF_PF2VF_VERSION_RESP_RESULT_SHIFT; 75 + compat = ADF_PF2VF_VF_COMPATIBLE; 74 76 } 77 + 78 + resp = ADF_PF2VF_MSGORIGIN_SYSTEM; 79 + resp |= ADF_PF2VF_MSGTYPE_VERSION_RESP << 80 + ADF_PF2VF_MSGTYPE_SHIFT; 81 + resp |= ADF_PFVF_COMPAT_THIS_VERSION << 82 + ADF_PF2VF_VERSION_RESP_VERS_SHIFT; 83 + resp |= compat << ADF_PF2VF_VERSION_RESP_RESULT_SHIFT; 75 84 } 76 85 break; 77 86 case ADF_VF2PF_MSGTYPE_VERSION_REQ: 87 + { 88 + u8 compat; 89 + 78 90 dev_dbg(&GET_DEV(accel_dev), 79 91 "Legacy VersionRequest received from VF%d 0x%x\n", 80 92 vf_nr + 1, msg); 81 - resp = (ADF_PF2VF_MSGORIGIN_SYSTEM | 82 - (ADF_PF2VF_MSGTYPE_VERSION_RESP << 83 - ADF_PF2VF_MSGTYPE_SHIFT) | 84 - (ADF_PFVF_COMPAT_THIS_VERSION << 85 - ADF_PF2VF_VERSION_RESP_VERS_SHIFT)); 86 - resp |= ADF_PF2VF_VF_COMPATIBLE << 87 - ADF_PF2VF_VERSION_RESP_RESULT_SHIFT; 93 + 94 + /* PF always newer than legacy VF */ 95 + compat = ADF_PF2VF_VF_COMPATIBLE; 96 + 97 + resp = ADF_PF2VF_MSGORIGIN_SYSTEM; 98 + resp |= ADF_PF2VF_MSGTYPE_VERSION_RESP << 99 + ADF_PF2VF_MSGTYPE_SHIFT; 88 100 /* Set legacy major and minor version num */ 89 101 resp |= 1 << ADF_PF2VF_MAJORVERSION_SHIFT | 90 102 1 << ADF_PF2VF_MINORVERSION_SHIFT; 103 + resp |= compat << ADF_PF2VF_VERSION_RESP_RESULT_SHIFT; 104 + } 91 105 break; 92 106 case ADF_VF2PF_MSGTYPE_INIT: 93 107 {