X-Git-Url: https://gerrit.o-ran-sc.org/r/gitweb?a=blobdiff_plain;f=src%2F5gnrmac%2Frg_lim.c;h=6c7582e470d49f5e32ed60d47c1a7df392766cfd;hb=069ae37558afd5aee2d1072bbf5b517cf665bdd8;hp=44c04515cacf277c5485d0df0566ffd8dd9830bf;hpb=d1ead035ab3b543810f1838b2519904bf84477ec;p=o-du%2Fl2.git diff --git a/src/5gnrmac/rg_lim.c b/src/5gnrmac/rg_lim.c index 44c04515c..6c7582e47 100755 --- a/src/5gnrmac/rg_lim.c +++ b/src/5gnrmac/rg_lim.c @@ -54,7 +54,7 @@ static int RLOG_MODULE_ID=4096; #include "rg_sch_inf.h" /* layer management defines for LTE-MAC */ #include "rg_env.h" /* customisable defines and macros for MAC */ #include "rg.h" /* defines and macros for MAC */ - +#include "du_log.h" /* header/extern include files (.x) */ #include "gen.x" /* general layer typedefs */ @@ -72,17 +72,29 @@ static int RLOG_MODULE_ID=4096; #include "crg.x" /* layer management typedefs for MAC */ #include "rg_sch_inf.x" /* SCH interface typedefs */ #include "rg_prg.x" /* PRG interface typedefs */ -#include "mac_interface.h" +#include "du_app_mac_inf.h" #include "rg.x" /* typedefs for MAC */ -/* local defines */ +#include "mac_upr_inf_api.h" +#include "mac.h" -/* local typedefs */ - /* local externs */ +#ifdef UNUSED_FUNC PRIVATE S16 rgLIMValidateSap ARGS((Inst inst,SuId suId)); +#endif PRIVATE Void rgLIMUtlFreeDatIndEvnt ARGS((TfuDatIndInfo *datInd, Bool error)); + +/* function pointers for packing slot ind from mac to sch */ +//S16 packMacSchSlotInd(Pst *pst, SlotIndInfo *slotInd); + +MacSchSlotIndFunc macSchSlotIndOpts[] = +{ + packMacSchSlotInd, + macSchSlotInd, + packMacSchSlotInd +}; + #ifdef RG_UNUSED PRIVATE Void rgLIMUtlFreeDatReqEvnt ARGS((TfuDatReqInfo *datReq, Bool error)); @@ -252,6 +264,7 @@ U8 status; * -# ROK * -# RFAILED */ +#ifdef UNUSED_FUNC #ifdef ANSI PRIVATE S16 rgLIMValidateSap ( @@ -285,7 +298,7 @@ PRIVATE S16 rgLIMValidateSap(inst,suId) } RETVALUE(ROK); } /* end of rgLIMValidateSap */ - +#endif /** @brief This function frees up the TfuDatIndInfo structure * * @details @@ -588,64 +601,207 @@ TfuDelDatReqInfo *delDatReq; } /* rgLIMTfuDatReq*/ #endif /*L2_OPTMZ */ +/******************************************************************* + * + * @brief Fills post structure + * + * @details + * + * Function : fillMacToSchPst + * + * Functionality: + * Fills post structure to be used when sending msg from + * MAC to SCH + * + * @params[in] Post structure pointer + * @return ROK - success + * RFAILED - failure + * + * ****************************************************************/ +void fillMacToSchPst(Pst *pst) +{ + pst->srcProcId = 0; + pst->dstProcId = 0; + pst->srcEnt = ENTRG; + pst->dstEnt = ENTRG; + pst->srcInst = 0; + pst->dstInst = 1; + pst->region = 0; + pst->pool = 0; + pst->selector = MAC_SELECTOR_TC; +} + +/******************************************************************* + * + * @brief MAC handler for config response from PHY + * + * @details + * + * Function : fapiMacConfigRsp + * + * Functionality: + * Processes config response from PHY and sends cell config + * confirm to DU APP + * + * @params[in] + * @return void + * + * ****************************************************************/ +void fapiMacConfigRsp() +{ + /* TODO : Processing of config response from PHY */ + + /* Send cell config cfm to DU APP */ + MacSendCellCfgCfm(RSP_OK); +} + +/** + * @brief Transmission time interval indication from PHY. + * + * @details + * + * Function : sendSlotIndMacToSch + * + * This API is invoked by MAC to send slot ind to scheduler. + * + * @param[in] SlotIndInfo *slotInd + * @return S16 + * -# ROK + * -# RFAILED + **/ +int sendSlotIndMacToSch(SlotIndInfo *slotInd) +{ + /* fill Pst structure to send to lwr_mac to MAC */ + Pst pst; + + fillMacToSchPst(&pst); + pst.event = EVENT_SLOT_IND_TO_SCH; + + return(*macSchSlotIndOpts[pst.selector])(&pst,slotInd); +} + + +/******************************************************************* + * + * @brief Send slot indication to DU APP + * + * @details + * + * Function : sendSlotIndMacToDuApp + * + * Functionality: + * Send slot indication to DU APP + * + * @params[in] Slot indication info + * @return ROK - success + * RFAILED - failure + * + * ****************************************************************/ +int sendSlotIndMacToDuApp(SlotIndInfo *slotInd) +{ + Pst pst; + uint16_t ret; + SlotInfo *slotInfo; + + /* Allocate sharable memory */ + MAC_ALLOC_SHRABL_BUF(slotInfo, sizeof(SlotInfo)); + if(!slotInfo) + { + DU_LOG("\nMAC : Slot Indication memory allocation failed"); + return RFAILED; + } + + slotInfo->cellId = macCb.macCell->cellId; + slotInfo->sfn = slotInd->sfn; + slotInfo->slot = slotInd->slot; + + /* Fill Pst */ + pst.selector = DU_MAC_LWLC; + pst.srcEnt = ENTRG; + pst.dstEnt = ENTDUAPP; + pst.dstInst = 0; + pst.srcInst = macCb.macInst; + pst.dstProcId = rgCb[pst.srcInst].rgInit.procId; + pst.srcProcId = rgCb[pst.srcInst].rgInit.procId; + pst.region = MAC_MEM_REGION; + pst.pool = MAC_POOL; + pst.event = EVENT_MAC_SLOT_IND; + pst.route = 0; + pst.prior = 0; + pst.intfVer = 0; + + ret = MacDuAppSlotInd(&pst, slotInfo); + if(ret != ROK) + { + DU_LOG("\nMAC: Failed to send slot indication to DU APP"); + MAC_FREE_SHRABL_BUF(MAC_MEM_REGION, MAC_POOL, slotInfo, sizeof(SlotInfo)); + } + + return ret; +} + /** * @brief Transmission time interval indication from PHY. * * @details * - * Function : RgLiTfuTtiInd + * Function : fapiMacSlotInd * * This API is invoked by PHY to indicate TTI indication to MAC for a cell. * * @param[in] Pst *pst * @param[in] SuId suId - * @param[in] TfuTtiIndInfo *ttiInd + * @param[in] SlotIndInfo *slotInd * @return S16 * -# ROK * -# RFAILED **/ -#ifdef ANSI -PUBLIC S16 RgLiTfuTtiInd +PUBLIC S16 fapiMacSlotInd ( Pst *pst, -SuId suId, -TfuTtiIndInfo *ttiInd +SlotIndInfo *slotInd ) -#else -PUBLIC S16 RgLiTfuTtiInd(pst, suId, ttiInd) -Pst *pst; -SuId suId; -TfuTtiIndInfo *ttiInd; -#endif { S16 ret; VOLATILE U32 startTime=0; Inst inst; - TRC3(RgLiTfuTtiInd); - + DU_LOG("\nMAC : Slot Indication received"); + RG_IS_INST_VALID(pst->dstInst); inst = pst->dstInst - RG_INST_START; /*starting Task*/ SStartTask(&startTime, PID_MAC_TTI_IND); -#ifdef NO_ERRCLS - if ((ret = rgLIMValidateSap (pst->dstInst - RG_INST_START,suId)) != ROK) + /* send slot indication to scheduler */ + ret = sendSlotIndMacToSch(slotInd); + if(ret != ROK) { - RLOG_ARG0(L_ERROR,DBG_CELLID,ttiInd->cells[0].cellId,"SAP Validation failed"); + DU_LOG("\nMAC : Sending of slot ind msg from MAC to SCH failed"); RETVALUE(ret); } -#endif /* Now call the TOM (Tfu ownership module) primitive to process further */ - ret = rgTOMTtiInd(inst,ttiInd); + ret = macProcessSlotInd(inst,*slotInd); + if(ret != ROK) + { + DU_LOG("\nMAC : macProcessSlotInd failed"); + RETVALUE(ret); + } + /* send slot indication to du app */ + ret = sendSlotIndMacToDuApp(slotInd); + if(ret != ROK) + { + DU_LOG("\nMAC :Sending of slot ind msg from MAC to DU APP failed"); + RETVALUE(ret); + } /*stoping Task*/ SStopTask(startTime, PID_MAC_TTI_IND); RETVALUE(ret); -} /* RgLiTfuTtiInd */ +} /* fapiMacSlotInd */ #if defined(TENB_T2K3K_SPECIFIC_CHANGES) && defined(LTE_TDD) /**