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:
committed by
Romain Beurdouche
parent
d06bd3d49f
commit
84a1eb8b07
@@ -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
|
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()`/
|
cases depends on xran calling the callbacks `oai_xran_fh_rx_callback()`/
|
||||||
`oai_xran_fh_rx_prach_callback()` as installed during xran initialization.
|
`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.
|
OAI.
|
||||||
|
|||||||
+13
-13
@@ -277,19 +277,7 @@ void oran_fh_if4p5_south_in(RU_t *ru, int *frame, int *slot)
|
|||||||
.prach_buf = NULL,
|
.prach_buf = NULL,
|
||||||
};
|
};
|
||||||
|
|
||||||
/* Firstly, process PRACH packets */
|
/* Firstly, process PUSCH 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 */
|
|
||||||
RU_proc_t *proc = &ru->proc; // to check if (frame,slot) combination corresponds to the expected PUSCH one
|
RU_proc_t *proc = &ru->proc; // to check if (frame,slot) combination corresponds to the expected PUSCH one
|
||||||
int f, sl;
|
int f, sl;
|
||||||
LOG_D(HW, "Read rxdataF %p,%p\n", ru_info.rxdataF[0], ru_info.rxdataF[1]);
|
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);
|
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);
|
int slots_per_frame = 10 << (ru->openair0_cfg.nr_scs_for_raster);
|
||||||
proc->tti_rx = sl;
|
proc->tti_rx = sl;
|
||||||
proc->frame_rx = f;
|
proc->frame_rx = f;
|
||||||
|
|||||||
Reference in New Issue
Block a user