> Subject: [PATCH v2 10/10] compress/mlx5: add the supported capabilities > > Add all the capabilities supported by the device. > > Add the driver documentations. > > Signed-off-by: Matan Azrad <ma...@nvidia.com> > --- > doc/guides/compressdevs/features/mlx5.ini | 13 +++++ > doc/guides/compressdevs/index.rst | 1 + > doc/guides/compressdevs/mlx5.rst | 84 > +++++++++++++++++++++++++++++++ > doc/guides/rel_notes/release_21_02.rst | 6 +++ > drivers/compress/mlx5/mlx5_compress.c | 24 ++++++++- > 5 files changed, 126 insertions(+), 2 deletions(-) > create mode 100644 doc/guides/compressdevs/features/mlx5.ini > create mode 100644 doc/guides/compressdevs/mlx5.rst > > diff --git a/doc/guides/compressdevs/features/mlx5.ini > b/doc/guides/compressdevs/features/mlx5.ini > new file mode 100644 > index 0000000..891ce47 > --- /dev/null > +++ b/doc/guides/compressdevs/features/mlx5.ini > @@ -0,0 +1,13 @@ > +; > +; Refer to default.ini for the full list of available PMD features. > +; > +; Supported features of 'MLX5' compression driver. > +; > +[Features] > +HW Accelerated = Y > +Deflate = Y > +Adler32 = Y > +Crc32 = Y > +Adler32&Crc32 = Y > +Fixed = Y > +Dynamic = Y > diff --git a/doc/guides/compressdevs/index.rst > b/doc/guides/compressdevs/index.rst > index 1f37e26..8f9f3a5 100644 > --- a/doc/guides/compressdevs/index.rst > +++ b/doc/guides/compressdevs/index.rst > @@ -14,3 +14,4 @@ Compression Device Drivers > octeontx > qat_comp > zlib > + mlx5
Maintain alphabetical order. Also fix compilation issues reported by CI http://mails.dpdk.org/archives/test-report/2021-January/173975.html There is no information about the installation and how to test this PMD in the documentation. > diff --git a/doc/guides/compressdevs/mlx5.rst > b/doc/guides/compressdevs/mlx5.rst > new file mode 100644 > index 0000000..4ee26b0 > --- /dev/null > +++ b/doc/guides/compressdevs/mlx5.rst > @@ -0,0 +1,84 @@ > +.. SPDX-License-Identifier: BSD-3-Clause > + Copyright 2021 Mellanox Technologies, Ltd > + > +.. include:: <isonum.txt> > + > +MLX5 compress driver > +==================== > + > +The MLX5 compress driver library > +(**librte_compress_mlx5**) provides support for **Mellanox BlueField 2** > +families of 25/50/100/200 Gb/s adapters. > + > +Design > +------ > + > +This PMD is configuring the compress, decompress amd DMA engines. > + > +For security reasons and robustness, this driver only deals with virtual > +memory addresses. The way resources allocations are handled by the kernel, > +combined with hardware specifications that allow to handle virtual memory > +addresses directly, ensure that DPDK applications cannot access random > +physical memory (or memory that does not belong to the current process). > + > +The PMD uses libibverbs and libmlx5 to access the device firmware > +or directly the hardware components. > +There are different levels of objects and bypassing abilities > +to get the best performances: > + > +- Verbs is a complete high-level generic API. > +- Direct Verbs is a device-specific API. > +- DevX allows to access firmware objects. > + > +Enabling librte_compress_mlx5 causes DPDK applications to be linked against > +libibverbs. > + > +Mellanox mlx5 pci device can be probed by number of different pci devices, > +for example net / vDPA / compress. To select the compress PMD > ``class=compress`` > +should be specified as device parameter. The compress device can be probed > and > +used with other Mellanox classes, by adding more options in the class. > +For example: ``class=net:compress`` will probe both the net PMD and the > compress > +PMD. > + > +Features > +-------- > + > +Compress mlx5 PMD has support for: > + > +Compression/Decompression algorithm: > + > +* DEFLATE. > + > +NULL algorithm for DMA operations. > + > +Huffman code type: > + > +* FIXED. > +* DYNAMIC. > + > +Window size support: > + > +1KB, 2KB, 4KB, 8KB, 16KB and 32KB. > + > +Sharable transformation. > + > +Checksum generation: > + > +* CRC32, Adler32 and combined checksum. > + > +Limitations > +----------- > + > +* Scatter-Gather, SHA and Stateful are not supported. > +* Non-compressed block is not supported in compress (supported in > decompress). > + > +Supported NICs > +-------------- > + > +* Mellanox\ |reg| BlueField 2 SmartNIC > + > +Prerequisites > +------------- > + > +- Mellanox OFED version: **5.2** > + see :doc:`../../nics/mlx5` guide for more Mellanox OFED details. > \ No newline at end of file > diff --git a/doc/guides/rel_notes/release_21_02.rst > b/doc/guides/rel_notes/release_21_02.rst > index 706cbf8..f672d7f 100644 > --- a/doc/guides/rel_notes/release_21_02.rst > +++ b/doc/guides/rel_notes/release_21_02.rst > @@ -51,6 +51,12 @@ New Features > * Other libs > * Apps, Examples, Tools (if significant) > > +* **Added mlx5 compress PMD.** > + > + Added a new compress PMD driver for Bluefield 2 adapters. > + > + See the :doc:`../compressdevs/mlx5` for more details. > + > This section is a comment. Do not overwrite or remove it. > Also, make sure to start the actual text at the margin. > ======================================================= > diff --git a/drivers/compress/mlx5/mlx5_compress.c > b/drivers/compress/mlx5/mlx5_compress.c > index d768453..7384351 100644 > --- a/drivers/compress/mlx5/mlx5_compress.c > +++ b/drivers/compress/mlx5/mlx5_compress.c > @@ -74,8 +74,28 @@ struct mlx5_compress_qp { > > int mlx5_compress_logtype; > > -const struct rte_compressdev_capabilities > mlx5_caps[RTE_COMP_ALGO_LIST_END]; > - > +static const struct rte_compressdev_capabilities mlx5_caps[] = { > + { > + .algo = RTE_COMP_ALGO_NULL, > + .comp_feature_flags = RTE_COMP_FF_ADLER32_CHECKSUM | > + RTE_COMP_FF_CRC32_CHECKSUM | > + > RTE_COMP_FF_CRC32_ADLER32_CHECKSUM | > + RTE_COMP_FF_SHAREABLE_PRIV_XFORM, > + }, > + { > + .algo = RTE_COMP_ALGO_DEFLATE, > + .comp_feature_flags = RTE_COMP_FF_ADLER32_CHECKSUM | > + RTE_COMP_FF_CRC32_CHECKSUM | > + > RTE_COMP_FF_CRC32_ADLER32_CHECKSUM | > + RTE_COMP_FF_SHAREABLE_PRIV_XFORM | > + RTE_COMP_FF_HUFFMAN_FIXED | > + RTE_COMP_FF_HUFFMAN_DYNAMIC, > + .window_size = {.min = 10, .max = 15, .increment = 1}, > + }, > + { > + .algo = RTE_COMP_ALGO_LIST_END, > + } > +}; > > static void > mlx5_compress_dev_info_get(struct rte_compressdev *dev, > -- > 1.8.3.1