Reverse the Rx processing order

First process PUSCH and then PRACH because the PUSCH callback
is called before PRACH callback.

Signed-off-by: Teodora Vladić <teodora.vladic@openairinterface.org>
This commit is contained in:
Teodora Vladić
2026-04-23 18:42:25 +02:00
committed by Romain Beurdouche
parent d06bd3d49f
commit 84a1eb8b07
2 changed files with 14 additions and 14 deletions
+1 -1
View File
@@ -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.
+13 -13
View File
@@ -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;