From patchwork Thu Jan 5 15:02:10 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Arkadiusz Kusztal X-Patchwork-Id: 18923 X-Patchwork-Delegate: pablo.de.lara.guarch@intel.com Return-Path: X-Original-To: patchwork@dpdk.org Delivered-To: patchwork@dpdk.org Received: from [92.243.14.124] (localhost [IPv6:::1]) by dpdk.org (Postfix) with ESMTP id 647FC58CF; Thu, 5 Jan 2017 16:02:17 +0100 (CET) Received: from mga03.intel.com (mga03.intel.com [134.134.136.65]) by dpdk.org (Postfix) with ESMTP id 1F3E42946 for ; Thu, 5 Jan 2017 16:02:14 +0100 (CET) Received: from orsmga003.jf.intel.com ([10.7.209.27]) by orsmga103.jf.intel.com with ESMTP; 05 Jan 2017 07:02:13 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.33,321,1477983600"; d="scan'208";a="919260056" Received: from sivswdev03.ir.intel.com (HELO localhost.localdomain) ([10.237.217.157]) by orsmga003.jf.intel.com with ESMTP; 05 Jan 2017 07:02:11 -0800 From: Arek Kusztal To: dev@dpdk.org Cc: fiona.trahe@intel.com, pablo.de.lara.guarch@intel.com, john.griffin@intel.com, deepak.k.jain@intel.com, Arek Kusztal Date: Thu, 5 Jan 2017 15:02:10 +0000 Message-Id: <1483628530-19243-1-git-send-email-arkadiuszx.kusztal@intel.com> X-Mailer: git-send-email 1.7.0.7 Subject: [dpdk-dev] [PATCH] app/test: add sgl gcm performance test X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" This patch adds scatter-gather list performance test using AES GCM algorithm Signed-off-by: Arek Kusztal --- app/test/test_cryptodev_perf.c | 71 +++++++++++++++++++++++++++++++----------- 1 file changed, 53 insertions(+), 18 deletions(-) diff --git a/app/test/test_cryptodev_perf.c b/app/test/test_cryptodev_perf.c index 7751ff2..26940ed 100644 --- a/app/test/test_cryptodev_perf.c +++ b/app/test/test_cryptodev_perf.c @@ -3793,13 +3793,17 @@ perf_gcm_set_crypto_op(struct rte_crypto_op *op, struct rte_mbuf *m, return op; } - +#define SGL_NO 2 static struct rte_mbuf * test_perf_create_pktmbuf_fill(struct rte_mempool *mpool, struct perf_test_params *params, - unsigned buf_sz, struct crypto_params *m_hlp) + unsigned buf_sz, struct crypto_params *m_hlp, + int sgl) { - struct rte_mbuf *m = rte_pktmbuf_alloc(mpool); + struct rte_mbuf *m = rte_pktmbuf_alloc(mpool), *m_2 = NULL; + + if (sgl) + m_2 = rte_pktmbuf_alloc(mpool); uint16_t iv_pad_len = ALIGN_POW2_ROUNDUP(params->symmetric_op->iv_len, 16); uint16_t aad_len = params->symmetric_op->aad_len; @@ -3820,14 +3824,38 @@ test_perf_create_pktmbuf_fill(struct rte_mempool *mpool, } m_hlp->iv = (uint8_t *)p; - p = rte_pktmbuf_append(m, buf_sz); - if (p == NULL) { - rte_pktmbuf_free(m); - return NULL; + if (!sgl) { + p = rte_pktmbuf_append(m, buf_sz); + if (p == NULL) { + rte_pktmbuf_free(m); + return NULL; + } + rte_memcpy(p, params->symmetric_op->p_data, buf_sz); + } else { + /* 1st */ + p = rte_pktmbuf_append(m, buf_sz / SGL_NO); + if (p == NULL) { + rte_pktmbuf_free(m); + return NULL; + } + rte_memcpy(p, params->symmetric_op->p_data, buf_sz / SGL_NO); + + /* 2nd */ + p = rte_pktmbuf_append(m_2, buf_sz / SGL_NO); + if (p == NULL) { + rte_pktmbuf_free(m); + return NULL; + } + rte_memcpy(p, params->symmetric_op->p_data + buf_sz / SGL_NO, + buf_sz / SGL_NO); + + m->next = m_2; } - rte_memcpy(p, params->symmetric_op->p_data, buf_sz); + if (!sgl) + p = rte_pktmbuf_append(m, digest_size); + else + p = rte_pktmbuf_append(m_2, digest_size); - p = rte_pktmbuf_append(m, digest_size); if (p == NULL) { rte_pktmbuf_free(m); return NULL; @@ -3839,7 +3867,7 @@ test_perf_create_pktmbuf_fill(struct rte_mempool *mpool, static int perf_AES_GCM(uint8_t dev_id, uint16_t queue_id, - struct perf_test_params *pparams, uint32_t test_ops) + struct perf_test_params *pparams, uint32_t test_ops, int sgl) { int j = 0; struct crypto_testsuite_params *ts_params = &testsuite_params; @@ -3872,7 +3900,7 @@ perf_AES_GCM(uint8_t dev_id, uint16_t queue_id, mbufs[i] = test_perf_create_pktmbuf_fill( ts_params->mbuf_mp, pparams, pparams->symmetric_op->p_len, - &m_hlp[i]); + &m_hlp[i], sgl); } if (test_ops) @@ -3985,7 +4013,7 @@ perf_AES_GCM(uint8_t dev_id, uint16_t queue_id, } static int -test_perf_AES_GCM(int continual_buf_len, int continual_size) +test_perf_AES_GCM(int continual_buf_len, int continual_size, int sgl) { uint16_t i, j, k, loops = 1; @@ -4086,10 +4114,10 @@ test_perf_AES_GCM(int continual_buf_len, int continual_size) ops_set[i].t_len = gcm_tests[i]->auth_tags[j].len; /* Run is twice, one for encryption/hash checks, - * one for perf + * one for perf, dont check for sgl */ - if (perf_AES_GCM(testsuite_params.dev_id, 0, - ¶ms_set[i], 1)) + if (!sgl && perf_AES_GCM(testsuite_params.dev_id, 0, + ¶ms_set[i], 1, sgl)) return TEST_FAILED; for (k = 0; k < loops; k++) { @@ -4098,7 +4126,7 @@ test_perf_AES_GCM(int continual_buf_len, int continual_size) "Throughput(Gbps)\t" "Retries\tEmptyPolls"); if (perf_AES_GCM(testsuite_params.dev_id, 0, - ¶ms_set[i], 0)) + ¶ms_set[i], 0, sgl)) return TEST_FAILED; if (continual_buf_len) printf("\n\nCompleted loop %i of %i ...", @@ -4113,7 +4141,12 @@ test_perf_AES_GCM(int continual_buf_len, int continual_size) static int test_cryptodev_perf_AES_GCM(void) { - return test_perf_AES_GCM(0, 0); + return test_perf_AES_GCM(0, 0, 0); +} + +static int test_cryptodev_perf_AES_GCM_SGL_2_bufs(void) +{ + return test_perf_AES_GCM(0, 0, 1); } /* * This function calls AES GCM performance tests providing @@ -4122,7 +4155,7 @@ static int test_cryptodev_perf_AES_GCM(void) */ static int test_continual_perf_AES_GCM(void) { - return test_perf_AES_GCM(1024, 10); + return test_perf_AES_GCM(1024, 10, 0); } static int @@ -4186,6 +4219,8 @@ static struct unit_test_suite cryptodev_testsuite = { test_cryptodev_perf_AES_GCM), TEST_CASE_ST(ut_setup, ut_teardown, test_perf_aes_cbc_vary_burst_size), + TEST_CASE_ST(ut_setup, ut_teardown, + test_cryptodev_perf_AES_GCM_SGL_2_bufs), TEST_CASES_END() /**< NULL terminate unit test array */ } };