[Epic-ID: ODUHIGH-461][Task-ID: ODUHIGH-468]Unused files and functions removed/disabled
[o-du/l2.git] / src / 5gnrsch / rg_sch_lmm.c
diff --git a/src/5gnrsch/rg_sch_lmm.c b/src/5gnrsch/rg_sch_lmm.c
deleted file mode 100755 (executable)
index dbb5cd6..0000000
+++ /dev/null
@@ -1,1059 +0,0 @@
-/*******************************************************************************
-################################################################################
-#   Copyright (c) [2017-2019] [Radisys]                                        #
-#                                                                              #
-#   Licensed under the Apache License, Version 2.0 (the "License");            #
-#   you may not use this file except in compliance with the License.           #
-#   You may obtain a copy of the License at                                    #
-#                                                                              #
-#       http://www.apache.org/licenses/LICENSE-2.0                             #
-#                                                                              #
-#   Unless required by applicable law or agreed to in writing, software        #
-#   distributed under the License is distributed on an "AS IS" BASIS,          #
-#   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.   #
-#   See the License for the specific language governing permissions and        #
-#   limitations under the License.                                             #
-################################################################################
-*******************************************************************************/
-
-/************************************************************************
-     Name:     LTE-MAC layer
-  
-     Type:     C source file
-  
-     Desc:     C source code for Layer Manager Interface Module 
-  
-     File:     rg_sch_lmm.c 
-  
-**********************************************************************/
-
-/** @file rg_sch_lmm.c
-@brief This file contains the Layer Management interface module implementation for scheduler.
-       The functions for the configuration, control, status and statistics 
-       request primitives are defined here.
-*/
-
-
-/* header include files (.h) */
-#include "common_def.h"
-#include "rg_env.h"        /* MAC Environment Defines */
-#include "rgr.h"           /* RGR Interface defines */
-#include "tfu.h"           /* RGU Interface defines */
-#include "lrg.h"           /* LRG Interface defines */
-#include "rgm.h"           /* RGM Interface defines */
-#include "rg_sch.h"        /* Scheduler defines */
-#include "rg_sch_inf.h"        /* Scheduler defines */
-#include "rg_sch_err.h"        /* MAC error defines */
-#ifdef LTE_L2_MEAS
-#include "rg_sch_cmn.h"    /* typedefs for Scheduler */
-#endif
-#include "sch_utils.h"
-/* header/extern include files (.x) */
-#include "rgr.x"           /* RGR Interface includes */
-#include "rgm.x"           /* RGM Interface includes */
-#include "tfu.x"           /* RGU Interface includes */
-#include "lrg.x"           /* LRG Interface includes */
-#include "rg_sch_inf.x"    /* Scheduler defines */
-#include "rg_sch.x"        /* Scheduler includes */
-#ifdef LTE_L2_MEAS
-#include "rg_sch_cmn.x"    /* typedefs for Scheduler */
-#endif 
-#ifndef LTE_L2_MEAS
-Void rgSCHCmnInit ARGS((Void));
-#endif 
-/* forward references */
-extern int schActvInit(Ent entity, Inst instId, Region region, Reason reason);
-#ifdef UNUSE_FUN
-static uint16_t rgSCHLmmSapCfg ARGS((
-   Inst           inst,
-   RgCfg          *cfg,
-   uint8_t             sapIdx,
-   Elmnt          sapType
-));
-#endif
-static Void rgSCHLmmShutdown ARGS((
-   Inst inst
-));
-
-
-void printSchCellInfo(void)
-{
-   uint8_t idx=0;
-   uint8_t inst=0;
-   for (idx = 0; idx < rgSchCb[inst].numSaps; idx++)
-   {
-      /* Unbind all the TFU SAP */
-      /* Free the memory held by the cell associated
-       * with this SAP */
-      if (rgSchCb[inst].tfuSap[idx].cell != NULLP)
-      {
-         DU_LOG("\nINFO  -->  SCH : CELL %d\n", idx);
-         DU_LOG("\nINFO  -->  SCH : NUM UEs :%d\n",rgSchCb[inst].tfuSap[idx].cell->ueLst.nmbEnt);
-      }
-   }
-}
-
-/**
- * @brief SAP Configuration Handler. 
- *
- * @details
- *
- *     Function : rgSCHLmmSapCfg
- *     
- *     This function in called by SchProcGenCfgReq(). It handles the
- *     interface SAP configuration of the scheduler instance. It 
- *     initializes the sapState to LRG_UNBND. Returns
- *     reason for success/failure of this function.
- *     
- *  @param[in]  RgCfg *cfg, the Configuaration information 
- *  @return  uint16_t
- *      -# LCM_REASON_GENCFG_NOT_DONE
- *      -# LCM_REASON_INVALID_SAP
- *      -# LCM_REASON_NOT_APPL
- **/
-#ifdef UNUSE_FUN
-static uint16_t rgSCHLmmSapCfg
-(
-Inst  dInst,
-RgCfg *cfg,            /* Configuaration information */
-uint8_t sapIdx,          /* SAP index */
-Elmnt sapType             /* SAP Type */
-)
-{
-   uint16_t                  ret = LCM_REASON_NOT_APPL;
-   RgSchLowSapCfgInfo   *lowSapCfg = NULLP;
-   RgSchUpSapCfgInfo    *upSapCfg = NULLP;
-   Inst  inst = (dInst - SCH_INST_START);
-
-   /* Check if Gen Config has been done */
-
-   switch(sapType)
-   {   
-      case STRGRSAP:
-#ifndef CL_MAC_LWLC
-         if ((cfg->s.schInstCfg.rgrSap[sapIdx].selector != ODU_SELECTOR_TC) &&
-             (cfg->s.schInstCfg.rgrSap[sapIdx].selector != ODU_SELECTOR_LC))
-         {
-            ret = LCM_REASON_INVALID_PAR_VAL;
-            DU_LOG("\nERROR  -->  SCH : rgSCHLmmSapCfg(): unsupported"
-               " Selector value for RGR.");
-            break;
-         }
-#endif
-         if(rgSchCb[inst].rgrSap[sapIdx].sapSta.sapState == LRG_NOT_CFG)
-         { 
-            rgSchCb[inst].rgrSap[sapIdx].sapSta.sapState = LRG_UNBND;
-         }
-         upSapCfg = &rgSchCb[inst].rgrSap[sapIdx].sapCfg;
-
-         upSapCfg->sapPst.dstEnt = cfg->s.schInstCfg.rgrSap[sapIdx].ent;
-         upSapCfg->sapPst.dstInst = cfg->s.schInstCfg.rgrSap[sapIdx].inst;
-         upSapCfg->sapPst.dstProcId = cfg->s.schInstCfg.rgrSap[sapIdx].procId;
-         upSapCfg->sapPst.srcEnt = rgSchCb[inst].rgSchInit.ent;
-         upSapCfg->sapPst.srcInst = rgSchCb[inst].rgSchInit.inst +
-         SCH_INST_START;
-         upSapCfg->sapPst.srcProcId = rgSchCb[inst].rgSchInit.procId;
-         upSapCfg->sapPst.region = cfg->s.schInstCfg.rgrSap[sapIdx].mem.region;
-         upSapCfg->sapPst.pool = cfg->s.schInstCfg.rgrSap[sapIdx].mem.pool;
-         upSapCfg->sapPst.selector = cfg->s.schInstCfg.rgrSap[sapIdx].selector;
-         upSapCfg->sapPst.route = cfg->s.schInstCfg.rgrSap[sapIdx].route;
-         upSapCfg->sapPst.intfVer = 0; 
-         upSapCfg->sapPst.event = 0; 
-         upSapCfg->sapPst.prior = cfg->s.schInstCfg.rgrSap[sapIdx].prior;
-         upSapCfg->suId = cfg->s.schInstCfg.rgrSap[sapIdx].suId;
-         upSapCfg->spId = cfg->s.schInstCfg.rgrSap[sapIdx].spId;
-         break;
-      case STTFUSAP:
-#ifndef CL_MAC_LWLC
-         if ((cfg->s.schInstCfg.tfuSap[sapIdx].selector != ODU_SELECTOR_TC) &&
-             (cfg->s.schInstCfg.tfuSap[sapIdx].selector != ODU_SELECTOR_LC))
-         {
-            ret = LCM_REASON_INVALID_PAR_VAL;
-            DU_LOG("\nERROR  -->  SCH : rgSCHLmmSapCfg(): unsupported"
-                     " Selector value for TFU.");
-            break;
-         }
-#endif
-         if (rgSchCb[inst].tfuSap[sapIdx].sapSta.sapState == LRG_NOT_CFG) 
-         { 
-            rgSchCb[inst].tfuSap[sapIdx].sapSta.sapState = LRG_UNBND;
-         }
-         /* Initialize the  sap timer */
-         cmInitTimers(&(rgSchCb[inst].tfuSap[sapIdx].tmrBlk), 1);
-         lowSapCfg = &rgSchCb[inst].tfuSap[sapIdx].sapCfg;
-
-         lowSapCfg->sapPst.dstEnt = cfg->s.schInstCfg.tfuSap[sapIdx].ent;
-         lowSapCfg->sapPst.dstInst = cfg->s.schInstCfg.tfuSap[sapIdx].inst;
-         lowSapCfg->sapPst.dstProcId = cfg->s.schInstCfg.tfuSap[sapIdx].procId;
-         lowSapCfg->sapPst.srcEnt = rgSchCb[inst].rgSchInit.ent;
-         lowSapCfg->sapPst.srcInst = rgSchCb[inst].rgSchInit.inst +
-         SCH_INST_START;
-         lowSapCfg->sapPst.srcProcId = rgSchCb[inst].rgSchInit.procId;
-         lowSapCfg->sapPst.region = cfg->s.schInstCfg.tfuSap[sapIdx].mem.region;
-         lowSapCfg->sapPst.pool = cfg->s.schInstCfg.tfuSap[sapIdx].mem.pool;
-         lowSapCfg->sapPst.selector = cfg->s.schInstCfg.tfuSap[sapIdx].selector;
-         lowSapCfg->sapPst.route = cfg->s.schInstCfg.tfuSap[sapIdx].route;
-         lowSapCfg->sapPst.intfVer = 0; 
-          lowSapCfg->sapPst.event = 0; 
-         lowSapCfg->sapPst.prior = cfg->s.schInstCfg.tfuSap[sapIdx].prior;
-         lowSapCfg->suId = cfg->s.schInstCfg.tfuSap[sapIdx].suId;
-         lowSapCfg->spId = cfg->s.schInstCfg.tfuSap[sapIdx].spId;
-         memcpy(&lowSapCfg->bndTmr, 
-                  &cfg->s.schInstCfg.tfuSap[sapIdx].bndTmr,
-                  sizeof(TmrCfg));
-         break;
-      case STRGMSAP:
-#ifndef RGM_LWLC
-         if ((cfg->s.schInstCfg.rgmSap[sapIdx].selector != RGM_SEL_LWLC) &&
-             (cfg->s.schInstCfg.rgmSap[sapIdx].selector != RGM_SEL_LC) &&
-             (cfg->s.schInstCfg.rgmSap[sapIdx].selector != RGM_SEL_TC))
-         {
-            ret = LCM_REASON_INVALID_PAR_VAL;
-            DU_LOG("\nERROR  -->  SCH : rgSCHLmmSapCfg(): unsupported"
-                     " Selector value for RGM.");
-            break;
-         }
-#endif
-         if (rgSchCb[inst].rgmSap[sapIdx].sapSta.sapState == LRG_NOT_CFG) 
-         { 
-            rgSchCb[inst].rgmSap[sapIdx].sapSta.sapState = LRG_UNBND;
-         }
-         upSapCfg = &rgSchCb[inst].rgmSap[sapIdx].sapCfg;
-         upSapCfg->sapPst.dstEnt = cfg->s.schInstCfg.rgmSap[sapIdx].ent;
-         upSapCfg->sapPst.dstInst = cfg->s.schInstCfg.rgmSap[sapIdx].inst;
-         upSapCfg->sapPst.dstProcId = cfg->s.schInstCfg.rgmSap[sapIdx].procId;
-         upSapCfg->sapPst.srcEnt = rgSchCb[inst].rgSchInit.ent;
-         upSapCfg->sapPst.srcInst = rgSchCb[inst].rgSchInit.inst +
-         SCH_INST_START;
-         upSapCfg->sapPst.srcProcId = rgSchCb[inst].rgSchInit.procId;
-         upSapCfg->sapPst.region = cfg->s.schInstCfg.rgmSap[sapIdx].mem.region;
-         upSapCfg->sapPst.pool = cfg->s.schInstCfg.rgmSap[sapIdx].mem.pool;
-         upSapCfg->sapPst.selector = cfg->s.schInstCfg.rgmSap[sapIdx].selector;
-         upSapCfg->sapPst.route = cfg->s.schInstCfg.rgmSap[sapIdx].route;
-         upSapCfg->sapPst.intfVer = 0; 
-         upSapCfg->sapPst.event = 0; 
-         upSapCfg->sapPst.prior = cfg->s.schInstCfg.rgmSap[sapIdx].prior;
-         upSapCfg->suId = cfg->s.schInstCfg.rgmSap[sapIdx].suId;
-         upSapCfg->spId = cfg->s.schInstCfg.rgmSap[sapIdx].spId;
-
-         break;
-      default:
-         /* would never reach here */
-         break;
-   }
-   return (ret);
-}
-#endif
-\f
-/***********************************************************
- *
- *     Func : rgSCHLmmShutdown
- *        
- *
- *     Desc : Handles the scheduler instance shutdown request. Calls 
- *     rgSCHCfgFreeCellCb(RgSchCellCb*) to handle each cellCb deallocation.
- *            
- *
- *     Ret  : Void
- *
- *     Notes: 
- *
- *     File : rg_sch_lmm.c 
- *
- **********************************************************/
-static Void rgSCHLmmShutdown(Inst inst)
-{
-   Inst          dInst = inst + SCH_INST_START;
-   uint8_t       idx;
-#ifdef LTE_L2_MEAS
-   CmLList       *lnk = NULLP;
-   RgSchCb       *instCb =  &rgSchCb[inst];
-   RgSchCellCb   *cell = NULLP;
-   RgSchL2MeasCb *measCb;
-   uint8_t       ulAllocIdx;
-   RgSchCmnUlCell *cellUl;
-   RgSchClcBoRpt  *bo = NULL;
-#endif
-
-#ifdef LTE_L2_MEAS
-   for (idx = 0; idx < instCb->numSaps; idx++)
-   {
-     /* got the cell break the loop */
-     cell = instCb->rgrSap[idx].cell;
-     if(cell != NULLP)
-     {
-        /* Free the memory held up by  ulAllocInfo */
-        cellUl = RG_SCH_CMN_GET_UL_CELL(cell);
-#ifdef LTE_TDD
-        for(ulAllocIdx = 0; ulAllocIdx < RGSCH_SF_ALLOC_SIZE; ulAllocIdx++)
-#else
-        for(ulAllocIdx = 0; ulAllocIdx < RGSCH_NUM_SUB_FRAMES; ulAllocIdx++)
-#endif
-        {
-           if(cell->sfAllocArr[ulAllocIdx].ulUeInfo.ulAllocInfo != NULLP)
-           {
-             /* ccpu00117052 - MOD - Passing double pointer
-             for proper NULLP assignment*/
-             rgSCHUtlFreeSBuf(cell->instIdx, 
-                    (Data **)(&(cell->sfAllocArr[ulAllocIdx].ulUeInfo.\
-                                ulAllocInfo)),
-                    cellUl->maxAllocPerUlSf * sizeof(RgInfUeUlAlloc));
-           }
-        }
-        /* Free the memory allocated to measCb */
-        lnk = cell->l2mList.first;
-        while(lnk != NULLP)
-        {
-           measCb = (RgSchL2MeasCb *)lnk->node;
-           cmLListDelFrm(&cell->l2mList, lnk);
-           lnk = lnk->next;
-             /* ccpu00117052 - MOD - Passing double pointer
-             for proper NULLP assignment*/
-           rgSCHUtlFreeSBuf(cell->instIdx, (Data **)&measCb,\
-                          sizeof(RgSchL2MeasCb));
-        }
-
-        /* Free mem if any present for boLst for common channels */
-        for(idx = 0; idx < RGSCH_MAX_CMN_LC_CB; idx++)
-        {
-           lnk = (CmLList *)cell->cmnLcCb[idx].boLst.first;
-           while (lnk)
-           {
-              bo = (RgSchClcBoRpt *)(lnk->node);
-              lnk = lnk->next;
-              cmLListDelFrm(&cell->cmnLcCb[idx].boLst, &bo->boLstEnt);
-              rgSCHUtlFreeSBuf(cell->instIdx, (Data **)&bo, sizeof(RgSchClcBoRpt));
-           }
-        }
-     }
-   }
-#endif
-
-#ifdef LTE_ADV
-   rgSCHLaaDeInitEnbCb(&rgSchCb[inst]);
-#endif
-   for (idx = 0; idx < rgSchCb[inst].numSaps; idx++)
-   {
-      /* Unbind all the TFU SAP */
-      if(rgSchCb[inst].tfuSap[idx].sapSta.sapState == LRG_WAIT_BNDCFM)
-      {
-         //rgSCHUtlTfuUBndReq(inst, rgSchCb[inst].tfuSap[idx].sapCfg, LRG_UNBND);
-         if (rgSchCb[inst].tfuSap[idx].sapCfg.bndTmr.enb == TRUE)
-         {
-            rgSCHLmmStopTmr(inst, RGSCH_BNDREQ_TMR, (PTR)&rgSchCb[inst].tfuSap[idx]); 
-         }
-         rgSchCb[inst].tfuSap[idx].sapSta.sapState = LRG_UNBND;
-      }
-      if(rgSchCb[inst].tfuSap[idx].sapSta.sapState == LRG_BND)
-      {
-         //rgSCHUtlTfuUBndReq(inst, rgSchCb[inst].tfuSap[idx].sapCfg, LRG_UNBND);
-         rgSchCb[inst].tfuSap[idx].sapSta.sapState = LRG_UNBND;
-      }
-      /* Free the memory held by the cell associated with this SAP */
-      if (rgSchCb[inst].tfuSap[idx].cell != NULLP)
-         rgSCHCfgFreeCellCb(rgSchCb[inst].tfuSap[idx].cell);
-      rgSchCb[inst].tfuSap[idx].cell = NULLP;
-   }
-   /* Free the memory held by the scheduler instance */
-   /* Deallocate RGR saps */
-   SCH_FREE(rgSchCb[inst].rgrSap,
-                (sizeof(RgSchUpSapCb) * rgSchCb[inst].numSaps));
-   rgSchCb[inst].rgrSap = NULLP;
-   /* Deallocate RGM saps */
-   SCH_FREE(rgSchCb[inst].rgmSap,
-                (sizeof(RgSchUpSapCb) * rgSchCb[inst].numSaps));
-   rgSchCb[inst].rgmSap = NULLP;
-
-   /* Deallocate TFU saps */
-   SCH_FREE(rgSchCb[inst].tfuSap,
-                (sizeof(RgSchLowSapCb) * rgSchCb[inst].numSaps));
-   rgSchCb[inst].tfuSap = NULLP;
-
-   /* Deallocate bndCfmResponses */
-   SCH_FREE(rgSchCb[inst].genCfg.bndCfmResp,
-                (sizeof(RgSchLmResponse) * rgSchCb[inst].numSaps));
-   rgSchCb[inst].genCfg.bndCfmResp = NULLP;
-   /* De-register the Timer Service */
-   (Void) SDeregTmrMt(rgSchCb[inst].rgSchInit.ent, dInst,
-                     (S16)rgSchCb[inst].genCfg.tmrRes, schActvTmr); 
-
-   /* call back the task initialization function to intialize
-    * the global rgSchCb[inst] Struct */
-   schActvInit(rgSchCb[inst].rgSchInit.ent, dInst, rgSchCb[inst].rgSchInit.region, 
-              rgSchCb[inst].rgSchInit.reason);
-   
-   /* Set Config done in TskInit */
-   rgSchCb[inst].rgSchInit.cfgDone = FALSE;
-
-   return;
-}
-
-\f
-/***********************************************************
- *
- *     Func : rgSCHLmmGenCntrl 
- *        
- *
- *     Desc : Processes the LM control request for STGEN elmnt.
- *            
- *
- *     Ret  : Void
- *
- *     Notes: 
- *
- *     File : rg_sch_lmm.c 
- *
- **********************************************************/
-Void rgSCHLmmGenCntrl(RgMngmt *cntrl,RgMngmt *cfm,Pst  *cfmPst)
-{
-   Inst      inst = (cfmPst->srcInst - SCH_INST_START); /* Scheduler instance ID */
-
-   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 SAUSTA:   
-            /* Enable Unsolicited Status (alarms) */
-               rgSchCb[inst].rgSchInit.usta = TRUE;
-               /*Store the response and TransId for sending the Alarms */
-               memcpy(&rgSchCb[inst].genCfg.ustaResp.response, 
-               &cntrl->hdr.response, sizeof(Resp));
-               rgSchCb[inst].genCfg.ustaResp.transId = cntrl->hdr.transId;
-               break;
-            case SADBG:
-            /* Enable Debug Printing */
-#ifdef DEBUGP
-               rgSchCb[inst].rgSchInit.dbgMask |= cntrl->t.cntrl.s.rgDbgCntrl.dbgMask;
-#endif
-               break;
-#ifdef PHY_ERROR_LOGING
-            case SAELMNT:
-               {
-                  rgSchUlAllocCntr.mcs = cntrl->t.cntrl.s.rgSchUlAllocCntrl.mcs;
-                  rgSchUlAllocCntr.numOfRb = cntrl->t.cntrl.s.rgSchUlAllocCntrl.numOfRb;
-                  rgSchUlAllocCntr.rbStart = cntrl->t.cntrl.s.rgSchUlAllocCntrl.rbStart;
-                  rgSchUlAllocCntr.testStart = cntrl->t.cntrl.s.rgSchUlAllocCntrl.testStart;
-                  rgSchUlAllocCntr.enaLog = cntrl->t.cntrl.s.rgSchUlAllocCntrl.enaLog;
-                  rgSchUlAllocCntr.logTime = cntrl->t.cntrl.s.rgSchUlAllocCntrl.logTime;
-                  rgSchUlAllocCntr.crcOk = 0;
-                  rgSchUlAllocCntr.crcErr = 0;
-                  rgSchUlAllocCntr.numUlPackets = 0;
-                  rgSchUlAllocCntr.numPrach = 0;
-                  rgSchUlAllocCntr.taZero = 0;
-#ifdef MAC_SCH_STATS
-                  /* Reset
-                   * L2
-                   * statistics
-                   * */
-                  memset(&hqRetxStats, 0, sizeof(RgSchHqRetxStats));
-                  memset(&hqFailStats, 0, sizeof(RgSchNackAckStats));
-#endif
-                  break;
-               }
-#endif
-            default:
-               cfm->cfm.status = LCM_PRIM_NOK;
-               cfm->cfm.reason = LCM_REASON_INVALID_PAR_VAL;
-               DU_LOG("\nERROR  -->  SCH : rgSCHLmmGenCntrl(): "
-                  "invalid subaction=%d", cntrl->t.cntrl.subAction);
-               break;
-         }
-         break;
-      case ADISIMM:
-         /* Action is Diable immidiately */
-         switch(cntrl->t.cntrl.subAction)
-         {
-            case SAUSTA:
-            /* Disable Unsolicited Status (alarms) */
-               rgSchCb[inst].rgSchInit.usta = FALSE;
-               break;
-            case SADBG:
-            /* Disable Debug Printing */
-#ifdef DEBUGP
-               rgSchCb[inst].rgSchInit.dbgMask &=\
-                          ~cntrl->t.cntrl.s.rgDbgCntrl.dbgMask;
-#endif
-               break;
-
-            default:
-               cfm->cfm.status = LCM_PRIM_NOK;
-               cfm->cfm.reason = LCM_REASON_INVALID_PAR_VAL;
-               DU_LOG("\nERROR  -->  SCH : rgSCHLmmGenCntrl():"
-                 " invalid subaction=%d", cntrl->t.cntrl.subAction);
-               break;
-         }
-         break;
-      case ASHUTDOWN:
-         /* Free all the memory dynamically allocated by MAC */
-         rgSCHLmmShutdown(inst);
-         break;
-      default:
-         cfm->cfm.status = LCM_PRIM_NOK;
-         cfm->cfm.reason = LCM_REASON_INVALID_PAR_VAL;
-         DU_LOG("\nERROR  -->  SCH : rgSCHLmmGenCntrl(): invalid"
-          " action=%d", cntrl->t.cntrl.action);
-         break;
-   }
-   RgMiLrgSchCntrlCfm(cfmPst, cfm);
-   return;
-}
-
-\f
-/***********************************************************
- *
- *     Func : rgSCHLmmSapCntrl 
- *        
- *
- *     Desc : Processes the LM control request for STxxxSAP elmnt.
- *            
- *
- *     Ret  : Void
- *
- *     Notes: 
- *
- *     File : rg_sch_lmm.c 
- *
- **********************************************************/
-Void rgSCHLmmSapCntrl 
-(
-RgMngmt       *cntrl,
-RgMngmt       *cfm,
-Pst           *cfmPst
-)
-{
-   uint8_t       idx;
-
-   /* TODO Pass InstId instead of using InstId from cfmPst */
-   Inst      inst = (cfmPst->srcInst - SCH_INST_START); /* Scheduler instance Id */
-
-   /* Only TFU SAP can be controlled by LM */
-   switch(cntrl->hdr.elmId.elmnt)
-   {
-      case STTFUSAP:
-         idx = (uint8_t)cntrl->t.cntrl.s.rgSapCntrl.suId;
-         if (idx > LRG_MAX_SAPS_PER_INST)
-         {
-            cfm->cfm.status = LCM_PRIM_NOK;
-            cfm->cfm.reason = LCM_REASON_INVALID_SAP;
-         }
-         switch(cntrl->t.cntrl.action)
-         {
-            case ABND:
-               /* Bind Enable Request */
-               if ((rgSchCb[inst].tfuSap[idx].sapSta.sapState == LRG_NOT_CFG) ||
-                   (rgSchCb[inst].tfuSap[idx].sapSta.sapState == LRG_BND))
-               {
-                  cfm->cfm.status = LCM_PRIM_NOK;
-                  cfm->cfm.reason = LCM_REASON_INVALID_SAP;
-               }
-               else
-               {
-                  if (rgSchCb[inst].tfuSap[idx].sapCfg.bndTmr.enb == TRUE)
-                  {
-                     rgSCHLmmStartTmr(inst, RGSCH_BNDREQ_TMR,
-                                  rgSchCb[inst].tfuSap[idx].sapCfg.bndTmr.val, 
-                                  (PTR)&rgSchCb[inst].tfuSap[idx]);
-                  }
-                  /* Change SAP state */
-                  rgSchCb[inst].tfuSap[idx].sapSta.sapState = LRG_WAIT_BNDCFM;
-                  rgSchCb[inst].tfuSap[idx].numBndRetries++;
-                  /* Store the response and TransId for sending 
-                   * the Control confirm */
-                  memcpy(&rgSchCb[inst].genCfg.bndCfmResp[idx].response,
-                           &cntrl->hdr.response, sizeof(Resp));
-                  rgSchCb[inst].genCfg.bndCfmResp[idx].transId = 
-                                                cntrl->hdr.transId;
-                  
-                  cfm->cfm.status = LCM_PRIM_OK_NDONE;
-                  cfm->cfm.reason = LCM_REASON_NOT_APPL;
-
-                  /* Sending Control Confirm before sending Bind
-                   * Request to TFU  */
-                  RgMiLrgSchCntrlCfm(cfmPst, cfm);
-                  
-                  //rgSCHUtlTfuBndReq(inst, rgSchCb[inst].tfuSap[idx].sapCfg.suId, 
-                    //             rgSchCb[inst].tfuSap[idx].sapCfg.spId);
-                 return; 
-               }
-               break;
-            case AUBND:
-            /* Unbind request */
-
-               /* Check if the SAP is configured */
-               if( (rgSchCb[inst].tfuSap[idx].sapSta.sapState == LRG_NOT_CFG) ||
-                     (rgSchCb[inst].tfuSap[idx].sapSta.sapState == LRG_UNBND))
-               {
-                  cfm->cfm.status = LCM_PRIM_NOK;
-                  cfm->cfm.reason = LCM_REASON_INVALID_MSGTYPE;
-               }
-               else
-               {
-                  //rgSCHUtlTfuUBndReq(inst, rgSchCb[inst].tfuSap[idx].sapCfg,
-                    //              TFU_UBNDREQ_MNGMT);
-                  if (rgSchCb[inst].tfuSap[idx].sapCfg.bndTmr.enb == TRUE)
-                  {
-                     rgSCHLmmStopTmr(inst, RGSCH_BNDREQ_TMR, 
-                                       (PTR)&rgSchCb[inst].tfuSap[idx]);
-                  }
-                  /* Change SAP state */
-                  rgSchCb[inst].tfuSap[idx].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 ((rgSchCb[inst].tfuSap[idx].sapSta.sapState == LRG_WAIT_BNDCFM) ||
-                   (rgSchCb[inst].tfuSap[idx].sapSta.sapState == LRG_BND))
-               {
-                  //rgSCHUtlTfuUBndReq(inst, rgSchCb[inst].tfuSap[idx].sapCfg,
-                    //              TFU_UBNDREQ_MNGMT);
-                  if (rgSchCb[inst].tfuSap[idx].sapCfg.bndTmr.enb == TRUE)
-                  {
-                     rgSCHLmmStopTmr(inst, RGSCH_BNDREQ_TMR,
-                                     (PTR)&rgSchCb[inst].tfuSap[idx]);
-                  }
-               }
-               memset(&rgSchCb[inst].tfuSap[idx], 0, sizeof(RgSchLowSapCb));
-               rgSchCb[inst].tfuSap[idx].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;
-               DU_LOG("\nERROR  -->  SCH : rgSCHLmmSapCntrl(): "
-                  "invalid action=%d", cntrl->t.cntrl.action);
-               break;
-         }
-         break;
-      case STRGRSAP:
-         idx = (uint8_t)cntrl->t.cntrl.s.rgSapCntrl.spId;
-         if (idx > LRG_MAX_SAPS_PER_INST)
-         {
-            cfm->cfm.status = LCM_PRIM_NOK;
-            cfm->cfm.reason = LCM_REASON_INVALID_SAP;
-         }
-         switch(cntrl->t.cntrl.action)
-         {
-            case ADEL:
-               memset(&rgSchCb[inst].rgrSap[idx], 0, sizeof(RgSchUpSapCb));
-               rgSchCb[inst].rgrSap[idx].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;
-               DU_LOG("\nERROR  -->  SCH : rgSCHLmmSapCntrl(): "
-                     "invalid action=%d", cntrl->t.cntrl.action);
-               break;
-         }
-         break;
-      case STRGMSAP:
-         idx = (uint8_t)cntrl->t.cntrl.s.rgSapCntrl.spId;
-         if (idx > LRG_MAX_SAPS_PER_INST)
-         {
-            cfm->cfm.status = LCM_PRIM_NOK;
-            cfm->cfm.reason = LCM_REASON_INVALID_SAP;
-         }
-         switch(cntrl->t.cntrl.action)
-         {
-            case ADEL:
-               memset(&rgSchCb[inst].rgmSap[idx], 0, sizeof(RgSchUpSapCb));
-               rgSchCb[inst].rgmSap[idx].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;
-               DU_LOG("\nERROR  -->  SCH : rgSCHLmmSapCntrl(): "
-                     "invalid action=%d", cntrl->t.cntrl.action);
-               break;
-         }
-         break;
-
-       default:
-         /* Would never come here. */
-         return;
-   }
-   RgMiLrgSchCntrlCfm(cfmPst, cfm);
-   return;
-}
-
-\f
-/***********************************************************
- *
- *     Func : SchFillCfmPst 
- *        
- *
- *     Desc : Fills the Confirmation Post Structure cfmPst using the reqPst 
- *            and the cfm->hdr.response.
- *            
- *
- *     Ret  : Void
- *
- *     Notes: 
- *
- *     File : rg_sch_lmm.c 
- *
- **********************************************************/
-Void SchFillCfmPst
-(
-Pst           *reqPst,
-Pst           *cfmPst,
-RgMngmt       *cfm
-)
-{
-   Inst inst;
-
-   inst = (reqPst->dstInst - SCH_INST_START);
-
-   cfmPst->srcEnt    = ENTMAC;
-   cfmPst->srcInst   = (Inst) 1;
-   cfmPst->srcProcId = rgSchCb[inst].rgSchInit.procId;
-   cfmPst->dstEnt    = ENTMAC;
-   cfmPst->dstInst   = (Inst) 0;
-   cfmPst->dstProcId = reqPst->srcProcId;
-
-   cfmPst->selector  = cfm->hdr.response.selector;
-   cfmPst->region    = cfm->hdr.response.mem.region;
-   cfmPst->pool      = cfm->hdr.response.mem.pool;
-
-   return;
-}
-
-\f
-/**
- * @brief Timer start handler. 
- *
- * @details
- *
- *     Function : rgSCHLmmStartTmr
- *     
- *     This function based on the input parameters starts the timer for 
- *     "tmrVal" duration. As of now scheduler instance uses the timer 
- *     functionality for BndReq only. Hence there is no conditional
- *     code based on "tmrEvnt".
- *     
- *  @param[in]  S16   tmrEvnt, the Timer Event    
- *  @param[in]  uint32_t   tmrVal,  the Wait Time
- *  @param[in]  PTR   cb,  Entry for which Timer expired
- *  @return  S16
- *      -# ROK
- **/
-S16 rgSCHLmmStartTmr
-(
-Inst       inst,
-S16        tmrEvnt,            /* Timer Event */
-uint32_t   tmrVal,             /* Wait Time */
-PTR        cb                  /* Entry for which Timer Expired */
-)
-{
-   CmTmrArg    arg;
-/*   Inst        dInst = inst + SCH_INST_START; */
-
-   UNUSED(tmrEvnt);
-
-   /* Initialize the arg structure */
-   memset(&arg, 0, sizeof(CmTmrArg));
-
-   arg.tqCp = &rgSchCb[inst].tmrTqCp;
-   arg.tq = rgSchCb[inst].tmrTq;
-   arg.timers = &((RgSchLowSapCb *)cb)->tmrBlk;
-   arg.cb = cb;
-   arg.tNum = 0;
-   arg.max = RGSCH_MAX_TIMER;
-   arg.evnt = RGSCH_BNDREQ_TMR;
-   arg.wait = tmrVal;      
-   cmPlcCbTq(&arg);
-
-   return ROK;
-}
-
-\f
-/**
- * @brief Timer stop handler. 
- *
- * @details
- *
- *     Function : rgSCHLmmStopTmr
- *     
- *     This function based on the input parameters stops the timer for 
- *     "tmrEvnt". As of now Scheduler instance uses the timer functionality for
- *     BndReq only. Hence there is no conditional code based on "tmrEvnt".
- *     Once the bind happens and this timer is stopped, the timer functionality
- *     is deregistered with SSI. As there is no further use of timer processing.
- *     
- *  @param[in]  S16   tmrEvnt, the Timer Event    
- *  @param[in]  PTR   cb,  Entry for which Timer expired
- *  @return  S16
- *      -# ROK
- *      -# RFAILED
- **/
-S16 rgSCHLmmStopTmr
-(
-Inst inst,             /* Scheduler instance */
-S16  tmrEvnt,            /* Timer Event */
-PTR  cb                  /* Entry for which Timer Expired */
-)
-{
-   CmTmrArg   arg;
-   uint8_t    i;
-   S16        ret; 
-
-   ret = RFAILED;
-
-   for(i=0;i<RGSCH_MAX_TIMER;i++)
-   {
-      /* Search for the Timer Blocks */
-      if(((RgSchLowSapCb *)cb)->tmrBlk.tmrEvnt == tmrEvnt)
-      {
-         /* Initialize the arg structure */
-         memset(&arg, 0, sizeof(CmTmrArg));
-
-         arg.tqCp = &rgSchCb[inst].tmrTqCp;
-         arg.tq = rgSchCb[inst].tmrTq;
-         arg.timers = &(((RgSchLowSapCb *)cb)->tmrBlk);
-         arg.cb = cb;
-         arg.max = RGSCH_MAX_TIMER;
-         arg.evnt = tmrEvnt;
-
-         arg.tNum = i;   
-         cmRmvCbTq(&arg);
-         ret = ROK;
-         break;
-      }
-
-   }
-
-
-   return (ret);
-}
-
-\f
-/**
- * @brief Timer Expiry handler. 
- *
- * @details
- *
- *     Function : rgSCHLmmTmrExpiry
- *     
- *     This is a callback function used as an input parameter to cmPrcTmr()
- *     to check expiry of any timer. In this function, we are only concerned
- *     about tmrEvnt=Bind timer.
- *     
- *  @param[in]  PTR   cb,  Entry for which Timer expired
- *  @param[in]  S16   tmrEvnt, the Timer Event    
- *  @return  S16
- *      -# ROK
- **/
-S16 rgSCHLmmTmrExpiry
-(
-PTR cb,               /* Pointer to timer control block */
-S16 tmrEvnt           /* Timer Event */
-)
-{
-   S16           ret = ROK;
-   RgSchLowSapCb *tfuSap = (RgSchLowSapCb *)cb;
-
-   
-   switch(tmrEvnt)
-   {
-      case RGSCH_BNDREQ_TMR:
-         tfuSap->numBndRetries++;
-         if(tfuSap->numBndRetries > RGSCH_MAX_BNDRETRY)
-         {
-            rgSCHLmmStaInd((uint8_t)(tfuSap->sapCfg.sapPst.srcInst - SCH_INST_START),
-                           (uint16_t)LCM_CATEGORY_INTERFACE, (uint16_t)LCM_EVENT_BND_FAIL,
-                           (uint16_t)LCM_CAUSE_TMR_EXPIRED, (RgUstaDgn *)NULLP);
-         }
-         else
-         {
-            /* Restart the bind timer */
-            if (tfuSap->sapCfg.bndTmr.enb == TRUE)
-            {
-               ret = rgSCHLmmStartTmr((uint8_t)(tfuSap->sapCfg.sapPst.srcInst - SCH_INST_START),
-                                  RGSCH_BNDREQ_TMR, 
-                                 (uint32_t)tfuSap->sapCfg.bndTmr.val, cb);
-            }
-
-            /* Send bind request */
-            //rgSCHUtlTfuBndReq((uint8_t)(tfuSap->sapCfg.sapPst.srcInst - SCH_INST_START), 
-            //tfuSap->sapCfg.suId, tfuSap->sapCfg.spId);
-         }
-         break;
-      default:
-         DU_LOG("\nERROR  -->  SCH : rgSCHLmmTmrExpiry(): Invalid"
-                 " tmrEvnt=%d", tmrEvnt);
-         ret = RFAILED;
-         break;
-   }
-   return (ret);
-}
-
-\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 : rgSCHLmmBndCfm 
- *     
- *     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 rgSCHLmmBndCfm
-(
-Pst *pst,               /* Post Structure */
-SuId suId,              /* Service user ID */
-uint8_t status               /* Status */
-)
-{
-   S16       ret = ROK;
-   RgMngmt   cntrlCfm;
-   Pst       cfmPst;
-   Inst      inst = (pst->dstInst - SCH_INST_START); /* scheduler instance */
-
-
-   /* check the SAP State */
-   switch(rgSchCb[inst].tfuSap[suId].sapSta.sapState)
-   {
-      case LRG_WAIT_BNDCFM:
-         break;
-      case LRG_BND:
-         /* SAP is already bound */
-         return ROK;
-      default:
-         return RFAILED;
-   }
-
-   cfmPst = rgSchCb[inst].rgSchInit.lmPst;
-   cfmPst.selector = rgSchCb[inst].genCfg.bndCfmResp[suId].response.selector;
-   cfmPst.prior = rgSchCb[inst].genCfg.bndCfmResp[suId].response.prior;
-   cfmPst.route = rgSchCb[inst].genCfg.bndCfmResp[suId].response.route;
-   cfmPst.region = rgSchCb[inst].genCfg.bndCfmResp[suId].response.mem.region;
-   cfmPst.pool = rgSchCb[inst].genCfg.bndCfmResp[suId].response.mem.pool;
-   
-   memset(&cntrlCfm, 0, sizeof(RgMngmt));
-
-   switch(status)
-   {
-      case CM_BND_OK: /* status is OK */
-         /* Change SAP state to Bound */
-         rgSchCb[inst].tfuSap[suId].sapSta.sapState = LRG_BND;
-         if (rgSchCb[inst].tfuSap[suId].sapCfg.bndTmr.enb == TRUE)
-         {
-            ret = rgSCHLmmStopTmr(inst, RGSCH_BNDREQ_TMR, (PTR)&rgSchCb[inst].tfuSap[suId]);
-         }
-         /* Send Control Confirm with status as OK to Layer Manager */
-         cntrlCfm.cfm.status = LCM_PRIM_OK;
-         cntrlCfm.cfm.reason = LCM_REASON_NOT_APPL;
-        /* Sending Status Indication to Layer Manager */
-         rgSCHLmmStaInd((uint8_t)(rgSchCb[inst].tfuSap->sapCfg.sapPst.srcInst - SCH_INST_START),
-               LCM_CATEGORY_INTERFACE, LCM_EVENT_BND_OK,
-               LCM_CAUSE_LYR_SPECIFIC, (RgUstaDgn *)NULLP);
-         break;
-
-      default:
-         /* Change SAP state to UnBound */
-         rgSchCb[inst].tfuSap[suId].sapSta.sapState = LRG_UNBND;
-         if (rgSchCb[inst].tfuSap[suId].sapCfg.bndTmr.enb == TRUE)
-         {
-            ret = rgSCHLmmStopTmr(inst, RGSCH_BNDREQ_TMR, (PTR)&rgSchCb[inst].tfuSap[suId]);
-         }
-         /* Send Control Confirm with status as NOK to Layer Manager */
-         cntrlCfm.cfm.status = LCM_PRIM_NOK;
-         cntrlCfm.cfm.reason = LCM_REASON_NEG_CFM;
-         break;
-   }
-   rgSchCb[inst].tfuSap[suId].numBndRetries = 0;
-   cntrlCfm.hdr.elmId.elmnt = STTFUSAP;
-   cntrlCfm.hdr.transId = rgSchCb[inst].genCfg.bndCfmResp[suId].transId;
-
-   ret = RgMiLrgSchCntrlCfm(&cfmPst, &cntrlCfm);
-
-   return (ret);
-}
-
-/**
- * @brief Layer Manager Unsolicited Status Indication generation. 
- *
- * @details
- *
- *     Function : rgSCHLmmStaInd 
- *     
- *     This API is used by the other modules of MAC to send a unsolicited
- *     status indication to the Layer Manager.
- *     
- *  @param[in]  uint16_t category, the Alarm category
- *  @param[in]  uint16_t event, the Alarm event
- *  @param[in]  uint16_t cause, the cause of the Alarm
- *  @param[in]  RgUstaDgn *dgn, Alarm Diagonostics
- *  @return  S16
- *      -# ROK
- **/
-S16 rgSCHLmmStaInd
-(
-Inst inst,
-uint16_t  category,
-uint16_t  event,
-uint16_t  cause,
-RgUstaDgn *dgn
-)
-{
-   RgMngmt    usta;
-
-   if(rgSchCb[inst].rgSchInit.usta == FALSE)
-   {
-      return ROK;
-   }
-   memset(&usta, 0, sizeof(RgMngmt));
-
-   SGetDateTime(&usta.t.usta.cmAlarm.dt);
-   usta.t.usta.cmAlarm.category = category;
-   usta.t.usta.cmAlarm.event = event;
-   usta.t.usta.cmAlarm.cause = cause;
-   if (dgn != NULLP)
-   {
-      memcpy(&usta.t.usta.dgn, dgn, sizeof(RgUstaDgn));
-   }
-
-   rgSchCb[inst].rgSchInit.lmPst.selector = 
-                       rgSchCb[inst].genCfg.ustaResp.response.selector;
-   rgSchCb[inst].rgSchInit.lmPst.prior = 
-                       rgSchCb[inst].genCfg.ustaResp.response.prior;
-   rgSchCb[inst].rgSchInit.lmPst.route = 
-                       rgSchCb[inst].genCfg.ustaResp.response.route;
-   rgSchCb[inst].rgSchInit.lmPst.region = 
-                       rgSchCb[inst].genCfg.ustaResp.response.mem.region;
-   rgSchCb[inst].rgSchInit.lmPst.pool = 
-                       rgSchCb[inst].genCfg.ustaResp.response.mem.pool;
-   usta.hdr.transId = rgSchCb[inst].genCfg.ustaResp.transId;
-
-   return (RgMiLrgSchStaInd(&rgSchCb[inst].rgSchInit.lmPst, &usta));
-}
-
-\f
-/**********************************************************************
-         End of file
-**********************************************************************/