2. SW Turbo Poll Mode Driver
The SW Turbo PMD (turbo_sw) provides a poll mode bbdev driver that utilizes Intel optimized libraries for LTE Layer 1 workloads acceleration. This PMD supports the functions: Turbo FEC, Rate Matching and CRC functions.
SW Turbo PMD has support for the following capabilities:
For the encode operation:
For the decode operation:
- In-place operations for Turbo encode and decode are not supported
2.3.1. FlexRAN SDK Download
To build DPDK with the turbo_sw PMD the user is required to download
the export controlled
FlexRAN SDK Libraries. An account at Intel Resource
Design Center needs to be registered from
Once registered, the user needs to log in, and look for Intel SWA_SW_FlexRAN_Release_Package R1_3_0 and click for download. Or use this direct download link https://cdrd.intel.com/v1/dl/getContent/575367.
After download is complete, the user needs to unpack and compile on their system before building DPDK.
2.3.2. FlexRAN SDK Installation
- The following are pre-requisites for building FlexRAN SDK Libraries:
- An AVX2 supporting machine
- Windriver TS 2 or CentOS 7 operating systems
- Intel ICC compiler installed
The following instructions should be followed in this exact order:
Set the environment variables:
source <path-to-icc-compiler-install-folder>/linux/bin/compilervars.sh intel64 -platform linux
FlexRAN-1.3.0.tar.gz.zippackage, then run the SDK extractor script and accept the license:
cd <path-to-workspace>/FlexRAN-1.3.0/ ./SDK-R1.3.0.sh
FlexRAN SDK R1.3.0to work with bbdev properly, the following hotfix is required. Change the return of function
rate_matching_turbo_lte_avx2()located in file
<path-to-workspace>/FlexRAN-1.3.0/SDK-R1.3.0/sdk/source/phy/lib_rate_matching/phy_rate_match_avx2.cppto return 0 instead of 1.
- return 1; + return 0;
Generate makefiles based on system configuration:
cd <path-to-workspace>/FlexRAN-1.3.0/SDK-R1.3.0/sdk/ ./create-makefiles-linux.sh
A build folder is generated in this form
build-<ISA>-<CC>, enter that folder and install:
cd build-avx2-icc/ make install
In order to enable this virtual bbdev PMD, the user must:
- Build the
FLEXRAN SDKlibraries (explained in Installation section).
- Export the environmental variables
FLEXRAN_SDKto the path where the FlexRAN SDK libraries were installed. And
DIR_WIRELESS_SDKto the path where the libraries were extracted.
export FLEXRAN_SDK=<path-to-workspace>/FlexRAN-1.3.0/SDK-R1.3.0/sdk/build-avx2-icc/install export DIR_WIRELESS_SDK=<path-to-workspace>/FlexRAN-1.3.0/SDK-R1.3.0/sdk/
CONFIG_RTE_LIBRTE_PMD_BBDEV_TURBO_SW=yin DPDK common configuration file
To use the PMD in an application, user must:
rte_vdev_init("turbo_sw")within the application.
--vdev="turbo_sw"in the EAL options, which will call
The following parameters (all optional) can be provided in the previous two calls:
socket_id: Specify the socket where the memory for the device is going to be allocated (by default, socket_id will be the socket where the core that is creating the PMD is running on).
max_nb_queues: Specify the maximum number of queues in the device (default is
./test-bbdev.py -e="--vdev=turbo_sw,socket_id=0,max_nb_queues=8" \ -c validation -v ./test_vectors/bbdev_vector_t?_default.data