From 71e23b12c2eb0ea4209394db81b7783cf59665f9 Mon Sep 17 00:00:00 2001 From: luis_pereira87 Date: Thu, 11 Dec 2025 14:43:21 +0000 Subject: [PATCH] Reset outdated PUCCHs to avoid Assertion caused by non-processed and active PUCCHs When there is real-time issues in L1 it may happen that the scheduler misses/skips some slots, thus, L2 not processing and not freeing some structures like PUCCH. This commit avoids the Assertion by resetting any Active outdated PUCCH --- openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_uci.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_uci.c b/openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_uci.c index eb32fde2e6..a072fdc544 100644 --- a/openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_uci.c +++ b/openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_uci.c @@ -280,7 +280,10 @@ void nr_csi_meas_reporting(int Mod_idP,frame_t frame, slot_t slot) const int pucch_index = get_pucch_index(sched_frame, sched_slot, &nrmac->frame_structure, sched_ctrl->sched_pucch_size); NR_sched_pucch_t *curr_pucch = &sched_ctrl->sched_pucch[pucch_index]; - AssertFatal(curr_pucch->active == false, "CSI structure is scheduled in advance. It should be free!\n"); + if (curr_pucch->active) { + LOG_E(NR_MAC, "CSI structure is scheduled in advance. It should be free!\n"); + memset(curr_pucch, 0, sizeof(*curr_pucch)); + } curr_pucch->r_pucch = -1; curr_pucch->frame = sched_frame; curr_pucch->ul_slot = sched_slot;