RLC BO, BO response and DL Data handling. [Issue-ID: ODUHIGH-181]
[o-du/l2.git] / src / 5gnrmac / rg_lmm.c
index e3dd82e..0b3357b 100755 (executable)
@@ -38,47 +38,39 @@ static int RLOG_FILE_ID=220;
 static int RLOG_MODULE_ID=4096;
 
 /* header include files (.h) */
-#include "envopt.h"        /* environment options */
-#include "envdep.h"        /* environment dependent */
-#include "envind.h"        /* environment independent */
-#include "gen.h"           /* general */
-#include "ssi.h"           /* system services */
-#include "cm_tkns.h"       /* Common Token Defines */
-#include "cm_llist.h"      /* Common Link List Defines */
-#include "cm_hash.h"       /* Common Hash List Defines */
-#include "cm_mblk.h"       /* common memory link list library */
-#include "cm_lte.h"        /* Common LTE Defines */
+#include "common_def.h"
 #include "rg_env.h"        /* MAC Environment Defines */
 #include "crg.h"           /* CRG Interface defines */
 #include "rgu.h"           /* RGU Interface defines */
 #include "tfu.h"           /* RGU Interface defines */
-#include "rg_sch_inf.h"           /* RGR Interface defines */
+#include "rg_sch_inf.h"    /* RGR Interface defines */
 #include "lrg.h"           /* LRG Interface defines */
+#include "rgr.h"           /* LRG Interface defines */
 #include "rg.h"            /* MAC defines */
 #include "rg_err.h"        /* MAC error defines */
 
 /* header/extern include files (.x) */
-#include "gen.x"           /* general */
-#include "ssi.x"           /* system services */
-#include "cm5.x"           /* system services */
-#include "cm_tkns.x"       /* Common Token Definitions */
-#include "cm_llist.x"      /* Common Link List Definitions */
-#include "cm_lib.x"        /* Common Library Definitions */
-#include "cm_hash.x"       /* Common Hash List Definitions */
-#include "cm_mblk.x"       /* common memory link list library */
-#include "cm_lte.x"        /* Common LTE Defines */
 #include "crg.x"           /* CRG Interface includes */
 #include "rgu.x"           /* RGU Interface includes */
 #include "tfu.x"           /* RGU Interface includes */
 #include "rg_sch_inf.x"    /* SCH Interface includes */
 #include "rg_prg.x"    /* PRG Interface includes */
 #include "lrg.x"           /* LRG Interface includes */
+#include "rgr.x"           /* LRG Interface includes */
+#include "du_app_mac_inf.h"
 #include "rg.x"            /* MAC includes */
 #ifdef SS_DIAG
 #include "ss_diag.h"        /* Common log file */
 #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"
+
 #ifdef __cplusplus
 extern "C" {
 #endif /* __cplusplus */
@@ -87,6 +79,9 @@ EXTERN Void rgGetSId ARGS((SystemId *s));
 }
 #endif /* __cplusplus */
 
