From e7036385224c5e7c67481029556583a2e26f1913 Mon Sep 17 00:00:00 2001 From: "r.karey" Date: Sun, 13 Dec 2020 13:39:41 +0530 Subject: [PATCH] fixed memory leaks --- openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_uci.c | 18 +++++++++++++++++- openair2/NR_PHY_INTERFACE/NR_IF_Module.c | 8 ++------ 2 files changed, 19 insertions(+), 7 deletions(-) diff --git a/openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_uci.c b/openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_uci.c index 6a7ba8d4cb..a7e051f674 100644 --- a/openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_uci.c +++ b/openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_uci.c @@ -673,6 +673,19 @@ void handle_nr_uci_pucch_2_3_4(module_id_t mod_id, NR_ServingCellConfigCommon_t *scc = RC.nrmac[mod_id]->common_channels->ServingCellConfigCommon; const int num_slots = nr_slots_per_frame[*scc->ssbSubcarrierSpacing]; + if ( uci_234 -> pduBitmap & 0x01 ) { + ///Handle SR PDU + uint8_t sr_id = 0; + + for (sr_id = 0; sr_id < uci_234->sr.sr_bit_len; sr_id++) { + sched_ctrl->sr_req.ul_SR[sr_id] = uci_234->sr.sr_payload & 1; + uci_234->sr.sr_payload >>= 1; + } + + sched_ctrl->sr_req.nr_of_srs = uci_234->sr.sr_bit_len; + } + // TODO + int max_harq_rounds = 4; // TODO define macro if ((uci_234->pduBitmap >> 1) & 0x01) { // iterate over received harq bits for (int harq_bit = 0; harq_bit < uci_234->harq.harq_bit_len; harq_bit++) { @@ -711,6 +724,8 @@ void handle_nr_uci_pucch_2_3_4(module_id_t mod_id, scs); //API to parse the csi report and store it into sched_ctrl extract_pucch_csi_report (csi_MeasConfig, uci_pdu, sched_ctrl,UL_info->frame, UL_info->slot, scs, UE_id, Mod_idP); + //TCI handling function + tci_handling(Mod_idP, UE_id, UL_info->CC_id, sched_ctrl, UL_info->frame, UL_info->slot); } if (uci_pdu -> pduBitmap & 0x08) { @@ -1479,7 +1494,8 @@ void extract_pucch_csi_report (NR_CSI_MeasConfig_t *csi_MeasConfig, if ( !(reportQuantity_type)) AssertFatal(reportQuantity_type, "reportQuantity is not configured"); - + free(payload); + payload = NULL; #if 0 if ( NR_CSI_ReportConfig__reportQuantity_PR_cri_RI_PMI_CQI == reportQuantity_type || diff --git a/openair2/NR_PHY_INTERFACE/NR_IF_Module.c b/openair2/NR_PHY_INTERFACE/NR_IF_Module.c index 2ac16d82e8..3f811afea7 100644 --- a/openair2/NR_PHY_INTERFACE/NR_IF_Module.c +++ b/openair2/NR_PHY_INTERFACE/NR_IF_Module.c @@ -132,16 +132,12 @@ void extract_pucch_csi_report ( NR_CSI_MeasConfig_t *csi_MeasConfig, /** From Table 6.3.1.1.2-3: RI, LI, CQI, and CRI of codebookType=typeI-SinglePanel */ uint8_t idx = 0; - uint8_t payload_size = ceil(((double)uci_pdu->csi_part1.csi_part1_bit_len)/8); - uint8_t *payload = calloc (payload_size, sizeof(uint8_t)); + uint8_t *payload = uci_pdu->csi_part1.csi_part1_payload; NR_CSI_ReportConfig__reportQuantity_PR reportQuantity_type = NR_CSI_ReportConfig__reportQuantity_PR_NOTHING; NR_UE_list_t *UE_list = &(RC.nrmac[Mod_idP]->UE_list); long periodicity; uint8_t csi_report_id = 0; - memcpy ( payload, uci_pdu->csi_part1.csi_part1_payload, payload_size); - - UE_list->csi_report_template[UE_id][csi_report_id].nb_of_csi_ssb_report = 0; for ( csi_report_id =0; csi_report_id < csi_MeasConfig->csi_ReportConfigToAddModList->list.count; csi_report_id++ ) { //Assuming in periodic reporting for one slot can be configured with only one CSI-ReportConfig @@ -209,7 +205,7 @@ void extract_pucch_csi_report ( NR_CSI_MeasConfig_t *csi_MeasConfig, *payload >>= 4; } UE_list->csi_report_template[UE_id][csi_report_id].nb_of_csi_ssb_report++; - LOG_I(MAC,"csi_payload size = %d, rsrp_id = %d\n",payload_size, sched_ctrl->CSI_report[idx].choice.ssb_cri_report.RSRP); + LOG_I(MAC," rsrp_id = %d\n", sched_ctrl->CSI_report[idx].choice.ssb_cri_report.RSRP); } }