From patchwork Mon Aug 14 09:51:59 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Bruce Richardson X-Patchwork-Id: 27566 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 666359B71; Mon, 14 Aug 2017 12:04:21 +0200 (CEST) Received: from mga02.intel.com (mga02.intel.com [134.134.136.20]) by dpdk.org (Postfix) with ESMTP id A1C399991 for ; Mon, 14 Aug 2017 12:03:47 +0200 (CEST) Received: from orsmga004.jf.intel.com ([10.7.209.38]) by orsmga101.jf.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 14 Aug 2017 03:03:47 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.41,372,1498546800"; d="scan'208";a="118723897" Received: from silpixa00399126.ir.intel.com (HELO silpixa00399126.ger.corp.intel.com) ([10.237.223.223]) by orsmga004.jf.intel.com with ESMTP; 14 Aug 2017 03:03:46 -0700 From: Bruce Richardson To: dev@dpdk.org Cc: thomas@monjalon.net, Bruce Richardson Date: Mon, 14 Aug 2017 10:51:59 +0100 Message-Id: <20170814095208.166496-32-bruce.richardson@intel.com> X-Mailer: git-send-email 2.13.4 In-Reply-To: <20170814095208.166496-1-bruce.richardson@intel.com> References: <20170814095208.166496-1-bruce.richardson@intel.com> Subject: [dpdk-dev] [RFCv2 31/40] build: add cryptodev and some crypto drivers to build 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" Signed-off-by: Bruce Richardson --- config/rte_config.h | 9 ++++ drivers/crypto/meson.build | 103 +++++++++++++++++++++++++++++++++++++ drivers/crypto/null/meson.build | 32 ++++++++++++ drivers/crypto/openssl/meson.build | 33 ++++++++++++ drivers/crypto/qat/meson.build | 36 +++++++++++++ drivers/meson.build | 3 +- lib/librte_cryptodev/meson.build | 39 ++++++++++++++ lib/meson.build | 2 +- 8 files changed, 255 insertions(+), 2 deletions(-) create mode 100644 drivers/crypto/meson.build create mode 100644 drivers/crypto/null/meson.build create mode 100644 drivers/crypto/openssl/meson.build create mode 100644 drivers/crypto/qat/meson.build create mode 100644 lib/librte_cryptodev/meson.build diff --git a/config/rte_config.h b/config/rte_config.h index 67028f682..6eb72415a 100644 --- a/config/rte_config.h +++ b/config/rte_config.h @@ -72,6 +72,9 @@ #define RTE_ETHDEV_QUEUE_STAT_CNTRS 16 #define RTE_ETHDEV_RXTX_CALLBACKS 1 +/* cryptodev defines */ +#define RTE_CRYPTO_MAX_DEVS 64 +#define RTE_CRYPTODEV_NAME_LEN 64 /****** driver defines ********/ /* i40e defines */ @@ -83,4 +86,10 @@ /* interval up to 8160 us, aligned to 2 (or default value) */ #define RTE_LIBRTE_I40E_ITR_INTERVAL -1 +/* + * Number of sessions to create in the session memory pool + * on a single QuickAssist device. + */ +#define RTE_QAT_PMD_MAX_NB_SESSIONS 2048 + #endif /* _RTE_CONFIG_H_ */ diff --git a/drivers/crypto/meson.build b/drivers/crypto/meson.build new file mode 100644 index 000000000..c26e3d387 --- /dev/null +++ b/drivers/crypto/meson.build @@ -0,0 +1,103 @@ +# BSD LICENSE +# +# Copyright(c) 2017 Intel Corporation. All rights reserved. +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions +# are met: +# +# * Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# * Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in +# the documentation and/or other materials provided with the +# distribution. +# * Neither the name of Intel Corporation nor the names of its +# contributors may be used to endorse or promote products derived +# from this software without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +crypto_drivers = ['null'] + +libcrypto_dep = dependency('libcrypto', required: false) +if libcrypto_dep.found() + crypto_drivers += ['qat', 'openssl'] +endif + +foreach drv:crypto_drivers + dpdk_conf.set('RTE_LIBRTE_@0@_PMD'.format(drv.to_upper()),1) + + # set up empty variables used for build + version = 1 + sources = [] + libs = [] + cflags = [] + includes = [include_directories(drv)] + # dependency managment. External deps managed using dependency + # objects, internal deps managed by name of lib + ext_deps = [] + # set up standard deps. Drivers can append/override as necessary + deps = ['eal', 'mbuf', 'cryptodev', 'mempool', 'kvargs'] + + # pull in driver directory which should assign to each of the above + subdir(drv) + + # get dependency objs from strings + dep_objs = ext_deps + foreach d:deps + dep_objs += [get_variable('dep_rte_' + d)] + dep_objs + endforeach + + # generate pmdinfo sources + pmdinfogen_srcs = run_command('grep', '--files-with-matches', + 'RTE_PMD_REGISTER_.*(.*)', sources).stdout().strip().split() + foreach src: pmdinfogen_srcs + out_filename = '@0@.pmd.c'.format(src.split('/')[-1]) + tmp_lib = static_library('tmp_@0@'.format(src.underscorify()), + src, include_directories: includes, + dependencies: dep_objs, + c_args: cflags) + sources += custom_target(out_filename, + command: [pmdinfo, tmp_lib.full_path(), + '@OUTPUT@', pmdinfogen], + output: out_filename, + depends: [pmdinfogen, tmp_lib]) + endforeach + + # now build the driver itself, and add to the drivers list + drv_name = 'rte_pmd_@0@'.format(drv) + version_map = '@0@/@1@/rte_pmd_@1@_version.map'.format( + meson.current_source_dir(), drv) + lib = library(drv_name, + sources, + include_directories: includes, + dependencies: dep_objs, + link_with: libs, + c_args: cflags, + link_args: '-Wl,--version-script=' + version_map, + link_depends: version_map, + version: '@0@.1'.format(version), + install: true, + install_dir: driver_install_path) + + dpdk_drivers += lib + + # create a dependency object and add it to the global dictionary so + # testpmd or other built-in apps can find it if necessary + set_variable('dep_rte_pmd_@0@'.format(drv), + declare_dependency(link_with: lib, + include_directories: includes, + dependencies: dep_objs)) +endforeach diff --git a/drivers/crypto/null/meson.build b/drivers/crypto/null/meson.build new file mode 100644 index 000000000..0a8d65ad5 --- /dev/null +++ b/drivers/crypto/null/meson.build @@ -0,0 +1,32 @@ +# BSD LICENSE +# +# Copyright(c) 2017 Intel Corporation. All rights reserved. +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions +# are met: +# +# * Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# * Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in +# the documentation and/or other materials provided with the +# distribution. +# * Neither the name of Intel Corporation nor the names of its +# contributors may be used to endorse or promote products derived +# from this software without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +sources = files('null_crypto_pmd.c', 'null_crypto_pmd_ops.c') diff --git a/drivers/crypto/openssl/meson.build b/drivers/crypto/openssl/meson.build new file mode 100644 index 000000000..b4337f85e --- /dev/null +++ b/drivers/crypto/openssl/meson.build @@ -0,0 +1,33 @@ +# BSD LICENSE +# +# Copyright(c) 2017 Intel Corporation. All rights reserved. +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions +# are met: +# +# * Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# * Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in +# the documentation and/or other materials provided with the +# distribution. +# * Neither the name of Intel Corporation nor the names of its +# contributors may be used to endorse or promote products derived +# from this software without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +sources = files('rte_openssl_pmd.c', 'rte_openssl_pmd_ops.c') +ext_deps += libcrypto_dep diff --git a/drivers/crypto/qat/meson.build b/drivers/crypto/qat/meson.build new file mode 100644 index 000000000..aa124a0a0 --- /dev/null +++ b/drivers/crypto/qat/meson.build @@ -0,0 +1,36 @@ +# BSD LICENSE +# +# Copyright(c) 2017 Intel Corporation. All rights reserved. +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions +# are met: +# +# * Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# * Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in +# the documentation and/or other materials provided with the +# distribution. +# * Neither the name of Intel Corporation nor the names of its +# contributors may be used to endorse or promote products derived +# from this software without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +sources = files('qat_crypto.c', 'qat_qp.c', + 'qat_adf/qat_algs_build_desc.c', + 'rte_qat_cryptodev.c') +includes += include_directories('qat_adf') +ext_deps += libcrypto_dep diff --git a/drivers/meson.build b/drivers/meson.build index f8ad7d0e2..10c5912c0 100644 --- a/drivers/meson.build +++ b/drivers/meson.build @@ -29,5 +29,6 @@ # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -subdir('net') subdir('mempool') +subdir('net') +subdir('crypto') diff --git a/lib/librte_cryptodev/meson.build b/lib/librte_cryptodev/meson.build new file mode 100644 index 000000000..c732e2094 --- /dev/null +++ b/lib/librte_cryptodev/meson.build @@ -0,0 +1,39 @@ +# BSD LICENSE +# +# Copyright(c) 2017 Intel Corporation. All rights reserved. +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions +# are met: +# +# * Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# * Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in +# the documentation and/or other materials provided with the +# distribution. +# * Neither the name of Intel Corporation nor the names of its +# contributors may be used to endorse or promote products derived +# from this software without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +sources = files('rte_cryptodev.c', 'rte_cryptodev_pmd.c') +headers = files('rte_cryptodev.h', + 'rte_cryptodev_pci.h', + 'rte_cryptodev_pmd.h', + 'rte_cryptodev_vdev.h', + 'rte_crypto.h', + 'rte_crypto_sym.h') +deps = ['eal', 'mempool', 'kvargs', 'mbuf'] diff --git a/lib/meson.build b/lib/meson.build index e0c9c3c81..917eee7b2 100644 --- a/lib/meson.build +++ b/lib/meson.build @@ -35,7 +35,7 @@ subdir('librte_compat') # process all libraries equally, as far as possible libs = ['ring', 'mempool', 'cmdline', 'mbuf', 'net', 'ether', 'hash', - 'kvargs', 'gro', 'metrics'] + 'kvargs', 'gro', 'metrics', 'cryptodev'] foreach l:libs version = 1