From c194956da34fb8ca686bbf4b738e7fa327e54720 Mon Sep 17 00:00:00 2001 From: Louis Adrien Dufrene <swmt1841@yd-CZC6227X3N.orangeai.mey> Date: Tue, 20 Nov 2018 14:15:50 +0100 Subject: [PATCH] RRC timer thres removed from UE context and added to eNB RRC context, value 0 of thres equivalent to infinity --- common/utils/T/tracer/gui/x.c | 2 +- openair2/COMMON/rrc_messages_types.h | 1 + openair2/ENB_APP/enb_config.c | 4 +++- openair2/RRC/LTE/rrc_defs.h | 2 +- openair2/RRC/LTE/rrc_eNB.c | 20 ++++++++++++-------- 5 files changed, 18 insertions(+), 11 deletions(-) diff --git a/common/utils/T/tracer/gui/x.c b/common/utils/T/tracer/gui/x.c index 3176810ec3c..71bd8054556 100644 --- a/common/utils/T/tracer/gui/x.c +++ b/common/utils/T/tracer/gui/x.c @@ -135,7 +135,7 @@ x_image *x_create_image(x_connection *_x, unsigned char *data, if (ret == NULL) OOM; template.class = TrueColor; - template.depth = 32; + template.depth = 24; template.red_mask = 0xff0000; template.green_mask = 0x00ff00; template.blue_mask = 0x0000ff; diff --git a/openair2/COMMON/rrc_messages_types.h b/openair2/COMMON/rrc_messages_types.h index aeacd09fdee..d7f6a67d78a 100644 --- a/openair2/COMMON/rrc_messages_types.h +++ b/openair2/COMMON/rrc_messages_types.h @@ -102,6 +102,7 @@ typedef struct RrcConfigurationReq_s { uint8_t mnc_digit_length[PLMN_LIST_MAX_SIZE]; uint8_t num_plmn; + uint32_t rrc_inactivity_timer_thres; // for testing, maybe change later paging_drx_t default_drx; int16_t nb_cc; diff --git a/openair2/ENB_APP/enb_config.c b/openair2/ENB_APP/enb_config.c index efbceb49bd9..cde9364f2b3 100644 --- a/openair2/ENB_APP/enb_config.c +++ b/openair2/ENB_APP/enb_config.c @@ -579,8 +579,10 @@ int RCconfig_RRC(MessageDef *msg_p, uint32_t i, eNB_RRC_INST *rrc) { for (int I = 0; I < sizeof(PLMNParams) / sizeof(paramdef_t); ++I) PLMNParams[I].chkPptr = &(config_check_PLMNParams[I]); + RRC_CONFIGURATION_REQ (msg_p).rrc_inactivity_timer_thres = 10000; + RRC_CONFIGURATION_REQ (msg_p).cell_identity = enb_id; - RRC_CONFIGURATION_REQ(msg_p).tac = *ENBParamList.paramarray[i][ENB_TRACKING_AREA_CODE_IDX].uptr; + RRC_CONFIGURATION_REQ (msg_p).tac = *ENBParamList.paramarray[i][ENB_TRACKING_AREA_CODE_IDX].uptr; AssertFatal(!ENBParamList.paramarray[i][ENB_MOBILE_COUNTRY_CODE_IDX_OLD].strptr && !ENBParamList.paramarray[i][ENB_MOBILE_NETWORK_CODE_IDX_OLD].strptr, "It seems that you use an old configuration file. Please change the existing\n" diff --git a/openair2/RRC/LTE/rrc_defs.h b/openair2/RRC/LTE/rrc_defs.h index 1d9e4479846..9a84b8e8e72 100644 --- a/openair2/RRC/LTE/rrc_defs.h +++ b/openair2/RRC/LTE/rrc_defs.h @@ -601,7 +601,7 @@ typedef struct eNB_RRC_UE_s { uint32_t ue_reestablishment_timer_thres; /* RRC inactivity timer: on timeout, should release RRC connection for inactivity on all E-RABs */ uint32_t ue_rrc_inactivity_timer; - uint32_t ue_rrc_inactivity_timer_thres; + // uint32_t ue_rrc_inactivity_timer_thres; uint8_t e_rab_release_command_flag; int8_t reestablishment_xid; } eNB_RRC_UE_t; diff --git a/openair2/RRC/LTE/rrc_eNB.c b/openair2/RRC/LTE/rrc_eNB.c index 3f3248aacae..5ebc462468a 100644 --- a/openair2/RRC/LTE/rrc_eNB.c +++ b/openair2/RRC/LTE/rrc_eNB.c @@ -835,7 +835,8 @@ rrc_eNB_free_UE( return; } - if((ue_context_pP->ue_context.ue_rrc_inactivity_timer >= ue_context_pP->ue_context.ue_rrc_inactivity_timer_thres) && + // if((ue_context_pP->ue_context.ue_rrc_inactivity_timer >= ue_context_pP->ue_context.ue_rrc_inactivity_timer_thres) && + if((ue_context_pP->ue_context.ue_rrc_inactivity_timer >= RC.rrc[enb_mod_idP]->configuration.rrc_inactivity_timer_thres) && (mac_eNB_get_rrc_status(enb_mod_idP, rnti) >= RRC_CONNECTED)) { LOG_I(RRC, "[eNB %d] S1AP_UE_CONTEXT_RELEASE_REQ sent for RNTI %x, cause 20, user inactivity\n", enb_mod_idP, @@ -1008,7 +1009,7 @@ rrc_eNB_process_RRCConnectionSetupComplete( ue_context_pP->ue_context.Srb1.Active = 1; ue_context_pP->ue_context.Status = RRC_CONNECTED; ue_context_pP->ue_context.ue_rrc_inactivity_timer = 1; // set rrc inactivity when UE goes into RRC_CONNECTED - ue_context_pP->ue_context.ue_rrc_inactivity_timer_thres = 10000; // The value should come from config file + // ue_context_pP->ue_context.ue_rrc_inactivity_timer_thres = 10000; // The value should come from config file T(T_ENB_RRC_CONNECTION_SETUP_COMPLETE, T_INT(ctxt_pP->module_id), T_INT(ctxt_pP->frame), T_INT(ctxt_pP->subframe), T_INT(ctxt_pP->rnti)); @@ -1314,7 +1315,7 @@ rrc_eNB_process_RRCConnectionReestablishmentComplete( uint8_t next_xid = rrc_eNB_get_next_transaction_identifier(ctxt_pP->module_id); ue_context_pP->ue_context.Status = RRC_CONNECTED; ue_context_pP->ue_context.ue_rrc_inactivity_timer = 1; // set rrc inactivity when UE goes into RRC_CONNECTED - ue_context_pP->ue_context.ue_rrc_inactivity_timer_thres = 10000; // The value should come from config file + // ue_context_pP->ue_context.ue_rrc_inactivity_timer_thres = 10000; // The value should come from config file ue_context_pP->ue_context.reestablishment_xid = next_xid; SRB_configList2 = &ue_context_pP->ue_context.SRB_configList2[xid]; @@ -7379,9 +7380,10 @@ rrc_rx_tx( pthread_mutex_unlock(&rrc_release_freelist); - if (ue_context_p->ue_context.ue_rrc_inactivity_timer > 0) { - // ue_context_p->ue_context.ue_rrc_inactivity_timer++; // (un)comment this line to (de)activate the RRC inactivity timer - if (ue_context_p->ue_context.ue_rrc_inactivity_timer >= ue_context_p->ue_context.ue_rrc_inactivity_timer_thres) { + if ((ue_context_p->ue_context.ue_rrc_inactivity_timer > 0) && (RC.rrc[enb_mod_idP]->configuration.rrc_inactivity_timer_thres > 0)) { + ue_context_p->ue_context.ue_rrc_inactivity_timer++; // (un)comment this line to (de)activate the RRC inactivity timer + //if (ue_context_p->ue_context.ue_rrc_inactivity_timer >= ue_context_p->ue_context.ue_rrc_inactivity_timer_thres) { + if (ue_context_p->ue_context.ue_rrc_inactivity_timer >= RC.rrc[ctxt_pP->module_id]->configuration.rrc_inactivity_timer_thres){ LOG_I(RRC, "Removing UE %x instance because of rrc_inactivity_timer timeout\n", ue_context_p->ue_context.rnti); ue_to_be_removed = ue_context_p; @@ -7422,7 +7424,8 @@ rrc_rx_tx( if (ue_to_be_removed) { if ((ue_to_be_removed->ue_context.ul_failure_timer >= 20000) || - (ue_to_be_removed->ue_context.ue_rrc_inactivity_timer >= ue_to_be_removed->ue_context.ue_rrc_inactivity_timer_thres)) { + (ue_to_be_removed->ue_context.ue_rrc_inactivity_timer >= RC.rrc[ctxt_pP->module_id]->configuration.rrc_inactivity_timer_thres)) { + //(ue_to_be_removed->ue_context.ue_rrc_inactivity_timer >= ue_to_be_removed->ue_context.ue_rrc_inactivity_timer_thres)) { ue_to_be_removed->ue_context.ue_release_timer_s1 = 1; ue_to_be_removed->ue_context.ue_release_timer_thres_s1 = 100; ue_to_be_removed->ue_context.ue_release_timer = 0; @@ -7435,7 +7438,8 @@ rrc_rx_tx( ue_to_be_removed->ue_context.ul_failure_timer = 0; } - if (ue_to_be_removed->ue_context.ue_rrc_inactivity_timer >= ue_to_be_removed->ue_context.ue_rrc_inactivity_timer_thres) { + //if (ue_to_be_removed->ue_context.ue_rrc_inactivity_timer >= ue_to_be_removed->ue_context.ue_rrc_inactivity_timer_thres) { + if (ue_to_be_removed->ue_context.ue_rrc_inactivity_timer >= RC.rrc[ctxt_pP->module_id]->configuration.rrc_inactivity_timer_thres) { ue_to_be_removed->ue_context.ue_rrc_inactivity_timer = 0; //reset timer after S1 command UE context release request is sent } } -- GitLab