Enabled timer at MAC and SCH [Issue-ID: ODUHIGH-283]
[o-du/l2.git] / src / 5gnrrlc / kw_cfg_dl.c
index f0055df..8c9da76 100755 (executable)
@@ -47,6 +47,7 @@ static int RLOG_FILE_ID=191;
 \f
 /* header (.h) include files */
 #include "common_def.h"
+#include "math.h"
 #include "lkw.h"           /* LKW defines */
 #include "ckw.h"           /* CKW defines */
 #include "kwu.h"           /* KWU defines */
@@ -66,6 +67,7 @@ static int RLOG_FILE_ID=191;
 #include "kw.x"
 #include "kw_udx.x"
 #include "kw_dl.x"
+#include "du_app_rlc_inf.h"
 
 #define RLC_MODULE RLC_DBGMASK_CFG
 /*Added for adding new Ue in onging L2 Meas*/
@@ -202,7 +204,7 @@ static S16 rlcAddToDlL2Meas(RlcCb *gCb, RlcDlRbCb *rlcRbCb,uint8_t cellId,uint8_
       {
          if (measCb->measType & LKW_L2MEAS_ACT_UE)
          {
-            if((rlcRbCb->mode == CM_LTE_MODE_UM) &&
+            if((rlcRbCb->mode == RLC_MODE_UM) &&
                   (rlcRbCb->dir & RLC_DIR_DL ))
             {
                if (rlcRbCb->m.umDl.sduQ.count)
@@ -214,7 +216,7 @@ static S16 rlcAddToDlL2Meas(RlcCb *gCb, RlcDlRbCb *rlcRbCb,uint8_t cellId,uint8_
                   }
                }
             }
-            else if (rlcRbCb->mode == CM_LTE_MODE_AM)
+            else if (rlcRbCb->mode == RLC_MODE_AM)
             {
                if ((rlcRbCb->m.amDl.cntrlBo) ||
                      (rlcRbCb->m.amDl.retxBo)  ||
@@ -301,6 +303,7 @@ static S16 rlcAddToDlL2Meas(RlcCb *gCb, RlcDlRbCb *rlcRbCb,uint8_t cellId,uint8_
    return ROK;
 }/*rlcAddToDlL2Meas*/ 
 #endif /*LTE_L2_MEAS*/
+
 \f
 /** 
  * @brief
@@ -315,21 +318,7 @@ static S16 rlcAddToDlL2Meas(RlcCb *gCb, RlcDlRbCb *rlcRbCb,uint8_t cellId,uint8_
  *    -#ROK
  *    -#RFAILED
  */
-#ifdef ANSI
-static S16 rlcCfgFillDlRbCb
-(
-RlcCb            *gCb,
-RlcDlRbCb        *rbCb,
-RlcDlUeCb        *ueCb,
-RlcEntCfgInfo   *entCfg
-)
-#else
-static S16 rlcCfgFillDlRbCb(gCb,rbCb,entCfg)
-RlcCb            *gCb;
-RlcDlRbCb        *rbCb;
-RlcDlUeCb        *ueCb;
-RlcEntCfgInfo   *entCfg;
-#endif
+static S16 rlcCfgFillDlRbCb(RlcCb *gCb,RlcDlRbCb *rbCb,RlcDlUeCb *ueCb,RlcEntCfgInfo *entCfg)
 {
 
    RLOG_ARG3(L_DEBUG,DBG_RBID,entCfg->rbId,
@@ -341,7 +330,7 @@ RlcEntCfgInfo   *entCfg;
    /* Initialize according to entMode */
    switch (entCfg->entMode)
    {
-      case CM_LTE_MODE_TM:
+      case RLC_MODE_TM:
       {
          rbCb->lch.lChId  = entCfg->lCh[0].lChId;
          rbCb->lch.lChType = entCfg->lCh[0].type;
@@ -349,30 +338,39 @@ RlcEntCfgInfo   *entCfg;
          break;
       }
 
-      case CM_LTE_MODE_UM:
+      case RLC_MODE_UM:
       {
          rbCb->lch.lChId  = entCfg->lCh[0].lChId;
          rbCb->lch.lChType = entCfg->lCh[0].type;
          rbCb->dir = entCfg->dir;
+
+        /* Spec 38.322 Section 7.1 
+         * All UM state variables can take values from 0 to 63 for 6 bit SN or 
+         * from 0 to 4095 for 12 bit SN. All arithmetic operations on UM state 
+         * variables are affected by the UM modulus 
+         * (i.e. final value = [value from arithmetic operation] modulo 64
+         * for 6 bit SN and 4096 for 12 bit SN)
+         */
          rbCb->m.umDl.snLen = entCfg->m.umInfo.dl.snLen;
-         if (entCfg->m.umInfo.dl.snLen == RLC_UM_CFG_5BIT_SN_LEN)
-            rbCb->m.umDl.modBitMask = 0x1f;
+         if (entCfg->m.umInfo.dl.snLen == RLC_UM_CFG_6BIT_SN_LEN)
+            rbCb->m.umDl.modBitMask = 0x3f;
          else
-            rbCb->m.umDl.modBitMask = 0x3ff;
+            rbCb->m.umDl.modBitMask = 0xfff;
 
          ueCb->lCh[rbCb->lch.lChId - 1].dlRbCb = rbCb;
 
          break;
       }
-      case CM_LTE_MODE_AM:
+      case RLC_MODE_AM:
       {
          /* Down Link Information 
           * indx = 0 as Down Link   */
          rbCb->lch.lChId  = entCfg->lCh[0].lChId;
          rbCb->lch.lChType = entCfg->lCh[0].type;
          rbCb->dir = RLC_DIR_BOTH;
+
          rbCb->m.amDl.pollPdu = entCfg->m.amInfo.dl.pollPdu;
-         rbCb->m.amDl.pollByte = entCfg->m.amInfo.dl.pollByte;
+        rbCb->m.amDl.pollByte = entCfg->m.amInfo.dl.pollByte;
          rbCb->m.amDl.maxRetx = entCfg->m.amInfo.dl.maxRetx;
          rbCb->m.amDl.pollRetxTmrInt = entCfg->m.amInfo.dl.pollRetxTmr;
          rbCb->m.amDl.snLen = entCfg->m.amInfo.dl.snLen;
@@ -387,8 +385,6 @@ RlcEntCfgInfo   *entCfg;
          }
 
          cmInitTimers(&(rbCb->m.amDl.pollRetxTmr), 1);
-      
-        
          ueCb->lCh[rbCb->lch.lChId - 1].dlRbCb = rbCb;
        
 #ifndef LTE_TDD 
@@ -431,21 +427,13 @@ RlcEntCfgInfo   *entCfg;
  *    -#ROK
  *    -#RFAILED
  */
-#ifdef ANSI
 static S16 rlcCfgUpdateDlRb
 (
-RlcCb            *gCb,
-RlcDlRbCb        *rbCb,
+RlcCb           *gCb,
+RlcDlRbCb       *rbCb,
 void            *ptr,
 RlcEntCfgInfo   *entCfg
 )
-#else
-static S16 rlcCfgUpdateDlRb(gCb,rbCb, ptr, entCfg)
-RlcCb            *gCb;
-RlcDlRbCb        *rbCb;
-void            *ptr;
-RlcEntCfgInfo   *entCfg;
-#endif
 {
    
    if (rbCb->mode != entCfg->entMode)
@@ -461,7 +449,7 @@ RlcEntCfgInfo   *entCfg;
 
    switch (rbCb->mode)
    {
-      case CM_LTE_MODE_TM:
+      case RLC_MODE_TM:
       {
          RlcDlCellCb *cellCb = (RlcDlCellCb *)ptr;
 
@@ -473,7 +461,7 @@ RlcEntCfgInfo   *entCfg;
          break;
       }
 
-      case CM_LTE_MODE_UM:
+      case RLC_MODE_UM:
       {
          RlcDlUeCb *ueCb = (RlcDlUeCb *)ptr;
 
@@ -490,7 +478,7 @@ RlcEntCfgInfo   *entCfg;
          break;
       }
 
-      case CM_LTE_MODE_AM:
+      case RLC_MODE_AM:
       {
          RlcDlUeCb *ueCb = (RlcDlUeCb *)ptr;
 
@@ -546,7 +534,6 @@ RlcEntCfgInfo   *entCfg;
  *    -# ROK
  *    -# RFAILED
  */
-#ifdef ANSI
 S16 rlcCfgAddDlRb
 (
 RlcCb               *gCb,
@@ -555,14 +542,6 @@ CmLteCellId        cellId,
 RlcEntCfgInfo      *entCfg,
 RlcEntCfgCfmInfo   *entCfm
 )
-#else
-S16 rlcCfgAddDlRb(gCb,ueId, cellId, entCfg, entCfm)
-RlcCb               *gCb;
-CmLteRnti          ueId;
-CmLteCellId        cellId;
-RlcEntCfgInfo      *entCfg;
-RlcEntCfgCfmInfo   *entCfm;
-#endif
 {
    RlcDlUeCb     *ueCb = NULLP;   /* UE Control Block */
    RlcDlCellCb   *cellCb;         /* Cell Control Block */
@@ -613,7 +592,7 @@ RlcEntCfgCfmInfo   *entCfm;
       if (((entCfg->lCh[0].type == CM_LTE_LCH_BCCH) || 
            (entCfg->lCh[0].type == CM_LTE_LCH_PCCH) ||
            (entCfg->lCh[0].type == CM_LTE_LCH_CCCH)) &&
-          (entCfg->entMode == CM_LTE_MODE_TM))
+          (entCfg->entMode == RLC_MODE_TM))
       {
          /* Cell CB present */
          rlcDbmFetchDlCellCb(gCb, cellId, &cellCb);
@@ -684,7 +663,7 @@ RlcEntCfgCfmInfo   *entCfm;
       }
       else
       {
-         reason= (entCfg->entMode != CM_LTE_MODE_TM)? CKW_CFG_REAS_RB_MODE_MIS:
+         reason= (entCfg->entMode != RLC_MODE_TM)? CKW_CFG_REAS_RB_MODE_MIS:
                                                       CKW_CFG_REAS_LCHTYPE_MIS;
          /* Fill entCfm structure */
          RLC_CFG_FILL_CFG_CFM(entCfm, entCfg->rbId, entCfg->rbType, 
@@ -706,11 +685,11 @@ RlcEntCfgCfmInfo   *entCfm;
          return RFAILED;
       }
       if ((((entCfg->lCh[0].type == CM_LTE_LCH_DCCH) && 
-            (entCfg->entMode != CM_LTE_MODE_UM) && 
+            (entCfg->entMode != RLC_MODE_UM) && 
             (CM_LTE_SRB == entCfg->rbType)) ||
            ((entCfg->lCh[0].type == CM_LTE_LCH_DTCH) && 
             (CM_LTE_DRB == entCfg->rbType))) &&
-          (entCfg->entMode != CM_LTE_MODE_TM))
+          (entCfg->entMode != RLC_MODE_TM))
       {
          /* UE CB present */
          if ( rlcDbmFetchDlUeCb(gCb,ueId, cellId, &ueCb) == ROK)
@@ -748,7 +727,7 @@ RlcEntCfgCfmInfo   *entCfm;
 
          /* Validate LChId for UM and AM modes */
          if ((entCfg->lCh[0].lChId <= 0) ||
-             ((entCfg->entMode == CM_LTE_MODE_AM)&&
+             ((entCfg->entMode == RLC_MODE_AM)&&
                (entCfg->lCh[1].lChId <= 0)))
          {
             /* Fill entCfm structure */                               
@@ -783,7 +762,7 @@ RlcEntCfgCfmInfo   *entCfm;
       }
       else
       {
-         if (entCfg->entMode == CM_LTE_MODE_TM)
+         if (entCfg->entMode == RLC_MODE_TM)
          {
             reason = CKW_CFG_REAS_RB_MODE_MIS;
          }
@@ -871,7 +850,6 @@ RlcEntCfgCfmInfo   *entCfm;
  *    -#ROK
  *    -#RFAILED
  */
-#ifdef ANSI
 S16 rlcCfgReCfgDlRb
 (
 RlcCb               *gCb,
@@ -880,14 +858,6 @@ CmLteCellId        cellId,
 RlcEntCfgInfo      *entCfg,
 RlcEntCfgCfmInfo   *entCfm
 )
-#else
-S16 rlcCfgReCfgDlRb(gCb,ueId, cellId, entCfg, entCfm)
-RlcCb               *gCb;
-CmLteRnti          ueId;
-CmLteCellId        cellId;
-RlcEntCfgInfo      *entCfg;
-RlcEntCfgCfmInfo   *entCfm;
-#endif
 {
    RlcDlRbCb     *rbCb;     /* RB Control Block */
    RlcDlRbCb     tRbCb;     /* KW RB Control Block */
@@ -1072,7 +1042,6 @@ RlcEntCfgCfmInfo   *entCfm;
  *    -#ROK
  *    -#RFAILED
  */
-#ifdef ANSI
 S16 rlcCfgDelDlRb
 (
 RlcCb               *gCb,
@@ -1081,14 +1050,6 @@ CmLteCellId        cellId,
 RlcEntCfgInfo      *entCfg,
 RlcEntCfgCfmInfo   *entCfm
 )
-#else
-S16 rlcCfgDelRb(gCb,ueId, cellId, entCfg, entCfm)
-RlcCb               *gCb;
-CmLteRnti          ueId;
-CmLteCellId        cellId;
-RlcEntCfgInfo      *entCfg;
-RlcEntCfgCfmInfo   *entCfm;
-#endif
 {
    S16          ret;       /* Return Value */
    RlcDlUeCb     *ueCb;     /* UE Control Block */
@@ -1206,13 +1167,13 @@ RlcEntCfgCfmInfo   *entCfm;
       RLC_UPD_L2_DECR_NONIP_PER_QCI_RB_COUNT(gCb, rlcRbCb);
 #endif
       /* Free the Buffers of RbCb */
-      if( CM_LTE_MODE_UM == rlcRbCb->mode)
+      if( RLC_MODE_UM == rlcRbCb->mode)
       {
          rlcUmmFreeDlRbCb(gCb,rlcRbCb);
          /* Delete RbCb  */
          RLC_FREE(gCb,rlcRbCb, sizeof(RlcDlRbCb));     
       }
-      else if( CM_LTE_MODE_AM == rlcRbCb->mode)
+      else if( RLC_MODE_AM == rlcRbCb->mode)
       {
          rlcAmmFreeDlRbCb(gCb,rlcRbCb);
       }
@@ -1266,25 +1227,15 @@ RlcEntCfgCfmInfo   *entCfm;
  *    -# ROK
  *    -# RFAILED
  */
-#ifdef ANSI
 S16 rlcCfgReEstDlRb
 (
-RlcCb               *gCb,
+RlcCb              *gCb,
 CmLteRnti          ueId,
 CmLteCellId        cellId,
 Bool               sndReEstInd,
 RlcEntCfgInfo      *entCfg,
 RlcEntCfgCfmInfo   *entCfm
 )
-#else
-S16 rlcCfgReEstDlRb(gCb,ueId, cellId,sndReEstInd,entCfg, entCfm)
-RlcCb               *gCb;
-CmLteRnti          ueId;
-CmLteCellId        cellId;
-Bool               sndReEstInd;
-RlcEntCfgInfo      *entCfg;
-RlcEntCfgCfmInfo   *entCfm;
-#endif
 {
    RlcDlRbCb     *rbCb;   /* RB Control Block */
    CmLteRlcId   rlcId;   /* RLC Identifier */
@@ -1318,19 +1269,19 @@ RlcEntCfgCfmInfo   *entCfm;
 
    switch (rbCb->mode)
    {
-      case CM_LTE_MODE_TM:
+      case RLC_MODE_TM:
          {
             rlcDlTmmReEstablish(gCb,rbCb);
             break;
          }
 
-      case CM_LTE_MODE_UM:
+      case RLC_MODE_UM:
          {
             rlcDlUmmReEstablish(gCb,rlcId,sndReEstInd,rbCb);
             break;
          }
 
-      case CM_LTE_MODE_AM:
+      case RLC_MODE_AM:
          {           
             rlcAmmDlReEstablish(gCb, rlcId, rbCb);
             break;
@@ -1367,23 +1318,14 @@ RlcEntCfgCfmInfo   *entCfm;
  *    -#ROK
  *    -#RFAILED
  */
-#ifdef ANSI
 S16 rlcCfgDelDlUe
 (
-RlcCb               *gCb,
+RlcCb              *gCb,
 CmLteRnti          ueId,
 CmLteCellId        cellId,
 RlcEntCfgInfo      *entCfg,
 RlcEntCfgCfmInfo   *entCfm
 )
-#else
-S16 rlcCfgDelDlUe(ueId, cellId, entCfg, entCfm)
-RlcCb               *gCb;
-CmLteRnti          ueId;
-CmLteCellId        cellId;
-RlcEntCfgInfo      *entCfg;
-RlcEntCfgCfmInfo   *entCfm;
-#endif
 {
    S16        ret;     /* Return Value */
    RlcDlUeCb   *ueCb;   /* UE Control Block */
@@ -1458,7 +1400,6 @@ RlcEntCfgCfmInfo   *entCfm;
  *    -#ROK
  *    -#RFAILED
  */
-#ifdef ANSI
 S16 rlcCfgDelDlCell
 (
 RlcCb               *gCb,
@@ -1466,13 +1407,6 @@ CmLteCellId        cellId,
 RlcEntCfgInfo      *entCfg,
 RlcEntCfgCfmInfo   *entCfm
 )
-#else
-S16 rlcCfgDelCell(gCb,cellId, entCfg, entCfm)
-RlcCb               *gCb;
-CmLteCellId        cellId;
-RlcEntCfgInfo      *entCfg;
-RlcEntCfgCfmInfo   *entCfm;
-#endif
 {
    RlcDlCellCb   *cellCb;   /* UE Control Block */
    uint8_t       rbId;      /* RB Identifier */
@@ -1542,7 +1476,6 @@ RlcEntCfgCfmInfo   *entCfm;
  *    -# ROK
  *    -# RFAILED
  */
-#ifdef ANSI
 S16 rlcCfgDlUeIdChng
 (
 RlcCb        *gCb,
@@ -1550,13 +1483,6 @@ CkwUeInfo   *ueInfo,
 CkwUeInfo   *newUeInfo,
 CmStatus    *status
 )
-#else
-S16 rlcCfgDlUeIdChng(gCb,ueInfo,newUeInfo,status)
-RlcCb        *gCb;
-CkwUeInfo   *ueInfo;
-CkwUeInfo   *newUeInfo;
-CmStatus    *status;
-#endif
 {
    RlcDlUeCb *ueCb;
 /*kw004.201 Adding of Missing Trace in LTE RLC PDCP*/