summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDastin Wilski <dastinx.wilski@intel.com>2021-12-21 08:51:52 +0000
committerDamjan Marion <dmarion@me.com>2022-01-12 09:45:00 +0000
commite60f2f678d2fe242471549525dd70a3bba90ae17 (patch)
tree264c2784a91cdc9ecbf9d1355fb1dcaa358223c9
parent440bf5f8c82c51b003077b209853800d5b5f8517 (diff)
dpdk-cryptodev: run dequeue again in case of interrupt mode being used
Type: fix Change-Id: I7aa172e58c970c4971db6ef2ff5b199b7f3c0b99 Signed-off-by: Dastin Wilski <dastin.wilski@gmail.com>
-rw-r--r--src/plugins/dpdk/cryptodev/cryptodev_raw_data_path.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/src/plugins/dpdk/cryptodev/cryptodev_raw_data_path.c b/src/plugins/dpdk/cryptodev/cryptodev_raw_data_path.c
index a93184acfde..6793b9a589f 100644
--- a/src/plugins/dpdk/cryptodev/cryptodev_raw_data_path.c
+++ b/src/plugins/dpdk/cryptodev/cryptodev_raw_data_path.c
@@ -422,6 +422,7 @@ cryptodev_raw_dequeue (vlib_main_t *vm, u32 *nb_elts_processed,
u32 *enqueue_thread_idx)
{
cryptodev_main_t *cmt = &cryptodev_main;
+ vnet_crypto_main_t *cm = &crypto_main;
cryptodev_engine_thread_t *cet = cmt->per_thread_data + vm->thread_index;
vnet_crypto_async_frame_t *frame, *frame_ret = 0;
u32 n_deq, n_success;
@@ -510,6 +511,11 @@ cryptodev_raw_dequeue (vlib_main_t *vm, u32 *nb_elts_processed,
}
}
+ if (cm->dispatch_mode == VNET_CRYPTO_ASYNC_DISPATCH_INTERRUPT &&
+ inflight > 0)
+ vlib_node_set_interrupt_pending (vlib_get_main_by_index (vm->thread_index),
+ cm->crypto_node_index);
+
/* no point to dequeue further */
if (!inflight || no_job_to_deq || !n_room_left)
goto end_deq;