[EPIC-ID: ODUHIGH-488][TASK-ID: ODUHIGH-494]SCH framework update to support different...
[o-du/l2.git] / src / 5gnrmac / rg_lmm.c
index db579fc..f2f68e9 100755 (executable)
@@ -33,9 +33,6 @@
        The functions for the configuration, control, status and statistics 
        request primitives are defined here.
 */
-static const char* RLOG_MODULE_NAME="MAC";
-static int RLOG_FILE_ID=220;
-static int RLOG_MODULE_ID=4096;
 
 /* header include files (.h) */
 #include "common_def.h"
@@ -48,6 +45,7 @@ static int RLOG_MODULE_ID=4096;
 #include "rgr.h"           /* LRG Interface defines */
 #include "rg.h"            /* MAC defines */
 #include "rg_err.h"        /* MAC error defines */
+#include "mac_utils.h"
 
 /* header/extern include files (.x) */
 #include "crg.x"           /* CRG Interface includes */
@@ -64,12 +62,11 @@ static int RLOG_MODULE_ID=4096;
 #endif
 #include "ss_rbuf.h"
 #include "ss_rbuf.x"
-#include "lwr_mac.h"         /* MAC CL defines */
 #include "mac_sch_interface.h"
 #include "lwr_mac_upr_inf.h"
 #include "mac.h"
-#include "lwr_mac_phy.h"
 #include "lwr_mac_fsm.h"
+#include "lwr_mac_phy.h"
 
 #ifdef __cplusplus
 extern "C" {
@@ -80,7 +77,6 @@ Void rgGetSId ARGS((SystemId *s));
 #endif /* __cplusplus */
 
 /* Public variable declaration */
-LwrMacCb   lwrMacCb;
 MacCb  macCb;
 
 /* forward references */
@@ -95,35 +91,19 @@ static uint16_t rgLMMSapCfg ARGS((
    Elmnt          sapType
 ));
 
-static Void rgLMMShutdown ARGS((
-   Inst           inst
-));
-
 static Void rgLMMFillCfmPst ARGS((
    Pst           *reqPst,
    Pst           *cfmPst,
    RgMngmt       *cfm
 ));
 
-static Void rgLMMGenCntrl ARGS((
-RgMngmt       *cntrl,
-RgMngmt       *cfm,
-Pst           *cfmPst
-));
-
-static Void rgLMMSapCntrl ARGS((
-RgMngmt       *cntrl,
-RgMngmt       *cfm,
-Pst           *cfmPst
-));
-
 \f
 /**
  * @brief Task Initiation callback function. 
  *
  * @details
  *
- *     Function : rgActvInit
+ *     Function : macActvInit
  *     
  *     This function is supplied as one of parameters during MAC's 
  *     task registration. SSI will invoke this function once, after
@@ -137,7 +117,7 @@ Pst           *cfmPst
  *  @return  S16
  *      -# ROK
  **/
-S16 rgActvInit
+uint8_t macActvInit
 (
 Ent entity,            /* entity */
 Inst inst,             /* instance */
@@ -189,23 +169,15 @@ Reason reason          /* reason */
    SAttachSRngBuf(SS_RNG_BUF_ULMAC_TO_ULRLC, SS_RBUF_ENT_ULRLC,SS_RNG_RX);
 #endif
 
-   /* Initializing CL control block */
-   memset(&lwrMacCb, 0, sizeof(LwrMacCb));
-   lwrMacCb.region = region;
-   lwrMacCb.pool = 0;
-   lwrMacCb.clCfgDone = TRUE;
-   lwrMacCb.numCell = 0;
-   lwrMacCb.phyState = PHY_STATE_IDLE; 
-
    /* Initialize Scheduler as well */
-   schActvInit(ENTMAC, (DEFAULT_CELLS + SCH_INST_START), DFLT_REGION, PWR_UP);
+   schActvInit(ENTMAC, SCH_INST_START, DFLT_REGION, PWR_UP);
 
    /* Initialize lower mac */
-   lwrMacLayerInit();
+   lwrMacLayerInit(region, 0);
 
    return ROK;
 
-} /* rgActvInit */
+} /* macActvInit */
 \f
 /**
  * @brief Layer Manager Configuration request handler. 
@@ -239,8 +211,7 @@ RgMngmt  *cfg     /* config structure  */
 
 
 
-   RG_DIAG_LVL0(inst,0x0a0b0001, RG_DIAG_NA, SS_DIAG_INV_ARG,\
-   "Received CfgReq for MAC layer, Entity = %d, Instance = %d\n", pst->srcEnt, pst->srcInst,0,0);
+   DU_LOG("\nINFO  -->  MAC : Received CfgReq for MAC layer, Entity = %d, Instance = %d", pst->srcEnt, pst->srcInst);
 
    RG_IS_INST_VALID(pst->dstInst);
    inst = pst->dstInst - RG_INST_START;
@@ -262,8 +233,6 @@ RgMngmt  *cfg     /* config structure  */
 #ifdef INTEL_WLS_MEM
          /* Start WLS message receiver thread */
          LwrMacStartWlsRcvr();
-         /* Allocate memory for UL transmissions */
-         LwrMacEnqueueWlsBlock();
 #endif
         reason = rgLMMGenCfg(inst,&cfg->t.cfg); 
         break;
@@ -275,7 +244,7 @@ RgMngmt  *cfg     /* config structure  */
       default:
         ret = LCM_PRIM_NOK;
         reason = LCM_REASON_INVALID_ELMNT;
-        RLOG1(L_ERROR, "Invalid Elmnt=%d",
+        DU_LOG("\nERROR  -->  MAC : Invalid Elmnt=%d",
               cfg->hdr.elmId.elmnt);
         break;
    }
@@ -345,7 +314,7 @@ RgMngmt  *sts     /* statistics structure  */
       cfm.cfm.status = LCM_PRIM_NOK;
       cfm.cfm.reason = LCM_REASON_GENCFG_NOT_DONE;
       RgMiLrgStsCfm(&cfmPst,&cfm);
