Merge "DL throughput calculation for UM [Issue-ID: ODUHIGH-319]"
[o-du/l2.git] / src / 5gnrrlc / kw_dl_ex_ms.c
index ea12185..16492a2 100755 (executable)
 
 /********************************************************************20**
   
-        Name:    LTE-RLC Layer - System Services Interface Functions
+        Name:    NR RLC Layer - System Services Interface Functions
     
         Type:    C file
   
         Desc:    C source code for the interface to System Services
-                  of LTE-RLC
+                  of NR RLC
  
         File:    kw_dl_ex_ms.c
   
 *********************************************************************21*/
-static const char* RLOG_MODULE_NAME="RLC_DL";
-static int RLOG_MODULE_ID=2048;
-static int RLOG_FILE_ID=195;
 
 /** @filekw_dl_ex_ms.c 
 @brief RLC System Services Interface
@@ -58,24 +55,26 @@ static int RLOG_FILE_ID=195;
 #include "kw.x"
 #include "kw_udx.x"
 #include "kw_dl.x"
+#include "du_app_rlc_inf.h"
+#include "rlc_mac_inf.h"
 
 #include "ctf.h"
-PUBLIC S16 kwUtlDlBatchProcPkts(Void);
-PUBLIC S16 rlcDlBatchProc(Void);
+S16 rlcUtlDlBatchProcPkts(Void);
+S16 rlcDlBatchProc(Void);
 #if (defined(MAC_RLC_HARQ_STA_RBUF) && defined(LTE_L2_MEAS))
-U32 isDatReqProcessed;
-PUBLIC void kwUtlDlBatchProcHqStaInd ARGS ((Void));
+uint32_t isDatReqProcessed;
+void rlcUtlDlBatchProcHqStaInd ARGS ((Void));
 #endif
 
 #if (defined(L2_L3_SPLIT) && defined(ICC_RECV_TSK_RBUF))
-EXTERN S16 rlcDlBatchProcSplit  ARGS((Void));
+S16 rlcDlBatchProcSplit  ARGS((Void));
 #endif
 //UDAY
 #ifdef L2_OPTMZ
-U32 kwAmmStaPduList[512] = {0};
-EXTERN S16 ssGetDBufOfSize ARGS((Region region, Size size, Buffer **dBuf));
+uint32_t rlcAmmStaPduList[512] = {0};
+S16 ssGetDBufOfSize ARGS((Region region, Size size, Buffer **dBuf));
 #endif
-PUBLIC S16 rlcDlInitExt ARGS (( Void ));
+S16 rlcDlInitExt ARGS (( Void ));
 \f
 /**
  *
@@ -91,16 +90,8 @@ PUBLIC S16 rlcDlInitExt ARGS (( Void ));
  *
 */
   
-#ifdef ANSI
-PUBLIC S16 rlcDlInitExt 
-(
-)
-#else
-PUBLIC S16 rlcDlInitExt()
-#endif
+S16 rlcDlInitExt()
 {
-   TRC2(rlcDlInitExt);
-
    return ROK;
 } /* kwInitExt */
 
@@ -116,16 +107,16 @@ PUBLIC S16 rlcDlInitExt()
  *    <b> Activates Initialization </b>
  *
  *    @b Description:
- *    This function is invoked by system services to initialize the LTE-RLC
+ *    This function is invoked by system services to initialize the NR RLC
  *    layer. This is an entry point used by LTE_RLC layer to initialize its
  *    global variables, before becoming operational.
  *
  *    Allowable values for parameters are specified in ssi.h.
  *
- *    @param[in] ent    - Specify the entity id of the LTE-RLC task.
- *    @param[in] inst   - Specify the entity id of the LTE-RLC task.
+ *    @param[in] ent    - Specify the entity id of the NR RLC task.
+ *    @param[in] inst   - Specify the entity id of the NR RLC task.
  *    @param[in] region - Specifies the memory region from which
