From 5856c897412261606ffab015ac5298bbbbbc8563 Mon Sep 17 00:00:00 2001 From: Thomas Schlichter Date: Tue, 24 Jun 2025 14:33:35 +0000 Subject: [PATCH] NR UE: do not select a suspended LCID for scheduling This fixes a lifelock in nr_ue_get_sdu(), because select_logical_channels() would select a suspended LCID for scheduling, but fill_mac_sdu() would not provide data for it. --- openair2/LAYER2/NR_MAC_UE/nr_ue_scheduler.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/openair2/LAYER2/NR_MAC_UE/nr_ue_scheduler.c b/openair2/LAYER2/NR_MAC_UE/nr_ue_scheduler.c index 2c37b21f5b..23e9cb04e8 100644 --- a/openair2/LAYER2/NR_MAC_UE/nr_ue_scheduler.c +++ b/openair2/LAYER2/NR_MAC_UE/nr_ue_scheduler.c @@ -2539,10 +2539,13 @@ static uint select_logical_channels(NR_UE_MAC_INST_t *mac, nr_lcordered_info_t * int nb = 0; // selection of logical channels with Bj > 0 for (int i = 0; i < mac->lc_ordered_list.count; i++) { - int lcid = mac->lc_ordered_list.array[i]->lcid; + nr_lcordered_info_t *lc_info = mac->lc_ordered_list.array[i]; + if (lc_info->rb_suspended) + continue; + int lcid = lc_info->lcid; NR_LC_SCHEDULING_INFO *sched_info = get_scheduling_info_from_lcid(mac, lcid); if (sched_info->Bj > 0) { - active_lcids[nb++] = *mac->lc_ordered_list.array[i]; + active_lcids[nb++] = *lc_info; LOG_D(NR_MAC, "The available lcid is %d with total active channels count = %d\n", lcid, nb); } }