From e60f2f678d2fe242471549525dd70a3bba90ae17 Mon Sep 17 00:00:00 2001 From: Dastin Wilski Date: Tue, 21 Dec 2021 08:51:52 +0000 Subject: dpdk-cryptodev: run dequeue again in case of interrupt mode being used Type: fix Change-Id: I7aa172e58c970c4971db6ef2ff5b199b7f3c0b99 Signed-off-by: Dastin Wilski --- src/plugins/dpdk/cryptodev/cryptodev_raw_data_path.c | 6 ++++++ 1 file changed, 6 insertions(+) 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; -- cgit 1.2.3-korg