fix 4G ue release context cleaning
This commit is contained in:
+14
-20
@@ -538,7 +538,7 @@ init_MCCH(
|
|||||||
RC.rrc[enb_mod_idP]->carrier[CC_id].sizeof_MCCH_MESSAGE[sync_area] = do_MBSFNAreaConfig(enb_mod_idP,
|
RC.rrc[enb_mod_idP]->carrier[CC_id].sizeof_MCCH_MESSAGE[sync_area] = do_MBSFNAreaConfig(enb_mod_idP,
|
||||||
sync_area,
|
sync_area,
|
||||||
(uint8_t *)RC.rrc[enb_mod_idP]->carrier[CC_id].MCCH_MESSAGE[sync_area],
|
(uint8_t *)RC.rrc[enb_mod_idP]->carrier[CC_id].MCCH_MESSAGE[sync_area],
|
||||||
100, /* TODO: what is the actual size of .MCCH_MESSAGE[sync_area]? */
|
32, /* TODO: what is the actual size of .MCCH_MESSAGE[sync_area]? */
|
||||||
&RC.rrc[enb_mod_idP]->carrier[CC_id].mcch,
|
&RC.rrc[enb_mod_idP]->carrier[CC_id].mcch,
|
||||||
&RC.rrc[enb_mod_idP]->carrier[CC_id].mcch_message);
|
&RC.rrc[enb_mod_idP]->carrier[CC_id].mcch_message);
|
||||||
LOG_I(RRC, "mcch message pointer %p for sync area %d \n",
|
LOG_I(RRC, "mcch message pointer %p for sync area %d \n",
|
||||||
@@ -1225,7 +1225,7 @@ rrc_eNB_generate_SecurityModeCommand(
|
|||||||
)
|
)
|
||||||
//-----------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------
|
||||||
{
|
{
|
||||||
uint8_t buffer[100];
|
uint8_t buffer[100]={0};
|
||||||
uint8_t size;
|
uint8_t size;
|
||||||
T(T_ENB_RRC_SECURITY_MODE_COMMAND, T_INT(ctxt_pP->module_id), T_INT(ctxt_pP->frame),
|
T(T_ENB_RRC_SECURITY_MODE_COMMAND, 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));
|
||||||
@@ -2201,10 +2201,9 @@ rrc_eNB_generate_RRCConnectionRelease(
|
|||||||
)
|
)
|
||||||
//-----------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------
|
||||||
{
|
{
|
||||||
uint8_t buffer[RRC_BUF_SIZE];
|
uint8_t buffer[RRC_BUF_SIZE]={0};
|
||||||
uint16_t size = 0;
|
uint16_t size = 0;
|
||||||
int release_num;
|
int release_num;
|
||||||
memset(buffer, 0, sizeof(buffer));
|
|
||||||
T(T_ENB_RRC_CONNECTION_RELEASE, T_INT(ctxt_pP->module_id), T_INT(ctxt_pP->frame),
|
T(T_ENB_RRC_CONNECTION_RELEASE, 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));
|
||||||
#if 0
|
#if 0
|
||||||
@@ -4993,19 +4992,17 @@ void rrc_eNB_handover_ue_context_release(
|
|||||||
struct rrc_eNB_ue_context_s *ue_context_p) {
|
struct rrc_eNB_ue_context_s *ue_context_p) {
|
||||||
int e_rab = 0;
|
int e_rab = 0;
|
||||||
//MessageDef *msg_release_p = NULL;
|
//MessageDef *msg_release_p = NULL;
|
||||||
MessageDef *msg_delete_tunnels_p = NULL;
|
|
||||||
uint32_t eNB_ue_s1ap_id = ue_context_p->ue_context.eNB_ue_s1ap_id;
|
uint32_t eNB_ue_s1ap_id = ue_context_p->ue_context.eNB_ue_s1ap_id;
|
||||||
//msg_release_p = itti_alloc_new_message(TASK_RRC_ENB, 0, S1AP_UE_CONTEXT_RELEASE);
|
//msg_release_p = itti_alloc_new_message(TASK_RRC_ENB, 0, S1AP_UE_CONTEXT_RELEASE);
|
||||||
//itti_send_msg_to_task(TASK_S1AP, ctxt_pP->module_id, msg_release_p);
|
//itti_send_msg_to_task(TASK_S1AP, ctxt_pP->module_id, msg_release_p);
|
||||||
s1ap_ue_context_release(ctxt_pP->instance, ue_context_p->ue_context.eNB_ue_s1ap_id);
|
s1ap_ue_context_release(ctxt_pP->instance, ue_context_p->ue_context.eNB_ue_s1ap_id);
|
||||||
//MSC_LOG_TX_MESSAGE(MSC_RRC_ENB, MSC_GTPU_ENB, NULL,0, "0 GTPV1U_ENB_DELETE_TUNNEL_REQ rnti %x ", eNB_ue_s1ap_id);
|
//MSC_LOG_TX_MESSAGE(MSC_RRC_ENB, MSC_GTPU_ENB, NULL,0, "0 GTPV1U_ENB_DELETE_TUNNEL_REQ rnti %x ", eNB_ue_s1ap_id);
|
||||||
msg_delete_tunnels_p = itti_alloc_new_message(TASK_RRC_ENB, 0, GTPV1U_ENB_DELETE_TUNNEL_REQ);
|
gtpv1u_enb_delete_tunnel_req_t delete_tunnels={0};
|
||||||
memset(>PV1U_ENB_DELETE_TUNNEL_REQ(msg_delete_tunnels_p), 0, sizeof(GTPV1U_ENB_DELETE_TUNNEL_REQ(msg_delete_tunnels_p)));
|
delete_tunnels.rnti = ue_context_p->ue_context.rnti;
|
||||||
GTPV1U_ENB_DELETE_TUNNEL_REQ(msg_delete_tunnels_p).rnti = ue_context_p->ue_context.rnti;
|
delete_tunnels.from_gnb = 0;
|
||||||
GTPV1U_ENB_DELETE_TUNNEL_REQ(msg_delete_tunnels_p).from_gnb = 0;
|
|
||||||
|
|
||||||
for (e_rab = 0; e_rab < ue_context_p->ue_context.nb_of_e_rabs; e_rab++) {
|
for (e_rab = 0; e_rab < ue_context_p->ue_context.nb_of_e_rabs; e_rab++) {
|
||||||
GTPV1U_ENB_DELETE_TUNNEL_REQ(msg_delete_tunnels_p).eps_bearer_id[GTPV1U_ENB_DELETE_TUNNEL_REQ(msg_delete_tunnels_p).num_erab++] =
|
delete_tunnels.eps_bearer_id[delete_tunnels.num_erab++] =
|
||||||
ue_context_p->ue_context.enb_gtp_ebi[e_rab];
|
ue_context_p->ue_context.enb_gtp_ebi[e_rab];
|
||||||
// erase data
|
// erase data
|
||||||
ue_context_p->ue_context.enb_gtp_teid[e_rab] = 0;
|
ue_context_p->ue_context.enb_gtp_teid[e_rab] = 0;
|
||||||
@@ -5013,7 +5010,7 @@ void rrc_eNB_handover_ue_context_release(
|
|||||||
ue_context_p->ue_context.enb_gtp_ebi[e_rab] = 0;
|
ue_context_p->ue_context.enb_gtp_ebi[e_rab] = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
itti_send_msg_to_task(TASK_VARIABLE, ctxt_pP->module_id, msg_delete_tunnels_p);
|
gtpv1u_delete_s1u_tunnel(ctxt_pP->module_id, &delete_tunnels);
|
||||||
struct rrc_ue_s1ap_ids_s *rrc_ue_s1ap_ids = NULL;
|
struct rrc_ue_s1ap_ids_s *rrc_ue_s1ap_ids = NULL;
|
||||||
rrc_ue_s1ap_ids = rrc_eNB_S1AP_get_ue_ids(RC.rrc[ctxt_pP->module_id], 0, eNB_ue_s1ap_id);
|
rrc_ue_s1ap_ids = rrc_eNB_S1AP_get_ue_ids(RC.rrc[ctxt_pP->module_id], 0, eNB_ue_s1ap_id);
|
||||||
|
|
||||||
@@ -5166,7 +5163,7 @@ check_handovers(
|
|||||||
msg = itti_alloc_new_message(TASK_RRC_ENB, 0, X2AP_HANDOVER_REQ_ACK);
|
msg = itti_alloc_new_message(TASK_RRC_ENB, 0, X2AP_HANDOVER_REQ_ACK);
|
||||||
rrc_eNB_generate_HO_RRCConnectionReconfiguration(ctxt_pP, ue_context_p,
|
rrc_eNB_generate_HO_RRCConnectionReconfiguration(ctxt_pP, ue_context_p,
|
||||||
X2AP_HANDOVER_REQ_ACK(msg).rrc_buffer,
|
X2AP_HANDOVER_REQ_ACK(msg).rrc_buffer,
|
||||||
RRC_BUF_SIZE, // TODO: supposed to be size of the .rrc_buffer. Is this right?
|
sizeof(X2AP_HANDOVER_REQ_ACK(msg).rrc_buffer),
|
||||||
&X2AP_HANDOVER_REQ_ACK(msg).rrc_buffer_size);
|
&X2AP_HANDOVER_REQ_ACK(msg).rrc_buffer_size);
|
||||||
rrc_eNB_configure_rbs_handover(ue_context_p,ctxt_pP);
|
rrc_eNB_configure_rbs_handover(ue_context_p,ctxt_pP);
|
||||||
X2AP_HANDOVER_REQ_ACK(msg).rnti = ue_context_p->ue_context.rnti;
|
X2AP_HANDOVER_REQ_ACK(msg).rnti = ue_context_p->ue_context.rnti;
|
||||||
@@ -7869,7 +7866,6 @@ rrc_eNB_decode_dcch(
|
|||||||
LTE_UL_DCCH_Message_t *ul_dcch_msg = NULL; //&uldcchmsg;
|
LTE_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;
|
||||||
MessageDef *msg_delete_tunnels_p = NULL;
|
|
||||||
uint8_t xid;
|
uint8_t xid;
|
||||||
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),
|
||||||
@@ -8107,21 +8103,19 @@ rrc_eNB_decode_dcch(
|
|||||||
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, 0, GTPV1U_ENB_DELETE_TUNNEL_REQ);
|
gtpv1u_enb_delete_tunnel_req_t delete_tunnels={0};
|
||||||
memset(>PV1U_ENB_DELETE_TUNNEL_REQ(msg_delete_tunnels_p), 0, sizeof(GTPV1U_ENB_DELETE_TUNNEL_REQ(msg_delete_tunnels_p)));
|
delete_tunnels.rnti = ue_context_p->ue_context.rnti;
|
||||||
GTPV1U_ENB_DELETE_TUNNEL_REQ(msg_delete_tunnels_p).rnti = ue_context_p->ue_context.rnti;
|
delete_tunnels.from_gnb = 0;
|
||||||
GTPV1U_ENB_DELETE_TUNNEL_REQ(msg_delete_tunnels_p).from_gnb = 0;
|
|
||||||
|
|
||||||
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];
|
delete_tunnels.eps_bearer_id[delete_tunnels.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;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
gtpv1u_delete_s1u_tunnel(ctxt_pP->instance, &delete_tunnels);
|
||||||
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,
|
||||||
ue_context_p,
|
ue_context_p,
|
||||||
|
|||||||
@@ -261,23 +261,33 @@ boolean_t gtpv_data_req_new (
|
|||||||
|
|
||||||
void rrc_eNB_send_GTPV1U_ENB_DELETE_TUNNEL_REQ(
|
void rrc_eNB_send_GTPV1U_ENB_DELETE_TUNNEL_REQ(
|
||||||
module_id_t enb_mod_idP,
|
module_id_t enb_mod_idP,
|
||||||
const rrc_eNB_ue_context_t* const ue_context_pP
|
rrc_eNB_ue_context_t* ue_context_pP
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
if (!ue_context_pP) {
|
if (!ue_context_pP) {
|
||||||
LOG_W(RRC, "[eNB] In %s: invalid UE\n", __func__);
|
LOG_W(RRC, "[eNB] In %s: invalid UE\n", __func__);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
eNB_RRC_UE_t *ue = &ue_context_pP->ue_context;
|
||||||
gtpv1u_enb_delete_tunnel_req_t tmp={0};
|
gtpv1u_enb_delete_tunnel_req_t tmp={0};
|
||||||
|
|
||||||
tmp.rnti = ue_context_pP->ue_context.rnti;
|
tmp.rnti = ue->rnti;
|
||||||
tmp.from_gnb = 0;
|
tmp.from_gnb = 0;
|
||||||
tmp.num_erab = ue_context_pP->ue_context.nb_of_e_rabs;
|
tmp.num_erab = ue->nb_of_e_rabs;
|
||||||
for (int e_rab = 0; e_rab < ue_context_pP->ue_context.nb_of_e_rabs; e_rab++) {
|
for (int e_rab = 0; e_rab < ue->nb_of_e_rabs; e_rab++) {
|
||||||
const rb_id_t gtp_ebi = ue_context_pP->ue_context.enb_gtp_ebi[e_rab];
|
const rb_id_t gtp_ebi = ue->enb_gtp_ebi[e_rab];
|
||||||
tmp.eps_bearer_id[e_rab] = gtp_ebi;
|
tmp.eps_bearer_id[e_rab] = gtp_ebi;
|
||||||
}
|
}
|
||||||
gtpv1u_delete_s1u_tunnel(enb_mod_idP,&tmp);
|
gtpv1u_delete_s1u_tunnel(enb_mod_idP,&tmp);
|
||||||
|
if ( ue->ue_release_timer_rrc > 0
|
||||||
|
&& (ue->handover_info == NULL ||
|
||||||
|
(ue->handover_info->state != HO_RELEASE &&
|
||||||
|
ue->handover_info->state != HO_CANCEL
|
||||||
|
)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
ue->ue_release_timer_rrc = ue->ue_release_timer_thres_rrc;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -57,7 +57,7 @@ rrc_gNB_process_GTPV1U_CREATE_TUNNEL_RESP(
|
|||||||
*/
|
*/
|
||||||
void rrc_eNB_send_GTPV1U_ENB_DELETE_TUNNEL_REQ(
|
void rrc_eNB_send_GTPV1U_ENB_DELETE_TUNNEL_REQ(
|
||||||
module_id_t enb_mod_idP,
|
module_id_t enb_mod_idP,
|
||||||
const rrc_eNB_ue_context_t* const ue_context_pP
|
rrc_eNB_ue_context_t* ue_context_pP
|
||||||
);
|
);
|
||||||
|
|
||||||
boolean_t
|
boolean_t
|
||||||
|
|||||||
@@ -1695,7 +1695,6 @@ int rrc_eNB_process_S1AP_E_RAB_RELEASE_COMMAND(MessageDef *msg_p, const char *ms
|
|||||||
uint8_t b_existed,is_existed;
|
uint8_t b_existed,is_existed;
|
||||||
uint8_t xid;
|
uint8_t xid;
|
||||||
uint8_t e_rab_release_drb;
|
uint8_t e_rab_release_drb;
|
||||||
MessageDef *msg_delete_tunnels_p = NULL;
|
|
||||||
e_rab_release_drb = 0;
|
e_rab_release_drb = 0;
|
||||||
memcpy(&e_rab_release_params[0], &(S1AP_E_RAB_RELEASE_COMMAND (msg_p).e_rab_release_params[0]), sizeof(e_rab_release_t)*S1AP_MAX_E_RAB);
|
memcpy(&e_rab_release_params[0], &(S1AP_E_RAB_RELEASE_COMMAND (msg_p).e_rab_release_params[0]), sizeof(e_rab_release_t)*S1AP_MAX_E_RAB);
|
||||||
eNB_ue_s1ap_id = S1AP_E_RAB_RELEASE_COMMAND (msg_p).eNB_ue_s1ap_id;
|
eNB_ue_s1ap_id = S1AP_E_RAB_RELEASE_COMMAND (msg_p).eNB_ue_s1ap_id;
|
||||||
@@ -1763,21 +1762,19 @@ int rrc_eNB_process_S1AP_E_RAB_RELEASE_COMMAND(MessageDef *msg_p, const char *ms
|
|||||||
rrc_eNB_generate_dedicatedRRCConnectionReconfiguration_release(&ctxt, ue_context_p, xid, S1AP_E_RAB_RELEASE_COMMAND (msg_p).nas_pdu.length, S1AP_E_RAB_RELEASE_COMMAND (msg_p).nas_pdu.buffer);
|
rrc_eNB_generate_dedicatedRRCConnectionReconfiguration_release(&ctxt, ue_context_p, xid, S1AP_E_RAB_RELEASE_COMMAND (msg_p).nas_pdu.length, S1AP_E_RAB_RELEASE_COMMAND (msg_p).nas_pdu.buffer);
|
||||||
} else {
|
} else {
|
||||||
//gtp tunnel delete
|
//gtp tunnel delete
|
||||||
msg_delete_tunnels_p = itti_alloc_new_message(TASK_RRC_ENB, 0, GTPV1U_ENB_DELETE_TUNNEL_REQ);
|
gtpv1u_enb_delete_tunnel_req_t delete_tunnels={0};
|
||||||
memset(>PV1U_ENB_DELETE_TUNNEL_REQ(msg_delete_tunnels_p), 0, sizeof(GTPV1U_ENB_DELETE_TUNNEL_REQ(msg_delete_tunnels_p)));
|
delete_tunnels.rnti = ue_context_p->ue_context.rnti;
|
||||||
GTPV1U_ENB_DELETE_TUNNEL_REQ(msg_delete_tunnels_p).rnti = ue_context_p->ue_context.rnti;
|
delete_tunnels.from_gnb = 0;
|
||||||
GTPV1U_ENB_DELETE_TUNNEL_REQ(msg_delete_tunnels_p).from_gnb = 0;
|
|
||||||
|
|
||||||
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];
|
delete_tunnels.eps_bearer_id[delete_tunnels.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;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
gtpv1u_delete_s1u_tunnel(instance,&delete_tunnels);
|
||||||
itti_send_msg_to_task(TASK_VARIABLE, instance, msg_delete_tunnels_p);
|
|
||||||
//S1AP_E_RAB_RELEASE_RESPONSE
|
//S1AP_E_RAB_RELEASE_RESPONSE
|
||||||
rrc_eNB_send_S1AP_E_RAB_RELEASE_RESPONSE(&ctxt, ue_context_p, xid);
|
rrc_eNB_send_S1AP_E_RAB_RELEASE_RESPONSE(&ctxt, ue_context_p, xid);
|
||||||
}
|
}
|
||||||
@@ -2242,7 +2239,15 @@ int rrc_eNB_process_S1AP_PATH_SWITCH_REQ_ACK (MessageDef *msg_p,
|
|||||||
&delete_tunnel_req);
|
&delete_tunnel_req);
|
||||||
/* TBD: release the DRB not admitted */
|
/* TBD: release the DRB not admitted */
|
||||||
//rrc_eNB_generate_dedicatedRRCConnectionReconfiguration(&ctxt, ue_context_p, 0);
|
//rrc_eNB_generate_dedicatedRRCConnectionReconfiguration(&ctxt, ue_context_p, 0);
|
||||||
}
|
if ( ue_context_p->ue_context.ue_release_timer_rrc > 0 &&
|
||||||
|
(ue_context_p->ue_context.handover_info == NULL ||
|
||||||
|
(ue_context_p->ue_context.handover_info->state != HO_RELEASE &&
|
||||||
|
ue_context_p->ue_context.handover_info->state != HO_CANCEL
|
||||||
|
)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
ue_context_p->ue_context.ue_release_timer_rrc = ue_context_p->ue_context.ue_release_timer_thres_rrc;
|
||||||
|
}
|
||||||
|
|
||||||
/* Security key */
|
/* Security key */
|
||||||
ue_context_p->ue_context.next_hop_chain_count=S1AP_PATH_SWITCH_REQ_ACK (msg_p).next_hop_chain_count;
|
ue_context_p->ue_context.next_hop_chain_count=S1AP_PATH_SWITCH_REQ_ACK (msg_p).next_hop_chain_count;
|
||||||
|
|||||||
Reference in New Issue
Block a user