From 8e4526e22189becf154e8649e079b045a35e0a8e Mon Sep 17 00:00:00 2001 From: Thomas Schlichter Date: Tue, 7 May 2024 18:07:00 +0200 Subject: [PATCH] gNB: change TA update interval to 100 frames instead of 10 The RTT for GEO satellites is more than 500 ms. And as the TA update interval must be greater than the RTT, we increase it to 1 second instead of 100 ms. Should also do no harm for terrestrial networks. --- openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_dlsch.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_dlsch.c b/openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_dlsch.c index ca6d44d5b0..29b5fbe713 100644 --- a/openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_dlsch.c +++ b/openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_dlsch.c @@ -660,7 +660,7 @@ static void pf_dl(module_id_t module_id, } /* 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) + if (sched_ctrl->num_total_bytes == 0 && frame != (sched_ctrl->ta_frame + 100) % 1024) continue; /* Calculate coeff */ @@ -805,8 +805,8 @@ static void pf_dl(module_id_t module_id, // awaiting. Therefore, for the time being, we put a fixed overhead of 12 // (for 4 PDUs) and optionally + 2 for TA. Once RLC gives the number of // PDUs, we replace with 3 * numPDUs - const int oh = 3 * 4 + 2 * (frame == (sched_ctrl->ta_frame + 10) % 1024); - //const int oh = 3 * sched_ctrl->dl_pdus_total + 2 * (frame == (sched_ctrl->ta_frame + 10) % 1024); + const int oh = 3 * 4 + 2 * (frame == (sched_ctrl->ta_frame + 100) % 1024); + //const int oh = 3 * sched_ctrl->dl_pdus_total + 2 * (frame == (sched_ctrl->ta_frame + 100) % 1024); nr_find_nb_rb(sched_pdsch->Qm, sched_pdsch->R, 1, // no transform precoding for DL @@ -958,7 +958,7 @@ void nr_schedule_ue_spec(module_id_t module_id, * Possible improvement: take the periodicity from input file. * If such UE is not scheduled now, it will be by the preprocessor later. * If we add the CE, ta_apply will be reset */ - if (frame == (sched_ctrl->ta_frame + 10) % 1024) { + if (frame == (sched_ctrl->ta_frame + 100) % 1024) { sched_ctrl->ta_apply = true; /* the timer is reset once TA CE is scheduled */ LOG_D(NR_MAC, "[UE %04x][%d.%d] UL timing alignment procedures: setting flag for Timing Advance command\n", UE->rnti, frame, slot); }