Skip to content

Commit

Permalink
compress/isal: add skeleton ISA-L compression PMD
Browse files Browse the repository at this point in the history
Adding basic skeleton of the ISA-L compression driver.
No compression functionality, but lays the foundation for
operations in the rest of the patchset.

The ISA-L compression driver utilizes Intel's ISA-L compression
library and compressdev API.

Signed-off-by: Lee Daly <lee.daly@intel.com>
Reviewed-by: Pablo de Lara <pablo.de.lara.guarch@intel.com>
  • Loading branch information
lee-daly authored and pablodelara committed May 10, 2018
1 parent 8723590 commit 3c32e89
Show file tree
Hide file tree
Showing 13 changed files with 125 additions and 0 deletions.
11 changes: 11 additions & 0 deletions MAINTAINERS
Original file line number Diff line number Diff line change
Expand Up @@ -347,6 +347,7 @@ M: Pablo de Lara <pablo.de.lara.guarch@intel.com>
M: Ashish Gupta <ashish.gupta@caviumnetworks.com>
T: git://dpdk.org/next/dpdk-next-crypto
F: lib/librte_compressdev/
F: drivers/compress/
F: test/test/test_compressdev*
F: doc/guides/prog_guide/compressdev.rst

Expand Down Expand Up @@ -818,6 +819,16 @@ F: doc/guides/cryptodevs/zuc.rst
F: doc/guides/cryptodevs/features/zuc.ini


Compression Drivers
-------------------
M: Pablo de Lara <pablo.de.lara.guarch@intel.com>
T: git://dpdk.org/next/dpdk-next-crypto

ISA-L
M: Lee Daly <lee.daly@intel.com>
F: drivers/compress/isal/


Eventdev Drivers
----------------
M: Jerin Jacob <jerin.jacob@caviumnetworks.com>
Expand Down
5 changes: 5 additions & 0 deletions config/common_base
Original file line number Diff line number Diff line change
Expand Up @@ -581,6 +581,11 @@ CONFIG_RTE_COMPRESS_MAX_DEVS=64
#
CONFIG_RTE_COMPRESSDEV_TEST=n

#
# Compile PMD for ISA-L compression device
#
CONFIG_RTE_LIBRTE_PMD_ISAL=n

#
# Compile generic event device library
#
Expand Down
4 changes: 4 additions & 0 deletions devtools/test-build.sh
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,7 @@ default_path=$PATH
# - DPDK_BUILD_TEST_CONFIGS (defconfig1+option1+option2 defconfig2)
# - DPDK_DEP_ARCHIVE
# - DPDK_DEP_CFLAGS
# - DPDK_DEP_ISAL (y/[n])
# - DPDK_DEP_LDFLAGS
# - DPDK_DEP_MLX (y/[n])
# - DPDK_DEP_NUMA ([y]/n)
Expand Down Expand Up @@ -122,6 +123,7 @@ reset_env ()
unset CROSS
unset DPDK_DEP_ARCHIVE
unset DPDK_DEP_CFLAGS
unset DPDK_DEP_ISAL
unset DPDK_DEP_LDFLAGS
unset DPDK_DEP_MLX
unset DPDK_DEP_NUMA
Expand Down Expand Up @@ -171,6 +173,8 @@ config () # <directory> <target> <options>
sed -ri 's,(BYPASS=)n,\1y,' $1/.config
test "$DPDK_DEP_ARCHIVE" != y || \
sed -ri 's,(RESOURCE_TAR=)n,\1y,' $1/.config
test "$DPDK_DEP_ISAL" != y || \
sed -ri 's,(ISAL_PMD=)n,\1y,' $1/.config
test "$DPDK_DEP_MLX" != y || \
sed -ri 's,(MLX._PMD=)n,\1y,' $1/.config
test "$DPDK_DEP_SZE" != y || \
Expand Down
5 changes: 5 additions & 0 deletions doc/guides/rel_notes/release_18_05.rst
Original file line number Diff line number Diff line change
Expand Up @@ -144,6 +144,11 @@ New Features
The compressdev library provides an API for offload of compression and
decompression operations to hardware or software accelerator devices.

* **Added a new compression poll mode driver using Intels ISA-L.**

Added the new ``ISA-L`` compression driver, for compression and decompression
operations in software.

* **Added the Event Timer Adapter Library.**

The Event Timer Adapter Library extends the event-based model by introducing
Expand Down
2 changes: 2 additions & 0 deletions drivers/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,8 @@ DIRS-$(CONFIG_RTE_LIBRTE_BBDEV) += baseband
DEPDIRS-baseband := common bus mempool
DIRS-$(CONFIG_RTE_LIBRTE_CRYPTODEV) += crypto
DEPDIRS-crypto := common bus mempool
DIRS-$(CONFIG_RTE_LIBRTE_COMPRESSDEV) += compress
DEPDIRS-compress := bus mempool
DIRS-$(CONFIG_RTE_LIBRTE_EVENTDEV) += event
DEPDIRS-event := common bus mempool net
DIRS-$(CONFIG_RTE_LIBRTE_RAWDEV) += raw
Expand Down
8 changes: 8 additions & 0 deletions drivers/compress/Makefile
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
# SPDX-License-Identifier: BSD-3-Clause
# Copyright(c) 2018 Intel Corporation

