From patchwork Tue Feb 8 16:33:03 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Shijith Thotton X-Patchwork-Id: 107029 X-Patchwork-Delegate: jerinj@marvell.com Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id 51D95A0352; Tue, 8 Feb 2022 17:34:25 +0100 (CET) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id D6F074111B; Tue, 8 Feb 2022 17:34:24 +0100 (CET) Received: from mx0b-0016f401.pphosted.com (mx0a-0016f401.pphosted.com [67.231.148.174]) by mails.dpdk.org (Postfix) with ESMTP id 64E07410FD for ; Tue, 8 Feb 2022 17:34:23 +0100 (CET) Received: from pps.filterd (m0045849.ppops.net [127.0.0.1]) by mx0a-0016f401.pphosted.com (8.16.1.2/8.16.1.2) with ESMTP id 218GHD4G004792; Tue, 8 Feb 2022 08:34:22 -0800 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=marvell.com; h=from : to : cc : subject : date : message-id : mime-version : content-transfer-encoding : content-type; s=pfpt0220; bh=UHTTKF/qtXMv28MzttomOpR5WHtzyUBdEhBfTi9XO0U=; b=Du5dtnStlCuFpORyazbVfj+RMNct/FQ3RQCY7kNk6E3wN+buTlKeFj/PCgupnEBk9KKk 8l6JzTvGmNp272BCJfQIFdT3ozBT59xWtu6eI8NjGtqr9Lpf0dHlUoH3s2HqIC0CTHti pIF46aw2GLgmrE3TYNWpgypdjItoRpiZStFxXNs42d3+CDKV3Ll5NaCFk6NeNcsjIgHd MbJ5WdD08kvab2XAu0kIuQtlTl8kpq667b3KC52u2Gp/RyuUnxr/qGHtsuah/U+iIj01 XYEIY7KkfVShsmUtnE+JmeJYIqEUzYQk+ms/YxRBVAS2jR5reRRB6lpUZoKLgGxsjoOt kw== Received: from dc5-exch02.marvell.com ([199.233.59.182]) by mx0a-0016f401.pphosted.com (PPS) with ESMTPS id 3e3mhsj4kb-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-SHA384 bits=256 verify=NOT); Tue, 08 Feb 2022 08:34:22 -0800 Received: from DC5-EXCH02.marvell.com (10.69.176.39) by DC5-EXCH02.marvell.com (10.69.176.39) with Microsoft SMTP Server (TLS) id 15.0.1497.18; Tue, 8 Feb 2022 08:34:20 -0800 Received: from maili.marvell.com (10.69.176.80) by DC5-EXCH02.marvell.com (10.69.176.39) with Microsoft SMTP Server id 15.0.1497.18 via Frontend Transport; Tue, 8 Feb 2022 08:34:20 -0800 Received: from localhost.localdomain (unknown [10.28.34.29]) by maili.marvell.com (Postfix) with ESMTP id 4141C3F7091; Tue, 8 Feb 2022 08:34:19 -0800 (PST) From: Shijith Thotton To: , CC: Shijith Thotton , Jerin Jacob Subject: [RFC PATCH] app/eventdev: add software crypto adapter support Date: Tue, 8 Feb 2022 22:03:03 +0530 Message-ID: <0677cbafa5145f1b9f64dd007594e033f2d9ab8a.1644337310.git.sthotton@marvell.com> X-Mailer: git-send-email 2.25.1 MIME-Version: 1.0 X-Proofpoint-ORIG-GUID: k2d4sih1lD137QZx9cuSWv927MvJejyE X-Proofpoint-GUID: k2d4sih1lD137QZx9cuSWv927MvJejyE X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.205,Aquarius:18.0.816,Hydra:6.0.425,FMLib:17.11.62.513 definitions=2022-02-08_05,2022-02-07_02,2021-12-02_01 X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Added addition crypto adapter API calls and enabled services to use software implementation of crypto adapter. Signed-off-by: Shijith Thotton --- app/test-eventdev/test_perf_atq.c | 16 +++++++++- app/test-eventdev/test_perf_common.c | 48 ++++++++++++++++++++++++---- app/test-eventdev/test_perf_common.h | 1 + app/test-eventdev/test_perf_queue.c | 16 +++++++++- 4 files changed, 72 insertions(+), 9 deletions(-) diff --git a/app/test-eventdev/test_perf_atq.c b/app/test-eventdev/test_perf_atq.c index 67ff681666..b9c22effd6 100644 --- a/app/test-eventdev/test_perf_atq.c +++ b/app/test-eventdev/test_perf_atq.c @@ -301,9 +301,23 @@ perf_atq_eventdev_setup(struct evt_test *test, struct evt_options *opt) return ret; } } + + if (t->ca_sw_cap) { + uint32_t service_id; + + rte_event_crypto_adapter_service_id_get(TEST_PERF_CA_ID, + &service_id); + ret = evt_service_setup(service_id); + if (ret) { + evt_err("Failed to setup crypto adapter service"); + return ret; + } + + ret = rte_event_crypto_adapter_start(TEST_PERF_CA_ID); + } } - return 0; + return ret; } static void diff --git a/app/test-eventdev/test_perf_common.c b/app/test-eventdev/test_perf_common.c index ca83e41555..dc644692eb 100644 --- a/app/test-eventdev/test_perf_common.c +++ b/app/test-eventdev/test_perf_common.c @@ -4,6 +4,8 @@ #include +#include + #include "test_perf_common.h" #define NB_CRYPTODEV_DESCRIPTORS 128 @@ -336,10 +338,10 @@ crypto_adapter_enq_op_fwd(struct prod_data *p) struct rte_crypto_sym_op *sym_op; uint32_t flow_counter = 0; struct rte_crypto_op *op; + uint16_t len, nb_events; struct rte_event ev; struct rte_mbuf *m; uint64_t count = 0; - uint16_t len; if (opt->verbose_level > 1) printf("%s(): lcore %d port %d queue %d cdev_id %u cdev_qp_id %u\n", @@ -369,9 +371,16 @@ crypto_adapter_enq_op_fwd(struct prod_data *p) op, crypto_sess[flow_counter++ % nb_flows]); ev.event_ptr = op; - while (rte_event_crypto_adapter_enqueue(dev_id, port, &ev, 1) != 1 && - t->done == false) + do { + if (t->ca_sw_cap) + nb_events = rte_event_enqueue_burst( + dev_id, port, &ev, 1); + else + nb_events = rte_event_crypto_adapter_enqueue( + dev_id, port, &ev, 1); + rte_pause(); + } while (nb_events != 1 && t->done == false); count++; } @@ -674,10 +683,16 @@ perf_event_crypto_adapter_setup(struct test_perf *t, struct prod_data *p) return ret; } - if (((opt->crypto_adptr_mode == RTE_EVENT_CRYPTO_ADAPTER_OP_NEW) && - !(cap & RTE_EVENT_CRYPTO_ADAPTER_CAP_INTERNAL_PORT_OP_NEW)) || - ((opt->crypto_adptr_mode == RTE_EVENT_CRYPTO_ADAPTER_OP_FORWARD) && - !(cap & RTE_EVENT_CRYPTO_ADAPTER_CAP_INTERNAL_PORT_OP_FWD))) { + if (cap == RTE_EVENT_CRYPTO_ADAPTER_SW_CAP) { + t->ca_sw_cap = 1; + } else if (((opt->crypto_adptr_mode == + RTE_EVENT_CRYPTO_ADAPTER_OP_NEW) && + !(cap & + RTE_EVENT_CRYPTO_ADAPTER_CAP_INTERNAL_PORT_OP_NEW)) || + ((opt->crypto_adptr_mode == + RTE_EVENT_CRYPTO_ADAPTER_OP_FORWARD) && + !(cap & + RTE_EVENT_CRYPTO_ADAPTER_CAP_INTERNAL_PORT_OP_FWD))) { evt_err("crypto adapter %s mode unsupported\n", opt->crypto_adptr_mode ? "OP_FORWARD" : "OP_NEW"); return -EINVAL; @@ -706,6 +721,22 @@ perf_event_crypto_adapter_setup(struct test_perf *t, struct prod_data *p) TEST_PERF_CA_ID, p->ca.cdev_id, p->ca.cdev_qp_id, NULL); } + if (ret) + return ret; + + if (t->ca_sw_cap) { + uint8_t sw_event_port; + uint32_t service_id; + + rte_event_crypto_adapter_event_port_get(TEST_PERF_CA_ID, + &sw_event_port); + rte_event_port_link(p->dev_id, sw_event_port, &p->queue_id, + NULL, 1); + + rte_event_dev_service_id_get(p->dev_id, &service_id); + ret = evt_service_setup(service_id); + } + return ret; } @@ -1239,6 +1270,9 @@ perf_cryptodev_destroy(struct evt_test *test, struct evt_options *opt) if (opt->prod_type != EVT_PROD_TYPE_EVENT_CRYPTO_ADPTR) return; + if (t->ca_sw_cap) + rte_event_crypto_adapter_stop(TEST_PERF_CA_ID); + for (port = t->nb_workers; port < perf_nb_event_ports(opt); port++) { struct prod_data *p = &t->prod[port]; diff --git a/app/test-eventdev/test_perf_common.h b/app/test-eventdev/test_perf_common.h index ea0907d61a..c3402696fc 100644 --- a/app/test-eventdev/test_perf_common.h +++ b/app/test-eventdev/test_perf_common.h @@ -67,6 +67,7 @@ struct test_perf { uint8_t sched_type_list[EVT_MAX_STAGES] __rte_cache_aligned; struct rte_event_timer_adapter *timer_adptr[ RTE_EVENT_TIMER_ADAPTER_NUM_MAX] __rte_cache_aligned; + uint8_t ca_sw_cap; struct rte_mempool *ca_op_pool; struct rte_mempool *ca_sess_pool; struct rte_mempool *ca_sess_priv_pool; diff --git a/app/test-eventdev/test_perf_queue.c b/app/test-eventdev/test_perf_queue.c index dcf6d82947..a2158c65da 100644 --- a/app/test-eventdev/test_perf_queue.c +++ b/app/test-eventdev/test_perf_queue.c @@ -317,9 +317,23 @@ perf_queue_eventdev_setup(struct evt_test *test, struct evt_options *opt) return ret; } } + + if (t->ca_sw_cap) { + uint32_t service_id; + + rte_event_crypto_adapter_service_id_get(TEST_PERF_CA_ID, + &service_id); + ret = evt_service_setup(service_id); + if (ret) { + evt_err("Failed to setup crypto adapter service"); + return ret; + } + + ret = rte_event_crypto_adapter_start(TEST_PERF_CA_ID); + } } - return 0; + return ret; } static void