[Epic-ID: ODUHIGH-406][Task-ID: ODUHIGH-423]Fix for incorrect access of schCb instance
[o-du/l2.git] / src / 5gnrmac / rg_lmm.c
index db579fc..51742fb 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 */
@@ -189,19 +185,11 @@ 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;
 
@@ -239,8 +227,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 +249,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 +260,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 +330,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 +438,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);
@@ -499,7 +484,7 @@ RgMngmt  *sta     /* status structure  */
 
    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);
+      MAC_FREE(sta->t.ssta.s.sysId.ptNmb, LRG_MAX_PT_NUM_SIZE);
    }
    
    memset(&cfm, 0, sizeof(RgMngmt));
@@ -512,11 +497,10 @@ RgMngmt  *sta     /* status structure  */
    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)
+      MAC_ALLOC(cfm.t.ssta.s.sysId.ptNmb, LRG_MAX_PT_NUM_SIZE);
+          if(cfm.t.ssta.s.sysId.ptNmb == NULLP)
       {
-        RLOG0(L_ERROR, "Memory Unavailable for Confirmation");
+        DU_LOG("\nERROR  -->  MAC : Memory Unavailable for Confirmation");
         return ROK;
       } 
       memset((cfm.t.ssta.s.sysId.ptNmb), 0, LRG_MAX_PT_NUM_SIZE);
@@ -525,7 +509,7 @@ RgMngmt  *sta     /* status structure  */
       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");
+      DU_LOG("\nERROR  -->  MAC : Gen Cfg not done");
       return ROK;
    }
 
@@ -533,11 +517,10 @@ RgMngmt  *sta     /* status structure  */
    {
       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)
+         MAC_ALLOC(cfm.t.ssta.s.sysId.ptNmb, LRG_MAX_PT_NUM_SIZE);
+         if(cfm.t.ssta.s.sysId.ptNmb  == NULLP)
          {
-            RLOG0(L_ERROR, "Memory Unavailable for Confirmation");
+            DU_LOG("\nERROR  -->  MAC : Memory Unavailable for Confirmation");
             return ROK;
          } 
          memset((cfm.t.ssta.s.sysId.ptNmb), 0, LRG_MAX_PT_NUM_SIZE);
@@ -575,7 +558,7 @@ RgMngmt  *sta     /* status structure  */
         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);
+        DU_LOG("\nERROR  -->  MAC : Invalid elmnt=%d",sta->hdr.elmId.elmnt);
         break;     
    }
    return ROK;
@@ -634,7 +617,7 @@ RgMngmt  *cntrl   /* control structure  */
       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");
+      DU_LOG("\nERROR  -->  MAC : Gen Cfg not done");
       return ROK;
    }
 
@@ -653,7 +636,7 @@ RgMngmt  *cntrl   /* control structure  */
         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);
+        DU_LOG("\nERROR  -->  MAC : invalid elmnt=%d",cntrl->hdr.elmId.elmnt);
         break;
    }
    return (ret);
@@ -704,7 +687,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 +718,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 +748,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 +819,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 +835,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 +844,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 +864,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;
 
@@ -961,18 +940,15 @@ static Void rgLMMShutdown(Inst inst)
    }
 
    /* Deleting the RGU SAPs */
-   SPutSBuf(rgCb[inst].rgInit.region,
-        rgCb[inst].rgInit.pool,
-        (Data *)rgCb[inst].rguSap,
+    MAC_FREE(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); 
+        (S16)rgCb[inst].genCfg.tmrRes, macActvTmr); 
 
    /* call back the task initialization function to intialize
     * the global RgCb Struct */
@@ -1050,7 +1026,7 @@ Pst           *cfmPst
            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);
+              DU_LOG("\nERROR  -->  MAC : invalid subaction=%d",cntrl->t.cntrl.subAction);
               break;
         }
         break;
@@ -1081,7 +1057,7 @@ Pst           *cfmPst
            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);
+              DU_LOG("\nERROR  -->  MAC : invalid subaction=%d",cntrl->t.cntrl.subAction);
               break;
         }
         break;
@@ -1092,7 +1068,7 @@ Pst           *cfmPst
       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);
