From 38a38e0eaf42fb2dcd26062aee116a1a59c31f13 Mon Sep 17 00:00:00 2001 From: Romain Beurdouche Date: Mon, 20 Jan 2025 08:10:42 +0000 Subject: [PATCH] fix(nrLDPC_coding_t2): Properly stop LDPC coding in gNB and UE LDPC coding was yet not properly stopped by using free_nrLDPC_coding_interface in gNB and UE. This was not causing major issue until now. It was especially not causing any issue with T2 LDPC coding using the PF. But using T2 VFs, if the coding library is not properly stopped then the VF cannot be used anymore unless the admin app is restarted. So this MR adds the missing free_nrLDPC_coding_interface. --- executables/nr-uesoftmodem.c | 1 + .../PHY/CODING/nrLDPC_coding/nrLDPC_coding_interface_load.c | 6 +++++- openair1/PHY/INIT/nr_init.c | 3 +++ openair1/SIMULATION/NR_PHY/dlschsim.c | 2 -- openair1/SIMULATION/NR_PHY/ulschsim.c | 2 -- 5 files changed, 9 insertions(+), 5 deletions(-) diff --git a/executables/nr-uesoftmodem.c b/executables/nr-uesoftmodem.c index d5896bbffd..619e425ff9 100644 --- a/executables/nr-uesoftmodem.c +++ b/executables/nr-uesoftmodem.c @@ -573,6 +573,7 @@ int main(int argc, char **argv) } } + free_nrLDPC_coding_interface(&nrLDPC_coding_interface); free(pckg); return 0; } diff --git a/openair1/PHY/CODING/nrLDPC_coding/nrLDPC_coding_interface_load.c b/openair1/PHY/CODING/nrLDPC_coding/nrLDPC_coding_interface_load.c index 4819b68598..ab80eb77a0 100644 --- a/openair1/PHY/CODING/nrLDPC_coding/nrLDPC_coding_interface_load.c +++ b/openair1/PHY/CODING/nrLDPC_coding/nrLDPC_coding_interface_load.c @@ -70,5 +70,9 @@ int load_nrLDPC_coding_interface(char *version, nrLDPC_coding_interface_t *itf) int free_nrLDPC_coding_interface(nrLDPC_coding_interface_t *interface) { - return interface->nrLDPC_coding_shutdown(); + if (interface->nrLDPC_coding_shutdown) { + return interface->nrLDPC_coding_shutdown(); + } else { + return -1; + } } diff --git a/openair1/PHY/INIT/nr_init.c b/openair1/PHY/INIT/nr_init.c index 581338fa45..2b8ede1069 100644 --- a/openair1/PHY/INIT/nr_init.c +++ b/openair1/PHY/INIT/nr_init.c @@ -292,6 +292,9 @@ void phy_free_nr_gNB(PHY_VARS_gNB *gNB) free_and_zero(pusch_vars->llr); } // ULSCH_id free(gNB->pusch_vars); + + free_nrLDPC_coding_interface(&gNB->nrLDPC_coding_interface); + } //Adding nr_schedule_handler diff --git a/openair1/SIMULATION/NR_PHY/dlschsim.c b/openair1/SIMULATION/NR_PHY/dlschsim.c index 1730c91816..4062077ab7 100644 --- a/openair1/SIMULATION/NR_PHY/dlschsim.c +++ b/openair1/SIMULATION/NR_PHY/dlschsim.c @@ -661,8 +661,6 @@ int main(int argc, char **argv) free(gNB->gNB_config.tdd_table.max_tdd_periodicity_list[i].max_num_of_symbol_per_slot_list); free(gNB->gNB_config.tdd_table.max_tdd_periodicity_list); - free_nrLDPC_coding_interface(&gNB->nrLDPC_coding_interface); - abortTpool(&gNB->threadPool); phy_free_nr_gNB(gNB); diff --git a/openair1/SIMULATION/NR_PHY/ulschsim.c b/openair1/SIMULATION/NR_PHY/ulschsim.c index 8a39852995..12c3551566 100644 --- a/openair1/SIMULATION/NR_PHY/ulschsim.c +++ b/openair1/SIMULATION/NR_PHY/ulschsim.c @@ -603,8 +603,6 @@ int main(int argc, char **argv) free(gNB->gNB_config.tdd_table.max_tdd_periodicity_list[i].max_num_of_symbol_per_slot_list); free(gNB->gNB_config.tdd_table.max_tdd_periodicity_list); - free_nrLDPC_coding_interface(&gNB->nrLDPC_coding_interface); - term_nr_ue_signal(UE, 1); free(UE);