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
spbro
OpenXG-RAN
Commits
a5fd5c3e
Commit
a5fd5c3e
authored
Feb 21, 2022
by
Robert Schmidt
Browse files
Options
Browse Files
Download
Plain Diff
Merge remote-tracking branch 'origin/multiple-ues-min-prbs-bug-fix' into integration_2022_wk08
parents
d5280c67
e890cee3
Changes
4
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
19 additions
and
10 deletions
+19
-10
openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_dlsch.c
openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_dlsch.c
+10
-5
openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_primitives.c
openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_primitives.c
+3
-2
openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_ulsch.c
openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_ulsch.c
+5
-3
openair2/LAYER2/NR_MAC_gNB/mac_proto.h
openair2/LAYER2/NR_MAC_gNB/mac_proto.h
+1
-0
No files found.
openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_dlsch.c
View file @
a5fd5c3e
...
@@ -609,6 +609,7 @@ bool allocate_dl_retransmission(module_id_t module_id,
...
@@ -609,6 +609,7 @@ bool allocate_dl_retransmission(module_id_t module_id,
temp_ps
.
nrOfSymbols
,
temp_ps
.
nrOfSymbols
,
temp_ps
.
N_PRB_DMRS
*
temp_ps
.
N_DMRS_SLOT
,
temp_ps
.
N_PRB_DMRS
*
temp_ps
.
N_DMRS_SLOT
,
retInfo
->
tb_size
,
retInfo
->
tb_size
,
1
,
/* minimum of 1RB: need to find exact TBS, don't preclude any number */
rbSize
,
rbSize
,
&
new_tbs
,
&
new_tbs
,
&
new_rbSize
);
&
new_rbSize
);
...
@@ -763,8 +764,9 @@ void pf_dl(module_id_t module_id,
...
@@ -763,8 +764,9 @@ void pf_dl(module_id_t module_id,
}
}
}
}
const
int
min_rbSize
=
5
;
/* Loop UE_sched to find max coeff and allocate transmission */
/* Loop UE_sched to find max coeff and allocate transmission */
while
(
max_num_ue
>
0
&&
n_rb_sched
>
0
&&
UE_sched
.
head
>=
0
)
{
while
(
max_num_ue
>
0
&&
n_rb_sched
>
=
min_rbSize
&&
UE_sched
.
head
>=
0
)
{
/* Find max coeff from UE_sched*/
/* Find max coeff from UE_sched*/
int
*
max
=
&
UE_sched
.
head
;
/* assume head is max */
int
*
max
=
&
UE_sched
.
head
;
/* assume head is max */
...
@@ -824,9 +826,6 @@ void pf_dl(module_id_t module_id,
...
@@ -824,9 +826,6 @@ void pf_dl(module_id_t module_id,
LOG_D
(
NR_MAC
,
"%4d.%2d could not find CCE for DL DCI UE %d/RNTI %04x
\n
"
,
frame
,
slot
,
UE_id
,
rnti
);
LOG_D
(
NR_MAC
,
"%4d.%2d could not find CCE for DL DCI UE %d/RNTI %04x
\n
"
,
frame
,
slot
,
UE_id
,
rnti
);
continue
;
continue
;
}
}
/* reduce max_num_ue once we are sure UE can be allocated, i.e., has CCE */
max_num_ue
--
;
if
(
max_num_ue
<
0
)
return
;
/* Find PUCCH occasion: if it fails, undo CCE allocation (undoing PUCCH
/* Find PUCCH occasion: if it fails, undo CCE allocation (undoing PUCCH
* allocation after CCE alloc fail would be more complex) */
* allocation after CCE alloc fail would be more complex) */
...
@@ -840,9 +839,14 @@ void pf_dl(module_id_t module_id,
...
@@ -840,9 +839,14 @@ void pf_dl(module_id_t module_id,
frame
,
frame
,
slot
);
slot
);
mac
->
pdcch_cand
[
cid
]
--
;
mac
->
pdcch_cand
[
cid
]
--
;
return
;
continue
;
}
}
/* reduce max_num_ue once we are sure UE can be allocated, i.e., has CCE
* and PUCCH */
max_num_ue
--
;
AssertFatal
(
max_num_ue
>=
0
,
"Illegal max_num_ue %d
\n
"
,
max_num_ue
);
sched_ctrl
->
cce_index
=
CCEIndex
;
sched_ctrl
->
cce_index
=
CCEIndex
;
fill_pdcch_vrb_map
(
mac
,
fill_pdcch_vrb_map
(
mac
,
...
@@ -885,6 +889,7 @@ void pf_dl(module_id_t module_id,
...
@@ -885,6 +889,7 @@ void pf_dl(module_id_t module_id,
ps
->
nrOfSymbols
,
ps
->
nrOfSymbols
,
ps
->
N_PRB_DMRS
*
ps
->
N_DMRS_SLOT
,
ps
->
N_PRB_DMRS
*
ps
->
N_DMRS_SLOT
,
sched_ctrl
->
num_total_bytes
+
oh
,
sched_ctrl
->
num_total_bytes
+
oh
,
min_rbSize
,
max_rbSize
,
max_rbSize
,
&
TBS
,
&
TBS
,
&
rbSize
);
&
rbSize
);
...
...
openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_primitives.c
View file @
a5fd5c3e
...
@@ -462,6 +462,7 @@ bool nr_find_nb_rb(uint16_t Qm,
...
@@ -462,6 +462,7 @@ bool nr_find_nb_rb(uint16_t Qm,
uint16_t
nb_symb_sch
,
uint16_t
nb_symb_sch
,
uint16_t
nb_dmrs_prb
,
uint16_t
nb_dmrs_prb
,
uint32_t
bytes
,
uint32_t
bytes
,
uint16_t
nb_rb_min
,
uint16_t
nb_rb_max
,
uint16_t
nb_rb_max
,
uint32_t
*
tbs
,
uint32_t
*
tbs
,
uint16_t
*
nb_rb
)
uint16_t
*
nb_rb
)
...
@@ -477,7 +478,7 @@ bool nr_find_nb_rb(uint16_t Qm,
...
@@ -477,7 +478,7 @@ bool nr_find_nb_rb(uint16_t Qm,
return
true
;
return
true
;
/* is the minimum enough? */
/* is the minimum enough? */
*
nb_rb
=
5
;
*
nb_rb
=
nb_rb_min
;
*
tbs
=
nr_compute_tbs
(
Qm
,
R
,
*
nb_rb
,
nb_symb_sch
,
nb_dmrs_prb
,
0
,
0
,
nrOfLayers
)
>>
3
;
*
tbs
=
nr_compute_tbs
(
Qm
,
R
,
*
nb_rb
,
nb_symb_sch
,
nb_dmrs_prb
,
0
,
0
,
nrOfLayers
)
>>
3
;
if
(
bytes
<=
*
tbs
)
if
(
bytes
<=
*
tbs
)
return
true
;
return
true
;
...
@@ -485,7 +486,7 @@ bool nr_find_nb_rb(uint16_t Qm,
...
@@ -485,7 +486,7 @@ bool nr_find_nb_rb(uint16_t Qm,
/* perform binary search to allocate all bytes within a TBS up to nb_rb_max
/* perform binary search to allocate all bytes within a TBS up to nb_rb_max
* RBs */
* RBs */
int
hi
=
nb_rb_max
;
int
hi
=
nb_rb_max
;
int
lo
=
1
;
int
lo
=
nb_rb_min
;
for
(
int
p
=
(
hi
+
lo
)
/
2
;
lo
+
1
<
hi
;
p
=
(
hi
+
lo
)
/
2
)
{
for
(
int
p
=
(
hi
+
lo
)
/
2
;
lo
+
1
<
hi
;
p
=
(
hi
+
lo
)
/
2
)
{
const
uint32_t
TBS
=
nr_compute_tbs
(
Qm
,
R
,
p
,
nb_symb_sch
,
nb_dmrs_prb
,
0
,
0
,
nrOfLayers
)
>>
3
;
const
uint32_t
TBS
=
nr_compute_tbs
(
Qm
,
R
,
p
,
nb_symb_sch
,
nb_dmrs_prb
,
0
,
0
,
nrOfLayers
)
>>
3
;
if
(
bytes
==
TBS
)
{
if
(
bytes
==
TBS
)
{
...
...
openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_ulsch.c
View file @
a5fd5c3e
...
@@ -1014,6 +1014,7 @@ bool allocate_ul_retransmission(module_id_t module_id,
...
@@ -1014,6 +1014,7 @@ bool allocate_ul_retransmission(module_id_t module_id,
temp_ps
.
nrOfSymbols
,
temp_ps
.
nrOfSymbols
,
temp_ps
.
N_PRB_DMRS
*
temp_ps
.
num_dmrs_symb
,
temp_ps
.
N_PRB_DMRS
*
temp_ps
.
num_dmrs_symb
,
retInfo
->
tb_size
,
retInfo
->
tb_size
,
1
,
/* minimum of 1RB: need to find exact TBS, don't preclude any number */
rbSize
,
rbSize
,
&
new_tbs
,
&
new_tbs
,
&
new_rbSize
);
&
new_rbSize
);
...
@@ -1266,8 +1267,9 @@ void pf_ul(module_id_t module_id,
...
@@ -1266,8 +1267,9 @@ void pf_ul(module_id_t module_id,
}
}
const
int
min_rbSize
=
5
;
/* Loop UE_sched to find max coeff and allocate transmission */
/* Loop UE_sched to find max coeff and allocate transmission */
while
(
UE_sched
.
head
>=
0
&&
max_num_ue
>
0
&&
n_rb_sched
>
0
)
{
while
(
UE_sched
.
head
>=
0
&&
max_num_ue
>
0
&&
n_rb_sched
>
=
min_rbSize
)
{
/* Find max coeff */
/* Find max coeff */
int
*
max
=
&
UE_sched
.
head
;
/* Find max coeff: assume head is max */
int
*
max
=
&
UE_sched
.
head
;
/* Find max coeff: assume head is max */
int
*
p
=
&
UE_sched
.
next
[
*
max
];
int
*
p
=
&
UE_sched
.
next
[
*
max
];
...
@@ -1313,8 +1315,7 @@ void pf_ul(module_id_t module_id,
...
@@ -1313,8 +1315,7 @@ void pf_ul(module_id_t module_id,
/* reduce max_num_ue once we are sure UE can be allocated, i.e., has CCE */
/* reduce max_num_ue once we are sure UE can be allocated, i.e., has CCE */
max_num_ue
--
;
max_num_ue
--
;
if
(
max_num_ue
<
0
)
AssertFatal
(
max_num_ue
>=
0
,
"Illegal max_num_ue %d
\n
"
,
max_num_ue
);
return
;
NR_CellGroupConfig_t
*
cg
=
UE_info
->
CellGroup
[
UE_id
];
NR_CellGroupConfig_t
*
cg
=
UE_info
->
CellGroup
[
UE_id
];
NR_BWP_UplinkDedicated_t
*
ubwpd
=
cg
?
cg
->
spCellConfig
->
spCellConfigDedicated
->
uplinkConfig
->
initialUplinkBWP
:
NULL
;
NR_BWP_UplinkDedicated_t
*
ubwpd
=
cg
?
cg
->
spCellConfig
->
spCellConfigDedicated
->
uplinkConfig
->
initialUplinkBWP
:
NULL
;
...
@@ -1360,6 +1361,7 @@ void pf_ul(module_id_t module_id,
...
@@ -1360,6 +1361,7 @@ void pf_ul(module_id_t module_id,
ps
->
nrOfSymbols
,
ps
->
nrOfSymbols
,
ps
->
N_PRB_DMRS
*
ps
->
num_dmrs_symb
,
ps
->
N_PRB_DMRS
*
ps
->
num_dmrs_symb
,
B
,
B
,
min_rbSize
,
max_rbSize
,
max_rbSize
,
&
TBS
,
&
TBS
,
&
rbSize
);
&
rbSize
);
...
...
openair2/LAYER2/NR_MAC_gNB/mac_proto.h
View file @
a5fd5c3e
...
@@ -473,6 +473,7 @@ bool nr_find_nb_rb(uint16_t Qm,
...
@@ -473,6 +473,7 @@ bool nr_find_nb_rb(uint16_t Qm,
uint16_t
nb_symb_sch
,
uint16_t
nb_symb_sch
,
uint16_t
nb_dmrs_prb
,
uint16_t
nb_dmrs_prb
,
uint32_t
bytes
,
uint32_t
bytes
,
uint16_t
nb_rb_min
,
uint16_t
nb_rb_max
,
uint16_t
nb_rb_max
,
uint32_t
*
tbs
,
uint32_t
*
tbs
,
uint16_t
*
nb_rb
);
uint16_t
*
nb_rb
);
...
...
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