From 84a1eb8b07efbb3623f64db2e1410ef41dbcdd81 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Teodora=20Vladi=C4=87?= Date: Wed, 25 Mar 2026 22:18:38 +0100 Subject: [PATCH] Reverse the Rx processing order MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit First process PUSCH and then PRACH because the PUSCH callback is called before PRACH callback. Signed-off-by: Teodora Vladić --- radio/fhi_72/README.md | 2 +- radio/fhi_72/oran_isolate.c | 26 +++++++++++++------------- 2 files changed, 14 insertions(+), 14 deletions(-) diff --git a/radio/fhi_72/README.md b/radio/fhi_72/README.md index 48e21220fb..e161ceaf40 100644 --- a/radio/fhi_72/README.md +++ b/radio/fhi_72/README.md @@ -46,5 +46,5 @@ For PUSCH/PRACH, `oran_fh_if4p5_south_in()` calls `xran_fh_rx_read_slot()`/ This is done through either a message queue, or through polling, which in both cases depends on xran calling the callbacks `oai_xran_fh_rx_callback()`/ `oai_xran_fh_rx_prach_callback()` as installed during xran initialization. -Once unblocked, it reads first PRACH data, then PUSCH data, before returning to +Once unblocked, it reads first PUSCH data, then PRACH data, before returning to OAI. diff --git a/radio/fhi_72/oran_isolate.c b/radio/fhi_72/oran_isolate.c index 29da80a979..4f45a6cf18 100644 --- a/radio/fhi_72/oran_isolate.c +++ b/radio/fhi_72/oran_isolate.c @@ -277,19 +277,7 @@ void oran_fh_if4p5_south_in(RU_t *ru, int *frame, int *slot) .prach_buf = NULL, }; - /* Firstly, process PRACH packets */ - int f_prach, sl_prach; -#if defined F_RELEASE - // no PRACH callback (no queue) in F release so use the expected combination - f_prach = *frame; - sl_prach = *slot; -#endif - ret = xran_fh_rx_prach_read_slot(ru->gNB_list[0], &ru_info, &f_prach, &sl_prach); - if (ret != 0) { - printf("ORAN: %d.%d ORAN_fh_if4p5_south_in ERROR in RX PRACH function \n", f_prach, sl_prach); - } - - /* Secondly, process PUSCH packets */ + /* Firstly, process PUSCH packets */ RU_proc_t *proc = &ru->proc; // to check if (frame,slot) combination corresponds to the expected PUSCH one int f, sl; LOG_D(HW, "Read rxdataF %p,%p\n", ru_info.rxdataF[0], ru_info.rxdataF[1]); @@ -301,6 +289,18 @@ void oran_fh_if4p5_south_in(RU_t *ru, int *frame, int *slot) printf("ORAN: %d.%d ORAN_fh_if4p5_south_in ERROR in RX function \n", f, sl); } + /* Secondly, process PRACH packets */ + int f_prach, sl_prach; +#if defined F_RELEASE + // no PRACH callback (no queue) in F release so use the expected combination + f_prach = *frame; + sl_prach = *slot; +#endif + ret = xran_fh_rx_prach_read_slot(ru->gNB_list[0], &ru_info, &f_prach, &sl_prach); + if (ret != 0) { + printf("ORAN: %d.%d ORAN_fh_if4p5_south_in ERROR in RX PRACH function \n", f_prach, sl_prach); + } + int slots_per_frame = 10 << (ru->openair0_cfg.nr_scs_for_raster); proc->tti_rx = sl; proc->frame_rx = f;