From 7e18293c7064ad57be1eefb639e2ad36d4d842de Mon Sep 17 00:00:00 2001 From: Raymond Knopp Date: Fri, 16 Aug 2024 11:24:42 +0200 Subject: [PATCH] Changes for multi-RU support in fhi72 Co-authored-by: Robert Schmidt --- radio/fhi_72/oaioran.c | 11 ++++++++++- radio/fhi_72/oran-init.c | 8 ++++++-- radio/fhi_72/oran-init.h | 4 ++-- 3 files changed, 18 insertions(+), 5 deletions(-) diff --git a/radio/fhi_72/oaioran.c b/radio/fhi_72/oaioran.c index 247293c18f..300a6869cf 100644 --- a/radio/fhi_72/oaioran.c +++ b/radio/fhi_72/oaioran.c @@ -92,10 +92,19 @@ void oai_xran_fh_rx_callback(void *pCallbackTag, xran_status_t status) rx_sym = callback_tag->symbol; uint32_t ru_id = callback_tag->oXuId; + + LOG_D(NR_PHY, + "rx_callback frame %d, subframe %d, slot %d, second %lld, rx_sym %d ru_id %d\n", + frame, + subframe, + slot, + (unsigned long long)second, + rx_sym, + ru_id); if (rx_sym == 7) { if (first_call_set) { if (!first_rx_set) { - LOG_I(NR_PHY, "first_rx is set (num_ports %d)\n", num_ports); + LOG_I(NR_PHY, "first_rx is set (num_ports %d), first_read_set %d\n", num_ports, first_read_set); } first_rx_set = 1; if (first_read_set == 1) { diff --git a/radio/fhi_72/oran-init.c b/radio/fhi_72/oran-init.c index 8673b5d2b4..7a629ce5aa 100644 --- a/radio/fhi_72/oran-init.c +++ b/radio/fhi_72/oran-init.c @@ -392,8 +392,8 @@ static void oran_allocate_buffers(void *handle, } } - xran_5g_fronthault_config(pi->instanceHandle, src, srccp, dst, dstcp, oai_xran_fh_rx_callback, &portInstances->RxCbTag[0][0]); - xran_5g_prach_req(pi->instanceHandle, prach, prachdecomp, oai_xran_fh_rx_prach_callback, &portInstances->PrachCbTag[0][0]); + xran_5g_fronthault_config(pi->instanceHandle, src, srccp, dst, dstcp, oai_xran_fh_rx_callback, &portInstances->pusch_tag); + xran_5g_prach_req(pi->instanceHandle, prach, prachdecomp, oai_xran_fh_rx_prach_callback, &portInstances->prach_tag); } int *oai_oran_initialize(const openair0_config_t *openair0_cfg) @@ -432,7 +432,11 @@ int *oai_oran_initialize(const openair0_config_t *openair0_cfg) } int sector = 0; + printf("Initialize ORAN port instance %d (%d) sector %d\n", o_xu_id, init.xran_ports, sector); oran_port_instance_t *pi = &gPortInst[o_xu_id][sector]; + struct xran_cb_tag tag = {.cellId = sector, .oXuId = o_xu_id}; + pi->prach_tag = tag; + pi->pusch_tag = tag; oran_allocate_buffers(gxran_handle, o_xu_id, 1, pi, &xran_fh_config[o_xu_id]); if ((xret = xran_reg_physide_cb(gxran_handle, oai_physide_dl_tti_call_back, NULL, 10, XRAN_CB_TTI)) != XRAN_STATUS_SUCCESS) { diff --git a/radio/fhi_72/oran-init.h b/radio/fhi_72/oran-init.h index 2c3e5a8ca0..dad57a60c3 100644 --- a/radio/fhi_72/oran-init.h +++ b/radio/fhi_72/oran-init.h @@ -50,8 +50,8 @@ typedef struct oran_port_instance_t { void *instanceHandle; //uint32_t dpdkPoolIndex[MAX_SW_XRAN_INTERFACE_NUM]; - struct xran_cb_tag RxCbTag[XRAN_PORTS_NUM][XRAN_MAX_SECTOR_NR]; - struct xran_cb_tag PrachCbTag[XRAN_PORTS_NUM][XRAN_MAX_SECTOR_NR]; + struct xran_cb_tag prach_tag; + struct xran_cb_tag pusch_tag; } oran_port_instance_t; extern struct xran_fh_config gxran_fh_config[XRAN_PORTS_NUM];