Commit 02400771 authored by Robert Schmidt's avatar Robert Schmidt

Check type of node using NODE_IS_CU/DU/MONOLITHIC macros

parent f0fced85
...@@ -44,4 +44,8 @@ typedef enum { ...@@ -44,4 +44,8 @@ typedef enum {
ngran_gNB_DU = 7 ngran_gNB_DU = 7
} ngran_node_t; } ngran_node_t;
#define NODE_IS_MONOLITHIC(nOdE_TyPe) ((nOdE_TyPe) == ngran_eNB || (nOdE_TyPe) == ngran_ng_eNB || (nOdE_TyPe) == ngran_gNB)
#define NODE_IS_CU(nOdE_TyPe) ((nOdE_TyPe) == ngran_eNB_CU || (nOdE_TyPe) == ngran_ng_eNB_CU || (nOdE_TyPe) == ngran_gNB_CU)
#define NODE_IS_DU(nOdE_TyPe) ((nOdE_TyPe) == ngran_eNB_DU || (nOdE_TyPe) == ngran_gNB_DU)
#endif #endif
...@@ -69,7 +69,7 @@ static uint32_t eNB_app_register(ngran_node_t node_type,uint32_t enb_id_start, u ...@@ -69,7 +69,7 @@ static uint32_t eNB_app_register(ngran_node_t node_type,uint32_t enb_id_start, u
for (enb_id = enb_id_start; (enb_id < enb_id_end) ; enb_id++) { for (enb_id = enb_id_start; (enb_id < enb_id_end) ; enb_id++) {
{ {
if (node_type == ngran_eNB_DU) { // F1AP registration if (NODE_IS_DU(node_type)) { // F1AP registration
// configure F1AP here for F1C // configure F1AP here for F1C
LOG_I(ENB_APP,"ngran_eNB_DU: Allocating ITTI message for F1AP_SETUP_REQ\n"); LOG_I(ENB_APP,"ngran_eNB_DU: Allocating ITTI message for F1AP_SETUP_REQ\n");
msg_p = itti_alloc_new_message (TASK_ENB_APP, F1AP_SETUP_REQ); msg_p = itti_alloc_new_message (TASK_ENB_APP, F1AP_SETUP_REQ);
...@@ -143,7 +143,7 @@ void *eNB_app_task(void *args_p) { ...@@ -143,7 +143,7 @@ void *eNB_app_task(void *args_p) {
} }
/* Try to register each eNB with each other */ /* Try to register each eNB with each other */
if (is_x2ap_enabled() && RC.rrc[0]->node_type == ngran_eNB) { // CU or DU do not need if (is_x2ap_enabled() && !NODE_IS_DU(RC.rrc[0]->node_type)) {
x2_register_enb_pending = eNB_app_register_x2 (enb_id_start, enb_id_end); x2_register_enb_pending = eNB_app_register_x2 (enb_id_start, enb_id_end);
} }
...@@ -167,7 +167,7 @@ void *eNB_app_task(void *args_p) { ...@@ -167,7 +167,7 @@ void *eNB_app_task(void *args_p) {
break; break;
case S1AP_REGISTER_ENB_CNF: case S1AP_REGISTER_ENB_CNF:
AssertFatal(RC.rrc[0]->node_type != ngran_eNB_DU, "Should not have received S1AP_REGISTER_ENB_CNF\n"); AssertFatal(!NODE_IS_DU(RC.rrc[0]->node_type), "Should not have received S1AP_REGISTER_ENB_CNF\n");
if (EPC_MODE_ENABLED) { if (EPC_MODE_ENABLED) {
LOG_I(ENB_APP, "[eNB %d] Received %s: associated MME %d\n", instance, ITTI_MSG_NAME (msg_p), LOG_I(ENB_APP, "[eNB %d] Received %s: associated MME %d\n", instance, ITTI_MSG_NAME (msg_p),
S1AP_REGISTER_ENB_CNF(msg_p).nb_mme); S1AP_REGISTER_ENB_CNF(msg_p).nb_mme);
...@@ -206,7 +206,7 @@ void *eNB_app_task(void *args_p) { ...@@ -206,7 +206,7 @@ void *eNB_app_task(void *args_p) {
break; break;
case F1AP_SETUP_RESP: case F1AP_SETUP_RESP:
AssertFatal(RC.rrc[0]->node_type == ngran_eNB_DU, "Should not have received F1AP_REGISTER_ENB_CNF in CU/eNB\n"); AssertFatal(NODE_IS_DU(RC.rrc[0]->node_type), "Should not have received F1AP_REGISTER_ENB_CNF in CU/eNB\n");
LOG_I(ENB_APP, "Received %s: associated ngran_eNB_CU %s with %d cells to activate\n", ITTI_MSG_NAME (msg_p), LOG_I(ENB_APP, "Received %s: associated ngran_eNB_CU %s with %d cells to activate\n", ITTI_MSG_NAME (msg_p),
F1AP_SETUP_RESP(msg_p).gNB_CU_name,F1AP_SETUP_RESP(msg_p).num_cells_to_activate); F1AP_SETUP_RESP(msg_p).gNB_CU_name,F1AP_SETUP_RESP(msg_p).num_cells_to_activate);
......
...@@ -441,7 +441,7 @@ int RCconfig_RRC(uint32_t i, eNB_RRC_INST *rrc, int macrlc_has_f1) { ...@@ -441,7 +441,7 @@ int RCconfig_RRC(uint32_t i, eNB_RRC_INST *rrc, int macrlc_has_f1) {
//printf("Component carrier %d\n",component_carrier); //printf("Component carrier %d\n",component_carrier);
nb_cc++; nb_cc++;
if (rrc->node_type != ngran_eNB_CU && rrc->node_type != ngran_ng_eNB_CU && rrc->node_type != ngran_gNB_CU) { if (!NODE_IS_CU(rrc->node_type)) {
// Cell params, MIB/SIB1 in DU // Cell params, MIB/SIB1 in DU
RRC_CONFIGURATION_REQ (msg_p).tdd_config[j] = ccparams_lte.tdd_config; RRC_CONFIGURATION_REQ (msg_p).tdd_config[j] = ccparams_lte.tdd_config;
AssertFatal (ccparams_lte.tdd_config <= LTE_TDD_Config__subframeAssignment_sa6, AssertFatal (ccparams_lte.tdd_config <= LTE_TDD_Config__subframeAssignment_sa6,
...@@ -533,7 +533,7 @@ int RCconfig_RRC(uint32_t i, eNB_RRC_INST *rrc, int macrlc_has_f1) { ...@@ -533,7 +533,7 @@ int RCconfig_RRC(uint32_t i, eNB_RRC_INST *rrc, int macrlc_has_f1) {
RRC_CONFIGURATION_REQ (msg_p).nb_antenna_ports[j] = ccparams_lte.nb_antenna_ports; RRC_CONFIGURATION_REQ (msg_p).nb_antenna_ports[j] = ccparams_lte.nb_antenna_ports;
} }
if (rrc->node_type != ngran_eNB_DU) {//this is CU or eNB, SIB2-20 in CU if (!NODE_IS_DU(rrc->node_type)) { //this is CU or eNB, SIB2-20 in CU
// Radio Resource Configuration (SIB2) // Radio Resource Configuration (SIB2)
RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig[j].prach_root = ccparams_lte.prach_root; RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig[j].prach_root = ccparams_lte.prach_root;
...@@ -1295,10 +1295,10 @@ int RCconfig_RRC(uint32_t i, eNB_RRC_INST *rrc, int macrlc_has_f1) { ...@@ -1295,10 +1295,10 @@ int RCconfig_RRC(uint32_t i, eNB_RRC_INST *rrc, int macrlc_has_f1) {
if (SLconfig.sidelink_configured==1) fill_SL_configuration(msg_p,&SLconfig,i,j,RC.config_file_name); if (SLconfig.sidelink_configured==1) fill_SL_configuration(msg_p,&SLconfig,i,j,RC.config_file_name);
else printf("No SL configuration skipping it\n"); else printf("No SL configuration skipping it\n");
} // node_type!=ngran_eNB_DU } // !NODE_IS_DU(node_type)
} }
if (rrc->node_type == ngran_eNB || rrc->node_type == ngran_eNB_CU || rrc->node_type == ngran_ng_eNB_CU || rrc->node_type == ngran_gNB_CU) { if (!NODE_IS_DU(rrc->node_type)) {
char srb1path[MAX_OPTNAME_SIZE*2 + 8]; char srb1path[MAX_OPTNAME_SIZE*2 + 8];
sprintf(srb1path,"%s.%s",enbpath,ENB_CONFIG_STRING_SRB1); sprintf(srb1path,"%s.%s",enbpath,ENB_CONFIG_STRING_SRB1);
config_get( SRB1Params,sizeof(SRB1Params)/sizeof(paramdef_t), srb1path); config_get( SRB1Params,sizeof(SRB1Params)/sizeof(paramdef_t), srb1path);
...@@ -2618,6 +2618,6 @@ void read_config_and_init(void) ...@@ -2618,6 +2618,6 @@ void read_config_and_init(void)
RCconfig_RRC(enb_id, RC.rrc[enb_id],macrlc_has_f1[enb_id]); RCconfig_RRC(enb_id, RC.rrc[enb_id],macrlc_has_f1[enb_id]);
} }
if (RC.rrc[0]->node_type != ngran_eNB_DU) if (!NODE_IS_DU(RC.rrc[0]->node_type))
pdcp_layer_init(); pdcp_layer_init();
} }
...@@ -404,8 +404,7 @@ check_ul_failure(module_id_t module_idP, int CC_id, int UE_id, ...@@ -404,8 +404,7 @@ check_ul_failure(module_id_t module_idP, int CC_id, int UE_id,
// check threshold // check threshold
if (UE_list->UE_sched_ctrl[UE_id].ul_failure_timer > 4000) { if (UE_list->UE_sched_ctrl[UE_id].ul_failure_timer > 4000) {
// note: probably ul_failure_timer should be less than UE radio link failure time(see T310/N310/N311) // note: probably ul_failure_timer should be less than UE radio link failure time(see T310/N310/N311)
if (RC.rrc[module_idP]->node_type == ngran_eNB_DU if (NODE_IS_DU(RC.rrc[module_idP]->node_type)) {
|| RC.rrc[module_idP]->node_type == ngran_gNB_DU) {
MessageDef *m = itti_alloc_new_message(TASK_MAC_ENB, F1AP_UE_CONTEXT_RELEASE_REQ); MessageDef *m = itti_alloc_new_message(TASK_MAC_ENB, F1AP_UE_CONTEXT_RELEASE_REQ);
F1AP_UE_CONTEXT_RELEASE_REQ(m).rnti = rnti; F1AP_UE_CONTEXT_RELEASE_REQ(m).rnti = rnti;
F1AP_UE_CONTEXT_RELEASE_REQ(m).cause = F1AP_CAUSE_RADIO_NETWORK; F1AP_UE_CONTEXT_RELEASE_REQ(m).cause = F1AP_CAUSE_RADIO_NETWORK;
......
...@@ -191,9 +191,7 @@ boolean_t pdcp_data_req( ...@@ -191,9 +191,7 @@ boolean_t pdcp_data_req(
LOG_UI(PDCP, "Before rlc_data_req 1, srb_flagP: %d, rb_idP: %d \n", srb_flagP, rb_idP); LOG_UI(PDCP, "Before rlc_data_req 1, srb_flagP: %d, rb_idP: %d \n", srb_flagP, rb_idP);
} }
#ifndef UETARGET #ifndef UETARGET
if (RC.rrc[ctxt_pP->module_id]->node_type == ngran_eNB_CU if (NODE_IS_CU(RC.rrc[ctxt_pP->module_id]->node_type)) {
|| RC.rrc[ctxt_pP->module_id]->node_type == ngran_ng_eNB_CU
|| RC.rrc[ctxt_pP->module_id]->node_type == ngran_gNB_CU) {
/* currently, there is no support to send also the source/destinationL2Id */ /* currently, there is no support to send also the source/destinationL2Id */
proto_agent_send_rlc_data_req(ctxt_pP, srb_flagP, MBMS_FLAG_NO, rb_idP, muiP, proto_agent_send_rlc_data_req(ctxt_pP, srb_flagP, MBMS_FLAG_NO, rb_idP, muiP,
confirmP, sdu_buffer_sizeP, pdcp_pdu_p); confirmP, sdu_buffer_sizeP, pdcp_pdu_p);
...@@ -374,9 +372,7 @@ boolean_t pdcp_data_req( ...@@ -374,9 +372,7 @@ boolean_t pdcp_data_req(
LOG_D(PDCP, "pdcp data req on drb %d, size %d, rnti %x, node_type %d \n", LOG_D(PDCP, "pdcp data req on drb %d, size %d, rnti %x, node_type %d \n",
rb_idP, pdcp_pdu_size, ctxt_pP->rnti, RC.rrc[ctxt_pP->module_id]->node_type); rb_idP, pdcp_pdu_size, ctxt_pP->rnti, RC.rrc[ctxt_pP->module_id]->node_type);
if (RC.rrc[ctxt_pP->module_id]->node_type == ngran_eNB_CU if (NODE_IS_CU(RC.rrc[ctxt_pP->module_id]->node_type)) {
|| RC.rrc[ctxt_pP->module_id]->node_type == ngran_ng_eNB_CU
|| RC.rrc[ctxt_pP->module_id]->node_type == ngran_gNB_CU) {
/* currently, there is no support to send also the source/destinationL2Id */ /* currently, there is no support to send also the source/destinationL2Id */
proto_agent_send_rlc_data_req(ctxt_pP, srb_flagP, MBMS_FLAG_NO, rb_idP, muiP, proto_agent_send_rlc_data_req(ctxt_pP, srb_flagP, MBMS_FLAG_NO, rb_idP, muiP,
confirmP, pdcp_pdu_size, pdcp_pdu_p); confirmP, pdcp_pdu_size, pdcp_pdu_p);
...@@ -386,8 +382,7 @@ boolean_t pdcp_data_req( ...@@ -386,8 +382,7 @@ boolean_t pdcp_data_req(
LOG_D(PDCP, "proto_agent_send_rlc_data_req for UE RNTI %x, rb %d, pdu size %d \n", LOG_D(PDCP, "proto_agent_send_rlc_data_req for UE RNTI %x, rb %d, pdu size %d \n",
ctxt_pP->rnti, rb_idP, pdcp_pdu_size); ctxt_pP->rnti, rb_idP, pdcp_pdu_size);
} else if (RC.rrc[ctxt_pP->module_id]->node_type == ngran_eNB_DU } else if (NODE_IS_DU(RC.rrc[ctxt_pP->module_id]->node_type)){
|| RC.rrc[ctxt_pP->module_id]->node_type == ngran_gNB_DU){
LOG_E(PDCP, "Can't be DU, bad node type %d \n", RC.rrc[ctxt_pP->module_id]->node_type); LOG_E(PDCP, "Can't be DU, bad node type %d \n", RC.rrc[ctxt_pP->module_id]->node_type);
ret=FALSE; ret=FALSE;
} else } else
...@@ -429,9 +424,7 @@ boolean_t pdcp_data_req( ...@@ -429,9 +424,7 @@ boolean_t pdcp_data_req(
{ {
#ifndef UETARGET #ifndef UETARGET
if ((RC.rrc[ctxt_pP->module_id]->node_type == ngran_eNB_CU) || if (NODE_IS_CU(RC.rrc[ctxt_pP->module_id]->node_type)) {
(RC.rrc[ctxt_pP->module_id]->node_type == ngran_ng_eNB_CU)||
(RC.rrc[ctxt_pP->module_id]->node_type == ngran_gNB_CU) ) {
// DL transfer // DL transfer
MessageDef *message_p; MessageDef *message_p;
// Note: the acyual task must be TASK_PDCP_ENB, but this task is not created // Note: the acyual task must be TASK_PDCP_ENB, but this task is not created
......
...@@ -611,7 +611,7 @@ void rlc_data_ind ( ...@@ -611,7 +611,7 @@ void rlc_data_ind (
AssertFatal(type != ngran_eNB_CU && type != ngran_ng_eNB_CU && type != ngran_gNB_CU, AssertFatal(type != ngran_eNB_CU && type != ngran_ng_eNB_CU && type != ngran_gNB_CU,
"Can't be CU, bad node type %d\n", type); "Can't be CU, bad node type %d\n", type);
if (type == ngran_eNB_DU || type == ngran_gNB_DU) { if (NODE_IS_DU(type)) {
if (srb_flagP == 1) { if (srb_flagP == 1) {
MessageDef *msg = itti_alloc_new_message(TASK_RLC_ENB, F1AP_UL_RRC_MESSAGE); MessageDef *msg = itti_alloc_new_message(TASK_RLC_ENB, F1AP_UL_RRC_MESSAGE);
F1AP_UL_RRC_MESSAGE(msg).rnti = ctxt_pP->rnti; F1AP_UL_RRC_MESSAGE(msg).rnti = ctxt_pP->rnti;
......
...@@ -244,7 +244,7 @@ mac_rrc_data_ind( ...@@ -244,7 +244,7 @@ mac_rrc_data_ind(
{ {
if ( RC.rrc[module_idP]->node_type == ngran_eNB_DU) { if (NODE_IS_DU(RC.rrc[module_idP]->node_type)) {
LOG_W(RRC,"[DU %d][RAPROC] Received SDU for CCCH on SRB %d length %d for UE id %d RNTI %x \n", LOG_W(RRC,"[DU %d][RAPROC] Received SDU for CCCH on SRB %d length %d for UE id %d RNTI %x \n",
module_idP, srb_idP, sdu_lenP, UE_id, rntiP); module_idP, srb_idP, sdu_lenP, UE_id, rntiP);
......
...@@ -111,7 +111,7 @@ rrc_data_req( ...@@ -111,7 +111,7 @@ rrc_data_req(
/* Hack: only trigger PDCP if in CU, otherwise it is triggered by RU threads /* Hack: only trigger PDCP if in CU, otherwise it is triggered by RU threads
* Ideally, PDCP would not neet to be triggered like this but react to ITTI * Ideally, PDCP would not neet to be triggered like this but react to ITTI
* messages automatically */ * messages automatically */
if (RC.rrc[ctxt_pP->module_id]->node_type == ngran_eNB_CU || RC.rrc[ctxt_pP->module_id]->node_type == ngran_ng_eNB_CU || RC.rrc[ctxt_pP->module_id]->node_type == ngran_gNB_CU) if (NODE_IS_CU(RC.rrc[ctxt_pP->module_id]->node_type))
pdcp_run(ctxt_pP); pdcp_run(ctxt_pP);
return TRUE; // TODO should be changed to a CNF message later, currently RRC lite does not used the returned value anyway. return TRUE; // TODO should be changed to a CNF message later, currently RRC lite does not used the returned value anyway.
......
...@@ -154,8 +154,7 @@ init_SI( ...@@ -154,8 +154,7 @@ init_SI(
PROTOCOL_RRC_CTXT_ARGS(ctxt_pP)); PROTOCOL_RRC_CTXT_ARGS(ctxt_pP));
LOG_I(RRC,"[eNB %d] Node type %d \n ", ctxt_pP->module_id, rrc->node_type); LOG_I(RRC,"[eNB %d] Node type %d \n ", ctxt_pP->module_id, rrc->node_type);
if ((rrc->node_type == ngran_eNB_DU) || if (NODE_IS_DU(rrc->node_type) || NODE_IS_MONOLITHIC(rrc->node_type)) {
(rrc->node_type == ngran_eNB) ) {
// copy basic Cell parameters // copy basic Cell parameters
carrier->physCellId = configuration->Nid_cell[CC_id]; carrier->physCellId = configuration->Nid_cell[CC_id];
carrier->p_eNB = configuration->nb_antenna_ports[CC_id]; carrier->p_eNB = configuration->nb_antenna_ports[CC_id];
...@@ -208,11 +207,7 @@ init_SI( ...@@ -208,11 +207,7 @@ init_SI(
#endif #endif
} }
if (rrc->node_type != ngran_eNB_DU) { if (!NODE_IS_DU(rrc->node_type)) {
/*if ((rrc->node_type == ngran_eNB_CU) ||
(rrc->node_type == ngran_ng_eNB_CU) ||
(rrc->node_type == ngran_eNB)) { */
carrier->SIB23 = (uint8_t*) malloc16(64); carrier->SIB23 = (uint8_t*) malloc16(64);
AssertFatal(carrier->SIB23!=NULL,"cannot allocate memory for SIB"); AssertFatal(carrier->SIB23!=NULL,"cannot allocate memory for SIB");
carrier->sizeof_SIB23 = do_SIB23(ctxt_pP->module_id, carrier->sizeof_SIB23 = do_SIB23(ctxt_pP->module_id,
...@@ -376,7 +371,7 @@ init_SI( ...@@ -376,7 +371,7 @@ init_SI(
#if (LTE_RRC_VERSION >= MAKE_VERSION(13, 0, 0)) #if (LTE_RRC_VERSION >= MAKE_VERSION(13, 0, 0))
// LTE-M stuff here (take out CU-DU for now) // LTE-M stuff here (take out CU-DU for now)
if (rrc->node_type == ngran_eNB) { if (NODE_IS_MONOLITHIC(rrc->node_type)) {
if ((carrier->mib.message.schedulingInfoSIB1_BR_r13>0) && if ((carrier->mib.message.schedulingInfoSIB1_BR_r13>0) &&
(carrier->sib1_BR!=NULL)) { (carrier->sib1_BR!=NULL)) {
AssertFatal(carrier->sib1_BR->nonCriticalExtension!=NULL, AssertFatal(carrier->sib1_BR->nonCriticalExtension!=NULL,
...@@ -457,7 +452,7 @@ init_SI( ...@@ -457,7 +452,7 @@ init_SI(
} }
else else
*/ */
if (rrc->node_type == ngran_eNB) { if (NODE_IS_MONOLITHIC(rrc->node_type)) {
LOG_D(RRC, "About to call rrc_mac_config_req_eNB for ngran_eNB\n"); LOG_D(RRC, "About to call rrc_mac_config_req_eNB for ngran_eNB\n");
rrc_mac_config_req_eNB(ctxt_pP->module_id, CC_id, rrc_mac_config_req_eNB(ctxt_pP->module_id, CC_id,
...@@ -560,7 +555,7 @@ init_MCCH( ...@@ -560,7 +555,7 @@ init_MCCH(
// call mac_config_req with appropriate structure from ASN.1 description // call mac_config_req with appropriate structure from ASN.1 description
// LOG_I(RRC, "DUY: serviceID is %d\n",RC.rrc[enb_mod_idP]->mcch_message->pmch_InfoList_r9.list.array[0]->mbms_SessionInfoList_r9.list.array[0]->tmgi_r9.serviceId_r9.buf[2]); // LOG_I(RRC, "DUY: serviceID is %d\n",RC.rrc[enb_mod_idP]->mcch_message->pmch_InfoList_r9.list.array[0]->mbms_SessionInfoList_r9.list.array[0]->tmgi_r9.serviceId_r9.buf[2]);
// LOG_I(RRC, "DUY: session ID is %d\n",RC.rrc[enb_mod_idP]->mcch_message->pmch_InfoList_r9.list.array[0]->mbms_SessionInfoList_r9.list.array[0]->sessionId_r9->buf[0]); // LOG_I(RRC, "DUY: session ID is %d\n",RC.rrc[enb_mod_idP]->mcch_message->pmch_InfoList_r9.list.array[0]->mbms_SessionInfoList_r9.list.array[0]->sessionId_r9->buf[0]);
if (rrc->node_type == ngran_eNB) { if (NODE_IS_MONOLITHIC(rrc->node_type)) {
rrc_mac_config_req_eNB(enb_mod_idP, CC_id, rrc_mac_config_req_eNB(enb_mod_idP, CC_id,
0,0,0,0,0, 0,0,0,0,0,
#if (LTE_RRC_VERSION >= MAKE_VERSION(14, 0, 0)) #if (LTE_RRC_VERSION >= MAKE_VERSION(14, 0, 0))
...@@ -623,9 +618,7 @@ static void init_MBMS( ...@@ -623,9 +618,7 @@ static void init_MBMS(
, &(RC.rrc[enb_mod_idP]->carrier[CC_id].mcch_message->pmch_InfoList_r9) , &(RC.rrc[enb_mod_idP]->carrier[CC_id].mcch_message->pmch_InfoList_r9)
,NULL); ,NULL);
if ((RC.rrc[enb_mod_idP]->node_type != ngran_eNB_CU) || if (!NODE_IS_CU(RC.rrc[enb_mod_idP]->node_type)) {
(RC.rrc[enb_mod_idP]->node_type != ngran_ng_eNB_CU) ||
(RC.rrc[enb_mod_idP]->node_type != ngran_gNB_CU) ) {
rrc_rlc_config_asn1_req(&ctxt, rrc_rlc_config_asn1_req(&ctxt,
NULL, // LTE_SRB_ToAddModList NULL, // LTE_SRB_ToAddModList
NULL, // LTE_DRB_ToAddModList NULL, // LTE_DRB_ToAddModList
...@@ -927,9 +920,7 @@ rrc_eNB_free_UE( ...@@ -927,9 +920,7 @@ rrc_eNB_free_UE(
} }
if(EPC_MODE_ENABLED) { if(EPC_MODE_ENABLED) {
if (RC.rrc[enb_mod_idP]->node_type == ngran_eNB if (!NODE_IS_DU(RC.rrc[enb_mod_idP]->node_type)) {
|| RC.rrc[enb_mod_idP]->node_type == ngran_eNB_CU
|| RC.rrc[enb_mod_idP]->node_type == ngran_gNB_CU) {
if((ue_context_pP->ue_context.ul_failure_timer >= 20000) && (mac_eNB_get_rrc_status(enb_mod_idP, rnti) >= RRC_CONNECTED)) { if((ue_context_pP->ue_context.ul_failure_timer >= 20000) && (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 21, radio connection with ue lost\n", LOG_I(RRC, "[eNB %d] S1AP_UE_CONTEXT_RELEASE_REQ sent for RNTI %x, cause 21, radio connection with ue lost\n",
enb_mod_idP, enb_mod_idP,
...@@ -1085,14 +1076,12 @@ void release_UE_in_freeList(module_id_t mod_id) { ...@@ -1085,14 +1076,12 @@ void release_UE_in_freeList(module_id_t mod_id) {
} }
} }
if (RC.rrc[mod_id]->node_type != ngran_eNB_CU if (!NODE_IS_CU(RC.rrc[mod_id]->node_type)) {
&& RC.rrc[mod_id]->node_type != ngran_ng_eNB_CU
&& RC.rrc[mod_id]->node_type != ngran_gNB_CU) {
rrc_mac_remove_ue(mod_id,rnti); rrc_mac_remove_ue(mod_id,rnti);
rrc_rlc_remove_ue(&ctxt); rrc_rlc_remove_ue(&ctxt);
pdcp_remove_UE(&ctxt); pdcp_remove_UE(&ctxt);
} }
else if (RC.rrc[mod_id]->node_type == ngran_eNB_CU || RC.rrc[mod_id]->node_type == ngran_ng_eNB_CU) { else {
MessageDef *m = itti_alloc_new_message(TASK_RRC_ENB, F1AP_UE_CONTEXT_RELEASE_CMD); MessageDef *m = itti_alloc_new_message(TASK_RRC_ENB, F1AP_UE_CONTEXT_RELEASE_CMD);
F1AP_UE_CONTEXT_RELEASE_CMD(m).rnti = rnti; F1AP_UE_CONTEXT_RELEASE_CMD(m).rnti = rnti;
F1AP_UE_CONTEXT_RELEASE_CMD(m).cause = F1AP_CAUSE_RADIO_NETWORK; F1AP_UE_CONTEXT_RELEASE_CMD(m).cause = F1AP_CAUSE_RADIO_NETWORK;
...@@ -1187,8 +1176,7 @@ rrc_eNB_generate_SecurityModeCommand( ...@@ -1187,8 +1176,7 @@ rrc_eNB_generate_SecurityModeCommand(
rrc_eNB_mui, rrc_eNB_mui,
size); size);
if ((RC.rrc[ctxt_pP->module_id]->node_type != ngran_eNB_DU) && if (!NODE_IS_DU(RC.rrc[ctxt_pP->module_id]->node_type)) {
(RC.rrc[ctxt_pP->module_id]->node_type != ngran_gNB_DU)) {
LOG_I(RRC,"calling rrc_data_req :securityModeCommand\n"); LOG_I(RRC,"calling rrc_data_req :securityModeCommand\n");
rrc_data_req(ctxt_pP, rrc_data_req(ctxt_pP,
...@@ -1338,7 +1326,7 @@ rrc_eNB_generate_RRCConnectionReestablishment( ...@@ -1338,7 +1326,7 @@ rrc_eNB_generate_RRCConnectionReestablishment(
LOG_D(RRC, LOG_D(RRC,
PROTOCOL_RRC_CTXT_UE_FMT" RRC_eNB --- MAC_CONFIG_REQ (SRB1) ---> MAC_eNB\n", PROTOCOL_RRC_CTXT_UE_FMT" RRC_eNB --- MAC_CONFIG_REQ (SRB1) ---> MAC_eNB\n",
PROTOCOL_RRC_CTXT_UE_ARGS(ctxt_pP)); PROTOCOL_RRC_CTXT_UE_ARGS(ctxt_pP));
if (RC.rrc[ctxt_pP->module_id]->node_type == ngran_eNB) { if (NODE_IS_MONOLITHIC(RC.rrc[ctxt_pP->module_id]->node_type)) {
rrc_mac_config_req_eNB(ctxt_pP->module_id, rrc_mac_config_req_eNB(ctxt_pP->module_id,
ue_context_pP->ue_context.primaryCC_id, ue_context_pP->ue_context.primaryCC_id,
0,0,0,0,0, 0,0,0,0,0,
...@@ -1391,9 +1379,7 @@ rrc_eNB_generate_RRCConnectionReestablishment( ...@@ -1391,9 +1379,7 @@ rrc_eNB_generate_RRCConnectionReestablishment(
PROTOCOL_RRC_CTXT_UE_FMT" [RAPROC] Logical Channel DL-CCCH, Generating LTE_RRCConnectionReestablishment (bytes %d)\n", PROTOCOL_RRC_CTXT_UE_FMT" [RAPROC] Logical Channel DL-CCCH, Generating LTE_RRCConnectionReestablishment (bytes %d)\n",
PROTOCOL_RRC_CTXT_UE_ARGS(ctxt_pP), PROTOCOL_RRC_CTXT_UE_ARGS(ctxt_pP),
ue_p->Srb0.Tx_buffer.payload_size); ue_p->Srb0.Tx_buffer.payload_size);
if ((RC.rrc[ctxt_pP->module_id]->node_type != ngran_eNB_CU) && if (!NODE_IS_CU(RC.rrc[ctxt_pP->module_id]->node_type)) {
(RC.rrc[ctxt_pP->module_id]->node_type != ngran_ng_eNB_CU) &&
(RC.rrc[ctxt_pP->module_id]->node_type != ngran_gNB_CU)) {
int UE_id = find_UE_id(ctxt_pP->module_id, ctxt_pP->rnti); int UE_id = find_UE_id(ctxt_pP->module_id, ctxt_pP->rnti);
if(UE_id != -1){ if(UE_id != -1){
// activate release timer, if RRCComplete not received after 100 frames, remove UE // activate release timer, if RRCComplete not received after 100 frames, remove UE
...@@ -1996,9 +1982,7 @@ rrc_eNB_generate_RRCConnectionReestablishmentReject( ...@@ -1996,9 +1982,7 @@ rrc_eNB_generate_RRCConnectionReestablishmentReject(
) )
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
{ {
if ( (RC.rrc[ctxt_pP->module_id]->node_type != ngran_eNB_CU) && if (!NODE_IS_CU(RC.rrc[ctxt_pP->module_id]->node_type)) {
(RC.rrc[ctxt_pP->module_id]->node_type != ngran_ng_eNB_CU)&&
(RC.rrc[ctxt_pP->module_id]->node_type != ngran_gNB_CU) ) {
int UE_id = find_UE_id(ctxt_pP->module_id, ctxt_pP->rnti); int UE_id = find_UE_id(ctxt_pP->module_id, ctxt_pP->rnti);
if(UE_id != -1) { if(UE_id != -1) {
...@@ -2103,8 +2087,7 @@ rrc_eNB_generate_RRCConnectionRelease( ...@@ -2103,8 +2087,7 @@ rrc_eNB_generate_RRCConnectionRelease(
} }
pthread_mutex_unlock(&rrc_release_freelist); pthread_mutex_unlock(&rrc_release_freelist);
if (RC.rrc[ctxt_pP->module_id]->node_type == ngran_eNB_CU if (NODE_IS_CU(RC.rrc[ctxt_pP->module_id]->node_type)) {
|| RC.rrc[ctxt_pP->module_id]->node_type == ngran_ng_eNB_CU) {
MessageDef *m = itti_alloc_new_message(TASK_RRC_ENB, F1AP_UE_CONTEXT_RELEASE_CMD); MessageDef *m = itti_alloc_new_message(TASK_RRC_ENB, F1AP_UE_CONTEXT_RELEASE_CMD);
F1AP_UE_CONTEXT_RELEASE_CMD(m).rnti = ctxt_pP->rnti; F1AP_UE_CONTEXT_RELEASE_CMD(m).rnti = ctxt_pP->rnti;
F1AP_UE_CONTEXT_RELEASE_CMD(m).cause = F1AP_CAUSE_RADIO_NETWORK; F1AP_UE_CONTEXT_RELEASE_CMD(m).cause = F1AP_CAUSE_RADIO_NETWORK;
...@@ -5567,7 +5550,7 @@ rrc_eNB_process_RRCConnectionReconfigurationComplete( ...@@ -5567,7 +5550,7 @@ rrc_eNB_process_RRCConnectionReconfigurationComplete(
DRB2LCHAN[i] = (uint8_t) * DRB_configList->list.array[i]->logicalChannelIdentity; DRB2LCHAN[i] = (uint8_t) * DRB_configList->list.array[i]->logicalChannelIdentity;
} }
if (RC.rrc[ctxt_pP->module_id]->node_type == ngran_eNB) { if (NODE_IS_MONOLITHIC(RC.rrc[ctxt_pP->module_id]->node_type)) {
rrc_mac_config_req_eNB(ctxt_pP->module_id, rrc_mac_config_req_eNB(ctxt_pP->module_id,
ue_context_pP->ue_context.primaryCC_id, ue_context_pP->ue_context.primaryCC_id,
0,0,0,0,0, 0,0,0,0,0,
...@@ -5610,9 +5593,7 @@ rrc_eNB_process_RRCConnectionReconfigurationComplete( ...@@ -5610,9 +5593,7 @@ rrc_eNB_process_RRCConnectionReconfigurationComplete(
/* rrc_pdcp_config_req (ctxt_pP->module_id, frameP, 1, CONFIG_ACTION_REMOVE, /* rrc_pdcp_config_req (ctxt_pP->module_id, frameP, 1, CONFIG_ACTION_REMOVE,
(ue_mod_idP * NB_RB_MAX) + DRB2LCHAN[i],UNDEF_SECURITY_MODE); (ue_mod_idP * NB_RB_MAX) + DRB2LCHAN[i],UNDEF_SECURITY_MODE);
*/ */
if ( (RC.rrc[ctxt_pP->module_id]->node_type != ngran_eNB_CU) && if (!NODE_IS_CU(RC.rrc[ctxt_pP->module_id]->node_type)) {
(RC.rrc[ctxt_pP->module_id]->node_type != ngran_ng_eNB_CU) &&
(RC.rrc[ctxt_pP->module_id]->node_type != ngran_gNB_CU) ) {
rrc_rlc_config_req(ctxt_pP, rrc_rlc_config_req(ctxt_pP,
SRB_FLAG_NO, SRB_FLAG_NO,
MBMS_FLAG_NO, MBMS_FLAG_NO,
...@@ -5626,7 +5607,7 @@ rrc_eNB_process_RRCConnectionReconfigurationComplete( ...@@ -5626,7 +5607,7 @@ rrc_eNB_process_RRCConnectionReconfigurationComplete(
LOG_D(RRC, LOG_D(RRC,
PROTOCOL_RRC_CTXT_UE_FMT" RRC_eNB --- MAC_CONFIG_REQ (DRB) ---> MAC_eNB\n", PROTOCOL_RRC_CTXT_UE_FMT" RRC_eNB --- MAC_CONFIG_REQ (DRB) ---> MAC_eNB\n",
PROTOCOL_RRC_CTXT_UE_ARGS(ctxt_pP)); PROTOCOL_RRC_CTXT_UE_ARGS(ctxt_pP));
if (RC.rrc[ctxt_pP->module_id]->node_type == ngran_eNB) { if (NODE_IS_MONOLITHIC(RC.rrc[ctxt_pP->module_id]->node_type)) {
rrc_mac_config_req_eNB(ctxt_pP->module_id, rrc_mac_config_req_eNB(ctxt_pP->module_id,
ue_context_pP->ue_context.primaryCC_id, ue_context_pP->ue_context.primaryCC_id,
0,0,0,0,0, 0,0,0,0,0,
...@@ -5990,7 +5971,7 @@ char openair_rrc_eNB_configuration( ...@@ -5990,7 +5971,7 @@ char openair_rrc_eNB_configuration(
LOG_W(RRC, "[inst %d] RRC->MCC/MSG->MCC %d/%d \n", ctxt.module_id, RC.rrc[ctxt.module_id]->mcc, rrc_configuration_req->mcc); LOG_W(RRC, "[inst %d] RRC->MCC/MSG->MCC %d/%d \n", ctxt.module_id, RC.rrc[ctxt.module_id]->mcc, rrc_configuration_req->mcc);
*/ */
if (RC.rrc[ctxt.module_id]->node_type == ngran_eNB_CU || RC.rrc[ctxt.module_id]->node_type == ngran_ng_eNB_CU) if (NODE_IS_CU(RC.rrc[ctxt.module_id]->node_type))
// msg_p = itti_alloc_new_message (TASK_ENB_APP, F1AP_SCTP_REQ); // msg_p = itti_alloc_new_message (TASK_ENB_APP, F1AP_SCTP_REQ);
// RCconfig_CU_F1(msg_p, enb_id); // RCconfig_CU_F1(msg_p, enb_id);
setup_ngran_CU(RC.rrc[ctxt.module_id]); setup_ngran_CU(RC.rrc[ctxt.module_id]);
...@@ -6230,9 +6211,7 @@ rrc_eNB_decode_ccch( ...@@ -6230,9 +6211,7 @@ rrc_eNB_decode_ccch(
NULL NULL
, (LTE_PMCH_InfoList_r9_t *) NULL , (LTE_PMCH_InfoList_r9_t *) NULL
,NULL); ,NULL);
if ((RC.rrc[ctxt_pP->module_id]->node_type != ngran_eNB_CU) && if (!NODE_IS_CU(RC.rrc[ctxt_pP->module_id]->node_type)) {
(RC.rrc[ctxt_pP->module_id]->node_type != ngran_ng_eNB_CU)&&
(RC.rrc[ctxt_pP->module_id]->node_type != ngran_gNB_CU) ) {
rrc_rlc_config_asn1_req(ctxt_pP, rrc_rlc_config_asn1_req(ctxt_pP,
ue_context_p->ue_context.SRB_configList, ue_context_p->ue_context.SRB_configList,
(LTE_DRB_ToAddModList_t *) NULL, (LTE_DRB_ToAddModList_t *) NULL,
...@@ -6313,9 +6292,7 @@ rrc_eNB_decode_ccch( ...@@ -6313,9 +6292,7 @@ rrc_eNB_decode_ccch(
if ((ue_context_p = rrc_eNB_ue_context_stmsi_exist(ctxt_pP, mme_code, m_tmsi))) { if ((ue_context_p = rrc_eNB_ue_context_stmsi_exist(ctxt_pP, mme_code, m_tmsi))) {
LOG_I(RRC," S-TMSI exists, ue_context_p %p, old rnti %x => %x\n",ue_context_p,ue_context_p->ue_context.rnti,ctxt_pP->rnti); LOG_I(RRC," S-TMSI exists, ue_context_p %p, old rnti %x => %x\n",ue_context_p,ue_context_p->ue_context.rnti,ctxt_pP->rnti);
if ((RC.rrc[ctxt_pP->module_id]->node_type != ngran_eNB_CU) && if (!NODE_IS_CU(RC.rrc[ctxt_pP->module_id]->node_type)) {
(RC.rrc[ctxt_pP->module_id]->node_type != ngran_ng_eNB_CU) &&
(RC.rrc[ctxt_pP->module_id]->node_type != ngran_gNB_CU) ) {
rrc_mac_remove_ue(ctxt_pP->module_id, ue_context_p->ue_context.rnti); rrc_mac_remove_ue(ctxt_pP->module_id, ue_context_p->ue_context.rnti);
} }
else { else {
...@@ -6419,10 +6396,9 @@ rrc_eNB_decode_ccch( ...@@ -6419,10 +6396,9 @@ rrc_eNB_decode_ccch(
LOG_I(RRC, PROTOCOL_RRC_CTXT_UE_FMT" Can't create new context for UE random UE identity (0x%" PRIx64 ")\n", LOG_I(RRC, PROTOCOL_RRC_CTXT_UE_FMT" Can't create new context for UE random UE identity (0x%" PRIx64 ")\n",
PROTOCOL_RRC_CTXT_UE_ARGS(ctxt_pP), PROTOCOL_RRC_CTXT_UE_ARGS(ctxt_pP),
random_value); random_value);
if (RC.rrc[ctxt_pP->module_id] == ngran_eNB) if (NODE_IS_MONOLITHIC(RC.rrc[ctxt_pP->module_id]->node_type))
rrc_mac_remove_ue(ctxt_pP->module_id,ctxt_pP->rnti); rrc_mac_remove_ue(ctxt_pP->module_id,ctxt_pP->rnti);
else if (RC.rrc[ctxt_pP->module_id]->node_type == ngran_eNB_CU || else if (NODE_IS_CU(RC.rrc[ctxt_pP->module_id]->node_type)) {
RC.rrc[ctxt_pP->module_id]->node_type == ngran_ng_eNB_CU) {
MessageDef *m = itti_alloc_new_message(TASK_RRC_ENB, F1AP_UE_CONTEXT_RELEASE_CMD); MessageDef *m = itti_alloc_new_message(TASK_RRC_ENB, F1AP_UE_CONTEXT_RELEASE_CMD);
F1AP_UE_CONTEXT_RELEASE_CMD(m).rnti = ctxt_pP->rnti; F1AP_UE_CONTEXT_RELEASE_CMD(m).rnti = ctxt_pP->rnti;
F1AP_UE_CONTEXT_RELEASE_CMD(m).cause = F1AP_CAUSE_RADIO_NETWORK; F1AP_UE_CONTEXT_RELEASE_CMD(m).cause = F1AP_CAUSE_RADIO_NETWORK;
...@@ -6484,9 +6460,7 @@ rrc_eNB_decode_ccch( ...@@ -6484,9 +6460,7 @@ rrc_eNB_decode_ccch(
#endif #endif
,NULL); ,NULL);
if ( (RC.rrc[ctxt_pP->module_id]->node_type != ngran_eNB_CU) && if (!NODE_IS_CU(RC.rrc[ctxt_pP->module_id]->node_type)) {
(RC.rrc[ctxt_pP->module_id]->node_type != ngran_ng_eNB_CU) &&
(RC.rrc[ctxt_pP->module_id]->node_type != ngran_gNB_CU) ) {
rrc_rlc_config_asn1_req(ctxt_pP, rrc_rlc_config_asn1_req(ctxt_pP,
ue_context_p->ue_context.SRB_configList, ue_context_p->ue_context.SRB_configList,
(LTE_DRB_ToAddModList_t *) NULL, (LTE_DRB_ToAddModList_t *) NULL,
...@@ -6654,9 +6628,7 @@ rrc_eNB_decode_dcch( ...@@ -6654,9 +6628,7 @@ rrc_eNB_decode_dcch(
break; break;
} }
AssertFatal(RC.rrc[ctxt_pP->module_id]->node_type != ngran_eNB_CU AssertFatal(!NODE_IS_CU(RC.rrc[ctxt_pP->module_id]->node_type),
&& RC.rrc[ctxt_pP->module_id]->node_type != ngran_ng_eNB_CU
&& RC.rrc[ctxt_pP->module_id]->node_type != ngran_gNB_CU,
"CU cannot decode DCCH: no access to RC.mac[]\n"); "CU cannot decode DCCH: no access to RC.mac[]\n");
if(RC.mac[ctxt_pP->module_id]->UE_list.UE_sched_ctrl[UE_id].crnti_reconfigurationcomplete_flag == 1) { if(RC.mac[ctxt_pP->module_id]->UE_list.UE_sched_ctrl[UE_id].crnti_reconfigurationcomplete_flag == 1) {
...@@ -6906,7 +6878,7 @@ rrc_eNB_decode_dcch( ...@@ -6906,7 +6878,7 @@ rrc_eNB_decode_dcch(
if (ul_dcch_msg->message.choice.c1.choice.rrcConnectionSetupComplete.criticalExtensions.choice.c1. if (ul_dcch_msg->message.choice.c1.choice.rrcConnectionSetupComplete.criticalExtensions.choice.c1.
present == present ==
LTE_RRCConnectionSetupComplete__criticalExtensions__c1_PR_rrcConnectionSetupComplete_r8) { LTE_RRCConnectionSetupComplete__criticalExtensions__c1_PR_rrcConnectionSetupComplete_r8) {
AssertFatal(RC.rrc[ctxt_pP->module_id]->node_type != ngran_eNB_DU && RC.rrc[ctxt_pP->module_id]->node_type != ngran_gNB_DU, AssertFatal(!NODE_IS_DU(RC.rrc[ctxt_pP->module_id]->node_type),
"should not be reached in DU\n"); "should not be reached in DU\n");
rrc_eNB_process_RRCConnectionSetupComplete( rrc_eNB_process_RRCConnectionSetupComplete(
ctxt_pP, ctxt_pP,
...@@ -7436,7 +7408,7 @@ void rrc_subframe_process(protocol_ctxt_t *const ctxt_pP, const int CC_id) ...@@ -7436,7 +7408,7 @@ void rrc_subframe_process(protocol_ctxt_t *const ctxt_pP, const int CC_id)
ue_context_p->ue_context.rnti, ue_context_p->ue_context.rnti,
ue_context_p->ue_context.ue_release_timer_thres_s1); ue_context_p->ue_context.ue_release_timer_thres_s1);
if (EPC_MODE_ENABLED && RC.rrc[ctxt_pP->module_id]->node_type != ngran_eNB_DU) if (EPC_MODE_ENABLED && !NODE_IS_DU(RC.rrc[ctxt_pP->module_id]->node_type))
rrc_eNB_generate_RRCConnectionRelease(ctxt_pP, ue_context_p); rrc_eNB_generate_RRCConnectionRelease(ctxt_pP, ue_context_p);
else else
ue_to_be_removed = ue_context_p; ue_to_be_removed = ue_context_p;
...@@ -7489,7 +7461,7 @@ void rrc_subframe_process(protocol_ctxt_t *const ctxt_pP, const int CC_id) ...@@ -7489,7 +7461,7 @@ void rrc_subframe_process(protocol_ctxt_t *const ctxt_pP, const int CC_id)
ue_context_p->ue_context.ue_release_timer_rrc = 1; ue_context_p->ue_context.ue_release_timer_rrc = 1;
ue_context_p->ue_context.ue_release_timer_thres_rrc = 100; ue_context_p->ue_context.ue_release_timer_thres_rrc = 100;
if (EPC_MODE_ENABLED && RC.rrc[ctxt_pP->module_id]->node_type != ngran_eNB_DU) { if (EPC_MODE_ENABLED && !NODE_IS_DU(RC.rrc[ctxt_pP->module_id]->node_type)) {
if (rrc_release_info.RRC_release_ctrl[release_num].flag == 4) { // if timer_s1 == 0 if (rrc_release_info.RRC_release_ctrl[release_num].flag == 4) { // if timer_s1 == 0
rrc_eNB_send_S1AP_UE_CONTEXT_RELEASE_CPLT(ctxt_pP->module_id, rrc_eNB_send_S1AP_UE_CONTEXT_RELEASE_CPLT(ctxt_pP->module_id,
ue_context_p->ue_context.eNB_ue_s1ap_id); ue_context_p->ue_context.eNB_ue_s1ap_id);
...@@ -7512,7 +7484,7 @@ void rrc_subframe_process(protocol_ctxt_t *const ctxt_pP, const int CC_id) ...@@ -7512,7 +7484,7 @@ void rrc_subframe_process(protocol_ctxt_t *const ctxt_pP, const int CC_id)
if (rrc_ue_s1ap_ids != NULL) { if (rrc_ue_s1ap_ids != NULL) {
rrc_eNB_S1AP_remove_ue_ids(RC.rrc[ctxt_pP->module_id], rrc_ue_s1ap_ids); rrc_eNB_S1AP_remove_ue_ids(RC.rrc[ctxt_pP->module_id], rrc_ue_s1ap_ids);
} }
} /* EPC_MODE_ENABLED && node_type != ngran_eNB_DU */ } /* EPC_MODE_ENABLED && !NODE_IS_DU */
rrc_release_info.RRC_release_ctrl[release_num].flag = 0; rrc_release_info.RRC_release_ctrl[release_num].flag = 0;
rrc_release_info.num_UEs--; rrc_release_info.num_UEs--;
...@@ -7851,7 +7823,7 @@ void *rrc_enb_process_itti_msg(void *notUsed) { ...@@ -7851,7 +7823,7 @@ void *rrc_enb_process_itti_msg(void *notUsed) {
/* Messages from F1AP task */ /* Messages from F1AP task */
case F1AP_SETUP_REQ: case F1AP_SETUP_REQ:
AssertFatal(RC.rrc[0]->node_type == ngran_eNB_CU || RC.rrc[0]->node_type == ngran_ng_eNB_CU, AssertFatal(NODE_IS_CU(RC.rrc[instance]->node_type),
"should not receive F1AP_SETUP_REQUEST, need call by CU!\n"); "should not receive F1AP_SETUP_REQUEST, need call by CU!\n");
LOG_I(RRC,"[eNB %d] Received %s : %p\n", instance, msg_name_p, &F1AP_SETUP_REQ(msg_p)); LOG_I(RRC,"[eNB %d] Received %s : %p\n", instance, msg_name_p, &F1AP_SETUP_REQ(msg_p));
handle_f1_setup_req(&F1AP_SETUP_REQ(msg_p)); handle_f1_setup_req(&F1AP_SETUP_REQ(msg_p));
......
...@@ -64,39 +64,29 @@ int create_tasks(uint32_t enb_nb) { ...@@ -64,39 +64,29 @@ int create_tasks(uint32_t enb_nb) {
} }
switch (type) { if (EPC_MODE_ENABLED && !NODE_IS_DU(type)) {
case ngran_eNB_CU: rc = itti_create_task(TASK_S1AP, s1ap_eNB_task, NULL);
case ngran_ng_eNB_CU: AssertFatal(rc >= 0, "Create task for S1AP failed\n");
case ngran_gNB_CU: if (!(get_softmodem_params()->emulate_rf)){
rc = itti_create_task(TASK_UDP, udp_eNB_task, NULL);
AssertFatal(rc >= 0, "Create task for UDP failed\n");
}
rc = itti_create_task(TASK_GTPV1_U, gtpv1u_eNB_task, NULL);
AssertFatal(rc >= 0, "Create task for GTPV1U failed\n");
if (is_x2ap_enabled()) {
rc = itti_create_task(TASK_X2AP, x2ap_task, NULL);
AssertFatal(rc >= 0, "Create task for X2AP failed\n");
} else {
LOG_I(X2AP, "X2AP is disabled.\n");
}
}
if (NODE_IS_CU(type)) {
rc = itti_create_task(TASK_CU_F1, F1AP_CU_task, NULL); rc = itti_create_task(TASK_CU_F1, F1AP_CU_task, NULL);
AssertFatal(rc >= 0, "Create task for CU F1AP failed\n"); AssertFatal(rc >= 0, "Create task for CU F1AP failed\n");
/* fall through */
case ngran_eNB:
case ngran_ng_eNB:
case ngran_gNB:
if (EPC_MODE_ENABLED) {
rc = itti_create_task(TASK_S1AP, s1ap_eNB_task, NULL);
AssertFatal(rc >= 0, "Create task for S1AP failed\n");
if (!(get_softmodem_params()->emulate_rf)){
rc = itti_create_task(TASK_UDP, udp_eNB_task, NULL);
AssertFatal(rc >= 0, "Create task for UDP failed\n");
}
rc = itti_create_task(TASK_GTPV1_U, gtpv1u_eNB_task, NULL);
AssertFatal(rc >= 0, "Create task for GTPV1U failed\n");
if (is_x2ap_enabled()) {
rc = itti_create_task(TASK_X2AP, x2ap_task, NULL);
AssertFatal(rc >= 0, "Create task for X2AP failed\n");
} else {
LOG_I(X2AP, "X2AP is disabled.\n");
}
}
break;
default:
/* intentionally left blank */
break;
} }
if (type == ngran_eNB_DU || type == ngran_gNB_DU) { if (NODE_IS_DU(type)) {
rc = itti_create_task(TASK_DU_F1, F1AP_DU_task, NULL); rc = itti_create_task(TASK_DU_F1, F1AP_DU_task, NULL);
AssertFatal(rc >= 0, "Create task for DU F1AP failed\n"); AssertFatal(rc >= 0, "Create task for DU F1AP failed\n");
} }
......
...@@ -688,8 +688,7 @@ int main( int argc, char **argv ) { ...@@ -688,8 +688,7 @@ int main( int argc, char **argv ) {
RCconfig_L1(); RCconfig_L1();
} }
if (RC.nb_inst > 0 if (RC.nb_inst > 0 && NODE_IS_CU(RC.rrc[0]->node_type)) {
&& (RC.rrc[0]->node_type == ngran_eNB_CU || RC.rrc[0]->node_type == ngran_ng_eNB_CU)) {
protocol_ctxt_t ctxt; protocol_ctxt_t ctxt;
ctxt.module_id = 0 ; ctxt.module_id = 0 ;
ctxt.instance = 0; ctxt.instance = 0;
...@@ -699,8 +698,7 @@ int main( int argc, char **argv ) { ...@@ -699,8 +698,7 @@ int main( int argc, char **argv ) {
} }
/* start threads if only L1 or not a CU */ /* start threads if only L1 or not a CU */
if (RC.nb_inst == 0 || if (RC.nb_inst == 0 || !NODE_IS_CU(RC.rrc[0]->node_type)) {
!(RC.rrc[0]->node_type == ngran_eNB_CU || RC.rrc[0]->node_type == ngran_ng_eNB_CU)) {
// init UE_PF_PO and mutex lock // init UE_PF_PO and mutex lock
pthread_mutex_init(&ue_pf_po_mutex, NULL); pthread_mutex_init(&ue_pf_po_mutex, NULL);
memset (&UE_PF_PO[0][0], 0, sizeof(UE_PF_PO_t)*MAX_MOBILES_PER_ENB*MAX_NUM_CCs); memset (&UE_PF_PO[0][0], 0, sizeof(UE_PF_PO_t)*MAX_MOBILES_PER_ENB*MAX_NUM_CCs);
...@@ -851,8 +849,7 @@ int main( int argc, char **argv ) { ...@@ -851,8 +849,7 @@ int main( int argc, char **argv ) {
// stop threads // stop threads
if (RC.nb_inst == 0 || if (RC.nb_inst == 0 || !NODE_IS_CU(RC.rrc[0]->node_type)) {
!(RC.rrc[0]->node_type == ngran_eNB_CU || RC.rrc[0]->node_type == ngran_ng_eNB_CU)) {
int UE_id; int UE_id;
#ifdef XFORMS #ifdef XFORMS
printf("waiting for XFORMS thread\n"); printf("waiting for XFORMS thread\n");
......
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