Commit 461bfa5f authored by Raymond Knopp's avatar Raymond Knopp

Merge branch 'feature-127-protocol-split' of...

Merge branch 'feature-127-protocol-split' of https://gitlab.eurecom.fr/oai/openairinterface5g into feature-127-protocol-split
parents 5a862296 a8bd9df3
...@@ -80,7 +80,6 @@ typedef struct mme_ip_address_s { ...@@ -80,7 +80,6 @@ typedef struct mme_ip_address_s {
} mme_ip_address_t; } mme_ip_address_t;
typedef struct cu_params { typedef struct cu_params {
const char *local_interface;
const char *local_ipv4_address; const char *local_ipv4_address;
const uint16_t local_port; const uint16_t local_port;
const char *remote_ipv4_address; const char *remote_ipv4_address;
......
...@@ -357,13 +357,15 @@ int CU_handle_UL_RRC_MESSAGE_TRANSFER(instance_t instance, ...@@ -357,13 +357,15 @@ int CU_handle_UL_RRC_MESSAGE_TRANSFER(instance_t instance,
*/ */
protocol_ctxt_t ctxt; protocol_ctxt_t ctxt;
ctxt.module_id = instance; ctxt.module_id = instance;
ctxt.instance = instance;
ctxt.rnti = f1ap_get_rnti_by_cu_id(&f1ap_cu_ue[instance],cu_ue_f1ap_id); ctxt.rnti = f1ap_get_rnti_by_cu_id(&f1ap_cu_ue[instance],cu_ue_f1ap_id);
ctxt.enb_flag = 1; ctxt.enb_flag = 1;
mem_block_t *mb = get_free_mem_block(ie->value.choice.RRCContainer.size,__func__); mem_block_t *mb = get_free_mem_block(ie->value.choice.RRCContainer.size,__func__);
memcpy((void*)mb->data,(void*)ie->value.choice.RRCContainer.buf,ie->value.choice.RRCContainer.size); memcpy((void*)mb->data,(void*)ie->value.choice.RRCContainer.buf,ie->value.choice.RRCContainer.size);
LOG_I(CU_F1AP, "Calling pdcp_data_ind for UE RNTI %x srb_id %lu with size %d (DCCH) \n", ctxt.rnti, srb_id, ie->value.choice.RRCContainer.size);
pdcp_data_ind (&ctxt, pdcp_data_ind (&ctxt,
1, 1, // srb_flag
0, 0, // embms_flag
srb_id, srb_id,
ie->value.choice.RRCContainer.size, ie->value.choice.RRCContainer.size,
mb); mb);
......
...@@ -68,7 +68,6 @@ void cu_task_handle_sctp_association_resp(instance_t instance, sctp_new_associat ...@@ -68,7 +68,6 @@ void cu_task_handle_sctp_association_resp(instance_t instance, sctp_new_associat
/* setup parameters for F1U and start the server */ /* setup parameters for F1U and start the server */
const cudu_params_t params = { const cudu_params_t params = {
.local_interface = NULL, /* is not used */
.local_ipv4_address = RC.rrc[instance]->eth_params_s.my_addr, .local_ipv4_address = RC.rrc[instance]->eth_params_s.my_addr,
.local_port = RC.rrc[instance]->eth_params_s.my_portd, .local_port = RC.rrc[instance]->eth_params_s.my_portd,
.remote_ipv4_address = RC.rrc[instance]->eth_params_s.remote_addr, .remote_ipv4_address = RC.rrc[instance]->eth_params_s.remote_addr,
......
...@@ -175,6 +175,12 @@ int DU_handle_DL_RRC_MESSAGE_TRANSFER(instance_t instance, ...@@ -175,6 +175,12 @@ int DU_handle_DL_RRC_MESSAGE_TRANSFER(instance_t instance,
// decode RRC Container and act on the message type // decode RRC Container and act on the message type
AssertFatal(srb_id<3,"illegal srb_id\n"); AssertFatal(srb_id<3,"illegal srb_id\n");
protocol_ctxt_t ctxt;
ctxt.rnti = f1ap_get_rnti_by_du_id(&f1ap_du_ue[instance],du_ue_f1ap_id);
ctxt.module_id = instance;
ctxt.instance = instance;
ctxt.enb_flag = 1;
if (srb_id == 0) { if (srb_id == 0) {
DL_CCCH_Message_t* dl_ccch_msg=NULL; DL_CCCH_Message_t* dl_ccch_msg=NULL;
asn_dec_rval_t dec_rval; asn_dec_rval_t dec_rval;
...@@ -238,15 +244,8 @@ int DU_handle_DL_RRC_MESSAGE_TRANSFER(instance_t instance, ...@@ -238,15 +244,8 @@ int DU_handle_DL_RRC_MESSAGE_TRANSFER(instance_t instance,
} else { } else {
SRB1_logicalChannelConfig = &SRB1_logicalChannelConfig_defaultValue; SRB1_logicalChannelConfig = &SRB1_logicalChannelConfig_defaultValue;
} }
}
} }
} // for
protocol_ctxt_t ctxt;
ctxt.rnti = f1ap_get_rnti_by_du_id(&f1ap_du_ue[instance],du_ue_f1ap_id);
ctxt.module_id = instance;
ctxt.enb_flag = 1;
rrc_rlc_config_asn1_req(&ctxt, rrc_rlc_config_asn1_req(&ctxt,
SRB_configList, SRB_configList,
(DRB_ToAddModList_t*) NULL, (DRB_ToAddModList_t*) NULL,
...@@ -308,20 +307,76 @@ int DU_handle_DL_RRC_MESSAGE_TRANSFER(instance_t instance, ...@@ -308,20 +307,76 @@ int DU_handle_DL_RRC_MESSAGE_TRANSFER(instance_t instance,
#endif #endif
); );
break; break;
} // case
default: default:
AssertFatal(1==0, AssertFatal(1==0,
"Unknown message\n"); "Unknown message\n");
break; break;
} }// switch case
} else if (srb_id == 1) {
// rrc_rlc_config_asn1_req(&ctxt,
// SRB_configList,
// (DRB_ToAddModList_t*) NULL,
// (DRB_ToReleaseList_t*) NULL
// #if (RRC_VERSION >= MAKE_VERSION(9, 0, 0))
// , (PMCH_InfoList_r9_t *) NULL,
// 0,0
// # endif
// );
LOG_I(DU_F1AP, "Received DL RRC Transfer on srb_id 1\n");
rlc_op_status_t rlc_status;
boolean_t ret = TRUE;
mem_block_t *pdcp_pdu_p = NULL;
pdcp_pdu_p = get_free_mem_block(rrc_dl_sdu_len, __func__);
memset(&pdcp_pdu_p->data[0], 0, rrc_dl_sdu_len);
memcpy(&pdcp_pdu_p->data[0], ie->value.choice.RRCContainer.buf, rrc_dl_sdu_len);
if (pdcp_pdu_p != NULL) {
rlc_status = rlc_data_req(&ctxt
, 1
, MBMS_FLAG_NO
, srb_id
, 0
, 0
, rrc_dl_sdu_len
, pdcp_pdu_p
#ifdef Rel14
,NULL
,NULL
#endif
);
switch (rlc_status) {
case RLC_OP_STATUS_OK:
LOG_D(PDCP, "Data sending request over RLC succeeded!\n");
ret=TRUE;
break;
} case RLC_OP_STATUS_BAD_PARAMETER:
} LOG_W(PDCP, "Data sending request over RLC failed with 'Bad Parameter' reason!\n");
else if (srb_id == 1){ ret= FALSE;
break;
} case RLC_OP_STATUS_INTERNAL_ERROR:
LOG_W(PDCP, "Data sending request over RLC failed with 'Internal Error' reason!\n");
ret= FALSE;
break;
else if (srb_id == 2){ case RLC_OP_STATUS_OUT_OF_RESSOURCES:
LOG_W(PDCP, "Data sending request over RLC failed with 'Out of Resources' reason!\n");
ret= FALSE;
break;
default:
LOG_W(PDCP, "RLC returned an unknown status code after PDCP placed the order to send some data (Status Code:%d)\n", rlc_status);
ret= FALSE;
break;
} // switch case
return ret;
} // if pdcp_pdu_p
} else if (srb_id == 2) {
} }
#endif #endif
...@@ -336,7 +391,6 @@ int DU_send_UL_RRC_MESSAGE_TRANSFER(const protocol_ctxt_t* const ctxt_pP, ...@@ -336,7 +391,6 @@ int DU_send_UL_RRC_MESSAGE_TRANSFER(const protocol_ctxt_t* const ctxt_pP,
) { ) {
rnti_t rnti = ctxt_pP->rnti; rnti_t rnti = ctxt_pP->rnti;
F1AP_F1AP_PDU_t pdu; F1AP_F1AP_PDU_t pdu;
...@@ -402,6 +456,7 @@ int DU_send_UL_RRC_MESSAGE_TRANSFER(const protocol_ctxt_t* const ctxt_pP, ...@@ -402,6 +456,7 @@ int DU_send_UL_RRC_MESSAGE_TRANSFER(const protocol_ctxt_t* const ctxt_pP,
LOG_E(DU_F1AP, "Failed to encode F1 setup request\n"); LOG_E(DU_F1AP, "Failed to encode F1 setup request\n");
return -1; return -1;
} }
LOG_W(DU_F1AP, "DU_send_UL_RRC_MESSAGE_TRANSFER on SRB %d for UE %x \n", rb_idP, rnti);
du_f1ap_itti_send_sctp_data_req(instance, f1ap_du_data->assoc_id, buffer, len, f1ap_du_data->default_sctp_stream_id); du_f1ap_itti_send_sctp_data_req(instance, f1ap_du_data->assoc_id, buffer, len, f1ap_du_data->default_sctp_stream_id);
return 0; return 0;
......
...@@ -100,7 +100,6 @@ void du_task_handle_sctp_association_resp(instance_t instance, sctp_new_associat ...@@ -100,7 +100,6 @@ void du_task_handle_sctp_association_resp(instance_t instance, sctp_new_associat
/* setup parameters for F1U and start the server */ /* setup parameters for F1U and start the server */
const cudu_params_t params = { const cudu_params_t params = {
.local_interface = NULL, /* is not used */
.local_ipv4_address = RC.mac[instance]->eth_params_n.my_addr, .local_ipv4_address = RC.mac[instance]->eth_params_n.my_addr,
.local_port = RC.mac[instance]->eth_params_n.my_portd, .local_port = RC.mac[instance]->eth_params_n.my_portd,
.remote_ipv4_address = RC.mac[instance]->eth_params_n.remote_addr, .remote_ipv4_address = RC.mac[instance]->eth_params_n.remote_addr,
...@@ -175,8 +174,9 @@ void *F1AP_DU_task(void *arg) { ...@@ -175,8 +174,9 @@ void *F1AP_DU_task(void *arg) {
case F1AP_UL_RRC_MESSAGE: // from rrc case F1AP_UL_RRC_MESSAGE: // from rrc
LOG_I(DU_F1AP, "DU Task Received F1AP_UL_RRC_MESSAGE\n"); LOG_I(DU_F1AP, "DU Task Received F1AP_UL_RRC_MESSAGE\n");
DU_send_UL_RRC_MESSAGE_TRANSFER(ITTI_MESSAGE_GET_INSTANCE(received_msg), AssertFatal (1 == 0, "Should not be here!\n" );
&F1AP_UL_RRC_MESSAGE(received_msg)); //DU_send_UL_RRC_MESSAGE_TRANSFER(ITTI_MESSAGE_GET_INSTANCE(received_msg),
// &F1AP_UL_RRC_MESSAGE(received_msg));
break; break;
case TERMINATE_MESSAGE: case TERMINATE_MESSAGE:
......
...@@ -119,7 +119,7 @@ int f1ap_handle_message(instance_t instance, uint32_t assoc_id, int32_t stream, ...@@ -119,7 +119,7 @@ int f1ap_handle_message(instance_t instance, uint32_t assoc_id, int32_t stream,
} }
/* Calling the right handler */ /* Calling the right handler */
LOG_I(DU_F1AP, "Calling handler with instance %d\n",instance); LOG_I(F1AP, "Calling handler with instance %d\n",instance);
ret = (*f1ap_messages_callback[pdu.choice.initiatingMessage->procedureCode][pdu.present - 1]) ret = (*f1ap_messages_callback[pdu.choice.initiatingMessage->procedureCode][pdu.present - 1])
(instance, assoc_id, stream, &pdu); (instance, assoc_id, stream, &pdu);
ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_F1AP_F1AP_PDU, &pdu); ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_F1AP_F1AP_PDU, &pdu);
......
...@@ -49,9 +49,7 @@ ...@@ -49,9 +49,7 @@
#include "platform_constants.h" #include "platform_constants.h"
#include "common/utils/LOG/vcd_signal_dumper.h" #include "common/utils/LOG/vcd_signal_dumper.h"
#include "msc.h" #include "msc.h"
#include "common/ngran_types.h"
#if defined(ENABLE_SECURITY) #if defined(ENABLE_SECURITY)
# include "UTIL/OSA/osa_defs.h" # include "UTIL/OSA/osa_defs.h"
...@@ -411,11 +409,34 @@ boolean_t pdcp_data_req( ...@@ -411,11 +409,34 @@ boolean_t pdcp_data_req(
free_mem_block(pdcp_pdu_p, __FUNCTION__); free_mem_block(pdcp_pdu_p, __FUNCTION__);
rlc_status = ack_result; rlc_status = ack_result;
} }
else // SRB
else
#endif /*UETARGET*/ #endif /*UETARGET*/
{ {
LOG_I(PDCP, "Sending F1AP_DL_RRC_MESSAGE with ITTI\n");
//It should never get here //It should never get here
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) ) {
// DL transfer
MessageDef *message_p;
// Note: the acyual task must be TASK_PDCP_ENB, but this task is not created
message_p = itti_alloc_new_message (TASK_PDCP_ENB, F1AP_DL_RRC_MESSAGE);
F1AP_DL_RRC_MESSAGE (message_p).rrc_container = &pdcp_pdu_p->data[0] ;
F1AP_DL_RRC_MESSAGE (message_p).rrc_container_length = pdcp_pdu_size;
F1AP_DL_RRC_MESSAGE (message_p).gNB_CU_ue_id = 0;
F1AP_DL_RRC_MESSAGE (message_p).gNB_DU_ue_id = 0;
F1AP_DL_RRC_MESSAGE (message_p).old_gNB_DU_ue_id = 0xFFFFFFFF; // unknown
F1AP_DL_RRC_MESSAGE (message_p).rnti = ctxt_pP->rnti;
F1AP_DL_RRC_MESSAGE (message_p).srb_id = rb_idP;
F1AP_DL_RRC_MESSAGE (message_p).execute_duplication = 1;
F1AP_DL_RRC_MESSAGE (message_p).RAT_frequency_priority_information.en_dc = 0;
itti_send_msg_to_task (TASK_CU_F1, ctxt_pP->module_id, message_p);
//CU_send_DL_RRC_MESSAGE_TRANSFER(ctxt_pP->module_id, message_p);
LOG_I(PDCP, "Send F1AP_DL_RRC_MESSAGE with ITTI\n");
ret=TRUE;
} else{
rlc_status = rlc_data_req(ctxt_pP rlc_status = rlc_data_req(ctxt_pP
, srb_flagP , srb_flagP
, MBMS_FLAG_NO , MBMS_FLAG_NO
...@@ -424,15 +445,11 @@ boolean_t pdcp_data_req( ...@@ -424,15 +445,11 @@ boolean_t pdcp_data_req(
, confirmP , confirmP
, pdcp_pdu_size , pdcp_pdu_size
, pdcp_pdu_p , pdcp_pdu_p
#ifdef Rel14 #ifdef Rel14
,NULL ,NULL
,NULL ,NULL
#endif #endif
); );
}
}
switch (rlc_status) { switch (rlc_status) {
case RLC_OP_STATUS_OK: case RLC_OP_STATUS_OK:
LOG_D(PDCP, "Data sending request over RLC succeeded!\n"); LOG_D(PDCP, "Data sending request over RLC succeeded!\n");
...@@ -458,6 +475,9 @@ boolean_t pdcp_data_req( ...@@ -458,6 +475,9 @@ boolean_t pdcp_data_req(
LOG_W(PDCP, "RLC returned an unknown status code after PDCP placed the order to send some data (Status Code:%d)\n", rlc_status); LOG_W(PDCP, "RLC returned an unknown status code after PDCP placed the order to send some data (Status Code:%d)\n", rlc_status);
ret= FALSE; ret= FALSE;
break; break;
} // switch case
}
}
} }
if (ctxt_pP->enb_flag == ENB_FLAG_YES) { if (ctxt_pP->enb_flag == ENB_FLAG_YES) {
...@@ -978,6 +998,8 @@ void pdcp_update_stats(const protocol_ctxt_t* const ctxt_pP){ ...@@ -978,6 +998,8 @@ void pdcp_update_stats(const protocol_ctxt_t* const ctxt_pP){
} }
} }
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
void void
pdcp_run ( pdcp_run (
...@@ -1020,6 +1042,7 @@ pdcp_run ( ...@@ -1020,6 +1042,7 @@ pdcp_run (
RRC_DCCH_DATA_REQ (msg_p).frame, RRC_DCCH_DATA_REQ (msg_p).frame,
0, 0,
RRC_DCCH_DATA_REQ (msg_p).eNB_index); RRC_DCCH_DATA_REQ (msg_p).eNB_index);
LOG_I(PDCP, PROTOCOL_CTXT_FMT"Received %s from %s: instance %d, rb_id %d, muiP %d, confirmP %d, mode %d\n", LOG_I(PDCP, PROTOCOL_CTXT_FMT"Received %s from %s: instance %d, rb_id %d, muiP %d, confirmP %d, mode %d\n",
PROTOCOL_CTXT_ARGS(&ctxt), PROTOCOL_CTXT_ARGS(&ctxt),
ITTI_MSG_NAME (msg_p), ITTI_MSG_NAME (msg_p),
...@@ -1030,6 +1053,8 @@ pdcp_run ( ...@@ -1030,6 +1053,8 @@ pdcp_run (
RRC_DCCH_DATA_REQ (msg_p).confirmp, RRC_DCCH_DATA_REQ (msg_p).confirmp,
RRC_DCCH_DATA_REQ (msg_p).mode); RRC_DCCH_DATA_REQ (msg_p).mode);
log_dump(PDCP, RRC_DCCH_DATA_REQ (msg_p).sdu_p, RRC_DCCH_DATA_REQ (msg_p).sdu_size, LOG_DUMP_CHAR,"[MSG] pdcp run\n");
result = pdcp_data_req (&ctxt, result = pdcp_data_req (&ctxt,
SRB_FLAG_YES, SRB_FLAG_YES,
RRC_DCCH_DATA_REQ (msg_p).rb_id, RRC_DCCH_DATA_REQ (msg_p).rb_id,
......
...@@ -51,7 +51,6 @@ void close_proto_agent(void) ...@@ -51,7 +51,6 @@ void close_proto_agent(void)
int main(int argc, char *argv[]) int main(int argc, char *argv[])
{ {
const cudu_params_t params = { const cudu_params_t params = {
.local_interface = "lo",
.local_ipv4_address = "192.168.12.45", .local_ipv4_address = "192.168.12.45",
.local_port = 6464, .local_port = 6464,
.remote_ipv4_address = "192.168.12.45", .remote_ipv4_address = "192.168.12.45",
......
...@@ -52,7 +52,6 @@ void close_proto_agent(void) ...@@ -52,7 +52,6 @@ void close_proto_agent(void)
int main(int argc, char *argv[]) int main(int argc, char *argv[])
{ {
const cudu_params_t params = { const cudu_params_t params = {
.local_interface = "lo",
.local_ipv4_address = "192.168.12.45", .local_ipv4_address = "192.168.12.45",
.local_port = 6465, .local_port = 6465,
.remote_ipv4_address = "192.168.12.45", .remote_ipv4_address = "192.168.12.45",
......
...@@ -59,7 +59,6 @@ int proto_agent_start(mod_id_t mod_id, const cudu_params_t *p) ...@@ -59,7 +59,6 @@ int proto_agent_start(mod_id_t mod_id, const cudu_params_t *p)
{ {
int channel_id; int channel_id;
DevAssert(p->local_interface);
DevAssert(p->local_ipv4_address); DevAssert(p->local_ipv4_address);
DevAssert(p->local_port > 1024); // "unprivileged" port DevAssert(p->local_port > 1024); // "unprivileged" port
DevAssert(p->remote_ipv4_address); DevAssert(p->remote_ipv4_address);
......
...@@ -260,12 +260,12 @@ void mac_rlc_data_ind ( ...@@ -260,12 +260,12 @@ void mac_rlc_data_ind (
#ifdef DEBUG_MAC_INTERFACE #ifdef DEBUG_MAC_INTERFACE
if (num_tbP) { if (num_tbP) {
LOG_I(RLC, PROTOCOL_CTXT_FMT" MAC_RLC_DATA_IND on channel %d (%d), rb max %d, Num_tb %d\n", LOG_I(RLC, PROTOCOL_CTXT_FMT" MAC_RLC_DATA_IND on channel %d (%d), rb max %d, tb_sizeP %d\n",
PROTOCOL_CTXT_ARGS(&ctxt), PROTOCOL_CTXT_ARGS(&ctxt),
channel_idP, channel_idP,
RLC_MAX_LC, RLC_MAX_LC,
NB_RB_MAX, NB_RB_MAX,
num_tbP); tb_sizeP);
} }
#endif // DEBUG_MAC_INTERFACE #endif // DEBUG_MAC_INTERFACE
......
...@@ -94,6 +94,8 @@ rrc_data_req( ...@@ -94,6 +94,8 @@ rrc_data_req(
RRC_DCCH_DATA_REQ (message_p).confirmp = confirmP; RRC_DCCH_DATA_REQ (message_p).confirmp = confirmP;
RRC_DCCH_DATA_REQ (message_p).sdu_size = sdu_sizeP; RRC_DCCH_DATA_REQ (message_p).sdu_size = sdu_sizeP;
RRC_DCCH_DATA_REQ (message_p).sdu_p = message_buffer; RRC_DCCH_DATA_REQ (message_p).sdu_p = message_buffer;
//memcpy (RRC_DCCH_DATA_REQ (message_p).sdu_p, buffer_pP, sdu_sizeP);
RRC_DCCH_DATA_REQ (message_p).mode = modeP; RRC_DCCH_DATA_REQ (message_p).mode = modeP;
RRC_DCCH_DATA_REQ (message_p).module_id = ctxt_pP->module_id; RRC_DCCH_DATA_REQ (message_p).module_id = ctxt_pP->module_id;
RRC_DCCH_DATA_REQ (message_p).rnti = ctxt_pP->rnti; RRC_DCCH_DATA_REQ (message_p).rnti = ctxt_pP->rnti;
...@@ -103,6 +105,10 @@ rrc_data_req( ...@@ -103,6 +105,10 @@ rrc_data_req(
ctxt_pP->enb_flag ? TASK_PDCP_ENB : TASK_PDCP_UE, ctxt_pP->enb_flag ? TASK_PDCP_ENB : TASK_PDCP_UE,
ctxt_pP->instance, ctxt_pP->instance,
message_p); message_p);
LOG_I(RRC,"sent RRC_DCCH_DATA_REQ to TASK_PDCP_ENB\n");
// RS/BK: Fix ME
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.
} }
......
...@@ -1167,8 +1167,10 @@ rrc_eNB_generate_SecurityModeCommand( ...@@ -1167,8 +1167,10 @@ rrc_eNB_generate_SecurityModeCommand(
rrc_eNB_mui, rrc_eNB_mui,
size); size);
if ((RC.rrc[ctxt_pP->module_id]->node_type == ngran_eNB) || if ((RC.rrc[ctxt_pP->module_id]->node_type != ngran_eNB_DU) ||
(RC.rrc[ctxt_pP->module_id]->node_type == ngran_ng_eNB)) { (RC.rrc[ctxt_pP->module_id]->node_type != ngran_gNB_DU)) {
LOG_I(RRC,"calling rrc_data_req :securityModeCommand\n");
rrc_data_req( rrc_data_req(
ctxt_pP, ctxt_pP,
DCCH, DCCH,
......
...@@ -923,7 +923,6 @@ rrc_eNB_process_S1AP_DOWNLINK_NAS( ...@@ -923,7 +923,6 @@ rrc_eNB_process_S1AP_DOWNLINK_NAS(
S1AP_DOWNLINK_NAS (msg_p).nas_pdu.buffer); S1AP_DOWNLINK_NAS (msg_p).nas_pdu.buffer);
LOG_DUMPMSG(RRC,DEBUG_RRC,buffer,length,"[MSG] RRC DL Information Transfer\n"); LOG_DUMPMSG(RRC,DEBUG_RRC,buffer,length,"[MSG] RRC DL Information Transfer\n");
/* /*
* switch UL or DL NAS message without RRC piggybacked to SRB2 if active. * switch UL or DL NAS message without RRC piggybacked to SRB2 if active.
*/ */
......
...@@ -85,6 +85,10 @@ int create_tasks(uint32_t enb_nb) ...@@ -85,6 +85,10 @@ int create_tasks(uint32_t enb_nb)
if (enb_nb > 0) { if (enb_nb > 0) {
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");
//RS/BK: Fix me!
rc = itti_create_task (TASK_L2L1, l2l1_task, NULL);
AssertFatal(rc >= 0, "Create task for L2L1 failed\n");
} }
/* fall through */ /* fall through */
case ngran_eNB: case ngran_eNB:
......
...@@ -1082,6 +1082,16 @@ int main( int argc, char **argv ) ...@@ -1082,6 +1082,16 @@ int main( int argc, char **argv )
RCconfig_L1(); RCconfig_L1();
} }
if (RC.rrc[0]->node_type == ngran_eNB_CU || RC.rrc[0]->node_type == ngran_ng_eNB_CU) {
protocol_ctxt_t ctxt;
ctxt.module_id = 0 ;
ctxt.instance = 0;
ctxt.rnti = 0;
ctxt.enb_flag = 1;
pdcp_run(&ctxt);
}
/* 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 ||
!(RC.rrc[0]->node_type == ngran_eNB_CU || RC.rrc[0]->node_type == ngran_ng_eNB_CU)) { !(RC.rrc[0]->node_type == ngran_eNB_CU || RC.rrc[0]->node_type == ngran_ng_eNB_CU)) {
......
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