From mboxrd@z Thu Jan 1 00:00:00 1970 From: Lee Daly Subject: [PATCH v5 02/10] compress/isal: add pmd device init and de-init Date: Tue, 8 May 2018 13:32:47 +0100 Message-ID: <1525782775-138647-3-git-send-email-lee.daly@intel.com> References: <1524872313-196340-2-git-send-email-lee.daly@intel.com> <1525782775-138647-1-git-send-email-lee.daly@intel.com> Cc: pablo.de.lara.guarch@intel.com, greg.b.tucker@intel.com, deepak.k.jain@intel.com, fiona.trahe@intel.com, Lee Daly To: dev@dpdk.org Return-path: Received: from mga12.intel.com (mga12.intel.com [192.55.52.136]) by dpdk.org (Postfix) with ESMTP id AE2798D3A for ; Tue, 8 May 2018 14:33:02 +0200 (CEST) In-Reply-To: <1525782775-138647-1-git-send-email-lee.daly@intel.com> 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 device initialization functionality such as probe and create, also adding deinitialize functionality. Dynamic logging component also added. Signed-off-by: Lee Daly --- drivers/compress/isal/Makefile | 1 + drivers/compress/isal/isal_compress_pmd.c | 74 +++++++++++++++++++++-- drivers/compress/isal/isal_compress_pmd_ops.c | 25 ++++++++ drivers/compress/isal/isal_compress_pmd_private.h | 24 ++++++++ drivers/compress/isal/meson.build | 2 +- 5 files changed, 121 insertions(+), 5 deletions(-) create mode 100644 drivers/compress/isal/isal_compress_pmd_ops.c create mode 100644 drivers/compress/isal/isal_compress_pmd_private.h diff --git a/drivers/compress/isal/Makefile b/drivers/compress/isal/Makefile index 9b1d866..95904f6 100644 --- a/drivers/compress/isal/Makefile +++ b/drivers/compress/isal/Makefile @@ -25,6 +25,7 @@ EXPORT_MAP := rte_pmd_isal_version.map # library source files SRCS-$(CONFIG_RTE_LIBRTE_PMD_ISAL) += isal_compress_pmd.c +SRCS-$(CONFIG_RTE_LIBRTE_PMD_ISAL) += isal_compress_pmd_ops.c # export include files include $(RTE_SDK)/mk/rte.lib.mk diff --git a/drivers/compress/isal/isal_compress_pmd.c b/drivers/compress/isal/isal_compress_pmd.c index d7137fd..5cc9409 100644 --- a/drivers/compress/isal/isal_compress_pmd.c +++ b/drivers/compress/isal/isal_compress_pmd.c @@ -3,20 +3,76 @@ */ #include +#include +#include #include -/** Remove compression device */ +#include "isal_compress_pmd_private.h" + +int isal_logtype_driver; + +/* Create ISA-L compression device */ static int -compdev_isal_remove_dev(struct rte_vdev_device *vdev __rte_unused) +compdev_isal_create(const char *name, struct rte_vdev_device *vdev, + struct rte_compressdev_pmd_init_params *init_params) { + struct rte_compressdev *dev; + + dev = rte_compressdev_pmd_create(name, &vdev->device, + sizeof(struct isal_comp_private), init_params); + if (dev == NULL) { + ISAL_PMD_LOG(ERR, "failed to create compressdev vdev"); + return -EFAULT; + } + + dev->dev_ops = isal_compress_pmd_ops; + return 0; } +/** Remove compression device */ +static int +compdev_isal_remove_dev(struct rte_vdev_device *vdev) +{ + struct rte_compressdev *compdev; + const char *name; + + name = rte_vdev_device_name(vdev); + if (name == NULL) + return -EINVAL; + + compdev = rte_compressdev_pmd_get_named_dev(name); + if (compdev == NULL) + return -ENODEV; + + return rte_compressdev_pmd_destroy(compdev); +} + /** Initialise ISA-L compression device */ static int -compdev_isal_probe(struct rte_vdev_device *dev __rte_unused) +compdev_isal_probe(struct rte_vdev_device *dev) { - return 0; + struct rte_compressdev_pmd_init_params init_params = { + "", + rte_socket_id(), + }; + const char *name, *args; + int retval; + + name = rte_vdev_device_name(dev); + if (name == NULL) + return -EINVAL; + + args = rte_vdev_device_args(dev); + + retval = rte_compressdev_pmd_parse_input_args(&init_params, args); + if (retval) { + ISAL_PMD_LOG(ERR, + "Failed to parse initialisation arguments[%s]\n", args); + return -EINVAL; + } + + return compdev_isal_create(name, dev, &init_params); } static struct rte_vdev_driver compdev_isal_pmd_drv = { @@ -27,3 +83,13 @@ static struct rte_vdev_driver compdev_isal_pmd_drv = { RTE_PMD_REGISTER_VDEV(COMPDEV_NAME_ISAL_PMD, compdev_isal_pmd_drv); RTE_PMD_REGISTER_PARAM_STRING(COMPDEV_NAME_ISAL_PMD, "socket_id="); + +RTE_INIT(isal_init_log); + +static void +isal_init_log(void) +{ + isal_logtype_driver = rte_log_register("comp_isal"); + if (isal_logtype_driver >= 0) + rte_log_set_level(isal_logtype_driver, RTE_LOG_INFO); +} diff --git a/drivers/compress/isal/isal_compress_pmd_ops.c b/drivers/compress/isal/isal_compress_pmd_ops.c new file mode 100644 index 0000000..cff05b4 --- /dev/null +++ b/drivers/compress/isal/isal_compress_pmd_ops.c @@ -0,0 +1,25 @@ +/* SPDX-License-Identifier: BSD-3-Clause + * Copyright(c) 2018 Intel Corporation + */ + +#include + +struct rte_compressdev_ops isal_pmd_ops = { + .dev_configure = NULL, + .dev_start = NULL, + .dev_stop = NULL, + .dev_close = NULL, + + .stats_get = NULL, + .stats_reset = NULL, + + .dev_infos_get = NULL, + + .queue_pair_setup = NULL, + .queue_pair_release = NULL, + + .private_xform_create = NULL, + .private_xform_free = NULL, +}; + +struct rte_compressdev_ops *isal_compress_pmd_ops = &isal_pmd_ops; diff --git a/drivers/compress/isal/isal_compress_pmd_private.h b/drivers/compress/isal/isal_compress_pmd_private.h new file mode 100644 index 0000000..09ecfb7 --- /dev/null +++ b/drivers/compress/isal/isal_compress_pmd_private.h @@ -0,0 +1,24 @@ +/* SPDX-License-Identifier: BSD-3-Clause + * Copyright(c) 2018 Intel Corporation + */ + +#ifndef _ISAL_COMP_PMD_PRIVATE_H_ +#define _ISAL_COMP_PMD_PRIVATE_H_ + +#define COMPDEV_NAME_ISAL_PMD compress_isal +/**< ISA-L comp PMD device name */ + +extern int isal_logtype_driver; +#define ISAL_PMD_LOG(level, fmt, args...) \ + rte_log(RTE_LOG_ ## level, isal_logtype_driver, "%s(): "fmt "\n", \ + __func__, ##args) + +/* private data structure for each ISA-L compression device */ +struct isal_comp_private { + struct rte_mempool *priv_xform_mp; +}; + +/** device specific operations function pointer structure */ +extern struct rte_compressdev_ops *isal_compress_pmd_ops; + +#endif /* _ISAL_COMP_PMD_PRIVATE_H_ */ diff --git a/drivers/compress/isal/meson.build b/drivers/compress/isal/meson.build index 4447e20..94c10fd 100644 --- a/drivers/compress/isal/meson.build +++ b/drivers/compress/isal/meson.build @@ -7,7 +7,7 @@ if not dep.found() endif deps += 'bus_vdev' -sources = files('isal_compress_pmd.c') +sources = files('isal_compress_pmd.c', 'isal_compress_pmd_ops.c') ext_deps += dep pkgconfig_extra_libs += '-lisal' -- 2.7.4