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 (**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``
34 * In-place operations for Turbo encode and decode are not supported
42 To build DPDK with the *turbo_sw* PMD the user is required to download
43 the export controlled ``FlexRAN SDK`` Libraries. An account at `Intel Resource
44 Design Center <https://www.intel.com/content/www/us/en/design/resource-design-center.html>`_
45 needs to be registered.
47 Once registered, the user needs to log in, and look for
48 *Intel FlexRAN Software Release Package 1_4_0* to download or directly through
49 this `link <https://cdrdv2.intel.com/v1/dl/getContent/576288>`_.
51 After download is complete, the user needs to unpack and compile on their
52 system before building DPDK.
54 The following table maps DPDK versions with past FlexRAN SDK releases:
56 .. _table_flexran_releases:
58 .. table:: DPDK and FlexRAN SDK releases compliance
60 ===================== ============================
61 DPDK version FlexRAN SDK release
62 ===================== ============================
65 ===================== ============================
67 FlexRAN SDK Installation
68 ~~~~~~~~~~~~~~~~~~~~~~~~
70 The following are pre-requisites for building FlexRAN SDK Libraries:
71 (a) An AVX2 supporting machine
72 (b) Windriver TS 2 or CentOS 7 operating systems
73 (c) Intel ICC 17.0.3 compiler installed
75 The following instructions should be followed in this exact order:
77 #. Set the environment variables:
79 .. code-block:: console
81 source <path-to-icc-compiler-install-folder>/linux/bin/compilervars.sh intel64 -platform linux
84 #. Extract the ``576288-576288-intel-swa-sw-flexran-release-package-r1-4-0.zip``
85 package, then run the SDK extractor script and accept the license:
87 .. code-block:: console
89 cd <path-to-workspace>/FlexRAN-1.4.0/
92 #. Generate makefiles based on system configuration:
94 .. code-block:: console
96 cd <path-to-workspace>/FlexRAN-1.4.0/SDK-R1.4.0/sdk/
97 ./create-makefiles-linux.sh
99 #. A build folder is generated in this form ``build-<ISA>-<CC>``, enter that
102 .. code-block:: console
111 In order to enable this virtual bbdev PMD, the user must:
113 * Build the ``FLEXRAN SDK`` libraries (explained in Installation section).
115 * Export the environmental variables ``FLEXRAN_SDK`` to the path where the
116 FlexRAN SDK libraries were installed. And ``DIR_WIRELESS_SDK`` to the path
117 where the libraries were extracted.
121 .. code-block:: console
123 export FLEXRAN_SDK=<path-to-workspace>/FlexRAN-1.4.0/SDK-R1.4.0/sdk/build-avx2-icc/install
124 export DIR_WIRELESS_SDK=<path-to-workspace>/FlexRAN-1.4.0/SDK-R1.4.0/sdk/
127 * Set ``CONFIG_RTE_LIBRTE_PMD_BBDEV_TURBO_SW=y`` in DPDK common configuration
128 file ``config/common_base``.
130 To use the PMD in an application, user must:
132 - Call ``rte_vdev_init("turbo_sw")`` within the application.
134 - Use ``--vdev="turbo_sw"`` in the EAL options, which will call ``rte_vdev_init()`` internally.
136 The following parameters (all optional) can be provided in the previous two calls:
138 * ``socket_id``: Specify the socket where the memory for the device is going to be allocated
139 (by default, *socket_id* will be the socket where the core that is creating the PMD is running on).
141 * ``max_nb_queues``: Specify the maximum number of queues in the device (default is ``RTE_MAX_LCORE``).
146 .. code-block:: console
148 ./test-bbdev.py -e="--vdev=turbo_sw,socket_id=0,max_nb_queues=8" \
149 -c validation -v ./test_vectors/bbdev_vector_t?_default.data