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
ZhouShuya
OpenXG-RAN
Commits
87b261bb
Commit
87b261bb
authored
Feb 23, 2021
by
Robert Schmidt
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
PUSCH: align semi-static conf. naming with PDSCH
parent
6e2b7e4c
Changes
6
Hide whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
31 additions
and
41 deletions
+31
-41
doc/SW_archi.md
doc/SW_archi.md
+1
-1
openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_phytest.c
openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_phytest.c
+2
-8
openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_primitives.c
openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_primitives.c
+7
-7
openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_ulsch.c
openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_ulsch.c
+7
-8
openair2/LAYER2/NR_MAC_gNB/mac_proto.h
openair2/LAYER2/NR_MAC_gNB/mac_proto.h
+6
-6
openair2/LAYER2/NR_MAC_gNB/nr_mac_gNB.h
openair2/LAYER2/NR_MAC_gNB/nr_mac_gNB.h
+8
-11
No files found.
doc/SW_archi.md
View file @
87b261bb
...
...
@@ -188,7 +188,7 @@ nr_ul_preprocessor_phytest()], multiple users in FR1
Currently, this is done using pf_ul() which implements a basic
proportional fair scheduler:
*
for every UE, check for retransmission and allocate as necessary
*
Calculate DMRS stuff (nr_s
ave_pusch_fields
())
*
Calculate DMRS stuff (nr_s
et_pusch_semi_static
())
*
Calculate the PF coefficient and put eligible UEs into a list
*
Allocate resources to the UE(s) with the highest coefficient
4) Mark used resources in vrb_map_UL.
...
...
openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_phytest.c
View file @
87b261bb
...
...
@@ -466,23 +466,17 @@ bool nr_ul_preprocessor_phytest(module_id_t module_id,
}
UE_info
->
num_pdcch_cand
[
UE_id
][
cid
]
++
;
sched_ctrl
->
sched_pusch
.
time_domain_allocation
=
tda
;
const
long
f
=
sched_ctrl
->
search_space
->
searchSpaceType
->
choice
.
ue_Specific
->
dci_Formats
;
const
int
dci_format
=
f
?
NR_UL_DCI_FORMAT_0_1
:
NR_UL_DCI_FORMAT_0_0
;
const
uint8_t
num_dmrs_cdm_grps_no_data
=
1
;
/* we want to avoid a lengthy deduction of DMRS and other parameters in
* every TTI if we can save it, so check whether dci_format, TDA, or
* num_dmrs_cdm_grps_no_data has changed and only then recompute */
NR_
sched_pusch_save_t
*
ps
=
&
sched_ctrl
->
pusch_save
;
NR_
pusch_semi_static_t
*
ps
=
&
sched_ctrl
->
pusch_semi_static
;
if
(
ps
->
time_domain_allocation
!=
tda
||
ps
->
dci_format
!=
dci_format
||
ps
->
num_dmrs_cdm_grps_no_data
!=
num_dmrs_cdm_grps_no_data
)
nr_save_pusch_fields
(
scc
,
sched_ctrl
->
active_ubwp
,
dci_format
,
tda
,
num_dmrs_cdm_grps_no_data
,
ps
);
nr_set_pusch_semi_static
(
scc
,
sched_ctrl
->
active_ubwp
,
dci_format
,
tda
,
num_dmrs_cdm_grps_no_data
,
ps
);
const
int
mcs
=
target_ul_mcs
;
NR_sched_pusch_t
*
sched_pusch
=
&
sched_ctrl
->
sched_pusch
;
...
...
openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_primitives.c
View file @
87b261bb
...
...
@@ -252,12 +252,12 @@ void nr_set_pdsch_semi_static(const NR_ServingCellConfigCommon_t *scc,
fill_dmrs_mask
(
bwp
->
bwp_Dedicated
->
pdsch_Config
->
choice
.
setup
,
scc
->
dmrs_TypeA_Position
,
ps
->
nrOfSymbols
);
}
void
nr_s
ave_pusch_fields
(
const
NR_ServingCellConfigCommon_t
*
scc
,
const
NR_BWP_Uplink_t
*
ubwp
,
long
dci_format
,
int
tda
,
uint8_t
num_dmrs_cdm_grps_no_data
,
NR_sched_pusch_save
_t
*
ps
)
void
nr_s
et_pusch_semi_static
(
const
NR_ServingCellConfigCommon_t
*
scc
,
const
NR_BWP_Uplink_t
*
ubwp
,
long
dci_format
,
int
tda
,
uint8_t
num_dmrs_cdm_grps_no_data
,
NR_pusch_semi_static
_t
*
ps
)
{
ps
->
dci_format
=
dci_format
;
ps
->
time_domain_allocation
=
tda
;
...
...
@@ -1686,7 +1686,7 @@ int add_new_nr_ue(module_id_t mod_idP, rnti_t rntiP, NR_CellGroupConfig_t *secon
sched_ctrl
->
ta_apply
=
false
;
/* set illegal time domain allocation to force recomputation of all fields */
sched_ctrl
->
pdsch_semi_static
.
time_domain_allocation
=
-
1
;
sched_ctrl
->
pusch_s
ave
.
time_domain_allocation
=
-
1
;
sched_ctrl
->
pusch_s
emi_static
.
time_domain_allocation
=
-
1
;
const
NR_ServingCellConfig_t
*
servingCellConfig
=
secondaryCellGroup
->
spCellConfig
->
spCellConfigDedicated
;
/* Set default BWPs */
...
...
openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_ulsch.c
View file @
87b261bb
...
...
@@ -642,15 +642,14 @@ void pf_ul(module_id_t module_id,
/* we want to avoid a lengthy deduction of DMRS and other parameters in
* every TTI if we can save it, so check whether dci_format, TDA, or
* num_dmrs_cdm_grps_no_data has changed and only then recompute */
sched_ctrl
->
sched_pusch
.
time_domain_allocation
=
tda
;
const
long
f
=
sched_ctrl
->
search_space
->
searchSpaceType
->
choice
.
ue_Specific
->
dci_Formats
;
const
int
dci_format
=
f
?
NR_UL_DCI_FORMAT_0_1
:
NR_UL_DCI_FORMAT_0_0
;
const
uint8_t
num_dmrs_cdm_grps_no_data
=
1
;
NR_
sched_pusch_save_t
*
ps
=
&
sched_ctrl
->
pusch_save
;
NR_
pusch_semi_static_t
*
ps
=
&
sched_ctrl
->
pusch_semi_static
;
if
(
ps
->
time_domain_allocation
!=
tda
||
ps
->
dci_format
!=
dci_format
||
ps
->
num_dmrs_cdm_grps_no_data
!=
num_dmrs_cdm_grps_no_data
)
nr_s
ave_pusch_fields
(
scc
,
sched_ctrl
->
active_ubwp
,
dci_format
,
tda
,
num_dmrs_cdm_grps_no_data
,
ps
);
nr_s
et_pusch_semi_static
(
scc
,
sched_ctrl
->
active_ubwp
,
dci_format
,
tda
,
num_dmrs_cdm_grps_no_data
,
ps
);
/* Check if retransmission is necessary */
sched_ctrl
->
sched_pusch
.
ul_harq_pid
=
sched_ctrl
->
retrans_ul_harq
.
head
;
...
...
@@ -776,7 +775,7 @@ void pf_ul(module_id_t module_id,
int
rbStart
=
NRRIV2PRBOFFSET
(
sched_ctrl
->
active_bwp
->
bwp_Common
->
genericParameters
.
locationAndBandwidth
,
MAX_BWP_SIZE
);
const
uint16_t
bwpSize
=
NRRIV2BW
(
sched_ctrl
->
active_ubwp
->
bwp_Common
->
genericParameters
.
locationAndBandwidth
,
MAX_BWP_SIZE
);
NR_sched_pusch_t
*
sched_pusch
=
&
sched_ctrl
->
sched_pusch
;
NR_pusch_semi_static_t
*
ps
=
&
sched_ctrl
->
pusch_semi_static
;
while
(
rbStart
<
bwpSize
&&
!
rballoc_mask
[
rbStart
])
rbStart
++
;
sched_pusch
->
rbStart
=
rbStart
;
...
...
@@ -795,8 +794,8 @@ void pf_ul(module_id_t module_id,
sched_pusch
->
tb_size
=
nr_compute_tbs
(
sched_pusch
->
Qm
,
sched_pusch
->
R
,
sched_pusch
->
rbSize
,
sched_ctrl
->
pusch_save
.
nrOfSymbols
,
sched_ctrl
->
pusch_save
.
N_PRB_DMRS
*
sched_ctrl
->
pusch_save
.
num_dmrs_symb
,
ps
->
nrOfSymbols
,
ps
->
N_PRB_DMRS
*
ps
->
num_dmrs_symb
,
0
,
// nb_rb_oh
0
,
1
/* NrOfLayers */
)
...
...
@@ -961,8 +960,8 @@ void nr_schedule_ulsch(module_id_t module_id,
/* pre-computed PUSCH values that only change if time domain allocation,
* DCI format, or DMRS parameters change. Updated in the preprocessor
* through nr_s
ave_pusch_fields
() */
NR_
sched_pusch_save_t
*
ps
=
&
sched_ctrl
->
pusch_save
;
* through nr_s
et_pusch_semi_static
() */
NR_
pusch_semi_static_t
*
ps
=
&
sched_ctrl
->
pusch_semi_static
;
/* Statistics */
UE_info
->
mac_stats
[
UE_id
].
ulsch_rounds
[
cur_harq
->
round
]
++
;
...
...
openair2/LAYER2/NR_MAC_gNB/mac_proto.h
View file @
87b261bb
...
...
@@ -269,12 +269,12 @@ void nr_set_pdsch_semi_static(const NR_ServingCellConfigCommon_t *scc,
uint8_t
num_dmrs_cdm_grps_no_data
,
NR_pdsch_semi_static_t
*
ps
);
void
nr_s
ave_pusch_fields
(
const
NR_ServingCellConfigCommon_t
*
scc
,
const
NR_BWP_Uplink_t
*
ubwp
,
long
dci_format
,
int
tda
,
uint8_t
num_dmrs_cdm_grps_no_data
,
NR_sched_pusch_save
_t
*
ps
);
void
nr_s
et_pusch_semi_static
(
const
NR_ServingCellConfigCommon_t
*
scc
,
const
NR_BWP_Uplink_t
*
ubwp
,
long
dci_format
,
int
tda
,
uint8_t
num_dmrs_cdm_grps_no_data
,
NR_pusch_semi_static
_t
*
ps
);
uint8_t
nr_get_tpc
(
int
target
,
uint8_t
cqi
,
int
incr
);
...
...
openair2/LAYER2/NR_MAC_gNB/nr_mac_gNB.h
View file @
87b261bb
...
...
@@ -305,11 +305,11 @@ typedef struct NR_sched_pucch {
uint8_t
resource_indicator
;
}
NR_sched_pucch_t
;
/*
this struct is a helper: as long as the TDA and DCI format remain the same
*
over the same uBWP and search space, there is no need to recalculate all
*
S/L, MCS table, or DMRS-related parameters over and over again. Hence, we
* store them in this struct for easy reference. */
typedef
struct
NR_
sched_pusch_save
{
/*
PUSCH semi-static configuration: as long as the TDA and DCI format remain
*
the same over the same uBWP and search space, there is no need to
*
recalculate all S/L, MCS table, or DMRS-related parameters over and over
*
again. Hence, we
store them in this struct for easy reference. */
typedef
struct
NR_
pusch_semi_static_t
{
int
dci_format
;
int
time_domain_allocation
;
uint8_t
num_dmrs_cdm_grps_no_data
;
...
...
@@ -327,7 +327,7 @@ typedef struct NR_sched_pusch_save {
uint16_t
ul_dmrs_symb_pos
;
uint8_t
num_dmrs_symb
;
uint8_t
N_PRB_DMRS
;
}
NR_
sched_pusch_save
_t
;
}
NR_
pusch_semi_static
_t
;
typedef
struct
NR_sched_pusch
{
int
frame
;
...
...
@@ -337,9 +337,6 @@ typedef struct NR_sched_pusch {
uint16_t
rbSize
;
uint16_t
rbStart
;
// time-domain allocation for scheduled RBs
int
time_domain_allocation
;
/// MCS
uint8_t
mcs
;
...
...
@@ -521,8 +518,8 @@ typedef struct {
/// nr_acknack_scheduling()!
NR_sched_pucch_t
sched_pucch
[
3
];
/// PUSCH s
ave: PUSCH "configuration" that
is not cleared across TTIs
NR_
sched_pusch_save_t
pusch_save
;
/// PUSCH s
emi-static configuration:
is not cleared across TTIs
NR_
pusch_semi_static_t
pusch_semi_static
;
/// Sched PDSCH: scheduling decisions, copied into HARQ and cleared every TTI
NR_sched_pusch_t
sched_pusch
;
...
...
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