xref: /dpdk/doc/guides/bbdevs/vrb1.rst (revision afa685dffeaf0e2cb96dff51963b5af415a6902e)
15f156561SNicolas Chautru..  SPDX-License-Identifier: BSD-3-Clause
25f156561SNicolas Chautru    Copyright(c) 2022 Intel Corporation
35f156561SNicolas Chautru
45f156561SNicolas Chautru.. include:: <isonum.txt>
55f156561SNicolas Chautru
65f156561SNicolas ChautruIntel\ |reg| vRAN Boost Poll Mode Driver (PMD)
75f156561SNicolas Chautru==============================================
85f156561SNicolas Chautru
95f156561SNicolas ChautruThe Intel\ |reg| vRAN Boost integrated accelerator enables
105f156561SNicolas Chautrucost-effective 4G and 5G next-generation virtualized Radio Access Network (vRAN)
115f156561SNicolas Chautrusolutions.
125f156561SNicolas ChautruThe Intel vRAN Boost v1.0 (VRB1 in the code) is specifically integrated on the
135f156561SNicolas Chautru4th Gen Intel\ |reg| Xeon\ |reg| Scalable processor with Intel\ |reg| vRAN Boost,
145f156561SNicolas Chautrualso known as Sapphire Rapids Edge Enhanced (SPR-EE).
155f156561SNicolas Chautru
165f156561SNicolas ChautruFeatures
175f156561SNicolas Chautru--------
185f156561SNicolas Chautru
195f156561SNicolas ChautruIntel vRAN Boost v1.0 includes a 5G Low Density Parity Check (LDPC) encoder/decoder,
205f156561SNicolas Chautrurate match/dematch, Hybrid Automatic Repeat Request (HARQ) with access to DDR
215f156561SNicolas Chautrumemory for buffer management, a 4G Turbo encoder/decoder,
225f156561SNicolas Chautrua Fast Fourier Transform (FFT) block providing DFT/iDFT processing offload
235f156561SNicolas Chautrufor the 5G Sounding Reference Signal (SRS), a Queue Manager (QMGR),
245f156561SNicolas Chautruand a DMA subsystem.
255f156561SNicolas ChautruThere is no dedicated on-card memory for HARQ, the coherent memory on the CPU side is being used.
265f156561SNicolas Chautru
275f156561SNicolas ChautruThese hardware blocks provide the following features exposed by the PMD:
285f156561SNicolas Chautru
295f156561SNicolas Chautru- LDPC Encode in the Downlink (5GNR)
305f156561SNicolas Chautru- LDPC Decode in the Uplink (5GNR)
315f156561SNicolas Chautru- Turbo Encode in the Downlink (4G)
325f156561SNicolas Chautru- Turbo Decode in the Uplink (4G)
335f156561SNicolas Chautru- FFT processing
345f156561SNicolas Chautru- Single Root I/O Virtualization (SR-IOV) with 16 Virtual Functions (VFs) per Physical Function (PF)
355f156561SNicolas Chautru- Maximum of 256 queues per VF
365f156561SNicolas Chautru
375f156561SNicolas ChautruThe Intel vRAN Boost v1.0 PMD supports the following bbdev capabilities:
385f156561SNicolas Chautru
395f156561SNicolas Chautru* For the LDPC encode operation:
405f156561SNicolas Chautru   - ``RTE_BBDEV_LDPC_CRC_24B_ATTACH``: set to attach CRC24B to CB(s).
415f156561SNicolas Chautru   - ``RTE_BBDEV_LDPC_RATE_MATCH``: if set then do not do Rate Match bypass.
425f156561SNicolas Chautru   - ``RTE_BBDEV_LDPC_INTERLEAVER_BYPASS``: if set then bypass interleaver.
435f156561SNicolas Chautru
445f156561SNicolas Chautru* For the LDPC decode operation:
455f156561SNicolas Chautru   - ``RTE_BBDEV_LDPC_CRC_TYPE_24B_CHECK``: check CRC24B from CB(s).
465f156561SNicolas Chautru   - ``RTE_BBDEV_LDPC_CRC_TYPE_24B_DROP``: drops CRC24B bits appended while decoding.
475f156561SNicolas Chautru   - ``RTE_BBDEV_LDPC_CRC_TYPE_24A_CHECK``: check CRC24A from CB(s).
485f156561SNicolas Chautru   - ``RTE_BBDEV_LDPC_CRC_TYPE_16_CHECK``: check CRC16 from CB(s).
495f156561SNicolas Chautru   - ``RTE_BBDEV_LDPC_HQ_COMBINE_IN_ENABLE``: provides an input for HARQ combining.
505f156561SNicolas Chautru   - ``RTE_BBDEV_LDPC_HQ_COMBINE_OUT_ENABLE``: provides an input for HARQ combining.
515f156561SNicolas Chautru   - ``RTE_BBDEV_LDPC_ITERATION_STOP_ENABLE``: disable early termination.
525f156561SNicolas Chautru   - ``RTE_BBDEV_LDPC_DEC_SCATTER_GATHER``: supports scatter-gather for input/output data.
535f156561SNicolas Chautru   - ``RTE_BBDEV_LDPC_HARQ_6BIT_COMPRESSION``: supports compression of the HARQ input/output.
545f156561SNicolas Chautru   - ``RTE_BBDEV_LDPC_LLR_COMPRESSION``: supports LLR input compression.
555f156561SNicolas Chautru
565f156561SNicolas Chautru* For the turbo encode operation:
575f156561SNicolas Chautru   - ``RTE_BBDEV_TURBO_CRC_24B_ATTACH``: set to attach CRC24B to CB(s).
585f156561SNicolas Chautru   - ``RTE_BBDEV_TURBO_RATE_MATCH``: if set then do not do Rate Match bypass.
595f156561SNicolas Chautru   - ``RTE_BBDEV_TURBO_RV_INDEX_BYPASS``: set to bypass RV index.
605f156561SNicolas Chautru   - ``RTE_BBDEV_TURBO_ENC_SCATTER_GATHER``: supports scatter-gather for input/output data.
615f156561SNicolas Chautru
625f156561SNicolas Chautru* For the turbo decode operation:
635f156561SNicolas Chautru   - ``RTE_BBDEV_TURBO_CRC_TYPE_24B``: check CRC24B from CB(s).
645f156561SNicolas Chautru   - ``RTE_BBDEV_TURBO_SUBBLOCK_DEINTERLEAVE``: perform subblock de-interleave.
655f156561SNicolas Chautru   - ``RTE_BBDEV_TURBO_NEG_LLR_1_BIT_IN``: set if negative LLR input is supported.
665f156561SNicolas Chautru   - ``RTE_BBDEV_TURBO_DEC_TB_CRC_24B_KEEP``: keep CRC24B bits appended while decoding.
675f156561SNicolas Chautru   - ``RTE_BBDEV_TURBO_DEC_CRC_24B_DROP``: option to drop the code block CRC after decoding.
685f156561SNicolas Chautru   - ``RTE_BBDEV_TURBO_EARLY_TERMINATION``: set early termination feature.
695f156561SNicolas Chautru   - ``RTE_BBDEV_TURBO_DEC_SCATTER_GATHER``: supports scatter-gather for input/output data.
705f156561SNicolas Chautru   - ``RTE_BBDEV_TURBO_HALF_ITERATION_EVEN``: set half iteration granularity.
715f156561SNicolas Chautru   - ``RTE_BBDEV_TURBO_CONTINUE_CRC_MATCH``: set to run an extra odd iteration after CRC match.
725f156561SNicolas Chautru   - ``RTE_BBDEV_TURBO_MAP_DEC``: supports flexible parallel MAP engine decoding.
735f156561SNicolas Chautru
745f156561SNicolas Chautru* For the FFT operation:
755f156561SNicolas Chautru   - ``RTE_BBDEV_FFT_WINDOWING``: flexible windowing capability.
765f156561SNicolas Chautru   - ``RTE_BBDEV_FFT_CS_ADJUSTMENT``: flexible adjustment of Cyclic Shift time offset.
775f156561SNicolas Chautru   - ``RTE_BBDEV_FFT_DFT_BYPASS``: set for bypass the DFT and get directly into iDFT input.
785f156561SNicolas Chautru   - ``RTE_BBDEV_FFT_IDFT_BYPASS``: set for bypass the IDFT and get directly the DFT output.
795f156561SNicolas Chautru   - ``RTE_BBDEV_FFT_WINDOWING_BYPASS``: set for bypass time domain windowing.
805f156561SNicolas Chautru
815f156561SNicolas Chautru
825f156561SNicolas ChautruInstallation
835f156561SNicolas Chautru------------
845f156561SNicolas Chautru
855f156561SNicolas ChautruSection 3 of the DPDK manual provides instructions on installing and compiling DPDK.
865f156561SNicolas Chautru
875f156561SNicolas ChautruDPDK requires hugepages to be configured as detailed in section 2 of the DPDK manual.
885f156561SNicolas ChautruThe bbdev test application has been tested with a configuration 40 x 1GB hugepages.
895f156561SNicolas ChautruThe hugepage configuration of a server may be examined using:
905f156561SNicolas Chautru
915f156561SNicolas Chautru.. code-block:: console
925f156561SNicolas Chautru
935f156561SNicolas Chautru   grep Huge* /proc/meminfo
945f156561SNicolas Chautru
955f156561SNicolas Chautru
965f156561SNicolas ChautruInitialization
975f156561SNicolas Chautru--------------
985f156561SNicolas Chautru
995f156561SNicolas ChautruWhen the device first powers up, its PCI Physical Functions (PF)
1002d4983b6SNicolas Chautrucan be listed through these commands for Intel vRAN Boost v1:
1015f156561SNicolas Chautru
1025f156561SNicolas Chautru.. code-block:: console
1035f156561SNicolas Chautru
1045f156561SNicolas Chautru   sudo lspci -vd8086:57c0
1055f156561SNicolas Chautru
1065f156561SNicolas ChautruThe physical and virtual functions are compatible with Linux UIO drivers:
107*33f32941SDavid Marchand``vfio_pci`` and ``igb_uio``.
1085f156561SNicolas ChautruHowever, in order to work the 5G/4G FEC device first needs to be bound
1095f156561SNicolas Chautruto one of these Linux drivers through DPDK.
1105f156561SNicolas Chautru
111*33f32941SDavid MarchandFor more details on how to bind the PF device and create VF devices, see
112*33f32941SDavid Marchand:ref:`linux_gsg_binding_kernel`.
1135f156561SNicolas Chautru
1145f156561SNicolas Chautru
1155f156561SNicolas ChautruConfigure the VFs through PF
1165f156561SNicolas Chautru~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1175f156561SNicolas Chautru
1185f156561SNicolas ChautruThe PCI virtual functions must be configured before working or getting assigned
1195f156561SNicolas Chautruto VMs/Containers.
1205f156561SNicolas ChautruThe configuration involves allocating the number of hardware queues, priorities,
1215f156561SNicolas Chautruload balance, bandwidth and other settings necessary for the device
1225f156561SNicolas Chautruto perform FEC functions.
1235f156561SNicolas Chautru
1245f156561SNicolas ChautruThis configuration needs to be executed at least once after reboot or PCI FLR
1255f156561SNicolas Chautruand can be achieved by using the functions ``rte_acc200_configure()``,
1265f156561SNicolas Chautruwhich sets up the parameters defined in the compatible ``acc200_conf`` structure.
1275f156561SNicolas Chautru
1285f156561SNicolas Chautru
1295f156561SNicolas ChautruTest Application
1305f156561SNicolas Chautru----------------
1315f156561SNicolas Chautru
13222900d7fSNicolas ChautruBBDEV provides a test application, ``test-bbdev.py`` and range of test data for testing
13322900d7fSNicolas Chautruthe functionality of the device, depending on the device's capabilities.
1345f156561SNicolas Chautru
13522900d7fSNicolas ChautruFor more details on how to use the test application,
13622900d7fSNicolas Chautrusee :ref:`test_bbdev_application`.
1375f156561SNicolas Chautru
1385f156561SNicolas Chautru
1395f156561SNicolas ChautruTest Vectors
1405f156561SNicolas Chautru~~~~~~~~~~~~
1415f156561SNicolas Chautru
1425f156561SNicolas ChautruIn addition to the simple LDPC decoder and LDPC encoder tests,
1435f156561SNicolas Chautrubbdev also provides a range of additional tests under the test_vectors folder,
1445f156561SNicolas Chautruwhich may be useful.
1455f156561SNicolas ChautruThe results of these tests will depend on the device capabilities which may
1465f156561SNicolas Chautrucause some test cases to be skipped, but no failure should be reported.
1475f156561SNicolas Chautru
1485f156561SNicolas Chautru
1495f156561SNicolas ChautruAlternate Baseband Device configuration tool
1505f156561SNicolas Chautru~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1515f156561SNicolas Chautru
1525f156561SNicolas ChautruOn top of the embedded configuration feature supported in test-bbdev using
1535f156561SNicolas Chautru"- -init-device" option mentioned above, there is also a tool available
1545f156561SNicolas Chautruto perform that device configuration using a companion application.
1555f156561SNicolas ChautruThe ``pf_bb_config`` application notably enables then to run bbdev-test
1565f156561SNicolas Chautrufrom the VF and not only limited to the PF as captured above.
1575f156561SNicolas Chautru
1585f156561SNicolas ChautruSee for more details: https://github.com/intel/pf-bb-config
1595f156561SNicolas Chautru
1602d4983b6SNicolas ChautruSpecifically for the bbdev Intel vRAN Boost v1 PMD, the command below can be used
1615f156561SNicolas Chautru(note that ACC200 was used previously to refer to VRB1):
1625f156561SNicolas Chautru
1635f156561SNicolas Chautru.. code-block:: console
1645f156561SNicolas Chautru
1655f156561SNicolas Chautru   pf_bb_config ACC200 -c ./acc200/acc200_config_vf_5g.cfg
1665f156561SNicolas Chautru   test-bbdev.py -e="-c 0xff0 -a${VF_PCI_ADDR}" -c validation -n 64 -b 64 -l 1 -v ./ldpc_dec_default.data
167