..  SPDX-License-Identifier: BSD-3-Clause
    Copyright(c) 2018 Cavium Networks.

ZLIB Compression Poll Mode Driver
==================================

The ZLIB PMD (**librte_pmd_zlib**) provides poll mode compression &
decompression driver based on SW zlib library,

Features
--------

ZLIB PMD has support for:

Compression/Decompression algorithm:

* DEFLATE

Huffman code type:

* FIXED
* DYNAMIC

Window size support:

* Min - 256 bytes
* Max - 32K

Limitations
-----------

* Scatter-Gather and Stateful not supported.

Installation
------------

* To build DPDK with ZLIB library, the user is required to download the ``libz`` library.
* Use following command for installation.

* For Fedora users::
     sudo yum install zlib-devel
* For Ubuntu users::
     sudo apt-get install zlib1g-dev

* Once downloaded, the user needs to build the library.

* To build from sources
  download zlib sources from http://zlib.net/ and do following before building DPDK::

    make
    sudo make install

Initialization
--------------

In order to enable this virtual compression PMD, user must:

* Set ``CONFIG_RTE_LIBRTE_PMD_ZLIB=y`` in config/common_base.

To use the PMD in an application, user must:

* Call ``rte_vdev_init("compress_zlib")`` within the application.

* Use ``--vdev="compress_zlib"`` in the EAL options, which will call ``rte_vdev_init()`` internally.

The following parameter (optional) can be provided in the previous two calls:

* ``socket_id:`` Specify the socket where the memory for the device is going to be allocated
  (by default, socket_id will be the socket where the core that is creating the PMD is running on).
