rrc_gNB.c 14.5 KB
Newer Older
WEI-TAI CHEN's avatar
WEI-TAI CHEN committed
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
/*
 * Licensed to the OpenAirInterface (OAI) Software Alliance under one or more
 * contributor license agreements.  See the NOTICE file distributed with
 * this work for additional information regarding copyright ownership.
 * The OpenAirInterface Software Alliance licenses this file to You under
 * the OAI Public License, Version 1.1  (the "License"); you may not use this file
 * except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.openairinterface.org/?page_id=698
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 *-------------------------------------------------------------------------------
 * For more information about the OpenAirInterface (OAI) Software Alliance:
 *      contact@openairinterface.org
 */

/*! \file rrc_gNB.c
 * \brief rrc procedures for gNB
 * \author Navid Nikaein and  Raymond Knopp , WEI-TAI CHEN
 * \date 2011 - 2014 , 2018
 * \version 1.0
WEI-TAI CHEN's avatar
WEI-TAI CHEN committed
27 28
 * \company Eurecom, NTUST
 * \email: navid.nikaein@eurecom.fr and raymond.knopp@eurecom.fr, kroempa@gmail.com
WEI-TAI CHEN's avatar
WEI-TAI CHEN committed
29
 */
30
#define RRC_GNB_C
WEI-TAI CHEN's avatar
WEI-TAI CHEN committed
31 32
#define RRC_GNB_C

33 34
#include "nr_rrc_defs.h"
#include "nr_rrc_extern.h"
WEI-TAI CHEN's avatar
WEI-TAI CHEN committed
35 36 37 38 39 40
#include "assertions.h"
#include "common/ran_context.h"
#include "asn1_conversions.h"

#include "RRC/L2_INTERFACE/openair_rrc_L2_interface.h"
#include "LAYER2/RLC/rlc.h"
41
#include "LAYER2/NR_MAC_gNB/mac_proto.h"
WEI-TAI CHEN's avatar
WEI-TAI CHEN committed
42 43
#include "UTIL/LOG/log.h"
#include "COMMON/mac_rrc_primitives.h"
44 45 46 47 48 49
#include "RRC/NR/MESSAGES/asn1_msg.h"


#include "NR_BCCH-BCH-Message.h"
#include "NR_UL-DCCH-Message.h"
#include "NR_DL-DCCH-Message.h"
50
#include "NR_CellGroupConfig.h"
51
#include "NR_MeasResults.h"
WEI-TAI CHEN's avatar
WEI-TAI CHEN committed
52 53 54 55 56 57

#include "rlc.h"
#include "rrc_eNB_UE_context.h"
#include "platform_types.h"
#include "msc.h"
#include "UTIL/LOG/vcd_signal_dumper.h"
58

WEI-TAI CHEN's avatar
WEI-TAI CHEN committed
59 60
#include "T.h"

61 62 63
//#if defined(Rel10) || defined(Rel14)
#include "MeasResults.h"
//#endif
WEI-TAI CHEN's avatar
WEI-TAI CHEN committed
64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82

#include "RRC/NAS/nas_config.h"
#include "RRC/NAS/rb_config.h"
#include "OCG.h"
#include "OCG_extern.h"

#if defined(ENABLE_SECURITY)
#   include "UTIL/OSA/osa_defs.h"
#endif

#if defined(ENABLE_USE_MME)
#   include "rrc_eNB_S1AP.h"
#   include "rrc_eNB_GTPV1U.h"
#   if defined(ENABLE_ITTI)
#   else
#      include "../../S1AP/s1ap_eNB.h"
#   endif
#endif

83
#include "pdcp.h"
WEI-TAI CHEN's avatar
WEI-TAI CHEN committed
84 85 86 87 88
#include "gtpv1u_eNB_task.h"

#if defined(ENABLE_ITTI)
#   include "intertask_interface.h"
#endif
89

