xref: /dpdk/doc/guides/compressdevs/mlx5.rst (revision d3845f4933076bf7a4e33b30c88718c8a9c3be63)
1.. SPDX-License-Identifier: BSD-3-Clause
2   Copyright 2021 Mellanox Technologies, Ltd
3
4.. include:: <isonum.txt>
5
6NVIDIA MLX5 Compress Driver
7===========================
8
9.. note::
10
11   NVIDIA acquired Mellanox Technologies in 2020.
12   The DPDK documentation and code might still include instances
13   of or references to Mellanox trademarks (like BlueField and ConnectX)
14   that are now NVIDIA trademarks.
15
16The mlx5 compress driver library
17(**librte_compress_mlx5**) provides support for **NVIDIA BlueField-2**,
18and **NVIDIA BlueField-3** families of 25/50/100/200/400 Gb/s adapters.
19
20Design
21------
22
23This PMD is configuring the compress, decompress amd DMA engines.
24
25GGAs (Generic Global Accelerators) are offload engines that can be used
26to do memory to memory tasks on data.
27These engines are part of the ARM complex of the BlueField chip, and as
28such they do not use NIC related resources (e.g. RX/TX bandwidth).
29They do share the same PCI and memory bandwidth.
30
31So, using the BlueField device (starting from BlueField-2), the compress
32class operations can be supported in parallel to the net, vDPA and
33RegEx class operations.
34
35See :doc:`../../platform/mlx5` guide for more design details.
36
37Features
38--------
39
40Compress mlx5 PMD has support for:
41
42- Compression
43- Decompression
44- DMA
45
46Algorithms
47----------
48
49NULL algorithm
50~~~~~~~~~~~~~~
51
52NULL algorithm is the way to perform DMA operations.
53It works through either compress or decompress operation.
54
55Shareable transformation.
56
57Checksum generation:
58
59* CRC32, Adler32 and combined checksum.
60
61DEFLATE algorithm
62~~~~~~~~~~~~~~~~~
63
64Huffman code type:
65
66* FIXED.
67* DYNAMIC.
68
69Window size support:
70
711KB, 2KB, 4KB, 8KB, 16KB and 32KB.
72
73Shareable transformation.
74
75Checksum generation:
76
77* CRC32, Adler32 and combined checksum.
78
79LZ4 algorithm
80~~~~~~~~~~~~~
81
82Support for flags:
83
84* ``RTE_COMP_LZ4_FLAG_BLOCK_CHECKSUM``
85* ``RTE_COMP_LZ4_FLAG_BLOCK_INDEPENDENCE``
86
87Window size support:
88
891KB, 2KB, 4KB, 8KB, 16KB and 32KB.
90
91Shareable transformation.
92
93Checksum generation:
94
95* xxHash-32 checksum.
96
97Limitations
98-----------
99
100* Scatter-Gather, SHA and Stateful are not supported.
101* Non-compressed block is not supported in compress (supported in decompress).
102* Compress operation is not supported by BlueField-3.
103* LZ4 algorithm is not supported by BlueField-2.
104
105Driver options
106--------------
107
108Please refer to :ref:`mlx5 common options <mlx5_common_driver_options>`
109for an additional list of options shared with other mlx5 drivers.
110
111- ``log-block-size`` parameter [int]
112
113  Log of the Huffman block size in the Deflate algorithm.
114  Values from [4-15]; value x means block size is 2\ :sup:`x`.
115  The default value is 15.
116
117
118Supported NICs
119--------------
120
121* NVIDIA\ |reg| BlueField-2 SmartNIC
122* NVIDIA\ |reg| BlueField-3 SmartNIC
123
124Prerequisites
125-------------
126
127- NVIDIA MLNX_OFED version: **5.2**
128  See :ref:`mlx5 common prerequisites <mlx5_linux_prerequisites>` for more details.
129