+/* Public variable declaration */
+LwrMacCb   lwrMacCb;
+extern MacCb  macCb;
 
 /* forward references */
 PRIVATE U16 rgLMMGenCfg ARGS((
@@ -143,7 +138,7 @@ Pst           *cfmPst
  *      -# ROK
  **/
 #ifdef ANSI
-PUBLIC S16 rgActvInit
+S16 rgActvInit
 (
 Ent entity,            /* entity */
 Inst inst,             /* instance */
@@ -151,7 +146,7 @@ Region region,         /* region */
 Reason reason          /* reason */
 )
 #else
-PUBLIC S16 rgActvInit(entity, inst, region, reason)
+S16 rgActvInit(entity, inst, region, reason)
 Ent entity;            /* entity */
 Inst inst;             /* instance */
 Region region;         /* region */
@@ -202,7 +197,22 @@ Reason reason;         /* reason */
    SAttachSRngBuf(SS_RNG_BUF_ULMAC_TO_ULRLC, SS_RBUF_ENT_ULMAC,SS_RNG_TX);
    SAttachSRngBuf(SS_RNG_BUF_ULMAC_TO_ULRLC, SS_RBUF_ENT_ULRLC,SS_RNG_RX);
 #endif
-   RETVALUE(ROK);
+
+   /* 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);
+
+   /* Initialize lower mac */
+   lwrMacInit();
+
+   return ROK;
 
 } /* rgActvInit */
 \f
@@ -225,13 +235,13 @@ Reason reason;         /* reason */
  *      -# ROK
  **/
 #ifdef ANSI
-PUBLIC S16 RgMiLrgCfgReq
+S16 RgMiLrgCfgReq
 (
 Pst      *pst,    /* post structure  */
 RgMngmt  *cfg     /* config structure  */
 )
 #else
-PUBLIC S16 RgMiLrgCfgReq(pst, cfg)
+S16 RgMiLrgCfgReq(pst, cfg)
 Pst      *pst;    /* post structure  */
 RgMngmt  *cfg;    /* config structure  */
 #endif    
@@ -291,7 +301,7 @@ RgMngmt  *cfg;    /* config structure  */
 
    RgMiLrgCfgCfm(&cfmPst, &cfm);
    
-   RETVALUE(ROK);
+   return ROK;
 }/*-- RgMiLrgCfgReq --*/
 
 \f
@@ -315,13 +325,13 @@ RgMngmt  *cfg;    /* config structure  */
  *      -# ROK
  **/
 #ifdef ANSI
-PUBLIC S16 RgMiLrgStsReq
+S16 RgMiLrgStsReq
 (
 Pst      *pst,    /* post structure  */
 RgMngmt  *sts     /* statistics structure  */
 )
 #else
-PUBLIC S16 RgMiLrgStsReq(pst, sts)
+S16 RgMiLrgStsReq(pst, sts)
 Pst      *pst;    /* post structure  */
 RgMngmt  *sts;    /* statistics structure  */
 #endif    
@@ -356,7 +366,7 @@ RgMngmt  *sts;    /* statistics structure  */
       cfm.cfm.reason = LCM_REASON_GENCFG_NOT_DONE;
       RgMiLrgStsCfm(&cfmPst,&cfm);
       RLOG0(L_ERROR, "Gen Cfg not done");
-      RETVALUE(ROK);
+      return ROK;
    }
 
    switch(sts->hdr.elmId.elmnt)
@@ -467,7 +477,7 @@ RgMngmt  *sts;    /* statistics structure  */
          break;     
    }
    RgMiLrgStsCfm(&cfmPst,&cfm);
-   RETVALUE(ROK);
+   return ROK;
 }/*-- RgMiLrgStsReq --*/
 
 \f
@@ -490,13 +500,13 @@ RgMngmt  *sts;    /* statistics structure  */
  *      -# ROK
  **/
 #ifdef ANSI
-PUBLIC S16 RgMiLrgStaReq
+S16 RgMiLrgStaReq
 (
 Pst      *pst,    /* post structure  */
 RgMngmt  *sta     /* status structure  */
 )
 #else
-PUBLIC S16 RgMiLrgStaReq(pst, sta)
+S16 RgMiLrgStaReq(pst, sta)
 Pst      *pst;    /* post structure  */
 RgMngmt  *sta;    /* status structure  */
 #endif    
@@ -535,7 +545,7 @@ RgMngmt  *sta;    /* status structure  */
          != ROK)
       {
          RLOG0(L_ERROR, "Memory Unavailable for Confirmation");
-         RETVALUE(ROK);
+         return ROK;
       } 
       cmMemset((U8 *)(cfm.t.ssta.s.sysId.ptNmb), 0, LRG_MAX_PT_NUM_SIZE);
       rgGetSId(&cfm.t.ssta.s.sysId);
@@ -544,7 +554,7 @@ RgMngmt  *sta;    /* status structure  */
       cfm.hdr.elmId.elmnt = sta->hdr.elmId.elmnt;
       RgMiLrgStaCfm(&cfmPst, &cfm);
       RLOG0(L_ERROR, "Gen Cfg not done");
