Commit 51c0c422 authored by Raymond Knopp's avatar Raymond Knopp

rrc_eNB.c compiles

rrc_eNB_S1AP.c doesn't
parent efeb48e0
...@@ -5847,6 +5847,10 @@ rrc_eNB_decode_ccch( ...@@ -5847,6 +5847,10 @@ rrc_eNB_decode_ccch(
RC.rrc[ctxt_pP->module_id], RC.rrc[ctxt_pP->module_id],
ctxt_pP->rnti); ctxt_pP->rnti);
if (ue_context_p != NULL) {
// erase content
rrc_eNB_free_mem_UE_context(ctxt_pP, ue_context_p);
MSC_LOG_RX_DISCARDED_MESSAGE( MSC_LOG_RX_DISCARDED_MESSAGE(
MSC_RRC_ENB, MSC_RRC_ENB,
...@@ -5909,18 +5913,6 @@ rrc_eNB_decode_ccch( ...@@ -5909,18 +5913,6 @@ rrc_eNB_decode_ccch(
ue_context_p = rrc_eNB_get_next_free_ue_context(ctxt_pP,random_value); ue_context_p = rrc_eNB_get_next_free_ue_context(ctxt_pP,random_value);
if (ue_context_p == NULL) if (ue_context_p == NULL)
LOG_E(RRC, "%s:%d:%s: rrc_eNB_get_next_free_ue_context returned NULL\n", __FILE__, __LINE__, __FUNCTION__); LOG_E(RRC, "%s:%d:%s: rrc_eNB_get_next_free_ue_context returned NULL\n", __FILE__, __LINE__, __FUNCTION__);
if (ue_context_p != NULL) {
ue_context_p->ue_context.Initialue_identity_s_TMSI.presence = TRUE;
ue_context_p->ue_context.Initialue_identity_s_TMSI.mme_code = mme_code;
ue_context_p->ue_context.Initialue_identity_s_TMSI.m_tmsi = m_tmsi;
} else {
LOG_I(RRC," S-TMSI doesn't exist, setting Initialue_identity_s_TMSI.m_tmsi to %p => %x\n",ue_context_p,m_tmsi);
// ue_context_p = rrc_eNB_get_next_free_ue_context(ctxt_pP, NOT_A_RANDOM_UE_IDENTITY);
ue_context_p = rrc_eNB_get_next_free_ue_context(ctxt_pP,random_value);
if (ue_context_p == NULL)
LOG_E(RRC, "%s:%d:%s: rrc_eNB_get_next_free_ue_context returned NULL\n", __FILE__, __LINE__, __FUNCTION__);
if (ue_context_p != NULL) { if (ue_context_p != NULL) {
ue_context_p->ue_context.Initialue_identity_s_TMSI.presence = TRUE; ue_context_p->ue_context.Initialue_identity_s_TMSI.presence = TRUE;
ue_context_p->ue_context.Initialue_identity_s_TMSI.mme_code = mme_code; ue_context_p->ue_context.Initialue_identity_s_TMSI.mme_code = mme_code;
...@@ -6087,25 +6079,28 @@ rrc_eNB_decode_ccch( ...@@ -6087,25 +6079,28 @@ rrc_eNB_decode_ccch(
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
int int
rrc_eNB_decode_dcch( rrc_eNB_decode_dcch(
const protocol_ctxt_t *const ctxt_pP, const protocol_ctxt_t* const ctxt_pP,
const rb_id_t Srb_id, const rb_id_t Srb_id,
const uint8_t *const Rx_sdu, const uint8_t* const Rx_sdu,
const sdu_size_t sdu_sizeP const sdu_size_t sdu_sizeP
) )
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
{ {
asn_dec_rval_t dec_rval; asn_dec_rval_t dec_rval;
//UL_DCCH_Message_t uldcchmsg; //UL_DCCH_Message_t uldcchmsg;
UL_DCCH_Message_t *ul_dcch_msg = NULL; //&uldcchmsg; UL_DCCH_Message_t *ul_dcch_msg = NULL; //&uldcchmsg;
int i; int i;
struct rrc_eNB_ue_context_s *ue_context_p = NULL; struct rrc_eNB_ue_context_s* ue_context_p = NULL;
#if defined(ENABLE_ITTI) #if defined(ENABLE_ITTI)
# if defined(ENABLE_USE_MME) # if defined(ENABLE_USE_MME)
MessageDef *msg_delete_tunnels_p = NULL; MessageDef * msg_delete_tunnels_p = NULL;
uint8_t xid; uint8_t xid;
#endif #endif
#endif #endif
int dedicated_DRB=0; int dedicated_DRB=0;
T(T_ENB_RRC_UL_DCCH_DATA_IN, T_INT(ctxt_pP->module_id), T_INT(ctxt_pP->frame), T(T_ENB_RRC_UL_DCCH_DATA_IN, T_INT(ctxt_pP->module_id), T_INT(ctxt_pP->frame),
T_INT(ctxt_pP->subframe), T_INT(ctxt_pP->rnti)); T_INT(ctxt_pP->subframe), T_INT(ctxt_pP->rnti));
...@@ -6118,21 +6113,21 @@ rrc_eNB_decode_dcch( ...@@ -6118,21 +6113,21 @@ rrc_eNB_decode_dcch(
PROTOCOL_RRC_CTXT_UE_ARGS(ctxt_pP), PROTOCOL_RRC_CTXT_UE_ARGS(ctxt_pP),
Srb_id); Srb_id);
} }
//memset(ul_dcch_msg,0,sizeof(UL_DCCH_Message_t)); //memset(ul_dcch_msg,0,sizeof(UL_DCCH_Message_t));
LOG_D(RRC, PROTOCOL_RRC_CTXT_UE_FMT" Decoding UL-DCCH Message\n", LOG_D(RRC, PROTOCOL_RRC_CTXT_UE_FMT" Decoding UL-DCCH Message\n",
PROTOCOL_RRC_CTXT_UE_ARGS(ctxt_pP)); PROTOCOL_RRC_CTXT_UE_ARGS(ctxt_pP));
dec_rval = uper_decode( dec_rval = uper_decode(
NULL, NULL,
&asn_DEF_UL_DCCH_Message, &asn_DEF_UL_DCCH_Message,
(void **)&ul_dcch_msg, (void**)&ul_dcch_msg,
Rx_sdu, Rx_sdu,
sdu_sizeP, sdu_sizeP,
0, 0,
0); 0);
/* /*
#if defined(ENABLE_ITTI) #if defined(ENABLE_ITTI)
# if defined(DISABLE_ITTI_XER_PRINT) # if defined(DISABLE_ITTI_XER_PRINT)
{ {
MessageDef *message_p; MessageDef *message_p;
...@@ -6141,7 +6136,7 @@ rrc_eNB_decode_dcch( ...@@ -6141,7 +6136,7 @@ rrc_eNB_decode_dcch(
itti_send_msg_to_task(TASK_UNKNOWN, ctxt_pP->instance, message_p); itti_send_msg_to_task(TASK_UNKNOWN, ctxt_pP->instance, message_p);
} }
# else # else
{ {
char message_string[10000]; char message_string[10000];
size_t message_string_size; size_t message_string_size;
...@@ -6157,8 +6152,8 @@ rrc_eNB_decode_dcch( ...@@ -6157,8 +6152,8 @@ rrc_eNB_decode_dcch(
itti_send_msg_to_task(TASK_UNKNOWN, ctxt_pP->instance, msg_p); itti_send_msg_to_task(TASK_UNKNOWN, ctxt_pP->instance, msg_p);
} }
} }
# endif # endif
#endif #endif
*/ */
{ {
for (i = 0; i < sdu_sizeP; i++) { for (i = 0; i < sdu_sizeP; i++) {
...@@ -6180,6 +6175,7 @@ rrc_eNB_decode_dcch( ...@@ -6180,6 +6175,7 @@ rrc_eNB_decode_dcch(
ctxt_pP->rnti); ctxt_pP->rnti);
if (ul_dcch_msg->message.present == UL_DCCH_MessageType_PR_c1) { if (ul_dcch_msg->message.present == UL_DCCH_MessageType_PR_c1) {
switch (ul_dcch_msg->message.choice.c1.present) { switch (ul_dcch_msg->message.choice.c1.present) {
case UL_DCCH_MessageType__c1_PR_NOTHING: /* No components present */ case UL_DCCH_MessageType__c1_PR_NOTHING: /* No components present */
break; break;
...@@ -6216,55 +6212,7 @@ rrc_eNB_decode_dcch( ...@@ -6216,55 +6212,7 @@ rrc_eNB_decode_dcch(
LOG_F(RRC,"[MSG] RRC Connection Reconfiguration Complete\n"); LOG_F(RRC,"[MSG] RRC Connection Reconfiguration Complete\n");
for (i = 0; i < sdu_sizeP; i++) { for (i = 0; i < sdu_sizeP; i++) {
LOG_F(RRC,"%02x ", ((uint8_t *)Rx_sdu)[i]); LOG_F(RRC,"%02x ", ((uint8_t*)Rx_sdu)[i]);
}
LOG_F(RRC,"\n");
#endif
MSC_LOG_RX_MESSAGE(
MSC_RRC_ENB,
MSC_RRC_UE,
Rx_sdu,
sdu_sizeP,
MSC_AS_TIME_FMT" RRCConnectionReconfigurationComplete UE %x size %u",
MSC_AS_TIME_ARGS(ctxt_pP),
ue_context_p->ue_context.rnti,
sdu_sizeP);
LOG_D(RRC,
PROTOCOL_RRC_CTXT_UE_FMT" RLC RB %02d --- RLC_DATA_IND %d bytes "
"(RRCConnectionReconfigurationComplete) ---> RRC_eNB]\n",
PROTOCOL_RRC_CTXT_UE_ARGS(ctxt_pP),
DCCH,
sdu_sizeP);
if (ul_dcch_msg->message.choice.c1.choice.rrcConnectionReconfigurationComplete.criticalExtensions.
present ==
RRCConnectionReconfigurationComplete__criticalExtensions_PR_rrcConnectionReconfigurationComplete_r8) {
/*NN: revise the condition */
if (ue_context_p->ue_context.Status == RRC_RECONFIGURED) {
dedicated_DRB = 1;
LOG_I(RRC,
PROTOCOL_RRC_CTXT_UE_FMT" UE State = RRC_RECONFIGURED (dedicated DRB, xid %ld)\n",
PROTOCOL_RRC_CTXT_UE_ARGS(ctxt_pP),ul_dcch_msg->message.choice.c1.choice.rrcConnectionReconfigurationComplete.rrc_TransactionIdentifier);
} else {
dedicated_DRB = 0;
ue_context_p->ue_context.Status = RRC_RECONFIGURED;
LOG_I(RRC,
PROTOCOL_RRC_CTXT_UE_FMT" UE State = RRC_RECONFIGURED (default DRB, xid %ld)\n",
PROTOCOL_RRC_CTXT_UE_ARGS(ctxt_pP),ul_dcch_msg->message.choice.c1.choice.rrcConnectionReconfigurationComplete.rrc_TransactionIdentifier);
}
rrc_eNB_process_RRCConnectionReconfigurationComplete(
ctxt_pP,
ue_context_p,
ul_dcch_msg->message.choice.c1.choice.rrcConnectionReconfigurationComplete.rrc_TransactionIdentifier);
//WARNING:Inform the controller about the UE activation. Should be moved to RRC agent in the future
if (rrc_agent_registered[ctxt_pP->module_id]) {
agent_rrc_xface[ctxt_pP->eNB_index]->flexran_agent_notify_ue_state_change(ctxt_pP->module_id,
ue_context_p->ue_id_rnti,
PROTOCOL__FLEX_UE_STATE_CHANGE_TYPE__FLUESC_UPDATED);
}
} }
LOG_F(RRC,"\n"); LOG_F(RRC,"\n");
...@@ -6342,40 +6290,38 @@ rrc_eNB_decode_dcch( ...@@ -6342,40 +6290,38 @@ rrc_eNB_decode_dcch(
} }
#if defined(ENABLE_ITTI) #if defined(ENABLE_ITTI)
# if defined(ENABLE_USE_MME) # if defined(ENABLE_USE_MME)
if (EPC_MODE_ENABLED == 1) { if (EPC_MODE_ENABLED == 1) {
if (dedicated_DRB == 1) { if (dedicated_DRB == 1){
// rrc_eNB_send_S1AP_E_RAB_SETUP_RESP(ctxt_pP, // rrc_eNB_send_S1AP_E_RAB_SETUP_RESP(ctxt_pP,
// ue_context_p, // ue_context_p,
// ul_dcch_msg->message.choice.c1.choice.rrcConnectionReconfigurationComplete.rrc_TransactionIdentifier); // ul_dcch_msg->message.choice.c1.choice.rrcConnectionReconfigurationComplete.rrc_TransactionIdentifier);
if (ue_context_p->ue_context.nb_of_modify_e_rabs > 0) { if (ue_context_p->ue_context.nb_of_modify_e_rabs > 0) {
rrc_eNB_send_S1AP_E_RAB_MODIFY_RESP(ctxt_pP, rrc_eNB_send_S1AP_E_RAB_MODIFY_RESP(ctxt_pP,
ue_context_p, ue_context_p,
ul_dcch_msg->message.choice.c1.choice.rrcConnectionReconfigurationComplete.rrc_TransactionIdentifier); ul_dcch_msg->message.choice.c1.choice.rrcConnectionReconfigurationComplete.rrc_TransactionIdentifier);
ue_context_p->ue_context.nb_of_modify_e_rabs = 0; ue_context_p->ue_context.nb_of_modify_e_rabs = 0;
ue_context_p->ue_context.nb_of_failed_e_rabs = 0; ue_context_p->ue_context.nb_of_failed_e_rabs = 0;
memset(ue_context_p->ue_context.modify_e_rab, 0, sizeof(ue_context_p->ue_context.modify_e_rab)); memset(ue_context_p->ue_context.modify_e_rab, 0, sizeof(ue_context_p->ue_context.modify_e_rab));
for(int i = 0; i < NB_RB_MAX; i++) { for(int i = 0; i < NB_RB_MAX; i++) {
ue_context_p->ue_context.modify_e_rab[i].xid = -1; ue_context_p->ue_context.modify_e_rab[i].xid = -1;
} }
} else if(ue_context_p->ue_context.e_rab_release_command_flag == 1) {
} else if(ue_context_p->ue_context.e_rab_release_command_flag == 1){
xid = ul_dcch_msg->message.choice.c1.choice.rrcConnectionReconfigurationComplete.rrc_TransactionIdentifier; xid = ul_dcch_msg->message.choice.c1.choice.rrcConnectionReconfigurationComplete.rrc_TransactionIdentifier;
ue_context_p->ue_context.e_rab_release_command_flag = 0; ue_context_p->ue_context.e_rab_release_command_flag = 0;
//gtp tunnel delete //gtp tunnel delete
msg_delete_tunnels_p = itti_alloc_new_message(TASK_RRC_ENB, GTPV1U_ENB_DELETE_TUNNEL_REQ); msg_delete_tunnels_p = itti_alloc_new_message(TASK_RRC_ENB, GTPV1U_ENB_DELETE_TUNNEL_REQ);
memset(&GTPV1U_ENB_DELETE_TUNNEL_REQ(msg_delete_tunnels_p), 0, sizeof(GTPV1U_ENB_DELETE_TUNNEL_REQ(msg_delete_tunnels_p))); memset(&GTPV1U_ENB_DELETE_TUNNEL_REQ(msg_delete_tunnels_p), 0, sizeof(GTPV1U_ENB_DELETE_TUNNEL_REQ(msg_delete_tunnels_p)));
GTPV1U_ENB_DELETE_TUNNEL_REQ(msg_delete_tunnels_p).rnti = ue_context_p->ue_context.rnti; GTPV1U_ENB_DELETE_TUNNEL_REQ(msg_delete_tunnels_p).rnti = ue_context_p->ue_context.rnti;
for(i = 0; i < NB_RB_MAX; i++){
for(i = 0; i < NB_RB_MAX; i++) { if(xid == ue_context_p->ue_context.e_rab[i].xid){
if(xid == ue_context_p->ue_context.e_rab[i].xid) {
GTPV1U_ENB_DELETE_TUNNEL_REQ(msg_delete_tunnels_p).eps_bearer_id[GTPV1U_ENB_DELETE_TUNNEL_REQ(msg_delete_tunnels_p).num_erab++] = ue_context_p->ue_context.enb_gtp_ebi[i]; GTPV1U_ENB_DELETE_TUNNEL_REQ(msg_delete_tunnels_p).eps_bearer_id[GTPV1U_ENB_DELETE_TUNNEL_REQ(msg_delete_tunnels_p).num_erab++] = ue_context_p->ue_context.enb_gtp_ebi[i];
ue_context_p->ue_context.enb_gtp_teid[i] = 0; ue_context_p->ue_context.enb_gtp_teid[i] = 0;
memset(&ue_context_p->ue_context.enb_gtp_addrs[i], 0, sizeof(ue_context_p->ue_context.enb_gtp_addrs[i])); memset(&ue_context_p->ue_context.enb_gtp_addrs[i], 0, sizeof(ue_context_p->ue_context.enb_gtp_addrs[i]));
ue_context_p->ue_context.enb_gtp_ebi[i] = 0; ue_context_p->ue_context.enb_gtp_ebi[i] = 0;
} }
} }
itti_send_msg_to_task(TASK_GTPV1_U, ctxt_pP->instance, msg_delete_tunnels_p); itti_send_msg_to_task(TASK_GTPV1_U, ctxt_pP->instance, msg_delete_tunnels_p);
//S1AP_E_RAB_RELEASE_RESPONSE //S1AP_E_RAB_RELEASE_RESPONSE
rrc_eNB_send_S1AP_E_RAB_RELEASE_RESPONSE(ctxt_pP, rrc_eNB_send_S1AP_E_RAB_RELEASE_RESPONSE(ctxt_pP,
...@@ -6390,13 +6336,8 @@ rrc_eNB_decode_dcch( ...@@ -6390,13 +6336,8 @@ rrc_eNB_decode_dcch(
if(ue_context_p->ue_context.reestablishment_cause == ReestablishmentCause_spare1){ if(ue_context_p->ue_context.reestablishment_cause == ReestablishmentCause_spare1){
rrc_eNB_send_S1AP_INITIAL_CONTEXT_SETUP_RESP(ctxt_pP, rrc_eNB_send_S1AP_INITIAL_CONTEXT_SETUP_RESP(ctxt_pP,
ue_context_p); ue_context_p);
} else {
if(ue_context_p->ue_context.reestablishment_cause == ReestablishmentCause_spare1) {
rrc_eNB_send_S1AP_INITIAL_CONTEXT_SETUP_RESP(ctxt_pP,
ue_context_p);
} else { } else {
ue_context_p->ue_context.reestablishment_cause = ReestablishmentCause_spare1; ue_context_p->ue_context.reestablishment_cause = ReestablishmentCause_spare1;
for (uint8_t e_rab = 0; e_rab < ue_context_p->ue_context.nb_of_e_rabs; e_rab++) { for (uint8_t e_rab = 0; e_rab < ue_context_p->ue_context.nb_of_e_rabs; e_rab++) {
if (ue_context_p->ue_context.e_rab[e_rab].status == E_RAB_STATUS_DONE) { if (ue_context_p->ue_context.e_rab[e_rab].status == E_RAB_STATUS_DONE) {
ue_context_p->ue_context.e_rab[e_rab].status = E_RAB_STATUS_ESTABLISHED; ue_context_p->ue_context.e_rab[e_rab].status = E_RAB_STATUS_ESTABLISHED;
...@@ -6405,7 +6346,6 @@ rrc_eNB_decode_dcch( ...@@ -6405,7 +6346,6 @@ rrc_eNB_decode_dcch(
} }
} }
} }
}
}else if(dedicated_DRB == 2){ }else if(dedicated_DRB == 2){
for (uint8_t e_rab = 0; e_rab < ue_context_p->ue_context.nb_of_e_rabs; e_rab++) { for (uint8_t e_rab = 0; e_rab < ue_context_p->ue_context.nb_of_e_rabs; e_rab++) {
if (ue_context_p->ue_context.e_rab[e_rab].status == E_RAB_STATUS_DONE) { if (ue_context_p->ue_context.e_rab[e_rab].status == E_RAB_STATUS_DONE) {
...@@ -6417,7 +6357,6 @@ rrc_eNB_decode_dcch( ...@@ -6417,7 +6357,6 @@ rrc_eNB_decode_dcch(
} }
} }
#else // establish a dedicated bearer #else // establish a dedicated bearer
if (dedicated_DRB == 0 ) { if (dedicated_DRB == 0 ) {
// ue_context_p->ue_context.e_rab[0].status = E_RAB_STATUS_ESTABLISHED; // ue_context_p->ue_context.e_rab[0].status = E_RAB_STATUS_ESTABLISHED;
rrc_eNB_reconfigure_DRBs(ctxt_pP,ue_context_p); rrc_eNB_reconfigure_DRBs(ctxt_pP,ue_context_p);
...@@ -6430,11 +6369,12 @@ rrc_eNB_decode_dcch( ...@@ -6430,11 +6369,12 @@ rrc_eNB_decode_dcch(
case UL_DCCH_MessageType__c1_PR_rrcConnectionReestablishmentComplete: case UL_DCCH_MessageType__c1_PR_rrcConnectionReestablishmentComplete:
T(T_ENB_RRC_CONNECTION_REESTABLISHMENT_COMPLETE, T_INT(ctxt_pP->module_id), T_INT(ctxt_pP->frame), T(T_ENB_RRC_CONNECTION_REESTABLISHMENT_COMPLETE, T_INT(ctxt_pP->module_id), T_INT(ctxt_pP->frame),
T_INT(ctxt_pP->subframe), T_INT(ctxt_pP->rnti)); T_INT(ctxt_pP->subframe), T_INT(ctxt_pP->rnti));
#ifdef RRC_MSG_PRINT #ifdef RRC_MSG_PRINT
LOG_F(RRC,"[MSG] RRC Connection Reestablishment Complete\n"); LOG_F(RRC,"[MSG] RRC Connection Reestablishment Complete\n");
for (i = 0; i < sdu_sizeP; i++) { for (i = 0; i < sdu_sizeP; i++) {
LOG_F(RRC,"%02x ", ((uint8_t *)Rx_sdu)[i]); LOG_F(RRC,"%02x ", ((uint8_t*)Rx_sdu)[i]);
} }
LOG_F(RRC,"\n"); LOG_F(RRC,"\n");
...@@ -6470,6 +6410,9 @@ rrc_eNB_decode_dcch( ...@@ -6470,6 +6410,9 @@ rrc_eNB_decode_dcch(
reestablish_rnti_map[i][1] = 0; reestablish_rnti_map[i][1] = 0;
break; break;
} }
}
LOG_D(RRC, "reestablish_rnti_map[%d] [0] %x, [1] %x\n",
i, reestablish_rnti_map[i][0], reestablish_rnti_map[i][1]);
if (!ue_context_p) { if (!ue_context_p) {
LOG_E(RRC, LOG_E(RRC,
...@@ -6488,13 +6431,6 @@ rrc_eNB_decode_dcch( ...@@ -6488,13 +6431,6 @@ rrc_eNB_decode_dcch(
RC.mac[ctxt_pP->module_id]->UE_list.UE_sched_ctrl[UE_id].ue_reestablishment_reject_timer = 0; RC.mac[ctxt_pP->module_id]->UE_list.UE_sched_ctrl[UE_id].ue_reestablishment_reject_timer = 0;
ue_context_p->ue_context.ue_reestablishment_timer = 0; ue_context_p->ue_context.ue_reestablishment_timer = 0;
if (!ue_context_p) {
LOG_E(RRC,
PROTOCOL_RRC_CTXT_UE_FMT" RRCConnectionReestablishmentComplete without UE context, falt\n",
PROTOCOL_RRC_CTXT_UE_ARGS(ctxt_pP));
break;
}
if (ul_dcch_msg->message.choice.c1.choice.rrcConnectionReestablishmentComplete.criticalExtensions.present == if (ul_dcch_msg->message.choice.c1.choice.rrcConnectionReestablishmentComplete.criticalExtensions.present ==
RRCConnectionReestablishmentComplete__criticalExtensions_PR_rrcConnectionReestablishmentComplete_r8) { RRCConnectionReestablishmentComplete__criticalExtensions_PR_rrcConnectionReestablishmentComplete_r8) {
rrc_eNB_process_RRCConnectionReestablishmentComplete(ctxt_pP, reestablish_rnti, ue_context_p, rrc_eNB_process_RRCConnectionReestablishmentComplete(ctxt_pP, reestablish_rnti, ue_context_p,
...@@ -6508,7 +6444,6 @@ rrc_eNB_decode_dcch( ...@@ -6508,7 +6444,6 @@ rrc_eNB_decode_dcch(
PROTOCOL__FLEX_UE_STATE_CHANGE_TYPE__FLUESC_ACTIVATED); PROTOCOL__FLEX_UE_STATE_CHANGE_TYPE__FLUESC_ACTIVATED);
} }
} }
//ue_context_p->ue_context.ue_release_timer = 0; //ue_context_p->ue_context.ue_release_timer = 0;
ue_context_p->ue_context.ue_reestablishment_timer = 1; ue_context_p->ue_context.ue_reestablishment_timer = 1;
// remove UE after 100 frames after RRCConnectionReestablishmentRelease is triggered // remove UE after 100 frames after RRCConnectionReestablishmentRelease is triggered
...@@ -6526,11 +6461,12 @@ rrc_eNB_decode_dcch( ...@@ -6526,11 +6461,12 @@ rrc_eNB_decode_dcch(
LOG_F(RRC,"[MSG] RRC Connection SetupComplete\n"); LOG_F(RRC,"[MSG] RRC Connection SetupComplete\n");
for (i = 0; i < sdu_sizeP; i++) { for (i = 0; i < sdu_sizeP; i++) {
LOG_F(RRC,"%02x ", ((uint8_t *)Rx_sdu)[i]); LOG_F(RRC,"%02x ", ((uint8_t*)Rx_sdu)[i]);
} }
LOG_F(RRC,"\n"); LOG_F(RRC,"\n");
#endif #endif
MSC_LOG_RX_MESSAGE( MSC_LOG_RX_MESSAGE(
MSC_RRC_ENB, MSC_RRC_ENB,
MSC_RRC_UE, MSC_RRC_UE,
...@@ -6540,6 +6476,7 @@ rrc_eNB_decode_dcch( ...@@ -6540,6 +6476,7 @@ rrc_eNB_decode_dcch(
MSC_AS_TIME_ARGS(ctxt_pP), MSC_AS_TIME_ARGS(ctxt_pP),
ue_context_p->ue_context.rnti, ue_context_p->ue_context.rnti,
sdu_sizeP); sdu_sizeP);
LOG_D(RRC, LOG_D(RRC,
PROTOCOL_RRC_CTXT_UE_FMT" RLC RB %02d --- RLC_DATA_IND %d bytes " PROTOCOL_RRC_CTXT_UE_FMT" RLC RB %02d --- RLC_DATA_IND %d bytes "
"(RRCConnectionSetupComplete) ---> RRC_eNB\n", "(RRCConnectionSetupComplete) ---> RRC_eNB\n",
...@@ -6569,6 +6506,9 @@ rrc_eNB_decode_dcch( ...@@ -6569,6 +6506,9 @@ rrc_eNB_decode_dcch(
} }
} }
ue_context_p->ue_context.ue_release_timer=0;
break;
case UL_DCCH_MessageType__c1_PR_securityModeComplete: case UL_DCCH_MessageType__c1_PR_securityModeComplete:
T(T_ENB_RRC_SECURITY_MODE_COMPLETE, T_INT(ctxt_pP->module_id), T_INT(ctxt_pP->frame), T(T_ENB_RRC_SECURITY_MODE_COMPLETE, T_INT(ctxt_pP->module_id), T_INT(ctxt_pP->frame),
T_INT(ctxt_pP->subframe), T_INT(ctxt_pP->rnti)); T_INT(ctxt_pP->subframe), T_INT(ctxt_pP->rnti));
...@@ -6580,11 +6520,13 @@ rrc_eNB_decode_dcch( ...@@ -6580,11 +6520,13 @@ rrc_eNB_decode_dcch(
#ifdef RRC_MSG_PRINT #ifdef RRC_MSG_PRINT
LOG_F(RRC,"[MSG] RRC Security Mode Complete\n"); LOG_F(RRC,"[MSG] RRC Security Mode Complete\n");
for (i = 0; i < sdu_sizeP; i++) eNB->pusch_vars[UE_id] { for (i = 0; i < sdu_sizeP; i++) eNB->pusch_vars[UE_id]{
LOG_F(RRC,"%02x ", ((uint8_t *)Rx_sdu)[i]); LOG_F(RRC,"%02x ", ((uint8_t*)Rx_sdu)[i]);
} }
LOG_F(RRC,"\n"); LOG_F(RRC,"\n");
#endif #endif
MSC_LOG_RX_MESSAGE( MSC_LOG_RX_MESSAGE(
MSC_RRC_ENB, MSC_RRC_ENB,
MSC_RRC_UE, MSC_RRC_UE,
...@@ -6594,6 +6536,7 @@ rrc_eNB_decode_dcch( ...@@ -6594,6 +6536,7 @@ rrc_eNB_decode_dcch(
MSC_AS_TIME_ARGS(ctxt_pP), MSC_AS_TIME_ARGS(ctxt_pP),
ue_context_p->ue_context.rnti, ue_context_p->ue_context.rnti,
sdu_sizeP); sdu_sizeP);
LOG_I(RRC, LOG_I(RRC,
PROTOCOL_RRC_CTXT_UE_FMT" received securityModeComplete on UL-DCCH %d from UE\n", PROTOCOL_RRC_CTXT_UE_FMT" received securityModeComplete on UL-DCCH %d from UE\n",
PROTOCOL_RRC_CTXT_UE_ARGS(ctxt_pP), PROTOCOL_RRC_CTXT_UE_ARGS(ctxt_pP),
...@@ -6618,15 +6561,17 @@ rrc_eNB_decode_dcch( ...@@ -6618,15 +6561,17 @@ rrc_eNB_decode_dcch(
case UL_DCCH_MessageType__c1_PR_securityModeFailure: case UL_DCCH_MessageType__c1_PR_securityModeFailure:
T(T_ENB_RRC_SECURITY_MODE_FAILURE, T_INT(ctxt_pP->module_id), T_INT(ctxt_pP->frame), T(T_ENB_RRC_SECURITY_MODE_FAILURE, T_INT(ctxt_pP->module_id), T_INT(ctxt_pP->frame),
T_INT(ctxt_pP->subframe), T_INT(ctxt_pP->rnti)); T_INT(ctxt_pP->subframe), T_INT(ctxt_pP->rnti));
#ifdef RRC_MSG_PRINT #ifdef RRC_MSG_PRINT
LOG_F(RRC,"[MSG] RRC Security Mode Failure\n"); LOG_F(RRC,"[MSG] RRC Security Mode Failure\n");
for (i = 0; i < sdu_sizeP; i++) { for (i = 0; i < sdu_sizeP; i++) {
LOG_F(RRC,"%02x ", ((uint8_t *)Rx_sdu)[i]); LOG_F(RRC,"%02x ", ((uint8_t*)Rx_sdu)[i]);
} }
LOG_F(RRC,"\n"); LOG_F(RRC,"\n");
#endif #endif
MSC_LOG_RX_MESSAGE( MSC_LOG_RX_MESSAGE(
MSC_RRC_ENB, MSC_RRC_ENB,
MSC_RRC_UE, MSC_RRC_UE,
...@@ -6636,6 +6581,7 @@ rrc_eNB_decode_dcch( ...@@ -6636,6 +6581,7 @@ rrc_eNB_decode_dcch(
MSC_AS_TIME_ARGS(ctxt_pP), MSC_AS_TIME_ARGS(ctxt_pP),
ue_context_p->ue_context.rnti, ue_context_p->ue_context.rnti,
sdu_sizeP); sdu_sizeP);
LOG_W(RRC, LOG_W(RRC,
PROTOCOL_RRC_CTXT_UE_FMT" RLC RB %02d --- RLC_DATA_IND %d bytes " PROTOCOL_RRC_CTXT_UE_FMT" RLC RB %02d --- RLC_DATA_IND %d bytes "
"(securityModeFailure) ---> RRC_eNB\n", "(securityModeFailure) ---> RRC_eNB\n",
...@@ -6664,11 +6610,12 @@ rrc_eNB_decode_dcch( ...@@ -6664,11 +6610,12 @@ rrc_eNB_decode_dcch(
LOG_F(RRC,"[MSG] RRC UECapablility Information \n"); LOG_F(RRC,"[MSG] RRC UECapablility Information \n");
for (i = 0; i < sdu_sizeP; i++) { for (i = 0; i < sdu_sizeP; i++) {
LOG_F(RRC,"%02x ", ((uint8_t *)Rx_sdu)[i]); LOG_F(RRC,"%02x ", ((uint8_t*)Rx_sdu)[i]);
} }
LOG_F(RRC,"\n"); LOG_F(RRC,"\n");
#endif #endif
MSC_LOG_RX_MESSAGE( MSC_LOG_RX_MESSAGE(
MSC_RRC_ENB, MSC_RRC_ENB,
MSC_RRC_UE, MSC_RRC_UE,
...@@ -6678,6 +6625,7 @@ rrc_eNB_decode_dcch( ...@@ -6678,6 +6625,7 @@ rrc_eNB_decode_dcch(
MSC_AS_TIME_ARGS(ctxt_pP), MSC_AS_TIME_ARGS(ctxt_pP),
ue_context_p->ue_context.rnti, ue_context_p->ue_context.rnti,
sdu_sizeP); sdu_sizeP);
LOG_I(RRC, LOG_I(RRC,
PROTOCOL_RRC_CTXT_UE_FMT" received ueCapabilityInformation on UL-DCCH %d from UE\n", PROTOCOL_RRC_CTXT_UE_FMT" received ueCapabilityInformation on UL-DCCH %d from UE\n",
PROTOCOL_RRC_CTXT_UE_ARGS(ctxt_pP), PROTOCOL_RRC_CTXT_UE_ARGS(ctxt_pP),
...@@ -6727,23 +6675,27 @@ rrc_eNB_decode_dcch( ...@@ -6727,23 +6675,27 @@ rrc_eNB_decode_dcch(
ue_context_p, ue_context_p,
ul_dcch_msg); ul_dcch_msg);
} }
#else #else
ue_context_p->ue_context.nb_of_e_rabs = 1; ue_context_p->ue_context.nb_of_e_rabs = 1;
for (i = 0; i < ue_context_p->ue_context.nb_of_e_rabs; i++){
for (i = 0; i < ue_context_p->ue_context.nb_of_e_rabs; i++) {
ue_context_p->ue_context.e_rab[i].status = E_RAB_STATUS_NEW; ue_context_p->ue_context.e_rab[i].status = E_RAB_STATUS_NEW;
ue_context_p->ue_context.e_rab[i].param.e_rab_id = 1+i; ue_context_p->ue_context.e_rab[i].param.e_rab_id = 1+i;
ue_context_p->ue_context.e_rab[i].param.qos.qci=9; ue_context_p->ue_context.e_rab[i].param.qos.qci=9;
} }
ue_context_p->ue_context.setup_e_rabs =ue_context_p->ue_context.nb_of_e_rabs; ue_context_p->ue_context.setup_e_rabs =ue_context_p->ue_context.nb_of_e_rabs;
#endif #endif
rrc_eNB_generate_defaultRRCConnectionReconfiguration(ctxt_pP, rrc_eNB_generate_defaultRRCConnectionReconfiguration(ctxt_pP,
ue_context_p, ue_context_p,
RC.rrc[ctxt_pP->module_id]->HO_flag); RC.rrc[ctxt_pP->module_id]->HO_flag);
break; break;
case UL_DCCH_MessageType__c1_PR_ulHandoverPreparationTransfer:
T(T_ENB_RRC_UL_HANDOVER_PREPARATION_TRANSFER, T_INT(ctxt_pP->module_id), T_INT(ctxt_pP->frame),
T_INT(ctxt_pP->subframe), T_INT(ctxt_pP->rnti));
break;
case UL_DCCH_MessageType__c1_PR_ulInformationTransfer: case UL_DCCH_MessageType__c1_PR_ulInformationTransfer:
T(T_ENB_RRC_UL_INFORMATION_TRANSFER, T_INT(ctxt_pP->module_id), T_INT(ctxt_pP->frame), T(T_ENB_RRC_UL_INFORMATION_TRANSFER, T_INT(ctxt_pP->module_id), T_INT(ctxt_pP->frame),
T_INT(ctxt_pP->subframe), T_INT(ctxt_pP->rnti)); T_INT(ctxt_pP->subframe), T_INT(ctxt_pP->rnti));
...@@ -6753,19 +6705,18 @@ rrc_eNB_decode_dcch( ...@@ -6753,19 +6705,18 @@ rrc_eNB_decode_dcch(
break; break;
} }
case UL_DCCH_MessageType__c1_PR_ulInformationTransfer:
T(T_ENB_RRC_UL_INFORMATION_TRANSFER, T_INT(ctxt_pP->module_id), T_INT(ctxt_pP->frame),
T_INT(ctxt_pP->subframe), T_INT(ctxt_pP->rnti));
LOG_D(RRC,"[MSG] RRC UL Information Transfer \n"); LOG_D(RRC,"[MSG] RRC UL Information Transfer \n");
#ifdef RRC_MSG_PRINT #ifdef RRC_MSG_PRINT
LOG_F(RRC,"[MSG] RRC UL Information Transfer \n"); LOG_F(RRC,"[MSG] RRC UL Information Transfer \n");
for (i = 0; i < sdu_sizeP; i++) { for (i = 0; i < sdu_sizeP; i++) {
LOG_F(RRC,"%02x ", ((uint8_t *)Rx_sdu)[i]); LOG_F(RRC,"%02x ", ((uint8_t*)Rx_sdu)[i]);
} }
LOG_F(RRC,"\n"); LOG_F(RRC,"\n");
#endif #endif
MSC_LOG_RX_MESSAGE( MSC_LOG_RX_MESSAGE(
MSC_RRC_ENB, MSC_RRC_ENB,
MSC_RRC_UE, MSC_RRC_UE,
...@@ -6775,6 +6726,7 @@ rrc_eNB_decode_dcch( ...@@ -6775,6 +6726,7 @@ rrc_eNB_decode_dcch(
MSC_AS_TIME_ARGS(ctxt_pP), MSC_AS_TIME_ARGS(ctxt_pP),
ue_context_p->ue_context.rnti, ue_context_p->ue_context.rnti,
sdu_sizeP); sdu_sizeP);
#if defined(ENABLE_USE_MME) #if defined(ENABLE_USE_MME)
if (EPC_MODE_ENABLED == 1) { if (EPC_MODE_ENABLED == 1) {
...@@ -6786,6 +6738,12 @@ rrc_eNB_decode_dcch( ...@@ -6786,6 +6738,12 @@ rrc_eNB_decode_dcch(
#endif #endif
break; break;
case UL_DCCH_MessageType__c1_PR_counterCheckResponse:
T(T_ENB_RRC_COUNTER_CHECK_RESPONSE, T_INT(ctxt_pP->module_id), T_INT(ctxt_pP->frame),
T_INT(ctxt_pP->subframe), T_INT(ctxt_pP->rnti));
break;
#if (RRC_VERSION >= MAKE_VERSION(9, 0, 0)) #if (RRC_VERSION >= MAKE_VERSION(9, 0, 0))
case UL_DCCH_MessageType__c1_PR_ueInformationResponse_r9: case UL_DCCH_MessageType__c1_PR_ueInformationResponse_r9:
...@@ -6808,30 +6766,23 @@ rrc_eNB_decode_dcch( ...@@ -6808,30 +6766,23 @@ rrc_eNB_decode_dcch(
break; break;
case UL_DCCH_MessageType__c1_PR_proximityIndication_r9:
T(T_ENB_RRC_PROXIMITY_INDICATION_R9, T_INT(ctxt_pP->module_id), T_INT(ctxt_pP->frame),
T_INT(ctxt_pP->subframe), T_INT(ctxt_pP->rnti));
break;
case UL_DCCH_MessageType__c1_PR_rnReconfigurationComplete_r10:
T(T_ENB_RRC_RECONFIGURATION_COMPLETE_R10, T_INT(ctxt_pP->module_id), T_INT(ctxt_pP->frame),
T_INT(ctxt_pP->subframe), T_INT(ctxt_pP->rnti));
break;
case UL_DCCH_MessageType__c1_PR_mbmsCountingResponse_r10: case UL_DCCH_MessageType__c1_PR_mbmsCountingResponse_r10:
T(T_ENB_RRC_MBMS_COUNTING_RESPONSE_R10, T_INT(ctxt_pP->module_id), T_INT(ctxt_pP->frame), T(T_ENB_RRC_MBMS_COUNTING_RESPONSE_R10, T_INT(ctxt_pP->module_id), T_INT(ctxt_pP->frame),
T_INT(ctxt_pP->subframe), T_INT(ctxt_pP->rnti)); T_INT(ctxt_pP->subframe), T_INT(ctxt_pP->rnti));
break; break;
case UL_DCCH_MessageType__c1_PR_interFreqRSTDMeasurementIndication_r10: case UL_DCCH_MessageType__c1_PR_interFreqRSTDMeasurementIndication_r10:
T(T_ENB_RRC_INTER_FREQ_RSTD_MEASUREMENT_INDICATION, T_INT(ctxt_pP->module_id), T_INT(ctxt_pP->frame), T(T_ENB_RRC_INTER_FREQ_RSTD_MEASUREMENT_INDICATION, T_INT(ctxt_pP->module_id), T_INT(ctxt_pP->frame),
T_INT(ctxt_pP->subframe), T_INT(ctxt_pP->rnti)); T_INT(ctxt_pP->subframe), T_INT(ctxt_pP->rnti));
break; break;
#endif #endif
default: default:
T(T_ENB_RRC_UNKNOW_MESSAGE, T_INT(ctxt_pP->module_id), T_INT(ctxt_pP->frame), T(T_ENB_RRC_UNKNOW_MESSAGE, T_INT(ctxt_pP->module_id), T_INT(ctxt_pP->frame),
T_INT(ctxt_pP->subframe), T_INT(ctxt_pP->rnti)); T_INT(ctxt_pP->subframe), T_INT(ctxt_pP->rnti));
LOG_E(RRC, PROTOCOL_RRC_CTXT_UE_FMT" Unknown message %s:%u\n", LOG_E(RRC, PROTOCOL_RRC_CTXT_UE_FMT" Unknown message %s:%u\n",
PROTOCOL_RRC_CTXT_UE_ARGS(ctxt_pP), PROTOCOL_RRC_CTXT_UE_ARGS(ctxt_pP),
__FILE__, __LINE__); __FILE__, __LINE__);
...@@ -6892,6 +6843,7 @@ rrc_eNB_decode_dcch( ...@@ -6892,6 +6843,7 @@ rrc_eNB_decode_dcch(
__FILE__, __LINE__); __FILE__, __LINE__);
return -1; return -1;
} }
return 0; return 0;
} }
...@@ -7021,26 +6973,6 @@ rrc_enb_task( ...@@ -7021,26 +6973,6 @@ rrc_enb_task(
} }
break; break;
/* Messages from PDCP */
case RRC_DCCH_DATA_IND:
PROTOCOL_CTXT_SET_BY_INSTANCE(&ctxt,
instance,
ENB_FLAG_YES,
RRC_DCCH_DATA_IND(msg_p).rnti,
msg_p->ittiMsgHeader.lte_time.frame,
msg_p->ittiMsgHeader.lte_time.slot);
LOG_I(RRC, PROTOCOL_RRC_CTXT_UE_FMT" Received on DCCH %d %s\n",
PROTOCOL_RRC_CTXT_UE_ARGS(&ctxt),
RRC_DCCH_DATA_IND(msg_p).dcch_index,
msg_name_p);
rrc_eNB_decode_dcch(&ctxt,
RRC_DCCH_DATA_IND(msg_p).dcch_index,
RRC_DCCH_DATA_IND(msg_p).sdu_p,
RRC_DCCH_DATA_IND(msg_p).sdu_size);
// Message buffer has been processed, free it now.
result = itti_free(ITTI_MSG_ORIGIN_ID(msg_p), RRC_DCCH_DATA_IND(msg_p).sdu_p);
AssertFatal(result == EXIT_SUCCESS, "Failed to free memory (%d)!\n", result);
break;
# if defined(ENABLE_USE_MME) # if defined(ENABLE_USE_MME)
/* Messages from S1AP */ /* Messages from S1AP */
......
...@@ -1636,7 +1636,7 @@ int rrc_eNB_process_S1AP_E_RAB_RELEASE_COMMAND(MessageDef *msg_p, const char *ms ...@@ -1636,7 +1636,7 @@ int rrc_eNB_process_S1AP_E_RAB_RELEASE_COMMAND(MessageDef *msg_p, const char *ms
b_existed = 1; b_existed = 1;
break; break;
} }
}
if(b_existed == 0) { if(b_existed == 0) {
//no e_rab_id //no e_rab_id
ue_context_p->ue_context.e_rabs_release_failed[ue_context_p->ue_context.nb_release_of_e_rabs].e_rab_id = e_rab_release_params[erab].e_rab_id; ue_context_p->ue_context.e_rabs_release_failed[ue_context_p->ue_context.nb_release_of_e_rabs].e_rab_id = e_rab_release_params[erab].e_rab_id;
...@@ -1660,7 +1660,7 @@ int rrc_eNB_process_S1AP_E_RAB_RELEASE_COMMAND(MessageDef *msg_p, const char *ms ...@@ -1660,7 +1660,7 @@ int rrc_eNB_process_S1AP_E_RAB_RELEASE_COMMAND(MessageDef *msg_p, const char *ms
} }
} }
} }
}
if(is_existed == 1) { if(is_existed == 1) {
//e_rab_id is existed //e_rab_id is existed
......
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