include $(RTE_SDK)/mk/rte.vars.mk

DIRS-$(CONFIG_RTE_LIBRTE_PMD_ISAL) += isal

include $(RTE_SDK)/mk/rte.subdir.mk
30 changes: 30 additions & 0 deletions drivers/compress/isal/Makefile
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
# SPDX-License-Identifier: BSD-3-Clause
# Copyright(c) 2018 Intel Corporation

include $(RTE_SDK)/mk/rte.vars.mk

# library name
LIB = librte_pmd_isal_comp.a

# build flags
CFLAGS += -O3
CFLAGS += $(WERROR_FLAGS)
CFLAGS += -DALLOW_EXPERIMENTAL_API

# external library dependencies
LDLIBS += -lisal
LDLIBS += -lrte_eal -lrte_mbuf -lrte_mempool -lrte_ring
LDLIBS += -lrte_compressdev
LDLIBS += -lrte_bus_vdev

# library version
LIBABIVER := 1

# versioning export map
EXPORT_MAP := rte_pmd_isal_version.map

# library source files
SRCS-$(CONFIG_RTE_LIBRTE_PMD_ISAL) += isal_compress_pmd.c

# export include files
include $(RTE_SDK)/mk/rte.lib.mk
29 changes: 29 additions & 0 deletions drivers/compress/isal/isal_compress_pmd.c
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
/* SPDX-License-Identifier: BSD-3-Clause
* Copyright(c) 2018 Intel Corporation
*/

#include <rte_bus_vdev.h>
#include <rte_compressdev_pmd.h>

/** Remove compression device */
static int
compdev_isal_remove_dev(struct rte_vdev_device *vdev __rte_unused)
{
return 0;
}

/** Initialise ISA-L compression device */
static int
compdev_isal_probe(struct rte_vdev_device *dev __rte_unused)
{
return 0;
}

static struct rte_vdev_driver compdev_isal_pmd_drv = {
.probe = compdev_isal_probe,
.remove = compdev_isal_remove_dev,
};

RTE_PMD_REGISTER_VDEV(COMPDEV_NAME_ISAL_PMD, compdev_isal_pmd_drv);
RTE_PMD_REGISTER_PARAM_STRING(COMPDEV_NAME_ISAL_PMD,
"socket_id=<int>");
14 changes: 14 additions & 0 deletions drivers/compress/isal/meson.build
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
# SPDX-License-Identifier: BSD-3-Clause
# Copyright 2018 Intel Corporation

dep = dependency('libisal', required: false)
if not dep.found()
build =false
endif

deps += 'bus_vdev'
sources = files('isal_compress_pmd.c')
ext_deps += dep
pkgconfig_extra_libs += '-lisal'

allow_experimental_apis = true
3 changes: 3 additions & 0 deletions drivers/compress/isal/rte_pmd_isal_version.map
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
DPDK_18.05 {
local: *;
};
8 changes: 8 additions & 0 deletions drivers/compress/meson.build
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
# SPDX-License-Identifier: BSD-3-Clause
# Copyright(c) 2018 Intel Corporation

drivers = ['isal']

std_deps = ['compressdev'] # compressdev pulls in all other needed deps
config_flag_fmt = 'RTE_LIBRTE_@0@_PMD'
driver_name_fmt = 'rte_pmd_@0@'
1 change: 1 addition & 0 deletions drivers/meson.build
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ driver_classes = ['common',
'mempool', # depends on common and bus.
'net', # depends on common, bus and mempool.
'crypto', # depends on common, bus and mempool (net in future).
'compress', # depends on common, bus, mempool.
'event', # depends on common, bus, mempool and net.
'raw'] # depends on common, bus, mempool, net and event.

Expand Down
5 changes: 5 additions & 0 deletions mk/rte.app.mk
Original file line number Diff line number Diff line change
Expand Up @@ -234,6 +234,11 @@ endif # CONFIG_RTE_LIBRTE_DPAA_BUS
_LDLIBS-$(CONFIG_RTE_LIBRTE_PMD_VIRTIO_CRYPTO) += -lrte_pmd_virtio_crypto
endif # CONFIG_RTE_LIBRTE_CRYPTODEV

ifeq ($(CONFIG_RTE_LIBRTE_COMPRESSDEV),y)
_LDLIBS-$(CONFIG_RTE_LIBRTE_PMD_ISAL) += -lrte_pmd_isal_comp
_LDLIBS-$(CONFIG_RTE_LIBRTE_PMD_ISAL) += -lisal
endif # CONFIG_RTE_LIBRTE_COMPRESSDEV

ifeq ($(CONFIG_RTE_LIBRTE_EVENTDEV),y)
_LDLIBS-$(CONFIG_RTE_LIBRTE_PMD_SKELETON_EVENTDEV) += -lrte_pmd_skeleton_event
_LDLIBS-$(CONFIG_RTE_LIBRTE_PMD_SW_EVENTDEV) += -lrte_pmd_sw_event
Expand Down

0 comments on commit 3c32e89

Please sign in to comment.