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
4c931888
Commit
4c931888
authored
Apr 15, 2019
by
Louis Adrien Dufrene
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Add dci0_ongoing_timer. Commit to build and test.
parent
7dc2b231
Changes
5
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
43 additions
and
9 deletions
+43
-9
openair2/LAYER2/MAC/config.c
openair2/LAYER2/MAC/config.c
+1
-0
openair2/LAYER2/MAC/eNB_scheduler.c
openair2/LAYER2/MAC/eNB_scheduler.c
+10
-1
openair2/LAYER2/MAC/eNB_scheduler_primitives.c
openair2/LAYER2/MAC/eNB_scheduler_primitives.c
+22
-7
openair2/LAYER2/MAC/eNB_scheduler_ulsch.c
openair2/LAYER2/MAC/eNB_scheduler_ulsch.c
+2
-0
openair2/LAYER2/MAC/mac.h
openair2/LAYER2/MAC/mac.h
+8
-1
No files found.
openair2/LAYER2/MAC/config.c
View file @
4c931888
...
@@ -1062,6 +1062,7 @@ void eNB_Config_Local_DRX(
...
@@ -1062,6 +1062,7 @@ void eNB_Config_Local_DRX(
UE_scheduling_control
->
cdrx_configured
=
FALSE
;
// will be set to true when ACK is received
UE_scheduling_control
->
cdrx_configured
=
FALSE
;
// will be set to true when ACK is received
UE_scheduling_control
->
cdrx_waiting_ack
=
TRUE
;
// set to true first, waiting for the UE to configure CDRX on its side
UE_scheduling_control
->
cdrx_waiting_ack
=
TRUE
;
// set to true first, waiting for the UE to configure CDRX on its side
UE_scheduling_control
->
in_active_time
=
FALSE
;
UE_scheduling_control
->
in_active_time
=
FALSE
;
UE_scheduling_control
->
dci0_ongoing_timer
=
0
;
UE_scheduling_control
->
on_duration_timer
=
0
;
UE_scheduling_control
->
on_duration_timer
=
0
;
switch
(
drx_Configuration
->
choice
.
setup
.
onDurationTimer
)
{
switch
(
drx_Configuration
->
choice
.
setup
.
onDurationTimer
)
{
...
...
openair2/LAYER2/MAC/eNB_scheduler.c
View file @
4c931888
...
@@ -790,7 +790,7 @@ eNB_dlsch_ulsch_scheduler(module_id_t module_idP,
...
@@ -790,7 +790,7 @@ eNB_dlsch_ulsch_scheduler(module_id_t module_idP,
active_time_condition
=
1
;
active_time_condition
=
1
;
}
else
if
((
UE_scheduling_control
->
on_duration_timer
>
0
)
&&
(
active_time_condition
==
0
))
{
}
else
if
((
UE_scheduling_control
->
on_duration_timer
>
0
)
&&
(
active_time_condition
==
0
))
{
active_time_condition
=
3
;
active_time_condition
=
3
;
}
else
if
((
UE_scheduling_control
->
drx_inactivity_timer
>
0
)
&&
(
active_time_condition
==
0
))
{
}
else
if
((
UE_scheduling_control
->
drx_inactivity_timer
>
1
)
&&
(
active_time_condition
==
0
))
{
active_time_condition
=
4
;
active_time_condition
=
4
;
}
}
...
@@ -798,6 +798,15 @@ eNB_dlsch_ulsch_scheduler(module_id_t module_idP,
...
@@ -798,6 +798,15 @@ eNB_dlsch_ulsch_scheduler(module_id_t module_idP,
}
}
/* END VCD */
/* END VCD */
/* DCI0 ongoing timer */
if
(
UE_scheduling_control
->
dci0_ongoing_timer
>
1
)
{
UE_scheduling_control
->
dci0_ongoing_timer
++
;
if
(
UE_scheduling_control
->
dci0_ongoing_timer
>
3
)
{
UE_scheduling_control
->
dci0_ongoing_timer
=
0
;
}
}
}
else
{
// else: CDRX not configured
}
else
{
// else: CDRX not configured
/* Note: (UL) HARQ RTT timers processing is done here and can be used by other features than CDRX */
/* Note: (UL) HARQ RTT timers processing is done here and can be used by other features than CDRX */
/* HARQ RTT timers */
/* HARQ RTT timers */
...
...
openair2/LAYER2/MAC/eNB_scheduler_primitives.c
View file @
4c931888
...
@@ -4948,21 +4948,35 @@ SR_indication(module_id_t mod_idP,
...
@@ -4948,21 +4948,35 @@ SR_indication(module_id_t mod_idP,
T_INT
(
rntiP
));
T_INT
(
rntiP
));
int
UE_id
=
find_UE_id
(
mod_idP
,
rntiP
);
int
UE_id
=
find_UE_id
(
mod_idP
,
rntiP
);
UE_list_t
*
UE_list
=
&
RC
.
mac
[
mod_idP
]
->
UE_list
;
UE_list_t
*
UE_list
=
&
RC
.
mac
[
mod_idP
]
->
UE_list
;
UE_sched_ctrl
*
UE_scheduling_ctrl
=
NULL
;
if
(
UE_id
!=
-
1
)
{
if
(
UE_id
!=
-
1
)
{
if
(
mac_eNB_get_rrc_status
(
mod_idP
,
UE_RNTI
(
mod_idP
,
UE_id
))
<
RRC_CONNECTED
)
{
UE_scheduling_ctrl
=
&
(
UE_list
->
UE_sched_ctrl
[
UE_id
]);
LOG_D
(
MAC
,
"[eNB %d][SR %x] Frame %d subframeP %d Signaling SR for UE %d on CC_id %d
\n
"
,
if
((
UE_scheduling_ctrl
->
cdrx_configured
==
TRUE
)
&&
(
UE_scheduling_ctrl
->
dci0_ongoing_timer
>
0
))
{
LOG_D
(
MAC
,
"[eNB %d][SR %x] Frame %d subframeP %d Signaling SR for UE %d on CC_id %d. \
The SR is not set do to ongoing DCI0 with CDRX activated
\n
"
,
mod_idP
,
mod_idP
,
rntiP
,
rntiP
,
frameP
,
frameP
,
subframeP
,
subframeP
,
UE_id
,
UE_id
,
cc_idP
);
cc_idP
);)
}
else
{
if
(
mac_eNB_get_rrc_status
(
mod_idP
,
UE_RNTI
(
mod_idP
,
UE_id
))
<
RRC_CONNECTED
)
{
LOG_D
(
MAC
,
"[eNB %d][SR %x] Frame %d subframeP %d Signaling SR for UE %d on CC_id %d
\n
"
,
mod_idP
,
rntiP
,
frameP
,
subframeP
,
UE_id
,
cc_idP
);
}
UE_list
->
UE_template
[
cc_idP
][
UE_id
].
ul_SR
=
1
;
UE_list
->
UE_template
[
cc_idP
][
UE_id
].
ul_active
=
TRUE
;
VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME
(
VCD_SIGNAL_DUMPER_FUNCTIONS_SR_INDICATION
,
1
);
VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME
(
VCD_SIGNAL_DUMPER_FUNCTIONS_SR_INDICATION
,
0
);
}
}
UE_list
->
UE_template
[
cc_idP
][
UE_id
].
ul_SR
=
1
;
UE_list
->
UE_template
[
cc_idP
][
UE_id
].
ul_active
=
TRUE
;
VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME
(
VCD_SIGNAL_DUMPER_FUNCTIONS_SR_INDICATION
,
1
);
VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME
(
VCD_SIGNAL_DUMPER_FUNCTIONS_SR_INDICATION
,
0
);
}
else
{
}
else
{
LOG_D
(
MAC
,
"[eNB %d][SR %x] Frame %d subframeP %d Signaling SR for UE %d (unknown UE_id) on CC_id %d
\n
"
,
LOG_D
(
MAC
,
"[eNB %d][SR %x] Frame %d subframeP %d Signaling SR for UE %d (unknown UE_id) on CC_id %d
\n
"
,
mod_idP
,
mod_idP
,
...
@@ -4972,6 +4986,7 @@ SR_indication(module_id_t mod_idP,
...
@@ -4972,6 +4986,7 @@ SR_indication(module_id_t mod_idP,
UE_id
,
UE_id
,
cc_idP
);
cc_idP
);
}
}
return
;
return
;
}
}
...
...
openair2/LAYER2/MAC/eNB_scheduler_ulsch.c
View file @
4c931888
...
@@ -1653,6 +1653,8 @@ schedule_ulsch_rnti(module_id_t module_idP,
...
@@ -1653,6 +1653,8 @@ schedule_ulsch_rnti(module_id_t module_idP,
if
(
UE_sched_ctrl_ptr
->
cdrx_configured
)
{
if
(
UE_sched_ctrl_ptr
->
cdrx_configured
)
{
UE_sched_ctrl_ptr
->
drx_inactivity_timer
=
1
;
// reset drx inactivity timer when new transmission
UE_sched_ctrl_ptr
->
drx_inactivity_timer
=
1
;
// reset drx inactivity timer when new transmission
VCD_SIGNAL_DUMPER_DUMP_VARIABLE_BY_NAME
(
VCD_SIGNAL_DUMPER_VARIABLES_DRX_INACTIVITY
,
(
unsigned
long
)
UE_sched_ctrl_ptr
->
drx_inactivity_timer
);
VCD_SIGNAL_DUMPER_DUMP_VARIABLE_BY_NAME
(
VCD_SIGNAL_DUMPER_VARIABLES_DRX_INACTIVITY
,
(
unsigned
long
)
UE_sched_ctrl_ptr
->
drx_inactivity_timer
);
UE_sched_ctrl_ptr
->
dci0_ongoing_timer
=
1
;
// when set the UE_template_ptr->ul_SR cannot be set to 1,
// see definition for more information
}
}
if
(
UE_template_ptr
->
pre_allocated_rb_table_index_ul
>=
0
)
{
if
(
UE_template_ptr
->
pre_allocated_rb_table_index_ul
>=
0
)
{
...
...
openair2/LAYER2/MAC/mac.h
View file @
4c931888
...
@@ -1007,7 +1007,7 @@ typedef struct {
...
@@ -1007,7 +1007,7 @@ typedef struct {
uint8_t
ul_synchronous_harq_timer
[
NFAPI_CC_MAX
][
8
];
// These timers are used for UL synchronous HARQ processes
uint8_t
ul_synchronous_harq_timer
[
NFAPI_CC_MAX
][
8
];
// These timers are used for UL synchronous HARQ processes
/* C-DRX related timers */
/* C-DRX related timers */
/* Note: only valid for FDD when this comment is written (11-01-19)*/
/* Note: only valid for FDD
and LTE UE
when this comment is written (11-01-19)*/
/// is TRUE if the cqi mask feature is activated by RRC configuration
/// is TRUE if the cqi mask feature is activated by RRC configuration
boolean_t
cqi_mask_boolean
;
boolean_t
cqi_mask_boolean
;
/// is TRUE if the following drx parameters are configured for UE
/// is TRUE if the following drx parameters are configured for UE
...
@@ -1018,6 +1018,13 @@ typedef struct {
...
@@ -1018,6 +1018,13 @@ typedef struct {
* configured on the eNB side, but not yet on the UE side...
* configured on the eNB side, but not yet on the UE side...
*/
*/
boolean_t
cdrx_waiting_ack
;
boolean_t
cdrx_waiting_ack
;
/*
* Is set when a ULSCH scheduling is done and run until the first corresponding transmission is done (4 subframes).
* When set, SR cannot be set for the UE. This allows OAI to avoid concidering a SR as uncompleted if the UE sends
* a SR just after a periodic DCI0 ULSCH scheduling. Without CDRX there is no problem, but with CDRX this case would
* create a lost in timers synchronization.
*/
uint8_t
dci0_ongoing_timer
;
/// is TRUE if the UE is in "Active Time", hence listening to PDCCH
/// is TRUE if the UE is in "Active Time", hence listening to PDCCH
boolean_t
in_active_time
;
boolean_t
in_active_time
;
/// OnDurationTimer
/// OnDurationTimer
...
...
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