WEI-TAI CHEN's avatar
WEI-TAI CHEN committed
90 91 92 93
#if ENABLE_RAL
#   include "rrc_eNB_ral.h"
#endif

94
#include "SIMULATION/TOOLS/sim.h" // for taus
WEI-TAI CHEN's avatar
WEI-TAI CHEN committed
95 96 97

//#define XER_PRINT

98

WEI-TAI CHEN's avatar
WEI-TAI CHEN committed
99 100 101 102 103
extern RAN_CONTEXT_t RC;

#ifdef PHY_EMUL
extern EMULATION_VARS              *Emul_vars;
#endif
WEI-TAI CHEN's avatar
WEI-TAI CHEN committed
104 105
//extern eNB_MAC_INST                *eNB_mac_inst;
//extern UE_MAC_INST                 *UE_mac_inst;
WEI-TAI CHEN's avatar
WEI-TAI CHEN committed
106 107 108 109 110 111
#ifdef BIGPHYSAREA
extern void*                        bigphys_malloc(int);
#endif

extern uint16_t                     two_tier_hexagonal_cellIds[7];

WEI-TAI CHEN's avatar
WEI-TAI CHEN committed
112
mui_t                               rrc_gNB_mui = 0;
WEI-TAI CHEN's avatar
WEI-TAI CHEN committed
113

WEI-TAI CHEN's avatar
WEI-TAI CHEN committed
114 115
///---------------------------------------------------------------------------------------------------------------///
///---------------------------------------------------------------------------------------------------------------///
WEI-TAI CHEN's avatar
WEI-TAI CHEN committed
116

117 118
void openair_nr_rrc_on(const protocol_ctxt_t* const ctxt_pP){
  
WEI-TAI CHEN's avatar
WEI-TAI CHEN committed
119
  int            CC_id;
120 121 122 123 124 125 126 127
  LOG_I(NR_RRC, PROTOCOL_NR_RRC_CTXT_FMT" gNB:OPENAIR NR RRC IN....\n",PROTOCOL_NR_RRC_CTXT_ARGS(ctxt_pP));

  for (CC_id = 0; CC_id < MAX_NUM_CCs; CC_id++) {
    rrc_config_nr_buffer (&RC.nrrrc[ctxt_pP->module_id]->carrier[CC_id].SI, BCCH, 1);
    RC.nrrrc[ctxt_pP->module_id]->carrier[CC_id].SI.Active = 1;
    rrc_config_nr_buffer (&RC.nrrrc[ctxt_pP->module_id]->carrier[CC_id].Srb0, CCCH, 1);
    RC.nrrrc[ctxt_pP->module_id]->carrier[CC_id].Srb0.Active = 1;
  }
WEI-TAI CHEN's avatar
WEI-TAI CHEN committed
128 129 130

}

WEI-TAI CHEN's avatar
WEI-TAI CHEN committed
131 132 133
///---------------------------------------------------------------------------------------------------------------///
///---------------------------------------------------------------------------------------------------------------///

134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159
void rrc_gNB_process_SgNBAdditionRequest( 
     const protocol_ctxt_t  *const ctxt_pP,
     rrc_gNB_ue_context_t   *ue_context_pP 
     ){

  rrc_gNB_generate_SgNBAdditionRequestAcknowledge(ctxt_pP,ue_context_pP);
}

void rrc_gNB_generate_SgNBAdditionRequestAcknowledge( 
     const protocol_ctxt_t  *const ctxt_pP,
     rrc_gNB_ue_context_t   *const ue_context_pP
     ){


}

///---------------------------------------------------------------------------------------------------------------///
///---------------------------------------------------------------------------------------------------------------///

