From 00d021c66b85ec5510ceb2940d8705e22f23d17b Mon Sep 17 00:00:00 2001 From: Robert Schmidt Date: Mon, 23 May 2022 14:33:05 +0200 Subject: [PATCH 1/2] In TDD: enable slot 0 In the past, activation of slot 0 (i.e., after the switch UL->DL) resulted in many retransmissions. This does not seem to be the case anymore, and we can therefore activate slot 0 also in TDD. --- openair2/LAYER2/NR_MAC_gNB/config.c | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/openair2/LAYER2/NR_MAC_gNB/config.c b/openair2/LAYER2/NR_MAC_gNB/config.c index d4cde4f3c3..f55130e4f4 100644 --- a/openair2/LAYER2/NR_MAC_gNB/config.c +++ b/openair2/LAYER2/NR_MAC_gNB/config.c @@ -551,9 +551,7 @@ int rrc_mac_config_req_gNB(module_id_t Mod_idP, AssertFatal(RC.nrmac[Mod_idP]->common_channels[0].frame_type == FDD,"Dynamic TDD not handled yet\n"); for (int slot = 0; slot < n; ++slot) { - if (RC.nrmac[Mod_idP]->common_channels[0].frame_type == FDD || - (slot != 0)) - RC.nrmac[Mod_idP]->dlsch_slot_bitmap[slot / 64] |= (uint64_t)((slot % nr_slots_period) < nr_dl_slots) << (slot % 64); + RC.nrmac[Mod_idP]->dlsch_slot_bitmap[slot / 64] |= (uint64_t)((slot % nr_slots_period) < nr_dl_slots) << (slot % 64); RC.nrmac[Mod_idP]->ulsch_slot_bitmap[slot / 64] |= (uint64_t)((slot % nr_slots_period) >= nr_ulstart_slot) << (slot % 64); LOG_I(NR_MAC, "In %s: slot %d DL %d UL %d\n", From 9354d4305b14259983bf80c64af0f5b60efa5cd4 Mon Sep 17 00:00:00 2001 From: Robert Schmidt Date: Mon, 23 May 2022 14:34:32 +0200 Subject: [PATCH 2/2] Set k2=2 also in 5ms TDD periods In the past, setting k2=2 for 5ms TDD periods resulted in increased ping RTT and/or reestablishment requests. These problems do not appear anymore, and we can allow k2=2. --- openair2/RRC/NR/nr_rrc_config.c | 17 +---------------- 1 file changed, 1 insertion(+), 16 deletions(-) diff --git a/openair2/RRC/NR/nr_rrc_config.c b/openair2/RRC/NR/nr_rrc_config.c index ef95443a5d..039cb3dfd8 100644 --- a/openair2/RRC/NR/nr_rrc_config.c +++ b/openair2/RRC/NR/nr_rrc_config.c @@ -353,22 +353,7 @@ void nr_rrc_config_ul_tda(NR_ServingCellConfigCommon_t *scc, int min_fb_delay){ //TODO change to accomodate for SRS frame_type_t frame_type = get_frame_type(*scc->downlinkConfigCommon->frequencyInfoDL->frequencyBandList.list.array[0], *scc->ssbSubcarrierSpacing); - int temp_min_delay = 6; // k2 = 2 or 3 won'r work as well as higher values - if(frame_type==TDD && scc->tdd_UL_DL_ConfigurationCommon) { - - switch (scc->tdd_UL_DL_ConfigurationCommon->pattern1.dl_UL_TransmissionPeriodicity) { - case NR_TDD_UL_DL_Pattern__dl_UL_TransmissionPeriodicity_ms2p5: // 30kHz SCS - case NR_TDD_UL_DL_Pattern__dl_UL_TransmissionPeriodicity_ms2: // 60kHz SCS - case NR_TDD_UL_DL_Pattern__dl_UL_TransmissionPeriodicity_ms1p25: // 60kHz SCS - case NR_TDD_UL_DL_Pattern__dl_UL_TransmissionPeriodicity_ms1: // 120kHz SCS - case NR_TDD_UL_DL_Pattern__dl_UL_TransmissionPeriodicity_ms0p625: // 120kHz SCS - case NR_TDD_UL_DL_Pattern__dl_UL_TransmissionPeriodicity_ms0p5: // 120kHz SCS - temp_min_delay = 2; - break; - } - } - - int k2 = (min_fb_delayuplinkConfigCommon->initialUplinkBWP->genericParameters.subcarrierSpacing;