-      RLOG0(L_ERROR, "Gen Cfg not done");
+      DU_LOG("\nERROR  -->  MAC : Gen Cfg not done");
       return ROK;
    }
 
@@ -453,7 +422,7 @@ RgMngmt  *sts     /* statistics structure  */
       default:
         cfm.cfm.status = LCM_PRIM_NOK;
         cfm.cfm.reason = LCM_REASON_INVALID_ELMNT;
-        RLOG1(L_ERROR, "Invalid Elmnt = %d",sts->hdr.elmId.elmnt);
+        DU_LOG("\nERROR  -->  MAC : Invalid Elmnt = %d",sts->hdr.elmId.elmnt);
         break;     
    }
    RgMiLrgStsCfm(&cfmPst,&cfm);
@@ -461,205 +430,6 @@ RgMngmt  *sts     /* statistics structure  */
 }/*-- RgMiLrgStsReq --*/
 
 \f
-/**
- * @brief Layer Manager Status request handler. 
- *
- * @details
- *
- *     Function : RgMiLrgStaReq
- *     
- *     This function handles the solicited status
- *     request received from the Layer Manager.
- *      -# Based on sta->hdr.elmId.elmnt, it retrieves the status of a
- *      particular SAP from the rgCb global control block.
- *      -# Invokes the RgMiLrgStaCfm to send back the confirmation to LM.
- *     
- *  @param[in]  Pst *pst, the post structure     
- *  @param[in]  RgMngmt *sta, the status parameter's structure
- *  @return  S16
- *      -# ROK
- **/
-S16 RgMiLrgStaReq
-(
-Pst      *pst,    /* post structure  */
-RgMngmt  *sta     /* status structure  */
-)
-{
-   Pst       cfmPst;
-   RgMngmt   cfm;
-   Inst      inst ;
-
-
-   RG_IS_INST_VALID(pst->dstInst);
-   inst = pst->dstInst - RG_INST_START;
-
-
-   /* Fill the post structure for sending the confirmation */
-   rgLMMFillCfmPst(pst, &cfmPst, sta);
-
-   if (sta->t.ssta.s.sysId.ptNmb != NULLP)
-   {
-      SPutSBuf(pst->region, pst->pool, (Data *)sta->t.ssta.s.sysId.ptNmb, LRG_MAX_PT_NUM_SIZE);
-   }
-   
-   memset(&cfm, 0, sizeof(RgMngmt));
-   cfm.hdr.elmId.elmnt = sta->hdr.elmId.elmnt;
-
-#ifdef LMINT3
-   cfm.hdr.transId = sta->hdr.transId;
-#endif
-   /* Check if General Config Done */
-   if(rgCb[inst].rgInit.cfgDone != TRUE) 
-   {
-      SGetDateTime(&cfm.t.ssta.dt);
-      if (SGetSBuf(cfmPst.region, cfmPst.pool, 
-              (Data **)&(cfm.t.ssta.s.sysId.ptNmb), LRG_MAX_PT_NUM_SIZE)
-           != ROK)
-      {
-        RLOG0(L_ERROR, "Memory Unavailable for Confirmation");
-        return ROK;
-      } 
-      memset((cfm.t.ssta.s.sysId.ptNmb), 0, LRG_MAX_PT_NUM_SIZE);
-      rgGetSId(&cfm.t.ssta.s.sysId);
-      cfm.cfm.status = LCM_PRIM_NOK;
-      cfm.cfm.reason = LCM_REASON_GENCFG_NOT_DONE;
-      cfm.hdr.elmId.elmnt = sta->hdr.elmId.elmnt;
-      RgMiLrgStaCfm(&cfmPst, &cfm);
-      RLOG0(L_ERROR, "Gen Cfg not done");
-      return ROK;
-   }
-
-   switch(sta->hdr.elmId.elmnt)
-   {
-      case STGEN:
-         SGetDateTime(&cfm.t.ssta.dt);
-         if (SGetSBuf(cfmPst.region, cfmPst.pool, 
-             (Data **)&(cfm.t.ssta.s.sysId.ptNmb), LRG_MAX_PT_NUM_SIZE)
-            != ROK)
-         {
-            RLOG0(L_ERROR, "Memory Unavailable for Confirmation");
-            return ROK;
-         } 
-         memset((cfm.t.ssta.s.sysId.ptNmb), 0, LRG_MAX_PT_NUM_SIZE);
-         rgGetSId(&cfm.t.ssta.s.sysId);
-         cfm.cfm.status = LCM_PRIM_OK;
-         cfm.cfm.reason = LCM_REASON_NOT_APPL;
-         RgMiLrgStaCfm(&cfmPst, &cfm);
-         break;
-      case STRGUSAP:
-         cfm.cfm.status = LCM_PRIM_OK;
-         cfm.cfm.reason = LCM_REASON_NOT_APPL;
-         SGetDateTime(&cfm.t.ssta.dt);
-         memcpy(&(cfm.t.ssta.s.rguSapSta), 
-                               &rgCb[inst].rguSap[sta->t.ssta.sapInst].sapSta,
-            sizeof(RgSapSta));
-         RgMiLrgStaCfm(&cfmPst, &cfm);
-         break;
-      case STCRGSAP:
-         cfm.cfm.status = LCM_PRIM_OK;
-         cfm.cfm.reason = LCM_REASON_NOT_APPL;
-         SGetDateTime(&cfm.t.ssta.dt);
-         memcpy(&(cfm.t.ssta.s.crgSapSta), &rgCb[inst].crgSap.sapSta,
-         sizeof(RgSapSta));
-         RgMiLrgStaCfm(&cfmPst, &cfm);
-         break;
-      case STTFUSAP:
-         cfm.cfm.status = LCM_PRIM_OK;
-         cfm.cfm.reason = LCM_REASON_NOT_APPL;
-         SGetDateTime(&cfm.t.ssta.dt);
-         memcpy(&(cfm.t.ssta.s.tfuSapSta), &rgCb[inst].tfuSap.sapSta,
-         sizeof(RgSapSta));
-         RgMiLrgStaCfm(&cfmPst, &cfm);
-         break;
-      default:
-        cfm.cfm.status = LCM_PRIM_NOK;
-        cfm.cfm.reason = LCM_REASON_INVALID_ELMNT;
-        RgMiLrgStaCfm(&cfmPst, &cfm);
-        RLOG1(L_ERROR, "Invalid elmnt=%d",sta->hdr.elmId.elmnt);
-        break;     
-   }
-   return ROK;
-}/*-- RgMiLrgStaReq --*/
-
-\f
-/**
- * @brief Layer Manager Control request handler. 
- *
- * @details
- *
- *     Function : RgMiLrgCntrlReq
- *     
- *     This function handles the control
- *     request received from the Layer Manager.
- *      -# Based on cntrl->hdr.elmId.elmnt, cntrl->t.cntrl.action
- *      and cntrl->t.cntrl.subAction, it performs the appropriate control action
- *      of SAP (enable/disable), Debug (enable/disable), Trace (enable/disable)
- *      and layer shutdown.
- *      -# Invokes the RgMiLrgCntrlCfm to send back the confirmation to LM.
- *     
- *  @param[in]  Pst *pst, the post structure     
- *  @param[in]  RgMngmt *cntrl, the control parameter's structure
- *  @return  S16
- *      -# ROK
- **/
-S16 RgMiLrgCntrlReq
-(
-Pst      *pst,    /* post structure  */
-RgMngmt  *cntrl   /* control structure  */
-)
-{
-   S16       ret = ROK;            /* return value */
-   Pst       cfmPst;
-   RgMngmt   cfm;
-   Inst      inst;
-   /* Fill the post structure for sending the confirmation */
-
-   RG_IS_INST_VALID(pst->dstInst);
-   inst = pst->dstInst - RG_INST_START;
-
-   rgLMMFillCfmPst(pst, &cfmPst, cntrl);
-
-   memset(&cfm, 0, sizeof(RgMngmt));
-#ifdef LMINT3
-   cfm.hdr.transId = cntrl->hdr.transId;
-#endif
-   cfm.hdr.elmId.elmnt = cntrl->hdr.elmId.elmnt;
-   cfm.t.cntrl.action = cntrl->t.cntrl.action;
-   cfm.t.cntrl.subAction = cntrl->t.cntrl.subAction;
-
-   /* Check if General Config Done*/
-   if(rgCb[inst].rgInit.cfgDone != TRUE)
-   {
-      cfm.cfm.status = LCM_PRIM_NOK;
-      cfm.cfm.reason = LCM_REASON_GENCFG_NOT_DONE;
-      cfm.hdr.elmId.elmnt = cntrl->hdr.elmId.elmnt;
-      RgMiLrgCntrlCfm(&cfmPst, &cfm);
-      RLOG0(L_ERROR, "Gen Cfg not done");
-      return ROK;
-   }
-
-   /* General Config done, process the Control request */   
-   switch(cntrl->hdr.elmId.elmnt)
-   {
-      case STGEN:
-        rgLMMGenCntrl(cntrl, &cfm, &cfmPst);
-        break;
-      case STTFUSAP:
-      case STRGUSAP:
-      case STCRGSAP:
-        rgLMMSapCntrl(cntrl, &cfm, &cfmPst);
-        break;
-      default:
-        cfm.cfm.status = LCM_PRIM_NOK;
-        cfm.cfm.reason = LCM_REASON_INVALID_PAR_VAL;
-        RgMiLrgCntrlCfm(&cfmPst, &cfm);
-        RLOG1(L_ERROR, "invalid elmnt=%d",cntrl->hdr.elmId.elmnt);
-        break;
-   }
-   return (ret);
-}/*-- RgMiLrgCntrlReq --*/
-
-\f
 /**
  * @brief SAP Configuration Handler. 
  *
@@ -704,7 +474,7 @@ Elmnt sapType             /* Sap Type */
               (cfg->s.rguSap.selector != ODU_SELECTOR_LC))
         {
            ret = LCM_REASON_INVALID_PAR_VAL;
-           RLOG0(L_ERROR, "unsupported Selector value for RGU");
+           DU_LOG("\nERROR  -->  MAC : unsupported Selector value for RGU");
            break;
         }
         upSapCb = &(rgCb[inst].rguSap[cfg->s.rguSap.spId]);
@@ -735,7 +505,7 @@ Elmnt sapType             /* Sap Type */
               (cfg->s.crgSap.selector != ODU_SELECTOR_LC))
         {
            ret = LCM_REASON_INVALID_PAR_VAL;
-           RLOG0(L_ERROR, "unsupported Selector value for CRG");
+           DU_LOG("\nERROR  -->  MAC : unsupported Selector value for CRG");
            break;
         }
         if(rgCb[inst].crgSap.sapSta.sapState == LRG_NOT_CFG)
@@ -765,7 +535,7 @@ Elmnt sapType             /* Sap Type */
               (cfg->s.tfuSap.selector != ODU_SELECTOR_LC))
         {
            ret = LCM_REASON_INVALID_PAR_VAL;
-           RLOG0(L_ERROR, "unsupported Selector value for TFU");
+           DU_LOG("\nERROR  -->  MAC : unsupported Selector value for TFU");
            break;
         }
 #endif
@@ -836,7 +606,7 @@ RgCfg *cfg            /* Configuaration information */
    if ((cfg->s.genCfg.lmPst.selector != ODU_SELECTOR_TC) &&
         (cfg->s.genCfg.lmPst.selector != ODU_SELECTOR_LC))
    {
-      RLOG0(L_ERROR, "unsupported Selector value for RGU");
+      DU_LOG("\nERROR  -->  MAC : unsupported Selector value for RGU");
       return (LCM_REASON_INVALID_PAR_VAL);
    }
    /* Update the Pst structure for LM interface */