- *                         LTE-RLC should allocate structures and buffers.
+ *                         NR RLC should allocate structures and buffers.
  *    @param[in] reason - Specifies the reason for calling this
  *                         initialization function.
  *
@@ -133,24 +124,15 @@ PUBLIC S16 rlcDlInitExt()
  *      -# ROK 
  *
  */
-#ifdef ANSI
-PUBLIC S16 rlcDlActvInit
+S16 rlcDlActvInit
 (
 Ent    ent,                 /* entity */
 Inst   inst,                /* instance */
 Region region,              /* region */
 Reason reason               /* reason */
 )
-#else
-PUBLIC S16 rlcDlActvInit(ent, inst, region, reason)
-Ent    ent;                 /* entity */
-Inst   inst;                /* instance */
-Region region;              /* region */
-Reason reason;              /* reason */
-#endif
 {
    RlcCb    *tRlcCb;
-   TRC3(rlcDlActvInit)
 
    if (inst >= MAX_RLC_INSTANCES)
    {
@@ -181,7 +163,7 @@ Reason reason;              /* reason */
    tRlcCb->init.acnt    = TRUE;          /* enable accounting */
    tRlcCb->init.usta    = TRUE;          /* enable unsolicited status */
    tRlcCb->init.trc     = FALSE;         /* enable trace */
-   tRlcCb->init.procId  = SFndProcId();
+   tRlcCb->init.procId  = ODU_GET_PROCID();
 
    rlcCb[inst] = tRlcCb;
 
@@ -194,7 +176,7 @@ Reason reason;              /* reason */
       SGetMsg(1, 0 , &mBuf);
       ssGetDBufOfSize(1 , 1800, &bufPtr);
       SUpdMsg(mBuf, bufPtr, 0);
-      kwAmmStaPduList[i] = (U32)mBuf; 
+      rlcAmmStaPduList[i] = (uint32_t)mBuf; 
    }
 #endif
    /* call external function for intialization */
@@ -215,7 +197,7 @@ Reason reason;              /* reason */
  *  <b> Activation Task </b>
  *
  *  @b Description:
- *  Processes events received for MLTE-RLC layer via System Services from
+ *  Processes events received for NR RLC layer via System Services from
  *  other layers.
  *
  *  @param[in] pst   - Pst Structure
@@ -228,21 +210,14 @@ Reason reason;              /* reason */
 #if (defined (MAC_FREE_RING_BUF) || defined (RLC_FREE_RING_BUF))
 pthread_t gRlcTId = 0;
 #endif
-#ifdef ANSI
-PUBLIC S16 rlcDlActvTsk
+S16 rlcDlActvTsk
 (
 Pst *pst,              /* pst structure */
 Buffer *mBuf            /* message buffer */
 )
-#else
-PUBLIC S16 rlcDlActvTsk(pst, mBuf)
-Pst *pst;              /* pst structure */
-Buffer *mBuf;           /* message buffer */
-#endif
 {
    S16 ret = ROK;
 
-   TRC3(rlcDlActvTsk);
 #ifdef RLC_FREE_RING_BUF
    gRlcTId = pthread_self();
 #endif
@@ -256,25 +231,25 @@ Buffer *mBuf;           /* message buffer */
 #ifdef LCLKW
                case LKW_EVT_CFG_REQ:
                   {
-                     ret = unpackRlcConfigReq(KwMiRlcConfigReq, pst, mBuf);
+                     ret = unpackRlcConfigReq(RlcMiRlcConfigReq, pst, mBuf);
                      break;
                   }
 
                case LKW_EVT_CNTRL_REQ:
                   {
-                     ret = cmUnpkLkwCntrlReq(KwMiLkwCntrlReq, pst, mBuf);
+                     ret = cmUnpkLkwCntrlReq(RlcMiLkwCntrlReq, pst, mBuf);
                      break;
                   }
 
                case LKW_EVT_STS_REQ:
                   {
-                     ret = cmUnpkLkwStsReq(KwMiLkwStsReq, pst, mBuf);
+                     ret = cmUnpkLkwStsReq(RlcMiLkwStsReq, pst, mBuf);
                      break;
                   }
 
                case LKW_EVT_STA_REQ:
                   {
-                     ret = cmUnpkLkwStaReq(KwMiLkwStaReq, pst, mBuf);
+                     ret = cmUnpkLkwStaReq(RlcMiLkwStaReq, pst, mBuf);
                      break;
                   }
                   /* kw005.201 added support for L2 Measurement */
@@ -283,15 +258,26 @@ Buffer *mBuf;           /* message buffer */
 #ifdef LCKWU
                case KWU_EVT_DAT_REQ:              /* Data request */
                   {
-                     ret = cmUnpkKwuDatReq(KwUiKwuDatReq, pst, mBuf);
+                     //ret = cmUnpkKwuDatReq(rlcProcDlData, pst, mBuf);
                      break;
                   }
 #endif /* LCKWU */
+               
+               case EVENT_DL_RRC_MSG_TRANS_TO_RLC:
+                 {
+                    ret = unpackDlRrcMsgToRlc(RlcProcDlRrcMsgTransfer, pst, mBuf);
+                    break;
+                 }
+               case EVENT_DL_USER_DATA_TRANS_TO_RLC:
+                 {
+                    ret = unpackRlcDlUserDataToRlc(RlcProcDlUserDataTransfer, pst, mBuf);
+                    break;
+                 }
                default:
-                  ODU_PUT_MSG(mBuf);
+                  ODU_PUT_MSG_BUF(mBuf);
                   if (pst->dstInst < MAX_RLC_INSTANCES)
                   {
-                      RLOG1(L_ERROR,"Received Invalid Event[%d] from SM",
+                      DU_LOG("\nERROR  --> RLC_DL : Received Invalid Event[%d] from SM",
                             pst->event);
                   }
                   ret = RFAILED;
@@ -301,7 +287,7 @@ Buffer *mBuf;           /* message buffer */
             break;
          }
 
-      case ENTKW:
+      case ENTRLC:
          {
 
             switch(pst->event)
@@ -365,15 +351,15 @@ Buffer *mBuf;           /* message buffer */
 #endif  /* LCCKW */
                case UDX_EVT_DL_CLEANUP_MEM:
                   {
-                     kwUtlFreeDlMemory(RLC_GET_RLCCB(pst->dstInst));
+                     rlcUtlFreeDlMemory(RLC_GET_RLCCB(pst->dstInst));
                      break;
                   }
                
                default:
-                  ODU_PUT_MSG(mBuf);
+                  ODU_PUT_MSG_BUF(mBuf);
                   if (pst->dstInst < MAX_RLC_INSTANCES)
                   {
-                      RLOG1(L_ERROR,"Received Invalid Event[%d] from RLC UL",
+                      DU_LOG("\nERROR  --> RLC_DL : Received Invalid Event[%d] from RLC UL",
                             pst->event);
                   }
                   ret = RFAILED;
@@ -390,40 +376,40 @@ Buffer *mBuf;           /* message buffer */
 #ifdef LCKWU
                case KWU_EVT_BND_REQ:              /* Bind request */
                   {
-                     ret = cmUnpkKwuBndReq(KwUiKwuBndReq, pst, mBuf );
+                     ret = cmUnpkKwuBndReq(RlcUiKwuBndReq, pst, mBuf );
                      break;
                   }
 
                case KWU_EVT_UBND_REQ:             /* Unbind request */
                   {
-                     ret = cmUnpkKwuUbndReq(KwUiKwuUbndReq, pst, mBuf );
+                     ret = cmUnpkKwuUbndReq(RlcUiKwuUbndReq, pst, mBuf );
                      break;
                   }
 #ifdef L2_L3_SPLIT
                case KWU_EVT_CPLANE_DAT_REQ:       /* C-Plane Data request */
                   {
-                     ret = cmUnpkKwuDatReq(KwUiKwuDatReq, pst, mBuf);
+                     ret = cmUnpkKwuDatReq(rlcProcDlData, pst, mBuf);
                      break;
                   }
 #else
                case KWU_EVT_DAT_REQ:              /* Data request */
                   {
-                     ret = cmUnpkKwuDatReq(KwUiKwuDatReq, pst, mBuf);
+                     //ret = cmUnpkKwuDatReq(rlcProcDlData, pst, mBuf);
                      break;
                   }
 #endif
                case KWU_EVT_DISC_SDU_REQ:         /* Discard SDU request */
                   {
-                     ret = cmUnpkKwuDiscSduReq(KwUiKwuDiscSduReq, pst, mBuf);
+                     ret = cmUnpkKwuDiscSduReq(RlcUiKwuDiscSduReq, pst, mBuf);
                      break;
                   }
 
 #endif  /* LCKWU */
                default:
-                  ODU_PUT_MSG(mBuf);
+                  ODU_PUT_MSG_BUF(mBuf);
                   if (pst->dstInst < MAX_RLC_INSTANCES)
                   {
-                      RLOG1(L_ERROR,"Received Invalid Event[%d] from RRC",
+                     DU_LOG("\nERROR  --> RLC_DL : Received Invalid Event[%d] from RRC",
                             pst->event);
                   }
                   ret = RFAILED;
@@ -440,40 +426,40 @@ Buffer *mBuf;           /* message buffer */
 #ifdef LCKWU
                case KWU_EVT_BND_REQ:              /* Bind request */
                   {
-                     ret = cmUnpkKwuBndReq(KwUiKwuBndReq, pst, mBuf );
+                     ret = cmUnpkKwuBndReq(RlcUiKwuBndReq, pst, mBuf );
                      break;
                   }
 
                case KWU_EVT_UBND_REQ:             /* Unbind request */
                   {
-                     ret = cmUnpkKwuUbndReq(KwUiKwuUbndReq, pst, mBuf );
+                     ret = cmUnpkKwuUbndReq(RlcUiKwuUbndReq, pst, mBuf );
                      break;
                   }
 #ifdef L2_L3_SPLIT
                case KWU_EVT_CPLANE_DAT_REQ:       /* C-Plane Data request */
                case KWU_EVT_UPLANE_DAT_REQ:       /* U-Plane Data request */
                   {
-                     ret = cmUnpkKwuDatReq(KwUiKwuDatReq, pst, mBuf);
+                     ret = cmUnpkKwuDatReq(rlcProcDlData, pst, mBuf);
                      break;
                   }
 #else
                case KWU_EVT_DAT_REQ:              /* Data request */
                   {
-                     ret = cmUnpkKwuDatReq(KwUiKwuDatReq, pst, mBuf);
+                     //ret = cmUnpkKwuDatReq(rlcProcDlData, pst, mBuf);
                      break;
                   }
 #endif
                case KWU_EVT_DISC_SDU_REQ:         /* Discard SDU request */
                   {
-                     ret = cmUnpkKwuDiscSduReq(KwUiKwuDiscSduReq, pst, mBuf);
+                     ret = cmUnpkKwuDiscSduReq(RlcUiKwuDiscSduReq, pst, mBuf);
                      break;
                   }
 
                default:
-                  ODU_PUT_MSG(mBuf);
+                  ODU_PUT_MSG_BUF(mBuf);
                   if (pst->dstInst < MAX_RLC_INSTANCES)
                   {
-                      RLOG1(L_ERROR,"Received Invalid Event[%d] from PDCP",
+                     DU_LOG("\nERROR  --> RLC_DL : Received Invalid Event[%d] from PDCP",
                             pst->event);
                   }
                   ret = RFAILED;
@@ -483,32 +469,32 @@ Buffer *mBuf;           /* message buffer */
             break;
          }
 
-      case ENTRG:
+      case ENTMAC:
          {
             switch(pst->event)
             {
 #ifdef LCRGU
                case EVTRGUBNDCFM:     /* Bind request */
                   {
-                     ret = cmUnpkRguBndCfm(KwLiRguBndCfm, pst, mBuf );
+                     ret = cmUnpkRguBndCfm(RlcLiRguBndCfm, pst, mBuf );
                      break;
                   }
-               case EVTSCHREP:    /* Dedicated Channel Status Response */
+               case EVENT_SCHED_RESULT_TO_RLC: 
                   {
-                     ret = unpackSchedRep(RlcMacProcSchedRep, pst, mBuf);
+                     ret = unpackSchedResultRpt(RlcProcSchedResultRpt, pst, mBuf);
                      break;
                   }
                   /* kw005.201 added support for L2 Measurement */
 #ifdef LTE_L2_MEAS
                case EVTRGUHQSTAIND:    /* Harq status indication */
                   {
-                     ret = cmUnpkRguHqStaInd(KwLiRguHqStaInd, pst, mBuf);
+                     ret = cmUnpkRguHqStaInd(RlcLiRguHqStaInd, pst, mBuf);
                      break;
                   }
 #endif
                case EVTRGUFLOWCNTRLIND:
                   {
-                     ret = cmUnpkRguFlowCntrlInd(KwLiRguFlowCntrlInd,pst,mBuf);
+                     ret = cmUnpkRguFlowCntrlInd(RlcLiRguFlowCntrlInd,pst,mBuf);
                      break;
                   }   
 #endif  /* LCRGU */
@@ -521,10 +507,10 @@ Buffer *mBuf;           /* message buffer */
 #endif
 
                default:
-                  ODU_PUT_MSG(mBuf);
+                  ODU_PUT_MSG_BUF(mBuf);
                   if (pst->dstInst < MAX_RLC_INSTANCES)
                   {
-                      RLOG1(L_ERROR,"Received Invalid Event[%d] from MAC",
+                      DU_LOG("\nERROR  --> RLC_DL : Received Invalid Event[%d] from MAC",
                             pst->event);
                   }
                   ret = RFAILED;
@@ -533,17 +519,17 @@ Buffer *mBuf;           /* message buffer */
             break;
          }
 #ifdef SS_RBUF 
-      case ENTTF:
+      case ENTLWRMAC:
       {
             switch(pst->event)
             {
                case EVTCTFBTCHPROCTICK:
                {
-                  kwUtlDlBatchProcPkts();
+                  rlcUtlDlBatchProcPkts();
                   break;
                }
              }
-         ODU_PUT_MSG(mBuf);
+         ODU_PUT_MSG_BUF(mBuf);
          break;
       }
 #endif
@@ -563,15 +549,15 @@ Buffer *mBuf;           /* message buffer */
 
 #if (defined(SPLIT_RLC_DL_TASK) && defined(MAC_RLC_HARQ_STA_RBUF) && defined(LTE_L2_MEAS))
                      //RlcDlHarqStaBatchProc();
-                     kwUtlDlBatchProcHqStaInd();
+                     rlcUtlDlBatchProcHqStaInd();
 #endif 
 #ifndef KWSELFPSTDLCLEAN
                      /* Revanth_chg */
                      /* Moving Cleanup from self post event to TTI event */
-                     kwUtlFreeDlMem();
+                     rlcUtlFreeDlMem();
 #endif 
 
-                     ODU_PUT_MSG(mBuf);
+                     ODU_PUT_MSG_BUF(mBuf);
                      break;
                   }
             }
@@ -584,10 +570,10 @@ Buffer *mBuf;           /* message buffer */
             if (pst->dstInst < MAX_RLC_INSTANCES)
             {
                /*RlcCb *tRlcCb = RLC_GET_RLCCB(pst->dstInst);*/
-               RLOG1(L_ERROR, "Received Invalid Source Entity[%d]",
+               DU_LOG("\nERROR  --> RLC_DL : Received Invalid Source Entity[%d]",
                      pst->event);
             }
-            ODU_PUT_MSG(mBuf);
+            ODU_PUT_MSG_BUF(mBuf);
             ret = RFAILED;
             break;
          }