1 .. SPDX-License-Identifier: BSD-3-Clause
2 Copyright(c) 2017 Intel Corporation
4 SW Turbo Poll Mode Driver
5 =========================
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.
14 SW Turbo PMD has support for the following capabilities:
16 For the encode operation:
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``
23 For the decode operation:
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``
36 * In-place operations for Turbo encode and decode are not supported
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.
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>`_.
53 After download is complete, the user needs to unpack and compile on their
54 system before building DPDK.
56 The following table maps DPDK versions with past FlexRAN SDK releases:
58 .. _table_flexran_releases:
60 .. table:: DPDK and FlexRAN SDK releases compliance
62 ===================== ============================
63 DPDK version FlexRAN SDK release
64 ===================== ============================
67 ===================== ============================
69 FlexRAN SDK Installation
70 ~~~~~~~~~~~~~~~~~~~~~~~~
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
77 The following instructions should be followed in this exact order:
79 #. Set the environment variables:
81 .. code-block:: console
83 source <path-to-icc-compiler-install-folder>/linux/bin/compilervars.sh intel64 -platform linux
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:
89 .. code-block:: console
91 cd <path-to-workspace>/FlexRAN-1.4.0/
94 #. Generate makefiles based on system configuration:
96 .. code-block:: console
98 cd <path-to-workspace>/FlexRAN-1.4.0/SDK-R1.4.0/sdk/
99 ./create-makefiles-linux.sh
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``
105 .. code-block:: console
107 add_compile_options("-fPIC")
109 #. A build folder is generated in this form ``build-<ISA>-<CC>``, enter that
112 .. code-block:: console
121 In order to enable this virtual bbdev PMD, the user must:
123 * Build the ``FLEXRAN SDK`` libraries (explained in Installation section).
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.
131 .. code-block:: console
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/
137 * Set ``CONFIG_RTE_LIBRTE_PMD_BBDEV_TURBO_SW=y`` in DPDK common configuration
138 file ``config/common_base``.
140 To use the PMD in an application, user must:
142 - Call ``rte_vdev_init("baseband_turbo_sw")`` within the application.
144 - Use ``--vdev="baseband_turbo_sw"`` in the EAL options, which will call ``rte_vdev_init()`` internally.
146 The following parameters (all optional) can be provided in the previous two calls:
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).
151 * ``max_nb_queues``: Specify the maximum number of queues in the device (default is ``RTE_MAX_LCORE``).
156 .. code-block:: console
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