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
1
Merge Requests
1
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Operations
Operations
Metrics
Environments
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
OpenXG
OpenXG-RAN
Commits
6a7ec349
Commit
6a7ec349
authored
Dec 23, 2025
by
Robert Schmidt
Browse files
Options
Browse Files
Download
Plain Diff
Merge remote-tracking branch 'origin/autumatic_sib1_tda' into integration_2025_w52 (!3641)
automatic selection of SIB1 TDA
parents
668ff6a4
d7cc1c2c
Changes
34
Hide whitespace changes
Inline
Side-by-side
Showing
34 changed files
with
126 additions
and
121 deletions
+126
-121
ci-scripts/conf_files/gnb-vnf.sa.band66.u0.25prb.nfapi.conf
ci-scripts/conf_files/gnb-vnf.sa.band66.u0.25prb.nfapi.conf
+0
-2
ci-scripts/conf_files/gnb.sa.band261.u3.32prb.rfsim.conf
ci-scripts/conf_files/gnb.sa.band261.u3.32prb.rfsim.conf
+0
-2
ci-scripts/conf_files/gnb.sa.band78.24prb.rfsim.conf
ci-scripts/conf_files/gnb.sa.band78.24prb.rfsim.conf
+0
-2
ci-scripts/conf_files/gnb.sa.band78.273prb.fhi72.4x4-benetel550.conf
...conf_files/gnb.sa.band78.273prb.fhi72.4x4-benetel550.conf
+0
-1
doc/MAC/mac-usage.md
doc/MAC/mac-usage.md
+0
-2
doc/RUNMODEM.md
doc/RUNMODEM.md
+0
-1
openair2/GNB_APP/gnb_config.c
openair2/GNB_APP/gnb_config.c
+0
-3
openair2/GNB_APP/gnb_paramdef.h
openair2/GNB_APP/gnb_paramdef.h
+23
-27
openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_bch.c
openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_bch.c
+100
-56
openair2/LAYER2/NR_MAC_gNB/main.c
openair2/LAYER2/NR_MAC_gNB/main.c
+2
-1
openair2/LAYER2/NR_MAC_gNB/nr_mac_gNB.h
openair2/LAYER2/NR_MAC_gNB/nr_mac_gNB.h
+1
-1
targets/PROJECTS/GENERIC-NR-5GC/CONF/gnb-du.sa.band66.25prb.rfsim.pci0.conf
...ENERIC-NR-5GC/CONF/gnb-du.sa.band66.25prb.rfsim.pci0.conf
+0
-1
targets/PROJECTS/GENERIC-NR-5GC/CONF/gnb-du.sa.band66.25prb.rfsim.pci1.conf
...ENERIC-NR-5GC/CONF/gnb-du.sa.band66.25prb.rfsim.pci1.conf
+0
-1
targets/PROJECTS/GENERIC-NR-5GC/CONF/gnb-du.sa.band77.273prb.fhi72.4x4-benetel650.conf
...GC/CONF/gnb-du.sa.band77.273prb.fhi72.4x4-benetel650.conf
+0
-1
targets/PROJECTS/GENERIC-NR-5GC/CONF/gnb-du.sa.band77.273prb.fhi72.8x8-benetel650_650-mplane.conf
...-du.sa.band77.273prb.fhi72.8x8-benetel650_650-mplane.conf
+0
-1
targets/PROJECTS/GENERIC-NR-5GC/CONF/gnb-du.sa.band77.273prb.fhi72.8x8-benetel650_650.conf
...ONF/gnb-du.sa.band77.273prb.fhi72.8x8-benetel650_650.conf
+0
-1
targets/PROJECTS/GENERIC-NR-5GC/CONF/gnb-vnf.sa.band78.106prb.nfapi.conf
...S/GENERIC-NR-5GC/CONF/gnb-vnf.sa.band78.106prb.nfapi.conf
+0
-1
targets/PROJECTS/GENERIC-NR-5GC/CONF/gnb.sa.band254.ntn.mu1.24prb.rfsim.conf
...NERIC-NR-5GC/CONF/gnb.sa.band254.ntn.mu1.24prb.rfsim.conf
+0
-1
targets/PROJECTS/GENERIC-NR-5GC/CONF/gnb.sa.band255.ntn.mu0.25prb.rfsim.conf
...NERIC-NR-5GC/CONF/gnb.sa.band255.ntn.mu0.25prb.rfsim.conf
+0
-1
targets/PROJECTS/GENERIC-NR-5GC/CONF/gnb.sa.band256.ntn.mu0.25prb.rfsim.conf
...NERIC-NR-5GC/CONF/gnb.sa.band256.ntn.mu0.25prb.rfsim.conf
+0
-1
targets/PROJECTS/GENERIC-NR-5GC/CONF/gnb.sa.band257.u3.32prb.usrpx410.conf
...GENERIC-NR-5GC/CONF/gnb.sa.band257.u3.32prb.usrpx410.conf
+0
-1
targets/PROJECTS/GENERIC-NR-5GC/CONF/gnb.sa.band41.fr1.52PRB.usrpb210.conf
...GENERIC-NR-5GC/CONF/gnb.sa.band41.fr1.52PRB.usrpb210.conf
+0
-1
targets/PROJECTS/GENERIC-NR-5GC/CONF/gnb.sa.band66.fr1.24PRB.usrpx300.conf
...GENERIC-NR-5GC/CONF/gnb.sa.band66.fr1.24PRB.usrpx300.conf
+0
-1
targets/PROJECTS/GENERIC-NR-5GC/CONF/gnb.sa.band66.fr1.25PRB.usrpx300.conf
...GENERIC-NR-5GC/CONF/gnb.sa.band66.fr1.25PRB.usrpx300.conf
+0
-1
targets/PROJECTS/GENERIC-NR-5GC/CONF/gnb.sa.band66.u0.25prb.rfsim.conf
...CTS/GENERIC-NR-5GC/CONF/gnb.sa.band66.u0.25prb.rfsim.conf
+0
-1
targets/PROJECTS/GENERIC-NR-5GC/CONF/gnb.sa.band77.106prb.fhi72.4x4-vvdn.conf
...ERIC-NR-5GC/CONF/gnb.sa.band77.106prb.fhi72.4x4-vvdn.conf
+0
-1
targets/PROJECTS/GENERIC-NR-5GC/CONF/gnb.sa.band77.273prb.fhi72.2x2-vvdn.conf
...ERIC-NR-5GC/CONF/gnb.sa.band77.273prb.fhi72.2x2-vvdn.conf
+0
-1
targets/PROJECTS/GENERIC-NR-5GC/CONF/gnb.sa.band77.273prb.fhi72.4x4-vvdn.conf
...ERIC-NR-5GC/CONF/gnb.sa.band77.273prb.fhi72.4x4-vvdn.conf
+0
-1
targets/PROJECTS/GENERIC-NR-5GC/CONF/gnb.sa.band78.273prb.fhi72.4x2-benetel550.conf
...R-5GC/CONF/gnb.sa.band78.273prb.fhi72.4x2-benetel550.conf
+0
-1
targets/PROJECTS/GENERIC-NR-5GC/CONF/gnb.sa.band78.273prb.fhi72.4x4-benetel550-mplane.conf
...ONF/gnb.sa.band78.273prb.fhi72.4x4-benetel550-mplane.conf
+0
-1
targets/PROJECTS/GENERIC-NR-5GC/CONF/gnb.sa.band78.273prb.fhi72.4x4-benetel550.conf
...R-5GC/CONF/gnb.sa.band78.273prb.fhi72.4x4-benetel550.conf
+0
-1
targets/PROJECTS/GENERIC-NR-5GC/CONF/gnb.sa.band78.273prb.fhi72.4x4-liteon.conf
...IC-NR-5GC/CONF/gnb.sa.band78.273prb.fhi72.4x4-liteon.conf
+0
-1
targets/PROJECTS/GENERIC-NR-5GC/CONF/gnb.sa.band78.273prb.fhi72.4x4-metanoia.conf
...-NR-5GC/CONF/gnb.sa.band78.273prb.fhi72.4x4-metanoia.conf
+0
-1
targets/PROJECTS/GENERIC-NR-5GC/CONF/gnb.sa.band78.fr1.24PRB.usrpb210.conf
...GENERIC-NR-5GC/CONF/gnb.sa.band78.fr1.24PRB.usrpb210.conf
+0
-1
No files found.
ci-scripts/conf_files/gnb-vnf.sa.band66.u0.25prb.nfapi.conf
View file @
6a7ec349
...
...
@@ -16,8 +16,6 @@ gNBs =
nr_cellid
=
12345678
L
;
//////////
Physical
parameters
:
sib1_tda
=
5
;
min_rxtxtime
=
6
;
servingCellConfigCommon
= (
...
...
ci-scripts/conf_files/gnb.sa.band261.u3.32prb.rfsim.conf
View file @
6a7ec349
...
...
@@ -18,8 +18,6 @@ gNBs =
tr_s_preference
=
"local_mac"
//////////
Physical
parameters
:
sib1_tda
=
15
;
min_rxtxtime
=
6
;
servingCellConfigCommon
= (
...
...
ci-scripts/conf_files/gnb.sa.band78.24prb.rfsim.conf
View file @
6a7ec349
...
...
@@ -16,8 +16,6 @@ gNBs =
nr_cellid
=
12345678
L
;
//////////
Physical
parameters
:
sib1_tda
=
15
;
min_rxtxtime
=
6
;
servingCellConfigCommon
= (
...
...
ci-scripts/conf_files/gnb.sa.band78.273prb.fhi72.4x4-benetel550.conf
View file @
6a7ec349
...
...
@@ -23,7 +23,6 @@ gNBs =
pusch_AntennaPorts
=
4
;
do_CSIRS
=
1
;
do_SRS
=
0
;
sib1_tda
=
15
;
# force_UL256qam_off = 1;
servingCellConfigCommon
= (
...
...
doc/MAC/mac-usage.md
View file @
6a7ec349
...
...
@@ -255,8 +255,6 @@ configuration](../RRC/rrc-usage.md) as well for SIB configuration.
*
`pusch_AntennaPorts`
(default 1): number of antenna ports in PUSCH
*
`maxMIMO_layers`
(default -1=unlimited): maximum number of MIMO layers to use
in downlink
*
`sib1_tda`
(default 1): time domain allocation (TDA) indices to use for SIB1
(38.214 section 5.1.2.1.1)
*
`do_CSIRS`
(default 0): flag whether to use channel-state information
reference signal (CSI-RS)
*
`do_SRS`
(default 0): flag whether to use sounding reference signal (SRS)
...
...
doc/RUNMODEM.md
View file @
6a7ec349
...
...
@@ -296,7 +296,6 @@ This allows to reuse HARQ processes immediately, but it breaks compatibility wit
To enable this feature, the
`disable_harq`
flag has to be added to the gNB conf file in the section
`gNBs.[0]`
```
...
sib1_tda = 5;
min_rxtxtime = 6;
disable_harq = 1; // <--
...
...
openair2/GNB_APP/gnb_config.c
View file @
6a7ec349
...
...
@@ -699,7 +699,6 @@ void RCconfig_verify(configmodule_interface_t *cfg, ngran_node_t node_type)
verify_gnb_param_notset
(
gnbp
,
GNB_PDSCH_ANTENNAPORTS_XP_IDX
,
GNB_CONFIG_STRING_PDSCHANTENNAPORTS_XP
);
verify_gnb_param_notset
(
gnbp
,
GNB_PUSCH_ANTENNAPORTS_IDX
,
GNB_CONFIG_STRING_PUSCHANTENNAPORTS
);
verify_gnb_param_notset
(
gnbp
,
GNB_MINRXTXTIME_IDX
,
GNB_CONFIG_STRING_MINRXTXTIME
);
verify_gnb_param_notset
(
gnbp
,
GNB_SIB1_TDA_IDX
,
GNB_CONFIG_STRING_SIB1TDA
);
verify_gnb_param_notset
(
gnbp
,
GNB_DO_CSIRS_IDX
,
GNB_CONFIG_STRING_DOCSIRS
);
verify_gnb_param_notset
(
gnbp
,
GNB_DO_SRS_IDX
,
GNB_CONFIG_STRING_DOSRS
);
verify_gnb_param_notset
(
gnbp
,
GNB_FORCE256QAMOFF_IDX
,
GNB_CONFIG_STRING_FORCE256QAMOFF
);
...
...
@@ -1436,8 +1435,6 @@ void RCconfig_nr_macrlc(configmodule_interface_t *cfg)
}
config
.
minRXTXTIME
=
*
GNBParamList
.
paramarray
[
0
][
GNB_MINRXTXTIME_IDX
].
iptr
;
LOG_I
(
GNB_APP
,
"minTXRXTIME %d
\n
"
,
config
.
minRXTXTIME
);
config
.
sib1_tda
=
*
GNBParamList
.
paramarray
[
0
][
GNB_SIB1_TDA_IDX
].
iptr
;
LOG_I
(
GNB_APP
,
"SIB1 TDA %d
\n
"
,
config
.
sib1_tda
);
config
.
do_CSIRS
=
*
GNBParamList
.
paramarray
[
0
][
GNB_DO_CSIRS_IDX
].
iptr
;
config
.
do_SRS
=
*
GNBParamList
.
paramarray
[
0
][
GNB_DO_SRS_IDX
].
iptr
;
config
.
max_num_rsrp
=
*
GNBParamList
.
paramarray
[
0
][
GNB_LIMIT_RSRP_REPORT_IDX
].
iptr
;
...
...
openair2/GNB_APP/gnb_paramdef.h
View file @
6a7ec349
...
...
@@ -114,7 +114,6 @@ typedef enum {
#define GNB_CONFIG_STRING_PDSCHANTENNAPORTS_N2 "pdsch_AntennaPorts_N2"
#define GNB_CONFIG_STRING_PDSCHANTENNAPORTS_XP "pdsch_AntennaPorts_XP"
#define GNB_CONFIG_STRING_PUSCHANTENNAPORTS "pusch_AntennaPorts"
#define GNB_CONFIG_STRING_SIB1TDA "sib1_tda"
#define GNB_CONFIG_STRING_DOCSIRS "do_CSIRS"
#define GNB_CONFIG_STRING_DOSRS "do_SRS"
#define GNB_CONFIG_STRING_NRCELLID "nr_cellid"
...
...
@@ -179,7 +178,6 @@ typedef enum {
{GNB_CONFIG_STRING_PDSCHANTENNAPORTS_N2, "vert. log. antenna ports", 0, .iptr=NULL, .defintval=1, TYPE_INT, 0}, \
{GNB_CONFIG_STRING_PDSCHANTENNAPORTS_XP, "XP log. antenna ports", 0, .iptr=NULL, .defintval=1, TYPE_INT, 0}, \
{GNB_CONFIG_STRING_PUSCHANTENNAPORTS, NULL, 0, .iptr=NULL, .defintval=1, TYPE_INT, 0}, \
{GNB_CONFIG_STRING_SIB1TDA, NULL, 0, .iptr=NULL, .defintval=1, TYPE_INT, 0}, \
{GNB_CONFIG_STRING_DOCSIRS, NULL, 0, .iptr=NULL, .defintval=0, TYPE_INT, 0}, \
{GNB_CONFIG_STRING_DOSRS, NULL, 0, .iptr=NULL, .defintval=0, TYPE_INT, 0}, \
{GNB_CONFIG_STRING_NRCELLID, NULL, 0, .u64ptr=NULL,.defint64val=1, TYPE_UINT64, 0}, \
...
...
@@ -225,30 +223,29 @@ typedef enum {
#define GNB_PDSCH_ANTENNAPORTS_N2_IDX 14
#define GNB_PDSCH_ANTENNAPORTS_XP_IDX 15
#define GNB_PUSCH_ANTENNAPORTS_IDX 16
#define GNB_SIB1_TDA_IDX 17
#define GNB_DO_CSIRS_IDX 18
#define GNB_DO_SRS_IDX 19
#define GNB_NRCELLID_IDX 20
#define GNB_MINRXTXTIME_IDX 21
#define GNB_ULPRBBLACKLIST_IDX 22
#define GNB_UMONDEFAULTDRB_IDX 23
#define GNB_FORCE256QAMOFF_IDX 24
#define GNB_ENABLE_SDAP_IDX 25
#define GNB_DRBS 26
#define GNB_GNB_DU_ID_IDX 27
#define GNB_GNB_CU_UP_ID_IDX 28
#define GNB_USE_DELTA_MCS_IDX 29
#define GNB_FORCEUL256QAMOFF_IDX 30
#define GNB_MAXMIMOLAYERS_IDX 31
#define GNB_DISABLE_HARQ_IDX 32
#define GNB_NUM_DL_HARQ_IDX 33
#define GNB_NUM_UL_HARQ_IDX 34
#define GNB_UESS_AGG_LEVEL_LIST_IDX 35
#define GNB_CU_SIBS_IDX 36
#define GNB_DU_SIBS_IDX 37
#define GNB_CONFIG_REP_IDX 38
#define GNB_1ST_ACTIVE_BWP_IDX 39
#define GNB_LIMIT_RSRP_REPORT_IDX 40
#define GNB_DO_CSIRS_IDX 17
#define GNB_DO_SRS_IDX 18
#define GNB_NRCELLID_IDX 19
#define GNB_MINRXTXTIME_IDX 20
#define GNB_ULPRBBLACKLIST_IDX 21
#define GNB_UMONDEFAULTDRB_IDX 22
#define GNB_FORCE256QAMOFF_IDX 23
#define GNB_ENABLE_SDAP_IDX 24
#define GNB_DRBS 25
#define GNB_GNB_DU_ID_IDX 26
#define GNB_GNB_CU_UP_ID_IDX 27
#define GNB_USE_DELTA_MCS_IDX 28
#define GNB_FORCEUL256QAMOFF_IDX 29
#define GNB_MAXMIMOLAYERS_IDX 30
#define GNB_DISABLE_HARQ_IDX 31
#define GNB_NUM_DL_HARQ_IDX 32
#define GNB_NUM_UL_HARQ_IDX 33
#define GNB_UESS_AGG_LEVEL_LIST_IDX 34
#define GNB_CU_SIBS_IDX 35
#define GNB_DU_SIBS_IDX 36
#define GNB_CONFIG_REP_IDX 37
#define GNB_1ST_ACTIVE_BWP_IDX 38
#define GNB_LIMIT_RSRP_REPORT_IDX 39
#define TRACKING_AREA_CODE_OKRANGE {0x0001,0xFFFD}
#define NUM_DL_HARQ_OKVALUES {2,4,6,8,10,12,16,32}
...
...
@@ -287,7 +284,6 @@ typedef enum {
{ .s5 = { NULL } }, \
{ .s5 = { NULL } }, \
{ .s5 = { NULL } }, \
{ .s5 = { NULL } }, \
{ .s1 = { config_check_intval, NUM_DL_HARQ_OKVALUES,8 } }, \
{ .s1 = { config_check_intval, NUM_UL_HARQ_OKVALUES,2 } }, \
{ .s5 = { NULL } }, \
...
...
openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_bch.c
View file @
6a7ec349
...
...
@@ -255,7 +255,7 @@ void schedule_nr_mib(module_id_t module_idP, frame_t frameP, slot_t slotP, nfapi
}
}
static
void
update_rb_mcs_tbs
(
NR_sched_pdsch_t
*
pdsch
,
uint32_t
num_total_bytes
,
uint16_t
*
vrb_map
)
static
bool
update_rb_mcs_tbs
(
NR_sched_pdsch_t
*
pdsch
,
uint32_t
num_total_bytes
,
uint16_t
*
vrb_map
)
{
const
NR_tda_info_t
*
tda_info
=
&
pdsch
->
tda_info
;
...
...
@@ -296,12 +296,15 @@ static void update_rb_mcs_tbs(NR_sched_pdsch_t *pdsch, uint32_t num_total_bytes,
break
;
}
}
AssertFatal
(
pdsch
->
tb_size
>=
num_total_bytes
,
"Couldn't allocate enough resources for %d bytes in SIB PDSCH (rbStart %d, rbSize %d, bwpSize %d)
\n
"
,
num_total_bytes
,
pdsch
->
rbStart
,
pdsch
->
rbSize
,
bwpSize
);
if
(
pdsch
->
tb_size
<
num_total_bytes
)
{
LOG_D
(
NR_MAC
,
"Couldn't allocate enough resources for %d bytes in SIB PDSCH (rbStart %d, rbSize %d, bwpSize %d)
\n
"
,
num_total_bytes
,
pdsch
->
rbStart
,
pdsch
->
rbSize
,
bwpSize
);
return
false
;
}
LOG_D
(
NR_MAC
,
"mcs=%i, startSymbolIndex = %i, nrOfSymbols = %i, rbSize = %i, TBS = %i, dmrs_length %d, N_PRB_DMRS = %d, mappingtype = %d
\n
"
,
...
...
@@ -313,6 +316,7 @@ static void update_rb_mcs_tbs(NR_sched_pdsch_t *pdsch, uint32_t num_total_bytes,
pdsch
->
dmrs_parms
.
N_DMRS_SLOT
,
N_PRB_DMRS
,
tda_info
->
mapping_type
);
return
true
;
}
static
NR_sched_pdsch_t
schedule_control_sib1
(
gNB_MAC_INST
*
gNB_mac
,
...
...
@@ -342,11 +346,12 @@ static NR_sched_pdsch_t schedule_control_sib1(gNB_MAC_INST *gNB_mac,
uint8_t
nr_of_candidates
=
0
;
for
(
int
i
=
0
;
i
<
3
;
i
++
)
{
for
(
int
i
=
0
;
i
<
3
;
i
++
)
{
find_aggregation_candidates
(
&
gNB_mac
->
sched_ctrlCommon
->
aggregation_level
,
&
nr_of_candidates
,
gNB_mac
->
sched_ctrlCommon
->
search_space
,
4
<<
i
);
if
(
nr_of_candidates
>
0
)
break
;
// choosing the lower value of aggregation level available
if
(
nr_of_candidates
>
0
)
break
;
// choosing the lower value of aggregation level available
}
AssertFatal
(
nr_of_candidates
>
0
,
"nr_of_candidates is 0
\n
"
);
AssertFatal
(
nr_of_candidates
>
0
,
"nr_of_candidates is 0
\n
"
);
gNB_mac
->
sched_ctrlCommon
->
cce_index
=
find_pdcch_candidate
(
gNB_mac
,
CC_id
,
gNB_mac
->
sched_ctrlCommon
->
aggregation_level
,
...
...
@@ -358,18 +363,23 @@ static NR_sched_pdsch_t schedule_control_sib1(gNB_MAC_INST *gNB_mac,
AssertFatal
(
gNB_mac
->
sched_ctrlCommon
->
cce_index
>=
0
,
"Could not find CCE for coreset0
\n
"
);
update_rb_mcs_tbs
(
&
pdsch
,
gNB_mac
->
sched_ctrlCommon
->
num_total_bytes
,
vrb_map
);
// Mark the corresponding RBs as used
fill_pdcch_vrb_map
(
gNB_mac
,
CC_id
,
pdcch
,
gNB_mac
->
sched_ctrlCommon
->
cce_index
,
gNB_mac
->
sched_ctrlCommon
->
aggregation_level
,
beam
);
for
(
int
rb
=
0
;
rb
<
pdsch
.
rbSize
;
rb
++
)
{
vrb_map
[
rb
+
type0_PDCCH_CSS_config
->
cset_start_rb
]
|=
SL_to_bitmap
(
tda_info
->
startSymbolIndex
,
tda_info
->
nrOfSymbols
);
bool
success
=
update_rb_mcs_tbs
(
&
pdsch
,
gNB_mac
->
sched_ctrlCommon
->
num_total_bytes
,
vrb_map
);
if
(
success
)
{
// Mark the corresponding RBs as used
fill_pdcch_vrb_map
(
gNB_mac
,
CC_id
,
pdcch
,
gNB_mac
->
sched_ctrlCommon
->
cce_index
,
gNB_mac
->
sched_ctrlCommon
->
aggregation_level
,
beam
);
for
(
int
rb
=
0
;
rb
<
pdsch
.
rbSize
;
rb
++
)
{
vrb_map
[
rb
+
type0_PDCCH_CSS_config
->
cset_start_rb
]
|=
SL_to_bitmap
(
tda_info
->
startSymbolIndex
,
tda_info
->
nrOfSymbols
);
}
}
else
{
pdsch
.
tb_size
=
0
;
// to signal we couldn't allocate TBS
pdsch
.
time_domain_allocation
=
-
1
;
}
return
pdsch
;
}
...
...
@@ -464,6 +474,53 @@ static void nr_fill_nfapi_dl_SIB_pdu(gNB_MAC_INST *gNB_mac,
pdcch_pdu_rel15
->
numDlDci
);
}
static
bool
check_sib1_tda
(
gNB_MAC_INST
*
gNB_mac
,
NR_sched_pdcch_t
*
sched_pdcch
,
NR_beam_alloc_t
*
beam
,
int
tda
,
int
ssb_index
,
int
CC_id
,
int
candidate_idx
)
{
NR_COMMON_channels_t
*
cc
=
&
gNB_mac
->
common_channels
[
CC_id
];
NR_ServingCellConfigCommon_t
*
scc
=
cc
->
ServingCellConfigCommon
;
NR_Type0_PDCCH_CSS_config_t
*
type0_PDCCH_CSS_config
=
&
gNB_mac
->
type0_PDCCH_CSS_config
[
ssb_index
];
default_table_type_t
table_type
=
get_default_table_type
(
type0_PDCCH_CSS_config
->
type0_pdcch_ss_mux_pattern
);
// If the PDSCH was scheduled with SI-RNTI in PDCCH Type0 common search space,
// the UE may assume that this PDSCH resource allocation is not applied (Table 5.1.2.1.1-4 and 5 in 38.214)
int
row
=
tda
+
1
;
if
(
table_type
==
defaultB
&&
(
row
==
12
||
row
==
13
||
row
==
14
))
false
;
if
(
table_type
==
defaultC
&&
(
row
==
1
||
row
==
6
||
row
==
7
||
row
>
12
))
false
;
// assuming normal CP
NR_tda_info_t
tda_info
=
get_info_from_tda_tables
(
table_type
,
tda
,
scc
->
dmrs_TypeA_Position
,
true
);
// SIB1 TDA going to the last symbol would cause overlap with CSI-RS
if
(
!
tda_info
.
valid_tda
||
tda_info
.
startSymbolIndex
+
tda_info
.
nrOfSymbols
==
14
)
false
;
if
(
tda_info
.
startSymbolIndex
<
type0_PDCCH_CSS_config
->
first_symbol_index
+
type0_PDCCH_CSS_config
->
num_symbols
)
false
;
NR_pdsch_dmrs_t
dmrs_parms
=
get_dl_dmrs_params
(
scc
,
NULL
,
&
tda_info
,
1
);
// Configure sched_ctrlCommon for SIB1
gNB_mac
->
sib1_pdsch
[
ssb_index
]
=
schedule_control_sib1
(
gNB_mac
,
CC_id
,
sched_pdcch
,
type0_PDCCH_CSS_config
,
tda
,
&
dmrs_parms
,
&
tda_info
,
candidate_idx
,
beam
->
idx
,
cc
->
sib1_bcch_length
);
if
(
gNB_mac
->
sib1_pdsch
[
ssb_index
].
tb_size
>
0
)
{
LOG_D
(
NR_MAC
,
"Found TDA for SIB1: %d
\n
"
,
tda
);
return
true
;
}
else
{
return
false
;
}
}
void
schedule_nr_sib1
(
module_id_t
module_idP
,
frame_t
frameP
,
slot_t
slotP
,
...
...
@@ -474,12 +531,9 @@ void schedule_nr_sib1(module_id_t module_idP,
// TODO: Get these values from RRC
const
int
CC_id
=
0
;
uint8_t
candidate_idx
=
0
;
gNB_MAC_INST
*
gNB_mac
=
RC
.
nrmac
[
module_idP
];
NR_ServingCellConfigCommon_t
*
scc
=
gNB_mac
->
common_channels
[
CC_id
].
ServingCellConfigCommon
;
int
time_domain_allocation
=
gNB_mac
->
radio_config
.
sib1_tda
;
NR_COMMON_channels_t
*
cc
=
&
gNB_mac
->
common_channels
[
CC_id
];
NR_ServingCellConfigCommon_t
*
scc
=
cc
->
ServingCellConfigCommon
;
int
L_max
;
switch
(
scc
->
ssb_PositionsInBurst
->
present
)
{
case
1
:
...
...
@@ -492,8 +546,7 @@ void schedule_nr_sib1(module_id_t module_idP,
L_max
=
64
;
break
;
default:
AssertFatal
(
0
,
"SSB bitmap size value %d undefined (allowed values 1,2,3)
\n
"
,
scc
->
ssb_PositionsInBurst
->
present
);
AssertFatal
(
false
,
"SSB bitmap size value %d undefined (allowed values 1,2,3)
\n
"
,
scc
->
ssb_PositionsInBurst
->
present
);
}
for
(
int
i
=
0
;
i
<
L_max
;
i
++
)
{
...
...
@@ -513,17 +566,6 @@ void schedule_nr_sib1(module_id_t module_idP,
NR_beam_alloc_t
beam
=
beam_allocation_procedure
(
&
gNB_mac
->
beam_info
,
frameP
,
slotP
,
beam_index
,
n_slots_frame
);
AssertFatal
(
beam
.
idx
>=
0
,
"Cannot allocate SIB1 corresponding to SSB %d in any available beam
\n
"
,
i
);
LOG_D
(
NR_MAC
,
"(%d.%d) SIB1 transmission: ssb_index %d
\n
"
,
frameP
,
slotP
,
type0_PDCCH_CSS_config
->
ssb_index
);
default_table_type_t
table_type
=
get_default_table_type
(
type0_PDCCH_CSS_config
->
type0_pdcch_ss_mux_pattern
);
// assuming normal CP
NR_tda_info_t
tda_info
=
get_info_from_tda_tables
(
table_type
,
time_domain_allocation
,
scc
->
dmrs_TypeA_Position
,
true
);
AssertFatal
((
tda_info
.
startSymbolIndex
+
tda_info
.
nrOfSymbols
)
<
14
,
"SIB1 TDA %d would cause overlap with CSI-RS. Please select a different SIB1 TDA.
\n
"
,
time_domain_allocation
);
NR_pdsch_dmrs_t
dmrs_parms
=
get_dl_dmrs_params
(
scc
,
NULL
,
&
tda_info
,
1
);
NR_sched_pdcch_t
sched_pdcch
=
set_pdcch_structure
(
NULL
,
gNB_mac
->
sched_ctrlCommon
->
search_space
,
gNB_mac
->
sched_ctrlCommon
->
coreset
,
...
...
@@ -531,23 +573,24 @@ void schedule_nr_sib1(module_id_t module_idP,
NULL
,
type0_PDCCH_CSS_config
);
NR_COMMON_channels_t
*
cc
=
&
gNB_mac
->
common_channels
[
0
];
// Configure sched_ctrlCommon for SIB1
NR_sched_pdsch_t
sched_pdsch
=
schedule_control_sib1
(
gNB_mac
,
CC_id
,
&
sched_pdcch
,
type0_PDCCH_CSS_config
,
time_domain_allocation
,
&
dmrs_parms
,
&
tda_info
,
candidate_idx
,
beam
.
idx
,
cc
->
sib1_bcch_length
);
bool
res
=
false
;
if
(
gNB_mac
->
sib1_pdsch
[
i
].
time_domain_allocation
<
0
)
{
for
(
int
t
=
0
;
t
<
16
;
t
++
)
{
if
(
check_sib1_tda
(
gNB_mac
,
&
sched_pdcch
,
&
beam
,
t
,
i
,
CC_id
,
candidate_idx
))
{
res
=
true
;
break
;
}
}
}
AssertFatal
(
gNB_mac
->
sib1_pdsch
[
i
].
time_domain_allocation
>=
0
,
"Couldn't select any TDA for SIB1
\n
"
);
if
(
!
res
)
res
=
check_sib1_tda
(
gNB_mac
,
&
sched_pdcch
,
&
beam
,
gNB_mac
->
sib1_pdsch
[
i
].
time_domain_allocation
,
i
,
CC_id
,
candidate_idx
);
int
tb_size
=
gNB_mac
->
sib1_pdsch
[
i
].
tb_size
;
AssertFatal
(
res
&&
tb_size
>
0
,
"Couldn't allocate TB for SIB1 for an already allocated TDA
\n
"
);
nfapi_nr_dl_tti_request_body_t
*
dl_req
=
&
DL_req
->
dl_tti_request_body
;
int
pdu_index
=
gNB_mac
->
pdu_index
[
0
]
++
;
nr_fill_nfapi_dl_SIB_pdu
(
gNB_mac
,
&
sched_pdsch
,
&
gNB_mac
->
sib1_pdsch
[
i
]
,
&
sched_pdcch
,
gNB_mac
->
sched_ctrlCommon
->
search_space
,
gNB_mac
->
sched_ctrlCommon
->
coreset
,
...
...
@@ -563,11 +606,11 @@ void schedule_nr_sib1(module_id_t module_idP,
nfapi_nr_pdu_t
*
tx_req
=
&
TX_req
->
pdu_list
[
ntx_req
];
// Data to be transmitted
memcpy
(
tx_req
->
TLVs
[
0
].
value
.
direct
,
cc
->
sib1_bcch_pdu
,
sched_pdsch
.
tb_size
);
memcpy
(
tx_req
->
TLVs
[
0
].
value
.
direct
,
cc
->
sib1_bcch_pdu
,
tb_size
);
tx_req
->
PDU_index
=
pdu_index
;
tx_req
->
num_TLV
=
1
;
tx_req
->
TLVs
[
0
].
length
=
sched_pdsch
.
tb_size
;
tx_req
->
TLVs
[
0
].
length
=
tb_size
;
tx_req
->
PDU_length
=
compute_PDU_length
(
tx_req
->
num_TLV
,
tx_req
->
TLVs
[
0
].
length
);
TX_req
->
Number_of_PDUs
++
;
TX_req
->
SFN
=
frameP
;
...
...
@@ -673,7 +716,8 @@ static void other_sib_sched_control(module_id_t module_idP,
uint16_t
*
vrb_map
=
cc
->
vrb_map
[
beam
.
idx
];
uint8_t
*
sib_bcch_pdu
=
cc
->
other_sib_bcch_pdu
[
payload_idx
];
int
num_total_bytes
=
cc
->
other_sib_bcch_length
[
payload_idx
];
update_rb_mcs_tbs
(
&
sched_pdsch_otherSI
,
num_total_bytes
,
vrb_map
);
bool
success
=
update_rb_mcs_tbs
(
&
sched_pdsch_otherSI
,
num_total_bytes
,
vrb_map
);
AssertFatal
(
success
,
"Couldn't allocate TBS for other SIB
\n
"
);
for
(
int
rb
=
0
;
rb
<
sched_pdsch_otherSI
.
rbSize
;
rb
++
)
{
vrb_map
[
rb
+
type0_PDCCH_CSS_config
->
cset_start_rb
]
|=
SL_to_bitmap
(
tda_info
.
startSymbolIndex
,
tda_info
.
nrOfSymbols
);
...
...
openair2/LAYER2/NR_MAC_gNB/main.c
View file @
6a7ec349
...
...
@@ -302,7 +302,8 @@ void mac_top_init_gNB(ngran_node_t node_type,
RC
.
nrmac
[
i
]
->
tag
=
(
NR_TAG_t
*
)
malloc
(
sizeof
(
NR_TAG_t
));
memset
((
void
*
)
RC
.
nrmac
[
i
]
->
tag
,
0
,
sizeof
(
NR_TAG_t
));
for
(
int
n
=
0
;
n
<
MAX_NUM_OF_SSB
;
n
++
)
RC
.
nrmac
[
i
]
->
sib1_pdsch
[
n
].
time_domain_allocation
=
-
1
;
RC
.
nrmac
[
i
]
->
common_channels
[
0
].
ServingCellConfigCommon
=
scc
;
RC
.
nrmac
[
i
]
->
radio_config
=
*
config
;
RC
.
nrmac
[
i
]
->
rlc_config
=
*
default_rlc_config
;
...
...
openair2/LAYER2/NR_MAC_gNB/nr_mac_gNB.h
View file @
6a7ec349
...
...
@@ -186,7 +186,6 @@ typedef enum {
}
nr_config_report_type_t
;
typedef
struct
nr_mac_config_t
{
int
sib1_tda
;
nr_pdsch_AntennaPorts_t
pdsch_AntennaPorts
;
int
pusch_AntennaPorts
;
int
minRXTXTIME
;
...
...
@@ -994,6 +993,7 @@ typedef struct gNB_MAC_INST_s {
bool
identity_pm
;
int
precoding_matrix_size
[
NR_MAX_NB_LAYERS
];
int
beam_index_list
[
MAX_NUM_OF_SSB
];
NR_sched_pdsch_t
sib1_pdsch
[
MAX_NUM_OF_SSB
];
/// dedicate UL TDA, common for all UEs
seq_arr_t
ul_tda
;
...
...
targets/PROJECTS/GENERIC-NR-5GC/CONF/gnb-du.sa.band66.25prb.rfsim.pci0.conf
View file @
6a7ec349
...
...
@@ -19,7 +19,6 @@ gNBs =
//////////
Physical
parameters
:
min_rxtxtime
=
4
;
sib1_tda
=
15
;
servingCellConfigCommon
= (
{
...
...
targets/PROJECTS/GENERIC-NR-5GC/CONF/gnb-du.sa.band66.25prb.rfsim.pci1.conf
View file @
6a7ec349
...
...
@@ -19,7 +19,6 @@ gNBs =
//////////
Physical
parameters
:
min_rxtxtime
=
4
;
sib1_tda
=
15
;
servingCellConfigCommon
= (
{
...
...
targets/PROJECTS/GENERIC-NR-5GC/CONF/gnb-du.sa.band77.273prb.fhi72.4x4-benetel650.conf
View file @
6a7ec349
...
...
@@ -23,7 +23,6 @@ gNBs =
pusch_AntennaPorts
=
4
;
do_CSIRS
=
1
;
do_SRS
=
0
;
sib1_tda
=
15
;
force_UL256qam_off
=
1
;
# maxMIMO_layers = 2;
...
...
targets/PROJECTS/GENERIC-NR-5GC/CONF/gnb-du.sa.band77.273prb.fhi72.8x8-benetel650_650-mplane.conf
View file @
6a7ec349
...
...
@@ -23,7 +23,6 @@ gNBs =
pusch_AntennaPorts
=
8
;
do_CSIRS
=
1
;
do_SRS
=
0
;
sib1_tda
=
15
;
force_UL256qam_off
=
1
;
maxMIMO_layers
=
2
;
...
...
targets/PROJECTS/GENERIC-NR-5GC/CONF/gnb-du.sa.band77.273prb.fhi72.8x8-benetel650_650.conf
View file @
6a7ec349
...
...
@@ -23,7 +23,6 @@ gNBs =
pusch_AntennaPorts
=
8
;
do_CSIRS
=
1
;
do_SRS
=
0
;
sib1_tda
=
15
;
force_UL256qam_off
=
1
;
maxMIMO_layers
=
2
;
...
...
targets/PROJECTS/GENERIC-NR-5GC/CONF/gnb-vnf.sa.band78.106prb.nfapi.conf
View file @
6a7ec349
...
...
@@ -22,7 +22,6 @@ gNBs =
pusch_AntennaPorts
=
1
;
min_rxtxtime
=
6
;
enable_sdap
=
0
;
#sib1_tda = 0;
servingCellConfigCommon
= (
{
...
...
targets/PROJECTS/GENERIC-NR-5GC/CONF/gnb.sa.band254.ntn.mu1.24prb.rfsim.conf
View file @
6a7ec349
...
...
@@ -16,7 +16,6 @@ gNBs =
//////////
Physical
parameters
:
sib1_tda
=
5
;
min_rxtxtime
=
6
;
disable_harq
=
1
;
cu_sibs
= [
2
];
...
...
targets/PROJECTS/GENERIC-NR-5GC/CONF/gnb.sa.band255.ntn.mu0.25prb.rfsim.conf
View file @
6a7ec349
...
...
@@ -16,7 +16,6 @@ gNBs =
//////////
Physical
parameters
:
sib1_tda
=
5
;
min_rxtxtime
=
6
;
disable_harq
=
1
;
cu_sibs
= [
2
];
...
...
targets/PROJECTS/GENERIC-NR-5GC/CONF/gnb.sa.band256.ntn.mu0.25prb.rfsim.conf
View file @
6a7ec349
...
...
@@ -16,7 +16,6 @@ gNBs =
//////////
Physical
parameters
:
sib1_tda
=
5
;
min_rxtxtime
=
6
;
disable_harq
=
1
;
cu_sibs
= [
2
];
...
...
targets/PROJECTS/GENERIC-NR-5GC/CONF/gnb.sa.band257.u3.32prb.usrpx410.conf
View file @
6a7ec349
...
...
@@ -21,7 +21,6 @@ gNBs =
pusch_AntennaPorts
=
1
;
do_CSIRS
=
1
;
do_SRS
=
1
;
sib1_tda
=
15
;
min_rxtxtime
=
6
;
servingCellConfigCommon
= (
...
...
targets/PROJECTS/GENERIC-NR-5GC/CONF/gnb.sa.band41.fr1.52PRB.usrpb210.conf
View file @
6a7ec349
...
...
@@ -22,7 +22,6 @@ gNBs =
do_CSIRS
=
1
;
do_SRS
=
1
;
sib1_tda
=
15
;
min_rxtxtime
=
6
;
servingCellConfigCommon
= (
...
...
targets/PROJECTS/GENERIC-NR-5GC/CONF/gnb.sa.band66.fr1.24PRB.usrpx300.conf
View file @
6a7ec349
...
...
@@ -32,7 +32,6 @@ gNBs =
//////////
Physical
parameters
:
sib1_tda
=
5
;
min_rxtxtime
=
6
;
# disable_harq = 1;
# num_dlharq = 32;
...
...
targets/PROJECTS/GENERIC-NR-5GC/CONF/gnb.sa.band66.fr1.25PRB.usrpx300.conf
View file @
6a7ec349
...
...
@@ -32,7 +32,6 @@ gNBs =
//////////
Physical
parameters
:
sib1_tda
=
5
;
min_rxtxtime
=
6
;
# disable_harq = 1;
# num_dlharq = 32;
...
...
targets/PROJECTS/GENERIC-NR-5GC/CONF/gnb.sa.band66.u0.25prb.rfsim.conf
View file @
6a7ec349
...
...
@@ -17,7 +17,6 @@ gNBs =
//////////
Physical
parameters
:
sib1_tda
=
5
;
min_rxtxtime
=
6
;
servingCellConfigCommon
= (
...
...
targets/PROJECTS/GENERIC-NR-5GC/CONF/gnb.sa.band77.106prb.fhi72.4x4-vvdn.conf
View file @
6a7ec349
...
...
@@ -23,7 +23,6 @@ gNBs =
pusch_AntennaPorts
=
4
;
do_CSIRS
=
1
;
do_SRS
=
0
;
sib1_tda
=
15
;
servingCellConfigCommon
= (
{
...
...
targets/PROJECTS/GENERIC-NR-5GC/CONF/gnb.sa.band77.273prb.fhi72.2x2-vvdn.conf
View file @
6a7ec349
...
...
@@ -21,7 +21,6 @@ gNBs =
pusch_AntennaPorts
=
2
;
do_CSIRS
=
1
;
do_SRS
=
0
;
sib1_tda
=
15
;
servingCellConfigCommon
= (
{
...
...
targets/PROJECTS/GENERIC-NR-5GC/CONF/gnb.sa.band77.273prb.fhi72.4x4-vvdn.conf
View file @
6a7ec349
...
...
@@ -23,7 +23,6 @@ gNBs =
pusch_AntennaPorts
=
4
;
do_CSIRS
=
1
;
do_SRS
=
0
;
sib1_tda
=
15
;
servingCellConfigCommon
= (
{
...
...
targets/PROJECTS/GENERIC-NR-5GC/CONF/gnb.sa.band78.273prb.fhi72.4x2-benetel550.conf
View file @
6a7ec349
...
...
@@ -21,7 +21,6 @@ gNBs =
pusch_AntennaPorts
=
2
;
do_CSIRS
=
1
;
do_SRS
=
0
;
sib1_tda
=
15
;
# force_UL256qam_off = 1;
servingCellConfigCommon
= (
...
...
targets/PROJECTS/GENERIC-NR-5GC/CONF/gnb.sa.band78.273prb.fhi72.4x4-benetel550-mplane.conf
View file @
6a7ec349
...
...
@@ -23,7 +23,6 @@ gNBs =
pusch_AntennaPorts
=
4
;
do_CSIRS
=
1
;
do_SRS
=
0
;
sib1_tda
=
15
;
# force_UL256qam_off = 1;
servingCellConfigCommon
= (
...
...
targets/PROJECTS/GENERIC-NR-5GC/CONF/gnb.sa.band78.273prb.fhi72.4x4-benetel550.conf
View file @
6a7ec349
...
...
@@ -23,7 +23,6 @@ gNBs =
pusch_AntennaPorts
=
4
;
do_CSIRS
=
1
;
do_SRS
=
0
;
sib1_tda
=
15
;
# force_UL256qam_off = 1;
servingCellConfigCommon
= (
...
...
targets/PROJECTS/GENERIC-NR-5GC/CONF/gnb.sa.band78.273prb.fhi72.4x4-liteon.conf
View file @
6a7ec349
...
...
@@ -23,7 +23,6 @@ gNBs =
pusch_AntennaPorts
=
4
;
do_CSIRS
=
1
;
do_SRS
=
0
;
sib1_tda
=
15
;
servingCellConfigCommon
= (
{
...
...
targets/PROJECTS/GENERIC-NR-5GC/CONF/gnb.sa.band78.273prb.fhi72.4x4-metanoia.conf
View file @
6a7ec349
...
...
@@ -21,7 +21,6 @@ gNBs =
do_CSIRS
=
1
;
do_SRS
=
0
;
force_UL256qam_off
=
1
;
# sib1_tda = 15;
servingCellConfigCommon
= (
{
...
...
targets/PROJECTS/GENERIC-NR-5GC/CONF/gnb.sa.band78.fr1.24PRB.usrpb210.conf
View file @
6a7ec349
...
...
@@ -17,7 +17,6 @@ gNBs =
//////////
Physical
parameters
:
sib1_tda
=
15
;
min_rxtxtime
=
6
;
servingCellConfigCommon
= (
...
...
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