+        DU_LOG("\nERROR  -->  MAC : invalid action=%d",cntrl->t.cntrl.action);
         break;
    }
    RgMiLrgCntrlCfm(cfmPst, cfm);
@@ -1206,8 +1182,8 @@ Pst           *cfmPst
             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));
+               DU_LOG("\nERROR  -->  MAC : rgLMMSapCntrl(): invalid action=%d",
+               cntrl->t.cntrl.action);
                break;
          }
          break;
@@ -1223,8 +1199,8 @@ Pst           *cfmPst
             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));
+               DU_LOG("\nERROR  -->  MAC : rgLMMSapCntrl(): invalid action=%d",
+               cntrl->t.cntrl.action);
                break;
          }
          break;
@@ -1240,7 +1216,7 @@ Pst           *cfmPst
             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);
+               DU_LOG("\nERROR  -->  MAC : invalid action=%d",cntrl->t.cntrl.action);
                
                break;
          }
@@ -1458,7 +1434,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;
    }
@@ -1555,7 +1531,7 @@ uint8_t event            /* event */
 
    if ((rgCb[inst].trcLen == LRG_NO_TRACE) || (srcMbuf == NULLP))
    {
-      RLOG0(L_ERROR, "Trace Disabled.");
+      DU_LOG("\nERROR  -->  MAC : Trace Disabled.");
       return;
    }
    
@@ -1578,7 +1554,7 @@ uint8_t event            /* event */
       if (SCpyMsgMsg(srcMbuf, pst.region, pst.pool, &dstMbuf)
            != ROK)
       {
-        RLOG0(L_ERROR, "SCpyMsgMsg Failed.");
+        DU_LOG("\nERROR  -->  MAC : SCpyMsgMsg Failed.");
         return;
       }
       trc.cfm.status = LCM_PRIM_OK;
@@ -1594,7 +1570,7 @@ uint8_t event            /* event */
       /* Get the length of the recvd message buffer */
       if (SFndLenMsg(srcMbuf, &bufLen) != ROK)
       {
-        RLOG0(L_ERROR, "SFndLenMsg Failed.");
+        DU_LOG("\nERROR  -->  MAC : SFndLenMsg Failed.");
         return;
       }
       /* Check if the recvd buffer size is less than request trace len */
@@ -1605,7 +1581,7 @@ uint8_t event            /* event */
         if (SCpyMsgMsg(srcMbuf, pst.region, pst.pool, &dstMbuf)
               != ROK)
         {
-           RLOG0(L_ERROR, "SCpyMsgMsg Failed.");
+           DU_LOG("\nERROR  -->  MAC : SCpyMsgMsg Failed.");
            return;
         }
 
@@ -1622,26 +1598,26 @@ uint8_t event            /* event */
         /* Get a temporary buffer to store the msg */
         if (rgAllocSBuf(inst,&tempBuf, rgCb[inst].trcLen) != ROK)
         {
-           RLOG0(L_ERROR, "rgAllocSBuf Failed.");
+           DU_LOG("\nERROR  -->  MAC : 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.");
+           DU_LOG("\nERROR  -->  MAC : SCpyMsgFix Failed.");
            return;
         }
 
-        if (SGetMsg(pst.region, pst.pool, &dstMbuf) != ROK)
+        if (ODU_GET_MSG_BUF(pst.region, pst.pool, &dstMbuf) != ROK)
         {
-           RLOG0(L_ERROR, "dstMbuf Allocation Failed");
+           DU_LOG("\nERROR  -->  MAC : 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.");
+           DU_LOG("\nERROR  -->  MAC : SCpyFixMsg Failed.");
            return;
         }
 
@@ -1700,7 +1676,7 @@ uint8_t status               /* Status */
    /* Check if the suId is valid */
    if(rgCb[inst].tfuSap.sapCfg.suId != suId)
    {
-      RLOG0(L_ERROR, "Invalid SuId");
+      DU_LOG("\nERROR  -->  MAC : Invalid SuId");
       return RFAILED;
    }
 
@@ -1760,31 +1736,6 @@ uint8_t status               /* Status */
    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