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) {
|
||||
char stats_output[16000] = {0};
|
||||
char stats_output[32656] = {0};
|
||||
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);
|
||||
}
|
||||
|
||||
@@ -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 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 */
|
||||
pf_dl(module_id,
|
||||
frame,
|
||||
|
||||
@@ -678,24 +678,24 @@ int get_mcs_from_bler(const NR_bler_options_t *bler_options,
|
||||
return old_mcs; // no update
|
||||
|
||||
// last update is longer than x frames ago
|
||||
const int dtx = (int)(stats->rounds[0] - bler_stats->rounds[0]);
|
||||
const int dretx = (int)(stats->rounds[1] - bler_stats->rounds[1]);
|
||||
const float bler_window = dtx > 0 ? (float) dretx / dtx : bler_stats->bler;
|
||||
const int num_dl_sched = (int)(stats->rounds[0] - bler_stats->rounds[0]);
|
||||
const int num_dl_retx = (int)(stats->rounds[1] - bler_stats->rounds[1]);
|
||||
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;
|
||||
|
||||
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;
|
||||
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;
|
||||
// else we are within threshold boundaries
|
||||
|
||||
bler_stats->last_frame = frame;
|
||||
bler_stats->mcs = new_mcs;
|
||||
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",
|
||||
frame, old_mcs, new_mcs, dtx, dretx, bler_window, bler_stats->bler);
|
||||
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, num_dl_sched, num_dl_retx, bler_window, bler_stats->bler);
|
||||
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 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 */
|
||||
pf_ul(module_id,
|
||||
frame,
|
||||
|
||||
@@ -45,7 +45,7 @@
|
||||
extern RAN_CONTEXT_t RC;
|
||||
|
||||
|
||||
#define MACSTATSSTRLEN 16000
|
||||
#define MACSTATSSTRLEN 36256
|
||||
|
||||
void *nrmac_stats_thread(void *arg) {
|
||||
|
||||
|
||||
Reference in New Issue
Block a user