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
lizhongxiao
OpenXG-RAN
Commits
27a1101a
Commit
27a1101a
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
84b61f22
Changes
3
Expand all
Show 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 @
27a1101a
...
...
@@ -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 @
27a1101a
...
...
@@ -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 @
27a1101a
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