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
f282402e
Commit
f282402e
authored
Feb 02, 2026
by
Robert Schmidt
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Move power configuration into struct
Group related parameters and simplify setup of these parameters.
parent
15ac13e8
Changes
4
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
41 additions
and
39 deletions
+41
-39
openair2/GNB_APP/gnb_config.c
openair2/GNB_APP/gnb_config.c
+19
-14
openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_uci.c
openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_uci.c
+4
-4
openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_ulsch.c
openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_ulsch.c
+5
-5
openair2/LAYER2/NR_MAC_gNB/nr_mac_gNB.h
openair2/LAYER2/NR_MAC_gNB/nr_mac_gNB.h
+13
-16
No files found.
openair2/GNB_APP/gnb_config.c
View file @
f282402e
...
@@ -1492,28 +1492,33 @@ void RCconfig_nr_macrlc(configmodule_interface_t *cfg)
...
@@ -1492,28 +1492,33 @@ void RCconfig_nr_macrlc(configmodule_interface_t *cfg)
AssertFatal
(
config
.
first_active_bwp
<=
config
.
num_additional_bwps
,
"1st active BWP does not belog to the configured BWPs
\n
"
);
AssertFatal
(
config
.
first_active_bwp
<=
config
.
num_additional_bwps
,
"1st active BWP does not belog to the configured BWPs
\n
"
);
if
(
MacRLC_ParamList
.
numelt
>
0
)
{
if
(
MacRLC_ParamList
.
numelt
>
0
)
{
AssertFatal
(
MacRLC_ParamList
.
numelt
==
1
,
"only one MACRLCs section supported!
\n
"
);
AssertFatal
(
MacRLC_ParamList
.
numelt
==
RC
.
nb_nr_macrlc_inst
,
"only one MACRLCs section supported!
\n
"
);
/* NR RLC config is needed by mac_top_init_gNB() */
/* NR RLC config is needed by mac_top_init_gNB() */
nr_rlc_configuration_t
default_rlc_config
;
nr_rlc_configuration_t
default_rlc_config
;
config_rlc
(
cfg
,
&
default_rlc_config
);
config_rlc
(
cfg
,
&
default_rlc_config
);
config
.
pusch
.
target_snrx10
=
*
(
MacRLC_ParamList
.
paramarray
[
0
][
MACRLC_PUSCHTARGETSNRX10_IDX
].
iptr
);
config
.
pusch
.
rssi_threshold
=
*
(
MacRLC_ParamList
.
paramarray
[
0
][
MACRLC_PUSCH_RSSI_THRES_IDX
].
iptr
);
config
.
pucch
.
rssi_threshold
=
*
(
MacRLC_ParamList
.
paramarray
[
0
][
MACRLC_PUCCH_RSSI_THRES_IDX
].
iptr
);
config
.
pucch
.
target_snrx10
=
*
(
MacRLC_ParamList
.
paramarray
[
0
][
MACRLC_PUCCHTARGETSNRX10_IDX
].
iptr
);
config
.
ul_prbblack_SNR_threshold
=
*
(
MacRLC_ParamList
.
paramarray
[
0
][
MACRLC_UL_PRBBLACK_SNR_THRESHOLD_IDX
].
iptr
);
config
.
pucch
.
failure_thres
=
*
(
MacRLC_ParamList
.
paramarray
[
0
][
MACRLC_PUCCHFAILURETHRES_IDX
].
iptr
);
config
.
pusch
.
failure_thres
=
*
(
MacRLC_ParamList
.
paramarray
[
0
][
MACRLC_PUSCHFAILURETHRES_IDX
].
iptr
);
LOG_I
(
NR_MAC
,
"PUSCH Target %d RSSI thresh %d Failure %d, PUCCH Target %d RSSI thresh %d Failure %d
\n
"
,
config
.
pusch
.
target_snrx10
,
config
.
pusch
.
rssi_threshold
,
config
.
pusch
.
failure_thres
,
config
.
pucch
.
target_snrx10
,
config
.
pucch
.
rssi_threshold
,
config
.
pucch
.
failure_thres
);
ngran_node_t
node_type
=
get_node_type
();
ngran_node_t
node_type
=
get_node_type
();
mac_top_init_gNB
(
node_type
,
scc
,
&
config
,
&
default_rlc_config
);
mac_top_init_gNB
(
node_type
,
scc
,
&
config
,
&
default_rlc_config
);
for
(
j
=
0
;
j
<
RC
.
nb_nr_macrlc_inst
;
j
++
)
{
for
(
j
=
0
;
j
<
RC
.
nb_nr_macrlc_inst
;
j
++
)
{
RC
.
nrmac
[
j
]
->
pusch_target_snrx10
=
*
(
MacRLC_ParamList
.
paramarray
[
j
][
MACRLC_PUSCHTARGETSNRX10_IDX
].
iptr
);
RC
.
nrmac
[
j
]
->
pusch_rssi_threshold
=
*
(
MacRLC_ParamList
.
paramarray
[
j
][
MACRLC_PUSCH_RSSI_THRES_IDX
].
iptr
);
RC
.
nrmac
[
j
]
->
pucch_rssi_threshold
=
*
(
MacRLC_ParamList
.
paramarray
[
j
][
MACRLC_PUCCH_RSSI_THRES_IDX
].
iptr
);
RC
.
nrmac
[
j
]
->
pucch_target_snrx10
=
*
(
MacRLC_ParamList
.
paramarray
[
j
][
MACRLC_PUCCHTARGETSNRX10_IDX
].
iptr
);
RC
.
nrmac
[
j
]
->
ul_prbblack_SNR_threshold
=
*
(
MacRLC_ParamList
.
paramarray
[
j
][
MACRLC_UL_PRBBLACK_SNR_THRESHOLD_IDX
].
iptr
);
RC
.
nrmac
[
j
]
->
pucch_failure_thres
=
*
(
MacRLC_ParamList
.
paramarray
[
j
][
MACRLC_PUCCHFAILURETHRES_IDX
].
iptr
);
RC
.
nrmac
[
j
]
->
pusch_failure_thres
=
*
(
MacRLC_ParamList
.
paramarray
[
j
][
MACRLC_PUSCHFAILURETHRES_IDX
].
iptr
);
LOG_I
(
NR_MAC
,
"PUSCH Target %d, PUCCH Target %d, PUCCH Failure %d, PUSCH Failure %d
\n
"
,
RC
.
nrmac
[
j
]
->
pusch_target_snrx10
,
RC
.
nrmac
[
j
]
->
pucch_target_snrx10
,
RC
.
nrmac
[
j
]
->
pucch_failure_thres
,
RC
.
nrmac
[
j
]
->
pusch_failure_thres
);
if
(
strcmp
(
*
(
MacRLC_ParamList
.
paramarray
[
j
][
MACRLC_TRANSPORT_N_PREFERENCE_IDX
].
strptr
),
"local_RRC"
)
==
0
)
{
if
(
strcmp
(
*
(
MacRLC_ParamList
.
paramarray
[
j
][
MACRLC_TRANSPORT_N_PREFERENCE_IDX
].
strptr
),
"local_RRC"
)
==
0
)
{
// check number of instances is same as RRC/PDCP
// check number of instances is same as RRC/PDCP
...
...
openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_uci.c
View file @
f282402e
...
@@ -879,7 +879,7 @@ static NR_UE_harq_t *find_harq(frame_t frame, slot_t slot, NR_UE_info_t * UE, in
...
@@ -879,7 +879,7 @@ static NR_UE_harq_t *find_harq(frame_t frame, slot_t slot, NR_UE_info_t * UE, in
void
handle_nr_uci_pucch_0_1
(
module_id_t
mod_id
,
frame_t
frame
,
slot_t
slot
,
const
nfapi_nr_uci_pucch_pdu_format_0_1_t
*
uci_01
)
void
handle_nr_uci_pucch_0_1
(
module_id_t
mod_id
,
frame_t
frame
,
slot_t
slot
,
const
nfapi_nr_uci_pucch_pdu_format_0_1_t
*
uci_01
)
{
{
gNB_MAC_INST
*
nrmac
=
RC
.
nrmac
[
mod_id
];
gNB_MAC_INST
*
nrmac
=
RC
.
nrmac
[
mod_id
];
int
rssi_threshold
=
nrmac
->
pucch_
rssi_threshold
;
int
rssi_threshold
=
nrmac
->
radio_config
.
pucch
.
rssi_threshold
;
NR_SCHED_LOCK
(
&
nrmac
->
sched_lock
);
NR_SCHED_LOCK
(
&
nrmac
->
sched_lock
);
NR_UE_info_t
*
UE
=
find_nr_UE
(
&
nrmac
->
UE_info
,
uci_01
->
rnti
);
NR_UE_info_t
*
UE
=
find_nr_UE
(
&
nrmac
->
UE_info
,
uci_01
->
rnti
);
bool
is_ra
=
false
;
bool
is_ra
=
false
;
...
@@ -932,7 +932,7 @@ void handle_nr_uci_pucch_0_1(module_id_t mod_id, frame_t frame, slot_t slot, con
...
@@ -932,7 +932,7 @@ void handle_nr_uci_pucch_0_1(module_id_t mod_id, frame_t frame, slot_t slot, con
// tpc (power control) only if we received AckNack
// tpc (power control) only if we received AckNack
if
(
uci_01
->
harq
.
harq_confidence_level
==
0
&&
uci_01
->
ul_cqi
!=
0xff
)
{
if
(
uci_01
->
harq
.
harq_confidence_level
==
0
&&
uci_01
->
ul_cqi
!=
0xff
)
{
sched_ctrl
->
pucch_snrx10
=
uci_01
->
ul_cqi
*
5
-
640
;
sched_ctrl
->
pucch_snrx10
=
uci_01
->
ul_cqi
*
5
-
640
;
sched_ctrl
->
tpc1
=
nr_get_tpc
(
nrmac
->
pucch_
target_snrx10
,
uci_01
->
ul_cqi
,
30
,
0
);
sched_ctrl
->
tpc1
=
nr_get_tpc
(
nrmac
->
radio_config
.
pucch
.
target_snrx10
,
uci_01
->
ul_cqi
,
30
,
0
);
}
else
}
else
sched_ctrl
->
tpc1
=
1
;
sched_ctrl
->
tpc1
=
1
;
sched_ctrl
->
tpc1
=
nr_limit_tpc
(
sched_ctrl
->
tpc1
,
uci_01
->
rssi
,
rssi_threshold
);
sched_ctrl
->
tpc1
=
nr_limit_tpc
(
sched_ctrl
->
tpc1
,
uci_01
->
rssi
,
rssi_threshold
);
...
@@ -954,7 +954,7 @@ void handle_nr_uci_pucch_2_3_4(module_id_t mod_id, frame_t frame, slot_t slot, c
...
@@ -954,7 +954,7 @@ void handle_nr_uci_pucch_2_3_4(module_id_t mod_id, frame_t frame, slot_t slot, c
{
{
gNB_MAC_INST
*
nrmac
=
RC
.
nrmac
[
mod_id
];
gNB_MAC_INST
*
nrmac
=
RC
.
nrmac
[
mod_id
];
NR_SCHED_LOCK
(
&
nrmac
->
sched_lock
);
NR_SCHED_LOCK
(
&
nrmac
->
sched_lock
);
int
rssi_threshold
=
nrmac
->
pucch_
rssi_threshold
;
int
rssi_threshold
=
nrmac
->
radio_config
.
pucch
.
rssi_threshold
;
NR_UE_info_t
*
UE
=
find_nr_UE
(
&
nrmac
->
UE_info
,
uci_234
->
rnti
);
NR_UE_info_t
*
UE
=
find_nr_UE
(
&
nrmac
->
UE_info
,
uci_234
->
rnti
);
if
(
!
UE
)
{
if
(
!
UE
)
{
...
@@ -969,7 +969,7 @@ void handle_nr_uci_pucch_2_3_4(module_id_t mod_id, frame_t frame, slot_t slot, c
...
@@ -969,7 +969,7 @@ void handle_nr_uci_pucch_2_3_4(module_id_t mod_id, frame_t frame, slot_t slot, c
// TODO PUCCH2 SNR computation is not correct -> ignore the following
// TODO PUCCH2 SNR computation is not correct -> ignore the following
if
(
uci_234
->
ul_cqi
!=
0xff
)
{
if
(
uci_234
->
ul_cqi
!=
0xff
)
{
sched_ctrl
->
pucch_snrx10
=
uci_234
->
ul_cqi
*
5
-
640
;
sched_ctrl
->
pucch_snrx10
=
uci_234
->
ul_cqi
*
5
-
640
;
sched_ctrl
->
tpc1
=
nr_get_tpc
(
nrmac
->
pucch_
target_snrx10
,
uci_234
->
ul_cqi
,
30
,
0
);
sched_ctrl
->
tpc1
=
nr_get_tpc
(
nrmac
->
radio_config
.
pucch
.
target_snrx10
,
uci_234
->
ul_cqi
,
30
,
0
);
sched_ctrl
->
tpc1
=
nr_limit_tpc
(
sched_ctrl
->
tpc1
,
uci_234
->
rssi
,
rssi_threshold
);
sched_ctrl
->
tpc1
=
nr_limit_tpc
(
sched_ctrl
->
tpc1
,
uci_234
->
rssi
,
rssi_threshold
);
}
}
...
...
openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_ulsch.c
View file @
f282402e
...
@@ -795,7 +795,7 @@ static void nr_rx_ra_sdu(const module_id_t mod_id,
...
@@ -795,7 +795,7 @@ static void nr_rx_ra_sdu(const module_id_t mod_id,
}
}
}
}
const
int
target_snrx10
=
mac
->
pusch_
target_snrx10
;
const
int
target_snrx10
=
mac
->
radio_config
.
pusch
.
target_snrx10
;
if
(
!
sdu
)
{
// NACK
if
(
!
sdu
)
{
// NACK
if
(
cfra
)
// no Msg3 on CFRA, no problem
if
(
cfra
)
// no Msg3 on CFRA, no problem
return
;
return
;
...
@@ -944,9 +944,9 @@ static void _nr_rx_sdu(const module_id_t gnb_mod_idP,
...
@@ -944,9 +944,9 @@ static void _nr_rx_sdu(const module_id_t gnb_mod_idP,
gNB_MAC_INST
*
gNB_mac
=
RC
.
nrmac
[
gnb_mod_idP
];
gNB_MAC_INST
*
gNB_mac
=
RC
.
nrmac
[
gnb_mod_idP
];
const
int
current_rnti
=
rntiP
;
const
int
current_rnti
=
rntiP
;
LOG_D
(
NR_MAC
,
"rx_sdu for rnti %04x
\n
"
,
current_rnti
);
LOG_D
(
NR_MAC
,
"rx_sdu for rnti %04x
\n
"
,
current_rnti
);
const
int
target_snrx10
=
gNB_mac
->
pusch_
target_snrx10
;
const
int
target_snrx10
=
gNB_mac
->
radio_config
.
pusch
.
target_snrx10
;
const
int
rssi_threshold
=
gNB_mac
->
pusch_
rssi_threshold
;
const
int
rssi_threshold
=
gNB_mac
->
radio_config
.
pusch
.
rssi_threshold
;
const
int
pusch_failure_thres
=
gNB_mac
->
pusch_
failure_thres
;
const
int
pusch_failure_thres
=
gNB_mac
->
radio_config
.
pusch
.
failure_thres
;
NR_UE_info_t
*
UE
=
find_nr_UE
(
&
gNB_mac
->
UE_info
,
current_rnti
);
NR_UE_info_t
*
UE
=
find_nr_UE
(
&
gNB_mac
->
UE_info
,
current_rnti
);
if
(
UE
)
{
if
(
UE
)
{
NR_UE_sched_ctrl_t
*
UE_scheduling_control
=
&
UE
->
UE_sched_ctrl
;
NR_UE_sched_ctrl_t
*
UE_scheduling_control
=
&
UE
->
UE_sched_ctrl
;
...
@@ -1582,7 +1582,7 @@ void handle_nr_srs_measurements(const module_id_t module_id,
...
@@ -1582,7 +1582,7 @@ void handle_nr_srs_measurements(const module_id_t module_id,
sprintf
(
stats
->
srs_stats
,
"UL-SNR %i dB"
,
wide_band_snr_dB
);
sprintf
(
stats
->
srs_stats
,
"UL-SNR %i dB"
,
wide_band_snr_dB
);
const
int
ul_prbblack_SNR_threshold
=
nr_mac
->
ul_prbblack_SNR_threshold
;
const
int
ul_prbblack_SNR_threshold
=
nr_mac
->
radio_config
.
ul_prbblack_SNR_threshold
;
uint16_t
*
ulprbbl
=
nr_mac
->
ulprbbl
;
uint16_t
*
ulprbbl
=
nr_mac
->
ulprbbl
;
uint16_t
num_rbs
=
nr_srs_bf_report
.
prg_size
*
nr_srs_bf_report
.
reported_symbol_list
[
0
].
num_prgs
;
uint16_t
num_rbs
=
nr_srs_bf_report
.
prg_size
*
nr_srs_bf_report
.
reported_symbol_list
[
0
].
num_prgs
;
...
...
openair2/LAYER2/NR_MAC_gNB/nr_mac_gNB.h
View file @
f282402e
...
@@ -184,6 +184,15 @@ typedef enum {
...
@@ -184,6 +184,15 @@ typedef enum {
SSB_SINR
,
SSB_SINR
,
}
nr_config_report_type_t
;
}
nr_config_report_type_t
;
typedef
struct
nr_power_config
{
/// target SNR
int
target_snrx10
;
/// RSSI threshold for power control. Limits power control commands when RSSI reaches threshold.
int
rssi_threshold
;
/// Failure threshold (compared to consecutive PUSCH DTX)
int
failure_thres
;
}
nr_power_config_t
;
typedef
struct
nr_mac_config_s
{
typedef
struct
nr_mac_config_s
{
nr_pdsch_AntennaPorts_t
pdsch_AntennaPorts
;
nr_pdsch_AntennaPorts_t
pdsch_AntennaPorts
;
int
pusch_AntennaPorts
;
int
pusch_AntennaPorts
;
...
@@ -197,8 +206,10 @@ typedef struct nr_mac_config_s {
...
@@ -197,8 +206,10 @@ typedef struct nr_mac_config_s {
bool
use_deltaMCS
;
bool
use_deltaMCS
;
int
maxMIMO_layers
;
int
maxMIMO_layers
;
bool
disable_harq
;
bool
disable_harq
;
//int pusch_TargetSNRx10;
nr_power_config_t
pusch
;
//int pucch_TargetSNRx10;
/// SNR threshold needed to put or not a PRB in the black list
int
ul_prbblack_SNR_threshold
;
nr_power_config_t
pucch
;
nr_mac_timers_t
timer_config
;
nr_mac_timers_t
timer_config
;
int
num_dlharq
;
int
num_dlharq
;
int
num_ulharq
;
int
num_ulharq
;
...
@@ -901,20 +912,6 @@ typedef struct gNB_MAC_INST_s {
...
@@ -901,20 +912,6 @@ typedef struct gNB_MAC_INST_s {
/// Pointer to IF module instance for PHY
/// Pointer to IF module instance for PHY
NR_IF_Module_t
*
if_inst
;
NR_IF_Module_t
*
if_inst
;
pthread_t
stats_thread
;
pthread_t
stats_thread
;
/// Pusch target SNR
int
pusch_target_snrx10
;
/// RSSI threshold for power control. Limits power control commands when RSSI reaches threshold.
int
pusch_rssi_threshold
;
/// Pucch target SNR
int
pucch_target_snrx10
;
/// RSSI threshold for PUCCH power control. Limits power control commands when RSSI reaches threshold.
int
pucch_rssi_threshold
;
/// SNR threshold needed to put or not a PRB in the black list
int
ul_prbblack_SNR_threshold
;
/// PUCCH Failure threshold (compared to consecutive PUCCH DTX)
int
pucch_failure_thres
;
/// PUSCH Failure threshold (compared to consecutive PUSCH DTX)
int
pusch_failure_thres
;
/// Subcarrier Offset
/// Subcarrier Offset
int
ssb_SubcarrierOffset
;
int
ssb_SubcarrierOffset
;
int
ssb_OffsetPointA
;
int
ssb_OffsetPointA
;
...
...
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