@@ -852,6 +622,7 @@ RgCfg *cfg            /* Configuaration information */
    rgCb[inst].rgInit.pool = cfg->s.genCfg.mem.pool;
    rgCb[inst].genCfg.tmrRes = cfg->s.genCfg.tmrRes;
 
+   macCb.tmrRes = cfg->s.genCfg.tmrRes;
    macCb.macInst = rgCb[inst].rgInit.inst;
    macCb.procId = rgCb[inst].rgInit.procId;
 
@@ -860,17 +631,15 @@ RgCfg *cfg            /* Configuaration information */
 
    if(cfg->s.genCfg.numRguSaps == 0)
    {
-      RGDBGERRNEW(inst,(rgPBuf(inst), "\nrgGenCfg(): Invalid numRguSap.\n"));
+      DU_LOG("\nERROR  -->  MAC : rgGenCfg(): Invalid numRguSap.\n");
       return RFAILED;
    }
 
    /* allocate RGR saps */
-   if (SGetSBuf(rgCb[inst].rgInit.region,
-           rgCb[inst].rgInit.pool,
-           (Data **)&rgCb[inst].rguSap,
-           (sizeof(RgUpSapCb) * cfg->s.genCfg.numRguSaps)) != ROK)
+   MAC_ALLOC(rgCb[inst].rguSap, sizeof(RgUpSapCb) * cfg->s.genCfg.numRguSaps);
+   if(rgCb[inst].rguSap == NULLP)
    {
-      RGDBGERRNEW(inst,(rgPBuf(inst), "\nrgGenCfg(): Failed to allocate mem for RGU SAP's.\n"));
+      DU_LOG("\nERROR  -->  MAC : rgGenCfg(): Failed to allocate mem for RGU SAP's.\n");
       return RFAILED;
    }
    rgCb[inst].numRguSaps = cfg->s.genCfg.numRguSaps;
@@ -882,28 +651,25 @@ RgCfg *cfg            /* Configuaration information */
    }
    rgCb[inst].tfuSap.sapSta.sapState = LRG_NOT_CFG;
    /* Initialize the timer blocks */
-   cmInitTimers(rgCb[inst].tmrBlk, RG_MAX_TIMER);
+   cmInitTimers(macCb.tmrBlk, MAX_NUM_TIMER);
    /* Initialzie the timer queue */   
-   memset(&rgCb[inst].tmrTq, 0, sizeof(CmTqType)*RG_TQ_SIZE);
+   memset(&macCb.tmrTq, 0, sizeof(CmTqType) * MAC_TQ_SIZE);
    /* Initialize the timer control point */
-   memset(&rgCb[inst].tmrTqCp, 0, sizeof(CmTqCp));
-   rgCb[inst].tmrTqCp.tmrLen = RG_TQ_SIZE;
-#if 0
+   memset(&macCb.tmrTqCp, 0, sizeof(CmTqCp));
+   macCb.tmrTqCp.tmrLen = MAC_TQ_SIZE;
+
    /* Timer Registration request to SSI */
-   if (SRegTmrMt(rgCb[inst].rgInit.ent, rgCb[inst].rgInit.inst,
-           (S16)rgCb[inst].genCfg.tmrRes, rgActvTmr) != ROK)
+   if(ODU_REG_TMR_MT(ENTMAC, macCb.macInst, macCb.tmrRes, macActvTmr) != ROK)
    {
 
-      RLOG0(L_ERROR, "Failed to register timer");
+      DU_LOG("\nERROR  -->  MAC : Failed to register timer");
 
-      SPutSBuf(rgCb[inst].rgInit.region,
-           rgCb[inst].rgInit.pool,
-           (Data *)rgCb[inst].rguSap,
+      MAC_FREE(rgCb[inst].rguSap,
            (sizeof(RgUpSapCb) * cfg->s.genCfg.numRguSaps));
 
       return (LCM_REASON_MEM_NOAVAIL);
    }
-#endif
+
    /* Set Config done in TskInit */
    rgCb[inst].rgInit.cfgDone = TRUE;
 
@@ -911,349 +677,6 @@ RgCfg *cfg            /* Configuaration information */
 }
 
 \f
