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
Michael Black
OpenXG-RAN
Commits
9c010e30
Commit
9c010e30
authored
Jul 17, 2021
by
luis_pereira87
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Apply patch for gNB ulsch retransmission scheduler
parent
cbbce10f
Changes
1
Show whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
15 additions
and
14 deletions
+15
-14
openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_ulsch.c
openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_ulsch.c
+15
-14
No files found.
openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_ulsch.c
View file @
9c010e30
...
...
@@ -144,7 +144,7 @@ void calculate_preferred_ul_tda(module_id_t module_id, const NR_BWP_Uplink_t *ub
if
((symb_pucch
&
symb_tda_mi)
==
0
&&
(symb_ulMixed
&
symb_tda_mi)
==
symb_tda_mi)
{
tdaMi
=
1
;
}
else
{
LOG_E(MAC,
LOG_E(
NR_
MAC,
"TDA
index
1
UL
overlaps
with
PUCCH
or
is
not
entirely
in
mixed
slot
(symb_pucch
%x
symb_ulMixed
%x
symb_tda_mi
%x),
won't
schedule
UL
mixed
slot\n",
symb_pucch,
symb_ulMixed,
...
...
@@ -168,7 +168,7 @@ void calculate_preferred_ul_tda(module_id_t module_id, const NR_BWP_Uplink_t *ub
}
if
(k2
<
tdd->nrofUplinkSlots)
LOG_W(MAC,
LOG_W(
NR_
MAC,
"k2
%d
<
tdd->nrofUplinkSlots
%ld:
not
all
UL
slots
can
be
scheduled\n",
k2,
tdd->nrofUplinkSlots)
;
...
...
@@ -331,7 +331,7 @@ void nr_process_mac_pdu(module_id_t module_idP,
sched_ctrl->ph
=
PH
-
32
+
(PH
-
54)
;
/* 38.133 Table10.1.18.1-1 */
sched_ctrl->pcmax
=
PCMAX
-
29
;
LOG_D(MAC,
"SINGLE
ENTRY
PHR
R1
%d
PH
%d
(%d
dB)
R2
%d
PCMAX
%d
(%d
dBm)\n",
LOG_D(
NR_
MAC,
"SINGLE
ENTRY
PHR
R1
%d
PH
%d
(%d
dB)
R2
%d
PCMAX
%d
(%d
dBm)\n",
phr->R1,
PH,
sched_ctrl->ph,
phr->R2,
PCMAX,
sched_ctrl->pcmax)
;
break
;
...
...
@@ -817,7 +817,7 @@ bool nr_UE_is_to_be_scheduled(module_id_t mod_id, int CC_id, int UE_id, frame_t
* (3) or we did not schedule it in more than 10 frames */
const
bool
has_data
=
sched_ctrl->estimated_ul_buffer
>
sched_ctrl->sched_ul_bytes
;
const
bool
high_inactivity
=
diff
>=
nrmac->ulsch_max_slots_inactivity
;
LOG_D(MAC,
LOG_D(
NR_
MAC,
"%4d.%2d
UL
inactivity
%d
slots
has_data
%d
SR
%d\n",
frame,
slot,
...
...
@@ -854,12 +854,13 @@ bool allocate_ul_retransmission(module_id_t module_id,
const
uint8_t
num_dmrs_cdm_grps_no_data
=
sched_ctrl->active_bwp
?
1
:
2
;
const
int
tda
=
sched_ctrl->active_ubwp
?
RC.nrmac[module_id]->preferred_ul_tda[sched_ctrl->active_ubwp->bwp_Id][slot]
:
0
;
LOG_D(NR_MAC,"retInfo->time_domain_allocation
=
%d,
tda
=
%d\n",
retInfo->time_domain_allocation,
tda)
;
if
(tda
==
retInfo->time_domain_allocation)
{
/* Check the resource is enough for retransmission */
while
(rbStart
<
bwpSize
&&
!rballoc_mask[rbStart])
rbStart++
;
if
(rbStart
+
retInfo->rbSize
>
=
bwpSize)
{
LOG_
D(MAC,
"cannot
allocate
retransmission
of
UE
%d/RNTI
%04x:
no
resources\n",
UE_id,
UE_info->rnti[UE_id]
)
;
if
(rbStart
+
retInfo->rbSize
>
bwpSize)
{
LOG_
W(NR_MAC,
"cannot
allocate
retransmission
of
UE
%d/RNTI
%04x:
no
resources
(rbStart
%d,
retInfo->rbSize
%d,
bwpSize
%d\n",
UE_id,
UE_info->rnti[UE_id],
rbStart,
retInfo->rbSize,
bwpSize
)
;
return
false
;
}
/* check whether we need to switch the TDA allocation since tha last
...
...
@@ -871,7 +872,7 @@ bool allocate_ul_retransmission(module_id_t module_id,
||
ps->dci_format
!=
dci_format
||
ps->num_dmrs_cdm_grps_no_data
!=
num_dmrs_cdm_grps_no_data)
nr_set_pusch_semi_static(scc,
sched_ctrl->active_ubwp,
dci_format,
tda,
num_dmrs_cdm_grps_no_data,
ps)
;
LOG_D(MAC,
"%s():
retransmission
keeping
TDA
%d
and
TBS
%d\n",
__func__,
tda,
retInfo->tb_size)
;
LOG_D(
NR_
MAC,
"%s():
retransmission
keeping
TDA
%d
and
TBS
%d\n",
__func__,
tda,
retInfo->tb_size)
;
}
else
{
/* the retransmission will use a different time domain allocation, check
* that we have enough resources */
...
...
@@ -895,10 +896,10 @@ bool allocate_ul_retransmission(module_id_t module_id,
&new_tbs,
&new_rbSize)
;
if
(!success
||
new_tbs
!=
retInfo->tb_size)
{
LOG_D(MAC,
"%s():
new
TBsize
%d
of
new
TDA
does
not
match
old
TBS
%d\n",
__func__,
new_tbs,
retInfo->tb_size)
;
LOG_D(
NR_
MAC,
"%s():
new
TBsize
%d
of
new
TDA
does
not
match
old
TBS
%d\n",
__func__,
new_tbs,
retInfo->tb_size)
;
return
false
;
/* the maximum TBsize we might have is smaller than what we need */
}
LOG_D(MAC,
"%s():
retransmission
with
TDA
%d->%d
and
TBS
%d
->
%d\n",
__func__,
retInfo->time_domain_allocation,
tda,
retInfo->tb_size,
new_tbs)
;
LOG_D(
NR_
MAC,
"%s():
retransmission
with
TDA
%d->%d
and
TBS
%d
->
%d\n",
__func__,
retInfo->time_domain_allocation,
tda,
retInfo->tb_size,
new_tbs)
;
/* we can allocate it. Overwrite the time_domain_allocation, the number
* of RBs, and the new TB size. The rest is done below */
retInfo->tb_size
=
new_tbs
;
...
...
@@ -910,7 +911,7 @@ bool allocate_ul_retransmission(module_id_t module_id,
/* Find free CCE */
bool
freeCCE
=
find_free_CCE(module_id,
slot,
UE_id)
;
if
(!freeCCE)
{
LOG_D(MAC,
"%4d.%2d
no
free
CCE
for
retransmission
UL
DCI
UE
%04x\n",
frame,
slot,
UE_info->rnti[UE_id])
;
LOG_D(
NR_
MAC,
"%4d.%2d
no
free
CCE
for
retransmission
UL
DCI
UE
%04x\n",
frame,
slot,
UE_info->rnti[UE_id])
;
return
false
;
}
...
...
@@ -923,7 +924,7 @@ bool allocate_ul_retransmission(module_id_t module_id,
sched_ctrl->sched_pusch
=
*retInfo
;
NR_sched_pusch_t
*sched_pusch
=
&sched_ctrl->sched_pusch
;
LOG_D(MAC,
LOG_D(
NR_
MAC,
"%4d.%2d
Allocate
UL
retransmission
UE
%d/RNTI
%04x
sched
%4d.%2d
(%d
RBs)\n",
frame,
slot,
...
...
@@ -999,7 +1000,7 @@ void pf_ul(module_id_t module_id,
bool
r
=
allocate_ul_retransmission(
module_id,
frame,
slot,
rballoc_mask,
&n_rb_sched,
UE_id,
sched_pusch->ul_harq_pid)
;
if
(!r)
{
LOG_D(MAC,
"%4d.%2d
UL
retransmission
UE
RNTI
%04x
can
NOT
be
allocated\n",
frame,
slot,
UE_info->rnti[UE_id])
;
LOG_D(
NR_
MAC,
"%4d.%2d
UL
retransmission
UE
RNTI
%04x
can
NOT
be
allocated\n",
frame,
slot,
UE_info->rnti[UE_id])
;
continue
;
}
/* reduce max_num_ue once we are sure UE can be allocated, i.e., has CCE */
...
...
@@ -1030,7 +1031,7 @@ void pf_ul(module_id_t module_id,
if
(max_num_ue
<
0)
return
;
LOG_D(NR_MAC,"Looking
for
min_rb
%d
RBs,
starting
at
%d\n",
min_rb,rbStart)
;
LOG_D(NR_MAC,"Looking
for
min_rb
%d
RBs,
starting
at
%d\n",
min_rb,
rbStart)
;
while
(rbStart
<
bwpSize
&&
!rballoc_mask[rbStart])
rbStart++
;
if
(rbStart
+
min_rb
>=
bwpSize)
{
LOG_W(NR_MAC,
"cannot
allocate
continuous
UL
data
for
UE
%d/RNTI
%04x:
no
resources
(rbStart
%d,
min_rb
%d,
bwpSize
%d\n",
...
...
@@ -1162,7 +1163,7 @@ void pf_ul(module_id_t module_id,
&rbSize)
;
sched_pusch->rbSize
=
rbSize
;
sched_pusch->tb_size
=
TBS
;
LOG_D(MAC,"rbSize
%d,
TBS
%d,
est
buf
%d,
sched_ul
%d,
B
%d\n",
LOG_D(
NR_
MAC,"rbSize
%d,
TBS
%d,
est
buf
%d,
sched_ul
%d,
B
%d\n",
rbSize,
sched_pusch->tb_size,
sched_ctrl->estimated_ul_buffer,
sched_ctrl->sched_ul_bytes,
B)
;
/* Mark the corresponding RBs as used */
...
...
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