From a44a0c038f5aee70876e240d7a59aaeb79debc4c Mon Sep 17 00:00:00 2001 From: Fan Zhang Date: Tue, 27 Jul 2021 16:49:55 +0100 Subject: [PATCH] dpdk: fix cryptodev raw data path dequeue This patch fixes the dpdk cryptodev raw data path dequeue problem. The fix involves DPDK QAT PMD changes and is to be upstreamed as a patch. The patch is also sent to DPDK mailing list. Type: fix Signed-off-by: Fan Zhang Change-Id: I1a9253c8a7fbc2aa43f19f90da45e64e2840356a --- ...ypto-qat-fix-failed-raw-data-path-dequeue.patch | 40 ++++++++++++++++++++++ 1 file changed, 40 insertions(+) create mode 100644 build/external/patches/dpdk_21.05/0001-crypto-qat-fix-failed-raw-data-path-dequeue.patch diff --git a/build/external/patches/dpdk_21.05/0001-crypto-qat-fix-failed-raw-data-path-dequeue.patch b/build/external/patches/dpdk_21.05/0001-crypto-qat-fix-failed-raw-data-path-dequeue.patch new file mode 100644 index 00000000000..88af37e1e34 --- /dev/null +++ b/build/external/patches/dpdk_21.05/0001-crypto-qat-fix-failed-raw-data-path-dequeue.patch @@ -0,0 +1,40 @@ +From 154843b968e98e7d4683f1540631ca324c337073 Mon Sep 17 00:00:00 2001 +From: Fan Zhang +Date: Tue, 27 Jul 2021 16:27:36 +0100 +Subject: [dpdk-dev] crypto/qat: fix failed raw data path dequeue + +This patch fixes the raw data path dequeue burst fail problem. +Previously the in case the queue is full and not all packets +asked to be dequeued are processed, the dequeue burst will +never happen. + +Fixes: c21574edc52a ("cryptodev: add dequeue count parameter in raw API") +Cc: roy.fan.zhang@intel.com + +Signed-off-by: Fan Zhang +--- + drivers/crypto/qat/qat_sym_hw_dp.c | 8 -------- + 1 file changed, 8 deletions(-) + +diff --git a/drivers/crypto/qat/qat_sym_hw_dp.c b/drivers/crypto/qat/qat_sym_hw_dp.c +index 4305579b54..ac9ac05363 100644 +--- a/drivers/crypto/qat/qat_sym_hw_dp.c ++++ b/drivers/crypto/qat/qat_sym_hw_dp.c +@@ -744,14 +744,6 @@ qat_sym_dp_dequeue_burst(void *qp_data, uint8_t *drv_ctx, + n = get_dequeue_count(resp_opaque); + if (unlikely(n == 0)) + return 0; +- else if (n > 1) { +- head = (head + rx_queue->msg_size * (n - 1)) & +- rx_queue->modulo_mask; +- resp = (struct icp_qat_fw_comn_resp *)( +- (uint8_t *)rx_queue->base_addr + head); +- if (*(uint32_t *)resp == ADF_RING_EMPTY_SIG) +- return 0; +- } + } else { + if (unlikely(max_nb_to_dequeue == 0)) + return 0; +-- +2.25.1 + -- 2.16.6