-      RETVALUE(ROK);
+      return ROK;
    }
 
    switch(sta->hdr.elmId.elmnt)
@@ -556,7 +566,7 @@ RgMngmt  *sta;    /* status structure  */
             != ROK)
          {
             RLOG0(L_ERROR, "Memory Unavailable for Confirmation");
-            RETVALUE(ROK);
+            return ROK;
          } 
          cmMemset((U8 *)(cfm.t.ssta.s.sysId.ptNmb), 0, LRG_MAX_PT_NUM_SIZE);
          rgGetSId(&cfm.t.ssta.s.sysId);
@@ -596,7 +606,7 @@ RgMngmt  *sta;    /* status structure  */
          RLOG1(L_ERROR, "Invalid elmnt=%d",sta->hdr.elmId.elmnt);
          break;     
    }
-   RETVALUE(ROK);
+   return ROK;
 }/*-- RgMiLrgStaReq --*/
 
 \f
@@ -621,13 +631,13 @@ RgMngmt  *sta;    /* status structure  */
  *      -# ROK
  **/
 #ifdef ANSI
-PUBLIC S16 RgMiLrgCntrlReq
+S16 RgMiLrgCntrlReq
 (
 Pst      *pst,    /* post structure  */
 RgMngmt  *cntrl   /* control structure  */
 )
 #else
-PUBLIC S16 RgMiLrgCntrlReq(pst, cntrl)
+S16 RgMiLrgCntrlReq(pst, cntrl)
 Pst      *pst;    /* post structure  */
 RgMngmt  *cntrl;  /* control structure  */
 #endif    
@@ -662,7 +672,7 @@ RgMngmt  *cntrl;  /* control structure  */
       cfm.hdr.elmId.elmnt = cntrl->hdr.elmId.elmnt;
       RgMiLrgCntrlCfm(&cfmPst, &cfm);
       RLOG0(L_ERROR, "Gen Cfg not done");
-      RETVALUE(ROK);
+      return ROK;
    }
  
    /* General Config done, process the Control request */   
@@ -683,7 +693,7 @@ RgMngmt  *cntrl;  /* control structure  */
          RLOG1(L_ERROR, "invalid elmnt=%d",cntrl->hdr.elmId.elmnt);
          break;
    }
-   RETVALUE(ret);
+   return (ret);
 }/*-- RgMiLrgCntrlReq --*/
 
 \f
@@ -729,14 +739,14 @@ Elmnt sapType;            /* Sap Type */
 
    /* Check if Gen Config has been done */
    if(rgCb[inst].rgInit.cfgDone != TRUE)
