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
promise
OpenXG-RAN
Commits
96c11ff5
Commit
96c11ff5
authored
Apr 26, 2019
by
Raphael Defosseux
Browse files
Options
Browse Files
Download
Plain Diff
Merge remote-tracking branch 'origin/421-cdrx-for-lte' into develop_integration_2019_w17
parents
5261ccd3
e5eb58d2
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
42 additions
and
35 deletions
+42
-35
openair2/RRC/LTE/rrc_eNB.c
openair2/RRC/LTE/rrc_eNB.c
+42
-35
No files found.
openair2/RRC/LTE/rrc_eNB.c
View file @
96c11ff5
...
...
@@ -2983,38 +2983,43 @@ void rrc_eNB_generate_defaultRRCConnectionReconfiguration(const protocol_ctxt_t
mac_MainConfig->phr_Config->choice.setup.prohibitPHR_Timer = LTE_MAC_MainConfig__phr_Config__setup__prohibitPHR_Timer_sf200; // sf20 = 20 subframes // LTE_MAC_MainConfig__phr_Config__setup__prohibitPHR_Timer_sf1000
mac_MainConfig->phr_Config->choice.setup.dl_PathlossChange = LTE_MAC_MainConfig__phr_Config__setup__dl_PathlossChange_dB3; // Value dB1 =1 dB, dB3 = 3 dB
/* CDRX Configuration */
// Need to check if UE is a BR UE
rnti_t
rnti
=
ue_context_pP
->
ue_id_rnti
;
module_id_t
module_id
=
ctxt_pP
->
module_id
;
int
UE_id
=
find_UE_id
(
module_id
,
rnti
);
eNB_MAC_INST
*
mac
=
RC
.
mac
[
module_id
];
UE_list_t
*
UE_list
=
&
(
mac
->
UE_list
);
if
(
UE_id
!=
-
1
)
{
if
((
rrc_inst
->
carrier
[
cc_id
].
sib1
->
tdd_Config
==
NULL
)
&&
(
UE_list
->
UE_template
[
ue_context_pP
->
ue_context
.
primaryCC_id
][
UE_id
].
rach_resource_type
==
0
))
{
// CDRX can be only configured in case of FDD and non BR UE (09/04/19)
LOG_D
(
RRC
,
"Processing the DRX configuration in RRC Connection Reconfiguration
\n
"
);
if (!NODE_IS_CU(RC.rrc[ctxt_pP->module_id]->node_type)) {
/* CDRX Configuration */
// Need to check if UE is a BR UE
rnti_t rnti = ue_context_pP->ue_id_rnti;
module_id_t module_id = ctxt_pP->module_id;
int UE_id = find_UE_id(module_id, rnti);
eNB_MAC_INST *mac = RC.mac[module_id];
UE_list_t *UE_list = &(mac->UE_list);
if (UE_id != -1) {
if ((rrc_inst->carrier[cc_id].sib1->tdd_Config == NULL) &&
(UE_list->UE_template[ue_context_pP->ue_context.primaryCC_id][UE_id].rach_resource_type == 0)) {
// CDRX can be only configured in case of FDD and non BR UE (09/04/19)
LOG_D(RRC, "Processing the DRX configuration in RRC Connection Reconfiguration\n");
/* Process the IE drx_Config */
if
(
cc_id
<
MAX_NUM_CCs
)
{
mac_MainConfig
->
drx_Config
=
do_DrxConfig
(
module_id
,
cc_id
,
&
rrc_inst
->
configuration
,
UEcap
);
// drx_Config IE
}
else
{
LOG_E
(
RRC
,
"Invalid CC_id for DRX configuration
\n
"
);
}
/* Process the IE drx_Config */
if (cc_id < MAX_NUM_CCs) {
mac_MainConfig->drx_Config = do_DrxConfig(module_id, cc_id, &rrc_inst->configuration, UEcap); // drx_Config IE
} else {
LOG_E(RRC, "Invalid CC_id for DRX configuration\n");
}
/* Set timers and thresholds values in local MAC context of UE */
eNB_Config_Local_DRX
(
module_id
,
ue_context_pP
->
ue_id_rnti
,
mac_MainConfig
->
drx_Config
);
/* Set timers and thresholds values in local MAC context of UE */
eNB_Config_Local_DRX(module_id, ue_context_pP->ue_id_rnti, mac_MainConfig->drx_Config);
LOG_D
(
RRC
,
"DRX configured in mac main config for RRC Connection Reconfiguration
\n
"
);
LOG_D(RRC, "DRX configured in mac main config for RRC Connection Reconfiguration\n");
}
else
{
// CDRX not implemented for TDD and LTE-M (09/04/19)
} else { // CDRX not implemented for TDD and LTE-M (09/04/19)
mac_MainConfig->drx_Config = NULL;
}
} else { // UE_id invalid
LOG_E(RRC, "Invalid UE_id found!\n");
mac_MainConfig->drx_Config = NULL;
}
}
else
{
//
UE_id invalid
LOG_E
(
RRC
,
"
Invalid UE_id found!
\n
"
);
} else { //
No CDRX with the CU/DU split in this version
LOG_E(RRC, "
CU/DU split activated
\n");
mac_MainConfig->drx_Config = NULL;
}
...
...
@@ -5464,15 +5469,17 @@ rrc_eNB_process_RRCConnectionReconfigurationComplete(
ue_context_pP->ue_context.ue_reestablishment_timer = 0;
ue_context_pP->ue_context.ue_rrc_inactivity_timer = 1; // reset rrc inactivity timer
/* CDRX: activated if ack was expected */
int
UE_id_mac
=
find_UE_id
(
ctxt_pP
->
module_id
,
ue_context_pP
->
ue_context
.
rnti
);
UE_sched_ctrl
*
UE_scheduling_control
=
&
(
RC
.
mac
[
ctxt_pP
->
module_id
]
->
UE_list
.
UE_sched_ctrl
[
UE_id_mac
]);
if
(
UE_scheduling_control
->
cdrx_waiting_ack
==
TRUE
)
{
UE_scheduling_control
->
cdrx_waiting_ack
=
FALSE
;
UE_scheduling_control
->
cdrx_configured
=
TRUE
;
LOG_I
(
RRC
,
"CDRX configuration activated after RRC Connection Reconfiguration Complete reception
\n
"
);
}
if (!NODE_IS_CU(RC.rrc[ctxt_pP->module_id]->node_type)) {
/* CDRX: activated if ack was expected */
int UE_id_mac = find_UE_id(ctxt_pP->module_id, ue_context_pP->ue_context.rnti);
UE_sched_ctrl *UE_scheduling_control = &(RC.mac[ctxt_pP->module_id]->UE_list.UE_sched_ctrl[UE_id_mac]);
if (UE_scheduling_control->cdrx_waiting_ack == TRUE) {
UE_scheduling_control->cdrx_waiting_ack = FALSE;
UE_scheduling_control->cdrx_configured = TRUE;
LOG_I(RRC, "CDRX configuration activated after RRC Connection Reconfiguration Complete reception\n");
}
} // No CDRX with the CU/DU split in this version of the code
T(T_ENB_RRC_CONNECTION_RECONFIGURATION_COMPLETE,
T_INT(ctxt_pP->module_id),
...
...
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