RRC/F1: provide DU UE ID for re-establishment scenario

Handle target DU UE context setup when handover preparation info
is unavailable (i.e. re-establishment scenario) by retrieving
secondary UE ID from F1 UE data.

rrc_f1_ue_context_setup_for_target_du is either applying to
handover or re-establishment. In the latter scenario, populate
DU UE ID, which should be known.
This commit is contained in:
Guido Casati
2026-01-29 10:17:42 +01:00
parent b621929f9b
commit ebc9158ca4
+9 -1
View File
@@ -3515,10 +3515,18 @@ void rrc_f1_ue_context_setup_for_target_du(const gNB_RRC_INST *rrc,
* the UE context already exists in MAC layer from when RRCReestablishmentRequest was
* received on the new DU. The MAC layer will find the existing UE context using this RNTI. */
byte_array_t *hpi = NULL;
uint32_t du_ue_id = 0;
uint32_t *opt_du_ue_id = NULL;
if (ho_prep_info) {
/* Handover scenario: copy handover preparation information */
hpi = malloc_or_fail(sizeof(*hpi));
*hpi = copy_byte_array(*ho_prep_info);
} else {
/* Reestablishment scenario: use secondary_ue from existing UE context */
f1_ue_data_t ue_data = cu_get_f1_ue_data(ue->rrc_ue_id);
RETURN_IF_INVALID_ASSOC_ID(ue_data.du_assoc_id);
du_ue_id = ue_data.secondary_ue;
opt_du_ue_id = &du_ue_id;
}
LOG_I(NR_RRC, "Triggering UE Context Setup for UE %d on DU %d\n", ue->rrc_ue_id, du->assoc_id);
int nb_srb = 2;
@@ -3539,7 +3547,7 @@ void rrc_f1_ue_context_setup_for_target_du(const gNB_RRC_INST *rrc,
meas_config->buf = calloc_or_fail(1, NR_RRC_BUF_SIZE);
meas_config->len = do_NR_MeasConfig(ue->measConfig, meas_config->buf, NR_RRC_BUF_SIZE);
/* Fill common fields */
f1ap_ue_context_setup_req_t req = rrc_fill_f1_ue_context_setup(ue, du, NULL);
f1ap_ue_context_setup_req_t req = rrc_fill_f1_ue_context_setup(ue, du, opt_du_ue_id);
/* Fill target DU specific fields */
req.srbs_len = 2;
req.srbs = srbs;