-      RETVALUE(LCM_REASON_GENCFG_NOT_DONE);
+      return (LCM_REASON_GENCFG_NOT_DONE);
 
    switch(sapType)
    {   
       case STRGUSAP:
          if ((cfg->s.rguSap.spId > LRG_MAX_RGU_SAPS) &&
-             (cfg->s.rguSap.selector != RGU_SEL_TC) &&
-             (cfg->s.rguSap.selector != RGU_SEL_LC))
+             (cfg->s.rguSap.selector != ODU_SELECTOR_TC) &&
+             (cfg->s.rguSap.selector != ODU_SELECTOR_LC))
          {
             ret = LCM_REASON_INVALID_PAR_VAL;
             RLOG0(L_ERROR, "unsupported Selector value for RGU");
@@ -766,8 +776,8 @@ Elmnt sapType;            /* Sap Type */
           * there is cfg request with sap is 1*/
          break;
       case STCRGSAP:
-         if ((cfg->s.crgSap.selector != CRG_SEL_TC) &&
-             (cfg->s.crgSap.selector != CRG_SEL_LC))
+         if ((cfg->s.crgSap.selector != ODU_SELECTOR_TC) &&
+             (cfg->s.crgSap.selector != ODU_SELECTOR_LC))
          {
             ret = LCM_REASON_INVALID_PAR_VAL;
             RLOG0(L_ERROR, "unsupported Selector value for CRG");
@@ -796,8 +806,8 @@ Elmnt sapType;            /* Sap Type */
          break;
       case STTFUSAP:
 #ifndef CL_MAC_LWLC 
-         if ((cfg->s.tfuSap.selector != TFU_SEL_TC) &&
-             (cfg->s.tfuSap.selector != TFU_SEL_LC))
+         if ((cfg->s.tfuSap.selector != ODU_SELECTOR_TC) &&
+             (cfg->s.tfuSap.selector != ODU_SELECTOR_LC))
          {
             ret = LCM_REASON_INVALID_PAR_VAL;
             RLOG0(L_ERROR, "unsupported Selector value for TFU");
@@ -831,7 +841,7 @@ Elmnt sapType;            /* Sap Type */
          /* would never reach here */
          break;
    }
-   RETVALUE(ret);
+   return (ret);
 }
 
 \f
@@ -873,13 +883,13 @@ RgCfg *cfg;            /* Configuaration information */
    /* Check if General Configuration is done already */
    if (rgCb[inst].rgInit.cfgDone == TRUE)
    {
-      RETVALUE(LCM_REASON_INVALID_MSGTYPE);
+      return (LCM_REASON_INVALID_MSGTYPE);
    }
-   if ((cfg->s.genCfg.lmPst.selector != LRG_SEL_TC) &&
-       (cfg->s.genCfg.lmPst.selector != LRG_SEL_LC))
+   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");
-      RETVALUE(LCM_REASON_INVALID_PAR_VAL);
+      return (LCM_REASON_INVALID_PAR_VAL);
    }
    /* Update the Pst structure for LM interface */
    cmMemcpy((U8 *)&rgCb[inst].rgInit.lmPst, (U8 *)&cfg->s.genCfg.lmPst,
@@ -893,13 +903,17 @@ RgCfg *cfg;            /* Configuaration information */
    rgCb[inst].rgInit.region = cfg->s.genCfg.mem.region;
    rgCb[inst].rgInit.pool = cfg->s.genCfg.mem.pool;
    rgCb[inst].genCfg.tmrRes = cfg->s.genCfg.tmrRes;
+
+   macCb.macInst = rgCb[inst].rgInit.inst;
+   macCb.procId = rgCb[inst].rgInit.procId;
+
    /* Initialize SAP States */
    rgCb[inst].crgSap.sapSta.sapState = LRG_NOT_CFG;
 
    if(cfg->s.genCfg.numRguSaps == 0)
    {
       RGDBGERRNEW(inst,(rgPBuf(inst), "\nrgGenCfg(): Invalid numRguSap.\n"));
-      RETVALUE(RFAILED);
+      return RFAILED;
    }
 
    /* allocate RGR saps */
@@ -909,7 +923,7 @@ RgCfg *cfg;            /* Configuaration information */
                 (sizeof(RgUpSapCb) * cfg->s.genCfg.numRguSaps)) != ROK)
    {
       RGDBGERRNEW(inst,(rgPBuf(inst), "\nrgGenCfg(): Failed to allocate mem for RGU SAP's.\n"));
-      RETVALUE(RFAILED);
+      return RFAILED;
    }
    rgCb[inst].numRguSaps = cfg->s.genCfg.numRguSaps;
 
@@ -926,6 +940,7 @@ RgCfg *cfg;            /* Configuaration information */
    /* Initialize the timer control point */
    cmMemset((U8 *)&rgCb[inst].tmrTqCp, 0, sizeof(CmTqCp));
    rgCb[inst].tmrTqCp.tmrLen = RG_TQ_SIZE;
+#if 0
    /* Timer Registration request to SSI */
    if (SRegTmrMt(rgCb[inst].rgInit.ent, rgCb[inst].rgInit.inst,
             (S16)rgCb[inst].genCfg.tmrRes, rgActvTmr) != ROK)
