Commit 699afafc authored by luis_pereira87's avatar luis_pereira87

Add support for 'dl_min_mcs' and 'ul_min_mcs' configuration parameters, they...

Add support for 'dl_min_mcs' and 'ul_min_mcs' configuration parameters, they will enforce the gNB scheduler to select always a MCS equal or above its values
parent 96b0cae6
...@@ -63,9 +63,11 @@ ...@@ -63,9 +63,11 @@
#define CONFIG_STRING_MACRLC_PUSCHFAILURETHRES "pusch_FailureThres" #define CONFIG_STRING_MACRLC_PUSCHFAILURETHRES "pusch_FailureThres"
#define CONFIG_STRING_MACRLC_DL_BLER_TARGET_UPPER "dl_bler_target_upper" #define CONFIG_STRING_MACRLC_DL_BLER_TARGET_UPPER "dl_bler_target_upper"
#define CONFIG_STRING_MACRLC_DL_BLER_TARGET_LOWER "dl_bler_target_lower" #define CONFIG_STRING_MACRLC_DL_BLER_TARGET_LOWER "dl_bler_target_lower"
#define CONFIG_STRING_MACRLC_DL_MIN_MCS "dl_min_mcs"
#define CONFIG_STRING_MACRLC_DL_MAX_MCS "dl_max_mcs" #define CONFIG_STRING_MACRLC_DL_MAX_MCS "dl_max_mcs"
#define CONFIG_STRING_MACRLC_UL_BLER_TARGET_UPPER "ul_bler_target_upper" #define CONFIG_STRING_MACRLC_UL_BLER_TARGET_UPPER "ul_bler_target_upper"
#define CONFIG_STRING_MACRLC_UL_BLER_TARGET_LOWER "ul_bler_target_lower" #define CONFIG_STRING_MACRLC_UL_BLER_TARGET_LOWER "ul_bler_target_lower"
#define CONFIG_STRING_MACRLC_UL_MIN_MCS "ul_min_mcs"
#define CONFIG_STRING_MACRLC_UL_MAX_MCS "ul_max_mcs" #define CONFIG_STRING_MACRLC_UL_MAX_MCS "ul_max_mcs"
#define CONFIG_STRING_MACRLC_DL_HARQ_ROUND_MAX "dl_harq_round_max" #define CONFIG_STRING_MACRLC_DL_HARQ_ROUND_MAX "dl_harq_round_max"
#define CONFIG_STRING_MACRLC_UL_HARQ_ROUND_MAX "ul_harq_round_max" #define CONFIG_STRING_MACRLC_UL_HARQ_ROUND_MAX "ul_harq_round_max"
...@@ -80,9 +82,11 @@ ...@@ -80,9 +82,11 @@
#define HLP_MACRLC_UL_PRBBLACK "SNR threshold to decide whether a PRB will be blacklisted or not" #define HLP_MACRLC_UL_PRBBLACK "SNR threshold to decide whether a PRB will be blacklisted or not"
#define HLP_MACRLC_DL_BLER_UP "Upper threshold of BLER to decrease DL MCS" #define HLP_MACRLC_DL_BLER_UP "Upper threshold of BLER to decrease DL MCS"
#define HLP_MACRLC_DL_BLER_LO "Lower threshold of BLER to increase DL MCS" #define HLP_MACRLC_DL_BLER_LO "Lower threshold of BLER to increase DL MCS"
#define HLP_MACRLC_DL_MIN_MCS "Minimum DL MCS that should be used"
#define HLP_MACRLC_DL_MAX_MCS "Maximum DL MCS that should be used" #define HLP_MACRLC_DL_MAX_MCS "Maximum DL MCS that should be used"
#define HLP_MACRLC_UL_BLER_UP "Upper threshold of BLER to decrease UL MCS" #define HLP_MACRLC_UL_BLER_UP "Upper threshold of BLER to decrease UL MCS"
#define HLP_MACRLC_UL_BLER_LO "Lower threshold of BLER to increase UL MCS" #define HLP_MACRLC_UL_BLER_LO "Lower threshold of BLER to increase UL MCS"
#define HLP_MACRLC_UL_MIN_MCS "Minimum UL MCS that should be used"
#define HLP_MACRLC_UL_MAX_MCS "Maximum UL MCS that should be used" #define HLP_MACRLC_UL_MAX_MCS "Maximum UL MCS that should be used"
#define HLP_MACRLC_DL_HARQ_MAX "Maximum number of DL HARQ rounds" #define HLP_MACRLC_DL_HARQ_MAX "Maximum number of DL HARQ rounds"
#define HLP_MACRLC_UL_HARQ_MAX "Maximum number of UL HARQ rounds" #define HLP_MACRLC_UL_HARQ_MAX "Maximum number of UL HARQ rounds"
...@@ -123,9 +127,11 @@ ...@@ -123,9 +127,11 @@
{CONFIG_STRING_MACRLC_PUSCHFAILURETHRES, NULL, 0, .iptr=NULL, .defintval=10, TYPE_INT, 0}, \ {CONFIG_STRING_MACRLC_PUSCHFAILURETHRES, NULL, 0, .iptr=NULL, .defintval=10, TYPE_INT, 0}, \
{CONFIG_STRING_MACRLC_DL_BLER_TARGET_UPPER, HLP_MACRLC_DL_BLER_UP, 0, .dblptr=NULL, .defdblval=0.15, TYPE_DOUBLE, 0}, \ {CONFIG_STRING_MACRLC_DL_BLER_TARGET_UPPER, HLP_MACRLC_DL_BLER_UP, 0, .dblptr=NULL, .defdblval=0.15, TYPE_DOUBLE, 0}, \
{CONFIG_STRING_MACRLC_DL_BLER_TARGET_LOWER, HLP_MACRLC_DL_BLER_LO, 0, .dblptr=NULL, .defdblval=0.05, TYPE_DOUBLE, 0}, \ {CONFIG_STRING_MACRLC_DL_BLER_TARGET_LOWER, HLP_MACRLC_DL_BLER_LO, 0, .dblptr=NULL, .defdblval=0.05, TYPE_DOUBLE, 0}, \
{CONFIG_STRING_MACRLC_DL_MIN_MCS, HLP_MACRLC_DL_MIN_MCS, 0, .u8ptr=NULL, .defintval=0, TYPE_UINT8, 0}, \
{CONFIG_STRING_MACRLC_DL_MAX_MCS, HLP_MACRLC_DL_MAX_MCS, 0, .u8ptr=NULL, .defintval=28, TYPE_UINT8, 0}, \ {CONFIG_STRING_MACRLC_DL_MAX_MCS, HLP_MACRLC_DL_MAX_MCS, 0, .u8ptr=NULL, .defintval=28, TYPE_UINT8, 0}, \
{CONFIG_STRING_MACRLC_UL_BLER_TARGET_UPPER, HLP_MACRLC_UL_BLER_UP, 0, .dblptr=NULL, .defdblval=0.15, TYPE_DOUBLE, 0}, \ {CONFIG_STRING_MACRLC_UL_BLER_TARGET_UPPER, HLP_MACRLC_UL_BLER_UP, 0, .dblptr=NULL, .defdblval=0.15, TYPE_DOUBLE, 0}, \
{CONFIG_STRING_MACRLC_UL_BLER_TARGET_LOWER, HLP_MACRLC_UL_BLER_LO, 0, .dblptr=NULL, .defdblval=0.05, TYPE_DOUBLE, 0}, \ {CONFIG_STRING_MACRLC_UL_BLER_TARGET_LOWER, HLP_MACRLC_UL_BLER_LO, 0, .dblptr=NULL, .defdblval=0.05, TYPE_DOUBLE, 0}, \
{CONFIG_STRING_MACRLC_UL_MIN_MCS, HLP_MACRLC_UL_MIN_MCS, 0, .u8ptr=NULL, .defintval=0, TYPE_UINT8, 0}, \
{CONFIG_STRING_MACRLC_UL_MAX_MCS, HLP_MACRLC_UL_MAX_MCS, 0, .u8ptr=NULL, .defintval=28, TYPE_UINT8, 0}, \ {CONFIG_STRING_MACRLC_UL_MAX_MCS, HLP_MACRLC_UL_MAX_MCS, 0, .u8ptr=NULL, .defintval=28, TYPE_UINT8, 0}, \
{CONFIG_STRING_MACRLC_DL_HARQ_ROUND_MAX, HLP_MACRLC_DL_HARQ_MAX, 0, .u8ptr=NULL, .defintval=4, TYPE_UINT8, 0}, \ {CONFIG_STRING_MACRLC_DL_HARQ_ROUND_MAX, HLP_MACRLC_DL_HARQ_MAX, 0, .u8ptr=NULL, .defintval=4, TYPE_UINT8, 0}, \
{CONFIG_STRING_MACRLC_UL_HARQ_ROUND_MAX, HLP_MACRLC_UL_HARQ_MAX, 0, .u8ptr=NULL, .defintval=4, TYPE_UINT8, 0}, \ {CONFIG_STRING_MACRLC_UL_HARQ_ROUND_MAX, HLP_MACRLC_UL_HARQ_MAX, 0, .u8ptr=NULL, .defintval=4, TYPE_UINT8, 0}, \
...@@ -167,22 +173,24 @@ ...@@ -167,22 +173,24 @@
#define MACRLC_PUSCHFAILURETHRES_IDX 20 #define MACRLC_PUSCHFAILURETHRES_IDX 20
#define MACRLC_DL_BLER_TARGET_UPPER_IDX 21 #define MACRLC_DL_BLER_TARGET_UPPER_IDX 21
#define MACRLC_DL_BLER_TARGET_LOWER_IDX 22 #define MACRLC_DL_BLER_TARGET_LOWER_IDX 22
#define MACRLC_DL_MAX_MCS_IDX 23 #define MACRLC_DL_MIN_MCS_IDX 23
#define MACRLC_UL_BLER_TARGET_UPPER_IDX 24 #define MACRLC_DL_MAX_MCS_IDX 24
#define MACRLC_UL_BLER_TARGET_LOWER_IDX 25 #define MACRLC_UL_BLER_TARGET_UPPER_IDX 25
#define MACRLC_UL_MAX_MCS_IDX 26 #define MACRLC_UL_BLER_TARGET_LOWER_IDX 26
#define MACRLC_DL_HARQ_ROUND_MAX_IDX 27 #define MACRLC_UL_MIN_MCS_IDX 27
#define MACRLC_UL_HARQ_ROUND_MAX_IDX 28 #define MACRLC_UL_MAX_MCS_IDX 28
#define MACRLC_MIN_GRANT_PRB_IDX 29 #define MACRLC_DL_HARQ_ROUND_MAX_IDX 29
#define MACRLC_IDENTITY_PM_IDX 30 #define MACRLC_UL_HARQ_ROUND_MAX_IDX 30
#define MACRLC_LOCAL_N_ADDRESS_F1U_IDX 31 #define MACRLC_MIN_GRANT_PRB_IDX 31
#define MACRLC_TRANSPORT_S_SHM_PREFIX 32 #define MACRLC_IDENTITY_PM_IDX 32
#define MACRLC_TRANSPORT_S_POLL_CORE 33 #define MACRLC_LOCAL_N_ADDRESS_F1U_IDX 33
#define MACRLC_ANALOG_BEAMFORMING_IDX 34 #define MACRLC_TRANSPORT_S_SHM_PREFIX 34
#define MACRLC_ANALOG_BEAM_DURATION_IDX 35 #define MACRLC_TRANSPORT_S_POLL_CORE 35
#define MACRLC_ANALOG_BEAMS_PERIOD_IDX 36 #define MACRLC_ANALOG_BEAMFORMING_IDX 36
#define MACRLC_PUSCH_RSSI_THRES_IDX 37 #define MACRLC_ANALOG_BEAM_DURATION_IDX 37
#define MACRLC_PUCCH_RSSI_THRES_IDX 38 #define MACRLC_ANALOG_BEAMS_PERIOD_IDX 38
#define MACRLC_PUSCH_RSSI_THRES_IDX 39
#define MACRLC_PUCCH_RSSI_THRES_IDX 40
#define MACRLCPARAMS_CHECK { \ #define MACRLCPARAMS_CHECK { \
{ .s5 = { NULL } }, \ { .s5 = { NULL } }, \
...@@ -208,10 +216,12 @@ ...@@ -208,10 +216,12 @@
{ .s5 = { NULL } }, \ { .s5 = { NULL } }, \
{ .s5 = { NULL } }, \ { .s5 = { NULL } }, \
{ .s5 = { NULL } }, \ { .s5 = { NULL } }, \
{ .s2 = { config_check_intrange, {0, 31} } }, /* DL min MCS */ \
{ .s2 = { config_check_intrange, {0, 31} } }, /* DL max MCS */ \
{ .s5 = { NULL } }, \ { .s5 = { NULL } }, \
{ .s5 = { NULL } }, \ { .s5 = { NULL } }, \
{ .s5 = { NULL } }, \ { .s2 = { config_check_intrange, {0, 31} } }, /* UL min MCS */ \
{ .s5 = { NULL } }, \ { .s2 = { config_check_intrange, {0, 31} } }, /* UL max MCS */ \
{ .s2 = { config_check_intrange, {1, 8} } }, /* DL max HARQ rounds */ \ { .s2 = { config_check_intrange, {1, 8} } }, /* DL max HARQ rounds */ \
{ .s2 = { config_check_intrange, {1, 8} } }, /* UL max HARQ rounds */ \ { .s2 = { config_check_intrange, {1, 8} } }, /* UL max HARQ rounds */ \
{ .s5 = { NULL } }, \ { .s5 = { NULL } }, \
......
...@@ -1650,6 +1650,7 @@ void RCconfig_nr_macrlc(configmodule_interface_t *cfg) ...@@ -1650,6 +1650,7 @@ void RCconfig_nr_macrlc(configmodule_interface_t *cfg)
NR_bler_options_t *dl_bler_options = &RC.nrmac[j]->dl_bler; NR_bler_options_t *dl_bler_options = &RC.nrmac[j]->dl_bler;
dl_bler_options->upper = *(MacRLC_ParamList.paramarray[j][MACRLC_DL_BLER_TARGET_UPPER_IDX].dblptr); dl_bler_options->upper = *(MacRLC_ParamList.paramarray[j][MACRLC_DL_BLER_TARGET_UPPER_IDX].dblptr);
dl_bler_options->lower = *(MacRLC_ParamList.paramarray[j][MACRLC_DL_BLER_TARGET_LOWER_IDX].dblptr); dl_bler_options->lower = *(MacRLC_ParamList.paramarray[j][MACRLC_DL_BLER_TARGET_LOWER_IDX].dblptr);
dl_bler_options->min_mcs = *(MacRLC_ParamList.paramarray[j][MACRLC_DL_MIN_MCS_IDX].u8ptr);
dl_bler_options->max_mcs = *(MacRLC_ParamList.paramarray[j][MACRLC_DL_MAX_MCS_IDX].u8ptr); dl_bler_options->max_mcs = *(MacRLC_ParamList.paramarray[j][MACRLC_DL_MAX_MCS_IDX].u8ptr);
if (config.disable_harq) if (config.disable_harq)
dl_bler_options->harq_round_max = 1; dl_bler_options->harq_round_max = 1;
...@@ -1658,6 +1659,7 @@ void RCconfig_nr_macrlc(configmodule_interface_t *cfg) ...@@ -1658,6 +1659,7 @@ void RCconfig_nr_macrlc(configmodule_interface_t *cfg)
NR_bler_options_t *ul_bler_options = &RC.nrmac[j]->ul_bler; NR_bler_options_t *ul_bler_options = &RC.nrmac[j]->ul_bler;
ul_bler_options->upper = *(MacRLC_ParamList.paramarray[j][MACRLC_UL_BLER_TARGET_UPPER_IDX].dblptr); ul_bler_options->upper = *(MacRLC_ParamList.paramarray[j][MACRLC_UL_BLER_TARGET_UPPER_IDX].dblptr);
ul_bler_options->lower = *(MacRLC_ParamList.paramarray[j][MACRLC_UL_BLER_TARGET_LOWER_IDX].dblptr); ul_bler_options->lower = *(MacRLC_ParamList.paramarray[j][MACRLC_UL_BLER_TARGET_LOWER_IDX].dblptr);
ul_bler_options->min_mcs = *(MacRLC_ParamList.paramarray[j][MACRLC_UL_MIN_MCS_IDX].u8ptr);
ul_bler_options->max_mcs = *(MacRLC_ParamList.paramarray[j][MACRLC_UL_MAX_MCS_IDX].u8ptr); ul_bler_options->max_mcs = *(MacRLC_ParamList.paramarray[j][MACRLC_UL_MAX_MCS_IDX].u8ptr);
if (config.disable_harq) if (config.disable_harq)
ul_bler_options->harq_round_max = 1; ul_bler_options->harq_round_max = 1;
......
...@@ -761,6 +761,7 @@ int get_mcs_from_bler(const NR_bler_options_t *bler_options, ...@@ -761,6 +761,7 @@ int get_mcs_from_bler(const NR_bler_options_t *bler_options,
new_mcs -= 1; new_mcs -= 1;
// else we are within threshold boundaries // else we are within threshold boundaries
new_mcs = max(new_mcs, bler_options->min_mcs);
bler_stats->last_frame = frame; bler_stats->last_frame = frame;
bler_stats->mcs = new_mcs; bler_stats->mcs = new_mcs;
memcpy(bler_stats->rounds, stats->rounds, sizeof(stats->rounds)); memcpy(bler_stats->rounds, stats->rounds, sizeof(stats->rounds));
......
...@@ -738,6 +738,7 @@ typedef struct NR_mac_stats { ...@@ -738,6 +738,7 @@ typedef struct NR_mac_stats {
typedef struct NR_bler_options { typedef struct NR_bler_options {
double upper; double upper;
double lower; double lower;
uint8_t min_mcs;
uint8_t max_mcs; uint8_t max_mcs;
uint8_t harq_round_max; uint8_t harq_round_max;
} NR_bler_options_t; } NR_bler_options_t;
......
...@@ -177,6 +177,7 @@ MACRLCs = ( ...@@ -177,6 +177,7 @@ MACRLCs = (
pusch_TargetSNRx10 = 150; pusch_TargetSNRx10 = 150;
pucch_TargetSNRx10 = 200; pucch_TargetSNRx10 = 200;
min_grant_prb = 20; min_grant_prb = 20;
ul_min_mcs = 16;
dl_max_mcs = 10; dl_max_mcs = 10;
} }
); );
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment