]> git.droids-corp.org - dpdk.git/commitdiff
crypto/qat: support out-of-place SG list
authorKai Ji <kai.ji@intel.com>
Wed, 23 Feb 2022 00:50:06 +0000 (08:50 +0800)
committerAkhil Goyal <gakhil@marvell.com>
Wed, 23 Feb 2022 08:59:16 +0000 (09:59 +0100)
This patch adds the SGL out of place support to QAT PMD

Signed-off-by: Kai Ji <kai.ji@intel.com>
Acked-by: Fan Zhang <roy.fan.zhang@intel.com>
drivers/crypto/qat/dev/qat_crypto_pmd_gen3.c
drivers/crypto/qat/dev/qat_crypto_pmd_gen4.c
drivers/crypto/qat/dev/qat_sym_pmd_gen1.c

index ffa093a7a39ca7d10f8ec023b6fc756f3d957561..5084a5fcd154a0cd1319981f510619fb4fa7acbc 100644 (file)
@@ -468,8 +468,18 @@ qat_sym_dp_enqueue_aead_jobs_gen3(void *qp_data, uint8_t *drv_ctx,
                        (uint8_t *)tx_queue->base_addr + tail);
                rte_mov128((uint8_t *)req, (const uint8_t *)&(ctx->fw_req));
 
-               data_len = qat_sym_build_req_set_data(req, user_data[i], cookie,
-                       vec->src_sgl[i].vec, vec->src_sgl[i].num, NULL, 0);
+               if (vec->dest_sgl) {
+                       data_len = qat_sym_build_req_set_data(req,
+                               user_data[i], cookie,
+                               vec->src_sgl[i].vec, vec->src_sgl[i].num,
+                               vec->dest_sgl[i].vec, vec->dest_sgl[i].num);
+               } else {
+                       data_len = qat_sym_build_req_set_data(req,
+                               user_data[i], cookie,
+                               vec->src_sgl[i].vec,
+                               vec->src_sgl[i].num, NULL, 0);
+               }
+
                if (unlikely(data_len < 0))
                        break;
 
@@ -565,8 +575,18 @@ qat_sym_dp_enqueue_auth_jobs_gen3(void *qp_data, uint8_t *drv_ctx,
                        (uint8_t *)tx_queue->base_addr + tail);
                rte_mov128((uint8_t *)req, (const uint8_t *)&(ctx->fw_req));
 
