From d3acdac8c9ae84127df54bebe5588e7d713b7705 Mon Sep 17 00:00:00 2001 From: winckel <winckel@eurecom.fr> Date: Wed, 20 Nov 2013 12:58:29 +0000 Subject: [PATCH] Changed UE id for first S1AP message. git-svn-id: http://svn.eurecom.fr/openair4G/trunk@4461 818b1a75-f10b-46b9-bf7c-635c3b92a50f --- openair-cn/S1AP/s1ap_eNB_nas_procedures.c | 6 +++--- openair-cn/S1AP/s1ap_eNB_ue_context.h | 4 ++-- openair2/COMMON/s1ap_messages_types.h | 4 ++-- openair2/RRC/LITE/defs.h | 3 +++ openair2/RRC/LITE/rrc_eNB.c | 13 ++++++++++++- 5 files changed, 22 insertions(+), 8 deletions(-) diff --git a/openair-cn/S1AP/s1ap_eNB_nas_procedures.c b/openair-cn/S1AP/s1ap_eNB_nas_procedures.c index ad8b0ae860..4ea8407067 100644 --- a/openair-cn/S1AP/s1ap_eNB_nas_procedures.c +++ b/openair-cn/S1AP/s1ap_eNB_nas_procedures.c @@ -122,9 +122,9 @@ int s1ap_eNB_handle_nas_first_req( DevAssert(ue_desc_p != NULL); /* Keep a reference to the selected MME */ - ue_desc_p->mme_ref = mme_desc_p; - ue_desc_p->rnti = s1ap_nas_first_req_p->rnti; - ue_desc_p->eNB_instance = instance_p; + ue_desc_p->mme_ref = mme_desc_p; + ue_desc_p->ue_initial_id = s1ap_nas_first_req_p->ue_initial_id; + ue_desc_p->eNB_instance = instance_p; do { struct s1ap_eNB_ue_context_s *collision_p; diff --git a/openair-cn/S1AP/s1ap_eNB_ue_context.h b/openair-cn/S1AP/s1ap_eNB_ue_context.h index 87cffac184..121bab37c1 100644 --- a/openair-cn/S1AP/s1ap_eNB_ue_context.h +++ b/openair-cn/S1AP/s1ap_eNB_ue_context.h @@ -60,8 +60,8 @@ typedef struct s1ap_eNB_ue_context_s { */ unsigned eNB_ue_s1ap_id:24; - /* RNTI of the UE as used on LTE-Uu interface */ - uint16_t rnti; + /* UE id for initial connection to S1AP */ + uint16_t ue_initial_id; /* Uniquely identifies the UE within MME. Encoded on 32 bits. */ uint32_t mme_ue_s1ap_id; diff --git a/openair2/COMMON/s1ap_messages_types.h b/openair2/COMMON/s1ap_messages_types.h index d6028d3360..f44fbe9992 100644 --- a/openair2/COMMON/s1ap_messages_types.h +++ b/openair2/COMMON/s1ap_messages_types.h @@ -222,8 +222,8 @@ typedef struct s1ap_register_eNB_s { * will be the unique identifier used between RRC and S1AP. */ typedef struct s1ap_nas_first_req_s { - /* RNTI of the mobile */ - uint16_t rnti; + /* UE id for initial connection to S1AP */ + uint16_t ue_initial_id; /* Establishment cause as sent by UE */ rrc_establishment_cause_t establishment_cause; diff --git a/openair2/RRC/LITE/defs.h b/openair2/RRC/LITE/defs.h index 35330c437e..ecf35ed4f6 100644 --- a/openair2/RRC/LITE/defs.h +++ b/openair2/RRC/LITE/defs.h @@ -167,6 +167,9 @@ typedef struct{ UE_S_TMSI Initialue_identity_s_TMSI; EstablishmentCause_t establishment_cause; + /* UE id for initial connection to S1AP */ + uint16_t ue_initial_id; + /* Information from S1AP initial_context_setup_req */ unsigned eNB_ue_s1ap_id :24; /* Number of e_rab to be setup in the list */ diff --git a/openair2/RRC/LITE/rrc_eNB.c b/openair2/RRC/LITE/rrc_eNB.c index c36785f2f4..94be7e67e6 100644 --- a/openair2/RRC/LITE/rrc_eNB.c +++ b/openair2/RRC/LITE/rrc_eNB.c @@ -450,6 +450,16 @@ static uint8_t get_next_rrc_transaction_identifier(u8 Mod_id) return rrc_transaction_identifier[Mod_id]; } +static uint16_t get_next_ue_initial_id(u8 Mod_id) +{ + static uint16_t ue_initial_id[NUMBER_OF_eNB_MAX]; + + ue_initial_id[Mod_id] = ue_initial_id[Mod_id] + 1; + + return ue_initial_id[Mod_id]; +} + + static u8 get_next_UE_index (u8 Mod_id, u8 *UE_identity) { u8 i, first_index = 255, reg = 0; @@ -1218,7 +1228,8 @@ void rrc_eNB_process_RRCConnectionSetupComplete (u8 Mod_id, MessageDef *message_p; message_p = itti_alloc_new_message (TASK_RRC_ENB, S1AP_NAS_FIRST_REQ); - S1AP_NAS_FIRST_REQ (message_p).rnti = eNB_mac_inst[Mod_id].UE_template[UE_index].rnti; // TODO check if this is the correct id to use + eNB_rrc_inst[Mod_id].Info.UE[UE_index].ue_initial_id = get_next_ue_initial_id(Mod_id); + S1AP_NAS_FIRST_REQ (message_p).ue_initial_id = eNB_rrc_inst[Mod_id].Info.UE[UE_index].ue_initial_id; /* Assume that cause is coded in the same way in RRC and S1ap, just check that the value is in S1ap range */ DevCheck(eNB_rrc_inst[Mod_id].Info.UE[UE_index].establishment_cause < RRC_CAUSE_LAST, eNB_rrc_inst[Mod_id].Info.UE[UE_index].establishment_cause, RRC_CAUSE_LAST, Mod_id); -- GitLab