xref: /dpdk/doc/guides/compressdevs/mlx5.rst (revision daa02b5cddbb8e11b31d41e2bf7bb1ae64dcae2f)
1.. SPDX-License-Identifier: BSD-3-Clause
2   Copyright 2021 Mellanox Technologies, Ltd
3
4.. include:: <isonum.txt>
5
6MLX5 compress driver
7====================
8
9The MLX5 compress driver library
10(**librte_compress_mlx5**) provides support for **Mellanox BlueField 2**
11families of 25/50/100/200 Gb/s adapters.
12
13Design
14------
15
16This PMD is configuring the compress, decompress amd DMA engines.
17
18GGAs (Generic Global Accelerators) are offload engines that can be used
19to do memory to memory tasks on data.
20These engines are part of the ARM complex of the BlueField chip, and as
21such they do not use NIC related resources (e.g. RX/TX bandwidth).
22They do share the same PCI and memory bandwidth.
23
24So, using the BlueField device (starting from BlueField 2), the compress
25class operations can be supported in parallel to the net, vDPA and
26RegEx class operations.
27
28For security reasons and robustness, this driver only deals with virtual
29memory addresses. The way resources allocations are handled by the kernel,
30combined with hardware specifications that allow to handle virtual memory
31addresses directly, ensure that DPDK applications cannot access random
32physical memory (or memory that does not belong to the current process).
33
34The PMD uses libibverbs and libmlx5 to access the device firmware
35or directly the hardware components.
36There are different levels of objects and bypassing abilities
37to get the best performances:
38
39- Verbs is a complete high-level generic API.
40- Direct Verbs is a device-specific API.
41- DevX allows to access firmware objects.
42
43Enabling librte_compress_mlx5 causes DPDK applications to be linked against
44libibverbs.
45
46Mellanox mlx5 PCI device can be probed by number of different PCI devices,
47for example net / vDPA / RegEx. To select the compress PMD ``class=compress``
48should be specified as device parameter. The compress device can be probed and
49used with other Mellanox classes, by adding more options in the class.
50For example: ``class=net:compress`` will probe both the net PMD and the compress
51PMD.
52
53Features
54--------
55
56Compress mlx5 PMD has support for:
57
58Compression/Decompression algorithm:
59
60* DEFLATE.
61
62NULL algorithm for DMA operations.
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
79Limitations
80-----------
81
82* Scatter-Gather, SHA and Stateful are not supported.
83* Non-compressed block is not supported in compress (supported in decompress).
84
85Supported NICs
86--------------
87
88* Mellanox\ |reg| BlueField 2 SmartNIC
89
90Prerequisites
91-------------
92
93- Mellanox OFED version: **5.2**
94  see :doc:`../../nics/mlx5` guide for more Mellanox OFED details.
95