From a6f03b3f798b91ee0520c8f4722851408fa51188 Mon Sep 17 00:00:00 2001 From: francescomani Date: Wed, 9 Oct 2024 08:57:40 +0200 Subject: [PATCH 1/4] ULSCH scheduler fix when using transform precoding Bug in ULSCH scheduler for transform precoding. It ignores transform precoding specific tables when building ul_pf_tbs. --- openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_ulsch.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_ulsch.c b/openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_ulsch.c index cb233eae1b..218fdbb0c1 100644 --- a/openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_ulsch.c +++ b/openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_ulsch.c @@ -1754,7 +1754,7 @@ static bool allocate_ul_retransmission(gNB_MAC_INST *nrmac, return true; } -uint32_t ul_pf_tbs[3][29]; // pre-computed, approximate TBS values for PF coefficient +uint32_t ul_pf_tbs[5][29]; // pre-computed, approximate TBS values for PF coefficient typedef struct UEsched_s { float coef; NR_UE_info_t * UE; @@ -2221,11 +2221,11 @@ nr_pp_impl_ul nr_init_fr1_ulsch_preprocessor(int CC_id) * which should approximately(!) give us the TBsize. In particular, the * number of symbols, the number of DMRS symbols, and the exact Qm and R, are * not correct*/ - for (int mcsTableIdx = 0; mcsTableIdx < 3; ++mcsTableIdx) { + for (int mcsTableIdx = 0; mcsTableIdx < 5; ++mcsTableIdx) { for (int mcs = 0; mcs < 29; ++mcs) { - if (mcs > 27 && mcsTableIdx == 1) + if (mcs > 27 && (mcsTableIdx == 1 || mcsTableIdx == 3 || mcsTableIdx == 4)) continue; - const uint8_t Qm = nr_get_Qm_dl(mcs, mcsTableIdx); + const uint8_t Qm = nr_get_Qm_ul(mcs, mcsTableIdx); const uint16_t R = nr_get_code_rate_ul(mcs, mcsTableIdx); /* note: we do not update R/Qm based on low MCS or pi2BPSK */ ul_pf_tbs[mcsTableIdx][mcs] = nr_compute_tbs(Qm, From a343ec03fd7e929368b273d60f91917ca196e070 Mon Sep 17 00:00:00 2001 From: francescomani Date: Thu, 10 Oct 2024 11:58:07 +0200 Subject: [PATCH 2/4] changes in get_transformPrecoding to follow what's written in 6.1.3 of 214 --- openair2/LAYER2/NR_MAC_COMMON/nr_mac_common.c | 11 ++++++----- openair2/LAYER2/NR_MAC_UE/nr_ue_scheduler.c | 2 +- 2 files changed, 7 insertions(+), 6 deletions(-) diff --git a/openair2/LAYER2/NR_MAC_COMMON/nr_mac_common.c b/openair2/LAYER2/NR_MAC_COMMON/nr_mac_common.c index 3f0db0e4da..0b4798a4e1 100644 --- a/openair2/LAYER2/NR_MAC_COMMON/nr_mac_common.c +++ b/openair2/LAYER2/NR_MAC_COMMON/nr_mac_common.c @@ -2658,16 +2658,17 @@ long get_transformPrecoding(const NR_UE_UL_BWP_t *current_UL_BWP, nr_dci_format_ && current_UL_BWP->configuredGrantConfig->transformPrecoder) return *current_UL_BWP->configuredGrantConfig->transformPrecoder; - if (dci_format == NR_UL_DCI_FORMAT_0_1 + long msg3_tp = NR_PUSCH_Config__transformPrecoder_disabled; + if (current_UL_BWP && current_UL_BWP->rach_ConfigCommon && current_UL_BWP->rach_ConfigCommon->msg3_transformPrecoder) + msg3_tp = NR_PUSCH_Config__transformPrecoder_enabled; + + if (dci_format != NR_UL_DCI_FORMAT_0_0 && current_UL_BWP && current_UL_BWP->pusch_Config && current_UL_BWP->pusch_Config->transformPrecoder) return *current_UL_BWP->pusch_Config->transformPrecoder; - if (current_UL_BWP && current_UL_BWP->rach_ConfigCommon && current_UL_BWP->rach_ConfigCommon->msg3_transformPrecoder) - return NR_PUSCH_Config__transformPrecoder_enabled; - - return NR_PUSCH_Config__transformPrecoder_disabled; + return msg3_tp; } uint8_t get_pusch_nb_antenna_ports(NR_PUSCH_Config_t *pusch_Config, diff --git a/openair2/LAYER2/NR_MAC_UE/nr_ue_scheduler.c b/openair2/LAYER2/NR_MAC_UE/nr_ue_scheduler.c index a076829a8a..04479237ad 100644 --- a/openair2/LAYER2/NR_MAC_UE/nr_ue_scheduler.c +++ b/openair2/LAYER2/NR_MAC_UE/nr_ue_scheduler.c @@ -779,7 +779,7 @@ int nr_config_pusch_pdu(NR_UE_MAC_INST_t *mac, uint32_t n_RS_Id = 0; if (NR_DMRS_ulconfig->transformPrecodingEnabled && - NR_DMRS_ulconfig->transformPrecodingEnabled->nPUSCH_Identity != NULL) + NR_DMRS_ulconfig->transformPrecodingEnabled->nPUSCH_Identity) n_RS_Id = *NR_DMRS_ulconfig->transformPrecodingEnabled->nPUSCH_Identity; else n_RS_Id = mac->physCellId; From 7fdae002b965dcfc8537f278758150079e3b2320 Mon Sep 17 00:00:00 2001 From: francescomani Date: Thu, 10 Oct 2024 12:06:47 +0200 Subject: [PATCH 3/4] remove UL MCS limitation on CI transform precoding test --- ci-scripts/conf_files/gnb.sa.band78.106prb.usrpb200.sc-fdma.conf | 1 - 1 file changed, 1 deletion(-) diff --git a/ci-scripts/conf_files/gnb.sa.band78.106prb.usrpb200.sc-fdma.conf b/ci-scripts/conf_files/gnb.sa.band78.106prb.usrpb200.sc-fdma.conf index dc5c30fe50..b6f6fbb2af 100644 --- a/ci-scripts/conf_files/gnb.sa.band78.106prb.usrpb200.sc-fdma.conf +++ b/ci-scripts/conf_files/gnb.sa.band78.106prb.usrpb200.sc-fdma.conf @@ -175,7 +175,6 @@ MACRLCs = ( pusch_TargetSNRx10 = 200; pucch_TargetSNRx10 = 200; ul_prbblack_SNR_threshold = 10; - ul_max_mcs = 9; } ); From 4398a57eb28e48702a68c2c88f11e0fbf9d78dfa Mon Sep 17 00:00:00 2001 From: Robert Schmidt Date: Sun, 13 Oct 2024 19:03:33 +0200 Subject: [PATCH 4/4] Increase SC-FDMA test UL iperf traffic to 18Mbps --- ci-scripts/xml_files/container_sa_sc_b200_quectel.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ci-scripts/xml_files/container_sa_sc_b200_quectel.xml b/ci-scripts/xml_files/container_sa_sc_b200_quectel.xml index 54df2fa1a4..d2bfaa02d4 100644 --- a/ci-scripts/xml_files/container_sa_sc_b200_quectel.xml +++ b/ci-scripts/xml_files/container_sa_sc_b200_quectel.xml @@ -150,8 +150,8 @@ Iperf - iperf (UL/6Mbps/UDP)(30 sec)(single-ue profile) - -u -b 6M -t 30 + iperf (UL/18Mbps/UDP)(30 sec) + -u -b 18M -t 30 idefix sabox-nepes 1