[Epic-ID: ODUHIGH-464][Task-ID: ODUHIGH-483] Memeory related fix in FDD and TDD mode
[o-du/l2.git] / src / 5gnrmac / rg_lim.c
index def7ae8..e426f8f 100755 (executable)
 @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,150 +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"
-#include "mac_upr_inf_api.h"
-
 /* local externs */
-PRIVATE S16  rgLIMValidateSap ARGS((Inst inst,SuId suId));
-PRIVATE Void rgLIMUtlFreeDatIndEvnt ARGS((TfuDatIndInfo *datInd,
+#ifdef UNUSED_FUNC
+static S16  rgLIMValidateSap ARGS((Inst inst,SuId suId));
+#endif
+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 
  *
@@ -210,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);
@@ -244,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
@@ -262,40 +119,30 @@ U8      status;
   *   -# ROK
   *   -# RFAILED
   */
-#ifdef ANSI
-PRIVATE S16 rgLIMValidateSap
-(
- Inst    inst,
- SuId    suId
-)
-#else
-PRIVATE S16 rgLIMValidateSap(inst,suId)
- Inst    inst;
- SuId    suId;
-#endif
+#ifdef UNUSED_FUNC
+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
  *
  * @details
@@ -309,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
@@ -341,7 +177,7 @@ PRIVATE Void rgLIMUtlFreeDatIndEvnt(datInd, error)
       }
    }
    RG_FREE_MEM(datInd);
-   RETVOID;
+   return;
 } /* end of rgLIMUtlFreeDatIndEvnt*/
 
 /**
@@ -361,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;
@@ -391,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 */
@@ -414,7 +242,7 @@ TfuDatIndInfo    *datInd;
    /*stoping Task*/
    SStopTask(startTime, PID_MAC_TFU_DATIND);
 
-   RETVALUE(ret);
+   return (ret);
 }  /* RgLiTfuDatInd*/
 
 #ifdef RG_UNUSED
@@ -431,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.
@@ -478,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
 /**
@@ -560,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);
@@ -583,166 +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 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;
-   }
-
-   /* Fill Pst */
-   pst.selector  = DU_MAC_LWLC;
-   pst.srcEnt    = ENTRG;
-   pst.dstEnt    = ENTDUAPP;
-   pst.dstInst   = 0;
-   pst.srcInst   = 0;
-   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.
@@ -759,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