RLC UeCb Changes
[o-du/l2.git] / src / 5gnrrlc / kw_tmm_dl.c
index 730f365..5b593c9 100755 (executable)
@@ -42,18 +42,7 @@ static int RLOG_FILE_ID=200;
 */
 \f
 /* header (.h) include files */
 */
 \f
 /* header (.h) include files */
-#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 "cm5.h"           /* common timer defines */
-#include "cm_tkns.h"       /* common tokens defines */
-#include "cm_mblk.h"       /* common memory allocation library defines */
-#include "cm_llist.h"      /* common link list  defines  */
-#include "cm_hash.h"       /* common hash list  defines */
-#include "cm_lte.h"        /* common LTE defines */
+#include "common_def.h"
 #include "lkw.h"           /* LKW defines */
 #include "ckw.h"           /* CKW defines */
 #include "kwu.h"           /* KWU defines */
 #include "lkw.h"           /* LKW defines */
 #include "ckw.h"           /* CKW defines */
 #include "kwu.h"           /* KWU defines */
@@ -66,16 +55,6 @@ static int RLOG_FILE_ID=200;
 #include "kw_dl.h"
 
 /* extern (.x) include files */
 #include "kw_dl.h"
 
 /* extern (.x) include files */
-#include "gen.x"           /* general */
-#include "ssi.x"           /* system services */
-
-#include "cm5.x"           /* common timer library */
-#include "cm_tkns.x"       /* common tokens */
-#include "cm_mblk.x"       /* common memory allocation */
-#include "cm_llist.x"      /* common link list */
-#include "cm_hash.x"       /* common hash list */
-#include "cm_lte.x"        /* common LTE includes */
-#include "cm_lib.x"        /* common memory allocation library */
 #include "lkw.x"           /* LKW */
 #include "ckw.x"           /* CKW */
 #include "kwu.x"           /* KWU */
 #include "lkw.x"           /* LKW */
 #include "ckw.x"           /* CKW */
 #include "kwu.x"           /* KWU */
@@ -87,7 +66,7 @@ static int RLOG_FILE_ID=200;
 
 #define KW_MODULE (KW_DBGMASK_TM | KW_DBGMASK_DL)
 
 
 #define KW_MODULE (KW_DBGMASK_TM | KW_DBGMASK_DL)
 
-PRIVATE Void kwTmmSndStaRsp ARGS((KwCb *gCb, KwDlRbCb *rbCb, 
+PRIVATE Void kwTmmSndStaRsp ARGS((RlcCb *gCb, RlcDlRbCb *rbCb, 
                                  MsgLen bo, KwuDatReqInfo *datReqInfo));
 extern U32 rgMacGT ;  
 /** @addtogroup tmmode */
                                  MsgLen bo, KwuDatReqInfo *datReqInfo));
 extern U32 rgMacGT ;  
 /** @addtogroup tmmode */
@@ -114,15 +93,15 @@ extern U32 rgMacGT ;
 #ifdef ANSI
 PUBLIC Void kwTmmQSdu
 (
 #ifdef ANSI
 PUBLIC Void kwTmmQSdu
 (
-KwCb            *gCb,
-KwDlRbCb        *rbCb,      
+RlcCb            *gCb,
+RlcDlRbCb        *rbCb,      
 KwuDatReqInfo   *datReqInfo, 
 Buffer          *mBuf       
 )
 #else
 PUBLIC Void kwTmmQSdu(gCb,rbCb,datReqInfo,mBuf)
 KwuDatReqInfo   *datReqInfo, 
 Buffer          *mBuf       
 )
 #else
 PUBLIC Void kwTmmQSdu(gCb,rbCb,datReqInfo,mBuf)
-KwCb            *gCb;
-KwDlRbCb        *rbCb;       
+RlcCb            *gCb;
+RlcDlRbCb        *rbCb;       
 KwuDatReqInfo   *datReqInfo;  
 Buffer          *mBuf;         
 #endif
 KwuDatReqInfo   *datReqInfo;  
 Buffer          *mBuf;         
 #endif
@@ -132,7 +111,7 @@ Buffer          *mBuf;
    TRC2(kwTmmQSdu) 
 
 
    TRC2(kwTmmQSdu) 
 
 