-/***********************************************************
- *
- *     Func : rgLMMShutdown
- *        
- *
- *     Desc : Handles the MAC layer shutdown request. Calls 
- *     rgCFGFreeCellCb(RgCellCb*) to handle each cellCb deallocation.
- *            
- *
- *     Ret  : Void
- *
- *     Notes: 
- *
- *     File : rg_lmm.c 
- *
- **********************************************************/
-static Void rgLMMShutdown(Inst inst)
-{
-   RgCellCb   *cell = rgCb[inst].cell;
-   uint8_t    idx;
-
-
-    /* Unbind the TFU Sap */
-   if(rgCb[inst].tfuSap.sapSta.sapState == LRG_WAIT_BNDCFM)
-   {
-      //rgLIMTfuUbndReq(inst,rgCb[inst].tfuSap.sapCfg.spId, LRG_UNBND);
-      if (rgCb[inst].tfuSap.sapCfg.bndTmr.enb == TRUE)
-      {
-         rgLMMStopTmr(inst,RG_BNDREQ_TMR, (PTR)&rgCb[inst].tfuSap); 
-      } 
-      rgCb[inst].tfuSap.sapSta.sapState = LRG_UNBND;
-   }
-   if(rgCb[inst].tfuSap.sapSta.sapState == LRG_BND)
-   {
-      //rgLIMTfuUbndReq(inst,rgCb[inst].tfuSap.sapCfg.spId, LRG_UNBND);
-      rgCb[inst].tfuSap.sapSta.sapState = LRG_UNBND;
-   }
-
-
-   if(cell != NULLP)
-   {
-      for(idx=0;idx < RG_NUM_SUB_FRAMES; idx++)
-      {
-        rgTOMRlsSf(inst,&cell->subFrms[idx]);
-      }
-
-      rgCFGFreeCellCb(cell);
-   }
-
-   /* Deleting the RGU SAPs */
-   SPutSBuf(rgCb[inst].rgInit.region,
-        rgCb[inst].rgInit.pool,
-        (Data *)rgCb[inst].rguSap,
-        (sizeof(RgUpSapCb) * rgCb[inst].numRguSaps));
-   rgCb[inst].rguSap = NULLP;
-
-   rgCb[inst].inactiveCell = NULLP;
-   rgCb[inst].cell         = NULLP;
-
-   /* De-register the Timer Service */
-   (Void) SDeregTmrMt(rgCb[inst].rgInit.ent, rgCb[inst].rgInit.inst,
-        (S16)rgCb[inst].genCfg.tmrRes, rgActvTmr); 
-
-   /* call back the task initialization function to intialize
-    * the global RgCb Struct */
-   rgActvInit(rgCb[inst].rgInit.ent, rgCb[inst].rgInit.inst, rgCb[inst].rgInit.region, 
-        rgCb[inst].rgInit.reason);
-
-   return;
-}
-
-\f
-/***********************************************************
- *
- *     Func : rgLMMGenCntrl 
- *        
- *
- *     Desc : Processes the LM control request for STGEN elmnt.
- *            
- *
- *     Ret  : Void
- *
- *     Notes: 
- *
- *     File : rg_lmm.c 
- *
- **********************************************************/
-static Void rgLMMGenCntrl 
-(
-RgMngmt       *cntrl,
-RgMngmt       *cfm,
-Pst           *cfmPst
-)
-{
-   Inst      inst = (cfmPst->srcInst - RG_INST_START);
-
-   cfm->cfm.status = LCM_PRIM_OK;
-   cfm->cfm.reason = LCM_REASON_NOT_APPL;
-
-
-   switch(cntrl->t.cntrl.action)
-   {
-      case AENA:
-         /* Action is Enable */
-         switch(cntrl->t.cntrl.subAction)
-         {
-            case SATRC:
-            /* Enable Traces */
-               rgCb[inst].rgInit.trc = TRUE;
-               rgCb[inst].trcLen = cntrl->t.cntrl.s.trcLen;
-               /*Store the response and TransId for sending the Traces */
-               memcpy(&rgCb[inst].genCfg.trcResp.response, 
-               &cntrl->hdr.response, sizeof(Resp));
-               rgCb[inst].genCfg.trcResp.transId = cntrl->hdr.transId;
-               
-               break;
-            case SAUSTA:   
-            /* Enable Unsolicited Status (alarms) */
-               rgCb[inst].rgInit.usta = TRUE;
-               /*Store the response and TransId for sending the Alarms */
-               memcpy(&rgCb[inst].genCfg.ustaResp.response, 
-               &cntrl->hdr.response, sizeof(Resp));
-               rgCb[inst].genCfg.ustaResp.transId = cntrl->hdr.transId;
-               break;
-            case SADBG:
-            /* Enable Debug Printing */
-#ifdef DEBUGP
-              rgCb[inst].rgInit.dbgMask |= cntrl->t.cntrl.s.rgDbgCntrl.dbgMask;
-#endif
-              break;
-#ifdef SS_DIAG
-           case SALOG:
-              rgCb[inst].rgInit.logMask = cntrl->t.cntrl.s.logMask;
-              break;
-#endif
-
-           default:
-              cfm->cfm.status = LCM_PRIM_NOK;
-              cfm->cfm.reason = LCM_REASON_INVALID_PAR_VAL;
-              RLOG1(L_ERROR, "invalid subaction=%d",cntrl->t.cntrl.subAction);
-              break;
-        }
-        break;
-      case ADISIMM:
-        /* Action is Diable immidiately */
-        switch(cntrl->t.cntrl.subAction)
-        {
-           case SATRC:
-              /* Disable Traces */
-              rgCb[inst].rgInit.trc = FALSE;
-              break;
-           case SAUSTA:
-              /* Disable Unsolicited Status (alarms) */
-              rgCb[inst].rgInit.usta = FALSE;
-              break;
-           case SADBG:
-              /* Disable Debug Printing */
-#ifdef DEBUGP
-              rgCb[inst].rgInit.dbgMask &=~cntrl->t.cntrl.s.rgDbgCntrl.dbgMask;
-#endif
-              break;
-#ifdef SS_DIAG
-           case SALOG:
-              rgCb[inst].rgInit.logMask = cntrl->t.cntrl.s.logMask;
-              break;
-#endif
-
-           default:
-              cfm->cfm.status = LCM_PRIM_NOK;
-              cfm->cfm.reason = LCM_REASON_INVALID_PAR_VAL;
-              RLOG1(L_ERROR, "invalid subaction=%d",cntrl->t.cntrl.subAction);
-              break;
-        }
-        break;
-      case ASHUTDOWN:
-        /* Free all the memory dynamically allocated by MAC */
-        rgLMMShutdown(inst);
-        break;
-      default:
-        cfm->cfm.status = LCM_PRIM_NOK;
-        cfm->cfm.reason = LCM_REASON_INVALID_PAR_VAL;
-        RLOG1(L_ERROR, "invalid action=%d",cntrl->t.cntrl.action);
-        break;
-   }
-   RgMiLrgCntrlCfm(cfmPst, cfm);
-   return;
-}
-
-\f
-/***********************************************************
- *
- *     Func : rgLMMSapCntrl 
- *        
- *
- *     Desc : Processes the LM control request for STxxxSAP elmnt.
- *            
- *
- *     Ret  : Void
- *
- *     Notes: 
- *
- *     File : rg_lmm.c 
- *
- **********************************************************/
-static Void rgLMMSapCntrl 
-(
-RgMngmt       *cntrl,
-RgMngmt       *cfm,
-Pst           *cfmPst
-)
-{
-   Inst      inst = cfmPst->srcInst - RG_INST_START;
-
-   /* Only TFU Sap can be controlled by LM */
-   switch(cntrl->hdr.elmId.elmnt)
-   {
-      case STTFUSAP:
-         switch(cntrl->t.cntrl.action)
-         {
-            case ABND:
-            /* Bind Enable Request */
-               if ((rgCb[inst].tfuSap.sapSta.sapState == LRG_NOT_CFG) ||
-                   (rgCb[inst].tfuSap.sapSta.sapState == LRG_BND))
-               {
-                  cfm->cfm.status = LCM_PRIM_NOK;
-                  cfm->cfm.reason = LCM_REASON_INVALID_SAP;
-               }
-               else
-               {
-                  if (rgCb[inst].tfuSap.sapCfg.bndTmr.enb == TRUE)
-                  {
-                     rgLMMStartTmr(inst,RG_BNDREQ_TMR, rgCb[inst].tfuSap.sapCfg.bndTmr.val, 
-                     (PTR)&rgCb[inst].tfuSap);
-                  }
-                  /* Change SAP state */
-                  rgCb[inst].tfuSap.sapSta.sapState = LRG_WAIT_BNDCFM;
-                  rgCb[inst].tfuSap.numBndRetries++;
-                  /* Store the response and TransId for sending 
-                   * the Control confirm */
-                  memcpy(&rgCb[inst].genCfg.bndCfmResp.response,
-                           &cntrl->hdr.response, sizeof(Resp));
-                  rgCb[inst].genCfg.bndCfmResp.transId = cntrl->hdr.transId;
-
-                  /* Sending Status Indication to Layer Manager */
-                  cfm->cfm.status = LCM_PRIM_OK_NDONE;
-                  cfm->cfm.reason = LCM_REASON_NOT_APPL;
-                  RgMiLrgCntrlCfm(cfmPst, cfm);
-
-                  //rgLIMTfuBndReq(inst,rgCb[inst].tfuSap.sapCfg.suId,
-                                      //rgCb[inst].tfuSap.sapCfg.spId);
-                  RETVOID;
-               }
-               break;
-            case AUBND:
-            /* Unbind request */
-
-               /* Check if the SAP is configured */
-               if( (rgCb[inst].tfuSap.sapSta.sapState == LRG_NOT_CFG) ||
-                     (rgCb[inst].tfuSap.sapSta.sapState == LRG_UNBND))
-               {
-                  cfm->cfm.status = LCM_PRIM_NOK;
-                  cfm->cfm.reason = LCM_REASON_INVALID_MSGTYPE;
-               }
-               else
-               {
-                  //rgLIMTfuUbndReq(inst,rgCb[inst].tfuSap.sapCfg.spId, TFU_UBNDREQ_MNGMT);
-                  if (rgCb[inst].tfuSap.sapCfg.bndTmr.enb == TRUE)
-                  {
-                     rgLMMStopTmr(inst,RG_BNDREQ_TMR, (PTR)&rgCb[inst].tfuSap);
-                  }
-                  /* Change SAP state */
-                  rgCb[inst].tfuSap.sapSta.sapState = LRG_UNBND;
-                  cfm->cfm.status = LCM_PRIM_OK;
-                  cfm->cfm.reason = LCM_REASON_NOT_APPL;
-               }
-               break;
-            case ADEL:
-               /* Delete SAP, does initialization of SAP */
-               if ((rgCb[inst].tfuSap.sapSta.sapState == LRG_WAIT_BNDCFM) ||
-                   (rgCb[inst].tfuSap.sapSta.sapState == LRG_BND))
-               {
-                  //rgLIMTfuUbndReq(inst,rgCb[inst].tfuSap.sapCfg.spId, TFU_UBNDREQ_MNGMT);
-                  if (rgCb[inst].tfuSap.sapCfg.bndTmr.enb == TRUE)
-                  {
-                     rgLMMStopTmr(inst,RG_BNDREQ_TMR, (PTR)&rgCb[inst].tfuSap);
-                  }
-               }
-               memset(&rgCb[inst].tfuSap, 0, sizeof(RgLowSapCb));
-               rgCb[inst].tfuSap.sapSta.sapState = LRG_NOT_CFG;
-               cfm->cfm.status = LCM_PRIM_OK;
-               cfm->cfm.reason = LCM_REASON_NOT_APPL;
-               break;
-            default:
-               cfm->cfm.status = LCM_PRIM_NOK;
-               cfm->cfm.reason = LCM_REASON_INVALID_PAR_VAL;
-               RGDBGERRNEW(inst,(rgPBuf(inst), "\nrgLMMSapCntrl(): invalid action=%d",
-               cntrl->t.cntrl.action));
-               break;
-         }
-         break;
-      case STRGUSAP:
-         switch(cntrl->t.cntrl.action)
-         {
-            case ADEL:
-               memset(&rgCb[inst].rguSap[cntrl->t.cntrl.instId], 0, sizeof(RgUpSapCb));
-               rgCb[inst].rguSap[cntrl->t.cntrl.instId].sapSta.sapState = LRG_NOT_CFG;
-               cfm->cfm.status = LCM_PRIM_OK;
-               cfm->cfm.reason = LCM_REASON_NOT_APPL;
-               break;
-            default:
-               cfm->cfm.status = LCM_PRIM_NOK;
-               cfm->cfm.reason = LCM_REASON_INVALID_PAR_VAL;
-               RGDBGERRNEW(inst,(rgPBuf(inst), "\nrgLMMSapCntrl(): invalid action=%d",
-               cntrl->t.cntrl.action));
-               break;
-         }
-         break;
-      case STCRGSAP:
-         switch(cntrl->t.cntrl.action)
-         {
-            case ADEL:
-               memset(&rgCb[inst].crgSap, 0, sizeof(RgUpSapCb));
-               rgCb[inst].crgSap.sapSta.sapState = LRG_NOT_CFG;
-               cfm->cfm.status = LCM_PRIM_OK;
-               cfm->cfm.reason = LCM_REASON_NOT_APPL;
-               break;
-            default:
-               cfm->cfm.status = LCM_PRIM_NOK;
-               cfm->cfm.reason = LCM_REASON_INVALID_PAR_VAL;
-               RLOG1(L_ERROR, "invalid action=%d",cntrl->t.cntrl.action);
-               
-               break;
-         }
-         break;
-      default:
-         /* Would never here. */
-         RETVOID;
-   }
-   RgMiLrgCntrlCfm(cfmPst, cfm);
-   return;
-}
-
-\f
 /***********************************************************
  *
  *     Func : rgLMMFillCfmPst 
@@ -1458,7 +881,7 @@ S16 tmrEvnt           /* Timer Event */
          }
          break;
       default:
