Commit 584c90a5 authored by Romain Beurdouche's avatar Romain Beurdouche

feat(ldpc-decoding-module-interface-rework): enable configuration of bbdev in...

feat(ldpc-decoding-module-interface-rework): enable configuration of bbdev in the T2 slot decoding and update T2 documentation
parent ed8682f8
......@@ -85,6 +85,9 @@ For the DPDK EAL initialization, device is specified by `-a` option and list
of cores to run the DPDK application on is selected by `-l` option. PCI adress of
the T2 card can be detected by `lspci | grep "Xilinx"` command.
**Note:** When doing one-shot decoding of slots, the implementation of the initialization is different and allows to provide the device address and the list of isolated cores in the gNB configuration.
They can sit in the *nr_ulsch_decoding* section of the gNB configuration or on the command line with options *--nr_ulsch_decoding.dpdk_dev "<device address>" --nr_ulsch_decoding.dpdk_core_list "<isolated cpu list>"*
# OAI Build
OTA deployment is precisely described in the following tutorial:
- [NR_SA_Tutorial_COTS_UE](https://gitlab.eurecom.fr/oai/openairinterface5g/-/blob/develop/doc/NR_SA_Tutorial_COTS_UE.md)
......@@ -140,6 +143,20 @@ cd cmake_targets/ran_build/build
sudo ./nr-softmodem --sa -O ../../../targets/PROJECTS/GENERIC-NR-5GC/CONF/gnb.sa.band78.fr1.106PRB.usrpb210.conf --ldpc-offload-enable
```
# OTA test with slotwise decoding
Decoding with the AMD Xilinx T2 is also available with a newer interface allowing one-shot decoding of slots.
Refer to [LDPCImplementation.md](https://gitlab.eurecom.fr/oai/openairinterface5g/-/blob/develop/openair1/PHY/CODING/DOC/LDPCImplementation.md) for more information on this newer interface.
Offload of the channel encoding and decoding to the AMD Xilinx T2 card is enabled by *--ulsch-decode-enable --loader.nr_ulsch_decoding.shlibversion _interface_t2* options.
Then it is also necessary to provide the device address and the list of cores isolated for DPDK in the gNB *nr_ulsch_decoding* section of the configuration or through the command line with the options *--nr_ulsch_decoding.dpdk_dev "<device address>" --nr_ulsch_decoding.dpdk_core_list "<isolated cpu list>"*
## Run OAI gNB with USRP B210
```
cd ~/openairinterface5g
source oaienv
cd cmake_targets/ran_build/build
sudo ./nr-softmodem --sa -O ../../../targets/PROJECTS/GENERIC-NR-5GC/CONF/gnb.sa.band78.fr1.106PRB.usrpb210.conf --ulsch-decode-enable --loader.nr_ulsch_decoding.shlibversion _interface_t2 --nr_ulsch_decoding.dpdk_dev "41:00.0" --nr_ulsch_decoding.dpdk_core_list "14-15"
```
# Limitations
## AMD Xilinx T2 card
- functionality of the LDPC encoding and decoding offload verified in OTA SISO setup with USRP N310 and Quectel RM500Q, blocking of the card reported for MIMO setup (2 layers)
......
......@@ -26,6 +26,7 @@
#include "SCHED_NR/sched_nr.h"
#include "SCHED_NR/fapi_nr_l1.h"
#include "defs.h"
#include "common/config/config_userapi.h"
#include "common/utils/LOG/vcd_signal_dumper.h"
#include "common/utils/LOG/log.h"
#include <syscall.h>
......@@ -1494,8 +1495,16 @@ int32_t nr_ulsch_decoding_init()
int dev_id = 0;
struct rte_bbdev_info info;
struct active_device *ad = active_devs;
char *dpdk_dev = "41:00.0"; //PCI address of the card
char *argv_re[] = {"bbdev", "-a", dpdk_dev, "-l", "8-9", "--file-prefix=b6", "--"};
char *dpdk_dev = NULL; //PCI address of the card
char *dpdk_core_list = NULL;
paramdef_t LoaderParams[] = {
{"dpdk_dev", NULL, 0, .strptr = &dpdk_dev, .defstrval = NULL, TYPE_STRING, 0, NULL},
{"dpdk_core_list", NULL, 0, .strptr = &dpdk_core_list, .defstrval = NULL, TYPE_STRING, 0, NULL}
};
config_get(config_get_if(), LoaderParams, sizeofArray(LoaderParams), "nr_ulsch_decoding");
AssertFatal(dpdk_dev!=NULL, "nr_ulsch_decoding.dpdk_dev was not provided");
AssertFatal(dpdk_core_list!=NULL, "nr_ulsch_decoding.dpdk_core_list was not provided");
char *argv_re[] = {"bbdev", "-a", dpdk_dev, "-l", dpdk_core_list, "--file-prefix=b6", "--"};
// EAL initialization, if already initialized (init in xran lib) try to probe DPDK device
ret = rte_eal_init(7, argv_re);
if (ret < 0) {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment