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
90fa3d55
Commit
90fa3d55
authored
May 29, 2024
by
Thomas Schlichter
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
gNB: make SR timers configurable in CONF file
parent
4cdf4d61
Changes
6
Show whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
165 additions
and
18 deletions
+165
-18
openair1/SIMULATION/NR_PHY/dlsim.c
openair1/SIMULATION/NR_PHY/dlsim.c
+4
-1
openair1/SIMULATION/NR_PHY/ulsim.c
openair1/SIMULATION/NR_PHY/ulsim.c
+4
-1
openair2/GNB_APP/gnb_config.c
openair2/GNB_APP/gnb_config.c
+14
-0
openair2/GNB_APP/gnb_paramdef.h
openair2/GNB_APP/gnb_paramdef.h
+24
-0
openair2/LAYER2/NR_MAC_gNB/nr_mac_gNB.h
openair2/LAYER2/NR_MAC_gNB/nr_mac_gNB.h
+7
-0
openair2/RRC/NR/nr_rrc_config.c
openair2/RRC/NR/nr_rrc_config.c
+112
-16
No files found.
openair1/SIMULATION/NR_PHY/dlsim.c
View file @
90fa3d55
...
...
@@ -643,7 +643,10 @@ int main(int argc, char **argv)
.
minRXTXTIME
=
6
,
.
do_CSIRS
=
0
,
.
do_SRS
=
0
,
.
force_256qam_off
=
false
};
.
force_256qam_off
=
false
,
.
timer_config
.
sr_ProhibitTimer
=
0
,
.
timer_config
.
sr_TransMax
=
64
,
.
timer_config
.
sr_ProhibitTimer_v1700
=
0
};
RC
.
nb_nr_macrlc_inst
=
1
;
RC
.
nb_nr_mac_CC
=
(
int
*
)
malloc
(
RC
.
nb_nr_macrlc_inst
*
sizeof
(
int
));
...
...
openair1/SIMULATION/NR_PHY/ulsim.c
View file @
90fa3d55
...
...
@@ -607,7 +607,10 @@ int main(int argc, char *argv[])
.
minRXTXTIME
=
0
,
.
do_CSIRS
=
0
,
.
do_SRS
=
0
,
.
force_256qam_off
=
false
};
.
force_256qam_off
=
false
,
.
timer_config
.
sr_ProhibitTimer
=
0
,
.
timer_config
.
sr_TransMax
=
64
,
.
timer_config
.
sr_ProhibitTimer_v1700
=
0
};
RC
.
nb_nr_macrlc_inst
=
1
;
RC
.
nb_nr_mac_CC
=
(
int
*
)
malloc
(
RC
.
nb_nr_macrlc_inst
*
sizeof
(
int
));
...
...
openair2/GNB_APP/gnb_config.c
View file @
90fa3d55
...
...
@@ -1321,6 +1321,20 @@ void RCconfig_nr_macrlc(configmodule_interface_t *cfg)
config
.
force_256qam_off
?
"force off"
:
"may be on"
,
config
.
use_deltaMCS
?
"on"
:
"off"
);
paramdef_t
Timers_Params
[]
=
GNB_TIMERS_PARAMS_DESC
;
char
aprefix
[
MAX_OPTNAME_SIZE
*
2
+
8
];
sprintf
(
aprefix
,
"%s.[0].%s"
,
GNB_CONFIG_STRING_GNB_LIST
,
GNB_CONFIG_STRING_TIMERS_CONFIG
);
config_get
(
config_get_if
(),
Timers_Params
,
sizeofArray
(
Timers_Params
),
aprefix
);
config
.
timer_config
.
sr_ProhibitTimer
=
*
Timers_Params
[
GNB_TIMERS_SR_PROHIBIT_TIMER_IDX
].
iptr
;
config
.
timer_config
.
sr_TransMax
=
*
Timers_Params
[
GNB_TIMERS_SR_TRANS_MAX_IDX
].
iptr
;
config
.
timer_config
.
sr_ProhibitTimer_v1700
=
*
Timers_Params
[
GNB_TIMERS_SR_PROHIBIT_TIMER_V1700_IDX
].
iptr
;
LOG_I
(
GNB_APP
,
"sr_ProhibitTimer %d, sr_TransMax %d, sr_ProhibitTimer_v1700 %d
\n
"
,
config
.
timer_config
.
sr_ProhibitTimer
,
config
.
timer_config
.
sr_TransMax
,
config
.
timer_config
.
sr_ProhibitTimer_v1700
);
NR_ServingCellConfigCommon_t
*
scc
=
get_scc_config
(
cfg
,
config
.
minRXTXTIME
);
//xer_fprint(stdout, &asn_DEF_NR_ServingCellConfigCommon, scc);
NR_ServingCellConfig_t
*
scd
=
get_scd_config
(
cfg
);
...
...
openair2/GNB_APP/gnb_paramdef.h
View file @
90fa3d55
...
...
@@ -323,6 +323,30 @@ typedef enum {
#define GNB_AMF_IPV4_ADDRESS_IDX 0
/*---------------------------------------------------------------------------------------------------------------------------------------*/
/*---------------------------------------------------------------------------------------------------------------------------------------*/
/* TIMERS configuration parameters section name */
#define GNB_CONFIG_STRING_TIMERS_CONFIG "TIMERS"
/* TIMERS configuration parameters names */
#define GNB_CONFIG_STRING_TIMERS_SR_PROHIBIT_TIMER "sr_ProhibitTimer"
#define GNB_CONFIG_STRING_TIMERS_SR_TRANS_MAX "sr_TransMax"
#define GNB_CONFIG_STRING_TIMERS_SR_PROHIBIT_TIMER_V1700 "sr_ProhibitTimer_v1700"
/*-------------------------------------------------------------------------------------------------------------------------------------*/
/* TIMERS configuration parameters */
/* optname helpstr paramflags XXXptr defXXXval type numelt */
/*-------------------------------------------------------------------------------------------------------------------------------------*/
#define GNB_TIMERS_PARAMS_DESC { \
{GNB_CONFIG_STRING_TIMERS_SR_PROHIBIT_TIMER, NULL, 0, .iptr=NULL, .defintval=0, TYPE_INT, 0}, \
{GNB_CONFIG_STRING_TIMERS_SR_TRANS_MAX, NULL, 0, .iptr=NULL, .defintval=64, TYPE_INT, 0}, \
{GNB_CONFIG_STRING_TIMERS_SR_PROHIBIT_TIMER_V1700, NULL, 0, .iptr=NULL, .defintval=0, TYPE_INT, 0}, \
}
#define GNB_TIMERS_SR_PROHIBIT_TIMER_IDX 0
#define GNB_TIMERS_SR_TRANS_MAX_IDX 1
#define GNB_TIMERS_SR_PROHIBIT_TIMER_V1700_IDX 2
/*---------------------------------------------------------------------------------------------------------------------------------------*/
/*---------------------------------------------------------------------------------------------------------------------------------------*/
/* SCTP configuration parameters section name */
...
...
openair2/LAYER2/NR_MAC_gNB/nr_mac_gNB.h
View file @
90fa3d55
...
...
@@ -128,6 +128,12 @@ typedef struct nr_pdsch_AntennaPorts_t {
int
XP
;
}
nr_pdsch_AntennaPorts_t
;
typedef
struct
nr_mac_timers
{
int
sr_ProhibitTimer
;
int
sr_TransMax
;
int
sr_ProhibitTimer_v1700
;
}
nr_mac_timers_t
;
typedef
struct
nr_mac_config_t
{
int
sib1_tda
;
nr_pdsch_AntennaPorts_t
pdsch_AntennaPorts
;
...
...
@@ -140,6 +146,7 @@ typedef struct nr_mac_config_t {
bool
use_deltaMCS
;
//int pusch_TargetSNRx10;
//int pucch_TargetSNRx10;
nr_mac_timers_t
timer_config
;
}
nr_mac_config_t
;
typedef
struct
NR_preamble_ue
{
...
...
openair2/RRC/NR/nr_rrc_config.c
View file @
90fa3d55
...
...
@@ -2282,7 +2282,102 @@ static NR_PhysicalCellGroupConfig_t *configure_phy_cellgroup(void)
return
physicalCellGroupConfig
;
}
static
NR_MAC_CellGroupConfig_t
*
configure_mac_cellgroup
(
void
)
static
long
*
get_sr_ProhibitTimer
(
const
nr_mac_timers_t
*
timer_config
)
{
if
(
timer_config
->
sr_ProhibitTimer
==
0
)
return
NULL
;
long
*
ret
=
calloc
(
1
,
sizeof
(
*
ret
));
switch
(
timer_config
->
sr_ProhibitTimer
)
{
case
1
:
*
ret
=
NR_SchedulingRequestToAddMod__sr_ProhibitTimer_ms1
;
break
;
case
2
:
*
ret
=
NR_SchedulingRequestToAddMod__sr_ProhibitTimer_ms2
;
break
;
case
4
:
*
ret
=
NR_SchedulingRequestToAddMod__sr_ProhibitTimer_ms4
;
break
;
case
8
:
*
ret
=
NR_SchedulingRequestToAddMod__sr_ProhibitTimer_ms8
;
break
;
case
16
:
*
ret
=
NR_SchedulingRequestToAddMod__sr_ProhibitTimer_ms16
;
break
;
case
32
:
*
ret
=
NR_SchedulingRequestToAddMod__sr_ProhibitTimer_ms32
;
break
;
case
64
:
*
ret
=
NR_SchedulingRequestToAddMod__sr_ProhibitTimer_ms64
;
break
;
case
128
:
*
ret
=
NR_SchedulingRequestToAddMod__sr_ProhibitTimer_ms128
;
break
;
default:
AssertFatal
(
1
==
0
,
"Invalid value configured for sr_ProhibitTimer!
\n
"
);
}
return
ret
;
}
static
long
get_sr_TransMax
(
const
nr_mac_timers_t
*
timer_config
)
{
switch
(
timer_config
->
sr_TransMax
)
{
case
4
:
return
NR_SchedulingRequestToAddMod__sr_TransMax_n4
;
case
8
:
return
NR_SchedulingRequestToAddMod__sr_TransMax_n8
;
case
16
:
return
NR_SchedulingRequestToAddMod__sr_TransMax_n16
;
case
32
:
return
NR_SchedulingRequestToAddMod__sr_TransMax_n32
;
case
64
:
return
NR_SchedulingRequestToAddMod__sr_TransMax_n64
;
default:
AssertFatal
(
1
==
0
,
"Invalid value configured for sr_TransMax!
\n
"
);
}
}
static
long
*
get_sr_ProhibitTimer_v1700
(
const
nr_mac_timers_t
*
timer_config
)
{
if
(
timer_config
->
sr_ProhibitTimer_v1700
==
0
)
return
NULL
;
long
*
ret
=
calloc
(
1
,
sizeof
(
*
ret
));
switch
(
timer_config
->
sr_ProhibitTimer_v1700
)
{
case
192
:
*
ret
=
NR_SchedulingRequestToAddModExt_v1700__sr_ProhibitTimer_v1700_ms192
;
break
;
case
256
:
*
ret
=
NR_SchedulingRequestToAddModExt_v1700__sr_ProhibitTimer_v1700_ms256
;
break
;
case
320
:
*
ret
=
NR_SchedulingRequestToAddModExt_v1700__sr_ProhibitTimer_v1700_ms320
;
break
;
case
384
:
*
ret
=
NR_SchedulingRequestToAddModExt_v1700__sr_ProhibitTimer_v1700_ms384
;
break
;
case
448
:
*
ret
=
NR_SchedulingRequestToAddModExt_v1700__sr_ProhibitTimer_v1700_ms448
;
break
;
case
512
:
*
ret
=
NR_SchedulingRequestToAddModExt_v1700__sr_ProhibitTimer_v1700_ms512
;
break
;
case
576
:
*
ret
=
NR_SchedulingRequestToAddModExt_v1700__sr_ProhibitTimer_v1700_ms576
;
break
;
case
640
:
*
ret
=
NR_SchedulingRequestToAddModExt_v1700__sr_ProhibitTimer_v1700_ms640
;
break
;
case
1082
:
*
ret
=
NR_SchedulingRequestToAddModExt_v1700__sr_ProhibitTimer_v1700_ms1082
;
break
;
default:
AssertFatal
(
1
==
0
,
"Invalid value configured for sr_ProhibitTimer_v1700!
\n
"
);
}
return
ret
;
}
static
NR_MAC_CellGroupConfig_t
*
configure_mac_cellgroup
(
const
nr_mac_timers_t
*
timer_config
)
{
NR_MAC_CellGroupConfig_t
*
mac_CellGroupConfig
=
calloc
(
1
,
sizeof
(
*
mac_CellGroupConfig
));
AssertFatal
(
mac_CellGroupConfig
!=
NULL
,
"Couldn't allocate mac-CellGroupConfig. Out of memory!
\n
"
);
...
...
@@ -2303,20 +2398,21 @@ static NR_MAC_CellGroupConfig_t *configure_mac_cellgroup(void)
mac_CellGroupConfig
->
schedulingRequestConfig
->
schedulingRequestToAddModList
=
CALLOC
(
1
,
sizeof
(
*
mac_CellGroupConfig
->
schedulingRequestConfig
->
schedulingRequestToAddModList
));
struct
NR_SchedulingRequestToAddMod
*
schedulingrequestlist
=
CALLOC
(
1
,
sizeof
(
*
schedulingrequestlist
));
schedulingrequestlist
->
schedulingRequestId
=
0
;
schedulingrequestlist
->
sr_ProhibitTimer
=
NULL
;
schedulingrequestlist
->
sr_TransMax
=
NR_SchedulingRequestToAddMod__sr_TransMax_n64
;
schedulingrequestlist
->
sr_ProhibitTimer
=
get_sr_ProhibitTimer
(
timer_config
)
;
schedulingrequestlist
->
sr_TransMax
=
get_sr_TransMax
(
timer_config
)
;
asn1cSeqAdd
(
&
(
mac_CellGroupConfig
->
schedulingRequestConfig
->
schedulingRequestToAddModList
->
list
),
schedulingrequestlist
);
if
(
timer_config
->
sr_ProhibitTimer_v1700
!=
0
)
{
mac_CellGroupConfig
->
ext4
=
calloc
(
1
,
sizeof
(
*
mac_CellGroupConfig
->
ext4
));
mac_CellGroupConfig
->
ext4
->
schedulingRequestConfig_v1700
=
calloc
(
1
,
sizeof
(
*
mac_CellGroupConfig
->
ext4
->
schedulingRequestConfig_v1700
));
mac_CellGroupConfig
->
ext4
->
schedulingRequestConfig_v1700
->
schedulingRequestToAddModListExt_v1700
=
calloc
(
1
,
sizeof
(
*
mac_CellGroupConfig
->
ext4
->
schedulingRequestConfig_v1700
->
schedulingRequestToAddModListExt_v1700
));
struct
NR_SchedulingRequestToAddModExt_v1700
*
schedulingrequestlist_v1700
=
calloc
(
1
,
sizeof
(
*
schedulingrequestlist_v1700
));
schedulingrequestlist_v1700
->
sr_ProhibitTimer_v1700
=
calloc
(
1
,
sizeof
(
*
schedulingrequestlist_v1700
->
sr_ProhibitTimer_v1700
));
*
schedulingrequestlist_v1700
->
sr_ProhibitTimer_v1700
=
NR_SchedulingRequestToAddModExt_v1700__sr_ProhibitTimer_v1700_ms576
;
schedulingrequestlist_v1700
->
sr_ProhibitTimer_v1700
=
get_sr_ProhibitTimer_v1700
(
timer_config
);
asn1cSeqAdd
(
&
(
mac_CellGroupConfig
->
ext4
->
schedulingRequestConfig_v1700
->
schedulingRequestToAddModListExt_v1700
->
list
),
schedulingrequestlist_v1700
);
}
mac_CellGroupConfig
->
skipUplinkTxDynamic
=
false
;
mac_CellGroupConfig
->
ext1
=
NULL
;
...
...
@@ -2584,7 +2680,7 @@ NR_CellGroupConfig_t *get_initial_cellGroupConfig(int uid,
cellGroupConfig
->
rlc_BearerToReleaseList
=
NULL
;
/* mac CellGroup Config */
cellGroupConfig
->
mac_CellGroupConfig
=
configure_mac_cellgroup
();
cellGroupConfig
->
mac_CellGroupConfig
=
configure_mac_cellgroup
(
&
configuration
->
timer_config
);
cellGroupConfig
->
physicalCellGroupConfig
=
configure_phy_cellgroup
();
...
...
@@ -2798,7 +2894,7 @@ NR_CellGroupConfig_t *get_default_secondaryCellGroup(const NR_ServingCellConfigC
secondaryCellGroup
->
rlc_BearerToAddModList
=
calloc
(
1
,
sizeof
(
*
secondaryCellGroup
->
rlc_BearerToAddModList
));
asn1cSeqAdd
(
&
secondaryCellGroup
->
rlc_BearerToAddModList
->
list
,
RLC_BearerConfig
);
secondaryCellGroup
->
mac_CellGroupConfig
=
configure_mac_cellgroup
();
secondaryCellGroup
->
mac_CellGroupConfig
=
configure_mac_cellgroup
(
&
configuration
->
timer_config
);
secondaryCellGroup
->
physicalCellGroupConfig
=
configure_phy_cellgroup
();
secondaryCellGroup
->
spCellConfig
=
calloc
(
1
,
sizeof
(
*
secondaryCellGroup
->
spCellConfig
));
secondaryCellGroup
->
spCellConfig
->
servCellIndex
=
calloc
(
1
,
sizeof
(
*
secondaryCellGroup
->
spCellConfig
->
servCellIndex
));
...
...
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