X-Git-Url: https://gerrit.o-ran-sc.org/r/gitweb?a=blobdiff_plain;f=fapi_5g%2Fsource%2Fapi%2Ffapi2mac%2Fp7%2Fnr5g_fapi_proc_slot_ind.c;h=fee2d5de4ce3fbe3b740abb7fd773bf0d336ee91;hb=HEAD;hp=9a01e029888798006ff3bffceff63ea3468d9557;hpb=9d66fca5c45c8b3e0d6eab6d51a90c8e9d2614dc;p=o-du%2Fphy.git diff --git a/fapi_5g/source/api/fapi2mac/p7/nr5g_fapi_proc_slot_ind.c b/fapi_5g/source/api/fapi2mac/p7/nr5g_fapi_proc_slot_ind.c index 9a01e02..fee2d5d 100644 --- a/fapi_5g/source/api/fapi2mac/p7/nr5g_fapi_proc_slot_ind.c +++ b/fapi_5g/source/api/fapi2mac/p7/nr5g_fapi_proc_slot_ind.c @@ -1,6 +1,6 @@ /****************************************************************************** * -* Copyright (c) 2019 Intel. +* Copyright (c) 2021 Intel. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -22,8 +22,8 @@ * **/ +#include "nr5g_mac_phy_api.h" #include "nr5g_fapi_framework.h" -#include "gnb_l1_l2_api.h" #include "nr5g_fapi_fapi2mac_api.h" #include "nr5g_fapi_fapi2mac_p7_proc.h" @@ -39,7 +39,9 @@ * **/ uint8_t nr5g_fapi_slot_indication( + bool is_urllc, p_nr5g_fapi_phy_ctx_t p_phy_ctx, + p_fapi_api_stored_vendor_queue_elems vendor_extension_elems, PSlotIndicationStruct p_iapi_resp) { uint8_t phy_id; @@ -61,39 +63,52 @@ uint8_t nr5g_fapi_slot_indication( return FAILURE; } - phy_id = p_iapi_resp->sSFN_Slot.nCarrierIdx; - p_phy_instance = &p_phy_ctx->phy_instance[phy_id]; - if ((p_phy_instance->phy_id != phy_id)) { - NR5G_FAPI_LOG(ERROR_LOG, ("[SLOT.indication] Invalid " "phy instance")); - return FAILURE; - } + for (phy_id = 0; phy_id < FAPI_MAX_PHY_INSTANCES; phy_id++) { + if (FAPI_STATE_RUNNING == p_phy_ctx->phy_instance[phy_id].state) { + p_phy_instance = &p_phy_ctx->phy_instance[phy_id]; + if ((p_phy_instance->phy_id != phy_id)) { + NR5G_FAPI_LOG(ERROR_LOG, + ("[SLOT.indication] Invalid " "phy instance")); + return FAILURE; + } - p_stats = &p_phy_instance->stats; - p_stats->iapi_stats.iapi_slot_ind++; + p_stats = &p_phy_instance->stats; + p_stats->iapi_stats.iapi_slot_ind++; - p_list_elem = - nr5g_fapi_fapi2mac_create_api_list_elem(FAPI_SLOT_INDICATION, 1, - sizeof(fapi_slot_ind_t)); - if (!p_list_elem) { - NR5G_FAPI_LOG(ERROR_LOG, ("[SLOT.indication] Unable to create " - "list element. Out of memory!!!")); - return FAILURE; - } + p_list_elem = + nr5g_fapi_fapi2mac_create_api_list_elem(FAPI_SLOT_INDICATION, 1, + sizeof(fapi_slot_ind_t)); + + if (!p_list_elem) { + NR5G_FAPI_LOG(ERROR_LOG, ("[SLOT.indication] Unable to create " + "list element. Out of memory!!!")); + return FAILURE; + } - p_fapi_slot_ind = (fapi_slot_ind_t *) (p_list_elem + 1); - p_fapi_slot_ind->header.msg_id = FAPI_SLOT_INDICATION; - p_fapi_slot_ind->header.length = (uint16_t) sizeof(fapi_slot_ind_t); - p_fapi_slot_ind->sfn = p_iapi_resp->sSFN_Slot.nSFN; - p_fapi_slot_ind->slot = p_iapi_resp->sSFN_Slot.nSlot; + p_fapi_slot_ind = (fapi_slot_ind_t *) (p_list_elem + 1); + p_fapi_slot_ind->header.msg_id = FAPI_SLOT_INDICATION; + p_fapi_slot_ind->header.length = (uint16_t) sizeof(fapi_slot_ind_t); + p_fapi_slot_ind->sfn = p_iapi_resp->sSFN_Slot.nSFN; + p_fapi_slot_ind->slot = p_iapi_resp->sSFN_Slot.nSlot; - /* Add element to send list */ - nr5g_fapi_fapi2mac_add_api_to_list(phy_id, p_list_elem); + fapi_vendor_p7_ind_msg_t* p_fapi_vend_p7 = + nr5g_fapi_proc_vendor_p7_msg_get(vendor_extension_elems, phy_id); + fapi_vendor_ext_slot_ind_t* p_fapi_vend_slot_ind = p_fapi_vend_p7 ? &p_fapi_vend_p7->slot_ind : NULL; + + if (p_fapi_vend_slot_ind) { + p_fapi_vend_slot_ind->carrier_idx = p_iapi_resp->sSFN_Slot.nCarrierIdx; + p_fapi_vend_slot_ind->sym = p_iapi_resp->sSFN_Slot.nSym; + } - p_stats->fapi_stats.fapi_slot_ind++; - NR5G_FAPI_LOG(DEBUG_LOG, ("[SLOT.indication][%d][%d,%d]", - p_phy_instance->phy_id, - p_iapi_resp->sSFN_Slot.nSFN, - p_iapi_resp->sSFN_Slot.nSlot)); + /* Add element to send list */ + nr5g_fapi_fapi2mac_add_api_to_list(phy_id, p_list_elem, is_urllc); + p_stats->fapi_stats.fapi_slot_ind++; + NR5G_FAPI_LOG(DEBUG_LOG, ("[SLOT.indication][%u][%u,%u,%u] is_urllc %u", + p_phy_instance->phy_id, + p_iapi_resp->sSFN_Slot.nSFN, p_iapi_resp->sSFN_Slot.nSlot, + p_iapi_resp->sSFN_Slot.nSym, is_urllc)); + } + } return SUCCESS; }