@@ -938,12 +953,13 @@ RgCfg *cfg;            /* Configuaration information */
                 (Data *)rgCb[inst].rguSap,
                 (sizeof(RgUpSapCb) * cfg->s.genCfg.numRguSaps));
 
-      RETVALUE(LCM_REASON_MEM_NOAVAIL);
+      return (LCM_REASON_MEM_NOAVAIL);
    }
+#endif
    /* Set Config done in TskInit */
    rgCb[inst].rgInit.cfgDone = TRUE;
 
-   RETVALUE(ret);
+   return (ret);
 }
 
 \f
@@ -1385,7 +1401,7 @@ RgMngmt       *cfm;
  *      -# ROK
  **/
 #ifdef ANSI
-PUBLIC S16 rgLMMStartTmr
+S16 rgLMMStartTmr
 (
 Inst               inst,
 S16                tmrEvnt,            /* Timer Event */
@@ -1393,7 +1409,7 @@ U32                tmrVal,             /* Wait Time */
 PTR                cb                  /* Entry for which Timer Expired */
 )
 #else
-PUBLIC S16 rgLMMStartTmr(tmrEvnt, tmrVal, cb)
+S16 rgLMMStartTmr(tmrEvnt, tmrVal, cb)
 Inst               inst;
 S16                tmrEvnt;            /* Timer Event */
 U32                tmrVal;             /* Wait Time */
@@ -1419,7 +1435,7 @@ PTR                cb;                 /* Entry for which Timer Expired */
    arg.wait = tmrVal;      
    cmPlcCbTq(&arg);
 
-   RETVALUE(ROK);
+   return ROK;
 }
 
 \f
@@ -1444,14 +1460,14 @@ PTR                cb;                 /* Entry for which Timer Expired */
  *      -# RFAILED
  **/
 #ifdef ANSI
-PUBLIC S16 rgLMMStopTmr
+S16 rgLMMStopTmr
 (
 Inst               inst,             /* Scheduler instance */
 S16                tmrEvnt,            /* Timer Event */
 PTR                cb                  /* Entry for which Timer Expired */
 )
 #else
-PUBLIC S16 rgLMMStopTmr(inst,tmrEvnt, cb)
+S16 rgLMMStopTmr(inst,tmrEvnt, cb)
 Inst               inst;             /* Scheduler instance */
 S16                tmrEvnt;            /* Timer Event */
 PTR                cb;                 /* Entry for which Timer Expired */
@@ -1490,7 +1506,7 @@ PTR                cb;                 /* Entry for which Timer Expired */
    }
 
 
-   RETVALUE(ret);
+   return (ret);
 }
 
 \f
@@ -1511,13 +1527,13 @@ PTR                cb;                 /* Entry for which Timer Expired */
  *      -# ROK
  **/
 #ifdef ANSI
-PUBLIC S16 rgLMMTmrExpiry
+S16 rgLMMTmrExpiry
 (
 PTR cb,               /* Pointer to timer control block */
 S16 tmrEvnt           /* Timer Event */
 )
 #else
-PUBLIC S16 rgLMMTmrExpiry(cb,tmrEvnt)
+S16 rgLMMTmrExpiry(cb,tmrEvnt)
 PTR cb;               /* Pointer to timer control block */
 S16 tmrEvnt;          /* Timer Event */
 #endif
@@ -1557,7 +1573,7 @@ S16 tmrEvnt;          /* Timer Event */
          ret = RFAILED;
          break;
    }
-   RETVALUE(ret);
+   return (ret);
 }
 
 
@@ -1581,7 +1597,7 @@ S16 tmrEvnt;          /* Timer Event */
  *      -# ROK
  **/
 #ifdef ANSI
-PUBLIC S16 rgLMMStaInd
+S16 rgLMMStaInd
 (
 Inst inst,
 U16 category,
@@ -1590,7 +1606,7 @@ U16 cause,
 RgUstaDgn *dgn
 )
 #else
-PUBLIC S16 rgLMMStaInd(inst,category, event, cause, dgn) 
+S16 rgLMMStaInd(inst,category, event, cause, dgn) 
 Inst inst;
 U16 category;
 U16 event;