-               data_len = qat_sym_build_req_set_data(req, user_data[i], cookie,
-                       vec->src_sgl[i].vec, vec->src_sgl[i].num, NULL, 0);
+               if (vec->dest_sgl) {
+                       data_len = qat_sym_build_req_set_data(req,
+                               user_data[i], cookie,
+                               vec->src_sgl[i].vec, vec->src_sgl[i].num,
+                               vec->dest_sgl[i].vec, vec->dest_sgl[i].num);
+               } else {
+                       data_len = qat_sym_build_req_set_data(req,
+                               user_data[i], cookie,
+                               vec->src_sgl[i].vec,
+                               vec->src_sgl[i].num, NULL, 0);
+               }
+
                if (unlikely(data_len < 0))
                        break;
                enqueue_one_auth_job_gen3(ctx, cookie, req, &vec->digest[i],
index f803bc1459b9b1740714326dce914970c6dc63b2..bd7f3785dffb6d9badbc505bfea08a85b4fb3413 100644 (file)
@@ -297,8 +297,18 @@ qat_sym_dp_enqueue_aead_jobs_gen4(void *qp_data, uint8_t *drv_ctx,
                        (uint8_t *)tx_queue->base_addr + tail);
                rte_mov128((uint8_t *)req, (const uint8_t *)&(ctx->fw_req));
 
-               data_len = qat_sym_build_req_set_data(req, user_data[i], cookie,
-                       vec->src_sgl[i].vec, vec->src_sgl[i].num, NULL, 0);
+               if (vec->dest_sgl) {
+                       data_len = qat_sym_build_req_set_data(req,
+                               user_data[i], cookie,
+                               vec->src_sgl[i].vec, vec->src_sgl[i].num,
+                               vec->dest_sgl[i].vec, vec->dest_sgl[i].num);
+               } else {
+                       data_len = qat_sym_build_req_set_data(req,
+                               user_data[i], cookie,
+                               vec->src_sgl[i].vec,
+                               vec->src_sgl[i].num, NULL, 0);
+               }
+
                if (unlikely(data_len < 0))
                        break;
 
index 58f07eb0b3541f40cfcb6426c4e20d6a86459dc5..3bcb53cf9f68bc76189887d4634f4ec4e14111b9 100644 (file)
@@ -526,9 +526,18 @@ qat_sym_dp_enqueue_cipher_jobs_gen1(void *qp_data, uint8_t *drv_ctx,
                        (uint8_t *)tx_queue->base_addr + tail);
                rte_mov128((uint8_t *)req, (const uint8_t *)&(ctx->fw_req));
 
-               data_len = qat_sym_build_req_set_data(req, user_data[i],
-                               cookie, vec->src_sgl[i].vec,
+               if (vec->dest_sgl) {
+                       data_len = qat_sym_build_req_set_data(req,
+                               user_data[i], cookie,
+                               vec->src_sgl[i].vec, vec->src_sgl[i].num,
+                               vec->dest_sgl[i].vec, vec->dest_sgl[i].num);
+               } else {
+                       data_len = qat_sym_build_req_set_data(req,
+                               user_data[i], cookie,
+                               vec->src_sgl[i].vec,
                                vec->src_sgl[i].num, NULL, 0);
+               }
+
                if (unlikely(data_len < 0))
                        break;
                enqueue_one_cipher_job_gen1(ctx, req, &vec->iv[i], ofs,
@@ -625,8 +634,18 @@ qat_sym_dp_enqueue_auth_jobs_gen1(void *qp_data, uint8_t *drv_ctx,
                        (uint8_t *)tx_queue->base_addr + tail);
                rte_mov128((uint8_t *)req, (const uint8_t *)&(ctx->fw_req));
 
-               data_len = qat_sym_build_req_set_data(req, user_data[i], cookie,
-                       vec->src_sgl[i].vec, vec->src_sgl[i].num, NULL, 0);
+               if (vec->dest_sgl) {
+                       data_len = qat_sym_build_req_set_data(req,
+                               user_data[i], cookie,
+                               vec->src_sgl[i].vec, vec->src_sgl[i].num,
+                               vec->dest_sgl[i].vec, vec->dest_sgl[i].num);
+               } else {
+                       data_len = qat_sym_build_req_set_data(req,
+                               user_data[i], cookie,
+                               vec->src_sgl[i].vec,
+                               vec->src_sgl[i].num, NULL, 0);
+               }
+
                if (unlikely(data_len < 0))
                        break;
                enqueue_one_auth_job_gen1(ctx, req, &vec->digest[i],
@@ -725,8 +744,18 @@ qat_sym_dp_enqueue_chain_jobs_gen1(void *qp_data, uint8_t *drv_ctx,
                        (uint8_t *)tx_queue->base_addr + tail);
                rte_mov128((uint8_t *)req, (const uint8_t *)&(ctx->fw_req));
 
-               data_len = qat_sym_build_req_set_data(req, user_data[i], cookie,
-                       vec->src_sgl[i].vec, vec->src_sgl[i].num, NULL, 0);
+               if (vec->dest_sgl) {
+                       data_len = qat_sym_build_req_set_data(req,
+                               user_data[i], cookie,
+                               vec->src_sgl[i].vec, vec->src_sgl[i].num,
+                               vec->dest_sgl[i].vec, vec->dest_sgl[i].num);
+               } else {
+                       data_len = qat_sym_build_req_set_data(req,
+                               user_data[i], cookie,
+                               vec->src_sgl[i].vec,
+                               vec->src_sgl[i].num, NULL, 0);
+               }
+
                if (unlikely(data_len < 0))
                        break;
 
@@ -830,8 +859,18 @@ qat_sym_dp_enqueue_aead_jobs_gen1(void *qp_data, uint8_t *drv_ctx,
                        (uint8_t *)tx_queue->base_addr + tail);
                rte_mov128((uint8_t *)req, (const uint8_t *)&(ctx->fw_req));
 
-               data_len = qat_sym_build_req_set_data(req, user_data[i], cookie,
-                       vec->src_sgl[i].vec, vec->src_sgl[i].num, NULL, 0);
+               if (vec->dest_sgl) {
+                       data_len = qat_sym_build_req_set_data(req,
+                               user_data[i], cookie,
+                               vec->src_sgl[i].vec, vec->src_sgl[i].num,
+                               vec->dest_sgl[i].vec, vec->dest_sgl[i].num);
+               } else {
+                       data_len = qat_sym_build_req_set_data(req,
+                               user_data[i], cookie,
+                               vec->src_sgl[i].vec,
+                               vec->src_sgl[i].num, NULL, 0);
+               }
+
                if (unlikely(data_len < 0))
                        break;