Commit bb5dd4b6 authored by Raymond Knopp's avatar Raymond Knopp Committed by Robert Schmidt

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.
parent 3a5df627
...@@ -286,7 +286,7 @@ int main(int argc, char **argv) ...@@ -286,7 +286,7 @@ int main(int argc, char **argv)
init_opt(); 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"); AssertFatal(ret_loader == 0, "error loading LDPC library\n");
// strdup to put the sring in the core file for post mortem identification // strdup to put the sring in the core file for post mortem identification
......
...@@ -1055,7 +1055,7 @@ static int normalize_dpdk_dev(const char *input, char *output, size_t out_len) ...@@ -1055,7 +1055,7 @@ static int normalize_dpdk_dev(const char *input, char *output, size_t out_len)
} }
// OAI CODE // 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(&encode_mutex, NULL);
pthread_mutex_init(&decode_mutex, NULL); pthread_mutex_init(&decode_mutex, NULL);
......
...@@ -218,7 +218,7 @@ typedef struct nrLDPC_slot_encoding_parameters_s{ ...@@ -218,7 +218,7 @@ typedef struct nrLDPC_slot_encoding_parameters_s{
nrLDPC_TB_encoding_parameters_t *TBs; nrLDPC_TB_encoding_parameters_t *TBs;
} nrLDPC_slot_encoding_parameters_t; } 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); typedef int32_t(nrLDPC_coding_shutdown_t)(void);
/** /**
...@@ -240,7 +240,7 @@ typedef struct nrLDPC_coding_interface_s { ...@@ -240,7 +240,7 @@ typedef struct nrLDPC_coding_interface_s {
nrLDPC_coding_encoder_t *nrLDPC_coding_encoder; nrLDPC_coding_encoder_t *nrLDPC_coding_encoder;
} nrLDPC_coding_interface_t; } 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); int free_nrLDPC_coding_interface(nrLDPC_coding_interface_t *interface);
#endif #endif
...@@ -38,7 +38,7 @@ ...@@ -38,7 +38,7 @@
/* arg is used to initialize the config module so that the loader works as expected */ /* arg is used to initialize the config module so that the loader works as expected */
char *arguments_phy_simulators[64]={"ldpctest",NULL}; 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 *ptr = (char *)config_get_if();
char libname[64] = "ldpc"; char libname[64] = "ldpc";
...@@ -63,7 +63,7 @@ int load_nrLDPC_coding_interface(char *version, nrLDPC_coding_interface_t *itf) ...@@ -63,7 +63,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_decoder = (nrLDPC_coding_decoder_t *)shlib_fdesc[2].fptr;
itf->nrLDPC_coding_encoder = (nrLDPC_coding_encoder_t *)shlib_fdesc[3].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; return 0;
} }
......
...@@ -77,14 +77,14 @@ typedef struct args_fpga_decode_prepare_s { ...@@ -77,14 +77,14 @@ typedef struct args_fpga_decode_prepare_s {
task_ans_t *ans; /*!< pointer to the answer that is used by thread pool to detect job completion */ task_ans_t *ans; /*!< pointer to the answer that is used by thread pool to detect job completion */
} args_fpga_decode_prepare_t; } args_fpga_decode_prepare_t;
int32_t nrLDPC_coding_init(void); int32_t nrLDPC_coding_init(int);
int32_t nrLDPC_coding_shutdown(void); int32_t nrLDPC_coding_shutdown(void);
int32_t nrLDPC_coding_decoder(nrLDPC_slot_decoding_parameters_t *slot_params, int frame_rx, int slot_rx); int32_t nrLDPC_coding_decoder(nrLDPC_slot_decoding_parameters_t *slot_params, int frame_rx, int slot_rx);
// int32_t nrLDPC_coding_encoder(void); // int32_t nrLDPC_coding_encoder(void);
int decoder_xdma(nrLDPC_TB_decoding_parameters_t *TB_params, int frame_rx, int slot_rx, tpool_t *ldpc_threadPool); int decoder_xdma(nrLDPC_TB_decoding_parameters_t *TB_params, int frame_rx, int slot_rx, tpool_t *ldpc_threadPool);
void nr_ulsch_FPGA_decoding_prepare_blocks(void *args); void nr_ulsch_FPGA_decoding_prepare_blocks(void *args);
int32_t nrLDPC_coding_init(void) int32_t nrLDPC_coding_init(int max_num_pxsch)
{ {
paramdef_t LoaderParams[] = { paramdef_t LoaderParams[] = {
{"num_threads_prepare", NULL, 0, .iptr = &num_threads_prepare_max, .defintval = 0, TYPE_INT, 0, NULL}, {"num_threads_prepare", NULL, 0, .iptr = &num_threads_prepare_max, .defintval = 0, TYPE_INT, 0, NULL},
......
...@@ -134,8 +134,6 @@ void phy_init_nr_gNB(PHY_VARS_gNB *gNB) ...@@ -134,8 +134,6 @@ void phy_init_nr_gNB(PHY_VARS_gNB *gNB)
nr_init_fde(); // Init array for frequency equalization of transform precoding of PUSCH 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; 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); init_delay_table(fp->ofdm_symbol_size, MAX_DELAY_COMP, NR_MAX_OFDM_SYMBOL_SIZE, fp->delay_table);
...@@ -156,6 +154,9 @@ void phy_init_nr_gNB(PHY_VARS_gNB *gNB) ...@@ -156,6 +154,9 @@ void phy_init_nr_gNB(PHY_VARS_gNB *gNB)
/// Transport init necessary for NR synchro /// Transport init necessary for NR synchro
init_nr_transport(gNB); 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); init_DLSCH_struct(gNB);
gNB->nr_srs_info = (nr_srs_info_t **)malloc16_clear(gNB->max_nb_srs * sizeof(nr_srs_info_t*)); gNB->nr_srs_info = (nr_srs_info_t **)malloc16_clear(gNB->max_nb_srs * sizeof(nr_srs_info_t*));
......
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