crypto/qat: rework burst data path
[dpdk.git] / drivers / common / qat / qat_qp.c
index 57ac8fe..08ac91e 100644 (file)
@@ -1,5 +1,5 @@
 /* SPDX-License-Identifier: BSD-3-Clause
- * Copyright(c) 2015-2018 Intel Corporation
+ * Copyright(c) 2015-2022 Intel Corporation
  */
 
 #include <rte_common.h>
@@ -547,7 +547,8 @@ adf_modulo(uint32_t data, uint32_t modulo_mask)
 }
 
 uint16_t
-qat_enqueue_op_burst(void *qp, void **ops, uint16_t nb_ops)
+qat_enqueue_op_burst(void *qp, qat_op_build_request_t op_build_request,
+               void **ops, uint16_t nb_ops)
 {
        register struct qat_queue *queue;
        struct qat_qp *tmp_qp = (struct qat_qp *)qp;
@@ -597,29 +598,18 @@ qat_enqueue_op_burst(void *qp, void **ops, uint16_t nb_ops)
                }
        }
 
-#ifdef BUILD_QAT_SYM
+#ifdef RTE_LIB_SECURITY
        if (tmp_qp->service_type == QAT_SERVICE_SYMMETRIC)
                qat_sym_preprocess_requests(ops, nb_ops_possible);
 #endif
 
+       memset(tmp_qp->opaque, 0xff, sizeof(tmp_qp->opaque));
+
        while (nb_ops_sent != nb_ops_possible) {
-               if (tmp_qp->service_type == QAT_SERVICE_SYMMETRIC) {
-#ifdef BUILD_QAT_SYM
-                       ret = qat_sym_build_request(*ops, base_addr + tail,
-                               tmp_qp->op_cookies[tail >> queue->trailz],
-                               tmp_qp->qat_dev_gen);
-#endif
-               } else if (tmp_qp->service_type == QAT_SERVICE_COMPRESSION) {
-                       ret = qat_comp_build_request(*ops, base_addr + tail,
-                               tmp_qp->op_cookies[tail >> queue->trailz],
-                               tmp_qp->qat_dev_gen);
-               } else if (tmp_qp->service_type == QAT_SERVICE_ASYMMETRIC) {
-#ifdef BUILD_QAT_ASYM
-                       ret = qat_asym_build_request(*ops, base_addr + tail,
+               ret = op_build_request(*ops, base_addr + tail,
                                tmp_qp->op_cookies[tail >> queue->trailz],
-                               tmp_qp->qat_dev_gen);
-#endif
-               }
+                               tmp_qp->opaque, tmp_qp->qat_dev_gen);
+
                if (ret != 0) {
                        tmp_qp->stats.enqueue_err_count++;
                        /* This message cannot be enqueued */
@@ -814,7 +804,8 @@ kick_tail:
 }
 
 uint16_t
-qat_dequeue_op_burst(void *qp, void **ops, uint16_t nb_ops)
+qat_dequeue_op_burst(void *qp, void **ops,
+               qat_op_dequeue_t qat_dequeue_process_response, uint16_t nb_ops)
 {
        struct qat_queue *rx_queue;
        struct qat_qp *tmp_qp = (struct qat_qp *)qp;
@@ -832,19 +823,10 @@ qat_dequeue_op_burst(void *qp, void **ops, uint16_t nb_ops)
 
                nb_fw_responses = 1;
 
-               if (tmp_qp->service_type == QAT_SERVICE_SYMMETRIC)
-                       qat_sym_process_response(ops, resp_msg,
-                               tmp_qp->op_cookies[head >> rx_queue->trailz]);
-               else if (tmp_qp->service_type == QAT_SERVICE_COMPRESSION)
-                       nb_fw_responses = qat_comp_process_response(
+               nb_fw_responses = qat_dequeue_process_response(
                                ops, resp_msg,
                                tmp_qp->op_cookies[head >> rx_queue->trailz],
                                &tmp_qp->stats.dequeue_err_count);
-#ifdef BUILD_QAT_ASYM
-               else if (tmp_qp->service_type == QAT_SERVICE_ASYMMETRIC)
-                       qat_asym_process_response(ops, resp_msg,
-                               tmp_qp->op_cookies[head >> rx_queue->trailz]);
-#endif
 
                head = adf_modulo(head + rx_queue->msg_size,
                                  rx_queue->modulo_mask);