Commit 388942b5 authored by Giulio Carota's avatar Giulio Carota Committed by Robert Schmidt

Revert "Send RRC UECapabilityEnquiry after reconfig, trigger UE update if necessary"

This reverts commit 4a7d7975.

Trigger the UE capability right after security mode complete, as
specified in O-RAN WG5.C.1-v11. Also, there is no "need" for the
"default" RRC Reconfiguration (it will come once PDU sessions are
requested), so remove this as well.
parent 7340abc6
......@@ -567,20 +567,7 @@ void rrc_gNB_generate_dedicatedRRCReconfiguration(const protocol_ctxt_t *const c
uint8_t xid = rrc_gNB_get_next_transaction_identifier(ctxt_pP->module_id);
gNB_RRC_UE_t *ue_p = &ue_context_pP->ue_context;
/* hack: in many cases, we want to send a PDU session resource setup response
* after this dedicated RRC Reconfiguration (e.g., new PDU session). However,
* this is not always the case, e.g., when the PDU sessions came through the
* NG initial UE context setup, in which case all PDU sessions are
* established, and we end up here after a UE Capability Enquiry. So below,
* check if we are currently setting up any PDU sessions, and only then, set
* the xid to trigger a PDU session setup response. */
ue_p->xids[xid] = RRC_DEDICATED_RECONF;
for (int i = 0; i < ue_p->nb_of_pdusessions; ++i) {
if (ue_p->pduSession[i].status < PDU_SESSION_STATUS_ESTABLISHED) {
ue_p->xids[xid] = RRC_PDUSESSION_ESTABLISH;
break;
}
}
ue_p->xids[xid] = RRC_PDUSESSION_ESTABLISH;
struct NR_RRCReconfiguration_v1530_IEs__dedicatedNAS_MessageList *dedicatedNAS_MessageList = CALLOC(1, sizeof(*dedicatedNAS_MessageList));
for (int i = 0; i < ue_p->nb_of_pdusessions; i++) {
......@@ -1389,35 +1376,6 @@ static int handle_ueCapabilityInformation(const protocol_ctxt_t *const ctxt_pP,
rrc_gNB_send_NGAP_UE_CAPABILITIES_IND(ctxt_pP, ue_context_p, ue_cap_info);
/* if we already have DRBs setup (SRB2 exists if there is at least one DRB),
* there might not be a further reconfiguration on which we can rely, so send
* the UE capabilities to the DU to have it trigger a reconfiguration. */
if (UE->Srb[2].Active && UE->ue_cap_buffer.len > 0 && UE->ue_cap_buffer.buf != NULL) {
cu_to_du_rrc_information_t cu2du = {0};
if (UE->ue_cap_buffer.len > 0 && UE->ue_cap_buffer.buf != NULL) {
cu2du.uE_CapabilityRAT_ContainerList = UE->ue_cap_buffer.buf;
cu2du.uE_CapabilityRAT_ContainerList_length = UE->ue_cap_buffer.len;
}
f1_ue_data_t ue_data = cu_get_f1_ue_data(UE->rrc_ue_id);
if (ue_data.du_assoc_id == 0) {
LOG_E(NR_RRC, "cannot send data: invalid assoc_id 0, DU offline\n");
return -1;
}
gNB_RRC_INST *rrc = RC.nrrrc[0];
f1ap_ue_context_modif_req_t ue_context_modif_req = {
.gNB_CU_ue_id = UE->rrc_ue_id,
.gNB_DU_ue_id = ue_data.secondary_ue,
.plmn.mcc = rrc->configuration.mcc[0],
.plmn.mnc = rrc->configuration.mnc[0],
.plmn.mnc_digit_length = rrc->configuration.mnc_digit_length[0],
.nr_cellid = rrc->nr_cellid,
.servCellId = 0, /* TODO: correct value? */
.cu_to_du_rrc_information = &cu2du,
};
rrc->mac_rrc.ue_context_modification_request(ue_data.du_assoc_id, &ue_context_modif_req);
}
return 0;
}
......@@ -1535,14 +1493,6 @@ static void handle_rrcReconfigurationComplete(const protocol_ctxt_t *const ctxt_
LOG_I(RRC, "UE %d: transaction %d still ongoing for action %d\n", UE->rrc_ue_id, i, UE->xids[i]);
}
}
/* if we did not receive any UE Capabilities, let's do that now. It should
* only happen on the first time a reconfiguration arrives. Afterwards, we
* should have them. If the UE does not give us anything, we will re-request
* the capabilities after each reconfiguration, which is a finite number */
if (UE->ue_cap_buffer.len == 0) {
rrc_gNB_generate_UECapabilityEnquiry(ctxt_pP, ue_context_p);
}
}
//-----------------------------------------------------------------------------
int rrc_gNB_decode_dcch(const protocol_ctxt_t *const ctxt_pP,
......@@ -1650,7 +1600,9 @@ int rrc_gNB_decode_dcch(const protocol_ctxt_t *const ctxt_pP,
nr_rrc_pdcp_config_security(ctxt_pP, ue_context_p, 1);
ue_context_p->ue_context.as_security_active = true;
rrc_gNB_generate_defaultRRCReconfiguration(ctxt_pP, ue_context_p);
/* trigger UE capability enquiry if we don't have them yet */
if (ue_context_p->ue_context.ue_cap_buffer.len == 0)
rrc_gNB_generate_UECapabilityEnquiry(ctxt_pP, ue_context_p);
break;
case NR_UL_DCCH_MessageType__c1_PR_securityModeFailure:
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment