Skip to content

Commit e983946

Browse files
sumanku3herbertx
authored andcommitted
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: George Abraham P <[email protected]> Signed-off-by: George Abraham P <[email protected]> Signed-off-by: Suman Kumar Chakraborty <[email protected]> Reviewed-by: Giovanni Cabiddu <[email protected]> Signed-off-by: Herbert Xu <[email protected]>
1 parent a955215 commit e983946

File tree

6 files changed

+26
-14
lines changed

6 files changed

+26
-14
lines changed

drivers/crypto/intel/qat/qat_420xx/adf_420xx_hw_data.c

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -468,6 +468,7 @@ void adf_init_hw_data_420xx(struct adf_hw_device_data *hw_data, u32 dev_id)
468468
hw_data->num_hb_ctrs = ADF_NUM_HB_CNT_PER_AE;
469469
hw_data->clock_frequency = ADF_420XX_AE_FREQ;
470470
hw_data->services_supported = adf_gen4_services_supported;
471+
hw_data->get_svc_slice_cnt = adf_gen4_get_svc_slice_cnt;
471472

472473
adf_gen4_set_err_mask(&hw_data->dev_err_mask);
473474
adf_gen4_init_hw_csr_ops(&hw_data->csr_ops);

drivers/crypto/intel/qat/qat_4xxx/adf_4xxx_hw_data.c

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -462,6 +462,7 @@ void adf_init_hw_data_4xxx(struct adf_hw_device_data *hw_data, u32 dev_id)
462462
hw_data->num_hb_ctrs = ADF_NUM_HB_CNT_PER_AE;
463463
hw_data->clock_frequency = ADF_4XXX_AE_FREQ;
464464
hw_data->services_supported = adf_gen4_services_supported;
465+
hw_data->get_svc_slice_cnt = adf_gen4_get_svc_slice_cnt;
465466

466467
adf_gen4_set_err_mask(&hw_data->dev_err_mask);
467468
adf_gen4_init_hw_csr_ops(&hw_data->csr_ops);

drivers/crypto/intel/qat/qat_common/adf_accel_devices.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -319,6 +319,8 @@ struct adf_hw_device_data {
319319
u32 (*get_ena_thd_mask)(struct adf_accel_dev *accel_dev, u32 obj_num);
320320
int (*dev_config)(struct adf_accel_dev *accel_dev);
321321
bool (*services_supported)(unsigned long mask);
322+
u32 (*get_svc_slice_cnt)(struct adf_accel_dev *accel_dev,
323+
enum adf_base_services svc);
322324
struct adf_pfvf_ops pfvf_ops;
323325
struct adf_hw_csr_ops csr_ops;
324326
struct adf_dc_ops dc_ops;

drivers/crypto/intel/qat/qat_common/adf_gen4_hw_data.c

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -580,3 +580,21 @@ void adf_gen4_init_num_svc_aes(struct adf_rl_hw_data *device_data)
580580
device_data->svc_ae_mask[SVC_DECOMP] = 0;
581581
}
582582
EXPORT_SYMBOL_GPL(adf_gen4_init_num_svc_aes);
583+
584+
u32 adf_gen4_get_svc_slice_cnt(struct adf_accel_dev *accel_dev,
585+
enum adf_base_services svc)
586+
{
587+
struct adf_rl_hw_data *device_data = &accel_dev->hw_device->rl_data;
588+
589+
switch (svc) {
590+
case SVC_SYM:
591+
return device_data->slices.cph_cnt;
592+
case SVC_ASYM:
593+
return device_data->slices.pke_cnt;
594+
case SVC_DC:
595+
return device_data->slices.dcpr_cnt;
596+
default:
597+
return 0;
598+
}
599+
}
600+
EXPORT_SYMBOL_GPL(adf_gen4_get_svc_slice_cnt);

drivers/crypto/intel/qat/qat_common/adf_gen4_hw_data.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -176,5 +176,7 @@ void adf_gen4_bank_drain_finish(struct adf_accel_dev *accel_dev,
176176
bool adf_gen4_services_supported(unsigned long service_mask);
177177
void adf_gen4_init_dc_ops(struct adf_dc_ops *dc_ops);
178178
void adf_gen4_init_num_svc_aes(struct adf_rl_hw_data *device_data);
179+
u32 adf_gen4_get_svc_slice_cnt(struct adf_accel_dev *accel_dev,
180+
enum adf_base_services svc);
179181

180182
#endif

drivers/crypto/intel/qat/qat_common/adf_rl.c

Lines changed: 2 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -529,21 +529,9 @@ u32 adf_rl_calculate_slice_tokens(struct adf_accel_dev *accel_dev, u32 sla_val,
529529
if (!sla_val)
530530
return 0;
531531

532+
/* Handle generation specific slice count adjustment */
532533
avail_slice_cycles = hw_data->clock_frequency;
533-
534-
switch (svc_type) {
535-
case SVC_ASYM:
536-
avail_slice_cycles *= device_data->slices.pke_cnt;
537-
break;
538-
case SVC_SYM:
539-
avail_slice_cycles *= device_data->slices.cph_cnt;
540-
break;
541-
case SVC_DC:
542-
avail_slice_cycles *= device_data->slices.dcpr_cnt;
543-
break;
544-
default:
545-
break;
546-
}
534+
avail_slice_cycles *= hw_data->get_svc_slice_cnt(accel_dev, svc_type);
547535

548536
do_div(avail_slice_cycles, device_data->scan_interval);
549537
allocated_tokens = avail_slice_cycles * sla_val;

0 commit comments

Comments
 (0)