Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
O
OpenXG-RAN
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
wangjie
OpenXG-RAN
Commits
7519b8e0
Commit
7519b8e0
authored
Mar 23, 2019
by
Robert Schmidt
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Free UE in RRC/S1/GTP if not DU
parent
b7155f02
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
14 additions
and
28 deletions
+14
-28
openair2/RRC/LTE/rrc_eNB.c
openair2/RRC/LTE/rrc_eNB.c
+14
-28
No files found.
openair2/RRC/LTE/rrc_eNB.c
View file @
7519b8e0
...
@@ -7436,7 +7436,7 @@ void rrc_subframe_process(protocol_ctxt_t *const ctxt_pP, const int CC_id)
...
@@ -7436,7 +7436,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)
if
(
EPC_MODE_ENABLED
&&
RC
.
rrc
[
ctxt_pP
->
module_id
]
->
node_type
!=
ngran_eNB_DU
)
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,44 +7489,30 @@ void rrc_subframe_process(protocol_ctxt_t *const ctxt_pP, const int CC_id)
...
@@ -7489,44 +7489,30 @@ 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) {
if
(
EPC_MODE_ENABLED
&&
RC
.
rrc
[
ctxt_pP
->
module_id
]
->
node_type
!=
ngran_eNB_DU
)
{
int e_rab = 0;
MessageDef *msg_complete_p = NULL;
MessageDef *msg_delete_tunnels_p = NULL;
uint32_t eNB_ue_s1ap_id = ue_context_p->ue_context.eNB_ue_s1ap_id;
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
MSC_LOG_TX_MESSAGE(MSC_RRC_ENB, MSC_S1AP_ENB, NULL, 0,
rrc_eNB_send_S1AP_UE_CONTEXT_RELEASE_CPLT
(
ctxt_pP
->
module_id
,
"0 S1AP_UE_CONTEXT_RELEASE_COMPLETE eNB_ue_s1ap_id 0x%06"PRIX32" ",
ue_context_p
->
ue_context
.
eNB_ue_s1ap_id
);
eNB_ue_s1ap_id);
msg_complete_p = itti_alloc_new_message(TASK_RRC_ENB, S1AP_UE_CONTEXT_RELEASE_COMPLETE);
S1AP_UE_CONTEXT_RELEASE_COMPLETE(msg_complete_p).eNB_ue_s1ap_id = eNB_ue_s1ap_id;
itti_send_msg_to_task(TASK_S1AP, ctxt_pP->module_id, msg_complete_p);
}
}
MSC_LOG_TX_MESSAGE(MSC_RRC_ENB, MSC_GTPU_ENB, NULL,0, "0 GTPV1U_ENB_DELETE_TUNNEL_REQ rnti %x ", eNB_ue_s1ap_id);
rrc_eNB_send_GTPV1U_ENB_DELETE_TUNNEL_REQ
(
ctxt_pP
->
module_id
,
msg_delete_tunnels_p = itti_alloc_new_message(TASK_RRC_ENB, GTPV1U_ENB_DELETE_TUNNEL_REQ);
ue_context_p
);
memset(>PV1U_ENB_DELETE_TUNNEL_REQ(msg_delete_tunnels_p), 0, sizeof(GTPV1U_ENB_DELETE_TUNNEL_REQ(msg_delete_tunnels_p)));
// erase data of GTP tunnels in UE context
// do not wait response
for
(
int
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).rnti = ue_context_p->ue_context.rnti;
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++] =
ue_context_p->ue_context.enb_gtp_ebi[e_rab];
// erase data
ue_context_p
->
ue_context
.
enb_gtp_teid
[
e_rab
]
=
0
;
ue_context_p
->
ue_context
.
enb_gtp_teid
[
e_rab
]
=
0
;
memset(&ue_context_p->ue_context.enb_gtp_addrs[e_rab], 0, sizeof(ue_context_p->ue_context.enb_gtp_addrs[e_rab]));
memset
(
&
ue_context_p
->
ue_context
.
enb_gtp_addrs
[
e_rab
],
ue_context_p->ue_context.enb_gtp_ebi[e_rab] = 0;
0
,
sizeof
(
ue_context_p
->
ue_context
.
enb_gtp_addrs
[
e_rab
]));
ue_context_p
->
ue_context
.
enb_gtp_ebi
[
e_rab
]
=
0
;
}
}
itti_send_msg_to_task(TASK_GTPV1_U, ctxt_pP->module_id, msg_delete_tunnels_p);
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
,
ue_context_p
->
ue_context
.
eNB_ue_s1ap_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 */
}
/* EPC_MODE_ENABLED
&& node_type != ngran_eNB_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
--
;
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment