From a1a4f24d0f0aaf51d79d2ee07421ef6bc607f310 Mon Sep 17 00:00:00 2001 From: Raymond Knopp Date: Wed, 12 Feb 2025 21:05:31 +0100 Subject: [PATCH] hotfix for F. Mani's update to nr_feptx_prec handling of multiple beams --- openair1/PHY/INIT/nr_init_ru.c | 2 +- openair1/SCHED_NR/nr_ru_procedures.c | 2 +- radio/fhi_72/oran_isolate.c | 4 ++-- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/openair1/PHY/INIT/nr_init_ru.c b/openair1/PHY/INIT/nr_init_ru.c index 49d3890a0b..d96a279b9b 100644 --- a/openair1/PHY/INIT/nr_init_ru.c +++ b/openair1/PHY/INIT/nr_init_ru.c @@ -51,7 +51,7 @@ void nr_phy_init_RU(RU_t *ru) ru->num_beams_period = analog_config->analog_bf_vendor_ext.value ? analog_config->num_beams_period_vendor_ext.value : 1; int nb_tx_streams = ru->nb_tx * ru->num_beams_period; int nb_rx_streams = ru->nb_rx * ru->num_beams_period; - + LOG_I(NR_PHY, "nb_tx_streams %d, nb_rx_streams %d, num_Beams_period %d\n", nb_tx_streams, nb_rx_streams, ru->num_beams_period); ru->common.beam_id = malloc16_clear(ru->num_beams_period * sizeof(int*)); for(int i = 0; i < ru->num_beams_period; i++) ru->common.beam_id[i] = malloc16_clear(fp->symbols_per_slot * fp->slots_per_frame * sizeof(int)); diff --git a/openair1/SCHED_NR/nr_ru_procedures.c b/openair1/SCHED_NR/nr_ru_procedures.c index c455e5ac76..0546455e36 100644 --- a/openair1/SCHED_NR/nr_ru_procedures.c +++ b/openair1/SCHED_NR/nr_ru_procedures.c @@ -201,7 +201,7 @@ void nr_feptx_prec(RU_t *ru, int frame_tx, int slot_tx) for (int b = 0; b < ru->num_beams_period; b++) { for (int i = 0; i < ru->nb_tx; ++i) { int tx_idx = i + b * ru->nb_tx; - memcpy((void*)&ru->common.txdataF_BF[tx_idx][txdataF_offset], + memcpy((void*)ru->common.txdataF_BF[tx_idx], (void*)&gNB->common_vars.txdataF[b][i][txdataF_offset], fp->samples_per_slot_wCP * sizeof(int32_t)); } diff --git a/radio/fhi_72/oran_isolate.c b/radio/fhi_72/oran_isolate.c index 0a200a39a0..7ceec513c6 100644 --- a/radio/fhi_72/oran_isolate.c +++ b/radio/fhi_72/oran_isolate.c @@ -208,7 +208,7 @@ int trx_oran_ctlrecv(openair0_device *device, void *msg, ssize_t msg_len) void oran_fh_if4p5_south_in(RU_t *ru, int *frame, int *slot) { ru_info_t ru_info; - ru_info.nb_rx = ru->nb_rx; + ru_info.nb_rx = ru->nb_rx * ru->num_beams_period; ru_info.rxdataF = ru->common.rxdataF; ru_info.prach_buf = ru->prach_rxsigF[0]; // index: [prach_oca][ant_id] @@ -262,7 +262,7 @@ void oran_fh_if4p5_south_out(RU_t *ru, int frame, int slot, uint64_t timestamp) { start_meas(&ru->tx_fhaul); ru_info_t ru_info; - ru_info.nb_tx = ru->nb_tx; + ru_info.nb_tx = ru->nb_tx * ru->num_beams_period; ru_info.txdataF_BF = ru->common.txdataF_BF; // printf("south_out:\tframe=%d\tslot=%d\ttimestamp=%ld\n",frame,slot,timestamp);