crypto: qat - refactor fw config related functions
authorGiovanni Cabiddu <giovanni.cabiddu@intel.com>
Fri, 20 Oct 2023 13:49:21 +0000 (15:49 +0200)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Mon, 20 Nov 2023 10:59:23 +0000 (11:59 +0100)
[ Upstream commit 2990d2edac6061c6f0f646a46e40957244be2268 ]

The logic that selects the correct adf_fw_config structure based on the
configured service is replicated twice in the uof_get_name() and
uof_get_ae_mask() functions. Refactor the code so that there is no
replication.

This does not introduce any functional change.

Signed-off-by: Giovanni Cabiddu <giovanni.cabiddu@intel.com>
Reviewed-by: Damian Muszynski <damian.muszynski@intel.com>
Reviewed-by: Tero Kristo <tero.kristo@linux.intel.com>
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
Stable-dep-of: a238487f7965 ("crypto: qat - fix ring to service map for QAT GEN4")
Signed-off-by: Sasha Levin <sashal@kernel.org>
drivers/crypto/intel/qat/qat_4xxx/adf_4xxx_hw_data.c

index 12b5d18..1083926 100644 (file)
@@ -394,40 +394,42 @@ static u32 uof_get_num_objs(void)
        return ARRAY_SIZE(adf_fw_cy_config);
 }
 
-static const char *uof_get_name(struct adf_accel_dev *accel_dev, u32 obj_num,
-                               const char * const fw_objs[], int num_objs)
+static const struct adf_fw_config *get_fw_config(struct adf_accel_dev *accel_dev)
 {
-       int id;
-
        switch (get_service_enabled(accel_dev)) {
        case SVC_CY:
        case SVC_CY2:
-               id = adf_fw_cy_config[obj_num].obj;
-               break;
+               return adf_fw_cy_config;
        case SVC_DC:
-               id = adf_fw_dc_config[obj_num].obj;
-               break;
+               return adf_fw_dc_config;
        case SVC_DCC:
-               id = adf_fw_dcc_config[obj_num].obj;
-               break;
+               return adf_fw_dcc_config;
        case SVC_SYM:
-               id = adf_fw_sym_config[obj_num].obj;
-               break;
+               return adf_fw_sym_config;
        case SVC_ASYM:
-               id =  adf_fw_asym_config[obj_num].obj;
-               break;
+               return adf_fw_asym_config;
        case SVC_ASYM_DC:
        case SVC_DC_ASYM:
-               id = adf_fw_asym_dc_config[obj_num].obj;
-               break;
+               return adf_fw_asym_dc_config;
        case SVC_SYM_DC:
        case SVC_DC_SYM:
-               id = adf_fw_sym_dc_config[obj_num].obj;
-               break;
+               return adf_fw_sym_dc_config;
        default:
-               id = -EINVAL;
-               break;
+               return NULL;
        }
+}
+
+static const char *uof_get_name(struct adf_accel_dev *accel_dev, u32 obj_num,
+                               const char * const fw_objs[], int num_objs)
+{
+       const struct adf_fw_config *fw_config;
+       int id;
+
+       fw_config = get_fw_config(accel_dev);
+       if (fw_config)
+               id = fw_config[obj_num].obj;
+       else
+               id = -EINVAL;
 
        if (id < 0 || id > num_objs)
                return NULL;
@@ -451,28 +453,13 @@ static const char *uof_get_name_402xx(struct adf_accel_dev *accel_dev, u32 obj_n
 
 static u32 uof_get_ae_mask(struct adf_accel_dev *accel_dev, u32 obj_num)
 {
-       switch (get_service_enabled(accel_dev)) {
-       case SVC_CY:
-               return adf_fw_cy_config[obj_num].ae_mask;
-       case SVC_DC:
-               return adf_fw_dc_config[obj_num].ae_mask;
-       case SVC_DCC:
-               return adf_fw_dcc_config[obj_num].ae_mask;
-       case SVC_CY2:
-               return adf_fw_cy_config[obj_num].ae_mask;
-       case SVC_SYM:
-               return adf_fw_sym_config[obj_num].ae_mask;
-       case SVC_ASYM:
-               return adf_fw_asym_config[obj_num].ae_mask;
-       case SVC_ASYM_DC:
-       case SVC_DC_ASYM:
-               return adf_fw_asym_dc_config[obj_num].ae_mask;
-       case SVC_SYM_DC:
-       case SVC_DC_SYM:
-               return adf_fw_sym_dc_config[obj_num].ae_mask;
-       default:
+       const struct adf_fw_config *fw_config;
+
+       fw_config = get_fw_config(accel_dev);
+       if (!fw_config)
                return 0;
-       }
+
+       return fw_config[obj_num].ae_mask;
 }
 
 void adf_init_hw_data_4xxx(struct adf_hw_device_data *hw_data, u32 dev_id)