-   KW_ALLOC(gCb,sdu,sizeof(KwSdu));
+   RLC_ALLOC(gCb,sdu,sizeof(KwSdu));
 #if (ERRCLASS & ERRCLS_ADD_RES)
    if ( sdu == NULLP )
    {
 #if (ERRCLASS & ERRCLS_ADD_RES)
    if ( sdu == NULLP )
    {
@@ -148,7 +127,7 @@ Buffer          *mBuf;
         rbCb->lch.lChType == CM_LTE_LCH_PCCH )
    {
       sdu->mode.tm.sfn = datReqInfo->tm.tmg.sfn;
         rbCb->lch.lChType == CM_LTE_LCH_PCCH )
    {
       sdu->mode.tm.sfn = datReqInfo->tm.tmg.sfn;
-      sdu->mode.tm.subframe = datReqInfo->tm.tmg.subframe;
+      sdu->mode.tm.slot = datReqInfo->tm.tmg.slot;
 #ifdef EMTC_ENABLE
      if(rbCb->lch.lChType == CM_LTE_LCH_PCCH)
      {
 #ifdef EMTC_ENABLE
      if(rbCb->lch.lChType == CM_LTE_LCH_PCCH)
      {
@@ -191,22 +170,22 @@ Buffer          *mBuf;
 #ifdef ANSI
 PUBLIC Void kwTmmSndToLi
 (
 #ifdef ANSI
 PUBLIC Void kwTmmSndToLi
 (
-KwCb             *gCb,
+RlcCb             *gCb,
 SuId             suId,
 SuId             suId,
-KwDlRbCb         *rbCb,              
+RlcDlRbCb         *rbCb,              
 RguCStaIndInfo   *staInd
 )
 #else
 PUBLIC Void kwTmmSndToLi(gCb, suId, rbCb, staInd)
 RguCStaIndInfo   *staInd
 )
 #else
 PUBLIC Void kwTmmSndToLi(gCb, suId, rbCb, staInd)
-KwCb             *gCb;
+RlcCb             *gCb;
 SuId             suId;
 SuId             suId;
-KwDlRbCb         *rbCb;             
+RlcDlRbCb         *rbCb;             
 RguCStaIndInfo   *staInd;
 #endif
 {
    CmLList          *node;          /* Current Link List Node */
    KwSdu            *sdu;           /* SDU */
 RguCStaIndInfo   *staInd;
 #endif
 {
    CmLList          *node;          /* Current Link List Node */
    KwSdu            *sdu;           /* SDU */
-   RguCDatReqInfo   *cDatReqInfo;   /* Data Request Information */
+   RlcMacData       *dlData;
    S16   timeDiff = 0;
    Ticks curTime  = 0;
 
    S16   timeDiff = 0;
    Ticks curTime  = 0;
 
@@ -216,35 +195,35 @@ RguCStaIndInfo   *staInd;
    CM_LLIST_FIRST_NODE(&(rbCb->m.tm.sduQ), 
                        node);
 
    CM_LLIST_FIRST_NODE(&(rbCb->m.tm.sduQ), 
                        node);
 
-   /* (Sfn,subframe) at which the message should be transmitted is 
-    * validated with alloted (sfn,subframe)in the MAC layer */
+   /* (Sfn,slot) at which the message should be transmitted is 
+    * validated with alloted (sfn,slot)in the MAC layer */
    while (node != NULLP)
    {
       sdu = (KwSdu *)(node->node);
       if ( rbCb->lch.lChType == CM_LTE_LCH_BCCH ||
             rbCb->lch.lChType == CM_LTE_LCH_PCCH )
       {
    while (node != NULLP)
    {
       sdu = (KwSdu *)(node->node);
       if ( rbCb->lch.lChType == CM_LTE_LCH_BCCH ||
             rbCb->lch.lChType == CM_LTE_LCH_PCCH )
       {
-         U16 sfn, subframe;
+         U16 sfn, slot;
          /* MS_FIX: syed sfn is of 10 bytes rather than 8 */
 #ifdef EMTC_ENABLE
          /* MS_FIX: syed sfn is of 10 bytes rather than 8 */
 #ifdef EMTC_ENABLE
-         /* As part of CATM feature cross subframe scheduling is implemented , so there is some delta(currently 2)
+         /* As part of CATM feature cross slot scheduling is implemented , so there is some delta(currently 2)
             between MPDCCH and PDSCH,RLC expects cell crntTime of transmission of control dlsf, so one extra 
             between MPDCCH and PDSCH,RLC expects cell crntTime of transmission of control dlsf, so one extra 
-            information is provided in staInd, so that sfn,subframe should calculate from paging Timing information 
+            information is provided in staInd, so that sfn,slot should calculate from paging Timing information 
             in case of EMTC paging, instead of transId */
          if(staInd->isEmtcPaging)
          {
             sfn      = staInd->pagingTimingInfo.sfn;
             in case of EMTC paging, instead of transId */
          if(staInd->isEmtcPaging)
          {
             sfn      = staInd->pagingTimingInfo.sfn;
-            subframe = staInd->pagingTimingInfo.subframe;
+            slot = staInd->pagingTimingInfo.slot;
          }
          else
 #endif
          {
             sfn = (staInd->transId >> 8) & 0x3FF;
          }
          else
 #endif
          {
             sfn = (staInd->transId >> 8) & 0x3FF;
-            subframe = staInd->transId & 0xFF;
+            slot = staInd->transId & 0xFF;
          }
 
          /* Table
          }
 
          /* Table
-          * tm.subframe - current subframe 
+          * tm.slot - current slot 
           * 0,sfn        7,sfn-1
           * 4,sfn        1,sfn
           * 5,sfn        2,sfn
           * 0,sfn        7,sfn-1
           * 4,sfn        1,sfn
           * 5,sfn        2,sfn
@@ -254,13 +233,13 @@ RguCStaIndInfo   *staInd;
           * Take care of SFN wraparound. TODO: It is better for RLC
           * not to be aware of SCH DELTAs. So we should look for 
           * sending actual transmission time to RLC. */
           * Take care of SFN wraparound. TODO: It is better for RLC
           * not to be aware of SCH DELTAs. So we should look for 
           * sending actual transmission time to RLC. */
-         if ((subframe + TFU_DELTA) >= 10)
+         if ((slot + TFU_DELTA) >= 10)
          {
             sfn = (sfn + 1)%1024;
          }
 
          if ((sdu->mode.tm.sfn != sfn) ||
          {
             sfn = (sfn + 1)%1024;
          }
 
          if ((sdu->mode.tm.sfn != sfn) ||
-               (sdu->mode.tm.subframe != ((subframe+TFU_DELTA)%10)))
+               (sdu->mode.tm.slot != ((slot+TFU_DELTA)%10)))
          {
             node = node->next;
             RLOG_ARG4(L_DEBUG,DBG_RBID,rbCb->rlcId.rbId,
          {
             node = node->next;
             RLOG_ARG4(L_DEBUG,DBG_RBID,rbCb->rlcId.rbId,
@@ -270,14 +249,14 @@ RguCStaIndInfo   *staInd;
                   rbCb->rlcId.ueId,
                   rbCb->rlcId.cellId);   
             RLOG_ARG4(L_DEBUG,DBG_RBID,rbCb->rlcId.rbId,
                   rbCb->rlcId.ueId,
                   rbCb->rlcId.cellId);   
             RLOG_ARG4(L_DEBUG,DBG_RBID,rbCb->rlcId.rbId,
-                  "sfn %d subframe %d  UEID:%d CELLID:%d",
+                  "sfn %d slot %d  UEID:%d CELLID:%d",
                   sfn, 
                   sfn, 
-                  subframe,
+                  slot,
                   rbCb->rlcId.ueId,
                   rbCb->rlcId.cellId);   
             cmLListDelFrm(&(rbCb->m.tm.sduQ), &sdu->lstEnt);
                   rbCb->rlcId.ueId,
                   rbCb->rlcId.cellId);   
             cmLListDelFrm(&(rbCb->m.tm.sduQ), &sdu->lstEnt);
-            KW_FREE_BUF(sdu->mBuf);
-            KW_FREE(gCb, sdu, sizeof(KwSdu));
+            RLC_FREE_BUF(sdu->mBuf);
+            RLC_FREE(gCb, sdu, sizeof(KwSdu));
          }
          else
          {
          }
          else
          {
@@ -320,8 +299,8 @@ RguCStaIndInfo   *staInd;
                   rbCb->rlcId.ueId,
                   rbCb->rlcId.cellId);   
             cmLListDelFrm(&(rbCb->m.tm.sduQ), &sdu->lstEnt);
                   rbCb->rlcId.ueId,
                   rbCb->rlcId.cellId);   
             cmLListDelFrm(&(rbCb->m.tm.sduQ), &sdu->lstEnt);
-            KW_FREE_BUF(sdu->mBuf);
-            KW_FREE(gCb, sdu, sizeof(KwSdu));
+            RLC_FREE_BUF(sdu->mBuf);
+            RLC_FREE(gCb, sdu, sizeof(KwSdu));
             continue;
          }
 
             continue;
          }
 
@@ -374,11 +353,11 @@ RguCStaIndInfo   *staInd;
    }
    sdu = (KwSdu *)node->node;
 
    }
    sdu = (KwSdu *)node->node;
 
-    KW_ALLOC_SHRABL_BUF(gCb->u.dlCb->rguDlSap[suId].pst.region,
+    RLC_ALLOC_SHRABL_BUF(gCb->u.dlCb->rguDlSap[suId].pst.region,
                         gCb->u.dlCb->rguDlSap[suId].pst.pool,
                         gCb->u.dlCb->rguDlSap[suId].pst.pool,
-                        cDatReqInfo,(Size)sizeof(RguCDatReqInfo));
+                        dlData,(Size)sizeof(RlcMacData));
 #if (ERRCLASS & ERRCLS_ADD_RES)
 #if (ERRCLASS & ERRCLS_ADD_RES)
-   if ( cDatReqInfo == NULLP )
+   if ( dlData == NULLP )
    {
       RLOG_ARG2(L_FATAL,DBG_RBID,rbCb->rlcId.rbId,
             "Memory Allocation failed UEID:%d CELLID:%d",   
    {
       RLOG_ARG2(L_FATAL,DBG_RBID,rbCb->rlcId.rbId,
             "Memory Allocation failed UEID:%d CELLID:%d",   
@@ -387,29 +366,15 @@ RguCStaIndInfo   *staInd;
       RETVOID; 
    }
 #endif /* ERRCLASS & ERRCLS_ADD_RES */
       RETVOID; 
    }
 #endif /* ERRCLASS & ERRCLS_ADD_RES */
-#ifdef CCPU_OPT
-   if ( rbCb->lch.lChType == CM_LTE_LCH_BCCH ||  
-        rbCb->lch.lChType == CM_LTE_LCH_PCCH )
-   {
-      cDatReqInfo->u.timeToTx.sfn = sdu->mode.tm.sfn;
-      cDatReqInfo->u.timeToTx.subframe = sdu->mode.tm.subframe;
-#ifdef EMTC_ENABLE
-       if(rbCb->lch.lChType == CM_LTE_LCH_PCCH)
-       {
-         cDatReqInfo->pnb = sdu->mode.tm.pnb; 
-       }
-#endif
-   }
-   else
-   {
-      cDatReqInfo->u.rnti = sdu->mode.tm.rnti;
-   }
-#endif 
-   cDatReqInfo->pdu = sdu->mBuf; 
-   cDatReqInfo->transId = rbCb->transId;
-   cDatReqInfo->cellId  = rbCb->rlcId.cellId;
-   cDatReqInfo->lcId   = rbCb->lch.lChId; 
-   cDatReqInfo->lcType = rbCb->lch.lChType; 
+
+   dlData->timeToTx.sfn = sdu->mode.tm.sfn;
+   dlData->timeToTx.slot = sdu->mode.tm.slot;
+   dlData->cellId = rbCb->rlcId.cellId;
+   dlData->rnti = sdu->mode.tm.rnti;
+   dlData->nmbPdu = 1;
+   dlData->pduInfo[0].commCh = TRUE;
+   dlData->pduInfo[0].lcId = rbCb->lch.lChId;
+   dlData->pduInfo[0].pduBuf =  sdu->mBuf;
 
    /* kw005.201 ccpu00117318, updating the statistics */
    gCb->genSts.bytesSent += sdu->sduSz;
 
    /* kw005.201 ccpu00117318, updating the statistics */
    gCb->genSts.bytesSent += sdu->sduSz;
@@ -421,18 +386,18 @@ RguCStaIndInfo   *staInd;
    sdu->mBuf = NULLP;
    cmLListDelFrm(&(rbCb->m.tm.sduQ),
                  &sdu->lstEnt); 
    sdu->mBuf = NULLP;
    cmLListDelFrm(&(rbCb->m.tm.sduQ),
                  &sdu->lstEnt); 
-   KW_FREE(gCb,sdu, sizeof(KwSdu));
+   RLC_FREE(gCb,sdu, sizeof(KwSdu));
 
    /* If trace flag is enabled send the trace indication */
    if(gCb->init.trc == TRUE)
    {
       /* Populate the trace params */
 
    /* If trace flag is enabled send the trace indication */
    if(gCb->init.trc == TRUE)
    {
       /* Populate the trace params */
-      kwLmmSendTrc(gCb,EVTRGUCDATREQ, NULLP);
+      kwLmmSendTrc(gCb,EVTRLCDLDAT, NULLP);
    }
    }
-   KwLiRguCDatReq (&(gCb->u.dlCb->rguDlSap[suId].pst), 
-                   gCb->u.dlCb->rguDlSap[suId].spId, 
-                   cDatReqInfo);
    
    
+   RlcMacSendDlData(&(gCb->u.dlCb->rguDlSap[suId].pst),
+                   gCb->u.dlCb->rguDlSap[suId].spId,
+                   dlData);
    RETVOID;
 }
 
    RETVOID;
 }
 
@@ -452,18 +417,18 @@ RguCStaIndInfo   *staInd;
  *    -# ROK 
  */
 #ifdef ANSI
  *    -# ROK 
  */
 #ifdef ANSI
-PUBLIC Void kwDlTmmReEstablish
+PUBLIC Void rlcDlTmmReEstablish
 (
 (
-KwCb       *gCb,
-KwDlRbCb   *rbCb    
+RlcCb       *gCb,
+RlcDlRbCb   *rbCb    
 )
 #else
 )
 #else
-PUBLIC Void kwDlTmmReEstablish(gCb,rbCb)
-KwCb       *gCb;
-KwDlRbCb   *rbCb;     
+PUBLIC Void rlcDlTmmReEstablish(gCb,rbCb)
+RlcCb       *gCb;
+RlcDlRbCb   *rbCb;     
 #endif
 {
 #endif
 {
-   TRC2(kwDlTmmReEstablish)
+   TRC2(rlcDlTmmReEstablish)
 
 
 #ifdef LTE_L2_MEAS_RLC
 
 
 #ifdef LTE_L2_MEAS_RLC
@@ -496,20 +461,21 @@ KwDlRbCb   *rbCb;
 #ifdef ANSI
 PRIVATE Void kwTmmSndStaRsp
 (
 #ifdef ANSI
 PRIVATE Void kwTmmSndStaRsp
 (
-KwCb            *gCb,
-KwDlRbCb        *rbCb,                 
+RlcCb            *gCb,
+RlcDlRbCb        *rbCb,                 
 MsgLen          bo,                    
 KwuDatReqInfo   *datReqInfo         
 )
 #else
 PRIVATE Void kwTmmSndStaRsp(rbCb,bo,datReqInfo)
 MsgLen          bo,                    
 KwuDatReqInfo   *datReqInfo         
 )
 #else
 PRIVATE Void kwTmmSndStaRsp(rbCb,bo,datReqInfo)
-KwCb            *gCb;
-KwDlRbCb        *rbCb;               
+RlcCb            *gCb;
+RlcDlRbCb        *rbCb;               
 MsgLen          bo;                
 KwuDatReqInfo   *datReqInfo;   
 #endif
 {
 MsgLen          bo;                
 KwuDatReqInfo   *datReqInfo;   
 #endif
 {
-   RguCStaRspInfo   *staRspInfo;   /* Status Response Information */
+//   RguCStaRspInfo   *staRspInfo;   /* Status Response Information */
+   RlcMacBOStatus   *boStatus;      /* Buffer occupancy status information */
    KwRguSapCb       *rguSap;       /* SAP Information */
 
    TRC3(kwTmmSndStaRsp)
    KwRguSapCb       *rguSap;       /* SAP Information */
 
    TRC3(kwTmmSndStaRsp)
@@ -517,11 +483,11 @@ KwuDatReqInfo   *datReqInfo;
 
    rguSap = &(gCb->u.dlCb->rguDlSap[rbCb->rguSapId]);
 
 
    rguSap = &(gCb->u.dlCb->rguDlSap[rbCb->rguSapId]);
 
-   KW_ALLOC_SHRABL_BUF(gCb->u.dlCb->rguDlSap[rbCb->rguSapId].pst.region,
+   RLC_ALLOC_SHRABL_BUF(gCb->u.dlCb->rguDlSap[rbCb->rguSapId].pst.region,
                        gCb->u.dlCb->rguDlSap[rbCb->rguSapId].pst.pool,
                        gCb->u.dlCb->rguDlSap[rbCb->rguSapId].pst.pool,
-                       staRspInfo,sizeof(RguCStaRspInfo));
+                       boStatus, sizeof(RguCStaRspInfo));
 #if (ERRCLASS & ERRCLS_ADD_RES)
 #if (ERRCLASS & ERRCLS_ADD_RES)
-   if ( staRspInfo == NULLP )
+   if ( boStatus == NULLP )
    {
       RLOG_ARG2(L_FATAL,DBG_RBID,rbCb->rlcId.rbId,
             "Memory Allocation failed UEID:%d CELLID:%d",
    {
       RLOG_ARG2(L_FATAL,DBG_RBID,rbCb->rlcId.rbId,
             "Memory Allocation failed UEID:%d CELLID:%d",
@@ -530,38 +496,21 @@ KwuDatReqInfo   *datReqInfo;
       RETVOID;
    }
 #endif /* ERRCLASS & ERRCLS_ADD_RES */
       RETVOID;
    }
 #endif /* ERRCLASS & ERRCLS_ADD_RES */
-   staRspInfo->bo = bo;
-   staRspInfo->cellId = rbCb->rlcId.cellId;
-   staRspInfo->lcId   = rbCb->lch.lChId;
-   staRspInfo->lcType = rbCb->lch.lChType;
-#ifdef CCPU_OPT    
-   if ( rbCb->lch.lChType == CM_LTE_LCH_BCCH ||
-        rbCb->lch.lChType == CM_LTE_LCH_PCCH )
-   {
-      staRspInfo->u.timeToTx.sfn      = datReqInfo->tm.tmg.sfn;
-      staRspInfo->u.timeToTx.subframe = datReqInfo->tm.tmg.subframe;
-#ifdef EMTC_ENABLE
-      if(rbCb->lch.lChType == CM_LTE_LCH_PCCH)
-      {
-         staRspInfo->emtcDiReason = datReqInfo->emtcDiReason;
-         staRspInfo->pnb = datReqInfo->pnb;
-      }
-#endif
-   }
-   else if ( rbCb->lch.lChType == CM_LTE_LCH_CCCH )
-   {
-       staRspInfo->u.rnti = datReqInfo->tm.rnti;
-   }
-#endif
+
+   boStatus->cellId = rbCb->rlcId.cellId;
+   boStatus->rnti = rbCb->rlcId.ueId;
+   boStatus->commCh = TRUE;
+   boStatus->lcId = rbCb->lch.lChId;
+   boStatus->bo = bo;
 
    /* If trace flag is enabled send the trace indication */
    if(gCb->init.trc == TRUE)
    {
       /* Populate the trace params */
 
    /* If trace flag is enabled send the trace indication */
    if(gCb->init.trc == TRUE)
    {
       /* Populate the trace params */
-      kwLmmSendTrc(gCb,EVTRGUCSTARSP, NULLP);
+      kwLmmSendTrc(gCb, EVTRLCBOSTA, NULLP);
    }
 
    }
 
-   KwLiRguCStaRsp(&rguSap->pst,rguSap->spId,staRspInfo);
+   RlcMacSendBOStatus(&rguSap->pst, rguSap->spId, boStatus);
 
    RETVOID;
 } 
 
    RETVOID;
 }