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
常顺宇
OpenXG-RAN
Commits
77115590
Commit
77115590
authored
Sep 27, 2019
by
DUFRENE Louis Adrien TGI/OLS
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
[not built] CDRX CU/DU split ok, in case of mono still MAC code in RRC
parent
2ca45bb3
Changes
3
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
54 additions
and
24 deletions
+54
-24
openair2/F1AP/f1ap_du_rrc_message_transfer.c
openair2/F1AP/f1ap_du_rrc_message_transfer.c
+25
-13
openair2/F1AP/f1ap_du_task.c
openair2/F1AP/f1ap_du_task.c
+1
-1
openair2/RRC/LTE/rrc_eNB.c
openair2/RRC/LTE/rrc_eNB.c
+28
-10
No files found.
openair2/F1AP/f1ap_du_rrc_message_transfer.c
View file @
77115590
...
...
@@ -399,25 +399,34 @@ int DU_handle_DL_RRC_MESSAGE_TRANSFER(instance_t instance,
LTE_SRB_ToAddModList_t
*
SRB_configList
=
rrcConnectionReconfiguration_r8
->
radioResourceConfigDedicated
->
srb_ToAddModList
;
LTE_DRB_ToReleaseList_t
*
DRB_ReleaseList
=
rrcConnectionReconfiguration_r8
->
radioResourceConfigDedicated
->
drb_ToReleaseList
;
LTE_MAC_MainConfig_t
*
mac_MainConfig
=
NULL
;
for
(
i
=
0
;
i
<
8
;
i
++
){
DRB2LCHAN
[
i
]
=
0
;
}
if
(
rrcConnectionReconfiguration_r8
->
radioResourceConfigDedicated
->
mac_MainConfig
)
{
mac_MainConfig
=
&
rrcConnectionReconfiguration_r8
->
radioResourceConfigDedicated
->
mac_MainConfig
->
choice
.
explicitValue
;
/* CDRX Configuration */
// Need to check if UE is a BR UE
int
UE_id
=
find_UE_id
(
ctxt
.
module_id
,
ctxt
.
rnti
);
if
(
UE_id
!=
-
1
)
{
eNB_RRC_INST
*
rrc_inst
=
RC
.
rrc
[
ctxt
.
module_id
];
uint8_t
cc_id
=
ue_context_p
->
ue_context
.
primaryCC_id
;
eNB_MAC_INST
*
mac
=
RC
.
mac
[
ctxt
.
module_id
];
UE_list_t
*
UE_list
=
&
(
mac
->
UE_list
);
if
(
rrc_inst
->
carrier
[
cc_id
].
sib1
->
tdd_Config
==
NULL
&&
UE_list
->
UE_template
[
cc_id
][
UE_id
].
rach_resource_type
==
0
)
{
if
(
rrc_inst
->
carrier
[
cc_id
].
sib1
->
tdd_Config
==
NULL
&&
UE_list
->
UE_template
[
cc_id
][
UE_id
].
rach_resource_type
==
0
)
{
// CDRX can be only configured in case of FDD and non BR UE (27/09/19)
LOG_D
(
F1AP
,
"Processing the DRX configuration in DU RRC Connection Reconfiguration
\n
"
);
/* Process the IE drx_Config */
if
(
cc_id
<
MAX_NUM_CCs
)
{
LTE_UE_EUTRA_Capability_t
*
UEcap
=
ue_context_p
->
ue_context
.
UE_Capability
;
mac_MainConfig
->
drx_Config
=
do_DrxConfig
(
cc_id
,
&
rrc_inst
->
configuration
,
UEcap
);
mac_MainConfig
->
drx_Config
=
do_DrxConfig
(
cc_id
,
&
rrc_inst
->
configuration
,
UEcap
);
// drx_Config IE
if
(
mac_MainConfig
->
drx_Config
==
NULL
)
{
LOG_E
(
F1AP
,
"drx_Configuration parameter is NULL, cannot configure local UE parameters
\n
"
);
}
else
{
...
...
@@ -426,12 +435,15 @@ int DU_handle_DL_RRC_MESSAGE_TRANSFER(instance_t instance,
LOG_D
(
F1AP
,
"DRX configured in mac main config for RRC Connection Reconfiguration
\n
"
);
}
}
else
{
LOG_E
(
F1AP
,
"Invalid CC_id for DRX configuration
\n
"
);
LOG_E
(
F1AP
,
"Invalid CC_id for DRX configuration
\n
"
);
}
}
else
{
// CDRX not implemented for TDD and LTE-M (09/04/19)
LOG_I
(
F1AP
,
"CDRX not implemented for TDD and LTE-M
\n
"
);
}
}
else
{
// UE_id invalid
LOG_E
(
F1AP
,
"Invalid UE_id found!
\n
"
);
}
/* End of CDRX configuration */
}
LTE_MeasGapConfig_t
*
measGapConfig
=
NULL
;
...
...
@@ -737,24 +749,24 @@ int DU_send_UL_RRC_MESSAGE_TRANSFER(instance_t instance,
case
LTE_UL_DCCH_MessageType__c1_PR_rrcConnectionReconfigurationComplete
:
LOG_I
(
F1AP
,
"[MSG] RRC UL rrcConnectionReconfigurationComplete
\n
"
);
/* CDRX: (under test) activated when RRC Connection Reconfiguration was sent */
int
UE_id_mac
=
find_UE_id
(
instance
,
rnti
);
if
(
UE_id_mac
==
-
1
)
{
LOG_E
(
MAC
,
"Can't find UE_id(MAC) of UE rnti %x
\n
"
,
rnti
);
LOG_E
(
F1AP
,
"Can't find UE_id(MAC) of UE rnti %x
\n
"
,
rnti
);
break
;
}
UE_sched_ctrl_t
*
UE_scheduling_control
=
&
(
RC
.
mac
[
instance
]
->
UE_list
.
UE_sched_ctrl
[
UE_id_mac
]);
if
(
UE_scheduling_control
==
NULL
)
{
LOG_E
(
MAC
,
"Can't get UE scheduling control structure of UE rnti %x
\n
"
,
rnti
);
break
;
}
else
if
(
UE_scheduling_control
->
cdrx_waiting_ack
==
TRUE
)
{
if
(
UE_scheduling_control
->
cdrx_waiting_ack
==
TRUE
)
{
UE_scheduling_control
->
cdrx_waiting_ack
=
FALSE
;
// UE_scheduling_control->cdrx_configured = TRUE; // Set to TRUE when RRC Connection Reconfiguration is sent (under test)
LOG_I
(
MAC
,
"CDRX configuration after first RRC Connection Reconfiguration Complete reception
\n
"
);
LOG_I
(
F1AP
,
"CDRX configuration after first RRC Connection Reconfiguration Complete reception
\n
"
);
}
/* End of CDRX processing */
break
;
case
LTE_UL_DCCH_MessageType__c1_PR_rrcConnectionReestablishmentComplete
:
...
...
openair2/F1AP/f1ap_du_task.c
View file @
77115590
...
...
@@ -175,7 +175,7 @@ void *F1AP_DU_task(void *arg) {
&
received_msg
->
ittiMsg
.
sctp_data_ind
);
break
;
case
F1AP_UL_RRC_MESSAGE
:
//
from
rrc
case
F1AP_UL_RRC_MESSAGE
:
//
to
rrc
LOG_I
(
F1AP
,
"DU Task Received F1AP_UL_RRC_MESSAGE
\n
"
);
DU_send_UL_RRC_MESSAGE_TRANSFER
(
ITTI_MESSAGE_GET_INSTANCE
(
received_msg
),
&
F1AP_UL_RRC_MESSAGE
(
received_msg
));
...
...
openair2/RRC/LTE/rrc_eNB.c
View file @
77115590
...
...
@@ -3204,7 +3204,8 @@ void rrc_eNB_generate_defaultRRCConnectionReconfiguration(const protocol_ctxt_t
mac_MainConfig
->
drx_Config
=
NULL
;
rnti_t
rnti
=
ue_context_pP
->
ue_id_rnti
;
module_id_t
module_id
=
ctxt_pP
->
module_id
;
if
(
!
NODE_IS_CU
(
RC
.
rrc
[
ctxt_pP
->
module_id
]
->
node_type
))
{
if
(
NODE_IS_MONOLITHIC
(
RC
.
rrc
[
ctxt_pP
->
module_id
]
->
node_type
))
{
/* CDRX Configuration */
// Need to check if UE is a BR UE
int
UE_id
=
find_UE_id
(
module_id
,
rnti
);
...
...
@@ -3222,26 +3223,25 @@ void rrc_eNB_generate_defaultRRCConnectionReconfiguration(const protocol_ctxt_t
/* Process the IE drx_Config */
if
(
cc_id
<
MAX_NUM_CCs
)
{
mac_MainConfig
->
drx_Config
=
do_DrxConfig
(
cc_id
,
&
rrc_inst
->
configuration
,
UEcap
);
// drx_Config IE
if
(
mac_MainConfig
->
drx_Config
==
NULL
)
{
LOG_E
(
MAC
,
"drx_Configuration parameter is NULL, cannot configure local UE parameters
\n
"
);
LOG_E
(
RRC
,
"drx_Configuration parameter is NULL, cannot configure local UE parameters
\n
"
);
}
else
{
/* Set timers and thresholds values in local MAC context of UE */
eNB_Config_Local_DRX
(
module_id
,
rnti
,
mac_MainConfig
->
drx_Config
);
LOG_D
(
RRC
,
"DRX configured in mac main config for RRC Connection Reconfiguration
\n
"
);
}
}
else
{
LOG_E
(
RRC
,
"Invalid CC_id for DRX configuration
\n
"
);
}
}
else
{
// CDRX not implemented for TDD and LTE-M (09/04/19)
LOG_
D
(
RRC
,
"CDRX not implemented for TDD and LTE-M
\n
"
);
LOG_
I
(
RRC
,
"CDRX not implemented for TDD and LTE-M
\n
"
);
}
}
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
"
);
}
if
(
mac_MainConfig
->
drx_Config
!=
NULL
)
{
/* Set timers and thresholds values in local MAC context of UE */
eNB_Config_Local_DRX
(
module_id
,
rnti
,
mac_MainConfig
->
drx_Config
);
LOG_D
(
RRC
,
"DRX configured in mac main config for RRC Connection Reconfiguration
\n
"
);
}
/* End of CDRX configuration */
#if (LTE_RRC_VERSION >= MAKE_VERSION(9, 0, 0))
sr_ProhibitTimer_r9
=
CALLOC
(
1
,
sizeof
(
long
));
...
...
@@ -6494,6 +6494,24 @@ 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
if
(
NODE_IS_MONOLITHIC
(
RC
.
rrc
[
ctxt_pP
->
module_id
]
->
node_type
))
{
/* CDRX: (under test) activated when RRC Connection Reconfiguration was sent */
int
UE_id_mac
=
find_UE_id
(
ctxt_pP
->
module_id
,
ue_context_pP
->
ue_context
.
rnti
);
if
(
UE_id_mac
==
-
1
)
{
LOG_E
(
rrc
,
"Can't find UE_id(MAC) of UE rnti %x
\n
"
,
ue_context_pP
->
ue_context
.
rnti
);
return
;
}
UE_sched_ctrl_t
*
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; // Set to TRUE when RRC Connection Reconfiguration is sent (under test)
LOG_I
(
RRC
,
"CDRX configuration activated after RRC Connection Reconfiguration Complete reception
\n
"
);
}
/* End of CDRX processing */
}
T
(
T_ENB_RRC_CONNECTION_RECONFIGURATION_COMPLETE
,
T_INT
(
ctxt_pP
->
module_id
),
T_INT
(
ctxt_pP
->
frame
),
...
...
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