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
048c4d29
Commit
048c4d29
authored
Apr 06, 2018
by
Robert Schmidt
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
add slice association in UE_list, test against it in slice_membership()
parent
58c2a006
Changes
6
Hide whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
43 additions
and
29 deletions
+43
-29
openair2/LAYER2/MAC/eNB_scheduler_dlsch.c
openair2/LAYER2/MAC/eNB_scheduler_dlsch.c
+1
-1
openair2/LAYER2/MAC/eNB_scheduler_primitives.c
openair2/LAYER2/MAC/eNB_scheduler_primitives.c
+19
-6
openair2/LAYER2/MAC/eNB_scheduler_ulsch.c
openair2/LAYER2/MAC/eNB_scheduler_ulsch.c
+1
-1
openair2/LAYER2/MAC/mac.h
openair2/LAYER2/MAC/mac.h
+3
-0
openair2/LAYER2/MAC/mac_proto.h
openair2/LAYER2/MAC/mac_proto.h
+2
-1
openair2/LAYER2/MAC/pre_processor.c
openair2/LAYER2/MAC/pre_processor.c
+17
-20
No files found.
openair2/LAYER2/MAC/eNB_scheduler_dlsch.c
View file @
048c4d29
...
...
@@ -763,7 +763,7 @@ schedule_ue_spec(module_id_t module_idP, slice_id_t slice_idP,
continue_flag
=
1
;
}
if
(
!
ue_
slice_membership
(
UE_id
,
slice_idP
,
RC
.
mac
[
module_idP
]
->
slice_info
.
n_dl
))
if
(
!
ue_
dl_slice_membership
(
module_idP
,
UE_id
,
slice_idP
))
continue
;
if
(
continue_flag
!=
1
)
{
...
...
openair2/LAYER2/MAC/eNB_scheduler_primitives.c
View file @
048c4d29
...
...
@@ -1961,6 +1961,9 @@ int add_new_ue(module_id_t mod_idP, int cc_idP, rnti_t rntiP, int harq_pidP
sizeof
(
eNB_UE_STATS
));
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
->
UE_sched_ctrl
[
UE_id
].
ta_update
=
31
;
...
...
@@ -4539,14 +4542,24 @@ uint16_t nb_rbs_allowed_slice(float rb_percentage, int total_rbs)
return
(
uint16_t
)
floor
(
rb_percentage
*
total_rbs
);
}
int
ue_
slice_membership
(
int
UE_id
,
int
slice_id
,
int
n_active_slices
)
int
ue_
dl_slice_membership
(
module_id_t
mod_id
,
int
UE_id
,
slice_id_t
slice_id
)
{
if
((
slice_id
<
0
)
||
(
slice_id
>
n_active_slices
))
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
);
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
;
}
if
((
UE_id
%
n_active_slices
)
==
slice_id
)
{
return
1
;
// this ue is a member of this slice
int
ue_ul_slice_membership
(
module_id_t
mod_id
,
int
UE_id
,
slice_id_t
slice_id
)
{
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
);
return
0
;
}
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
;
}
openair2/LAYER2/MAC/eNB_scheduler_ulsch.c
View file @
048c4d29
...
...
@@ -1214,7 +1214,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_
slice_membership
(
UE_id
,
slice_id
,
sli
->
n_ul
))
if
(
!
ue_
ul_slice_membership
(
module_idP
,
UE_id
,
slice_id
))
continue
;
// don't schedule if Msg4 is not received yet
...
...
openair2/LAYER2/MAC/mac.h
View file @
048c4d29
...
...
@@ -1104,6 +1104,9 @@ 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
];
}
UE_list_t
;
/*! \brief deleting control information*/
...
...
openair2/LAYER2/MAC/mac_proto.h
View file @
048c4d29
...
...
@@ -1262,7 +1262,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_slice_membership
(
int
UE_id
,
int
slice_id
,
int
n_active_slices
);
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
);
/* 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 @
048c4d29
...
...
@@ -102,7 +102,7 @@ store_dlsch_buffer(module_id_t Mod_id,
if
(
UE_list
->
active
[
UE_id
]
!=
TRUE
)
continue
;
if
(
!
ue_
slice_membership
(
UE_id
,
slice_id
,
RC
.
mac
[
Mod_id
]
->
slice_info
.
n_dl
))
if
(
!
ue_
dl_slice_membership
(
Mod_id
,
UE_id
,
slice_id
))
continue
;
UE_template
=
&
UE_list
->
UE_template
[
UE_PCCID
(
Mod_id
,
UE_id
)][
UE_id
];
...
...
@@ -192,7 +192,7 @@ assign_rbs_required(module_id_t Mod_id,
// clear rb allocations across all CC_id
for
(
UE_id
=
0
;
UE_id
<
MAX_MOBILES_PER_ENB
;
UE_id
++
)
{
if
(
UE_list
->
active
[
UE_id
]
!=
TRUE
)
continue
;
if
(
!
ue_
slice_membership
(
UE_id
,
slice_id
,
sli
->
n_dl
))
continue
;
if
(
!
ue_
dl_slice_membership
(
Mod_id
,
UE_id
,
slice_id
))
continue
;
pCCid
=
UE_PCCID
(
Mod_id
,
UE_id
);
//update CQI information across component carriers
...
...
@@ -478,7 +478,7 @@ void sort_UEs(module_id_t Mod_idP, slice_id_t slice_id, int frameP, sub_frame_t
if
(
UE_list
->
active
[
i
]
==
FALSE
)
continue
;
if
(
UE_RNTI
(
Mod_idP
,
i
)
==
NOT_A_RNTI
)
continue
;
if
(
UE_list
->
UE_sched_ctrl
[
i
].
ul_out_of_sync
==
1
)
continue
;
if
(
!
ue_
slice_membership
(
i
,
slice_id
,
RC
.
mac
[
Mod_idP
]
->
slice_info
.
n_dl
))
continue
;
if
(
!
ue_
dl_slice_membership
(
Mod_idP
,
i
,
slice_id
))
continue
;
list
[
list_size
]
=
i
;
list_size
++
;
...
...
@@ -582,7 +582,7 @@ void dlsch_scheduler_pre_processor_partitioning(module_id_t Mod_id,
if
(
UE_RNTI
(
Mod_id
,
UE_id
)
==
NOT_A_RNTI
)
continue
;
if
(
UE_list
->
UE_sched_ctrl
[
UE_id
].
ul_out_of_sync
==
1
)
continue
;
if
(
!
ue_
slice_membership
(
UE_id
,
slice_id
,
RC
.
mac
[
Mod_id
]
->
slice_info
.
n_dl
))
continue
;
if
(
!
ue_
dl_slice_membership
(
Mod_id
,
UE_id
,
slice_id
))
continue
;
ue_sched_ctl
=
&
UE_list
->
UE_sched_ctrl
[
UE_id
];
...
...
@@ -620,7 +620,6 @@ void dlsch_scheduler_pre_processor_accounting(module_id_t Mod_id,
uint8_t
ue_retx_flag
[
NFAPI_CC_MAX
][
MAX_MOBILES_PER_ENB
];
UE_list_t
*
UE_list
=
&
RC
.
mac
[
Mod_id
]
->
UE_list
;
slice_info_t
*
sli
=
&
RC
.
mac
[
Mod_id
]
->
slice_info
;
UE_sched_ctrl
*
ue_sched_ctl
;
COMMON_channels_t
*
cc
;
...
...
@@ -641,7 +640,7 @@ void dlsch_scheduler_pre_processor_accounting(module_id_t Mod_id,
rnti
=
UE_RNTI
(
Mod_id
,
UE_id
);
if
(
rnti
==
NOT_A_RNTI
)
continue
;
if
(
UE_list
->
UE_sched_ctrl
[
UE_id
].
ul_out_of_sync
==
1
)
continue
;
if
(
!
ue_
slice_membership
(
UE_id
,
slice_id
,
sli
->
n_dl
))
continue
;
if
(
!
ue_
dl_slice_membership
(
Mod_id
,
UE_id
,
slice_id
))
continue
;
for
(
i
=
0
;
i
<
UE_num_active_CC
(
UE_list
,
UE_id
);
++
i
)
{
CC_id
=
UE_list
->
ordered_CCids
[
i
][
UE_id
];
...
...
@@ -681,7 +680,7 @@ void dlsch_scheduler_pre_processor_accounting(module_id_t Mod_id,
rnti
=
UE_RNTI
(
Mod_id
,
UE_id
);
if
(
rnti
==
NOT_A_RNTI
)
continue
;
if
(
UE_list
->
UE_sched_ctrl
[
UE_id
].
ul_out_of_sync
==
1
)
continue
;
if
(
!
ue_
slice_membership
(
UE_id
,
slice_id
,
sli
->
n_dl
))
continue
;
if
(
!
ue_
dl_slice_membership
(
Mod_id
,
UE_id
,
slice_id
))
continue
;
for
(
i
=
0
;
i
<
UE_num_active_CC
(
UE_list
,
UE_id
);
i
++
)
{
CC_id
=
UE_list
->
ordered_CCids
[
i
][
UE_id
];
...
...
@@ -701,7 +700,7 @@ void dlsch_scheduler_pre_processor_accounting(module_id_t Mod_id,
if
(
rnti
==
NOT_A_RNTI
)
continue
;
if
(
UE_list
->
UE_sched_ctrl
[
UE_id
].
ul_out_of_sync
==
1
)
continue
;
if
(
!
ue_
slice_membership
(
UE_id
,
slice_id
,
sli
->
n_dl
))
continue
;
if
(
!
ue_
dl_slice_membership
(
Mod_id
,
UE_id
,
slice_id
))
continue
;
for
(
i
=
0
;
i
<
UE_num_active_CC
(
UE_list
,
UE_id
);
++
i
)
{
...
...
@@ -726,7 +725,7 @@ void dlsch_scheduler_pre_processor_accounting(module_id_t Mod_id,
rnti
=
UE_RNTI
(
Mod_id
,
UE_id
);
if
(
rnti
==
NOT_A_RNTI
)
continue
;
if
(
UE_list
->
UE_sched_ctrl
[
UE_id
].
ul_out_of_sync
==
1
)
continue
;
if
(
!
ue_
slice_membership
(
UE_id
,
slice_id
,
sli
->
n_dl
))
continue
;
if
(
!
ue_
dl_slice_membership
(
Mod_id
,
UE_id
,
slice_id
))
continue
;
for
(
i
=
0
;
i
<
UE_num_active_CC
(
UE_list
,
UE_id
);
i
++
)
{
CC_id
=
UE_list
->
ordered_CCids
[
i
][
UE_id
];
...
...
@@ -745,7 +744,7 @@ void dlsch_scheduler_pre_processor_accounting(module_id_t Mod_id,
rnti
=
UE_RNTI
(
Mod_id
,
UE_id
);
if
(
rnti
==
NOT_A_RNTI
)
continue
;
if
(
UE_list
->
UE_sched_ctrl
[
UE_id
].
ul_out_of_sync
==
1
)
continue
;
if
(
!
ue_
slice_membership
(
UE_id
,
slice_id
,
sli
->
n_dl
))
continue
;
if
(
!
ue_
dl_slice_membership
(
Mod_id
,
UE_id
,
slice_id
))
continue
;
for
(
i
=
0
;
i
<
UE_num_active_CC
(
UE_list
,
UE_id
);
i
++
)
{
CC_id
=
UE_list
->
ordered_CCids
[
i
][
UE_id
];
...
...
@@ -780,7 +779,6 @@ void dlsch_scheduler_pre_processor_positioning(module_id_t Mod_id,
int
N_RBG
[
NFAPI_CC_MAX
];
UE_list_t
*
UE_list
=
&
RC
.
mac
[
Mod_id
]
->
UE_list
;
slice_info_t
*
sli
=
&
RC
.
mac
[
Mod_id
]
->
slice_info
;
decode_slice_positioning
(
Mod_id
,
slice_id
,
slice_allocation_mask
);
...
...
@@ -794,7 +792,7 @@ void dlsch_scheduler_pre_processor_positioning(module_id_t Mod_id,
if
(
UE_RNTI
(
Mod_id
,
UE_id
)
==
NOT_A_RNTI
)
continue
;
if
(
UE_list
->
UE_sched_ctrl
[
UE_id
].
ul_out_of_sync
==
1
)
continue
;
if
(
!
ue_
slice_membership
(
UE_id
,
slice_id
,
sli
->
n_dl
))
continue
;
if
(
!
ue_
dl_slice_membership
(
Mod_id
,
UE_id
,
slice_id
))
continue
;
for
(
i
=
0
;
i
<
UE_num_active_CC
(
UE_list
,
UE_id
);
i
++
)
{
CC_id
=
UE_list
->
ordered_CCids
[
i
][
UE_id
];
...
...
@@ -1020,7 +1018,7 @@ void dlsch_scheduler_pre_processor_intraslice_sharing(module_id_t Mod_id,
if
(
UE_RNTI
(
Mod_id
,
UE_id
)
==
NOT_A_RNTI
)
continue
;
if
(
UE_list
->
UE_sched_ctrl
[
UE_id
].
ul_out_of_sync
==
1
)
continue
;
if
(
!
ue_
slice_membership
(
UE_id
,
slice_id
,
sli
->
n_dl
))
continue
;
if
(
!
ue_
dl_slice_membership
(
Mod_id
,
UE_id
,
slice_id
))
continue
;
for
(
i
=
0
;
i
<
UE_num_active_CC
(
UE_list
,
UE_id
);
i
++
)
{
CC_id
=
UE_list
->
ordered_CCids
[
i
][
UE_id
];
...
...
@@ -1405,7 +1403,6 @@ dlsch_scheduler_pre_processor_reset(module_id_t module_idP,
rnti_t
rnti
;
UE_list_t
*
UE_list
;
slice_info_t
*
sli
=
&
RC
.
mac
[
module_idP
]
->
slice_info
;
UE_sched_ctrl
*
ue_sched_ctl
;
uint8_t
*
vrb_map
;
COMMON_channels_t
*
cc
;
...
...
@@ -1435,7 +1432,7 @@ dlsch_scheduler_pre_processor_reset(module_id_t module_idP,
if
(
UE_list
->
active
[
UE_id
]
!=
TRUE
)
continue
;
if
(
!
ue_
slice_membership
(
UE_id
,
slice_id
,
sli
->
n_dl
))
if
(
!
ue_
dl_slice_membership
(
module_idP
,
UE_id
,
slice_id
))
continue
;
vrb_map
=
RC
.
mac
[
module_idP
]
->
common_channels
[
CC_id
].
vrb_map
;
...
...
@@ -1709,7 +1706,7 @@ void ulsch_scheduler_pre_processor(module_id_t module_idP,
// This is the actual CC_id in the list
CC_id
=
UE_list
->
ordered_ULCCids
[
n
][
i
];
UE_template
=
&
UE_list
->
UE_template
[
CC_id
][
i
];
if
(
!
ue_
slice_membership
(
i
,
slice_id
,
sli
->
n_ul
))
if
(
!
ue_
ul_slice_membership
(
module_idP
,
i
,
slice_id
))
continue
;
if
(
UE_template
->
pre_allocated_nb_rb_ul
[
slice_id
]
>
0
)
{
total_ue_count
[
CC_id
]
+=
1
;
...
...
@@ -1730,7 +1727,7 @@ void ulsch_scheduler_pre_processor(module_id_t module_idP,
if
(
UE_list
->
UE_sched_ctrl
[
i
].
ul_out_of_sync
==
1
)
continue
;
if
(
!
ue_
slice_membership
(
UE_id
,
slice_id
,
sli
->
n_ul
))
if
(
!
ue_
ul_slice_membership
(
module_idP
,
UE_id
,
slice_id
))
continue
;
LOG_D
(
MAC
,
"In ulsch_preprocessor: handling UE %d/%x
\n
"
,
UE_id
,
...
...
@@ -1787,7 +1784,7 @@ void ulsch_scheduler_pre_processor(module_id_t module_idP,
continue
;
if
(
UE_list
->
UE_sched_ctrl
[
i
].
ul_out_of_sync
==
1
)
continue
;
if
(
!
ue_
slice_membership
(
i
,
slice_id
,
sli
->
n_ul
))
if
(
!
ue_
ul_slice_membership
(
module_idP
,
i
,
slice_id
))
continue
;
...
...
@@ -1828,7 +1825,7 @@ void ulsch_scheduler_pre_processor(module_id_t module_idP,
continue
;
if
(
UE_list
->
UE_sched_ctrl
[
i
].
ul_out_of_sync
==
1
)
continue
;
if
(
!
ue_
slice_membership
(
i
,
slice_id
,
sli
->
n_ul
))
if
(
!
ue_
ul_slice_membership
(
module_idP
,
i
,
slice_id
))
continue
;
UE_id
=
i
;
...
...
@@ -1905,7 +1902,7 @@ assign_max_mcs_min_rb(module_id_t module_idP, int slice_id, int frameP,
continue
;
if
(
UE_list
->
UE_sched_ctrl
[
i
].
ul_out_of_sync
==
1
)
continue
;
if
(
!
ue_
slice_membership
(
i
,
slice_id
,
sli
->
n_ul
))
if
(
!
ue_
ul_slice_membership
(
module_idP
,
i
,
slice_id
))
continue
;
if
(
UE_list
->
UE_sched_ctrl
[
i
].
phr_received
==
1
)
{
...
...
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