Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
O
OpenXG UE
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
OpenXG UE
Commits
039e64ef
Commit
039e64ef
authored
Apr 16, 2018
by
Robert Schmidt
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
MAC: change all slice_id_t to slice index variables
parent
9b5ad350
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 @
039e64ef
This diff is collapsed.
Click to expand it.
openair2/LAYER2/MAC/eNB_scheduler_primitives.c
View file @
039e64ef
...
...
@@ -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
;
}
openair2/LAYER2/MAC/eNB_scheduler_ulsch.c
View file @
039e64ef
...
...
@@ -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
)
{
...
...
openair2/LAYER2/MAC/mac.h
View file @
039e64ef
...
...
@@ -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
;
...
...
openair2/LAYER2/MAC/mac_proto.h
View file @
039e64ef
...
...
@@ -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
);
...
...
openair2/LAYER2/MAC/pre_processor.c
View file @
039e64ef
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