提交 925b3069 编写于 作者: M Marco Chiappero 提交者: Herbert Xu

crypto: qat - config VFs based on ring-to-svc mapping

Change the configuration logic for the VF driver to leverage the
ring-to-service mappings now received via PFVF.

While the driver config logic is not yet capable of supporting
configurations other than the default mapping, make sure that both VF
and PF share the same default configuration in order to work properly.
Signed-off-by: NMarco Chiappero <marco.chiappero@intel.com>
Reviewed-by: NGiovanni Cabiddu <giovanni.cabiddu@intel.com>
Reviewed-by: NFiona Trahe <fiona.trahe@intel.com>
Signed-off-by: NHerbert Xu <herbert@gondor.apana.org.au>
上级 e1b176af
...@@ -173,10 +173,6 @@ static int adf_probe(struct pci_dev *pdev, const struct pci_device_id *ent) ...@@ -173,10 +173,6 @@ static int adf_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
/* Completion for VF2PF request/response message exchange */ /* Completion for VF2PF request/response message exchange */
init_completion(&accel_dev->vf.msg_received); init_completion(&accel_dev->vf.msg_received);
ret = qat_crypto_dev_config(accel_dev);
if (ret)
goto out_err_free_reg;
ret = adf_dev_init(accel_dev); ret = adf_dev_init(accel_dev);
if (ret) if (ret)
goto out_err_dev_shutdown; goto out_err_dev_shutdown;
......
...@@ -173,10 +173,6 @@ static int adf_probe(struct pci_dev *pdev, const struct pci_device_id *ent) ...@@ -173,10 +173,6 @@ static int adf_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
/* Completion for VF2PF request/response message exchange */ /* Completion for VF2PF request/response message exchange */
init_completion(&accel_dev->vf.msg_received); init_completion(&accel_dev->vf.msg_received);
ret = qat_crypto_dev_config(accel_dev);
if (ret)
goto out_err_free_reg;
ret = adf_dev_init(accel_dev); ret = adf_dev_init(accel_dev);
if (ret) if (ret)
goto out_err_dev_shutdown; goto out_err_dev_shutdown;
......
...@@ -114,6 +114,7 @@ void adf_cleanup_etr_data(struct adf_accel_dev *accel_dev); ...@@ -114,6 +114,7 @@ void adf_cleanup_etr_data(struct adf_accel_dev *accel_dev);
int qat_crypto_register(void); int qat_crypto_register(void);
int qat_crypto_unregister(void); int qat_crypto_unregister(void);
int qat_crypto_dev_config(struct adf_accel_dev *accel_dev); int qat_crypto_dev_config(struct adf_accel_dev *accel_dev);
int qat_crypto_vf_dev_config(struct adf_accel_dev *accel_dev);
struct qat_crypto_instance *qat_crypto_get_instance_node(int node); struct qat_crypto_instance *qat_crypto_get_instance_node(int node);
void qat_crypto_put_instance(struct qat_crypto_instance *inst); void qat_crypto_put_instance(struct qat_crypto_instance *inst);
void qat_alg_callback(void *resp); void qat_alg_callback(void *resp);
......
...@@ -69,7 +69,8 @@ int adf_dev_init(struct adf_accel_dev *accel_dev) ...@@ -69,7 +69,8 @@ int adf_dev_init(struct adf_accel_dev *accel_dev)
return -EFAULT; return -EFAULT;
} }
if (!test_bit(ADF_STATUS_CONFIGURED, &accel_dev->status)) { if (!test_bit(ADF_STATUS_CONFIGURED, &accel_dev->status) &&
!accel_dev->is_vf) {
dev_err(&GET_DEV(accel_dev), "Device not configured\n"); dev_err(&GET_DEV(accel_dev), "Device not configured\n");
return -EFAULT; return -EFAULT;
} }
...@@ -121,6 +122,12 @@ int adf_dev_init(struct adf_accel_dev *accel_dev) ...@@ -121,6 +122,12 @@ int adf_dev_init(struct adf_accel_dev *accel_dev)
if (ret) if (ret)
return ret; return ret;
if (!test_bit(ADF_STATUS_CONFIGURED, &accel_dev->status) &&
accel_dev->is_vf) {
if (qat_crypto_vf_dev_config(accel_dev))
return -EFAULT;
}
/* /*
* Subservice initialisation is divided into two stages: init and start. * Subservice initialisation is divided into two stages: init and start.
* This is to facilitate any ordering dependencies between services * This is to facilitate any ordering dependencies between services
......
...@@ -8,6 +8,7 @@ ...@@ -8,6 +8,7 @@
#include "adf_transport_access_macros.h" #include "adf_transport_access_macros.h"
#include "adf_cfg.h" #include "adf_cfg.h"
#include "adf_cfg_strings.h" #include "adf_cfg_strings.h"
#include "adf_gen2_hw_data.h"
#include "qat_crypto.h" #include "qat_crypto.h"
#include "icp_qat_fw.h" #include "icp_qat_fw.h"
...@@ -104,6 +105,30 @@ struct qat_crypto_instance *qat_crypto_get_instance_node(int node) ...@@ -104,6 +105,30 @@ struct qat_crypto_instance *qat_crypto_get_instance_node(int node)
return inst; return inst;
} }
/**
* qat_crypto_vf_dev_config()
* create dev config required to create crypto inst.
*
* @accel_dev: Pointer to acceleration device.
*
* Function creates device configuration required to create
* asym, sym or, crypto instances
*
* Return: 0 on success, error code otherwise.
*/
int qat_crypto_vf_dev_config(struct adf_accel_dev *accel_dev)
{
u16 ring_to_svc_map = GET_HW_DATA(accel_dev)->ring_to_svc_map;
if (ring_to_svc_map != ADF_GEN2_DEFAULT_RING_TO_SRV_MAP) {
dev_err(&GET_DEV(accel_dev),
"Unsupported ring/service mapping present on PF");
return -EFAULT;
}
return qat_crypto_dev_config(accel_dev);
}
/** /**
* qat_crypto_dev_config() - create dev config required to create crypto inst. * qat_crypto_dev_config() - create dev config required to create crypto inst.
* *
......
...@@ -173,10 +173,6 @@ static int adf_probe(struct pci_dev *pdev, const struct pci_device_id *ent) ...@@ -173,10 +173,6 @@ static int adf_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
/* Completion for VF2PF request/response message exchange */ /* Completion for VF2PF request/response message exchange */
init_completion(&accel_dev->vf.msg_received); init_completion(&accel_dev->vf.msg_received);
ret = qat_crypto_dev_config(accel_dev);
if (ret)
goto out_err_free_reg;
ret = adf_dev_init(accel_dev); ret = adf_dev_init(accel_dev);
if (ret) if (ret)
goto out_err_dev_shutdown; goto out_err_dev_shutdown;
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册