generate RRCReject if no DU to CU container in initial UL RRC message

slightly refactor rrc_gNB_generate_RRCReject() to take rrc pointer.
Remove unused/illegal fields from the DL RRC message.
This commit is contained in:
francescomani
2025-07-02 18:58:40 +02:00
committed by Robert Schmidt
parent 6a1203bb15
commit 511f2f2487
+11 -5
View File
@@ -393,10 +393,9 @@ static void rrc_gNB_generate_RRCSetup(instance_t instance,
rrc->mac_rrc.dl_rrc_message_transfer(ue_data.du_assoc_id, &dl_rrc);
}
static void rrc_gNB_generate_RRCReject(module_id_t module_id, rrc_gNB_ue_context_t *const ue_context_pP)
static void rrc_gNB_generate_RRCReject(gNB_RRC_INST *rrc, rrc_gNB_ue_context_t *const ue_context_pP)
//-----------------------------------------------------------------------------
{
gNB_RRC_INST *rrc = RC.nrrrc[module_id];
gNB_RRC_UE_t *ue_p = &ue_context_pP->ue_context;
LOG_A(NR_RRC, "Send RRCReject to RNTI %04x\n", ue_p->rnti);
@@ -420,10 +419,10 @@ static void rrc_gNB_generate_RRCReject(module_id_t module_id, rrc_gNB_ue_context
.rrc_container = buf,
.rrc_container_length = size,
.srb_id = srbid,
.execute_duplication = 1,
.RAT_frequency_priority_information.en_dc = 0
};
rrc->mac_rrc.dl_rrc_message_transfer(ue_data.du_assoc_id, &dl_rrc);
/* release the created UE context, we rejected the UE */
rrc_remove_ue(rrc, ue_context_pP);
}
//-----------------------------------------------------------------------------
@@ -1135,10 +1134,17 @@ static void rrc_handle_RRCSetupRequest(gNB_RRC_INST *rrc,
ue_context_p = rrc_gNB_create_ue_context(assoc_id, msg->crnti, rrc, random_value, msg->gNB_DU_ue_id);
LOG_E(NR_RRC, "RRCSetupRequest without random UE identity or S-TMSI not supported, let's reject the UE %04x\n", msg->crnti);
rrc_gNB_generate_RRCReject(0, ue_context_p);
rrc_gNB_generate_RRCReject(rrc, ue_context_p);
return;
}
// If the DU to CU RRC Container IE is not included in the INITIAL UL RRC MESSAGE TRANSFER,
// the gNB-CU should reject the UE under the assumption that the gNB-DU is not able to serve such UE
if (msg->du2cu_rrc_container == NULL) {
// this will remove the UE context
rrc_gNB_generate_RRCReject(rrc, ue_context_p);
return;
}
NR_CellGroupConfig_t *cellGroupConfig = NULL;
asn_dec_rval_t dec_rval = uper_decode_complete(NULL,
&asn_DEF_NR_CellGroupConfig,