compress/zlib: introduce zlib PMD
Add initial PMD setup routines in compressdev framework. ZLIB PMD appears as virtual compression device. User would need to install zlib prior to enabling this PMD. Signed-off-by: Sunila Sahu <sunila.sahu@caviumnetworks.com> Signed-off-by: Shally Verma <shally.verma@caviumnetworks.com> Signed-off-by: Ashish Gupta <ashish.gupta@caviumnetworks.com>
This commit is contained in:
parent
788e748d38
commit
0c4e4c16b0
@ -872,6 +872,10 @@ F: drivers/compress/isal/
|
||||
F: doc/guides/compressdevs/isal.rst
|
||||
F: doc/guides/compressdevs/features/isal.ini
|
||||
|
||||
ZLIB
|
||||
M: Sunila Sahu <sunila.sahu@caviumnetworks.com>
|
||||
F: drivers/compress/zlib/
|
||||
|
||||
|
||||
Eventdev Drivers
|
||||
----------------
|
||||
|
@ -582,6 +582,11 @@ CONFIG_RTE_COMPRESSDEV_TEST=n
|
||||
#
|
||||
CONFIG_RTE_LIBRTE_PMD_ISAL=n
|
||||
|
||||
#
|
||||
# Compile PMD for ZLIB compression device
|
||||
#
|
||||
CONFIG_RTE_LIBRTE_PMD_ZLIB=n
|
||||
|
||||
#
|
||||
# Compile generic event device library
|
||||
#
|
||||
|
@ -4,5 +4,6 @@
|
||||
include $(RTE_SDK)/mk/rte.vars.mk
|
||||
|
||||
DIRS-$(CONFIG_RTE_LIBRTE_PMD_ISAL) += isal
|
||||
DIRS-$(CONFIG_RTE_LIBRTE_PMD_ZLIB) += zlib
|
||||
|
||||
include $(RTE_SDK)/mk/rte.subdir.mk
|
||||
|
@ -1,7 +1,7 @@
|
||||
# SPDX-License-Identifier: BSD-3-Clause
|
||||
# Copyright(c) 2018 Intel Corporation
|
||||
|
||||
drivers = ['isal', 'qat']
|
||||
drivers = ['isal', 'qat', 'zlib']
|
||||
|
||||
std_deps = ['compressdev'] # compressdev pulls in all other needed deps
|
||||
config_flag_fmt = 'RTE_LIBRTE_@0@_PMD'
|
||||
|
28
drivers/compress/zlib/Makefile
Normal file
28
drivers/compress/zlib/Makefile
Normal file
@ -0,0 +1,28 @@
|
||||
# SPDX-License-Identifier: BSD-3-Clause
|
||||
# Copyright(c) 2018 Cavium Networks
|
||||
|
||||
include $(RTE_SDK)/mk/rte.vars.mk
|
||||
|
||||
# library name
|
||||
LIB = librte_pmd_zlib.a
|
||||
|
||||
# build flags
|
||||
CFLAGS += -O3
|
||||
CFLAGS += $(WERROR_FLAGS)
|
||||
CFLAGS += -DALLOW_EXPERIMENTAL_API
|
||||
|
||||
# library version
|
||||
LIBABIVER := 1
|
||||
|
||||
# versioning export map
|
||||
EXPORT_MAP := rte_pmd_zlib_version.map
|
||||
|
||||
# external library dependencies
|
||||
LDLIBS += -lrte_eal -lrte_mbuf -lrte_mempool -lrte_ring -lz
|
||||
LDLIBS += -lrte_compressdev
|
||||
LDLIBS += -lrte_bus_vdev
|
||||
|
||||
# library source files
|
||||
SRCS-$(CONFIG_RTE_LIBRTE_PMD_ZLIB) += zlib_pmd.c
|
||||
|
||||
include $(RTE_SDK)/mk/rte.lib.mk
|
14
drivers/compress/zlib/meson.build
Normal file
14
drivers/compress/zlib/meson.build
Normal file
@ -0,0 +1,14 @@
|
||||
# SPDX-License-Identifier: BSD-3-Clause
|
||||
# Copyright(c) 2018 Cavium Networks
|
||||
|
||||
dep = dependency('zlib', required: false)
|
||||
if not dep.found()
|
||||
build = false
|
||||
endif
|
||||
|
||||
deps += 'bus_vdev'
|
||||
sources = files('zlib_pmd.c')
|
||||
ext_deps += dep
|
||||
pkgconfig_extra_libs += '-lz'
|
||||
|
||||
allow_experimental_apis = true
|
3
drivers/compress/zlib/rte_pmd_zlib_version.map
Normal file
3
drivers/compress/zlib/rte_pmd_zlib_version.map
Normal file
@ -0,0 +1,3 @@
|
||||
DPDK_18.08 {
|
||||
local: *;
|
||||
};
|
87
drivers/compress/zlib/zlib_pmd.c
Normal file
87
drivers/compress/zlib/zlib_pmd.c
Normal file
@ -0,0 +1,87 @@
|
||||
/* SPDX-License-Identifier: BSD-3-Clause
|
||||
* Copyright(c) 2018 Cavium Networks
|
||||
*/
|
||||
|
||||
#include <rte_bus_vdev.h>
|
||||
#include <rte_common.h>
|
||||
|
||||
#include "zlib_pmd_private.h"
|
||||
|
||||
static int
|
||||
zlib_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 zlib_private), init_params);
|
||||
if (dev == NULL) {
|
||||
ZLIB_PMD_ERR("driver %s: create failed", init_params->name);
|
||||
return -ENODEV;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int
|
||||
zlib_probe(struct rte_vdev_device *vdev)
|
||||
{
|
||||
struct rte_compressdev_pmd_init_params init_params = {
|
||||
"",
|
||||
rte_socket_id()
|
||||
};
|
||||
const char *name;
|
||||
const char *input_args;
|
||||
int retval;
|
||||
|
||||
name = rte_vdev_device_name(vdev);
|
||||
|
||||
if (name == NULL)
|
||||
return -EINVAL;
|
||||
|
||||
input_args = rte_vdev_device_args(vdev);
|
||||
|
||||
retval = rte_compressdev_pmd_parse_input_args(&init_params, input_args);
|
||||
if (retval < 0) {
|
||||
ZLIB_PMD_LOG(ERR,
|
||||
"Failed to parse initialisation arguments[%s]\n",
|
||||
input_args);
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
return zlib_create(name, vdev, &init_params);
|
||||
}
|
||||
|
||||
static int
|
||||
zlib_remove(struct rte_vdev_device *vdev)
|
||||
{
|
||||
struct rte_compressdev *compressdev;
|
||||
const char *name;
|
||||
|
||||
name = rte_vdev_device_name(vdev);
|
||||
if (name == NULL)
|
||||
return -EINVAL;
|
||||
|
||||
compressdev = rte_compressdev_pmd_get_named_dev(name);
|
||||
if (compressdev == NULL)
|
||||
return -ENODEV;
|
||||
|
||||
return rte_compressdev_pmd_destroy(compressdev);
|
||||
}
|
||||
|
||||
static struct rte_vdev_driver zlib_pmd_drv = {
|
||||
.probe = zlib_probe,
|
||||
.remove = zlib_remove
|
||||
};
|
||||
|
||||
RTE_PMD_REGISTER_VDEV(COMPRESSDEV_NAME_ZLIB_PMD, zlib_pmd_drv);
|
||||
RTE_INIT(zlib_init_log);
|
||||
|
||||
static void
|
||||
zlib_init_log(void)
|
||||
{
|
||||
zlib_logtype_driver = rte_log_register("pmd.compress.zlib");
|
||||
if (zlib_logtype_driver >= 0)
|
||||
rte_log_set_level(zlib_logtype_driver, RTE_LOG_INFO);
|
||||
}
|
32
drivers/compress/zlib/zlib_pmd_private.h
Normal file
32
drivers/compress/zlib/zlib_pmd_private.h
Normal file
@ -0,0 +1,32 @@
|
||||
/* SPDX-License-Identifier: BSD-3-Clause
|
||||
* Copyright(c) 2018 Cavium Networks
|
||||
*/
|
||||
|
||||
#ifndef _RTE_ZLIB_PMD_PRIVATE_H_
|
||||
#define _RTE_ZLIB_PMD_PRIVATE_H_
|
||||
|
||||
#include <zlib.h>
|
||||
#include <rte_compressdev.h>
|
||||
#include <rte_compressdev_pmd.h>
|
||||
|
||||
#define COMPRESSDEV_NAME_ZLIB_PMD compress_zlib
|
||||
/**< ZLIB PMD device name */
|
||||
|
||||
#define DEF_MEM_LEVEL 8
|
||||
|
||||
int zlib_logtype_driver;
|
||||
#define ZLIB_PMD_LOG(level, fmt, args...) \
|
||||
rte_log(RTE_LOG_ ## level, zlib_logtype_driver, "%s(): "fmt "\n", \
|
||||
__func__, ##args)
|
||||
|
||||
#define ZLIB_PMD_INFO(fmt, args...) \
|
||||
ZLIB_PMD_LOG(INFO, fmt, ## args)
|
||||
#define ZLIB_PMD_ERR(fmt, args...) \
|
||||
ZLIB_PMD_LOG(ERR, fmt, ## args)
|
||||
#define ZLIB_PMD_WARN(fmt, args...) \
|
||||
ZLIB_PMD_LOG(WARNING, fmt, ## args)
|
||||
|
||||
struct zlib_private {
|
||||
};
|
||||
|
||||
#endif /* _RTE_ZLIB_PMD_PRIVATE_H_ */
|
@ -228,6 +228,8 @@ _LDLIBS-$(CONFIG_RTE_LIBRTE_PMD_ISAL) += -lisal
|
||||
ifeq ($(CONFIG_RTE_LIBRTE_PMD_QAT_SYM),n)
|
||||
_LDLIBS-$(CONFIG_RTE_LIBRTE_PMD_QAT) += -lrte_pmd_qat
|
||||
endif # CONFIG_RTE_LIBRTE_PMD_QAT_SYM
|
||||
_LDLIBS-$(CONFIG_RTE_LIBRTE_PMD_ZLIB) += -lrte_pmd_zlib
|
||||
_LDLIBS-$(CONFIG_RTE_LIBRTE_PMD_ZLIB) += -lz
|
||||
endif # CONFIG_RTE_LIBRTE_COMPRESSDEV
|
||||
|
||||
ifeq ($(CONFIG_RTE_LIBRTE_EVENTDEV),y)
|
||||
|
Loading…
Reference in New Issue
Block a user