X-Git-Url: https://gerrit.o-ran-sc.org/r/gitweb?a=blobdiff_plain;f=src%2F5gnrmac%2Frg_lim.c;h=e426f8f9761668205d4ad9cc7cc28575cc91f39d;hb=ff0c6fbd56fc24b9c286dc6444e1e0fbe8871625;hp=00011bee8a03fc843dacc5cc4aaab95fe8947eee;hpb=aa016a0a037017083dd793b564b47ed7855069ec;p=o-du%2Fl2.git diff --git a/src/5gnrmac/rg_lim.c b/src/5gnrmac/rg_lim.c index 00011bee8..e426f8f97 100755 --- a/src/5gnrmac/rg_lim.c +++ b/src/5gnrmac/rg_lim.c @@ -32,21 +32,8 @@ @brief It has APIs exposed by Lower Interface Modulue of MAC. It acts as an Interface handler for lower interface APIs. */ -static const char* RLOG_MODULE_NAME="MAC"; -static int RLOG_FILE_ID=182; -static int RLOG_MODULE_ID=4096; /* header include files -- defines (.h) */ -#include "envopt.h" /* environment options */ -#include "envdep.h" /* environment dependent */ -#include "envind.h" /* environment independent */ -#include "gen.h" /* general layer */ -#include "ssi.h" /* system services */ -#include "cm5.h" /* common timers defines */ -#include "cm_hash.h" /* common hash list defines */ -#include "cm_llist.h" /* common linked list defines */ -#include "cm_mblk.h" /* memory management */ -#include "cm_tkns.h" /* common tokens */ -#include "cm_lte.h" /* common tokens */ +#include "common_def.h" #include "rgu.h" /* RGU defines */ #include "tfu.h" /* RGU defines */ #include "lrg.h" /* layer management defines for LTE-MAC */ @@ -54,154 +41,28 @@ 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 */ -#include "ssi.x" /* system services typedefs */ -#include "cm5.x" /* common timers */ -#include "cm_hash.x" /* common hash list */ -#include "cm_lib.x" /* common library */ -#include "cm_llist.x" /* common linked list */ -#include "cm_mblk.x" /* memory management */ -#include "cm_tkns.x" /* common tokens */ -#include "cm_lte.x" /* common tokens */ #include "rgu.x" /* RGU types */ #include "tfu.x" /* RGU types */ #include "lrg.x" /* layer management typedefs for MAC */ #include "crg.x" /* layer management typedefs for MAC */ #include "rg_sch_inf.x" /* SCH interface typedefs */ #include "rg_prg.x" /* PRG interface typedefs */ -#include "du_app_mac_inf.h" #include "rg.x" /* typedefs for MAC */ -#include "mac_sch_interface.h" -/* local defines */ - -/* local typedefs */ - /* local externs */ #ifdef UNUSED_FUNC -PRIVATE S16 rgLIMValidateSap ARGS((Inst inst,SuId suId)); +static S16 rgLIMValidateSap ARGS((Inst inst,SuId suId)); #endif -PRIVATE Void rgLIMUtlFreeDatIndEvnt ARGS((TfuDatIndInfo *datInd, +static 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, +static Void rgLIMUtlFreeDatReqEvnt ARGS((TfuDatReqInfo *datReq, Bool error)); #endif /* forward references */ -/** - * @brief This API is invoked to send TFU SAP bind request to PHY. - * - * @details - * - * Function : rgLIMTfuBndReq - * - * This API is invoked to send TFU SAP bind request to PHY. It fills in - * the Pst structure, spId and suId values and invokes bind request - * primitive at TFU. - * - * @param[in] Inst inst - * @param[in] SuId suId - * @param[in] SpId spId - * @return S16 - * -# ROK - * -# RFAILED - **/ -#ifdef ANSI -PUBLIC S16 rgLIMTfuBndReq -( -Inst inst, -SuId suId, -SpId spId -) -#else -PUBLIC S16 rgLIMTfuBndReq(inst,suId, spId) -Inst inst; -SuId suId; -SpId spId; -#endif -{ - S16 ret; - RgLowSapCb *tfuSap; - Pst pst; - - TRC2(rgLIMTfuBndReq); - - /* Get the lower SAP control block from the layer control block. */ - tfuSap = &(rgCb[inst].tfuSap); - (Void)cmMemcpy ((U8*)&pst, (U8*)&(tfuSap->sapCfg.sapPst), sizeof(Pst)); - if((ret = RgLiTfuBndReq (&pst, suId, spId)) != ROK) - { - RLOG0(L_ERROR,"Call to RgLiTfuBndReq() failed"); - } - RETVALUE(ret); -} /* rgLIMTfuBndReq */ - - -/** - * @brief This API is invoked to send TFU SAP unbind request to PHY. - * - * @details - * - * Function : rgLIMTfuBndReq - * - * This API is invoked to send TFU SAP unbind request to PHY. It fills in - * the Pst structure and spId value and invokes unbind request - * primitive at TFU. - * - * @param[in] Inst inst - * @param[in] SpId spId - * @param[in] Reason reason - * @return S16 - * -# ROK - * -# RFAILED - **/ -#ifdef ANSI -PUBLIC S16 rgLIMTfuUbndReq -( -Inst inst, -SpId spId, -Reason reason -) -#else -PUBLIC S16 rgLIMTfuUbndReq(inst,spId, reason) -Inst inst; -SpId spId; -Reason reason; -#endif -{ - S16 ret; - RgLowSapCb *tfuSap; - Pst pst; - - TRC2(rgLIMTfuUbndReq); - - /* Get the lower SAP control block from the layer control block. */ - tfuSap = &(rgCb[inst].tfuSap); - cmMemcpy ((U8*)&pst, (U8*)&(tfuSap->sapCfg.sapPst), sizeof(Pst)); - if((ret = RgLiTfuUbndReq (&pst, tfuSap->sapCfg.spId, reason)) != ROK) - { - RLOG0(L_ERROR,"Call to RgLiTfuUbndReq() failed"); - } - RETVALUE(ret); - -} /* rgLIMTfuUbndReq */ - - /** * @brief Bind confirm API for TFU SAP * @@ -214,30 +75,22 @@ Reason reason; * * @param[in] Pst *pst * @param[in] SuId suId - * @param[in] U8 status + * @param[in] uint8_t status * @return S16 * -# ROK * -# RFAILED **/ -#ifdef ANSI -PUBLIC S16 RgLiTfuBndCfm +S16 RgLiTfuBndCfm ( Pst *pst, SuId suId, -U8 status +uint8_t status ) -#else -PUBLIC S16 RgLiTfuBndCfm(pst, suId, status) -Pst *pst; -SuId suId; -U8 status; -#endif { Inst inst; S16 ret; RgLowSapCb *tfuSap; - TRC3(RgLiTfuBndCfm); RG_IS_INST_VALID(pst->dstInst); @@ -248,12 +101,12 @@ U8 status; if (suId != tfuSap->sapCfg.suId) { - RLOG2(L_ERROR,"Incorrect SuId. Configured (%d) Recieved (%d)", + DU_LOG("\nERROR --> MAC : Incorrect SuId. Configured (%d) Recieved (%d)", tfuSap->sapCfg.suId, suId); - RETVALUE(RFAILED); + return RFAILED; } ret = rgLMMBndCfm (pst, suId, status); - RETVALUE(ret); + return (ret); } /* RgLiTfuBndCfm */ /** @brief This function Validates the SAP information received along with the @@ -267,38 +120,27 @@ U8 status; * -# RFAILED */ #ifdef UNUSED_FUNC -#ifdef ANSI -PRIVATE S16 rgLIMValidateSap -( - Inst inst, - SuId suId -) -#else -PRIVATE S16 rgLIMValidateSap(inst,suId) - Inst inst; - SuId suId; -#endif +static S16 rgLIMValidateSap(Inst inst,SuId suId) { RgLowSapCb *tfuSap; - TRC2(rgLIMValidateSap) tfuSap = &(rgCb[inst].tfuSap); /* First lets check the suId */ if( suId != tfuSap->sapCfg.suId) { - RLOG2(L_ERROR,"Incorrect SuId. Configured (%d) Recieved (%d)", + DU_LOG("\nERROR --> MAC : Incorrect SuId. Configured (%d) Recieved (%d)", tfuSap->sapCfg.suId, suId); - RETVALUE(RFAILED); + return RFAILED; } if (tfuSap->sapSta.sapState != LRG_BND) { - RLOG1(L_ERROR,"Lower SAP not enabled SuId (%d)", + DU_LOG("\nERROR --> MAC : Lower SAP not enabled SuId (%d)", tfuSap->sapCfg.suId); - RETVALUE(RFAILED); + return RFAILED; } - RETVALUE(ROK); + return ROK; } /* end of rgLIMValidateSap */ #endif /** @brief This function frees up the TfuDatIndInfo structure @@ -314,23 +156,12 @@ PRIVATE S16 rgLIMValidateSap(inst,suId) * @param [in] Bool *error * @return */ -#ifdef ANSI -PRIVATE Void rgLIMUtlFreeDatIndEvnt -( - TfuDatIndInfo *datInd, - Bool error - ) -#else -PRIVATE Void rgLIMUtlFreeDatIndEvnt(datInd, error) - TfuDatIndInfo *datInd; - Bool error; -#endif +static Void rgLIMUtlFreeDatIndEvnt(TfuDatIndInfo *datInd,Bool error) { TfuDatInfo *datInfo; CmLList *node; - TRC2(rgLIMUtlFreeDatIndEvnt); /* Steps of freeing up the TfuDatInd. * 1. loop through the datIndLst and free up all the buffers. * 2. free up the whole event @@ -346,7 +177,7 @@ PRIVATE Void rgLIMUtlFreeDatIndEvnt(datInd, error) } } RG_FREE_MEM(datInd); - RETVOID; + return; } /* end of rgLIMUtlFreeDatIndEvnt*/ /** @@ -366,27 +197,19 @@ PRIVATE Void rgLIMUtlFreeDatIndEvnt(datInd, error) * -# ROK * -# RFAILED **/ -#ifdef ANSI -PUBLIC S16 RgLiTfuDatInd +S16 RgLiTfuDatInd ( Pst *pst, SuId suId, TfuDatIndInfo *datInd ) -#else -PUBLIC S16 RgLiTfuDatInd(pst, suId, datInd) -Pst *pst; -SuId suId; -TfuDatIndInfo *datInd; -#endif { Inst inst; S16 ret; - VOLATILE U32 startTime=0; + volatile uint32_t startTime=0; - TRC3(RgLiTfuDatInd); - // printf("5GTF:: DatindRcvd\n"); + // DU_LOG("5GTF:: DatindRcvd\n"); RG_IS_INST_VALID(pst->dstInst); inst = pst->dstInst - RG_INST_START; @@ -396,9 +219,9 @@ TfuDatIndInfo *datInd; #ifndef NO_ERRCLS if ((ret = rgLIMValidateSap (inst,suId)) != ROK) { - RLOG_ARG0(L_ERROR,DBG_CELLID,datInd->cellId,"SAP Validation failed"); + DU_LOG("\nERROR --> MAC : SAP Validation failed"); rgLIMUtlFreeDatIndEvnt(datInd, TRUE); - RETVALUE(ret); + return (ret); } #endif /* Now call the TOM (Tfu ownership module) primitive to process further */ @@ -419,7 +242,7 @@ TfuDatIndInfo *datInd; /*stoping Task*/ SStopTask(startTime, PID_MAC_TFU_DATIND); - RETVALUE(ret); + return (ret); } /* RgLiTfuDatInd*/ #ifdef RG_UNUSED @@ -436,24 +259,13 @@ TfuDatIndInfo *datInd; * @param [in] Bool *error * @return */ -#ifdef ANSI -PRIVATE Void rgLIMUtlFreeDatReqEvnt -( - TfuDatReqInfo *datReq, - Bool error - ) -#else -PRIVATE Void rgLIMUtlFreeDatReqEvnt(datReq, error) - TfuDatReqInfo *datReq; - Bool error; -#endif +static Void rgLIMUtlFreeDatReqEvnt(TfuDatReqInfo *datReq,Bool error) { TfuDatReqPduInfo *datInfo; CmLList *node; - U8 i; + uint8_t i; - TRC2(rgLIMUtlFreeDatReqEvnt); /* Steps of freeing up the TfuDatReq. * 1. Free the bch buffer. * 2. loop through the pdus list and free up all the buffers. @@ -483,69 +295,9 @@ PRIVATE Void rgLIMUtlFreeDatReqEvnt(datReq, error) } } RG_FREE_MEM(datReq); - RETVOID; + return; } /* end of rgLIMUtlFreeDatReqEvnt*/ #endif -/** - * @brief This API is invoked to send Data to PHY. - * - * @details - * - * Function : rgLIMTfuDatReq - * - * This API is invoked to send Data to PHY. It - * fills in the Pst structure, spId value and invokes Data - * request primitive at TFU. - * - * @param[in] Inst inst - * @param[in] TfuDatReqInfo *datReq - * @return S16 - * -# ROK - * -# RFAILED - **/ -#ifdef ANSI -PUBLIC S16 rgLIMTfuDatReq -( -Inst inst, -TfuDatReqInfo *datReq -) -#else -PUBLIC S16 rgLIMTfuDatReq(inst,datReq) -Inst inst; -TfuDatReqInfo *datReq; -#endif -{ - S16 ret; - RgLowSapCb *tfuSap; - - TRC2(rgLIMTfuDatReq) - - /* Get the lower SAP control block from the layer control block. */ - tfuSap = &(rgCb[inst].tfuSap); - -#ifndef NO_ERRCLS - if (tfuSap->sapSta.sapState != LRG_BND) - { - RLOG_ARG1(L_ERROR,DBG_CELLID,datReq->cellId,"Lower SAP not bound (%d)", - tfuSap->sapSta.sapState); -#ifdef RG_UNUSED - /* This case will never be hit if sap is not bound then we dont get TTI */ - rgLIMUtlFreeDatReqEvnt(datReq, TRUE); -#endif - RETVALUE(RFAILED); - } -#endif - - tfuSap->sapSts.numPduTxmit += datReq->pdus.count; - - /* Using existing pst - for optimization */ - if((ret = RgLiTfuDatReq (&tfuSap->sapCfg.sapPst, tfuSap->sapCfg.spId, - datReq)) != ROK) - { - RLOG_ARG0(L_ERROR,DBG_CELLID,datReq->cellId,"Call to RgLiTfuDatReq() failed"); - } - RETVALUE(ret); -} /* rgLIMTfuDatReq*/ #ifdef L2_OPTMZ /** @@ -565,22 +317,11 @@ TfuDatReqInfo *datReq; * -# ROK * -# RFAILED **/ -#ifdef ANSI -PUBLIC S16 rgLIMTfuDelDatReq -( -Inst inst, -TfuDelDatReqInfo *delDatReq -) -#else -PUBLIC S16 rgLIMTfuDatReq(inst,delDatReq) -Inst inst; -TfuDelDatReqInfo *delDatReq; -#endif +S16 rgLIMTfuDelDatReq(Inst inst,TfuDelDatReqInfo *delDatReq) { S16 ret; RgLowSapCb *tfuSap; - TRC2(rgLIMTfuDelDatReq) /* Get the lower SAP control block from the layer control block. */ tfuSap = &(rgCb[inst].tfuSap); @@ -588,108 +329,21 @@ TfuDelDatReqInfo *delDatReq; #ifndef NO_ERRCLS if (tfuSap->sapSta.sapState != LRG_BND) { - RLOG_ARG1(L_ERROR,DBG_CELLID,delDatReq->cellId,"Lower SAP not bound (%d)", + DU_LOG("\nERROR --> MAC : Lower SAP not bound (%d)", tfuSap->sapSta.sapState); - RETVALUE(RFAILED); + return RFAILED; } #endif if((ret = RgLiTfuDelDatReq (&tfuSap->sapCfg.sapPst, tfuSap->sapCfg.spId, delDatReq)) != ROK) { - RLOG_ARG0(L_ERROR,DBG_CELLID,delDatReq->cellId,"Call to RgLiTfuDelDatReq() failed"); + DU_LOG("\nERROR --> MAC : Call to RgLiTfuDelDatReq() failed"); } - RETVALUE(ret); + return (ret); } /* rgLIMTfuDatReq*/ #endif /*L2_OPTMZ */ -/** - * @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) -{ - int ret = ROK; - /* fill Pst structure to send to lwr_mac to MAC */ - Pst pst; - pst.srcProcId = 0; - pst.dstProcId = 0; - pst.srcEnt = ENTRG; - pst.dstEnt = ENTRG; - pst.srcInst = 0; - pst.dstInst = 1; - pst.event = EVENT_SLOT_IND_TO_SCH; - pst.region = 0; - pst.pool = 0; - pst.selector = MAC_SELECTOR_TC; - - return(*macSchSlotIndOpts[pst.selector])(&pst,slotInd); -} - -/** - * @brief Transmission time interval indication from PHY. - * - * @details - * - * 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] SlotIndInfo *slotInd - * @return S16 - * -# ROK - * -# RFAILED - **/ -PUBLIC S16 fapiMacSlotInd -( -Pst *pst, -SlotIndInfo *slotInd -) -{ - S16 ret; - VOLATILE U32 startTime=0; - Inst inst; - - RG_IS_INST_VALID(pst->dstInst); - inst = pst->dstInst - RG_INST_START; - /*starting Task*/ - SStartTask(&startTime, PID_MAC_TTI_IND); - - /* send slot indication to scheduler */ - ret = sendSlotIndMacToSch(slotInd); - if(ret != ROK) - { - DU_LOG("\nsending of slot ind msg from MAC to SCH failed"); - RETVALUE(ret); - } - - /* Now call the TOM (Tfu ownership module) primitive to process further */ - ret = macProcessSlotInd(inst,*slotInd); - if(ret != ROK) - { - DU_LOG("\nmacProcessSlotInd failed"); - RETVALUE(ret); - } - - - /*stoping Task*/ - SStopTask(startTime, PID_MAC_TTI_IND); - - RETVALUE(ret); -} /* fapiMacSlotInd */ - #if defined(TENB_T2K3K_SPECIFIC_CHANGES) && defined(LTE_TDD) /** * @brief Transmission of non-rt indication from CL. @@ -706,29 +360,18 @@ SlotIndInfo *slotInd * -# ROK * -# RFAILED **/ -#ifdef ANSI -PUBLIC S16 RgLiTfuNonRtInd -( -Pst *pst, -SuId suId -) -#else -PUBLIC S16 RgLiTfuNonRtInd(pst, suId) -Pst *pst; -SuId suId; -#endif +S16 RgLiTfuNonRtInd(Pst *pst,SuId suId) { - TRC3(RgLiTfuNonRtInd); #ifdef NO_ERRCLS if (rgLIMValidateSap (pst->dstInst - RG_INST_START, suId) != ROK) { - RGDBGERRNEW(pst->dstInst - RG_INST_START, (rgPBuf(pst->dstInst - RG_INST_START),"RgLiTfuNonRtInd() SAP Validation failed.\n")); - RETVALUE(RFAILED); + DU_LOG("\nERROR --> MAC : RgLiTfuNonRtInd() SAP Validation failed.\n"); + return RFAILED; } #endif rgDHMFreeTbBufs(pst->dstInst - RG_INST_START); - RETVALUE(ROK); + return ROK; } /* RgLiTfuNonRtInd */ #endif