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
Michael Black
OpenXG-RAN
Commits
8a2caa66
Commit
8a2caa66
authored
Feb 24, 2023
by
Bruno Mongazon-Cazavet
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
merge develop
parent
4e0f7419
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
39 additions
and
49 deletions
+39
-49
openair2/RRC/LTE/rrc_eNB.c
openair2/RRC/LTE/rrc_eNB.c
+39
-49
No files found.
openair2/RRC/LTE/rrc_eNB.c
View file @
8a2caa66
...
...
@@ -908,81 +908,71 @@ void release_UE_in_freeList(module_id_t mod_id) {
continue
;
protocol_ctxt_t
ctxt
;
PROTOCOL_CTXT_SET_BY_MODULE_ID
(
&
ctxt
,
mod_id
,
ENB_FLAG_YES
,
rnti
,
0
,
0
,
mod_id
);
for
(
int
CC_id
=
0
;
CC_id
<
MAX_NUM_CCs
;
CC_id
++
)
{
eNB_PHY
=
RC
.
eNB
[
mod_id
][
CC_id
];
int
id
;
// clean ULSCH entries for rnti
for
(
int
CC_id
=
0
;
CC_id
<
MAX_NUM_CCs
;
CC_id
++
)
{
eNB_PHY
=
RC
.
eNB
[
mod_id
][
CC_id
];
int
id
;
// clean ULSCH entries for rnti
id
=
find_ulsch
(
rnti
,
eNB_PHY
,
eNB_MAC
->
UE_free_ctrl
[
ue_num
].
raFlag
?
SEARCH_EXIST_RA
:
SEARCH_EXIST
);
if
(
id
>=
0
)
clean_eNb_ulsch
(
eNB_PHY
->
ulsch
[
id
]);
// clean DLSCH entries for rnti
// clean DLSCH entries for rnti
id
=
find_dlsch
(
rnti
,
eNB_PHY
,
eNB_MAC
->
UE_free_ctrl
[
ue_num
].
raFlag
?
SEARCH_EXIST_RA
:
SEARCH_EXIST
);
if
(
id
>=
0
)
clean_eNb_dlsch
(
eNB_PHY
->
dlsch
[
id
][
0
]);
// clean UCI entries for rnti
// clean UCI entries for rnti
for
(
int
i
=
0
;
i
<
NUMBER_OF_UCI_MAX
;
i
++
)
{
if
(
eNB_PHY
->
uci_vars
[
i
].
rnti
==
rnti
)
{
LOG_I
(
MAC
,
"clean eNb uci_vars[%d] UE %x
\n
"
,
i
,
rnti
);
memset
(
&
eNB_PHY
->
uci_vars
[
i
],
0
,
sizeof
(
LTE_eNB_UCI
));
}
}
for
(
int
j
=
0
;
j
<
10
;
j
++
)
{
nfapi_ul_config_request_body_t
*
ul_req_tmp
=
&
eNB_MAC
->
UL_req_tmp
[
CC_id
][
j
].
ul_config_request_body
;
}
}
for
(
int
j
=
0
;
j
<
10
;
j
++
)
{
nfapi_ul_config_request_body_t
*
ul_req_tmp
=
&
eNB_MAC
->
UL_req_tmp
[
CC_id
][
j
].
ul_config_request_body
;
if
(
ul_req_tmp
)
{
int
pdu_number
=
ul_req_tmp
->
number_of_pdus
;
int
pdu_number
=
ul_req_tmp
->
number_of_pdus
;
for
(
int
pdu_index
=
pdu_number
-
1
;
pdu_index
>=
0
;
pdu_index
--
)
{
nfapi_ul_config_request_pdu_t
*
pdu
=
ul_req_tmp
->
ul_config_pdu_list
+
pdu_index
;
if
(
pdu
->
ulsch_pdu
.
ulsch_pdu_rel8
.
rnti
==
rnti
||
pdu
->
uci_harq_pdu
.
ue_information
.
ue_information_rel8
.
rnti
==
rnti
||
pdu
->
uci_cqi_pdu
.
ue_information
.
ue_information_rel8
.
rnti
==
rnti
||
pdu
->
uci_sr_pdu
.
ue_information
.
ue_information_rel8
.
rnti
==
rnti
||
pdu
->
srs_pdu
.
srs_pdu_rel8
.
rnti
==
rnti
)
{
LOG_I
(
RRC
,
"remove UE %x from ul_config_pdu_list %d/%d
\n
"
,
rnti
,
pdu_index
,
pdu_number
);
LOG_I
(
RRC
,
"remove UE %x from ul_config_pdu_list %d/%d
\n
"
,
rnti
,
pdu_index
,
pdu_number
);
// Very inefficient memory management, but simple
if
(
pdu_index
<
pdu_number
-
1
)
{
memcpy
(
pdu
,
pdu
+
1
,
(
pdu_number
-
1
-
pdu_index
)
*
sizeof
(
nfapi_ul_config_request_pdu_t
));
}
ul_req_tmp
->
number_of_pdus
--
;
}
}
}
}
ul_req_tmp
->
number_of_pdus
--
;
}
}
}
}
}
}
if
(
!
NODE_IS_CU
(
RC
.
rrc
[
mod_id
]
->
node_type
))
{
if
(
!
eNB_MAC
->
UE_free_ctrl
[
ue_num
].
raFlag
)
rrc_mac_remove_ue
(
mod_id
,
rnti
);
rrc_mac_remove_ue
(
mod_id
,
rnti
);
rrc_rlc_remove_ue
(
&
ctxt
);
pdcp_remove_UE
(
&
ctxt
);
}
else
{
MessageDef
*
m
=
itti_alloc_new_message
(
TASK_RRC_ENB
,
0
,
F1AP_UE_CONTEXT_RELEASE_CMD
);
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_value
=
10
;
// 10 = F1AP_CauseRadioNetwork_normal_release
F1AP_UE_CONTEXT_RELEASE_CMD
(
m
).
rrc_container
=
NULL
;
F1AP_UE_CONTEXT_RELEASE_CMD
(
m
).
rrc_container_length
=
0
;
itti_send_msg_to_task
(
TASK_CU_F1
,
mod_id
,
m
);
}
if
(
eNB_MAC
->
UE_free_ctrl
[
ue_num
].
removeContextFlg
)
{
struct
rrc_eNB_ue_context_s
*
ue_context_pP
=
rrc_eNB_get_ue_context
(
RC
.
rrc
[
mod_id
],
rnti
);
if
(
ue_context_pP
)
{
LOG_I
(
PHY
,
"remove RNTI %04x
\n
"
,
rnti
);
rrc_eNB_remove_ue_context
(
&
ctxt
,
RC
.
rrc
[
mod_id
],
(
struct
rrc_eNB_ue_context_s
*
)
ue_context_pP
);
if
(
eNB_MAC
->
UE_free_ctrl
[
ue_num
].
removeContextFlg
)
{
struct
rrc_eNB_ue_context_s
*
ue_context_pP
=
rrc_eNB_get_ue_context
(
RC
.
rrc
[
mod_id
],
rnti
);
if
(
ue_context_pP
)
{
LOG_I
(
PHY
,
"remove RNTI %04x
\n
"
,
rnti
);
rrc_eNB_remove_ue_context
(
&
ctxt
,
RC
.
rrc
[
mod_id
],
(
struct
rrc_eNB_ue_context_s
*
)
ue_context_pP
);
}
}
LOG_I
(
RRC
,
"[release_UE_in_freeList] remove UE %x from freeList ra context: %d
\n
"
,
rnti
,
eNB_MAC
->
UE_free_ctrl
[
ue_num
].
raFlag
);
eNB_MAC
->
UE_free_ctrl
[
ue_num
].
rnti
=
0
;
}
LOG_I
(
RRC
,
"[release_UE_in_freeList] remove UE %x from freeList ra context: %d
\n
"
,
rnti
,
eNB_MAC
->
UE_free_ctrl
[
ue_num
].
raFlag
);
eNB_MAC
->
UE_free_ctrl
[
ue_num
].
rnti
=
0
;
}
pthread_mutex_unlock
(
&
lock_ue_freelist
);
}
...
...
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