static void init_NR_SI(const protocol_ctxt_t* const ctxt_pP,
                       const int              CC_id
                       #if defined(ENABLE_ITTI)
                       ,
                       gNB_RrcConfigurationReq * configuration
                       #endif
                      ){
160
  //int                                 i;
WEI-TAI CHEN's avatar
WEI-TAI CHEN committed
161

WEI-TAI CHEN's avatar
WEI-TAI CHEN committed
162
  LOG_D(RRC,"%s()\n\n\n\n",__FUNCTION__);
WEI-TAI CHEN's avatar
WEI-TAI CHEN committed
163

WEI-TAI CHEN's avatar
WEI-TAI CHEN committed
164
  // copy basic parameters
165
  RC.nrrrc[ctxt_pP->module_id]->carrier[CC_id].physCellId      = configuration->Nid_cell[CC_id];
166 167 168
  RC.nrrrc[ctxt_pP->module_id]->carrier[CC_id].p_gNB           = configuration->nb_antenna_ports[CC_id];
  RC.nrrrc[ctxt_pP->module_id]->carrier[CC_id].Ncp             = configuration->DL_prefix_type[CC_id];
  RC.nrrrc[ctxt_pP->module_id]->carrier[CC_id].Ncp_UL          = configuration->UL_prefix_type[CC_id];
169 170
  RC.nrrrc[ctxt_pP->module_id]->carrier[CC_id].dl_CarrierFreq  = configuration->downlink_frequency[CC_id];
  RC.nrrrc[ctxt_pP->module_id]->carrier[CC_id].ul_CarrierFreq  = configuration->downlink_frequency[CC_id]+ configuration->uplink_frequency_offset[CC_id];
WEI-TAI CHEN's avatar
WEI-TAI CHEN committed
171 172
  
  ///MIB
173 174 175
  RC.nrrrc[ctxt_pP->module_id]->carrier[CC_id].sizeof_MIB      = 0;
  RC.nrrrc[ctxt_pP->module_id]->carrier[CC_id].MIB             = (uint8_t*) malloc16(4);
  RC.nrrrc[ctxt_pP->module_id]->carrier[CC_id].sizeof_MIB      = do_MIB_NR(&RC.nrrrc[ctxt_pP->module_id]->carrier[CC_id],0,
WEI-TAI CHEN's avatar
WEI-TAI CHEN committed
176
                                                                            #ifdef ENABLE_ITTI
177
                                                                            configuration->MIB_ssb_SubcarrierOffset[CC_id],
WEI-TAI CHEN's avatar
WEI-TAI CHEN committed
178
                                                                            configuration->pdcch_ConfigSIB1[CC_id],
179 180
                                                                            configuration->MIB_subCarrierSpacingCommon[CC_id],
                                                                            configuration->MIB_dmrs_TypeA_Position[CC_id]
WEI-TAI CHEN's avatar
WEI-TAI CHEN committed
181 182 183 184
                                                                            #else
                                                                            0,0,15,2
                                                                            #endif
                                                                            );
WEI-TAI CHEN's avatar
WEI-TAI CHEN committed
185

186 187 188 189 190 191
  do_SERVINGCELLCONFIGCOMMON(ctxt_pP->module_id,
                             CC_id
                             #if defined(ENABLE_ITTI)
                             ,configuration
                             #endif
                             );
WEI-TAI CHEN's avatar
WEI-TAI CHEN committed
192 193
  
  LOG_I(NR_RRC,"Done init_NR_SI\n");
194 195
  
  
196 197 198 199 200 201 202 203 204
  rrc_mac_config_req_gNB(ctxt_pP->module_id,
                         CC_id,
                         RC.nrrrc[ctxt_pP->module_id]->carrier[CC_id].p_gNB,
                         configuration->eutra_band[CC_id],
                         RC.nrrrc[ctxt_pP->module_id]->carrier[CC_id].dl_CarrierFreq,
                         configuration->N_RB_DL[CC_id],
                         (NR_BCCH_BCH_Message_t *)&RC.nrrrc[ctxt_pP->module_id]->carrier[CC_id].mib,
                         (NR_ServingCellConfigCommon_t *)&RC.nrrrc[ctxt_pP->module_id]->carrier[CC_id].servingcellconfigcommon
                         );
WEI-TAI CHEN's avatar
WEI-TAI CHEN committed
205
}
WEI-TAI CHEN's avatar
WEI-TAI CHEN committed
206 207


WEI-TAI CHEN's avatar
WEI-TAI CHEN committed
208 209 210
char openair_rrc_gNB_configuration(const module_id_t gnb_mod_idP, gNB_RrcConfigurationReq* configuration){
  protocol_ctxt_t      ctxt;
  int                  CC_id;
WEI-TAI CHEN's avatar
WEI-TAI CHEN committed
211

212
  PROTOCOL_CTXT_SET_BY_MODULE_ID(&ctxt, gnb_mod_idP, GNB_FLAG_YES, NOT_A_RNTI, 0, 0,gnb_mod_idP);
213 214 215
  LOG_I(NR_RRC,
        PROTOCOL_NR_RRC_CTXT_FMT" Init...\n",
        PROTOCOL_NR_RRC_CTXT_ARGS(&ctxt));
WEI-TAI CHEN's avatar
WEI-TAI CHEN committed
216

WEI-TAI CHEN's avatar
WEI-TAI CHEN committed
217
  #if OCP_FRAMEWORK
218 219
    while ( RC.nrrrc[gnb_mod_idP] == NULL ) {
      LOG_E(NR_RRC, "RC.nrrrc not yet initialized, waiting 1 second\n");
WEI-TAI CHEN's avatar
WEI-TAI CHEN committed
220
      sleep(1);
WEI-TAI CHEN's avatar
WEI-TAI CHEN committed
221
    }
WEI-TAI CHEN's avatar
WEI-TAI CHEN committed
222
  #endif 
223
    AssertFatal(RC.nrrrc[gnb_mod_idP] != NULL, "RC.nrrrc not initialized!");
WEI-TAI CHEN's avatar
WEI-TAI CHEN committed
224 225 226 227
    AssertFatal(NUMBER_OF_UE_MAX < (module_id_t)0xFFFFFFFFFFFFFFFF, " variable overflow");
  #ifdef ENABLE_ITTI
    AssertFatal(configuration!=NULL,"configuration input is null\n");
  #endif
WEI-TAI CHEN's avatar
WEI-TAI CHEN committed
228

229
  RC.nrrrc[ctxt.module_id]->Nb_ue = 0;
WEI-TAI CHEN's avatar
WEI-TAI CHEN committed
230

WEI-TAI CHEN's avatar
WEI-TAI CHEN committed
231
  for (CC_id = 0; CC_id < MAX_NUM_CCs; CC_id++) {
232
    RC.nrrrc[ctxt.module_id]->carrier[CC_id].Srb0.Active = 0;
WEI-TAI CHEN's avatar
WEI-TAI CHEN committed
233 234
  }

235
  uid_linear_allocator_init(&RC.nrrrc[ctxt.module_id]->uid_allocator);
236
  RB_INIT(&RC.nrrrc[ctxt.module_id]->rrc_ue_head);
WEI-TAI CHEN's avatar
WEI-TAI CHEN committed
237

238 239
  RC.nrrrc[ctxt.module_id]->initial_id2_s1ap_ids = hashtable_create (NUMBER_OF_UE_MAX * 2, NULL, NULL);
  RC.nrrrc[ctxt.module_id]->s1ap_id2_s1ap_ids    = hashtable_create (NUMBER_OF_UE_MAX * 2, NULL, NULL);
WEI-TAI CHEN's avatar
WEI-TAI CHEN committed
240

241
  memcpy(&RC.nrrrc[ctxt.module_id]->configuration,configuration,sizeof(gNB_RrcConfigurationReq));
WEI-TAI CHEN's avatar
WEI-TAI CHEN committed
242

WEI-TAI CHEN's avatar
WEI-TAI CHEN committed
243
  /// System Information INIT
WEI-TAI CHEN's avatar
WEI-TAI CHEN committed
244

245
  LOG_I(NR_RRC, PROTOCOL_NR_RRC_CTXT_FMT" Checking release \n",PROTOCOL_NR_RRC_CTXT_ARGS(&ctxt));
WEI-TAI CHEN's avatar
WEI-TAI CHEN committed
246

WEI-TAI CHEN's avatar
WEI-TAI CHEN committed
247
  #ifdef CBA
WEI-TAI CHEN's avatar
WEI-TAI CHEN committed
248

WEI-TAI CHEN's avatar
WEI-TAI CHEN committed
249 250
  for (CC_id = 0; CC_id < MAX_NUM_CCs; CC_id++) {
    for (j = 0; j < NUM_MAX_CBA_GROUP; j++) {
251
      RC.nrrrc[ctxt.module_id]->carrier[CC_id].cba_rnti[j] = CBA_OFFSET + j;
WEI-TAI CHEN's avatar
WEI-TAI CHEN committed
252
    }
WEI-TAI CHEN's avatar
WEI-TAI CHEN committed
253

254 255
    if (RC.nrrrc[ctxt.module_id]->carrier[CC_id].num_active_cba_groups > NUM_MAX_CBA_GROUP) {
      RC.nrrrc[ctxt.module_id]->carrier[CC_id].num_active_cba_groups = NUM_MAX_CBA_GROUP;
WEI-TAI CHEN's avatar
WEI-TAI CHEN committed
256
    }
WEI-TAI CHEN's avatar
WEI-TAI CHEN committed
257

WEI-TAI CHEN's avatar
WEI-TAI CHEN committed
258
    LOG_D(NR_RRC,
259 260
          PROTOCOL_NR_RRC_CTXT_FMT" Initialization of 4 cba_RNTI values (%x %x %x %x) num active groups %d\n",
          PROTOCOL_NR_RRC_CTXT_ARGS(&ctxt),
261 262 263 264 265
          gnb_mod_idP, RC.nrrrc[ctxt.module_id]->carrier[CC_id].cba_rnti[0],
          RC.nrrrc[ctxt.module_id]->carrier[CC_id].cba_rnti[1],
          RC.nrrrc[ctxt.module_id]->carrier[CC_id].cba_rnti[2],
          RC.nrrrc[ctxt.module_id]->carrier[CC_id].cba_rnti[3],
          RC.nrrrc[ctxt.module_id]->carrier[CC_id].num_active_cba_groups);
WEI-TAI CHEN's avatar
WEI-TAI CHEN committed
266
  }
WEI-TAI CHEN's avatar
WEI-TAI CHEN committed
267

WEI-TAI CHEN's avatar
WEI-TAI CHEN committed
268
  #endif
WEI-TAI CHEN's avatar
WEI-TAI CHEN committed
269

WEI-TAI CHEN's avatar
WEI-TAI CHEN committed
270 271 272 273 274 275 276 277
  for (CC_id = 0; CC_id < MAX_NUM_CCs; CC_id++) {
    init_NR_SI(&ctxt,
              CC_id
              #if defined(ENABLE_ITTI)
              ,configuration
              #endif
              );
  }//END for (CC_id = 0; CC_id < MAX_NUM_CCs; CC_id++)
WEI-TAI CHEN's avatar
WEI-TAI CHEN committed
278

279
  rrc_init_nr_global_param();
WEI-TAI CHEN's avatar
WEI-TAI CHEN committed
280 281


282
  openair_nr_rrc_on(&ctxt);
WEI-TAI CHEN's avatar
WEI-TAI CHEN committed
283

WEI-TAI CHEN's avatar
WEI-TAI CHEN committed
284
  return 0;  
WEI-TAI CHEN's avatar
WEI-TAI CHEN committed
285

286
}//END openair_rrc_gNB_configuration
WEI-TAI CHEN's avatar
WEI-TAI CHEN committed
287 288


