OSDN Git Service

crypto: qat - set CIPHER capability for QAT GEN2
authorGiovanni Cabiddu <giovanni.cabiddu@intel.com>
Thu, 16 Dec 2021 09:13:12 +0000 (09:13 +0000)
committerHerbert Xu <herbert@gondor.apana.org.au>
Fri, 24 Dec 2021 03:18:23 +0000 (14:18 +1100)
Set the CIPHER capability for QAT GEN2 devices if the hardware supports
it. This is done if both the CIPHER and the AUTHENTICATION engines are
available on the device.

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

index 3b48fda..3ea26f2 100644 (file)
@@ -211,17 +211,23 @@ u32 adf_gen2_get_accel_cap(struct adf_accel_dev *accel_dev)
        u32 legfuses;
        u32 capabilities = ICP_ACCEL_CAPABILITIES_CRYPTO_SYMMETRIC |
                           ICP_ACCEL_CAPABILITIES_CRYPTO_ASYMMETRIC |
-                          ICP_ACCEL_CAPABILITIES_AUTHENTICATION;
+                          ICP_ACCEL_CAPABILITIES_AUTHENTICATION |
+                          ICP_ACCEL_CAPABILITIES_CIPHER;
 
        /* Read accelerator capabilities mask */
        pci_read_config_dword(pdev, ADF_DEVICE_LEGFUSE_OFFSET, &legfuses);
 
-       if (legfuses & ICP_ACCEL_MASK_CIPHER_SLICE)
+       /* A set bit in legfuses means the feature is OFF in this SKU */
+       if (legfuses & ICP_ACCEL_MASK_CIPHER_SLICE) {
                capabilities &= ~ICP_ACCEL_CAPABILITIES_CRYPTO_SYMMETRIC;
+               capabilities &= ~ICP_ACCEL_CAPABILITIES_CIPHER;
+       }
        if (legfuses & ICP_ACCEL_MASK_PKE_SLICE)
                capabilities &= ~ICP_ACCEL_CAPABILITIES_CRYPTO_ASYMMETRIC;
-       if (legfuses & ICP_ACCEL_MASK_AUTH_SLICE)
+       if (legfuses & ICP_ACCEL_MASK_AUTH_SLICE) {
                capabilities &= ~ICP_ACCEL_CAPABILITIES_AUTHENTICATION;
+               capabilities &= ~ICP_ACCEL_CAPABILITIES_CIPHER;
+       }
 
        if ((straps | fuses) & ADF_POWERGATE_PKE)
                capabilities &= ~ICP_ACCEL_CAPABILITIES_CRYPTO_ASYMMETRIC;