From e3bad16ab875e534d76dc68e6db01b7d7dc1864d Mon Sep 17 00:00:00 2001 From: Robert Schmidt Date: Mon, 19 Feb 2024 19:20:19 +0100 Subject: [PATCH] Call indication regularly Upon reception of FAPI UL messages (e.g., RACH.indication), those messages are put into queues, to be delivered in a single call, NR_UL_indication(). Call the scheduler to trigger processing in UL. Note that ideally, these queues should not exist at all, and messages should just be delivered asynchronously, as this would lead to less copying of messages. Currently, we fulfill the scheduler interface instead. Important! Trigger UL after having run DL scheduler and sent the messages, to ensure short delay between Slot.indication, and the response to those messages. --- nfapi/oai_integration/nfapi_vnf.c | 4 ++++ openair2/NR_PHY_INTERFACE/NR_IF_Module.c | 3 ++- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/nfapi/oai_integration/nfapi_vnf.c b/nfapi/oai_integration/nfapi_vnf.c index 16f23069b7..cd4deb2661 100644 --- a/nfapi/oai_integration/nfapi_vnf.c +++ b/nfapi/oai_integration/nfapi_vnf.c @@ -1099,6 +1099,10 @@ int trigger_scheduler(nfapi_nr_slot_indication_scf_t *slot_ind) if (g_sched_resp.UL_dci_req.numPdus > 0) oai_nfapi_ul_dci_req(&g_sched_resp.UL_dci_req); + + NR_UL_IND_t ind = {.frame = slot_ind->sfn, .slot = slot_ind->slot, }; + NR_UL_indication(&ind); + return 1; } diff --git a/openair2/NR_PHY_INTERFACE/NR_IF_Module.c b/openair2/NR_PHY_INTERFACE/NR_IF_Module.c index 9a2c9ed94b..6e6b204d20 100644 --- a/openair2/NR_PHY_INTERFACE/NR_IF_Module.c +++ b/openair2/NR_PHY_INTERFACE/NR_IF_Module.c @@ -495,7 +495,8 @@ void NR_UL_indication(NR_UL_IND_t *UL_info) { } } - handle_nr_rach(UL_info); + if (UL_info->rach_ind.number_of_pdus > 0) + handle_nr_rach(UL_info); handle_nr_uci(UL_info); handle_nr_ulsch(UL_info); handle_nr_srs(UL_info);