@@ -1604,7 +1620,7 @@ RgUstaDgn *dgn;
 
    if(rgCb[inst].rgInit.usta == FALSE)
    {
-      RETVALUE(ROK);
+      return ROK;
    }
 
    cmMemset((U8 *)&usta, 0, sizeof(RgMngmt));
@@ -1625,7 +1641,7 @@ RgUstaDgn *dgn;
    rgCb[inst].rgInit.lmPst.pool = rgCb[inst].genCfg.ustaResp.response.mem.pool;
    usta.hdr.transId = rgCb[inst].genCfg.ustaResp.transId;
 
-   RETVALUE(RgMiLrgStaInd(&rgCb[inst].rgInit.lmPst, &usta));
+   return (RgMiLrgStaInd(&rgCb[inst].rgInit.lmPst, &usta));
 }
 
 \f
@@ -1645,14 +1661,14 @@ RgUstaDgn *dgn;
  *  @return Void 
  **/
 #ifdef ANSI
-PUBLIC Void rgLMMTrcInd
+Void rgLMMTrcInd
 (
 Inst   inst,
 Buffer *srcMbuf,    /* Message Buffer */
 U8 event            /* event */
 )
 #else
-PUBLIC Void rgLMMTrcInd(inst,srcMbuf,event)
+Void rgLMMTrcInd(inst,srcMbuf,event)
 Inst   inst;
 Buffer *srcMbuf;    /* Message Buffer */
 U8 event;           /* event */
@@ -1798,14 +1814,14 @@ U8 event;           /* event */
  *      -# ROK
  **/
 #ifdef ANSI
-PUBLIC S16 rgLMMBndCfm
+S16 rgLMMBndCfm
 (
 Pst *pst,               /* Post Structure */
 SuId suId,              /* Service user ID */
 U8 status               /* Status */
 )
 #else
-PUBLIC S16 rgLMMBndCfm(pst,suId,status)
+S16 rgLMMBndCfm(pst,suId,status)
 Pst *pst;               /* Post Structure */
 SuId suId;              /* Service user ID */
 U8 status;              /* Status */
@@ -1824,7 +1840,7 @@ U8 status;              /* Status */
    if(rgCb[inst].tfuSap.sapCfg.suId != suId)
    {
       RLOG0(L_ERROR, "Invalid SuId");
-      RETVALUE(RFAILED);
+      return RFAILED;
    }
 
    /* check the Sap State */
@@ -1834,9 +1850,9 @@ U8 status;              /* Status */
          break;
       case LRG_BND:
          /* SAP is already bound */
-         RETVALUE(ROK);
+         return ROK;
       default:
-         RETVALUE(RFAILED);
+         return RFAILED;
    }
 
    cfmPst = rgCb[inst].rgInit.lmPst;
@@ -1880,7 +1896,7 @@ U8 status;              /* Status */
 
    ret = RgMiLrgCntrlCfm(&cfmPst, &cntrlCfm);
 
-   RETVALUE(ret);
+   return (ret);
 }
 
 \f
@@ -1898,13 +1914,13 @@ U8 status;              /* Status */
  *      -# ROK
  **/
 #ifdef ANSI
-PUBLIC S16 rgActvTmr
+S16 rgActvTmr
 (
  Ent     ent,
  Inst    inst
 )
 #else
-PUBLIC S16 rgActvTmr(ent, inst)
+S16 rgActvTmr(ent, inst)
 Ent     ent;
 Inst    inst;
 #endif
@@ -1915,11 +1931,10 @@ Inst    inst;
    /* Check if any MAC timer has expired */ 
    cmPrcTmr(&rgCb[macInst].tmrTqCp, rgCb[macInst].tmrTq, (PFV) rgLMMTmrExpiry);
  
-   RETVALUE(ROK);
+   return ROK;
  
 } /* end of rgActvTmr */
 
-\f
 /**********************************************************************
  
          End of file