Merge remote-tracking branch 'origin/Msg3_MAC_CE_C-RNTI_BWP_Fix' into integration_2024_w29
This commit is contained in:
@@ -880,13 +880,13 @@ static void _nr_rx_sdu(const module_id_t gnb_mod_idP,
|
|||||||
nr_mac_trigger_release_timer(&UE->UE_sched_ctrl, UE->current_UL_BWP.scs);
|
nr_mac_trigger_release_timer(&UE->UE_sched_ctrl, UE->current_UL_BWP.scs);
|
||||||
|
|
||||||
// Replace the current UE by the UE identified by C-RNTI
|
// Replace the current UE by the UE identified by C-RNTI
|
||||||
UE = find_nr_UE(&RC.nrmac[gnb_mod_idP]->UE_info, crnti);
|
UE = find_nr_UE(&gNB_mac->UE_info, crnti);
|
||||||
if (!UE) {
|
if (!UE) {
|
||||||
// The UE identified by C-RNTI no longer exists at the gNB
|
// The UE identified by C-RNTI no longer exists at the gNB
|
||||||
// Let's abort the current RA, so the UE will trigger a new RA later but using RRCSetupRequest instead. A better
|
// Let's abort the current RA, so the UE will trigger a new RA later but using RRCSetupRequest instead. A better
|
||||||
// solution may be implemented
|
// solution may be implemented
|
||||||
LOG_W(NR_MAC, "No UE found with C-RNTI %04x, ignoring Msg3 to have UE come back with new RA attempt\n", ra->rnti);
|
LOG_W(NR_MAC, "No UE found with C-RNTI %04x, ignoring Msg3 to have UE come back with new RA attempt\n", ra->rnti);
|
||||||
mac_remove_nr_ue(RC.nrmac[gnb_mod_idP], ra->rnti);
|
mac_remove_nr_ue(gNB_mac, ra->rnti);
|
||||||
nr_clear_ra_proc(ra);
|
nr_clear_ra_proc(ra);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@@ -899,6 +899,14 @@ static void _nr_rx_sdu(const module_id_t gnb_mod_idP,
|
|||||||
reset_dl_harq_list(&UE->UE_sched_ctrl);
|
reset_dl_harq_list(&UE->UE_sched_ctrl);
|
||||||
reset_ul_harq_list(&UE->UE_sched_ctrl);
|
reset_ul_harq_list(&UE->UE_sched_ctrl);
|
||||||
|
|
||||||
|
// Switch to BWP where RA is configured, typically in the InitialBWP
|
||||||
|
// At this point, UE already switched and triggered RA in that BWP, need to do BWP switching also at gNB for C-RNTI
|
||||||
|
if (ra->DL_BWP.bwp_id != UE->current_DL_BWP.bwp_id || ra->UL_BWP.bwp_id != UE->current_UL_BWP.bwp_id) {
|
||||||
|
LOG_D(NR_MAC, "UE %04x Switch BWP from %ld to BWP id %ld\n", UE->rnti, UE->current_DL_BWP.bwp_id, ra->DL_BWP.bwp_id);
|
||||||
|
NR_ServingCellConfigCommon_t *scc = gNB_mac->common_channels[CC_idP].ServingCellConfigCommon;
|
||||||
|
configure_UE_BWP(gNB_mac, scc, &UE->UE_sched_ctrl, NULL, UE, ra->DL_BWP.bwp_id, ra->UL_BWP.bwp_id);
|
||||||
|
}
|
||||||
|
|
||||||
if (UE->reconfigCellGroup) {
|
if (UE->reconfigCellGroup) {
|
||||||
// Nothing to do
|
// Nothing to do
|
||||||
// A RRCReconfiguration message should be already pending (for example, an ongoing RRCReestablishment), and it will be
|
// A RRCReconfiguration message should be already pending (for example, an ongoing RRCReestablishment), and it will be
|
||||||
@@ -906,7 +914,7 @@ static void _nr_rx_sdu(const module_id_t gnb_mod_idP,
|
|||||||
} else {
|
} else {
|
||||||
// Trigger RRC Reconfiguration
|
// Trigger RRC Reconfiguration
|
||||||
LOG_I(NR_MAC, "Received UL_SCH_LCID_C_RNTI with C-RNTI 0x%04x, triggering RRC Reconfiguration\n", UE->rnti);
|
LOG_I(NR_MAC, "Received UL_SCH_LCID_C_RNTI with C-RNTI 0x%04x, triggering RRC Reconfiguration\n", UE->rnti);
|
||||||
nr_mac_trigger_reconfiguration(RC.nrmac[gnb_mod_idP], UE);
|
nr_mac_trigger_reconfiguration(gNB_mac, UE);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
// UE Contention Resolution Identity
|
// UE Contention Resolution Identity
|
||||||
|
|||||||
Reference in New Issue
Block a user