compress/mlx5: add supported capabilities
Add all the capabilities supported by the device. Add the driver documentations. Signed-off-by: Matan Azrad <matan@nvidia.com> Acked-by: Viacheslav Ovsiienko <viacheslavo@nvidia.com>
This commit is contained in:
parent
37862dafcb
commit
384bac8d65
13
doc/guides/compressdevs/features/mlx5.ini
Normal file
13
doc/guides/compressdevs/features/mlx5.ini
Normal file
@ -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
|
@ -11,6 +11,7 @@ Compression Device Drivers
|
||||
|
||||
overview
|
||||
isal
|
||||
mlx5
|
||||
octeontx
|
||||
qat_comp
|
||||
zlib
|
||||
|
94
doc/guides/compressdevs/mlx5.rst
Normal file
94
doc/guides/compressdevs/mlx5.rst
Normal file
@ -0,0 +1,94 @@
|
||||
.. 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.
|
||||
|
||||
GGAs (Generic Global Accelerators) are offload engines that can be used
|
||||
to do memory to memory tasks on data.
|
||||
These engines are part of the ARM complex of the BlueField chip, and as
|
||||
such they do not use NIC related resources (e.g. RX/TX bandwidth).
|
||||
They do share the same PCI and memory bandwidth.
|
||||
|
||||
So, using the BlueField device (starting from BlueField 2), the compress
|
||||
class operations can be supported in parallel to the net, vDPA and
|
||||
RegEx class operations.
|
||||
|
||||
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 / RegEx. 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.
|
||||
|
||||
Shareable 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.
|
@ -132,6 +132,12 @@ New Features
|
||||
* Added support for aes-cbc sha256-128-hmac cipher combination in OCTEON TX2
|
||||
crypto PMD lookaside protocol offload for IPsec.
|
||||
|
||||
* **Added mlx5 compress PMD.**
|
||||
|
||||
Added a new compress PMD driver for Bluefield 2 adapters.
|
||||
|
||||
See the :doc:`../compressdevs/mlx5` for more details.
|
||||
|
||||
|
||||
Removed Items
|
||||
-------------
|
||||
|
@ -76,8 +76,28 @@ static pthread_mutex_t priv_list_lock = PTHREAD_MUTEX_INITIALIZER;
|
||||
|
||||
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,
|
||||
|
Loading…
Reference in New Issue
Block a user