Message ID | 1610554690-411627-11-git-send-email-matan@nvidia.com (mailing list archive) |
---|---|
State | Superseded, archived |
Delegated to: | akhil goyal |
Headers | show |
Series | add mlx5 compress PMD | expand |
Context | Check | Description |
---|---|---|
ci/intel-Testing | success | Testing PASS |
ci/Intel-compilation | success | Compilation OK |
ci/checkpatch | warning | coding style issues |
> 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 <matan@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
Hi Akhil Thanks for the review. PSB From: Akhil Goyal > > Add all the capabilities supported by the device. > > > > Add the driver documentations. > > > > Signed-off-by: Matan Azrad <matan@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. > sure > Also fix compilation issues reported by CI > https://nam11.safelinks.protection.outlook.com/?url=http%3A%2F%2Fmails.dpd > k.org%2Farchives%2Ftest-report%2F2021- > January%2F173975.html&data=04%7C01%7Cmatan%40nvidia.com%7C58e > 8dd9d0a724957b66808d8bca33bd5%7C43083d15727340c1b7db39efd9ccc17a% > 7C0%7C0%7C637466756562484499%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiM > C4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C1000& > amp;sdata=npYG53ohqpHZMpRTZX5VFzzeF3sf082HKh3JgS9Zd2k%3D&rese > rved=0 No real issue - it is just sent when the dependency series hadn't been integrated. > There is no information about the installation and how to test this PMD in the > documentation. You can see below that I added a reference to the installation guide in net/mlx5 rst - it is the same. > > 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
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 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,
Add all the capabilities supported by the device. Add the driver documentations. Signed-off-by: Matan Azrad <matan@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