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
lizhongxiao
OpenXG UE
Commits
60d91b1f
Commit
60d91b1f
authored
3 years ago
by
francescomani
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
aggregation level loops at gnb (currently selecting the lowest value)
parent
34bba049
Changes
3
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
47 additions
and
22 deletions
+47
-22
openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_RA.c
openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_RA.c
+18
-3
openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_phytest.c
openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_phytest.c
+20
-12
openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_primitives.c
openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_primitives.c
+9
-7
No files found.
openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_RA.c
View file @
60d91b1f
...
@@ -795,7 +795,12 @@ void nr_generate_Msg3_retransmission(module_id_t module_idP, int CC_id, frame_t
...
@@ -795,7 +795,12 @@ void nr_generate_Msg3_retransmission(module_id_t module_idP, int CC_id, frame_t
uint8_t
aggregation_level
;
uint8_t
aggregation_level
;
uint8_t
nr_of_candidates
;
uint8_t
nr_of_candidates
;
find_aggregation_candidates
(
&
aggregation_level
,
&
nr_of_candidates
,
ss
,
4
);
for
(
int
i
=
0
;
i
<
5
;
i
++
)
{
// for now taking the lowest value among the available aggregation levels
find_aggregation_candidates
(
&
aggregation_level
,
&
nr_of_candidates
,
ss
,
1
<<
i
);
if
(
nr_of_candidates
>
0
)
break
;
}
AssertFatal
(
nr_of_candidates
>
0
,
"nr_of_candidates is 0
\n
"
);
int
CCEIndex
=
allocate_nr_CCEs
(
nr_mac
,
NULL
,
coreset
,
aggregation_level
,
0
,
0
,
nr_of_candidates
);
int
CCEIndex
=
allocate_nr_CCEs
(
nr_mac
,
NULL
,
coreset
,
aggregation_level
,
0
,
0
,
nr_of_candidates
);
if
(
CCEIndex
<
0
)
{
if
(
CCEIndex
<
0
)
{
LOG_E
(
NR_MAC
,
"%s(): cannot find free CCE for RA RNTI %04x!
\n
"
,
__func__
,
ra
->
rnti
);
LOG_E
(
NR_MAC
,
"%s(): cannot find free CCE for RA RNTI %04x!
\n
"
,
__func__
,
ra
->
rnti
);
...
@@ -1170,7 +1175,12 @@ void nr_generate_Msg2(module_id_t module_idP, int CC_id, frame_t frameP, sub_fra
...
@@ -1170,7 +1175,12 @@ void nr_generate_Msg2(module_id_t module_idP, int CC_id, frame_t frameP, sub_fra
uint8_t
aggregation_level
;
uint8_t
aggregation_level
;
uint8_t
nr_of_candidates
;
uint8_t
nr_of_candidates
;
find_aggregation_candidates
(
&
aggregation_level
,
&
nr_of_candidates
,
ss
,
4
);
for
(
int
i
=
0
;
i
<
5
;
i
++
)
{
// for now taking the lowest value among the available aggregation levels
find_aggregation_candidates
(
&
aggregation_level
,
&
nr_of_candidates
,
ss
,
1
<<
i
);
if
(
nr_of_candidates
>
0
)
break
;
}
AssertFatal
(
nr_of_candidates
>
0
,
"nr_of_candidates is 0
\n
"
);
int
CCEIndex
=
allocate_nr_CCEs
(
nr_mac
,
bwp
,
coreset
,
aggregation_level
,
0
,
0
,
nr_of_candidates
);
int
CCEIndex
=
allocate_nr_CCEs
(
nr_mac
,
bwp
,
coreset
,
aggregation_level
,
0
,
0
,
nr_of_candidates
);
if
(
CCEIndex
<
0
)
{
if
(
CCEIndex
<
0
)
{
LOG_E
(
NR_MAC
,
"%s(): cannot find free CCE for RA RNTI %04x!
\n
"
,
__func__
,
ra
->
rnti
);
LOG_E
(
NR_MAC
,
"%s(): cannot find free CCE for RA RNTI %04x!
\n
"
,
__func__
,
ra
->
rnti
);
...
@@ -1442,7 +1452,12 @@ void nr_generate_Msg4(module_id_t module_idP, int CC_id, frame_t frameP, sub_fra
...
@@ -1442,7 +1452,12 @@ void nr_generate_Msg4(module_id_t module_idP, int CC_id, frame_t frameP, sub_fra
// get CCEindex, needed also for PUCCH and then later for PDCCH
// get CCEindex, needed also for PUCCH and then later for PDCCH
uint8_t
aggregation_level
;
uint8_t
aggregation_level
;
uint8_t
nr_of_candidates
;
uint8_t
nr_of_candidates
;
find_aggregation_candidates
(
&
aggregation_level
,
&
nr_of_candidates
,
ss
,
4
);
for
(
int
i
=
0
;
i
<
5
;
i
++
)
{
// for now taking the lowest value among the available aggregation levels
find_aggregation_candidates
(
&
aggregation_level
,
&
nr_of_candidates
,
ss
,
1
<<
i
);
if
(
nr_of_candidates
>
0
)
break
;
}
AssertFatal
(
nr_of_candidates
>
0
,
"nr_of_candidates is 0
\n
"
);
int
CCEIndex
=
allocate_nr_CCEs
(
nr_mac
,
bwp
,
coreset
,
aggregation_level
,
0
,
0
,
nr_of_candidates
);
int
CCEIndex
=
allocate_nr_CCEs
(
nr_mac
,
bwp
,
coreset
,
aggregation_level
,
0
,
0
,
nr_of_candidates
);
if
(
CCEIndex
<
0
)
{
if
(
CCEIndex
<
0
)
{
LOG_E
(
NR_MAC
,
"%s(): cannot find free CCE for RA RNTI %04x!
\n
"
,
__func__
,
ra
->
rnti
);
LOG_E
(
NR_MAC
,
"%s(): cannot find free CCE for RA RNTI %04x!
\n
"
,
__func__
,
ra
->
rnti
);
...
...
This diff is collapsed.
Click to expand it.
openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_phytest.c
View file @
60d91b1f
...
@@ -264,7 +264,6 @@ extern uint8_t getN_PRB_DMRS(NR_BWP_Downlink_t *bwp, int numDmrsCdmGrpsNoData);
...
@@ -264,7 +264,6 @@ extern uint8_t getN_PRB_DMRS(NR_BWP_Downlink_t *bwp, int numDmrsCdmGrpsNoData);
uint32_t
target_dl_mcs
=
9
;
uint32_t
target_dl_mcs
=
9
;
uint32_t
target_dl_Nl
=
1
;
uint32_t
target_dl_Nl
=
1
;
uint32_t
target_dl_bw
=
50
;
uint32_t
target_dl_bw
=
50
;
int
dl_maxL
=
4
;
uint64_t
dlsch_slot_bitmap
=
(
1
<<
1
);
uint64_t
dlsch_slot_bitmap
=
(
1
<<
1
);
/* schedules whole bandwidth for first user, all the time */
/* schedules whole bandwidth for first user, all the time */
void
nr_preprocessor_phytest
(
module_id_t
module_id
,
void
nr_preprocessor_phytest
(
module_id_t
module_id
,
...
@@ -325,12 +324,17 @@ void nr_preprocessor_phytest(module_id_t module_id,
...
@@ -325,12 +324,17 @@ void nr_preprocessor_phytest(module_id_t module_id,
sched_ctrl
->
num_total_bytes
+=
sched_ctrl
->
rlc_status
[
lcid
].
bytes_in_buffer
;
sched_ctrl
->
num_total_bytes
+=
sched_ctrl
->
rlc_status
[
lcid
].
bytes_in_buffer
;
sched_ctrl
->
lcid_to_schedule
=
lcid
;
sched_ctrl
->
lcid_to_schedule
=
lcid
;
sched_ctrl
->
maxL
=
dl_maxL
;
uint8_t
nr_of_candidates
;
uint8_t
nr_of_candidates
;
find_aggregation_candidates
(
&
sched_ctrl
->
aggregation_level
,
for
(
int
i
=
0
;
i
<
5
;
i
++
)
{
&
nr_of_candidates
,
// for now taking the lowest value among the available aggregation levels
sched_ctrl
->
search_space
,
find_aggregation_candidates
(
&
sched_ctrl
->
aggregation_level
,
sched_ctrl
->
maxL
);
&
nr_of_candidates
,
sched_ctrl
->
search_space
,
1
<<
i
);
if
(
nr_of_candidates
>
0
)
break
;
}
AssertFatal
(
nr_of_candidates
>
0
,
"nr_of_candidates is 0
\n
"
);
const
int
cid
=
sched_ctrl
->
coreset
->
controlResourceSetId
;
const
int
cid
=
sched_ctrl
->
coreset
->
controlResourceSetId
;
const
uint16_t
Y
=
UE_info
->
Y
[
UE_id
][
cid
][
slot
];
const
uint16_t
Y
=
UE_info
->
Y
[
UE_id
][
cid
][
slot
];
const
int
m
=
UE_info
->
num_pdcch_cand
[
UE_id
][
cid
];
const
int
m
=
UE_info
->
num_pdcch_cand
[
UE_id
][
cid
];
...
@@ -405,7 +409,6 @@ void nr_preprocessor_phytest(module_id_t module_id,
...
@@ -405,7 +409,6 @@ void nr_preprocessor_phytest(module_id_t module_id,
uint32_t
target_ul_mcs
=
9
;
uint32_t
target_ul_mcs
=
9
;
uint32_t
target_ul_bw
=
50
;
uint32_t
target_ul_bw
=
50
;
int
ul_maxL
=
4
;
uint64_t
ulsch_slot_bitmap
=
(
1
<<
8
);
uint64_t
ulsch_slot_bitmap
=
(
1
<<
8
);
bool
nr_ul_preprocessor_phytest
(
module_id_t
module_id
,
frame_t
frame
,
sub_frame_t
slot
)
bool
nr_ul_preprocessor_phytest
(
module_id_t
module_id
,
frame_t
frame
,
sub_frame_t
slot
)
{
{
...
@@ -488,11 +491,16 @@ bool nr_ul_preprocessor_phytest(module_id_t module_id, frame_t frame, sub_frame_
...
@@ -488,11 +491,16 @@ bool nr_ul_preprocessor_phytest(module_id_t module_id, frame_t frame, sub_frame_
sched_ctrl
->
sched_pusch
.
frame
=
sched_frame
;
sched_ctrl
->
sched_pusch
.
frame
=
sched_frame
;
uint8_t
nr_of_candidates
;
uint8_t
nr_of_candidates
;
sched_ctrl
->
maxL
=
ul_maxL
;
for
(
int
i
=
0
;
i
<
5
;
i
++
)
{
find_aggregation_candidates
(
&
sched_ctrl
->
aggregation_level
,
// for now taking the lowest value among the available aggregation levels
&
nr_of_candidates
,
find_aggregation_candidates
(
&
sched_ctrl
->
aggregation_level
,
sched_ctrl
->
search_space
,
&
nr_of_candidates
,
sched_ctrl
->
maxL
);
sched_ctrl
->
search_space
,
1
<<
i
);
if
(
nr_of_candidates
>
0
)
break
;
}
AssertFatal
(
nr_of_candidates
>
0
,
"nr_of_candidates is 0
\n
"
);
const
int
cid
=
sched_ctrl
->
coreset
->
controlResourceSetId
;
const
int
cid
=
sched_ctrl
->
coreset
->
controlResourceSetId
;
const
uint16_t
Y
=
UE_info
->
Y
[
UE_id
][
cid
][
slot
];
const
uint16_t
Y
=
UE_info
->
Y
[
UE_id
][
cid
][
slot
];
const
int
m
=
UE_info
->
num_pdcch_cand
[
UE_id
][
cid
];
const
int
m
=
UE_info
->
num_pdcch_cand
[
UE_id
][
cid
];
...
...
This diff is collapsed.
Click to expand it.
openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_primitives.c
View file @
60d91b1f
...
@@ -1937,9 +1937,6 @@ int add_new_nr_ue(module_id_t mod_idP, rnti_t rntiP, NR_CellGroupConfig_t *CellG
...
@@ -1937,9 +1937,6 @@ int add_new_nr_ue(module_id_t mod_idP, rnti_t rntiP, NR_CellGroupConfig_t *CellG
if
(
!
get_softmodem_params
()
->
phy_test
&&
!
get_softmodem_params
()
->
do_ra
&&
!
get_softmodem_params
()
->
sa
)
{
if
(
!
get_softmodem_params
()
->
phy_test
&&
!
get_softmodem_params
()
->
do_ra
&&
!
get_softmodem_params
()
->
sa
)
{
sched_ctrl
->
lcid_mask
=
1
<<
DL_SCH_LCID_DTCH
;
sched_ctrl
->
lcid_mask
=
1
<<
DL_SCH_LCID_DTCH
;
}
}
if
(
!
get_softmodem_params
()
->
phy_test
&&
!
get_softmodem_params
()
->
sa
)
{
sched_ctrl
->
maxL
=
4
;
}
sched_ctrl
->
ta_frame
=
0
;
sched_ctrl
->
ta_frame
=
0
;
sched_ctrl
->
ta_update
=
31
;
sched_ctrl
->
ta_update
=
31
;
sched_ctrl
->
ta_apply
=
false
;
sched_ctrl
->
ta_apply
=
false
;
...
@@ -2387,10 +2384,15 @@ bool find_free_CCE(module_id_t module_id,
...
@@ -2387,10 +2384,15 @@ bool find_free_CCE(module_id_t module_id,
int
UE_id
){
int
UE_id
){
NR_UE_sched_ctrl_t
*
sched_ctrl
=
&
RC
.
nrmac
[
module_id
]
->
UE_info
.
UE_sched_ctrl
[
UE_id
];
NR_UE_sched_ctrl_t
*
sched_ctrl
=
&
RC
.
nrmac
[
module_id
]
->
UE_info
.
UE_sched_ctrl
[
UE_id
];
uint8_t
nr_of_candidates
;
uint8_t
nr_of_candidates
;
find_aggregation_candidates
(
&
sched_ctrl
->
aggregation_level
,
for
(
int
i
=
0
;
i
<
5
;
i
++
)
{
&
nr_of_candidates
,
// for now taking the lowest value among the available aggregation levels
sched_ctrl
->
search_space
,
find_aggregation_candidates
(
&
sched_ctrl
->
aggregation_level
,
sched_ctrl
->
maxL
);
&
nr_of_candidates
,
sched_ctrl
->
search_space
,
1
<<
i
);
if
(
nr_of_candidates
>
0
)
break
;
}
AssertFatal
(
nr_of_candidates
>
0
,
"nr_of_candidates is 0
\n
"
);
const
int
cid
=
sched_ctrl
->
coreset
->
controlResourceSetId
;
const
int
cid
=
sched_ctrl
->
coreset
->
controlResourceSetId
;
const
uint16_t
Y
=
RC
.
nrmac
[
module_id
]
->
UE_info
.
Y
[
UE_id
][
cid
][
slot
];
const
uint16_t
Y
=
RC
.
nrmac
[
module_id
]
->
UE_info
.
Y
[
UE_id
][
cid
][
slot
];
const
int
m
=
RC
.
nrmac
[
module_id
]
->
UE_info
.
num_pdcch_cand
[
UE_id
][
cid
];
const
int
m
=
RC
.
nrmac
[
module_id
]
->
UE_info
.
num_pdcch_cand
[
UE_id
][
cid
];
...
...
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