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
Michael Black
OpenXG UE
Commits
17fb7e09
Commit
17fb7e09
authored
Jan 19, 2017
by
Navid Nikaein
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
add support for RAN/radio resource slicing through flexran
parent
b6b6abe5
Changes
3
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
511 additions
and
41 deletions
+511
-41
openair2/LAYER2/MAC/defs.h
openair2/LAYER2/MAC/defs.h
+3
-0
openair2/LAYER2/MAC/flexran_agent_mac_proto.h
openair2/LAYER2/MAC/flexran_agent_mac_proto.h
+140
-1
openair2/LAYER2/MAC/flexran_agent_scheduler_dlsch_ue.c
openair2/LAYER2/MAC/flexran_agent_scheduler_dlsch_ue.c
+368
-40
No files found.
openair2/LAYER2/MAC/defs.h
View file @
17fb7e09
...
...
@@ -145,6 +145,9 @@
/*!\brief minimum MAC data needed for transmitting 1 min RLC PDU size + 1 byte MAC subHeader */
#define MIN_MAC_HDR_RLC_SIZE (1 + MIN_RLC_PDU_SIZE)
/*!\brief maximum number of slices / groups */
#define MAX_NUM_SLICES 4
/*
* eNB part
*/
...
...
openair2/LAYER2/MAC/flexran_agent_mac_proto.h
View file @
17fb7e09
...
...
@@ -21,7 +21,7 @@
/*! \file flexran_agent_mac_proto.h
* \brief MAC functions for FlexRAN agent
* \author Xenofon Foukas
* \author Xenofon Foukas
and Navid Nikaein
* \date 2016
* \email: x.foukas@sms.ed.ac.uk
* \version 0.1
...
...
@@ -36,6 +36,145 @@
#include "header.pb-c.h"
#include "flexran.pb-c.h"
/*
* slice specific scheduler
*/
typedef
void
(
*
slice_scheduler
)(
module_id_t
mod_id
,
int
slice_id
,
uint32_t
frame
,
uint32_t
subframe
,
int
*
mbsfn_flag
,
Protocol__FlexranMessage
**
dl_info
);
/*
* top level flexran scheduler used by the eNB scheduler
*/
void
flexran_schedule_ue_spec_default
(
mid_t
mod_id
,
uint32_t
frame
,
uint32_t
subframe
,
int
*
mbsfn_flag
,
Protocol__FlexranMessage
**
dl_info
);
/*
* slice specific scheduler for embb
*/
void
flexran_schedule_ue_spec_embb
(
mid_t
mod_id
,
int
slice_id
,
uint32_t
frame
,
uint32_t
subframe
,
int
*
mbsfn_flag
,
Protocol__FlexranMessage
**
dl_info
);
/*
* slice specific scheduler for urllc
*/
void
flexran_schedule_ue_spec_urllc
(
mid_t
mod_id
,
int
slice_id
,
uint32_t
frame
,
uint32_t
subframe
,
int
*
mbsfn_flag
,
Protocol__FlexranMessage
**
dl_info
);
/*
* slice specific scheduler for mmtc
*/
void
flexran_schedule_ue_spec_mmtc
(
mid_t
mod_id
,
int
slice_id
,
uint32_t
frame
,
uint32_t
subframe
,
int
*
mbsfn_flag
,
Protocol__FlexranMessage
**
dl_info
);
/*
* slice specific scheduler for best effort traffic
*/
void
flexran_schedule_ue_spec_be
(
mid_t
mod_id
,
int
slice_id
,
uint32_t
frame
,
uint32_t
subframe
,
int
*
mbsfn_flag
,
Protocol__FlexranMessage
**
dl_info
);
/*
* common flexran scheduler function
*/
void
flexran_schedule_ue_spec_common
(
mid_t
mod_id
,
int
slice_id
,
uint32_t
frame
,
uint32_t
subframe
,
int
*
mbsfn_flag
,
Protocol__FlexranMessage
**
dl_info
);
uint16_t
flexran_nb_rbs_allowed_slice
(
float
rb_percentage
,
int
total_rbs
);
int
flexran_slice_member
(
int
UE_id
,
int
slice_id
);
int
flexran_slice_maxmcs
(
int
slice_id
)
;
void
_store_dlsch_buffer
(
module_id_t
Mod_id
,
int
slice_id
,
frame_t
frameP
,
sub_frame_t
subframeP
);
void
_assign_rbs_required
(
module_id_t
Mod_id
,
int
slice_id
,
frame_t
frameP
,
sub_frame_t
subframe
,
uint16_t
nb_rbs_required
[
MAX_NUM_CCs
][
NUMBER_OF_UE_MAX
],
uint16_t
nb_rbs_allowed_slice
[
MAX_NUM_CCs
][
MAX_NUM_SLICES
],
int
min_rb_unit
[
MAX_NUM_CCs
]);
int
_maxround
(
module_id_t
Mod_id
,
uint16_t
rnti
,
int
frame
,
sub_frame_t
subframe
,
uint8_t
ul_flag
);
int
_maxcqi
(
module_id_t
Mod_id
,
int32_t
UE_id
);
void
_sort_UEs
(
module_id_t
Mod_idP
,
int
frameP
,
sub_frame_t
subframeP
);
void
_dlsch_scheduler_pre_processor
(
module_id_t
Mod_id
,
int
slice_id
,
frame_t
frameP
,
sub_frame_t
subframeP
,
int
N_RBG
[
MAX_NUM_CCs
],
int
*
mbsfn_flag
);
void
_dlsch_scheduler_pre_processor_reset
(
int
module_idP
,
int
UE_id
,
uint8_t
CC_id
,
int
frameP
,
int
subframeP
,
int
N_RBG
,
uint16_t
nb_rbs_required
[
MAX_NUM_CCs
][
NUMBER_OF_UE_MAX
],
uint16_t
nb_rbs_required_remaining
[
MAX_NUM_CCs
][
NUMBER_OF_UE_MAX
],
uint16_t
nb_rbs_allowed_slice
[
MAX_NUM_CCs
][
MAX_NUM_SLICES
],
unsigned
char
rballoc_sub
[
MAX_NUM_CCs
][
N_RBG_MAX
],
unsigned
char
MIMO_mode_indicator
[
MAX_NUM_CCs
][
N_RBG_MAX
]);
void
_dlsch_scheduler_pre_processor_allocate
(
module_id_t
Mod_id
,
int
UE_id
,
uint8_t
CC_id
,
int
N_RBG
,
int
transmission_mode
,
int
min_rb_unit
,
uint8_t
N_RB_DL
,
uint16_t
nb_rbs_required
[
MAX_NUM_CCs
][
NUMBER_OF_UE_MAX
],
uint16_t
nb_rbs_required_remaining
[
MAX_NUM_CCs
][
NUMBER_OF_UE_MAX
],
unsigned
char
rballoc_sub
[
MAX_NUM_CCs
][
N_RBG_MAX
],
unsigned
char
MIMO_mode_indicator
[
MAX_NUM_CCs
][
N_RBG_MAX
]);
/*
* Default scheduler used by the eNB agent
*/
...
...
openair2/LAYER2/MAC/flexran_agent_scheduler_dlsch_ue.c
View file @
17fb7e09
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