WEI-TAI CHEN's avatar
WEI-TAI CHEN committed
289 290
///---------------------------------------------------------------------------------------------------------------///
///---------------------------------------------------------------------------------------------------------------///
WEI-TAI CHEN's avatar
WEI-TAI CHEN committed
291 292
#if defined(ENABLE_ITTI)

WEI-TAI CHEN's avatar
WEI-TAI CHEN committed
293
void* rrc_gnb_task(void* args_p){
WEI-TAI CHEN's avatar
WEI-TAI CHEN committed
294 295
  MessageDef                         *msg_p;
  const char                         *msg_name_p;
WEI-TAI CHEN's avatar
WEI-TAI CHEN committed
296 297
  instance_t                         instance;
  int                                result;
WEI-TAI CHEN's avatar
WEI-TAI CHEN committed
298 299 300
  //SRB_INFO                           *srb_info_p;
  //int                                CC_id;
  //protocol_ctxt_t                    ctxt;
WEI-TAI CHEN's avatar
WEI-TAI CHEN committed
301 302 303

  itti_mark_task_ready(TASK_RRC_GNB);
  LOG_I(NR_RRC,"Entering main loop of NR_RRC message task\n");
WEI-TAI CHEN's avatar
WEI-TAI CHEN committed
304 305

  while (1) {
WEI-TAI CHEN's avatar
WEI-TAI CHEN committed
306 307
  // Wait for a message
    itti_receive_msg(TASK_RRC_GNB, &msg_p);
WEI-TAI CHEN's avatar
WEI-TAI CHEN committed
308 309 310

    msg_name_p = ITTI_MSG_NAME(msg_p);
    instance = ITTI_MSG_INSTANCE(msg_p);
WEI-TAI CHEN's avatar
WEI-TAI CHEN committed
311
    LOG_I(NR_RRC,"Received message %s\n",msg_name_p);
WEI-TAI CHEN's avatar
WEI-TAI CHEN committed
312 313 314

    switch (ITTI_MSG_ID(msg_p)) {
    case TERMINATE_MESSAGE:
WEI-TAI CHEN's avatar
WEI-TAI CHEN committed
315
      LOG_W(RRC, " *** Exiting NR_RRC thread\n");
WEI-TAI CHEN's avatar
WEI-TAI CHEN committed
316 317 318 319
      itti_exit_task();
      break;

    case MESSAGE_TEST:
320
      LOG_I(RRC, "[gNB %d] Received %s\n", instance, msg_name_p);
WEI-TAI CHEN's avatar
WEI-TAI CHEN committed
321 322 323 324 325 326 327
      break;

      /* Messages from MAC */

	    
      /* Messages from PDCP */

328
/*
WEI-TAI CHEN's avatar
WEI-TAI CHEN committed
329
#if defined(ENABLE_USE_MME)
WEI-TAI CHEN's avatar
WEI-TAI CHEN committed
330

331
      // Messages from S1AP 
WEI-TAI CHEN's avatar
WEI-TAI CHEN committed
332
    case S1AP_DOWNLINK_NAS:
333
      rrc_eNB_process_S1AP_DOWNLINK_NAS(msg_p, msg_name_p, instance, &rrc_gNB_mui);
WEI-TAI CHEN's avatar
WEI-TAI CHEN committed
334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370
      break;

    case S1AP_INITIAL_CONTEXT_SETUP_REQ:
      rrc_eNB_process_S1AP_INITIAL_CONTEXT_SETUP_REQ(msg_p, msg_name_p, instance);
      break;

    case S1AP_UE_CTXT_MODIFICATION_REQ:
      rrc_eNB_process_S1AP_UE_CTXT_MODIFICATION_REQ(msg_p, msg_name_p, instance);
      break;

    case S1AP_PAGING_IND:
      LOG_D(RRC, "[eNB %d] Received Paging message from S1AP: %s\n", instance, msg_name_p);
      rrc_eNB_process_PAGING_IND(msg_p, msg_name_p, instance);
      break;
  
    case S1AP_E_RAB_SETUP_REQ: 
      rrc_eNB_process_S1AP_E_RAB_SETUP_REQ(msg_p, msg_name_p, instance);
      LOG_D(RRC, "[eNB %d] Received the message %s\n", instance, msg_name_p);
      break;

    case S1AP_E_RAB_MODIFY_REQ:
      rrc_eNB_process_S1AP_E_RAB_MODIFY_REQ(msg_p, msg_name_p, instance);
      break;

    case S1AP_E_RAB_RELEASE_COMMAND:
      rrc_eNB_process_S1AP_E_RAB_RELEASE_COMMAND(msg_p, msg_name_p, instance);
      break;
    
    case S1AP_UE_CONTEXT_RELEASE_REQ:
      rrc_eNB_process_S1AP_UE_CONTEXT_RELEASE_REQ(msg_p, msg_name_p, instance);
      break;

    case S1AP_UE_CONTEXT_RELEASE_COMMAND:
      rrc_eNB_process_S1AP_UE_CONTEXT_RELEASE_COMMAND(msg_p, msg_name_p, instance);
      break;

    case GTPV1U_ENB_DELETE_TUNNEL_RESP:
371
      ///Nothing to do. Apparently everything is done in S1AP processing
WEI-TAI CHEN's avatar
WEI-TAI CHEN committed
372 373
      //LOG_I(RRC, "[eNB %d] Received message %s, not processed because procedure not synched\n",
      //instance, msg_name_p);
374 375 376 377
      if (rrc_eNB_get_ue_context(RC.nrrrc[instance], GTPV1U_ENB_DELETE_TUNNEL_RESP(msg_p).rnti)
          && rrc_eNB_get_ue_context(RC.nrrrc[instance], GTPV1U_ENB_DELETE_TUNNEL_RESP(msg_p).rnti)->ue_context.ue_release_timer_rrc > 0) {
        rrc_eNB_get_ue_context(RC.nrrrc[instance], GTPV1U_ENB_DELETE_TUNNEL_RESP(msg_p).rnti)->ue_context.ue_release_timer_rrc =
        rrc_eNB_get_ue_context(RC.nrrrc[instance], GTPV1U_ENB_DELETE_TUNNEL_RESP(msg_p).rnti)->ue_context.ue_release_timer_thres_rrc;
WEI-TAI CHEN's avatar
WEI-TAI CHEN committed
378 379 380
      }
      break;

WEI-TAI CHEN's avatar
WEI-TAI CHEN committed
381
#endif
382
*/
383
    /* Messages from gNB app */
WEI-TAI CHEN's avatar
WEI-TAI CHEN committed
384 385 386
    case NRRRC_CONFIGURATION_REQ:
      LOG_I(NR_RRC, "[gNB %d] Received %s : %p\n", instance, msg_name_p,&NRRRC_CONFIGURATION_REQ(msg_p));
      openair_rrc_gNB_configuration(GNB_INSTANCE_TO_MODULE_ID(instance), &NRRRC_CONFIGURATION_REQ(msg_p));
WEI-TAI CHEN's avatar
WEI-TAI CHEN committed
387 388 389
      break;

    default:
WEI-TAI CHEN's avatar
WEI-TAI CHEN committed
390
      LOG_E(NR_RRC, "[gNB %d] Received unexpected message %s\n", instance, msg_name_p);
WEI-TAI CHEN's avatar
WEI-TAI CHEN committed
391 392 393 394 395 396 397 398
      break;
    }

    result = itti_free(ITTI_MSG_ORIGIN_ID(msg_p), msg_p);
    AssertFatal(result == EXIT_SUCCESS, "Failed to free memory (%d)!\n", result);
    msg_p = NULL;
  }
}
WEI-TAI CHEN's avatar
WEI-TAI CHEN committed
399 400

#endif //END #if defined(ENABLE_ITTI)