LDPC interface: init: provide number of PxSCH

Provide the memory buffer size for storing LLRs across HARQ rounds. then
we don't need to check for this in the API users.

Signed-off-by: Robert Schmidt <robert.schmidt@openairinterface.org>
This commit is contained in:
Raymond Knopp
2026-02-25 16:35:15 +01:00
committed by Robert Schmidt
parent 28cff29178
commit aaf2e2aed9
5 changed files with 9 additions and 8 deletions

View File

@@ -256,7 +256,7 @@ int main(int argc, char **argv)
init_opt();
int ret_loader = load_nrLDPC_coding_interface(NULL, &nrLDPC_coding_interface);
int ret_loader = load_nrLDPC_coding_interface(NULL, &nrLDPC_coding_interface, 32);
AssertFatal(ret_loader == 0, "error loading LDPC library\n");
// strdup to put the sring in the core file for post mortem identification

View File

@@ -1061,7 +1061,7 @@ static int normalize_dpdk_dev(const char *input, char *output, size_t out_len)
}
// OAI CODE
int32_t nrLDPC_coding_init()
int32_t nrLDPC_coding_init(int max_num_pxsch)
{
pthread_mutex_init(&encode_mutex, NULL);
pthread_mutex_init(&decode_mutex, NULL);

View File

@@ -202,7 +202,7 @@ typedef struct nrLDPC_slot_encoding_parameters_s{
nrLDPC_TB_encoding_parameters_t *TBs;
} nrLDPC_slot_encoding_parameters_t;
typedef int32_t(nrLDPC_coding_init_t)(void);
typedef int32_t(nrLDPC_coding_init_t)(int);
typedef int32_t(nrLDPC_coding_shutdown_t)(void);
/**
@@ -224,7 +224,7 @@ typedef struct nrLDPC_coding_interface_s {
nrLDPC_coding_encoder_t *nrLDPC_coding_encoder;
} nrLDPC_coding_interface_t;
int load_nrLDPC_coding_interface(char *version, nrLDPC_coding_interface_t *interface);
int load_nrLDPC_coding_interface(char *version, nrLDPC_coding_interface_t *interface, int);
int free_nrLDPC_coding_interface(nrLDPC_coding_interface_t *interface);
#endif

View File

@@ -21,7 +21,7 @@
/* arg is used to initialize the config module so that the loader works as expected */
char *arguments_phy_simulators[64]={"ldpctest",NULL};
int load_nrLDPC_coding_interface(char *version, nrLDPC_coding_interface_t *itf)
int load_nrLDPC_coding_interface(char *version, nrLDPC_coding_interface_t *itf, int max_num_pxsch)
{
char *ptr = (char *)config_get_if();
char libname[64] = "ldpc";
@@ -46,7 +46,7 @@ int load_nrLDPC_coding_interface(char *version, nrLDPC_coding_interface_t *itf)
itf->nrLDPC_coding_decoder = (nrLDPC_coding_decoder_t *)shlib_fdesc[2].fptr;
itf->nrLDPC_coding_encoder = (nrLDPC_coding_encoder_t *)shlib_fdesc[3].fptr;
AssertFatal(itf->nrLDPC_coding_init() == 0, "error starting LDPC library %s %s\n", libname, version);
AssertFatal(itf->nrLDPC_coding_init(max_num_pxsch) == 0, "error starting LDPC library %s %s\n", libname, version);
return 0;
}

View File

@@ -119,8 +119,6 @@ void phy_init_nr_gNB(PHY_VARS_gNB *gNB)
nr_init_fde(); // Init array for frequency equalization of transform precoding of PUSCH
int ret_loader = load_nrLDPC_coding_interface(NULL, &gNB->nrLDPC_coding_interface);
AssertFatal(ret_loader == 0, "error loading LDPC library\n");
gNB->max_nb_pdsch = MAX_MOBILES_PER_GNB;
init_delay_table(fp->ofdm_symbol_size, MAX_DELAY_COMP, NR_MAX_OFDM_SYMBOL_SIZE, fp->delay_table);
@@ -141,6 +139,9 @@ void phy_init_nr_gNB(PHY_VARS_gNB *gNB)
/// Transport init necessary for NR synchro
init_nr_transport(gNB);
int ret_loader = load_nrLDPC_coding_interface(NULL, &gNB->nrLDPC_coding_interface, 16 * gNB->max_nb_pusch);
AssertFatal(ret_loader == 0, "error loading LDPC library\n");
init_DLSCH_struct(gNB);
/* Do NOT allocate per-antenna rxdataF: the gNB gets a pointer to the