From 169de8cdca7c290b1bcc18869922669051b55518 Mon Sep 17 00:00:00 2001 From: francescomani Date: Fri, 29 Aug 2025 15:04:55 +0200 Subject: [PATCH 1/4] remove unnecessary input in get_cce_index --- openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_RA.c | 4 +--- openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_dlsch.c | 2 -- openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_phytest.c | 2 -- openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_primitives.c | 3 +-- openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_ulsch.c | 2 -- openair2/LAYER2/NR_MAC_gNB/mac_proto.h | 1 - 6 files changed, 2 insertions(+), 12 deletions(-) diff --git a/openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_RA.c b/openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_RA.c index 6e93e0467c..16bf8c5009 100644 --- a/openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_RA.c +++ b/openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_RA.c @@ -915,7 +915,6 @@ static void nr_generate_Msg3_retransmission(module_id_t module_idP, ss, coreset, &UE->UE_sched_ctrl.sched_pdcch, - true, 0); if (CCEIndex < 0) { LOG_E(NR_MAC, "UE %04x cannot find free CCE!\n", UE->rnti); @@ -1507,7 +1506,7 @@ static void nr_generate_Msg2(module_id_t module_idP, } uint8_t aggregation_level; - int CCEIndex = get_cce_index(nr_mac, CC_id, slotP, 0, &aggregation_level, beam.idx, ss, coreset, &sched_ctrl->sched_pdcch, true, 0); + int CCEIndex = get_cce_index(nr_mac, CC_id, slotP, 0, &aggregation_level, beam.idx, ss, coreset, &sched_ctrl->sched_pdcch, 0); if (CCEIndex < 0) { LOG_W(NR_MAC, "UE %04x: %d.%d cannot find free CCE for Msg2!\n", UE->rnti, frameP, slotP); @@ -1707,7 +1706,6 @@ static void nr_generate_Msg4_MsgB(module_id_t module_idP, ss, coreset, &sched_ctrl->sched_pdcch, - true, 0); if (CCEIndex < 0) { diff --git a/openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_dlsch.c b/openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_dlsch.c index 8befbe4833..d60ba6174d 100644 --- a/openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_dlsch.c +++ b/openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_dlsch.c @@ -551,7 +551,6 @@ static bool allocate_dl_retransmission(module_id_t module_id, sched_ctrl->search_space, sched_ctrl->coreset, &sched_ctrl->sched_pdcch, - false, sched_ctrl->pdcch_cl_adjust); if (CCEIndex<0) { sched_ctrl->dl_cce_fail++; @@ -811,7 +810,6 @@ static void pf_dl(module_id_t module_id, sched_ctrl->search_space, sched_ctrl->coreset, &sched_ctrl->sched_pdcch, - false, sched_ctrl->pdcch_cl_adjust); if (CCEIndex < 0) { sched_ctrl->dl_cce_fail++; diff --git a/openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_phytest.c b/openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_phytest.c index 26b48ab998..5ec7bf781d 100644 --- a/openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_phytest.c +++ b/openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_phytest.c @@ -139,7 +139,6 @@ void nr_preprocessor_phytest(module_id_t module_id, frame_t frame, slot_t slot) sched_ctrl->search_space, sched_ctrl->coreset, &sched_ctrl->sched_pdcch, - false, 0); AssertFatal(CCEIndex >= 0, "Could not find CCE for UE %04x\n", UE->rnti); @@ -286,7 +285,6 @@ void nr_ul_preprocessor_phytest(gNB_MAC_INST *nr_mac, post_process_pusch_t *pp_p sched_ctrl->search_space, sched_ctrl->coreset, &sched_ctrl->sched_pdcch, - false, 0); if (CCEIndex < 0) { LOG_E(MAC, "%s(): CCE list not empty, couldn't schedule PUSCH\n", __func__); diff --git a/openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_primitives.c b/openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_primitives.c index 264150f314..cb3329b34b 100644 --- a/openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_primitives.c +++ b/openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_primitives.c @@ -572,10 +572,9 @@ int get_cce_index(const gNB_MAC_INST *nrmac, const NR_SearchSpace_t *ss, const NR_ControlResourceSet_t *coreset, NR_sched_pdcch_t *sched_pdcch, - bool is_common, float pdcch_cl_adjust) { - const uint32_t Y = is_common ? 0 : get_Y(ss, slot, rnti); + const uint32_t Y = get_Y(ss, slot, rnti); uint8_t nr_of_candidates; int agg_level_search_order[NUM_PDCCH_AGG_LEVELS]; diff --git a/openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_ulsch.c b/openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_ulsch.c index 09044e9170..e1a312d9e0 100644 --- a/openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_ulsch.c +++ b/openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_ulsch.c @@ -1876,7 +1876,6 @@ static bool allocate_ul_retransmission(gNB_MAC_INST *nrmac, sched_ctrl->search_space, sched_ctrl->coreset, &sched_ctrl->sched_pdcch, - false, sched_ctrl->pdcch_cl_adjust); if (CCEIndex<0) { LOG_D(NR_MAC, "[UE %04x][%4d.%2d] no free CCE for retransmission UL DCI UE\n", UE->rnti, frame, slot); @@ -2125,7 +2124,6 @@ static int pf_ul(gNB_MAC_INST *nrmac, sched_ctrl->search_space, sched_ctrl->coreset, &sched_ctrl->sched_pdcch, - false, sched_ctrl->pdcch_cl_adjust); if (CCEIndex < 0) { diff --git a/openair2/LAYER2/NR_MAC_gNB/mac_proto.h b/openair2/LAYER2/NR_MAC_gNB/mac_proto.h index ff827ab68a..84a0923e8b 100644 --- a/openair2/LAYER2/NR_MAC_gNB/mac_proto.h +++ b/openair2/LAYER2/NR_MAC_gNB/mac_proto.h @@ -431,7 +431,6 @@ int get_cce_index(const gNB_MAC_INST *nrmac, const NR_SearchSpace_t *ss, const NR_ControlResourceSet_t *coreset, NR_sched_pdcch_t *sched_pdcch, - bool is_common, float pdcch_cl_adjust); bool nr_find_nb_rb(uint16_t Qm, From 15bb046f9cbc10be0e95955c7bfe7f075af1de60 Mon Sep 17 00:00:00 2001 From: francescomani Date: Mon, 1 Sep 2025 17:25:01 +0200 Subject: [PATCH 2/4] adding a missing beam reaset in pf_dl --- openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_dlsch.c | 1 + 1 file changed, 1 insertion(+) diff --git a/openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_dlsch.c b/openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_dlsch.c index d60ba6174d..df5c8e1474 100644 --- a/openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_dlsch.c +++ b/openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_dlsch.c @@ -797,6 +797,7 @@ static void pf_dl(module_id_t module_id, rbStart, max_rbSize, rbStop); + reset_beam_status(&mac->beam_info, frame, slot, iterator->UE->UE_beam_index, slots_per_frame, beam.new_beam); iterator++; continue; } From 2e1543073105830780c32de797b1d2c51c1c00bf Mon Sep 17 00:00:00 2001 From: francescomani Date: Mon, 1 Sep 2025 18:46:22 +0200 Subject: [PATCH 3/4] adding other missing beam reaset in RA functions --- openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_RA.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_RA.c b/openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_RA.c index 16bf8c5009..715feb5b33 100644 --- a/openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_RA.c +++ b/openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_RA.c @@ -856,6 +856,8 @@ static void nr_generate_Msg3_retransmission(module_id_t module_idP, } if (rbStart > (sched_pusch.bwp_info.bwpSize - ra->msg3_nb_rb)) { // cannot find free vrb_map for msg3 retransmission in this slot + reset_beam_status(&nr_mac->beam_info, sched_frame, sched_slot, UE->UE_beam_index, slots_frame, beam_ul.new_beam); + reset_beam_status(&nr_mac->beam_info, frame, slot, UE->UE_beam_index, slots_frame, beam_dci.new_beam); return; } @@ -918,6 +920,8 @@ static void nr_generate_Msg3_retransmission(module_id_t module_idP, 0); if (CCEIndex < 0) { LOG_E(NR_MAC, "UE %04x cannot find free CCE!\n", UE->rnti); + reset_beam_status(&nr_mac->beam_info, sched_frame, sched_slot, UE->UE_beam_index, slots_frame, beam_ul.new_beam); + reset_beam_status(&nr_mac->beam_info, frame, slot, UE->UE_beam_index, slots_frame, beam_dci.new_beam); return; } @@ -1733,8 +1737,10 @@ static void nr_generate_Msg4_MsgB(module_id_t module_idP, TYPE_TC_RNTI_, coreset->controlResourceSetId, false); - if (!msg4_tda.valid_tda) + if (!msg4_tda.valid_tda) { + reset_beam_status(&nr_mac->beam_info, frameP, slotP, UE->UE_beam_index, n_slots_frame, beam.new_beam); return; + } NR_pdsch_dmrs_t dmrs_info = get_dl_dmrs_params(scc, dl_bwp, &msg4_tda, 1); bwp_info_t bwp_info = get_pdsch_bwp_start_size(nr_mac, UE); From e69ef1d8ccfe125b2c9d13fd63c3b995881e8667 Mon Sep 17 00:00:00 2001 From: Robert Schmidt Date: Thu, 28 Aug 2025 10:42:39 +0200 Subject: [PATCH 4/4] UL scheduler log: print TDA, it has more info --- openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_ulsch.c | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_ulsch.c b/openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_ulsch.c index e1a312d9e0..b08e703076 100644 --- a/openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_ulsch.c +++ b/openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_ulsch.c @@ -2442,7 +2442,7 @@ void post_process_ulsch(gNB_MAC_INST *nr_mac, post_process_pusch_t *pusch, NR_UE sched_ctrl->last_ul_slot = sched_pusch->slot; LOG_D(NR_MAC, - "ULSCH/PUSCH: %4d.%2d RNTI %04x UL sched %4d.%2d DCI L %d start %2d RBS %3d startSymbol %2d nb_symbol %2d dmrs_pos %x MCS " + "ULSCH/PUSCH: %4d.%2d RNTI %04x UL sched %4d.%2d DCI L %d start %2d RBS %3d TDA %2d dmrs_pos %x MCS " "Table %2d MCS %2d nrOfLayers %2d num_dmrs_cdm_grps_no_data %2d TBS %4d HARQ PID %2d round %d RV %d NDI %d est %6d sched " "%6d est BSR %6d TPC %d\n", frame, @@ -2453,8 +2453,7 @@ void post_process_ulsch(gNB_MAC_INST *nr_mac, post_process_pusch_t *pusch, NR_UE sched_ctrl->aggregation_level, sched_pusch->rbStart, sched_pusch->rbSize, - sched_pusch->tda_info.startSymbolIndex, - sched_pusch->tda_info.nrOfSymbols, + sched_pusch->time_domain_allocation, sched_pusch->dmrs_info.ul_dmrs_symb_pos, current_BWP->mcs_table, sched_pusch->mcs,