bbdev: change names of baseband devices
[dpdk.git] / doc / guides / bbdevs / turbo_sw.rst
1 ..  SPDX-License-Identifier: BSD-3-Clause
2     Copyright(c) 2017 Intel Corporation
3
4 SW Turbo Poll Mode Driver
5 =========================
6
7 The SW Turbo PMD (**baseband_turbo_sw**) provides a poll mode bbdev driver that utilizes
8 Intel optimized libraries for LTE Layer 1 workloads acceleration. This PMD
9 supports the functions: Turbo FEC, Rate Matching and CRC functions.
10
11 Features
12 --------
13
14 SW Turbo PMD has support for the following capabilities:
15
16 For the encode operation:
17
18 * ``RTE_BBDEV_TURBO_CRC_24A_ATTACH``
19 * ``RTE_BBDEV_TURBO_CRC_24B_ATTACH``
20 * ``RTE_BBDEV_TURBO_RATE_MATCH``
21 * ``RTE_BBDEV_TURBO_RV_INDEX_BYPASS``
22
23 For the decode operation:
24
25 * ``RTE_BBDEV_TURBO_SUBBLOCK_DEINTERLEAVE``
26 * ``RTE_BBDEV_TURBO_CRC_TYPE_24B``
27 * ``RTE_BBDEV_TURBO_POS_LLR_1_BIT_IN``
28 * ``RTE_BBDEV_TURBO_NEG_LLR_1_BIT_IN``
29 * ``RTE_BBDEV_TURBO_DEC_TB_CRC_24B_KEEP``
30 * ``RTE_BBDEV_TURBO_EARLY_TERMINATION``
31
32
33 Limitations
34 -----------
35
36 * In-place operations for Turbo encode and decode are not supported
37
38 Installation
39 ------------
40
41 FlexRAN SDK Download
42 ~~~~~~~~~~~~~~~~~~~~
43
44 To build DPDK with the *baseband_turbo_sw* PMD the user is required to download
45 the export controlled ``FlexRAN SDK`` Libraries. An account at `Intel Resource
46 Design Center <https://www.intel.com/content/www/us/en/design/resource-design-center.html>`_
47 needs to be registered.
48
49 Once registered, the user needs to log in, and look for
50 *Intel FlexRAN Software Release Package 1_4_0* to download or directly through
51 this `link <https://cdrdv2.intel.com/v1/dl/getContent/576288>`_.
52
53 After download is complete, the user needs to unpack and compile on their
54 system before building DPDK.
55
56 The following table maps DPDK versions with past FlexRAN SDK releases:
57
58 .. _table_flexran_releases:
59
60 .. table:: DPDK and FlexRAN SDK releases compliance
61
62    =====================  ============================
63    DPDK version           FlexRAN SDK release
64    =====================  ============================
65    18.02                  1.3.0
66    18.05                  1.4.0
67    =====================  ============================
68
69 FlexRAN SDK Installation
70 ~~~~~~~~~~~~~~~~~~~~~~~~
71
72 The following are pre-requisites for building FlexRAN SDK Libraries:
73  (a) An AVX2 supporting machine
74  (b) Windriver TS 2 or CentOS 7 operating systems
75  (c) Intel ICC 17.0.3 compiler installed
76
77 The following instructions should be followed in this exact order:
78
79 #. Set the environment variables:
80
81     .. code-block:: console
82
83         source <path-to-icc-compiler-install-folder>/linux/bin/compilervars.sh intel64 -platform linux
84
85
86 #. Extract the ``576288-576288-intel-swa-sw-flexran-release-package-r1-4-0.zip``
87    package, then run the SDK extractor script and accept the license:
88
89     .. code-block:: console
90
91         cd <path-to-workspace>/FlexRAN-1.4.0/
92         ./SDK-R1.4.0.sh
93
94 #. Generate makefiles based on system configuration:
95
96     .. code-block:: console
97
98         cd <path-to-workspace>/FlexRAN-1.4.0/SDK-R1.4.0/sdk/
99         ./create-makefiles-linux.sh
100
101 #. If build as a shared library is required, then add ``"-fPIC"`` option to file
102    ``<path-to-workspace>/FlexRAN-1.4.0/SDK-R1.4.0/sdk/cmake/intel-compile-options.cmake``
103    as follows:
104
105     .. code-block:: console
106
107         add_compile_options("-fPIC")
108
109 #. A build folder is generated in this form ``build-<ISA>-<CC>``, enter that
110    folder and install:
111
112     .. code-block:: console
113
114         cd build-avx2-icc/
115         make install
116
117
118 Initialization
119 --------------
120
121 In order to enable this virtual bbdev PMD, the user must:
122
123 * Build the ``FLEXRAN SDK`` libraries (explained in Installation section).
124
125 * Export the environmental variables ``FLEXRAN_SDK`` to the path where the
126   FlexRAN SDK libraries were installed. And ``DIR_WIRELESS_SDK`` to the path
127   where the libraries were extracted.
128
129 Example:
130
131 .. code-block:: console
132
133     export FLEXRAN_SDK=<path-to-workspace>/FlexRAN-1.4.0/SDK-R1.4.0/sdk/build-avx2-icc/install
134     export DIR_WIRELESS_SDK=<path-to-workspace>/FlexRAN-1.4.0/SDK-R1.4.0/sdk/
135
136
137 * Set ``CONFIG_RTE_LIBRTE_PMD_BBDEV_TURBO_SW=y`` in DPDK common configuration
138   file ``config/common_base``.
139
140 To use the PMD in an application, user must:
141
142 - Call ``rte_vdev_init("baseband_turbo_sw")`` within the application.
143
144 - Use ``--vdev="baseband_turbo_sw"`` in the EAL options, which will call ``rte_vdev_init()`` internally.
145
146 The following parameters (all optional) can be provided in the previous two calls:
147
148 * ``socket_id``: Specify the socket where the memory for the device is going to be allocated
149   (by default, *socket_id* will be the socket where the core that is creating the PMD is running on).
150
151 * ``max_nb_queues``: Specify the maximum number of queues in the device (default is ``RTE_MAX_LCORE``).
152
153 Example:
154 ~~~~~~~~
155
156 .. code-block:: console
157
158     ./test-bbdev.py -e="--vdev=baseband_turbo_sw,socket_id=0,max_nb_queues=8" \
159     -c validation -v ./test_vectors/bbdev_vector_t?_default.data