From 7be2cff096df87ec6609345d4d5a681b5e860299 Mon Sep 17 00:00:00 2001 From: ChiehChun <chiehchun80348@gmail.com> Date: Tue, 10 Nov 2020 11:41:07 +0100 Subject: [PATCH] Check DL buf and Calculate the coeff to create UE_sched --- .../LAYER2/NR_MAC_gNB/gNB_scheduler_dlsch.c | 30 +++++++++++++++---- 1 file changed, 25 insertions(+), 5 deletions(-) diff --git a/openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_dlsch.c b/openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_dlsch.c index df4a96bbc2..1cc77ec30c 100644 --- a/openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_dlsch.c +++ b/openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_dlsch.c @@ -465,7 +465,6 @@ void pf_dl(module_id_t module_id, const float a = 0.0005f; // corresponds to 200ms window const uint32_t b = UE_info->mac_stats[UE_id].dlsch_current_bytes; thr_ue[UE_id] = (1 - a) * thr_ue[UE_id] + a * b; - LOG_I(MAC,"thr_ue[%d] %f\n",UE_id, thr_ue[UE_id]); /* retransmission */ if (sched_ctrl->dl_harq_pid >= 0) { @@ -503,12 +502,33 @@ void pf_dl(module_id_t module_id, max_num_ue--; if (max_num_ue < 0) return; } else { - /* Check DL buffer */ + /* Check DL buffer and skip this UE if no bytes and no TA necessary */ + if (sched_ctrl->num_total_bytes == 0 && frame != (sched_ctrl->ta_frame + 10) % 1024) + continue; /* Calculate coeff */ - - /* Create UE_sched list for transmission*/ - + sched_ctrl->time_domain_allocation = 2; + sched_ctrl->mcsTableIdx = 0; + sched_ctrl->mcs = 9; + sched_ctrl->numDmrsCdmGrpsNoData = 1; + uint8_t N_PRB_DMRS = + getN_PRB_DMRS(sched_ctrl->active_bwp, sched_ctrl->numDmrsCdmGrpsNoData); + int nrOfSymbols = getNrOfSymbols(sched_ctrl->active_bwp, + sched_ctrl->time_domain_allocation); + uint32_t tbs = nr_compute_tbs(nr_get_Qm_dl(sched_ctrl->mcs, sched_ctrl->mcsTableIdx), + nr_get_code_rate_dl(sched_ctrl->mcs, sched_ctrl->mcsTableIdx), + 1, // rbSize + nrOfSymbols, + N_PRB_DMRS, // FIXME // This should be multiplied by the + // number of dmrs symbols + 0 /* N_PRB_oh, 0 for initialBWP */, 0 /* tb_scaling */, + 1 /* nrOfLayers */) + >> 3; + coeff_ue[UE_id] = (float) tbs / thr_ue[UE_id]; + LOG_I(MAC,"b %d, thr_ue[%d] %f, tbs %d, coeff_ue[%d] %f\n", + b, UE_id, thr_ue[UE_id], tbs, UE_id, coeff_ue[UE_id]); + /* Create UE_sched list for UEs eligible for new transmission*/ + add_tail_nr_list(&UE_sched, UE_id); } } -- 2.26.2