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
8f2d7970
Commit
8f2d7970
authored
7 years ago
by
Robert Schmidt
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
MAC: change all slice_id_t to slice index variables
parent
87b8b6e8
Branches unavailable
2023.w22
2023.w21
2023.w20
2023.w19
2023.w18
2023.w18b
2023.w16
2023.w15
2023.w14
2023.w13
2023.w12
2023.w11
2023.w11b
2023.w10
2023.w10b
2023.w09
2023.w08
2023.w08b
2023.w07
2023.w06
2023.w05
2023.w03
2023.w02
2022.42
2022.41
2022.w51
2022.w50
2022.w49
2022.w48
2022.w47
2022.w46
2022.w45
2022.w43
2022.w42
2022.w42b
2022.w41
2022.w40
2022.w39
2022.w38
2022.w37
2022.w37b
2022.w36
2022.w35
2022.w33
2022.w32
2022.w31
2022.w31b
2022.w30
2022.w29
2022.w26
2022.w25
2022.w24
2022.w24b
2022.w23
2022.w22
2022.w21
2022.w20
2022.w19
2022.w18
2022.w17
2022.w15
2022.w15b
2022.w14a
2022.w13
2022.w13b
2022.w13a
2022.w12
2022.w10
2022.w09
2022.w09b
2022.w08
2022.w08b
2022.w07
2022.w07b
2022.w06
2022.w06a
2022.w05
2022.w05b
2022.w03_hotfix
2022.w03_b
2022.w02
2022.w01
2021.wk46
2021.wk14_a
2021.wk13_d
2021.wk13_c
2021.w51_c
2021.w51_a
2021.w50_a
2021.w49_b
2021.w49_a
2021.w48
2021.w47
2021.w46
2021.w46-powder
2021.w45
2021.w45_b
2021.w44
2021.w43
2021.w42
2021.w37
2021.w36
2021.w35
2021.w34
2021.w33
2021.w32
2021.w31
2021.w30
2021.w29
2021.w28
2021.w27
2021.w26
2021.w25
2021.w24
2021.w23
2021.w22
2021.w20
2021.w19
2021.w18_b
2021.w18_a
2021.w17_b
2021.w16
2021.w15
2021.w14
2021.w13_a
2021.w12
2021.w11
2021.w10
2021.w09
2021.w08
2021.w06
2021.w05
2021.w04
2021.w02
2020.w51_2
2020.w51
2020.w50
2020.w49
2020.w48_2
2020.w48
2020.w47
2020.w46_2
2020.w46
2020.w45_2
2020.w45
2020.w44
2020.w42_2
2020.w42
2020.w41
2020.w39
2020.w38
2020.w37
2020.w36
2020.w34
2020.w33
2020.w31
2020.w30
2020.w29
2020.w28
2020.w26
2020.w25
2020.w24
2020.w23
2020.w22
2020.w19
2020.w17
2020.w16
2020.w15
2020.w11
2020.w09
2020.w06
2020.w05
2020.w04
2020.w03
2019.w51
2019.w44
2019.w41
2019.w36
2019.w30
2019.w28
2019.w27
2019.w25
2019.w23
2019.w21
2019.w17
2019.w15
2019.w13
2019.w11
2019.w10
2019.w09
2019.w08
2019.w07
2019.w06
2019.w04
2019.w03
2018.w51
2018.w48
2018.w47
2018.w46
2018.w44
2018.w41
2018.w40
2018.w39
2018.w36
v1.2.2
v1.2.1
v1.2.0
v1.1.1
v1.1.0
v1.0.3
v1.0.2
v1.0.1
v1.0.0
setparam
osa-etsi-ws-ue
osa-etsi-ws-try2
osa-etsi-ws-try1
osa-etsi-ws-gNB
nr-ip-over-lte
nr-ip-over-lte-v.1.5
nr-ip-over-lte-v.1.4
nr-ip-over-lte-v.1.3
nr-ip-over-lte-v.1.2
nr-ip-over-lte-v.1.1
nr-ip-over-lte-v.1.0
flexran-eol
develop-nr-pdcch
develop-nr-2020w03
develop-nr-2020w02
develop-nr-2019w51
develop-nr-2019w50
develop-nr-2019w48
develop-nr-2019w47
develop-nr-2019w45
develop-nr-2019w43
develop-nr-2019w42
develop-nr-2019w40
develop-nr-2019w28
develop-nr-2019w23
benetel_phase_rotation
benetel_gnb_rel_2.0
benetel_gnb_rel_1.0
benetel_enb_rel_2.0
benetel_enb_rel_1.0
No related merge requests found
Changes
6
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
201 additions
and
181 deletions
+201
-181
openair2/LAYER2/MAC/eNB_scheduler_dlsch.c
openair2/LAYER2/MAC/eNB_scheduler_dlsch.c
+36
-31
openair2/LAYER2/MAC/eNB_scheduler_primitives.c
openair2/LAYER2/MAC/eNB_scheduler_primitives.c
+14
-12
openair2/LAYER2/MAC/eNB_scheduler_ulsch.c
openair2/LAYER2/MAC/eNB_scheduler_ulsch.c
+21
-18
openair2/LAYER2/MAC/mac.h
openair2/LAYER2/MAC/mac.h
+8
-4
openair2/LAYER2/MAC/mac_proto.h
openair2/LAYER2/MAC/mac_proto.h
+15
-14
openair2/LAYER2/MAC/pre_processor.c
openair2/LAYER2/MAC/pre_processor.c
+107
-102
No files found.
openair2/LAYER2/MAC/eNB_scheduler_dlsch.c
View file @
8f2d7970
This diff is collapsed.
Click to expand it.
openair2/LAYER2/MAC/eNB_scheduler_primitives.c
View file @
8f2d7970
...
...
@@ -1962,8 +1962,8 @@ int add_new_ue(module_id_t mod_idP, int cc_idP, rnti_t rntiP, int harq_pidP
UE_list
->
UE_sched_ctrl
[
UE_id
].
ue_reestablishment_reject_timer
=
0
;
/* default slice in case there was something different */
UE_list
->
assoc_dl_slice
[
UE_id
]
=
0
;
UE_list
->
assoc_ul_slice
[
UE_id
]
=
0
;
UE_list
->
assoc_dl_slice
_idx
[
UE_id
]
=
0
;
UE_list
->
assoc_ul_slice
_idx
[
UE_id
]
=
0
;
UE_list
->
UE_sched_ctrl
[
UE_id
].
ta_update
=
31
;
...
...
@@ -4542,24 +4542,26 @@ uint16_t nb_rbs_allowed_slice(float rb_percentage, int total_rbs)
return
(
uint16_t
)
floor
(
rb_percentage
*
total_rbs
);
}
int
ue_dl_slice_membership
(
module_id_t
mod_id
,
int
UE_id
,
slice_id_t
slice_id
)
int
ue_dl_slice_membership
(
module_id_t
mod_id
,
int
UE_id
,
int
slice_idx
)
{
if
((
slice_id
<
0
)
||
(
slice_id
>=
RC
.
mac
[
mod_id
]
->
slice_info
.
n_dl
))
{
LOG_W
(
MAC
,
"out of range slice id %d
\n
"
,
slice_id
);
if
((
slice_idx
<
0
)
||
(
slice_idx
>=
RC
.
mac
[
mod_id
]
->
slice_info
.
n_dl
))
{
LOG_W
(
MAC
,
"out of range slice index %d (slice ID %d)
\n
"
,
slice_idx
,
RC
.
mac
[
mod_id
]
->
slice_info
.
dl
[
slice_idx
].
id
);
return
0
;
}
return
RC
.
mac
[
mod_id
]
->
UE_list
.
active
[
UE_id
]
==
TRUE
&&
RC
.
mac
[
mod_id
]
->
UE_list
.
assoc_dl_slice
[
UE_id
]
==
slice_id
;
&&
RC
.
mac
[
mod_id
]
->
UE_list
.
assoc_dl_slice
_idx
[
UE_id
]
==
slice_idx
;
}
int
ue_ul_slice_membership
(
module_id_t
mod_id
,
int
UE_id
,
slice_id_t
slice_id
)
int
ue_ul_slice_membership
(
module_id_t
mod_id
,
int
UE_id
,
int
slice_idx
)
{
if
((
slice_id
<
0
)
||
(
slice_id
>=
RC
.
mac
[
mod_id
]
->
slice_info
.
n_ul
))
{
LOG_W
(
MAC
,
"out of range slice id %d
\n
"
,
slice_id
);
if
((
slice_idx
<
0
)
||
(
slice_idx
>=
RC
.
mac
[
mod_id
]
->
slice_info
.
n_ul
))
{
LOG_W
(
MAC
,
"out of range slice index %d (slice ID %d)
\n
"
,
slice_idx
,
RC
.
mac
[
mod_id
]
->
slice_info
.
dl
[
slice_idx
].
id
);
return
0
;
}
return
RC
.
mac
[
mod_id
]
->
UE_list
.
active
[
UE_id
]
==
TRUE
&&
RC
.
mac
[
mod_id
]
->
UE_list
.
assoc_ul_slice
[
UE_id
]
==
slice_id
;
&&
RC
.
mac
[
mod_id
]
->
UE_list
.
assoc_ul_slice
_idx
[
UE_id
]
==
slice_idx
;
}
This diff is collapsed.
Click to expand it.
openair2/LAYER2/MAC/eNB_scheduler_ulsch.c
View file @
8f2d7970
...
...
@@ -1049,8 +1049,9 @@ schedule_ulsch(module_id_t module_idP, frame_t frameP,
}
for
(
i
=
0
;
i
<
sli
->
n_ul
;
i
++
)
{
if
(
sli
->
ul
[
i
].
pct
<
0
){
LOG_W
(
MAC
,
"[eNB %d] frame %d subframe %d:invalid slice %d percentage %f. resetting to zero"
,
module_idP
,
frameP
,
subframeP
,
i
,
sli
->
ul
[
i
].
pct
);
LOG_W
(
MAC
,
"[eNB %d][SLICE %d][UL] frame %d subframe %d: invalid percentage %f. resetting to zero"
,
module_idP
,
sli
->
ul
[
i
].
id
,
frameP
,
subframeP
,
sli
->
ul
[
i
].
pct
);
sli
->
ul
[
i
].
pct
=
0
;
}
sli
->
tot_pct_ul
+=
sli
->
ul
[
i
].
pct
;
...
...
@@ -1088,7 +1089,7 @@ schedule_ulsch(module_id_t module_idP, frame_t frameP,
// check if the slice rb share has changed, and log the console
if
(
sli
->
ul
[
i
].
pct_current
!=
sli
->
ul
[
i
].
pct
){
LOG_I
(
MAC
,
"[eNB %d][SLICE %d][UL] frame %d subframe %d: total percentage %f-->%f, slice RB percentage has changed: %f-->%f
\n
"
,
module_idP
,
i
,
frameP
,
subframeP
,
sli
->
tot_pct_ul_current
,
module_idP
,
sli
->
ul
[
i
].
id
,
frameP
,
subframeP
,
sli
->
tot_pct_ul_current
,
sli
->
tot_pct_ul
,
sli
->
ul
[
i
].
pct_current
,
sli
->
ul
[
i
].
pct
);
sli
->
tot_pct_ul_current
=
sli
->
tot_pct_ul
;
sli
->
ul
[
i
].
pct_current
=
sli
->
ul
[
i
].
pct
;
...
...
@@ -1098,11 +1099,12 @@ schedule_ulsch(module_id_t module_idP, frame_t frameP,
if
(
sli
->
ul
[
i
].
maxmcs_current
!=
sli
->
ul
[
i
].
maxmcs
){
if
((
sli
->
ul
[
i
].
maxmcs
>=
0
)
&&
(
sli
->
ul
[
i
].
maxmcs
<=
16
)){
LOG_I
(
MAC
,
"[eNB %d][SLICE %d][UL] frame %d subframe %d: slice MAX MCS has changed: %d-->%d
\n
"
,
module_idP
,
i
,
frameP
,
subframeP
,
sli
->
ul
[
i
].
maxmcs_current
,
sli
->
ul
[
i
].
maxmcs
);
module_idP
,
sli
->
ul
[
i
].
id
,
frameP
,
subframeP
,
sli
->
ul
[
i
].
maxmcs_current
,
sli
->
ul
[
i
].
maxmcs
);
sli
->
ul
[
i
].
maxmcs_current
=
sli
->
ul
[
i
].
maxmcs
;
}
else
{
LOG_W
(
MAC
,
"[eNB %d][SLICE %d][UL] invalid slice max mcs %d, revert the previous value %d
\n
"
,
module_idP
,
i
,
sli
->
ul
[
i
].
maxmcs
,
sli
->
ul
[
i
].
maxmcs_current
);
module_idP
,
sli
->
ul
[
i
].
id
,
sli
->
ul
[
i
].
maxmcs
,
sli
->
ul
[
i
].
maxmcs_current
);
sli
->
ul
[
i
].
maxmcs
=
sli
->
ul
[
i
].
maxmcs_current
;
}
}
...
...
@@ -1110,11 +1112,13 @@ schedule_ulsch(module_id_t module_idP, frame_t frameP,
if
(
sli
->
ul
[
i
].
first_rb_current
!=
sli
->
ul
[
i
].
first_rb
){
if
(
sli
->
ul
[
i
].
first_rb
>=
0
){
// FIXME: Max limit is checked in the scheduler
LOG_N
(
MAC
,
"[eNB %d][SLICE %d][UL] frame %d subframe %d: slice first rb has changed: %d-->%d
\n
"
,
module_idP
,
i
,
frameP
,
subframeP
,
sli
->
ul
[
i
].
first_rb_current
,
sli
->
ul
[
i
].
first_rb
);
module_idP
,
sli
->
ul
[
i
].
id
,
frameP
,
subframeP
,
sli
->
ul
[
i
].
first_rb_current
,
sli
->
ul
[
i
].
first_rb
);
sli
->
ul
[
i
].
first_rb_current
=
sli
->
ul
[
i
].
first_rb
;
}
else
{
LOG_W
(
MAC
,
"[eNB %d][SLICE %d][UL] invalid slice first rb %d, revert the previous value %d
\n
"
,
module_idP
,
i
,
sli
->
ul
[
i
].
first_rb
,
sli
->
ul
[
i
].
first_rb_current
);
module_idP
,
sli
->
ul
[
i
].
id
,
sli
->
ul
[
i
].
first_rb
,
sli
->
ul
[
i
].
first_rb_current
);
sli
->
ul
[
i
].
first_rb
=
sli
->
ul
[
i
].
first_rb_current
;
}
}
...
...
@@ -1122,13 +1126,13 @@ schedule_ulsch(module_id_t module_idP, frame_t frameP,
// check if a new scheduler, and log the console
if
(
sli
->
ul
[
i
].
update_sched_current
!=
sli
->
ul
[
i
].
update_sched
)
{
LOG_I
(
MAC
,
"[eNB %d][SLICE %d][UL] frame %d subframe %d: UL scheduler for this slice is updated: %s
\n
"
,
module_idP
,
i
,
frameP
,
subframeP
,
sli
->
ul
[
i
].
sched_name
);
module_idP
,
sli
->
ul
[
i
].
id
,
frameP
,
subframeP
,
sli
->
ul
[
i
].
sched_name
);
sli
->
ul
[
i
].
update_sched_current
=
sli
->
ul
[
i
].
update_sched
;
}
}
else
{
if
(
sli
->
n_ul
==
sli
->
n_ul_current
)
{
LOG_W
(
MAC
,
"[eNB %d][SLICE %d][UL] invalid total RB share (%f->%f), reduce proportionally the RB share by 0.1
\n
"
,
module_idP
,
i
,
sli
->
tot_pct_ul_current
,
sli
->
tot_pct_ul
);
module_idP
,
sli
->
ul
[
i
].
id
,
sli
->
tot_pct_ul_current
,
sli
->
tot_pct_ul
);
if
(
sli
->
ul
[
i
].
pct
>
sli
->
avg_pct_ul
)
{
sli
->
ul
[
i
].
pct
-=
0
.
1
;
sli
->
tot_pct_ul
-=
0
.
1
;
...
...
@@ -1136,9 +1140,8 @@ schedule_ulsch(module_id_t module_idP, frame_t frameP,
}
else
{
// here we can correct the values, e.g. reduce proportionally
LOG_W
(
MAC
,
"[eNB %d][SLICE %d][UL] invalid total RB share (%f->%f), revert the number of slice to its previous value (%d->%d)
\n
"
,
module_idP
,
i
,
sli
->
tot_pct_ul_current
,
sli
->
tot_pct_ul
,
sli
->
n_ul
,
sli
->
n_ul_current
);
module_idP
,
sli
->
ul
[
i
].
id
,
sli
->
tot_pct_ul_current
,
sli
->
tot_pct_ul
,
sli
->
n_ul
,
sli
->
n_ul_current
);
sli
->
n_ul
=
sli
->
n_ul_current
;
sli
->
ul
[
i
].
pct
=
sli
->
ul
[
i
].
pct_current
;
}
...
...
@@ -1153,7 +1156,7 @@ schedule_ulsch(module_id_t module_idP, frame_t frameP,
void
schedule_ulsch_rnti
(
module_id_t
module_idP
,
slice_id_t
slice_id
,
int
slice_idx
,
frame_t
frameP
,
sub_frame_t
subframeP
,
unsigned
char
sched_subframeP
,
uint16_t
*
first_rb
)
...
...
@@ -1197,14 +1200,14 @@ schedule_ulsch_rnti(module_id_t module_idP,
for
(
CC_id
=
0
;
CC_id
<
NFAPI_CC_MAX
;
++
CC_id
)
{
N_RB_UL
=
to_prb
(
cc
[
CC_id
].
ul_Bandwidth
);
UE_list
->
first_rb_offset
[
CC_id
][
slice_id
]
=
cmin
(
N_RB_UL
,
sli
->
ul
[
slice_id
].
first_rb
);
UE_list
->
first_rb_offset
[
CC_id
][
slice_id
x
]
=
cmin
(
N_RB_UL
,
sli
->
ul
[
slice_idx
].
first_rb
);
}
//LOG_D(MAC, "entering ulsch preprocesor\n");
ulsch_scheduler_pre_processor
(
module_idP
,
slice_id
,
frameP
,
subframeP
,
sched_subframeP
,
first_rb
);
ulsch_scheduler_pre_processor
(
module_idP
,
slice_id
x
,
frameP
,
subframeP
,
sched_subframeP
,
first_rb
);
for
(
CC_id
=
0
;
CC_id
<
NFAPI_CC_MAX
;
++
CC_id
)
{
first_rb_slice
[
CC_id
]
=
first_rb
[
CC_id
]
+
UE_list
->
first_rb_offset
[
CC_id
][
slice_id
];
first_rb_slice
[
CC_id
]
=
first_rb
[
CC_id
]
+
UE_list
->
first_rb_offset
[
CC_id
][
slice_id
x
];
}
//LOG_D(MAC, "exiting ulsch preprocesor\n");
...
...
@@ -1214,7 +1217,7 @@ schedule_ulsch_rnti(module_id_t module_idP,
for
(
UE_id
=
UE_list
->
head_ul
;
UE_id
>=
0
;
UE_id
=
UE_list
->
next_ul
[
UE_id
])
{
if
(
!
ue_ul_slice_membership
(
module_idP
,
UE_id
,
slice_id
))
if
(
!
ue_ul_slice_membership
(
module_idP
,
UE_id
,
slice_id
x
))
continue
;
// don't schedule if Msg4 is not received yet
...
...
@@ -1402,7 +1405,7 @@ schedule_ulsch_rnti(module_id_t module_idP,
UE_template
->
oldNDI_UL
[
harq_pid
]
=
ndi
;
UE_list
->
eNB_UE_stats
[
CC_id
][
UE_id
].
normalized_rx_power
=
normalized_rx_power
;
UE_list
->
eNB_UE_stats
[
CC_id
][
UE_id
].
target_rx_power
=
target_rx_power
;
UE_template
->
mcs_UL
[
harq_pid
]
=
cmin
(
UE_template
->
pre_assigned_mcs_ul
,
sli
->
ul
[
slice_id
].
maxmcs
);
UE_template
->
mcs_UL
[
harq_pid
]
=
cmin
(
UE_template
->
pre_assigned_mcs_ul
,
sli
->
ul
[
slice_id
x
].
maxmcs
);
UE_list
->
eNB_UE_stats
[
CC_id
][
UE_id
].
ulsch_mcs1
=
UE_template
->
mcs_UL
[
harq_pid
];
//cmin (UE_template->pre_assigned_mcs_ul, openair_daq_vars.target_ue_ul_mcs); // adjust, based on user-defined MCS
if
(
UE_template
->
pre_allocated_rb_table_index_ul
>=
0
)
{
...
...
This diff is collapsed.
Click to expand it.
openair2/LAYER2/MAC/mac.h
View file @
8f2d7970
...
...
@@ -1104,8 +1104,8 @@ typedef struct {
uint16_t
sorting_criteria
[
MAX_NUM_SLICES
][
CR_NUM
];
uint16_t
first_rb_offset
[
NFAPI_CC_MAX
][
MAX_NUM_SLICES
];
slice_id_t
assoc_dl_slice
[
MAX_MOBILES_PER_ENB
];
slice_id_t
assoc_ul_slice
[
MAX_MOBILES_PER_ENB
];
int
assoc_dl_slice_idx
[
MAX_MOBILES_PER_ENB
];
int
assoc_ul_slice_idx
[
MAX_MOBILES_PER_ENB
];
}
UE_list_t
;
...
...
@@ -1144,12 +1144,14 @@ typedef struct {
* slice specific scheduler for the DL
*/
typedef
void
(
*
slice_scheduler_dl
)(
module_id_t
mod_id
,
slice_id_t
slice_id
,
int
slice_idx
,
frame_t
frame
,
sub_frame_t
subframe
,
int
*
mbsfn_flag
);
typedef
struct
{
slice_id_t
id
;
/// RB share for each slice for past and current time
float
pct
;
float
pct_current
;
...
...
@@ -1192,13 +1194,15 @@ typedef struct {
}
slice_sched_conf_dl_t
;
typedef
void
(
*
slice_scheduler_ul
)(
module_id_t
mod_id
,
slice_id_t
slice_id
,
int
slice_idx
,
frame_t
frame
,
sub_frame_t
subframe
,
unsigned
char
sched_subframe
,
uint16_t
*
first_rb
);
typedef
struct
{
slice_id_t
id
;
/// RB share for each slice for past and current time
float
pct
;
float
pct_current
;
...
...
This diff is collapsed.
Click to expand it.
openair2/LAYER2/MAC/mac_proto.h
View file @
8f2d7970
...
...
@@ -103,12 +103,12 @@ void schedule_ulsch(module_id_t module_idP, frame_t frameP,
/** \brief ULSCH Scheduling per RNTI
@param Mod_id Instance ID of eNB
@param slice_id
Instance slice
for this eNB
@param slice_id
x Slice instance index
for this eNB
@param frame Frame index
@param subframe Subframe number on which to act
@param sched_subframe Subframe number where PUSCH is transmitted (for DAI lookup)
*/
void
schedule_ulsch_rnti
(
module_id_t
module_idP
,
slice_id_t
slice_idP
,
frame_t
frameP
,
void
schedule_ulsch_rnti
(
module_id_t
module_idP
,
int
slice_idx
,
frame_t
frameP
,
sub_frame_t
subframe
,
unsigned
char
sched_subframe
,
uint16_t
*
first_rb
);
...
...
@@ -131,7 +131,7 @@ void fill_DLSCH_dci(module_id_t module_idP,frame_t frameP,sub_frame_t subframe,i
void
schedule_dlsch
(
module_id_t
module_idP
,
frame_t
frameP
,
sub_frame_t
subframe
,
int
*
mbsfn_flag
);
void
schedule_ue_spec
(
module_id_t
module_idP
,
slice_id_t
slice_id
P
,
void
schedule_ue_spec
(
module_id_t
module_idP
,
int
slice_idx
P
,
frame_t
frameP
,
sub_frame_t
subframe
,
int
*
mbsfn_flag
);
void
schedule_ue_spec_phy_test
(
module_id_t
module_idP
,
frame_t
frameP
,
sub_frame_t
subframe
,
int
*
mbsfn_flag
);
...
...
@@ -192,6 +192,7 @@ void clear_nfapi_information(eNB_MAC_INST * eNB, int CC_idP,
// eNB functions
/* \brief This function assigns pre-available RBS to each UE in specified sub-bands before scheduling is done
@param Mod_id Instance ID of eNB
@param slice_idxP Slice instance index for the slice in which scheduling happens
@param frame Index of frame
@param subframe Index of current subframe
@param N_RBS Number of resource block groups
...
...
@@ -199,13 +200,13 @@ void clear_nfapi_information(eNB_MAC_INST * eNB, int CC_idP,
void
dlsch_scheduler_pre_processor
(
module_id_t
module_idP
,
slice_id_t
slice_id
P
,
int
slice_idx
P
,
frame_t
frameP
,
sub_frame_t
subframe
,
int
*
mbsfn_flag
);
void
dlsch_scheduler_pre_processor_reset
(
module_id_t
module_idP
,
slice_id_t
slice_id
,
int
slice_idx
,
frame_t
frameP
,
sub_frame_t
subframeP
,
int
min_rb_unit
[
NFAPI_CC_MAX
],
...
...
@@ -215,11 +216,11 @@ void dlsch_scheduler_pre_processor_reset(module_id_t module_idP,
int
*
mbsfn_flag
);
void
dlsch_scheduler_pre_processor_partitioning
(
module_id_t
Mod_id
,
slice_id_t
slice_id
,
int
slice_idx
,
const
uint8_t
rbs_retx
[
NFAPI_CC_MAX
]);
void
dlsch_scheduler_pre_processor_accounting
(
module_id_t
Mod_id
,
slice_id_t
slice_id
,
int
slice_idx
,
frame_t
frameP
,
sub_frame_t
subframeP
,
int
min_rb_unit
[
NFAPI_CC_MAX
],
...
...
@@ -227,7 +228,7 @@ void dlsch_scheduler_pre_processor_accounting(module_id_t Mod_id,
uint16_t
nb_rbs_accounted
[
NFAPI_CC_MAX
][
MAX_MOBILES_PER_ENB
]);
void
dlsch_scheduler_pre_processor_positioning
(
module_id_t
Mod_id
,
slice_id_t
slice_id
,
int
slice_idx
,
int
min_rb_unit
[
NFAPI_CC_MAX
],
uint16_t
nb_rbs_required
[
NFAPI_CC_MAX
][
MAX_MOBILES_PER_ENB
],
uint16_t
nb_rbs_accounted
[
NFAPI_CC_MAX
][
MAX_MOBILES_PER_ENB
],
...
...
@@ -236,7 +237,7 @@ void dlsch_scheduler_pre_processor_positioning(module_id_t Mod_id,
uint8_t
MIMO_mode_indicator
[
NFAPI_CC_MAX
][
N_RBG_MAX
]);
void
dlsch_scheduler_pre_processor_intraslice_sharing
(
module_id_t
Mod_id
,
slice_id_t
slice_id
,
int
slice_idx
,
int
min_rb_unit
[
NFAPI_CC_MAX
],
uint16_t
nb_rbs_required
[
NFAPI_CC_MAX
][
MAX_MOBILES_PER_ENB
],
uint16_t
nb_rbs_accounted
[
NFAPI_CC_MAX
][
MAX_MOBILES_PER_ENB
],
...
...
@@ -713,20 +714,20 @@ void set_ul_DAI(int module_idP,
int
frameP
,
int
subframeP
);
void
ulsch_scheduler_pre_processor
(
module_id_t
module_idP
,
slice_id_t
slice_id
,
int
frameP
,
void
ulsch_scheduler_pre_processor
(
module_id_t
module_idP
,
int
slice_idx
,
int
frameP
,
sub_frame_t
subframeP
,
unsigned
char
sched_subframeP
,
uint16_t
*
first_rb
);
void
store_ulsch_buffer
(
module_id_t
module_idP
,
int
frameP
,
sub_frame_t
subframeP
);
void
sort_ue_ul
(
module_id_t
module_idP
,
int
frameP
,
sub_frame_t
subframeP
);
void
assign_max_mcs_min_rb
(
module_id_t
module_idP
,
int
slice_id
,
int
frameP
,
void
assign_max_mcs_min_rb
(
module_id_t
module_idP
,
int
slice_id
x
,
int
frameP
,
sub_frame_t
subframeP
,
uint16_t
*
first_rb
);
void
adjust_bsr_info
(
int
buffer_occupancy
,
uint16_t
TBS
,
UE_TEMPLATE
*
UE_template
);
int
phy_stats_exist
(
module_id_t
Mod_id
,
int
rnti
);
void
sort_UEs
(
module_id_t
Mod_idP
,
slice_id_t
slice_id
,
int
frameP
,
sub_frame_t
subframeP
);
void
sort_UEs
(
module_id_t
Mod_idP
,
int
slice_idx
,
int
frameP
,
sub_frame_t
subframeP
);
/*! \fn UE_L2_state_t ue_scheduler(const module_id_t module_idP,const frame_t frameP, const sub_frame_t subframe, const lte_subframe_t direction,const uint8_t eNB_index)
\brief UE scheduler where all the ue background tasks are done. This function performs the following: 1) Trigger PDCP every 5ms 2) Call RRC for link status return to PHY3) Perform SR/BSR procedures for scheduling feedback 4) Perform PHR procedures.
...
...
@@ -1262,8 +1263,8 @@ void pre_scd_nb_rbs_required( module_id_t module_idP,
/*Slice related functions */
uint16_t
nb_rbs_allowed_slice
(
float
rb_percentage
,
int
total_rbs
);
int
ue_dl_slice_membership
(
module_id_t
mod_id
,
int
UE_id
,
slice_id_t
slice_id
);
int
ue_ul_slice_membership
(
module_id_t
mod_id
,
int
UE_id
,
slice_id_t
slice_id
);
int
ue_dl_slice_membership
(
module_id_t
mod_id
,
int
UE_id
,
int
slice_idx
);
int
ue_ul_slice_membership
(
module_id_t
mod_id
,
int
UE_id
,
int
slice_idx
);
/* from here: prototypes to get rid of compilation warnings: doc to be written by function author */
uint8_t
ul_subframe2_k_phich
(
COMMON_channels_t
*
cc
,
sub_frame_t
ul_subframe
);
...
...
This diff is collapsed.
Click to expand it.
openair2/LAYER2/MAC/pre_processor.c
View file @
8f2d7970
This diff is collapsed.
Click to expand it.
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