xref: /dpdk/doc/guides/compressdevs/uadk.rst (revision dbfe80274aabd3751ee646b7922b84a3801db3a3)
1.. SPDX-License-Identifier: BSD-3-Clause
2   Copyright 2024-2025 Huawei Technologies Co.,Ltd. All rights reserved.
3   Copyright 2024-2025 Linaro ltd.
4
5UADK Compression Poll Mode Driver
6=================================
7
8UADK compression PMD provides poll mode compression & decompression driver.
9All compression operations are using UADK library compression API,
10which is algorithm-level API, abstracting accelerators' low-level implementations.
11
12UADK compression PMD relies on `UADK library <https://github.com/Linaro/uadk>`_.
13
14UADK is a framework for user applications to access hardware accelerators.
15UADK relies on IOMMU SVA (Shared Virtual Address) feature,
16which shares the same page table between IOMMU and MMU.
17As a result, the user application can directly use the virtual address for device DMA,
18which enhances performance as well as easy usability.
19
20
21Features
22--------
23
24UADK compression PMD has support for:
25
26Compression/Decompression algorithm:
27
28    * DEFLATE - using Fixed and Dynamic Huffman encoding
29
30Window size support:
31
32    * 32K
33
34
35Test steps
36----------
37
38#. Build UADK
39
40   .. code-block:: console
41
42      git clone https://github.com/Linaro/uadk.git
43      cd uadk
44      mkdir build
45      ./autogen.sh
46      ./configure --prefix=$PWD/build
47      make
48      make install
49
50   .. note::
51
52      Without ``--prefix``, UADK will be installed to ``/usr/local/lib`` by default.
53
54   .. note::
55
56      If get error: "cannot find -lnuma", please install the libnuma-dev.
57
58#. Run pkg-config libwd to ensure env is setup correctly
59
60   .. code-block:: console
61
62      export PKG_CONFIG_PATH=$PWD/build/lib/pkgconfig
63      pkg-config libwd --cflags --libs -I/usr/local/include -L/usr/local/lib -lwd
64
65   .. note::
66
67      export ``PKG_CONFIG_PATH`` is required on demand,
68      not needed if UADK is installed to ``/usr/local/lib``.
69
70#. Build DPDK
71
72   .. code-block:: console
73
74      cd dpdk
75      mkdir build
76      meson setup build (--reconfigure)
77      cd build
78      ninja
79      sudo ninja install
80
81#. Prepare hugepages for DPDK (see also :doc:`../tools/hugepages`)
82
83   .. code-block:: console
84
85      echo 1024 > /sys/devices/system/node/node0/hugepages/hugepages-2048kB/nr_hugepages
86      echo 1024 > /sys/devices/system/node/node1/hugepages/hugepages-2048kB/nr_hugepages
87      echo 1024 > /sys/devices/system/node/node2/hugepages/hugepages-2048kB/nr_hugepages
88      echo 1024 > /sys/devices/system/node/node3/hugepages/hugepages-2048kB/nr_hugepages
89      mkdir -p /mnt/huge_2mb
90      mount -t hugetlbfs none /mnt/huge_2mb -o pagesize=2MB
91
92#. Run test app
93
94   .. code-block:: console
95
96	sudo dpdk-test --vdev=compress_uadk
97	RTE>>compressdev_autotest
98	RTE>>quit
99