Merge remote-tracking branch 'origin/Multi_UE_support_for_32' into integration_2024_w12
This commit is contained in:
@@ -241,7 +241,7 @@ void gNB_dlsch_ulsch_scheduler(module_id_t module_idP, frame_t frame, sub_frame_
|
|||||||
}
|
}
|
||||||
|
|
||||||
if ((slot == 0) && (frame & 127) == 0) {
|
if ((slot == 0) && (frame & 127) == 0) {
|
||||||
char stats_output[16000] = {0};
|
char stats_output[32656] = {0};
|
||||||
dump_mac_stats(gNB, stats_output, sizeof(stats_output), true);
|
dump_mac_stats(gNB, stats_output, sizeof(stats_output), true);
|
||||||
LOG_I(NR_MAC, "Frame.Slot %d.%d\n%s\n", frame, slot, stats_output);
|
LOG_I(NR_MAC, "Frame.Slot %d.%d\n%s\n", frame, slot, stats_output);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -875,6 +875,9 @@ static void nr_fr1_dlsch_preprocessor(module_id_t module_id, frame_t frame, sub_
|
|||||||
int average_agg_level = 4; // TODO find a better estimation
|
int average_agg_level = 4; // TODO find a better estimation
|
||||||
int max_sched_ues = bw / (average_agg_level * NR_NB_REG_PER_CCE);
|
int max_sched_ues = bw / (average_agg_level * NR_NB_REG_PER_CCE);
|
||||||
|
|
||||||
|
// FAPI cannot handle more than MAX_DCI_CORESET DCIs
|
||||||
|
max_sched_ues = min(max_sched_ues, MAX_DCI_CORESET);
|
||||||
|
|
||||||
/* proportional fair scheduling algorithm */
|
/* proportional fair scheduling algorithm */
|
||||||
pf_dl(module_id,
|
pf_dl(module_id,
|
||||||
frame,
|
frame,
|
||||||
|
|||||||
@@ -678,24 +678,24 @@ int get_mcs_from_bler(const NR_bler_options_t *bler_options,
|
|||||||
return old_mcs; // no update
|
return old_mcs; // no update
|
||||||
|
|
||||||
// last update is longer than x frames ago
|
// last update is longer than x frames ago
|
||||||
const int dtx = (int)(stats->rounds[0] - bler_stats->rounds[0]);
|
const int num_dl_sched = (int)(stats->rounds[0] - bler_stats->rounds[0]);
|
||||||
const int dretx = (int)(stats->rounds[1] - bler_stats->rounds[1]);
|
const int num_dl_retx = (int)(stats->rounds[1] - bler_stats->rounds[1]);
|
||||||
const float bler_window = dtx > 0 ? (float) dretx / dtx : bler_stats->bler;
|
const float bler_window = num_dl_sched > 0 ? (float) num_dl_retx / num_dl_sched : bler_stats->bler;
|
||||||
bler_stats->bler = BLER_FILTER * bler_stats->bler + (1 - BLER_FILTER) * bler_window;
|
bler_stats->bler = BLER_FILTER * bler_stats->bler + (1 - BLER_FILTER) * bler_window;
|
||||||
|
|
||||||
int new_mcs = old_mcs;
|
int new_mcs = old_mcs;
|
||||||
if (bler_stats->bler < bler_options->lower && old_mcs < max_mcs && dtx > 9)
|
if (bler_stats->bler < bler_options->lower && old_mcs < max_mcs && num_dl_sched > 3)
|
||||||
new_mcs += 1;
|
new_mcs += 1;
|
||||||
else if ((bler_stats->bler > bler_options->upper && old_mcs > 6) // above threshold
|
else if ((bler_stats->bler > bler_options->upper && old_mcs > 6) // above threshold
|
||||||
|| (dtx <= 3 && old_mcs > 9)) // no activity
|
|| (num_dl_sched <= 3 && old_mcs > 9)) // no activity
|
||||||
new_mcs -= 1;
|
new_mcs -= 1;
|
||||||
// else we are within threshold boundaries
|
// else we are within threshold boundaries
|
||||||
|
|
||||||
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));
|
||||||
LOG_D(MAC, "frame %4d MCS %d -> %d (dtx %d, dretx %d, BLER wnd %.3f avg %.6f)\n",
|
LOG_D(MAC, "frame %4d MCS %d -> %d (num_dl_sched %d, num_dl_retx %d, BLER wnd %.3f avg %.6f)\n",
|
||||||
frame, old_mcs, new_mcs, dtx, dretx, bler_window, bler_stats->bler);
|
frame, old_mcs, new_mcs, num_dl_sched, num_dl_retx, bler_window, bler_stats->bler);
|
||||||
return new_mcs;
|
return new_mcs;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -2035,6 +2035,9 @@ static bool nr_fr1_ulsch_preprocessor(module_id_t module_id, frame_t frame, sub_
|
|||||||
int average_agg_level = 4; // TODO find a better estimation
|
int average_agg_level = 4; // TODO find a better estimation
|
||||||
int max_sched_ues = bw / (average_agg_level * NR_NB_REG_PER_CCE);
|
int max_sched_ues = bw / (average_agg_level * NR_NB_REG_PER_CCE);
|
||||||
|
|
||||||
|
// FAPI cannot handle more than MAX_DCI_CORESET DCIs
|
||||||
|
max_sched_ues = min(max_sched_ues, MAX_DCI_CORESET);
|
||||||
|
|
||||||
/* proportional fair scheduling algorithm */
|
/* proportional fair scheduling algorithm */
|
||||||
pf_ul(module_id,
|
pf_ul(module_id,
|
||||||
frame,
|
frame,
|
||||||
|
|||||||
@@ -45,7 +45,7 @@
|
|||||||
extern RAN_CONTEXT_t RC;
|
extern RAN_CONTEXT_t RC;
|
||||||
|
|
||||||
|
|
||||||
#define MACSTATSSTRLEN 16000
|
#define MACSTATSSTRLEN 36256
|
||||||
|
|
||||||
void *nrmac_stats_thread(void *arg) {
|
void *nrmac_stats_thread(void *arg) {
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user