Lines Matching refs:device
26 * load balance the QAT device.
51 /* This is the max number of IOs we can supply to any crypto device QP at one time.
108 struct accel_dpdk_cryptodev_device *device; /* ptr to crypto device */
118 struct rte_cryptodev_info cdev_info; /* includes DPDK device friendly name */
120 uint8_t cdev_id; /* identifier for the device */
126 struct accel_dpdk_cryptodev_device *device;
147 /* Array of qpairs for each available device. The specific device will be selected depending on the crypto key */
246 /* Each run of the poller will get just what the device has available
250 num_dequeued_ops = rte_cryptodev_dequeue_burst(qp->device->cdev_id, qp->qp,
319 * the device. Then we need to decide if what we've got so far (including previous poller
442 /* Crypto key is registered on all available devices while io_channel opens CQ/QP on a single device.
443 * We need to iterate a list of key entries to find a suitable device */
445 if (key_handle->device->cdev_id ==
446 crypto_ch->device_qp[ACCEL_DPDK_CRYPTODEV_DRIVER_MLX5_PCI]->device->cdev_id) {
640 dev = qp->device;
657 /* mlx5_pci binds keys to a specific device, we can't use a key with any device */
658 assert(dev == key_handle->device || priv->driver != ACCEL_DPDK_CRYPTODEV_DRIVER_MLX5_PCI);
719 * configured the crypto device for.
799 struct accel_dpdk_cryptodev_device *device, *device_tmp;
802 TAILQ_FOREACH_SAFE(device, &g_crypto_devices, link, device_tmp) {
803 if (device->type != type) {
806 TAILQ_FOREACH(qpair, &device->qpairs, link) {
822 struct accel_dpdk_cryptodev_device *device;
829 TAILQ_FOREACH(device, &g_crypto_devices, link) {
830 if (device->type == ACCEL_DPDK_CRYPTODEV_DRIVER_QAT && !qat_found) {
832 * workload out over the multiple virtual functions in the device. For the devices
835 TAILQ_FOREACH(device_qp, &device->qpairs, link) {
1001 struct accel_dpdk_cryptodev_device *device;
1006 device = calloc(1, sizeof(*device));
1007 if (!device) {
1011 /* Get details about this device. */
1012 rte_cryptodev_info_get(index, &device->cdev_info);
1013 cdrv_id = device->cdev_info.driver_id;
1014 cdev_id = device->cdev_id = index;
1016 if (strcmp(device->cdev_info.driver_name, ACCEL_DPDK_CRYPTODEV_QAT) == 0) {
1017 device->qp_desc_nr = ACCEL_DPDK_CRYPTODEV_QP_DESCRIPTORS;
1018 device->type = ACCEL_DPDK_CRYPTODEV_DRIVER_QAT;
1019 } else if (strcmp(device->cdev_info.driver_name, ACCEL_DPDK_CRYPTODEV_AESNI_MB) == 0) {
1020 device->qp_desc_nr = ACCEL_DPDK_CRYPTODEV_QP_DESCRIPTORS;
1021 device->type = ACCEL_DPDK_CRYPTODEV_DRIVER_AESNI_MB;
1022 } else if (strcmp(device->cdev_info.driver_name, ACCEL_DPDK_CRYPTODEV_MLX5) == 0) {
1023 device->qp_desc_nr = ACCEL_DPDK_CRYPTODEV_QP_DESCRIPTORS_MLX5;
1024 device->type = ACCEL_DPDK_CRYPTODEV_DRIVER_MLX5_PCI;
1025 } else if (strcmp(device->cdev_info.driver_name, ACCEL_DPDK_CRYPTODEV_QAT_ASYM) == 0) {
1029 } else if (strcmp(device->cdev_info.driver_name, ACCEL_DPDK_CRYPTODEV_UADK) == 0) {
1030 device->qp_desc_nr = ACCEL_DPDK_CRYPTODEV_QP_DESCRIPTORS;
1031 device->type = ACCEL_DPDK_CRYPTODEV_DRIVER_UADK;
1033 SPDK_ERRLOG("Failed to start device %u. Invalid driver name \"%s\"\n",
1034 cdev_id, device->cdev_info.driver_name);
1040 * device type to function. We need a unique queue pair per core across each
1041 * device type to remain lockless....
1044 device->cdev_info.max_nb_queue_pairs) < num_lcores) {
1046 device->cdev_info.driver_name);
1052 conf.nb_queue_pairs = device->cdev_info.max_nb_queue_pairs;
1063 * entire device affecting all other threads that might be using it
1066 qp_conf.nb_descriptors = device->qp_desc_nr;
1067 for (j = 0; j < device->cdev_info.max_nb_queue_pairs; j++) {
1079 SPDK_ERRLOG("Failed to start device %u: error %d\n", cdev_id, rc);
1084 TAILQ_INIT(&device->qpairs);
1085 /* Build up lists of device/qp combinations per PMD */
1086 for (j = 0; j < device->cdev_info.max_nb_queue_pairs; j++) {
1092 dev_qp->device = device;
1095 TAILQ_INSERT_TAIL(&device->qpairs, dev_qp, link);
1096 if (device->type == ACCEL_DPDK_CRYPTODEV_DRIVER_QAT) {
1101 TAILQ_INSERT_TAIL(&g_crypto_devices, device, link);
1106 TAILQ_FOREACH(dev_qp, &device->qpairs, link) {
1107 if (dev_qp->device->cdev_id != device->cdev_id) {
1111 if (device->type == ACCEL_DPDK_CRYPTODEV_DRIVER_QAT) {
1121 free(device);
1127 accel_dpdk_cryptodev_release(struct accel_dpdk_cryptodev_device *device)
1131 assert(device);
1133 TAILQ_FOREACH_SAFE(dev_qp, &device->qpairs, link, tmp) {
1136 if (device->type == ACCEL_DPDK_CRYPTODEV_DRIVER_QAT) {
1137 assert(g_qat_total_qp >= device->cdev_info.max_nb_queue_pairs);
1138 g_qat_total_qp -= device->cdev_info.max_nb_queue_pairs;
1140 rte_cryptodev_stop(device->cdev_id);
1141 rte_cryptodev_close(device->cdev_id);
1142 free(device);
1152 struct accel_dpdk_cryptodev_device *device, *tmp_dev;
1259 TAILQ_FOREACH_SAFE(device, &g_crypto_devices, link, tmp_dev) {
1260 TAILQ_REMOVE(&g_crypto_devices, device, link);
1261 accel_dpdk_cryptodev_release(device);
1282 struct accel_dpdk_cryptodev_device *device, *tmp;
1284 TAILQ_FOREACH_SAFE(device, &g_crypto_devices, link, tmp) {
1285 TAILQ_REMOVE(&g_crypto_devices, device, link);
1286 accel_dpdk_cryptodev_release(device);
1314 accel_dpdk_cryptodev_key_handle_session_free(struct accel_dpdk_cryptodev_device *device,
1318 assert(device != NULL);
1320 rte_cryptodev_sym_session_free(device->cdev_id, session);
1327 accel_dpdk_cryptodev_key_handle_session_create(struct accel_dpdk_cryptodev_device *device,
1333 session = rte_cryptodev_sym_session_create(device->cdev_id, cipher_xform, g_session_mp);
1340 if (rte_cryptodev_sym_session_init(device->cdev_id, session, cipher_xform, g_session_mp_priv) < 0) {
1341 accel_dpdk_cryptodev_key_handle_session_free(device, session);
1376 key_handle->session_encrypt = accel_dpdk_cryptodev_key_handle_session_create(key_handle->device,
1384 key_handle->session_decrypt = accel_dpdk_cryptodev_key_handle_session_create(key_handle->device,
1388 accel_dpdk_cryptodev_key_handle_session_free(key_handle->device, key_handle->session_encrypt);
1402 accel_dpdk_cryptodev_key_handle_session_free(key_handle->device, key_handle->session_encrypt);
1403 accel_dpdk_cryptodev_key_handle_session_free(key_handle->device, key_handle->session_decrypt);
1447 struct accel_dpdk_cryptodev_device *device;
1478 TAILQ_FOREACH(device, &g_crypto_devices, link) {
1479 if (device->type != driver) {
1488 key_handle->device = device;
1497 /* For MLX5_PCI we need to register a key on each device since