@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 */
#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_upr_inf_api.h"
-#include "mac.h"
-
/* 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
*
*
* @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);
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
* -# 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
* @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
}
}
RG_FREE_MEM(datInd);
- RETVOID;
+ return;
} /* end of rgLIMUtlFreeDatIndEvnt*/
/**
* -# 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;
#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 */
/*stoping Task*/
SStopTask(startTime, PID_MAC_TFU_DATIND);
- RETVALUE(ret);
+ return (ret);
} /* RgLiTfuDatInd*/
#ifdef RG_UNUSED
* @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.
}
}
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
/**
* -# 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);
#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 */
-void fapiMacConfigRsp()
-{
- /* TODO : Processing of conig 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)
-{
- 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 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;
- SlotInfo *slotInfo;
-
- /* Send Slot Indication to DU APP */
- MAC_ALLOC(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;
-
- return MacDuAppSlotInd(&pst, slotInfo);
-
-}
-
-/**
- * @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;
-
- 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);
-
- /* send slot indication to scheduler */
- ret = sendSlotIndMacToSch(slotInd);
- if(ret != ROK)
- {
- DU_LOG("\nMAC : Sending 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("\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);
-} /* fapiMacSlotInd */
-
#if defined(TENB_T2K3K_SPECIFIC_CHANGES) && defined(LTE_TDD)
/**
* @brief Transmission of non-rt indication from CL.
* -# 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