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
4a95fd89
Commit
4a95fd89
authored
Apr 24, 2020
by
Haruki NAOI
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Fix: cqi request occures without waiting for completion of previous cqi reception.
parent
7ab4abb0
Changes
3
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
16 additions
and
46 deletions
+16
-46
openair1/SCHED/phy_procedures_lte_eNb.c
openair1/SCHED/phy_procedures_lte_eNb.c
+4
-13
openair2/LAYER2/MAC/eNB_scheduler_fairRR.c
openair2/LAYER2/MAC/eNB_scheduler_fairRR.c
+11
-33
openair2/LAYER2/MAC/mac_proto.h
openair2/LAYER2/MAC/mac_proto.h
+1
-0
No files found.
openair1/SCHED/phy_procedures_lte_eNb.c
View file @
4a95fd89
...
@@ -1256,21 +1256,12 @@ void pusch_procedures(PHY_VARS_eNB *eNB,L1_rxtx_proc_t *proc) {
...
@@ -1256,21 +1256,12 @@ void pusch_procedures(PHY_VARS_eNB *eNB,L1_rxtx_proc_t *proc) {
//compute the expected ULSCH RX power (for the stats)
//compute the expected ULSCH RX power (for the stats)
ulsch_harq
->
delta_TF
=
get_hundred_times_delta_IF_eNB
(
eNB
,
i
,
harq_pid
,
0
);
// 0 means bw_factor is not considered
ulsch_harq
->
delta_TF
=
get_hundred_times_delta_IF_eNB
(
eNB
,
i
,
harq_pid
,
0
);
// 0 means bw_factor is not considered
if
(
RC
.
mac
!=
NULL
)
{
/* ulsim does not use RC.mac context. */
if
(
ulsch_harq
->
cqi_crc_status
==
1
)
{
if
(
ulsch_harq
->
cqi_crc_status
==
1
)
{
#ifdef DEBUG_PHY_PROC
#ifdef DEBUG_PHY_PROC
//if (((frame%10) == 0) || (frame < 50))
//if (((frame%10) == 0) || (frame < 50))
print_CQI
(
ulsch_harq
->
o
,
ulsch_harq
->
uci_format
,
0
,
fp
->
N_RB_DL
);
print_CQI
(
ulsch_harq
->
o
,
ulsch_harq
->
uci_format
,
0
,
fp
->
N_RB_DL
);
#endif
#endif
fill_ulsch_cqi_indication
(
eNB
,
frame
,
subframe
,
ulsch_harq
,
ulsch
->
rnti
);
fill_ulsch_cqi_indication
(
eNB
,
frame
,
subframe
,
ulsch_harq
,
ulsch
->
rnti
);
RC
.
mac
[
eNB
->
Mod_id
]
->
UE_list
.
UE_sched_ctrl
[
i
].
cqi_req_flag
&=
(
~
(
1
<<
subframe
));
}
else
{
if
(
RC
.
mac
[
eNB
->
Mod_id
]
->
UE_list
.
UE_sched_ctrl
[
i
].
cqi_req_flag
&
(
1
<<
subframe
)
)
{
RC
.
mac
[
eNB
->
Mod_id
]
->
UE_list
.
UE_sched_ctrl
[
i
].
cqi_req_flag
&=
(
~
(
1
<<
subframe
));
RC
.
mac
[
eNB
->
Mod_id
]
->
UE_list
.
UE_sched_ctrl
[
i
].
cqi_req_timer
=
30
;
LOG_D
(
PHY
,
"Frame %d,Subframe %d, We're supposed to get a cqi here. Set cqi_req_timer to 30.
\n
"
,
frame
,
subframe
);
}
}
}
}
if
(
ret
==
(
1
+
MAX_TURBO_ITERATIONS
))
{
if
(
ret
==
(
1
+
MAX_TURBO_ITERATIONS
))
{
...
...
openair2/LAYER2/MAC/eNB_scheduler_fairRR.c
View file @
4a95fd89
...
@@ -3177,7 +3177,7 @@ void ulsch_scheduler_pre_ue_select_fairRR(
...
@@ -3177,7 +3177,7 @@ void ulsch_scheduler_pre_ue_select_fairRR(
if
(
((
UE_sched_ctl
->
ul_inactivity_timer
>
64
)
&&
(
UE_sched_ctl
->
ul_scheduled
==
0
))
||
if
(
((
UE_sched_ctl
->
ul_inactivity_timer
>
64
)
&&
(
UE_sched_ctl
->
ul_scheduled
==
0
))
||
((
UE_sched_ctl
->
ul_inactivity_timer
>
10
)
&&
(
UE_sched_ctl
->
ul_scheduled
==
0
)
&&
(
rrc_status
<
RRC_CONNECTED
))
||
((
UE_sched_ctl
->
ul_inactivity_timer
>
10
)
&&
(
UE_sched_ctl
->
ul_scheduled
==
0
)
&&
(
rrc_status
<
RRC_CONNECTED
))
||
((
UE_sched_ctl
->
cqi_req_timer
>
64
)
&&
(
(
rrc_status
>=
RRC_CONNECTED
)
))
)
{
((
UE_sched_ctl
->
cqi_req_timer
>
64
)
&&
(
UE_sched_ctl
->
ul_scheduled
==
0
)
&&
(
!
(
is_S_sf
(
&
eNB
->
common_channels
[
CC_id
],
subframeP
)))
&&
(
rrc_status
>=
RRC_CONNECTED
))
)
{
first_ue_id
[
CC_id
][
ue_first_num
[
CC_id
]]
=
UE_id
;
first_ue_id
[
CC_id
][
ue_first_num
[
CC_id
]]
=
UE_id
;
first_ue_total
[
CC_id
]
[
ue_first_num
[
CC_id
]]
=
0
;
first_ue_total
[
CC_id
]
[
ue_first_num
[
CC_id
]]
=
0
;
ue_first_num
[
CC_id
]
++
;
ue_first_num
[
CC_id
]
++
;
...
@@ -3289,7 +3289,7 @@ void ulsch_scheduler_pre_ue_select_fairRR(
...
@@ -3289,7 +3289,7 @@ void ulsch_scheduler_pre_ue_select_fairRR(
if
(
(
bytes_to_schedule
>
0
)
||
(
UE_list
->
UE_template
[
CC_id
][
UE_id
].
ul_SR
>
0
)
||
if
(
(
bytes_to_schedule
>
0
)
||
(
UE_list
->
UE_template
[
CC_id
][
UE_id
].
ul_SR
>
0
)
||
((
UE_sched_ctl
->
ul_inactivity_timer
>
64
)
&&
(
UE_sched_ctl
->
ul_scheduled
==
0
))
||
((
UE_sched_ctl
->
ul_inactivity_timer
>
64
)
&&
(
UE_sched_ctl
->
ul_scheduled
==
0
))
||
((
UE_sched_ctl
->
ul_inactivity_timer
>
10
)
&&
(
UE_sched_ctl
->
ul_scheduled
==
0
)
&&
(
rrc_status
<
RRC_CONNECTED
))
||
((
UE_sched_ctl
->
ul_inactivity_timer
>
10
)
&&
(
UE_sched_ctl
->
ul_scheduled
==
0
)
&&
(
rrc_status
<
RRC_CONNECTED
))
||
((
UE_sched_ctl
->
cqi_req_timer
>
64
)
&&
(
(
rrc_status
>=
RRC_CONNECTED
)
))
)
{
((
UE_sched_ctl
->
cqi_req_timer
>
64
)
&&
(
UE_sched_ctl
->
ul_scheduled
==
0
)
&&
(
!
(
is_S_sf
(
&
eNB
->
common_channels
[
CC_id
],
subframeP
)))
&&
(
rrc_status
>=
RRC_CONNECTED
))
)
{
hi_dci0_pdu
=
&
HI_DCI0_req
->
hi_dci0_pdu_list
[
HI_DCI0_req
->
number_of_dci
+
HI_DCI0_req
->
number_of_hi
];
hi_dci0_pdu
=
&
HI_DCI0_req
->
hi_dci0_pdu_list
[
HI_DCI0_req
->
number_of_dci
+
HI_DCI0_req
->
number_of_hi
];
format_flag
=
2
;
format_flag
=
2
;
...
@@ -3919,45 +3919,23 @@ void schedule_ulsch_rnti_fairRR(module_id_t module_idP,
...
@@ -3919,45 +3919,23 @@ void schedule_ulsch_rnti_fairRR(module_id_t module_idP,
VCD_SIGNAL_DUMPER_DUMP_VARIABLE_BY_NAME
(
VCD_SIGNAL_DUMPER_VARIABLES_UE0_BO
,
RC
.
eNB
[
module_idP
][
CC_id
]
->
pusch_stats_BO
[
UE_id
][(
frameP
*
10
)
+
subframeP
]);
VCD_SIGNAL_DUMPER_DUMP_VARIABLE_BY_NAME
(
VCD_SIGNAL_DUMPER_VARIABLES_UE0_BO
,
RC
.
eNB
[
module_idP
][
CC_id
]
->
pusch_stats_BO
[
UE_id
][(
frameP
*
10
)
+
subframeP
]);
status
=
mac_eNB_get_rrc_status
(
module_idP
,
rnti
);
status
=
mac_eNB_get_rrc_status
(
module_idP
,
rnti
);
if
(
status
<
RRC_CONNECTED
)
if
(
status
<
RRC_CONNECTED
)
{
cqi_req
=
0
;
cqi_req
=
0
;
else
if
(
UE_sched_ctrl
->
cqi_received
==
1
){
}
else
if
(
UE_sched_ctrl
->
cqi_received
==
1
){
LOG_D
(
MAC
,
"Clearing CQI request timer
\n
"
);
LOG_D
(
MAC
,
"Clearing CQI request timer
\n
"
);
UE_sched_ctrl
->
cqi_req_flag
=
0
;
UE_sched_ctrl
->
cqi_req_flag
=
0
;
UE_sched_ctrl
->
cqi_received
=
0
;
UE_sched_ctrl
->
cqi_received
=
0
;
UE_sched_ctrl
->
cqi_req_timer
=
0
;
UE_sched_ctrl
->
cqi_req_timer
=
0
;
cqi_req
=
0
;
cqi_req
=
0
;
}
else
if
(
UE_sched_ctrl
->
cqi_req_timer
>
64
)
{
}
else
if
((
UE_sched_ctrl
->
cqi_req_timer
>
64
)
&&
(
!
(
is_S_sf
(
&
eNB
->
common_channels
[
CC_id
],
subframeP
))))
{
cqi_req
=
1
;
// To be safe , do not ask CQI in special SFs:36.213/7.2.3 CQI definition
// To be safe , do not ask CQI in special SFs:36.213/7.2.3 CQI definition
if
(
cc
->
tdd_Config
)
{
cqi_req
=
1
;
switch
(
cc
->
tdd_Config
->
subframeAssignment
)
{
UE_sched_ctrl
->
cqi_req_flag
|=
1
<<
sched_subframeP
;
case
1
:
LOG_D
(
MAC
,
"[eNB %d] frame %d subframe %d,cqi_req 1 UE %d/%x
\n
"
,
if
(
subframeP
==
1
||
subframeP
==
6
)
cqi_req
=
0
;
module_idP
,
frameP
,
subframeP
,
UE_id
,
rnti
);
}
else
{
break
;
case
2
:
if
(
subframeP
==
1
||
subframeP
==
6
)
cqi_req
=
0
;
break
;
case
3
:
if
(
subframeP
==
1
)
cqi_req
=
0
;
break
;
default:
LOG_E
(
MAC
,
" TDD config not supported
\n
"
);
break
;
}
}
if
(
cqi_req
==
1
)
{
UE_sched_ctrl
->
cqi_req_flag
|=
1
<<
sched_subframeP
;
}
}
else
cqi_req
=
0
;
cqi_req
=
0
;
}
//power control
//power control
//compute the expected ULSCH RX power (for the stats)
//compute the expected ULSCH RX power (for the stats)
...
...
openair2/LAYER2/MAC/mac_proto.h
View file @
4a95fd89
...
@@ -1146,6 +1146,7 @@ uint32_t pdcchalloc2ulframe(COMMON_channels_t * ccP, uint32_t frame,
...
@@ -1146,6 +1146,7 @@ uint32_t pdcchalloc2ulframe(COMMON_channels_t * ccP, uint32_t frame,
uint8_t
pdcchalloc2ulsubframe
(
COMMON_channels_t
*
ccP
,
uint8_t
n
);
uint8_t
pdcchalloc2ulsubframe
(
COMMON_channels_t
*
ccP
,
uint8_t
n
);
int
is_UL_sf
(
COMMON_channels_t
*
ccP
,
sub_frame_t
subframeP
);
int
is_UL_sf
(
COMMON_channels_t
*
ccP
,
sub_frame_t
subframeP
);
int
is_S_sf
(
COMMON_channels_t
*
ccP
,
sub_frame_t
subframeP
);
uint8_t
getQm
(
uint8_t
mcs
);
uint8_t
getQm
(
uint8_t
mcs
);
...
...
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