diff --git a/openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_primitives.c b/openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_primitives.c index 4e94a4c5ffa5a24342acabd1aad0d39d84d2e09e..ccdc8aca595dd1f53656ef0600d1aa6c8f2b5977 100644 --- a/openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_primitives.c +++ b/openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_primitives.c @@ -2246,6 +2246,8 @@ void configure_UE_BWP(gNB_MAC_INST *nr_mac, else { DL_BWP = &UE->current_DL_BWP; UL_BWP = &UE->current_UL_BWP; + sched_ctrl->next_dl_bwp_id = -1; + sched_ctrl->next_ul_bwp_id = -1; CellGroup = UE->CellGroup; } NR_BWP_Downlink_t *dl_bwp = NULL; @@ -2274,6 +2276,14 @@ void configure_UE_BWP(gNB_MAC_INST *nr_mac, DL_BWP->bwp_id = 0; UL_BWP->bwp_id = 0; UE->Msg3_dcch_dtch = false; + + // Schedule BWP switching to the first active BWP (previous active BWP before RA with Msg3 carrying DCCH or DTCH message) + if (servingCellConfig->firstActiveDownlinkBWP_Id) { + sched_ctrl->next_dl_bwp_id = *servingCellConfig->firstActiveDownlinkBWP_Id; + } + if (servingCellConfig->uplinkConfig->firstActiveUplinkBWP_Id) { + sched_ctrl->next_ul_bwp_id = *servingCellConfig->uplinkConfig->firstActiveUplinkBWP_Id; + } } else { // (re)configuring BWP @@ -2327,7 +2337,7 @@ void configure_UE_BWP(gNB_MAC_INST *nr_mac, } else { DL_BWP->bwp_id = 0; - DL_BWP->bwp_id = 0; + UL_BWP->bwp_id = 0; target_ss = NR_SearchSpace__searchSpaceType_PR_common; DL_BWP->pdsch_Config = NULL; UL_BWP->pusch_Config = NULL;