Commit e983946d authored by Suman Kumar Chakraborty's avatar Suman Kumar Chakraborty Committed by Herbert Xu
Browse files

crypto: qat - add get_svc_slice_cnt() in device data structure



Enhance the adf_hw_device_data structure by introducing a new callback
function get_svc_slice_cnt(), which provides a mechanism to query the
total number of accelerator available on the device for a specific
service.

Implement adf_gen4_get_svc_slice_cnt() for QAT GEN4 devices to support this
new interface. This function returns the total accelerator count for a
specific service.

Co-developed-by: default avatarGeorge Abraham P <george.abraham.p@intel.com>
Signed-off-by: default avatarGeorge Abraham P <george.abraham.p@intel.com>
Signed-off-by: default avatarSuman Kumar Chakraborty <suman.kumar.chakraborty@intel.com>
Reviewed-by: default avatarGiovanni Cabiddu <giovanni.cabiddu@intel.com>
Signed-off-by: default avatarHerbert Xu <herbert@gondor.apana.org.au>
parent a9552153
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -468,6 +468,7 @@ void adf_init_hw_data_420xx(struct adf_hw_device_data *hw_data, u32 dev_id)
	hw_data->num_hb_ctrs = ADF_NUM_HB_CNT_PER_AE;
	hw_data->clock_frequency = ADF_420XX_AE_FREQ;
	hw_data->services_supported = adf_gen4_services_supported;
	hw_data->get_svc_slice_cnt = adf_gen4_get_svc_slice_cnt;

	adf_gen4_set_err_mask(&hw_data->dev_err_mask);
	adf_gen4_init_hw_csr_ops(&hw_data->csr_ops);
+1 −0
Original line number Diff line number Diff line
@@ -462,6 +462,7 @@ void adf_init_hw_data_4xxx(struct adf_hw_device_data *hw_data, u32 dev_id)
	hw_data->num_hb_ctrs = ADF_NUM_HB_CNT_PER_AE;
	hw_data->clock_frequency = ADF_4XXX_AE_FREQ;
	hw_data->services_supported = adf_gen4_services_supported;
	hw_data->get_svc_slice_cnt = adf_gen4_get_svc_slice_cnt;

	adf_gen4_set_err_mask(&hw_data->dev_err_mask);
	adf_gen4_init_hw_csr_ops(&hw_data->csr_ops);
+2 −0
Original line number Diff line number Diff line
@@ -319,6 +319,8 @@ struct adf_hw_device_data {
	u32 (*get_ena_thd_mask)(struct adf_accel_dev *accel_dev, u32 obj_num);
	int (*dev_config)(struct adf_accel_dev *accel_dev);
	bool (*services_supported)(unsigned long mask);
	u32 (*get_svc_slice_cnt)(struct adf_accel_dev *accel_dev,
				 enum adf_base_services svc);
	struct adf_pfvf_ops pfvf_ops;
	struct adf_hw_csr_ops csr_ops;
	struct adf_dc_ops dc_ops;
+18 −0
Original line number Diff line number Diff line
@@ -580,3 +580,21 @@ void adf_gen4_init_num_svc_aes(struct adf_rl_hw_data *device_data)
	device_data->svc_ae_mask[SVC_DECOMP] = 0;
}
EXPORT_SYMBOL_GPL(adf_gen4_init_num_svc_aes);

u32 adf_gen4_get_svc_slice_cnt(struct adf_accel_dev *accel_dev,
			       enum adf_base_services svc)
{
	struct adf_rl_hw_data *device_data = &accel_dev->hw_device->rl_data;

	switch (svc) {
	case SVC_SYM:
		return device_data->slices.cph_cnt;
	case SVC_ASYM:
		return device_data->slices.pke_cnt;
	case SVC_DC:
		return device_data->slices.dcpr_cnt;
	default:
		return 0;
	}
}
EXPORT_SYMBOL_GPL(adf_gen4_get_svc_slice_cnt);
+2 −0
Original line number Diff line number Diff line
@@ -176,5 +176,7 @@ void adf_gen4_bank_drain_finish(struct adf_accel_dev *accel_dev,
bool adf_gen4_services_supported(unsigned long service_mask);
void adf_gen4_init_dc_ops(struct adf_dc_ops *dc_ops);
void adf_gen4_init_num_svc_aes(struct adf_rl_hw_data *device_data);
u32 adf_gen4_get_svc_slice_cnt(struct adf_accel_dev *accel_dev,
			       enum adf_base_services svc);

#endif
Loading