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
lizhongxiao
OpenXG-RAN
Commits
072567e5
Commit
072567e5
authored
Dec 07, 2023
by
Marwan Hammouda
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
HARQ32 enabled in conf files and also SA mode
parent
9c01fe12
Changes
6
Expand all
Show whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
210 additions
and
28 deletions
+210
-28
openair2/GNB_APP/RRC_nr_paramsvalues.h
openair2/GNB_APP/RRC_nr_paramsvalues.h
+5
-1
openair2/GNB_APP/gnb_config.c
openair2/GNB_APP/gnb_config.c
+66
-0
openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_primitives.c
openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_primitives.c
+31
-13
openair2/LAYER2/NR_MAC_gNB/mac_proto.h
openair2/LAYER2/NR_MAC_gNB/mac_proto.h
+3
-0
openair2/RRC/NR/nr_rrc_config.c
openair2/RRC/NR/nr_rrc_config.c
+92
-14
targets/PROJECTS/GENERIC-NR-5GC/CONF/gnb.sa.band66.fr1.25PRB.usrpx300.conf
...GENERIC-NR-5GC/CONF/gnb.sa.band66.fr1.25PRB.usrpx300.conf
+13
-0
No files found.
openair2/GNB_APP/RRC_nr_paramsvalues.h
View file @
072567e5
...
...
@@ -157,6 +157,8 @@
#define GNB_CONFIG_STRING_SCS_ULBWP3 "ul_bwp3_subcarrierSpacing"
#define GNB_CONFIG_STRING_SCS_ULBWP4 "ul_bwp4_subcarrierSpacing"
#define GNB_CONFIG_STRING_FIRSTACTIVEULBWP_ID "firstActiveUplinkBWP-Id"
#define GNB_CONFIG_STRING_NUM_DL_HARQ_PROCESSES "nrofHARQ-ProcessesForPDSCH"
#define GNB_CONFIG_STRING_NUM_UL_HARQ_PROCESSES "nrofHARQ-ProcessesForPUSCH"
/*--------------------------------------------------------------------------------------------------------------------*/
...
...
@@ -280,6 +282,8 @@
{GNB_CONFIG_STRING_LOCATIONANDBANDWIDTH_ULBWP2,NULL,0,.i64ptr=&scd->uplinkConfig->uplinkBWP_ToAddModList->list.array[1]->bwp_Common->genericParameters.locationAndBandwidth,.defint64val=0,TYPE_INT64,0}, \
{GNB_CONFIG_STRING_LOCATIONANDBANDWIDTH_ULBWP3,NULL,0,.i64ptr=&scd->uplinkConfig->uplinkBWP_ToAddModList->list.array[2]->bwp_Common->genericParameters.locationAndBandwidth,.defint64val=0,TYPE_INT64,0}, \
{GNB_CONFIG_STRING_LOCATIONANDBANDWIDTH_ULBWP4,NULL,0,.i64ptr=&scd->uplinkConfig->uplinkBWP_ToAddModList->list.array[3]->bwp_Common->genericParameters.locationAndBandwidth,.defint64val=0,TYPE_INT64,0}, \
{GNB_CONFIG_STRING_DEFAULTDLBWP_ID,NULL,0,.i64ptr=scd->defaultDownlinkBWP_Id,.defint64val=0,TYPE_INT64,0}}
{GNB_CONFIG_STRING_DEFAULTDLBWP_ID,NULL,0,.i64ptr=scd->defaultDownlinkBWP_Id,.defint64val=0,TYPE_INT64,0}, \
{GNB_CONFIG_STRING_NUM_DL_HARQ_PROCESSES,NULL,0,.i64ptr=scd->pdsch_ServingCellConfig->choice.setup->nrofHARQ_ProcessesForPDSCH,.defint64val=16,TYPE_INT64,0}, \
{GNB_CONFIG_STRING_NUM_UL_HARQ_PROCESSES,NULL,0,.i64ptr=scd->uplinkConfig->pusch_ServingCellConfig->choice.setup->ext3->nrofHARQ_ProcessesForPUSCH_r17,.defint64val=16,TYPE_INT64,0}}
#endif
openair2/GNB_APP/gnb_config.c
View file @
072567e5
...
...
@@ -535,8 +535,70 @@ void prepare_scd(NR_ServingCellConfig_t *scd) {
asn1cSeqAdd
(
&
scd
->
uplinkConfig
->
uplinkBWP_ToAddModList
->
list
,
ubwp
);
}
scd
->
pdsch_ServingCellConfig
=
calloc
(
1
,
sizeof
(
*
scd
->
pdsch_ServingCellConfig
));
NR_PDSCH_ServingCellConfig_t
*
pdsch_servingcellconfig
=
calloc
(
1
,
sizeof
(
*
pdsch_servingcellconfig
));
scd
->
pdsch_ServingCellConfig
->
present
=
NR_SetupRelease_PDSCH_ServingCellConfig_PR_setup
;
scd
->
pdsch_ServingCellConfig
->
choice
.
setup
=
pdsch_servingcellconfig
;
pdsch_servingcellconfig
->
nrofHARQ_ProcessesForPDSCH
=
calloc
(
1
,
sizeof
(
*
pdsch_servingcellconfig
->
nrofHARQ_ProcessesForPDSCH
));
scd
->
uplinkConfig
->
pusch_ServingCellConfig
=
calloc
(
1
,
sizeof
(
*
scd
->
uplinkConfig
->
pusch_ServingCellConfig
));
NR_PUSCH_ServingCellConfig_t
*
pusch_scc
=
calloc
(
1
,
sizeof
(
*
pusch_scc
));
scd
->
uplinkConfig
->
pusch_ServingCellConfig
->
present
=
NR_SetupRelease_PUSCH_ServingCellConfig_PR_setup
;
scd
->
uplinkConfig
->
pusch_ServingCellConfig
->
choice
.
setup
=
pusch_scc
;
pusch_scc
->
ext3
=
calloc
(
1
,
sizeof
(
*
pusch_scc
->
ext3
));
pusch_scc
->
ext3
->
nrofHARQ_ProcessesForPUSCH_r17
=
calloc
(
1
,
sizeof
(
*
pusch_scc
->
ext3
->
nrofHARQ_ProcessesForPUSCH_r17
));
}
void
fix_harq_cfg
(
NR_PDSCH_ServingCellConfig_t
*
pdsch_servingcellconfig
,
NR_PUSCH_ServingCellConfig_t
*
pusch_scc
)
{
int
num_dlharq
=
*
pdsch_servingcellconfig
->
nrofHARQ_ProcessesForPDSCH
;
LOG_I
(
NR_RRC
,
"Configured value dlharq:%d
\n
"
,
num_dlharq
);
switch
(
num_dlharq
)
{
case
2
:
*
pdsch_servingcellconfig
->
nrofHARQ_ProcessesForPDSCH
=
NR_PDSCH_ServingCellConfig__nrofHARQ_ProcessesForPDSCH_n2
;
break
;
case
4
:
*
pdsch_servingcellconfig
->
nrofHARQ_ProcessesForPDSCH
=
NR_PDSCH_ServingCellConfig__nrofHARQ_ProcessesForPDSCH_n4
;
break
;
case
6
:
*
pdsch_servingcellconfig
->
nrofHARQ_ProcessesForPDSCH
=
NR_PDSCH_ServingCellConfig__nrofHARQ_ProcessesForPDSCH_n6
;
break
;
case
10
:
*
pdsch_servingcellconfig
->
nrofHARQ_ProcessesForPDSCH
=
NR_PDSCH_ServingCellConfig__nrofHARQ_ProcessesForPDSCH_n10
;
break
;
case
12
:
*
pdsch_servingcellconfig
->
nrofHARQ_ProcessesForPDSCH
=
NR_PDSCH_ServingCellConfig__nrofHARQ_ProcessesForPDSCH_n12
;
break
;
case
16
:
*
pdsch_servingcellconfig
->
nrofHARQ_ProcessesForPDSCH
=
NR_PDSCH_ServingCellConfig__nrofHARQ_ProcessesForPDSCH_n16
;
break
;
case
32
:
*
pdsch_servingcellconfig
->
nrofHARQ_ProcessesForPDSCH
=
NR_PDSCH_ServingCellConfig__nrofHARQ_ProcessesForPDSCH_n16
;
pdsch_servingcellconfig
->
ext3
=
calloc
(
1
,
sizeof
(
*
pdsch_servingcellconfig
->
ext3
));
pdsch_servingcellconfig
->
ext3
->
nrofHARQ_ProcessesForPDSCH_v1700
=
calloc
(
1
,
sizeof
(
*
pdsch_servingcellconfig
->
ext3
->
nrofHARQ_ProcessesForPDSCH_v1700
));
*
pdsch_servingcellconfig
->
ext3
->
nrofHARQ_ProcessesForPDSCH_v1700
=
NR_PDSCH_ServingCellConfig__ext3__nrofHARQ_ProcessesForPDSCH_v1700_n32
;
break
;
default:
//num dl harqprocesses = 8 if IEs nrofHARQ_ProcessesForPDSCH and
//nrofHARQ_ProcessesForPDSCH_v1700 are not present
free_and_zero
(
pdsch_servingcellconfig
->
nrofHARQ_ProcessesForPDSCH
);
break
;
}
int
num_ulharq
=
*
pusch_scc
->
ext3
->
nrofHARQ_ProcessesForPUSCH_r17
;
if
(
num_ulharq
==
32
)
{
*
pusch_scc
->
ext3
->
nrofHARQ_ProcessesForPUSCH_r17
=
NR_PUSCH_ServingCellConfig__ext3__nrofHARQ_ProcessesForPUSCH_r17_n32
;
}
else
{
//If the IE is not present number of ul harq processes is 16
free_and_zero
(
pusch_scc
->
ext3
->
nrofHARQ_ProcessesForPUSCH_r17
);
free_and_zero
(
pusch_scc
->
ext3
);
}
}
/* This function checks dedicated serving cell configuration and performs fixes as needed */
void
fix_scd
(
NR_ServingCellConfig_t
*
scd
)
{
...
...
@@ -645,6 +707,10 @@ void fix_scd(NR_ServingCellConfig_t *scd) {
}
}
//SEt correct IE values based on harq values configured.
fix_harq_cfg
(
scd
->
pdsch_ServingCellConfig
->
choice
.
setup
,
scd
->
uplinkConfig
->
pusch_ServingCellConfig
->
choice
.
setup
);
}
void
RCconfig_nr_prs
(
void
)
...
...
openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_primitives.c
View file @
072567e5
...
...
@@ -2348,19 +2348,7 @@ NR_UE_info_t *add_new_nr_ue(gNB_MAC_INST *nr_mac, rnti_t rntiP, NR_CellGroupConf
// pdsch_servingcellconfig == NULL in SA -> will create default (8) number of HARQ processes
create_dl_harq_list
(
sched_ctrl
,
dl_bwp
->
pdsch_servingcellconfig
);
int
nrofHARQ
=
16
;
if
(
ul_bwp
&&
ul_bwp
->
pusch_servingcellconfig
)
nrofHARQ
=
get_nrofHARQ_ProcessesForPUSCH
(
ul_bwp
->
pusch_servingcellconfig
->
ext3
);
LOG_D
(
NR_MAC
,
"Num UL HARQ: %d
\n
"
,
nrofHARQ
);
// add all available UL HARQ processes for this UE
// nb of ul harq processes not configurable
create_nr_list
(
&
sched_ctrl
->
available_ul_harq
,
nrofHARQ
);
for
(
int
harq
=
0
;
harq
<
nrofHARQ
;
harq
++
)
add_tail_nr_list
(
&
sched_ctrl
->
available_ul_harq
,
harq
);
create_nr_list
(
&
sched_ctrl
->
feedback_ul_harq
,
nrofHARQ
);
create_nr_list
(
&
sched_ctrl
->
retrans_ul_harq
,
nrofHARQ
);
create_ul_harq_list
(
sched_ctrl
,
(
ul_bwp
?
ul_bwp
->
pusch_servingcellconfig
:
NULL
));
reset_srs_stats
(
UE
);
...
...
@@ -2410,6 +2398,35 @@ void set_sched_pucch_list(NR_UE_sched_ctrl_t *sched_ctrl,
}
}
void
create_ul_harq_list
(
NR_UE_sched_ctrl_t
*
sched_ctrl
,
const
NR_PUSCH_ServingCellConfig_t
*
pusch
)
{
int
nrofHARQ
=
pusch
?
get_nrofHARQ_ProcessesForPUSCH
(
pusch
->
ext3
)
:
16
;
LOG_I
(
NR_MAC
,
"Num UL HARQ:%d
\n
"
,
nrofHARQ
);
if
(
sched_ctrl
->
available_ul_harq
.
len
==
0
)
{
// add all available UL HARQ processes for this UE
// nb of ul harq processes not configurable
create_nr_list
(
&
sched_ctrl
->
available_ul_harq
,
nrofHARQ
);
for
(
int
harq
=
0
;
harq
<
nrofHARQ
;
harq
++
)
add_tail_nr_list
(
&
sched_ctrl
->
available_ul_harq
,
harq
);
create_nr_list
(
&
sched_ctrl
->
feedback_ul_harq
,
nrofHARQ
);
create_nr_list
(
&
sched_ctrl
->
retrans_ul_harq
,
nrofHARQ
);
}
else
if
(
sched_ctrl
->
available_ul_harq
.
len
==
nrofHARQ
)
{
LOG_D
(
NR_MAC
,
"nrofHARQ %d already configured
\n
"
,
nrofHARQ
);
}
else
{
const
int
old_nrofHARQ
=
sched_ctrl
->
available_ul_harq
.
len
;
AssertFatal
(
nrofHARQ
>
old_nrofHARQ
,
"cannot resize HARQ list to be smaller (nrofHARQ %d, old_nrofHARQ %d)
\n
"
,
nrofHARQ
,
old_nrofHARQ
);
resize_nr_list
(
&
sched_ctrl
->
available_ul_harq
,
nrofHARQ
);
for
(
int
harq
=
old_nrofHARQ
;
harq
<
nrofHARQ
;
harq
++
)
add_tail_nr_list
(
&
sched_ctrl
->
available_ul_harq
,
harq
);
resize_nr_list
(
&
sched_ctrl
->
feedback_ul_harq
,
nrofHARQ
);
resize_nr_list
(
&
sched_ctrl
->
retrans_ul_harq
,
nrofHARQ
);
}
}
void
create_dl_harq_list
(
NR_UE_sched_ctrl_t
*
sched_ctrl
,
const
NR_PDSCH_ServingCellConfig_t
*
pdsch
)
{
const
int
nrofHARQ
=
pdsch
&&
pdsch
->
nrofHARQ_ProcessesForPDSCH
?
...
...
@@ -2832,6 +2849,7 @@ void nr_mac_update_timers(module_id_t module_id,
if
(
get_softmodem_params
()
->
sa
)
{
// add all available DL HARQ processes for this UE in SA
create_dl_harq_list
(
sched_ctrl
,
UE
->
current_DL_BWP
.
pdsch_servingcellconfig
);
create_ul_harq_list
(
sched_ctrl
,
UE
->
current_UL_BWP
.
pusch_servingcellconfig
);
}
}
}
...
...
openair2/LAYER2/NR_MAC_gNB/mac_proto.h
View file @
072567e5
...
...
@@ -366,6 +366,9 @@ void nr_rx_sdu(const module_id_t gnb_mod_idP,
void
create_dl_harq_list
(
NR_UE_sched_ctrl_t
*
sched_ctrl
,
const
NR_PDSCH_ServingCellConfig_t
*
pdsch
);
void
create_ul_harq_list
(
NR_UE_sched_ctrl_t
*
sched_ctrl
,
const
NR_PUSCH_ServingCellConfig_t
*
pusch
);
void
reset_dl_harq_list
(
NR_UE_sched_ctrl_t
*
sched_ctrl
);
void
reset_ul_harq_list
(
NR_UE_sched_ctrl_t
*
sched_ctrl
);
...
...
openair2/RRC/NR/nr_rrc_config.c
View file @
072567e5
This diff is collapsed.
Click to expand it.
targets/PROJECTS/GENERIC-NR-5GC/CONF/gnb.sa.band66.fr1.25PRB.usrpx300.conf
View file @
072567e5
...
...
@@ -151,6 +151,19 @@ gNBs =
);
# Dedicated Serving Cell Configuration
servingCellConfigDedicated
= (
{
nrofHARQ
-
ProcessesForPDSCH
=
32
;
nrofHARQ
-
ProcessesForPUSCH
=
32
;
}
);
# ------- SCTP definitions
SCTP
:
{
...
...
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