-         RLOG1(L_ERROR, "Invalid tmrEvnt=%d",tmrEvnt);
+         DU_LOG("\nERROR  -->  MAC : Invalid tmrEvnt=%d",tmrEvnt);
          ret = RFAILED;
          break;
    }
@@ -1521,270 +944,6 @@ RgUstaDgn *dgn
    return (RgMiLrgStaInd(&rgCb[inst].rgInit.lmPst, &usta));
 }
 
-\f
-/**
- * @brief Layer Manager Trace Indication generation. 
- *
- * @details
- *
- *     Function : rgLMMTrcInd 
- *     
- *     This API is used by the other modules of MAC to send a 
- *     Trace indication to the Layer Manager.
- *     
- *  @param[in]  Inst        inst
- *  @param[in]   Buffer *srcMbuf, the Message Buffer .
- *  @param[in]   uint8_t event, the trace event.
- *  @return Void 
- **/
-Void rgLMMTrcInd
-(
-Inst   inst,
-Buffer *srcMbuf,    /* Message Buffer */
-uint8_t event            /* event */
-)
-{
-   Buffer   *dstMbuf = NULLP;   
-   MsgLen   bufLen  = 0;
-   Data     *tempBuf;
-   MsgLen   tempCnt;
-   RgMngmt  trc;
-   Pst      pst;
-
-
-
-   if ((rgCb[inst].trcLen == LRG_NO_TRACE) || (srcMbuf == NULLP))
-   {
-      RLOG0(L_ERROR, "Trace Disabled.");
-      return;
-   }
-   
-   memset(&trc, 0, sizeof(RgMngmt));
-
-   pst = rgCb[inst].rgInit.lmPst;
-   pst.selector = rgCb[inst].genCfg.trcResp.response.selector;
-   pst.prior = rgCb[inst].genCfg.trcResp.response.prior;
-   pst.route = rgCb[inst].genCfg.trcResp.response.route;
-   pst.region = rgCb[inst].genCfg.trcResp.response.mem.region;
-   pst.pool = rgCb[inst].genCfg.trcResp.response.mem.pool;
-
-   trc.hdr.transId = rgCb[inst].genCfg.trcResp.transId;
-
-   SGetDateTime(&trc.t.trc.dt);
-
-   /* Check if the whole buffer is to be sent in Trace indication */
-   if(rgCb[inst].trcLen == LRG_FULL_TRACE)
-   {
-      if (SCpyMsgMsg(srcMbuf, pst.region, pst.pool, &dstMbuf)
-           != ROK)
-      {
-        RLOG0(L_ERROR, "SCpyMsgMsg Failed.");
-        return;
-      }
-      trc.cfm.status = LCM_PRIM_OK;
-      trc.cfm.reason = LCM_REASON_NOT_APPL;
-      trc.t.trc.evnt = event;
-
-      /* Send Trace Indication to Layer manager */
-      RgMiLrgTrcInd(&pst, &trc, dstMbuf);
-   }
-   /* check if only a specified number of bytes are to be sent */
-   else if(rgCb[inst].trcLen > 0)
-   {
-      /* Get the length of the recvd message buffer */
-      if (SFndLenMsg(srcMbuf, &bufLen) != ROK)
-      {
-        RLOG0(L_ERROR, "SFndLenMsg Failed.");
-        return;
-      }
-      /* Check if the recvd buffer size is less than request trace len */
-      if(bufLen < rgCb[inst].trcLen)
-      {
-        /* Copy the whole of the recvd buffer in trace indication */
-
-        if (SCpyMsgMsg(srcMbuf, pst.region, pst.pool, &dstMbuf)
-              != ROK)
-        {
-           RLOG0(L_ERROR, "SCpyMsgMsg Failed.");
-           return;
-        }
-
-        trc.cfm.status = LCM_PRIM_OK;
-        trc.cfm.reason = LCM_REASON_NOT_APPL;
-        trc.t.trc.evnt = event;
-
-        /* Send Trace Indication to Layer manager */
-        RgMiLrgTrcInd(&pst, &trc, dstMbuf);
-      }
-      /* if the recvd buffer size is greater than request trace len */
-      if(bufLen >= rgCb[inst].trcLen)
-      {
-        /* Get a temporary buffer to store the msg */
-        if (rgAllocSBuf(inst,&tempBuf, rgCb[inst].trcLen) != ROK)
-        {
-           RLOG0(L_ERROR, "rgAllocSBuf Failed.");
-           return;
-        }
-
-        /* Copy trcLen nos of bytes from the recvd message */
-        if (SCpyMsgFix(srcMbuf,0,rgCb[inst].trcLen,tempBuf,&tempCnt) != ROK)   
-        {
-           RLOG0(L_ERROR, "SCpyMsgFix Failed.");
-           return;
-        }
-
-        if (SGetMsg(pst.region, pst.pool, &dstMbuf) != ROK)
-        {
-           RLOG0(L_ERROR, "dstMbuf Allocation Failed");
-           return;
-        }
-        /* Copy the tempBuf data to dst mBuf */
-        if (SCpyFixMsg(tempBuf,dstMbuf,0,rgCb[inst].trcLen,&tempCnt) != ROK)
-        {
-           RLOG0(L_ERROR, "SCpyFixMsg Failed.");
-           return;
-        }
-
-        /*ccpu00117052 - MOD - Passing double pointer for proper NULLP 
-          assignment */
-        /* Free the memory allocated for tempBuf */
-        rgFreeSBuf(inst,&tempBuf, rgCb[inst].trcLen);
-
-        trc.cfm.status = LCM_PRIM_OK;
-        trc.cfm.reason = LCM_REASON_NOT_APPL;
-        trc.t.trc.evnt = event;
-
-        /* Send Trace Indication to Layer manager */
-        RgMiLrgTrcInd(&pst, &trc, dstMbuf);
-      }
-   }
-   return;
-}
-
-\f
-/**
- * @brief Layer Manager Control Confirm generation handler
- *        for Bind Confirm reception at TFU interface.
- *        RgLiTfuBndCfm() forwards the confirmation to this 
- *        function. All SAP state related handling is restricted
- *        to LMM modules, hence the cfm forwarding.
- *
- * @details
- *
- *     Function : rgLMMBndCfm 
- *     
- *     This API is used by the LIM module of MAC to forward
- *     the Bind Confirm it receives over the TFU interface.
- *     
- *  @param[in]   Pst *pst, Post Structure
- *  @param[in]   SuId suId, Service user ID
- *  @param[in]   uint8_t status, Status
- *  @return  S16
- *      -# ROK
- **/
-S16 rgLMMBndCfm
-(
-Pst *pst,               /* Post Structure */
-SuId suId,              /* Service user ID */
-uint8_t status               /* Status */
-)
-{
-   Inst      inst = pst->dstInst - RG_INST_START;
-   S16       ret = ROK;
-   RgMngmt   cntrlCfm;
-   Pst       cfmPst;
-
-
-   UNUSED(pst);
-
-   /* Check if the suId is valid */
-   if(rgCb[inst].tfuSap.sapCfg.suId != suId)
-   {
-      RLOG0(L_ERROR, "Invalid SuId");
-      return RFAILED;
-   }
-
-   /* check the Sap State */
-   switch(rgCb[inst].tfuSap.sapSta.sapState)
-   {
-      case LRG_WAIT_BNDCFM:
-        break;
-      case LRG_BND:
-        /* SAP is already bound */
-        return ROK;
-      default:
-        return RFAILED;
-   }
-
-   cfmPst = rgCb[inst].rgInit.lmPst;
-   cfmPst.selector = rgCb[inst].genCfg.bndCfmResp.response.selector;
-   cfmPst.prior = rgCb[inst].genCfg.bndCfmResp.response.prior;
-   cfmPst.route = rgCb[inst].genCfg.bndCfmResp.response.route;
-   cfmPst.region = rgCb[inst].genCfg.bndCfmResp.response.mem.region;
-   cfmPst.pool = rgCb[inst].genCfg.bndCfmResp.response.mem.pool;
-   
-   memset(&cntrlCfm, 0, sizeof(RgMngmt));
-
-   switch(status)
-   {
-      case CM_BND_OK: /* status is OK */
-        /* Change SAP state to Bound */
-        rgCb[inst].tfuSap.sapSta.sapState = LRG_BND;
-        if (rgCb[inst].tfuSap.sapCfg.bndTmr.enb == TRUE)
-        {
-           ret = rgLMMStopTmr(inst,RG_BNDREQ_TMR, (PTR)&rgCb[inst].tfuSap);
-        }
-        /* Send Control Confirm with status as OK to Layer Manager */
-        cntrlCfm.cfm.status = LCM_PRIM_OK;
-        cntrlCfm.cfm.reason = LCM_REASON_NOT_APPL;
-        break;
-
-      default:
-        /* Change SAP state to UnBound */
-        rgCb[inst].tfuSap.sapSta.sapState = LRG_UNBND;
-        if (rgCb[inst].tfuSap.sapCfg.bndTmr.enb == TRUE)
-        {
-           ret = rgLMMStopTmr(inst,RG_BNDREQ_TMR, (PTR)&rgCb[inst].tfuSap);
-        }
-        /* Send Control Confirm with status as NOK to Layer Manager */
-        cntrlCfm.cfm.status = LCM_PRIM_NOK;
-        cntrlCfm.cfm.reason = LCM_REASON_NEG_CFM;
-        break;
-   }
-   rgCb[inst].tfuSap.numBndRetries = 0;
-   cntrlCfm.hdr.elmId.elmnt = STTFUSAP;
-   cntrlCfm.hdr.transId = rgCb[inst].genCfg.bndCfmResp.transId;
-
-   ret = RgMiLrgCntrlCfm(&cfmPst, &cntrlCfm);
-
-   return (ret);
-}
-
-\f
-/**
- * @brief LTE MAC timer call back function registered with SSI. 
- *
- * @details
- *
- *     Function :  rgActvTmr
- *     
- *     This function is invoked by SSI for every timer activation
- *     period expiry.
- *     
- *  @return  S16
- *      -# ROK
- **/
-S16 rgActvTmr(Ent ent,Inst inst)
-{
-   Inst macInst = (inst  - RG_INST_START);
-
-   /* Check if any MAC timer has expired */ 
-   cmPrcTmr(&rgCb[macInst].tmrTqCp, rgCb[macInst].tmrTq, (PFV) rgLMMTmrExpiry);
-
-   return ROK;
-
-} /* end of rgActvTmr */
-
 /**********************************************************************
 
   End of file