From 9cfdf9bb018f6c5b357e468c63d51b966c40a867 Mon Sep 17 00:00:00 2001 From: Robert Schmidt <robert.schmidt@openairinterface.org> Date: Wed, 31 Jan 2024 16:05:15 +0100 Subject: [PATCH] Remove custom trigger bearer add/release code, does not work --- common/utils/telnetsrv/telnetsrv_bearer.c | 10 +- openair2/RRC/NR/rrc_gNB.c | 143 ---------------------- 2 files changed, 6 insertions(+), 147 deletions(-) diff --git a/common/utils/telnetsrv/telnetsrv_bearer.c b/common/utils/telnetsrv/telnetsrv_bearer.c index 7281ac3e6b0..4d8dacd82f3 100644 --- a/common/utils/telnetsrv/telnetsrv_bearer.c +++ b/common/utils/telnetsrv/telnetsrv_bearer.c @@ -56,7 +56,7 @@ int get_single_rnti(char *buf, int debug, telnet_printfunc_t prnt) return 0; } -void rrc_gNB_trigger_new_bearer(int rnti); +//void rrc_gNB_trigger_new_bearer(int rnti); int add_bearer(char *buf, int debug, telnet_printfunc_t prnt) { int rnti = -1; @@ -75,12 +75,13 @@ int add_bearer(char *buf, int debug, telnet_printfunc_t prnt) if (!rrcue) ERROR_MSG_RET("could not find UE with RNTI %04x\n", rnti); - rrc_gNB_trigger_new_bearer(rnti); + AssertFatal(false, "not implemented\n"); + //rrc_gNB_trigger_new_bearer(rnti); prnt("called rrc_gNB_trigger_new_bearer(%04x)\n", rnti); return 0; } -void rrc_gNB_trigger_release_bearer(int rnti); +//void rrc_gNB_trigger_release_bearer(int rnti); int release_bearer(char *buf, int debug, telnet_printfunc_t prnt) { int rnti = -1; @@ -99,7 +100,8 @@ int release_bearer(char *buf, int debug, telnet_printfunc_t prnt) if (!rrcue) ERROR_MSG_RET("could not find UE with RNTI %04x\n", rnti); - rrc_gNB_trigger_release_bearer(rnti); + AssertFatal(false, "not implemented\n"); + //rrc_gNB_trigger_release_bearer(rnti); prnt("called rrc_gNB_trigger_release_bearer(%04x)\n", rnti); return 0; } diff --git a/openair2/RRC/NR/rrc_gNB.c b/openair2/RRC/NR/rrc_gNB.c index 7c3c200f151..951421d7054 100644 --- a/openair2/RRC/NR/rrc_gNB.c +++ b/openair2/RRC/NR/rrc_gNB.c @@ -2642,149 +2642,6 @@ rrc_gNB_generate_RRCRelease( /* UE will be freed after UE context release complete */ } -void rrc_gNB_trigger_new_bearer(int rnti) -{ - /* get RRC and UE */ - gNB_RRC_INST *rrc = RC.nrrrc[0]; - rrc_gNB_ue_context_t *ue_context_p = rrc_gNB_get_ue_context_by_rnti_any_du(rrc, rnti); - if (ue_context_p == NULL) { - LOG_E(RRC, "unknown UE RNTI %04x\n", rnti); - return; - } - gNB_RRC_UE_t *ue = &ue_context_p->ue_context; - - /* get the existing PDU sessoin */ - if (ue->nb_of_pdusessions < 1) { - LOG_E(RRC, "no PDU session set up yet, cannot create additional bearer\n"); - return; - } - - if (ue->established_drbs[0].status != DRB_INACTIVE - && ue->established_drbs[1].status != DRB_INACTIVE) { - LOG_E(RRC, "already have two established bearers, aborting\n"); - return; - } - - e1ap_bearer_setup_req_t bearer_req = {0}; - bearer_req.gNB_cu_cp_ue_id = ue->rrc_ue_id; - bearer_req.cipheringAlgorithm = ue->ciphering_algorithm; - memcpy(bearer_req.encryptionKey, ue->kgnb, sizeof(ue->kgnb)); - bearer_req.integrityProtectionAlgorithm = ue->integrity_algorithm; - memcpy(bearer_req.integrityProtectionKey, ue->kgnb, sizeof(ue->kgnb)); - bearer_req.ueDlAggMaxBitRate = 10000; /* probably does not matter */ - - pdu_session_to_setup_t *pdu = &bearer_req.pduSession[0]; - //bearer_req.numPDUSessions++; - bearer_req.numPDUSessions = 1; - //pdu->sessionId = session->pdusession_id; - //pdu->sst = msg->allowed_nssai[i].sST; - //pdu->integrityProtectionIndication = rrc->security.do_drb_integrity ? E1AP_IntegrityProtectionIndication_required : E1AP_IntegrityProtectionIndication_not_needed; - - //pdu->confidentialityProtectionIndication = rrc->security.do_drb_ciphering ? E1AP_ConfidentialityProtectionIndication_required : E1AP_ConfidentialityProtectionIndication_not_needed; - //pdu->teId = session->gtp_teid; - pdu->numDRB2Setup = 1; // One DRB per PDU Session. TODO: Remove hardcoding - DRB_nGRAN_to_setup_t *drb = &pdu->DRBnGRanList[0]; - int drb_id = 2; - drb->id = drb_id; - - drb->defaultDRB = E1AP_DefaultDRB_false; - drb->sDAP_Header_UL = !(rrc->configuration.enable_sdap); - drb->sDAP_Header_DL = !(rrc->configuration.enable_sdap); - - drb->pDCP_SN_Size_UL = E1AP_PDCP_SN_Size_s_18; - drb->pDCP_SN_Size_DL = E1AP_PDCP_SN_Size_s_18; - - drb->discardTimer = E1AP_DiscardTimer_infinity; - drb->reorderingTimer = E1AP_T_Reordering_ms0; - - drb->rLC_Mode = E1AP_RLC_Mode_rlc_am; - - drb->numCellGroups = 1; // assume one cell group associated with a DRB - - for (int k=0; k < drb->numCellGroups; k++) { - cell_group_t *cellGroup = drb->cellGroupList + k; - cellGroup->id = 0; // MCG - } - - int xid = rrc_gNB_get_next_transaction_identifier(0); - /* generate a new bearer, it will be put into internal RRC state and picked - * up later */ - generateDRB(ue, - drb_id, - &ue->pduSession[0], - rrc->configuration.enable_sdap, - rrc->security.do_drb_integrity, - rrc->security.do_drb_ciphering); - - /* associate the new bearer to it */ - ue->xids[xid] = RRC_PDUSESSION_MODIFY; - ue->pduSession[0].xid = xid; // hack: fake xid for ongoing PDU session - LOG_W(RRC, "trigger new bearer %ld for UE %04x xid %d\n", drb->id, ue->rnti, xid); - sctp_assoc_t assoc_id = get_existing_cuup_for_ue(rrc, ue); - rrc->cucp_cuup.bearer_context_setup(assoc_id, &bearer_req); -} - -void rrc_gNB_trigger_release_bearer(int rnti) -{ - /* get RRC and UE */ - gNB_RRC_INST *rrc = RC.nrrrc[0]; - rrc_gNB_ue_context_t *ue_context_p = rrc_gNB_get_ue_context_by_rnti_any_du(rrc, rnti); - if (ue_context_p == NULL) { - LOG_E(RRC, "unknown UE RNTI %04x\n", rnti); - return; - } - gNB_RRC_UE_t *ue = &ue_context_p->ue_context; - - if (ue->established_drbs[1].status == DRB_INACTIVE) { - LOG_E(RRC, "no second bearer, aborting\n"); - return; - } - - // don't use E1: bearer release is not implemented, call directly - // into PDCP/SDAP and then send corresponding message via F1 - - int drb_id = 2; - ue->established_drbs[1].status = DRB_INACTIVE; - ue->DRB_ReleaseList = calloc(1, sizeof(*ue->DRB_ReleaseList)); - AssertFatal(ue->DRB_ReleaseList != NULL, "out of memory\n"); - NR_DRB_Identity_t *asn1_drb = malloc(sizeof(*asn1_drb)); - AssertFatal(asn1_drb != NULL, "out of memory\n"); - int idx = 0; - NR_DRB_ToAddModList_t *drb_list = createDRBlist(ue, false); - while (idx < drb_list->list.count) { - const NR_DRB_ToAddMod_t *drbc = drb_list->list.array[idx]; - if (drbc->drb_Identity == drb_id) - break; - ++idx; - } - if (idx < drb_list->list.count) { - nr_pdcp_release_drb(rnti, drb_id); - asn_sequence_del(&drb_list->list, idx, 1); - } - *asn1_drb = drb_id; - asn1cSeqAdd(&ue->DRB_ReleaseList->list, asn1_drb); - - f1ap_drb_to_be_released_t drbs_to_be_released[1] = {{.rb_id = drb_id}}; - f1_ue_data_t ue_data = cu_get_f1_ue_data(ue->rrc_ue_id); - RETURN_IF_INVALID_ASSOC_ID(ue_data); - 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? */ - .srbs_to_be_setup_length = 0, - .srbs_to_be_setup = NULL, - .drbs_to_be_setup_length = 0, - .drbs_to_be_setup = NULL, - .drbs_to_be_released_length = 1, - .drbs_to_be_released = drbs_to_be_released, - }; - rrc->mac_rrc.ue_context_modification_request(ue_data.du_assoc_id, &ue_context_modif_req); -} - int rrc_gNB_generate_pcch_msg(sctp_assoc_t assoc_id, const NR_SIB1_t *sib1, uint32_t tmsi, uint8_t paging_drx) { instance_t instance = 0; -- GitLab