UL data path changes at Phy stub, RLC UL UM and DU APP [Issue-ID: ODUHIGH-262]
[o-du/l2.git] / src / 5gnrrlc / kw_ul.x
index e197f61..daed3ed 100755 (executable)
 extern "C" {
 #endif /* __cplusplus */
 
-typedef struct kwUlUeCb KwUlUeCb;
+typedef struct rlcUlUeCb RlcUlUeCb;
 
-/** @defgroup um_uplink UM Uplink Module
+/** 
+ * @brief  Structure to hold a RLC UM PDU segment
+ *
+ * @details
+ *    - lstEnt : This is required for the linked list in which the segments
+ *               are stored
+ *    - seg    : Holds the segment data
+ *    - segSz  : The length of the segment in bytes
+ *    - soEnd  : SOEnd
+ *    - umHdr  : The UM Header for the PDU segment
+ *
 */
+typedef struct rlcUmSeg
+{
+   CmLList   lstEnt;   /*!< List entry for PDU segment */
+   Buffer    *seg;     /*!< PDU segment */
+   MsgLen    segSz;    /*!< Buffer Size */
+   uint16_t  soEnd;    /*!< Segment Offset End */
+   RlcUmHdr  umHdr;    /*!<Um Header */
+}RlcUmSeg;
 
 /** 
  * @brief  Structure to hold a  UM PDU
@@ -53,12 +71,20 @@ typedef struct kwUlUeCb KwUlUeCb;
  *    - umHdr : UM PDU Header Information
  *    - pduSz : Length of the PDU excluding the header
 */
-typedef struct kwUmRecBuf
+typedef struct rlcUmRecBuf
 {
-   Buffer    *pdu;    /**< Buffer holding the UM PDU */
-   KwUmHdr   umHdr;   /**< UM PDU Header Information */
-   MsgLen    pduSz;   /**< PDU Size */
-}KwUmRecBuf;
+   RlcSn       sn;            /*!< Sequence Number */
+   CmLList     lnk;           /*!< Link to the receive buffer list */
+   Bool        allSegRcvd;    /*!< Flag to check whether all seg are received */
+   Bool        noMissingSeg;  /*!< Flag to check all the bytes are received before the last byte of segment */
+   CmLListCp   segLst;        /*!< PDU Segments list */
+   uint16_t    expSo;         /*!< Next expected seg offset */
+   Bool        allRcvd;       /*!< All bytes received or not */
+   RlcUmSeg    *expByteSeg;   /*!< Next expected byte segment */
+   Buffer      *pdu;          /**< Buffer holding the UM PDU */
+   RlcUmHdr    umHdr;         /**< UM PDU Header Information */
+   MsgLen      pduSz;         /**< PDU Size */
+}RlcUmRecBuf;
 
 /** 
  * @brief  Structure to hold uplink information in UM mode for a particular RB
@@ -73,21 +99,22 @@ typedef struct kwUmRecBuf
  *    - partialSdu : This is used to store the partially completed SDU. 
  *                   It remains till complete SDU is received
 */
-typedef struct kwUmUl
+typedef struct rlcUmUl
 {
-   U8           snLen;         /**< Sequence number length */
-   U8           reOrdTmrInt;   /**< Timer Interval */
-   KwUmRecBuf   **recBuf;      /**< Reception buffer */
-   KwSn         umWinSz;       /**< UM window size */
-   U16          modBitMask;    /**< Bitmask for modulus to wrap around variables */
-   KwSn         sn;            /**< Sequence number */
-   KwSn         vrUr;          /**< VR(UR) - Receive state variable */
-   KwSn         vrUh;          /**< VR(UH) - Highest received state variable */
-   KwSn         vrUx;          /**< VR(UX) - Reordering state variable */
-   CmTimer      reOrdTmr;      /**< Reordering Timer */
-   Buffer       *partialSdu;   /**< Partial SDU - Remains till the complete SDU
-                                                               is received */
-}KwUmUl;
+   uint8_t       snLen;         /**< Sequence number length */
+   uint8_t       reAsmblTmrInt; /**< Timer Interval */
+   CmLListCp     *recBufLst;    /**!<Reception Buffer List */
+   RlcSn         umWinSz;       /**< UM window size */
+   uint16_t      modBitMask;    /**< Bitmask for modulus to wrap around variables */
+   RlcSn         sn;            /**< Sequence number */
+   RlcSn         vrUr;          /**< VR(UR) - Receive state variable */
+   RlcSn         vrUh;          /**< VR(UH) - Highest received state variable */
+   RlcSn         vrUx;          /**< VR(UX) - Reordering state variable */
+   CmTimer       reAsmblTmr;    /**< Reordering Timer */
+   Buffer        *assembleSdu;  /**< Assemble Sdu - Remains till the complete SDU is received */
+   uint16_t      expSo;         /*!< Expected SO for reassembly */
+   RlcSn         expSn;         /*!< Expected Sn */
+}RlcUmUl;
 /*@}*/
 
 /** 
@@ -102,14 +129,14 @@ typedef struct kwUmUl
  *    - amHdr  : The AM Header for the PDU segment
  *
 */
-typedef struct kwSeg
+typedef struct rlcSeg
 {
    CmLList   lstEnt;   /**< List entry for PDU segment */
    Buffer    *seg;     /**< PDU segment */
    MsgLen    segSz;    /**< Buffer Size */
-   U16       soEnd;    /**< Segment Offset End */
-   KwAmHdr   amHdr;    /**< AM header */
-}KwSeg;
+   uint16_t  soEnd;    /**< Segment Offset End */
+   RlcAmHdr  amHdr;    /**< AM header */
+}RlcSeg;
 
 /*@}*/
 
@@ -126,18 +153,18 @@ typedef struct kwSeg
  *    - allRcvd     : Whether all the segments for this PDU has been recevied
  *
 */
-typedef struct kwAmRecBuf
+typedef struct rlcAmRecBuf
 {
    CmLList     lnk;           /**< Link to the receive buffer list */
    Buffer      *pdu;          /**< PDU buffer */
    MsgLen      pduSz;         /**< Buffer Size */
-   KwAmHdr     amHdr;         /**< AM header Info */
+   RlcAmHdr    amHdr;         /**< AM header Info */
    CmLListCp   segLst;        /**< PDU Segments list */
-   KwSeg       *expByteSeg;   /**< Next expected byte segment */
-   U16         expSo;         /**< Next expected seg offset */
+   RlcSeg      *expByteSeg;   /**< Next expected byte segment */
+   uint16_t    expSo;         /**< Next expected seg offset */
    Bool        allRcvd;       /**< All bytes received or not */
    Bool        isDelvUpperLayer; /**< Is it sent to upper layer */ 
-}KwAmRecBuf;
+}RlcAmRecBuf;
 
 /** @addtogroup ammode */
 /*@{*/
@@ -165,31 +192,31 @@ typedef struct kwAmRecBuf
  *                         the STATUS PDU
  *
 */
-typedef struct kwAmUl
+typedef struct rlcAmUl
 {
 #ifndef LTE_TDD 
    CmLListCp   *recBufLst;
 #else
-//   KwAmRecBuf   *recBuf[1024];              /**< Reception buffer */
+//   RlcAmRecBuf   *recBuf[1024];              /**< Reception buffer */
 #endif
-   KwSn         rxNext;                /**< RX_Next:Equvalent to VR(R) in 4G */
-   KwSn         rxNextHighestRcvd;     /**< RX_Next_Highest_Rcvd: Equvalent to VR(H) in 4G */ 
-   KwSn         rxNextStatusTrig;      /**< rxNextStatusTrig: Equvalent to VR(X) in 4G*/
-   KwSn         vrMr;                  /**< VR(MR) */ 
-   KwSn         rxHighestStatus;       /**< rxHighestStatus: Eqvalent to VR(MS) in 4G*/
+   RlcSn         rxNext;                /**< RX_Next:Equvalent to VR(R) in 4G */
+   RlcSn         rxNextHighestRcvd;     /**< RX_Next_Highest_Rcvd: Equvalent to VR(H) in 4G */ 
+   RlcSn         rxNextStatusTrig;      /**< rxNextStatusTrig: Equvalent to VR(X) in 4G*/
+   RlcSn         vrMr;                  /**< VR(MR) */ 
+   RlcSn         rxHighestStatus;       /**< rxHighestStatus: Eqvalent to VR(MS) in 4G*/
    Bool         staTrg;                /**< Whether status trigger occured */
    Buffer       *partialSdu;           /**< Partially received SDU */
-   KwSn         expSn;                 /**< Expected SN for reassembly */
-   U16          expSo;                 /**< Expected SO for reassembly */
+   RlcSn         expSn;                 /**< Expected SN for reassembly */
+   uint16_t          expSo;                 /**< Expected SO for reassembly */
    CmTimer      staProhTmr;            /**< T_status_prohibit Timer */
-   U16          staProhTmrInt;         /**< Timer Interval */
+   uint16_t          staProhTmrInt;         /**< Timer Interval */
    CmTimer      reOrdTmr;              /**< T_reordering Timer */
-   U8           reOrdTmrInt;           /**< Timer Interval */
+   uint8_t           reOrdTmrInt;           /**< Timer Interval */
    Bool         gatherStaPduInfo;      /**< Gather STATUS PDU creation info*/
    Bool         isOutOfSeq;            /**< To identify whether packets are Out-Of-Seq or not */
-   U8           snLen;                 /*!< Sequence number length:12 bit or 18 bit : 5GNR RLC */
-   U32          snModMask;             /*!< (2 Pwr SnLen - 1): 5GNR RLC */
-}KwAmUl;
+   uint8_t           snLen;                 /*!< Sequence number length:12 bit or 18 bit : 5GNR RLC */
+   uint32_t          snModMask;             /*!< (2 Pwr SnLen - 1): 5GNR RLC */
+}RlcAmUl;
 
 /*@}*/
 
@@ -205,7 +232,7 @@ typedef struct kwAmUl
  *    - inst     : Id of RLC instance where this Radio Bearer is present. Used
  *                 to find the instance from the Radio Bearer for memory needs 
  *                 as different instances might have different memory.
- *    - kwuSapId : KWU SAP identifier
+ *    - k1wuSapId : KWU SAP identifier
  *    - udxSapId : UDX SAP idenrifier
  *    - transId  : Stores the transaction identifier used to communicate 
  *                 with MAC, the same value as sent by MAC is passed back 
@@ -214,30 +241,30 @@ typedef struct kwAmUl
  *      - umDl   : Unacknowledged Mode downlink information
  *      - amDl   : Acknowledged Mode downlink information
 */
-typedef struct _kwUlRbCb
+typedef struct _rlcUlRbCb
 {
 /* kw005.201 added support for L2 Measurement */
 #ifdef LTE_L2_MEAS
-   KwL2MeasRbCb    rbL2Cb;              /**< RB measurement L2 Cb */
-   KwUlUeCb        *ueCb;              /*!< Pointer to UeCb  */
-   U8              qci;                 /**< qci of the RB */
-   KwL2MeasIpThruput l2MeasIpThruput;   /**< Holds related parameter for
+   RlcL2MeasRbCb    rbL2Cb;              /**< RB measurement L2 Cb */
+   RlcUlUeCb        *ueCb;              /*!< Pointer to UeCb  */
+   uint8_t              qci;                 /**< qci of the RB */
+   RlcL2MeasIpThruput l2MeasIpThruput;   /**< Holds related parameter for
                                              DL/Ul ip throughput>*/
 #endif /* LTE_L2_MEAS */
    CmLteRlcId     rlcId;      /**< RLC Identifier */
-   KwLchInfo      lch;        /**< Logical Channel Info */
+   RlcLchInfo      lch;        /**< Logical Channel Info */
    CmLteRlcMode   mode;       /**< Entity Mode */
-   U8             dir;        /**< Direction for UL/DL */
+   uint8_t             dir;        /**< Direction for UL/DL */
    Inst           inst;       /**< Tapa where Rb created Instance id */
-   SpId           kwuSapId;   /**< KWU sap Id, to get the KwuSapCb */
+   SpId           k1wuSapId;   /**< KWU sap Id, to get the KwuSapCb */
    SpId           udxSapId;   /**< KWU sap Id, to get the KwuSapCb */
-   U32            transId;    /**< Transaction Id for RLC */
+   uint32_t            transId;    /**< Transaction Id for RLC */
    union          
    {
-      KwUmUl   umUl;   /**< UM  mode Ul elements */
-      KwAmUl   amUl;   /**< AM mode uplink elements */
+      RlcUmUl   umUl;   /**< UM  mode Ul elements */
+      RlcAmUl   amUl;   /**< AM mode uplink elements */
    }m;   /**< RLC mode specific Info */
-}KwUlRbCb;
+}RlcUlRbCb;
 
 /** 
  * @brief  Structure to hold mapping between logical channel and Radio Bearer
@@ -245,10 +272,10 @@ typedef struct _kwUlRbCb
  * @details
  *    - ulRbCb   : Pointer to the uplink Radio Bearer
 */
-typedef struct kwUlLch
+typedef struct rlcUlLch
 {
-   KwUlRbCb *ulRbCb;   /**< Pointer to Uplink RbCb */
-}KwUlLch;                                  
+   RlcUlRbCb *ulRbCb;   /**< Pointer to Uplink RbCb */
+}RlcUlLch;                                  
 
 /** 
  * @brief  Structure to hold uplink information about the Cells
@@ -261,14 +288,14 @@ typedef struct kwUlLch
  *    - lCh       : Logical Channels in the cell
  *    - selfPstUl : Pst structure for sending messages to self
 */
-typedef struct kwUlCellCb
+typedef struct rlcUlCellCb
 {
    CmHashListEnt   cellHlEnt;                 /**< Hash list entry for CellCb */
    CmLteCellId     cellId;                    /**< Cell Id */
-   KwUlRbCb        *rbCb[KW_MAX_RB_PER_CELL]; /**< RbCbs within a Cell */
-   KwUlLch         lCh[KW_MAX_LCH_PER_CELL];  /**< Logical channels in a cell */
+   RlcUlRbCb        *rbCb[RLC_MAX_RB_PER_CELL]; /**< RbCbs within a Cell */
+   RlcUlLch         lCh[RLC_MAX_LCH_PER_CELL];  /**< Logical channels in a cell */
    Pst             selfPstUl;
-}KwUlCellCb;
+}RlcUlCellCb;
 
 /** 
  * @brief  Structure to hold uplink information about the UEs
@@ -281,18 +308,18 @@ typedef struct kwUlCellCb
  *    - drbCb   : Data Radio Bearers configured for the UE
  *    - lCh     : Logical Channels in the UE
 */
-struct kwUlUeCb
+struct rlcUlUeCb
 {
    CmHashListEnt   ueHlEnt;                   /**< Hash list entry for UeCb */
    CmLteRnti     ueId;     /*!< UE Id */
    CmLteCellId   cellId;   /*!< Cell Id */
-   KwUlRbCb        *srbCb[KW_MAX_SRB_PER_UE]; /**< SRB RbCbs within an UE */ 
-   KwUlRbCb        *drbCb[KW_MAX_DRB_PER_UE]; /**< DRB RbCbs within an UE */ 
-   KwUlLch         lCh[KW_MAX_LCH_PER_UE];    /**< Logical channels of an UE*/
+   RlcUlRbCb        *srbCb[RLC_MAX_SRB_PER_UE]; /**< SRB RbCbs within an UE */ 
+   RlcUlRbCb        *drbCb[RLC_MAX_DRB_PER_UE]; /**< DRB RbCbs within an UE */ 
+   RlcUlLch         lCh[RLC_MAX_LCH_PER_UE];    /**< Logical channels of an UE*/
 /* kw005.201 added support for L2 Measurement */
 #ifdef LTE_L2_MEAS
-   U32             firstPacketTTI;            /*!< is first packet of the burst */
-   U16             numActRb[LKW_MAX_QCI];     /**< number of RBs Active */
+   uint32_t             firstPacketTTI;            /*!< is first packet of the burst */
+   uint16_t             numActRb[LKW_MAX_QCI];     /**< number of RBs Active */
    Bool              isUlBurstActive;   /*!<Has the Burst started for UL IP Thrpt meas */
 #endif /* LTE_L2_MEAS */
 };
@@ -304,11 +331,11 @@ struct kwUlUeCb
  *    - entUlCfgCfm      :  Holds the UL configuration status  
  *    - rbCb             :  Rb Block
  */
-typedef struct kwUlEntTmpData
+typedef struct rlcUlEntTmpData
 {
-   CkwEntCfgCfmInfo   entUlCfgCfm; /**< Ul Configuration status*/ 
-   KwUlRbCb           *rbCb;       /**< Rb Block */
-}KwUlEntTmpData;
+   RlcEntCfgCfmInfo   entUlCfgCfm; /**< Ul Configuration status*/ 
+   RlcUlRbCb           *rbCb;       /**< Rb Block */
+}RlcUlEntTmpData;
 
 /** 
  * @brief  Structure to hold transaction information in configuration request 
@@ -325,277 +352,291 @@ typedef struct kwUlEntTmpData
  *    - newUeInfo    : New Ue Information
  *    - cfgTmpData   : Temporary data per Configuration entity
 */
-typedef struct kwUlCfgTmpData
+typedef struct rlcUlCfgTmpData
 {
    CmHashListEnt    transHlEnt;                  /**< List Entry of 
                                                    Transaction*/
-   U32              transId;                     /**< Locally generated Transaction Id */
-   U32              uprLyrTransId;               /**< Transaction Id generated by upper layer. 
+   uint32_t              transId;                     /**< Locally generated Transaction Id */
+   uint32_t              uprLyrTransId;               /**< Transaction Id generated by upper layer. 
                                                       This is used while sending confirm to the User Layer */
    CmLteCellId      cellId;                      /**< Cell Id */
    CmLteRnti        ueId;                        /**< Ue Id */
-   KwUlUeCb         *ueCb;                       /**< Ue Block */
-   KwUlCellCb       *cellCb;                     /**< Cell Block */
-   CkwCfgInfo       *cfgInfo;                    /**< Config Information*/
+   RlcUlUeCb         *ueCb;                       /**< Ue Block */
+   RlcUlCellCb       *cellCb;                     /**< Cell Block */
+   RlcCfgInfo       *cfgInfo;                    /**< Config Information*/
    CkwUeInfo        *ueInfo;                     /**< Ue Information */
    CkwUeInfo        *newUeInfo;                  /**< New Ue Information */
-   KwUlEntTmpData   cfgEntData[CKW_MAX_ENT_CFG]; /**< Entity Data */
-} KwUlCfgTmpData;
+   RlcUlEntTmpData   cfgEntData[CKW_MAX_ENT_CFG]; /**< Entity Data */
+} RlcUlCfgTmpData;
 /****************************************************************************
- *                      EXTERN Declarations
+ *                      Declarations
  ***************************************************************************/
 /****************************************************************************
  *                    Configuration Functions 
  ***************************************************************************/
 
-EXTERN S16 kwValidateRbCfgParams ARGS ((KwCb *gCb,
+S16 rlcValidateRbCfgParams ARGS ((RlcCb *gCb,
                                         CmLteRnti   ueId,
                                         CmLteCellId cellId,
-                                        CkwEntCfgInfo  *cfgToValidate,
+                                        RlcEntCfgInfo  *cfgToValidate,
                                         CmStatus        *status));
-EXTERN S16 kwCfgValidateUlRb ARGS (( KwCb *gCb,
-                                    CkwEntCfgInfo *cfgToValidate,
-                                    KwUlEntTmpData *cfgInfo, 
-                                    KwUlCfgTmpData *cfg));
+S16 rlcCfgValidateUlRb ARGS (( RlcCb *gCb,
+                                    RlcEntCfgInfo *cfgToValidate,
+                                    RlcUlEntTmpData *cfgInfo, 
+                                    RlcUlCfgTmpData *cfg));
 
-EXTERN S16 kwCfgRollBackUlRb ARGS ((KwCb *gCb,
+S16 rlcCfgRollBackUlRb ARGS ((RlcCb *gCb,
                                     CmLteRnti ueId,
-                                    CkwEntCfgInfo *cfgToValidate,
-                                    KwUlEntTmpData *cfgTempData));
+                                    RlcEntCfgInfo *cfgToValidate,
+                                    RlcUlEntTmpData *cfgTempData));
 
-EXTERN Void kwCfgApplyUlRb ARGS ((KwCb *gCb,
-                                  CkwEntCfgInfo *cfgToAply,
-                                  KwUlEntTmpData *cfgTmpData,
-                                  KwUlCfgTmpData *cfgTmpInfo));
+Void rlcCfgApplyUlRb ARGS ((RlcCb *gCb,
+                                  RlcEntCfgInfo *cfgToAply,
+                                  RlcUlEntTmpData *cfgTmpData,
+                                  RlcUlCfgTmpData *cfgTmpInfo));
 
-EXTERN S16 kwCfgValidateReEstRb ARGS ((KwCb *gCb,
+S16 rlcCfgValidateReEstRb ARGS ((RlcCb *gCb,
                                        CmLteRnti  ueId,
                                        CmLteCellId cellId,
-                                       CkwEntCfgInfo *cfgToValidate,
-                                       KwUlEntTmpData   *cfgTmpData));
+                                       RlcEntCfgInfo *cfgToValidate,
+                                       RlcUlEntTmpData   *cfgTmpData));
 
-EXTERN Void kwCfgApplyReEstUlRb ARGS ((KwCb *gCb,
+Void rlcCfgApplyReEstUlRb ARGS ((RlcCb *gCb,
                                       CmLteRnti ueId,
                                       CmLteCellId cellId,
                                       Bool sndReEstInd,
-                                      KwUlEntTmpData *cfgTmpData));
+                                      RlcUlEntTmpData *cfgTmpData));
 
-EXTERN Void kwCfgApplyDelUlCell ARGS ((KwCb *gCb,
-                                      KwUlCfgTmpData *cfgTmpData));
+Void rlcCfgApplyDelUlCell ARGS ((RlcCb *gCb,
+                                      RlcUlCfgTmpData *cfgTmpData));
 
-EXTERN S16 kwCfgValidateDelUlCell ARGS ((KwCb *gCb,
+S16 rlcCfgValidateDelUlCell ARGS ((RlcCb *gCb,
                                          CmLteCellId cellId,
-                                         CkwEntCfgInfo *cfgToValidate,
-                                         KwUlEntTmpData   *cfgTmpData,
-                                         KwUlCfgTmpData *cfgInfo));
+                                         RlcEntCfgInfo *cfgToValidate,
+                                         RlcUlEntTmpData   *cfgTmpData,
+                                         RlcUlCfgTmpData *cfgInfo));
 
-EXTERN S16 kwCfgValidateDelUlUe ARGS ((KwCb *gCb,
-                                       CkwEntCfgInfo *cfgToValidate,
-                                       KwUlEntTmpData *cfgTmpData,
-                                       KwUlCfgTmpData *cfgInfo));
+S16 rlcCfgValidateDelUlUe ARGS ((RlcCb *gCb,
+                                       RlcEntCfgInfo *cfgToValidate,
+                                       RlcUlEntTmpData *cfgTmpData,
+                                       RlcUlCfgTmpData *cfgInfo));
 
-EXTERN Void kwCfgApplyDelUlUe ARGS ((KwCb *gCb,
-                                    KwUlCfgTmpData *cfgTmpData));
+Void rlcCfgApplyDelUlUe ARGS ((RlcCb *gCb,
+                                    RlcUlCfgTmpData *cfgTmpData));
 
-EXTERN Void kwHdlUiCkwUlCfgReq ARGS ((KwCb *gCb,
-                                     KwUlCfgTmpData *cfgInfo,
-                                     CkwCfgInfo *cfg));
+Void rlcUlHdlCfgReq ARGS ((RlcCb *gCb,
+                                     RlcUlCfgTmpData *cfgInfo,
+                                     RlcCfgInfo *cfg));
 
-EXTERN Void kwCfgApplyUlUeIdChng ARGS ((KwCb *gCb,
+Void rlcCfgApplyUlUeIdChng ARGS ((RlcCb *gCb,
                                         CkwUeInfo *ueInfo,
                                         CkwUeInfo *newUeInfo,
-                                        KwUlCfgTmpData *cfgTmpInfo));
+                                        RlcUlCfgTmpData *cfgTmpInfo));
 
-EXTERN S16 kwCfgValidateUeIdChng ARGS ((KwCb *gCb,
+S16 rlcCfgValidateUeIdChng ARGS ((RlcCb *gCb,
                                         CkwUeInfo *ueInfo,
                                         CkwUeInfo *newUeInfo,
-                                        KwUlCfgTmpData *cfgTmpInfo));
+                                        RlcUlCfgTmpData *cfgTmpInfo));
 
 /****************************************************************************
  *                    DBM module Functions 
  ***************************************************************************/
-EXTERN S16 kwDbmUlInit ARGS ((KwCb *gCb));
+S16 rlcDbmUlInit ARGS ((RlcCb *gCb));
 
-EXTERN Void kwDbmUlDeInit ARGS ((KwCb *gCb));
+Void rlcDbmUlDeInit ARGS ((RlcCb *gCb));
 
-EXTERN S16 kwDbmAddUlUeCb ARGS ((KwCb *gCb,
+S16 rlcDbmAddUlUeCb ARGS ((RlcCb *gCb,
                                     CmLteRnti ueId,
                                     CmLteCellId cellId,
-                                    KwUlUeCb *ueCb));
+                                    RlcUlUeCb *ueCb));
 
-EXTERN S16 kwDbmFetchUlUeCb ARGS ((KwCb *gCb,
+uint8_t rlcDbmFetchUlUeCb ARGS ((RlcCb *gCb,
                                    CmLteRnti ueId,
                                    CmLteCellId cellId,
-                                   KwUlUeCb **ueCb));
+                                   RlcUlUeCb **ueCb));
 
-EXTERN Void kwDbmDelUlUeCb ARGS ((KwCb *gCb,   
-                                  KwUlUeCb *ueCb,
+Void rlcDbmDelUlUeCb ARGS ((RlcCb *gCb,   
+                                  RlcUlUeCb *ueCb,
                                   Bool abortFlag));
 
-EXTERN Void kwDbmDelAllUlUe ARGS ((KwCb *gCb));
+Void rlcDbmDelAllUlUe ARGS ((RlcCb *gCb));
 
-EXTERN S16 kwDbmAddUlCellCb ARGS ((KwCb *gCb,
+S16 rlcDbmAddUlCellCb ARGS ((RlcCb *gCb,
                                       CmLteCellId cellId,
-                                      KwUlCellCb *cellCb));
+                                      RlcUlCellCb *cellCb));
 
-EXTERN Void kwDbmFetchUlCellCb ARGS ((KwCb *gCb, 
+Void rlcDbmFetchUlCellCb ARGS ((RlcCb *gCb, 
                                       CmLteCellId cellId,
-                                      KwUlCellCb **cellCb));
+                                      RlcUlCellCb **cellCb));
 
-EXTERN Void kwDbmDelUlCellCb ARGS ((KwCb *gCb,  
-                                   KwUlCellCb *cellCb));
+Void rlcDbmDelUlCellCb ARGS ((RlcCb *gCb,  
+                                   RlcUlCellCb *cellCb));
 
-EXTERN Void kwDbmDelAllUlCell ARGS ((KwCb *gCb));
+Void rlcDbmDelAllUlCell ARGS ((RlcCb *gCb));
 
-EXTERN Void kwDbmFetchUlRbCbByRbId ARGS ((KwCb *gCb, 
+Void rlcDbmFetchUlRbCbByRbId ARGS ((RlcCb *gCb, 
                                           CmLteRlcId *rlcId, 
-                                          KwUlRbCb **rbCb));
+                                          RlcUlRbCb **rbCb));
 
-EXTERN Void kwDbmFetchUlRbCbFromLchId ARGS ((KwCb *gCb, 
+Void rlcDbmFetchUlRbCbFromLchId ARGS ((RlcCb *gCb, 
                                              CmLteRnti ueId, 
                                              CmLteCellId cellId, 
                                              CmLteLcId lcId,  
-                                             KwUlRbCb **rbCb));
+                                             RlcUlRbCb **rbCb));
 
-EXTERN Void kwDbmDelAllUlRb ARGS ((KwCb *gCb, 
-                                   KwUlRbCb **rbCbLst, 
-                                   U8 numRbCb));
+Void rlcDbmDelAllUlRb ARGS ((RlcCb *gCb, 
+                                   RlcUlRbCb **rbCbLst, 
+                                   uint8_t numRbCb));
 
-EXTERN S16 kwDbmAddUlTransaction ARGS((KwCb *gCb, KwUlCfgTmpData *cfg));
+S16 rlcDbmAddUlTransaction ARGS((RlcCb *gCb, RlcUlCfgTmpData *cfg));
 
-EXTERN S16 kwDbmFindUlTransaction ARGS((KwCb *gCb, 
-                                        U32 transId, 
-                                        KwUlCfgTmpData **cfg));
+S16 rlcDbmFindUlTransaction ARGS((RlcCb *gCb, 
+                                        uint32_t transId, 
+                                        RlcUlCfgTmpData **cfg));
 
-EXTERN S16 kwDbmDelUlTransaction ARGS((KwCb *gCb, KwUlCfgTmpData *cfg));
+S16 rlcDbmDelUlTransaction ARGS((RlcCb *gCb, RlcUlCfgTmpData *cfg));
 
-EXTERN S16 kwDbmDelAllUlTransactions ARGS((KwCb *gCb));
+S16 rlcDbmDelAllUlTransactions ARGS((RlcCb *gCb));
 
-EXTERN Void kwDbmUlShutdown ARGS ((KwCb *gCb));
+Void rlcDbmUlShutdown ARGS ((RlcCb *gCb));
 
 /****************************************************************************
  *                    Transparent Mode Functions 
  ***************************************************************************/
 #ifdef CCPU_OPT
-EXTERN PUBLIC Void kwTmmRcvFrmLi ARGS ((KwCb *gCb, 
-                                       KwUlRbCb *rbCb,
-                                       CmLteRnti tCrnti, 
-                                       Buffer *pdu));
-#else /* CCPU_OPT */
-EXTERN PUBLIC Void kwTmmRcvFrmLi ARGS ((KwCb *gCb,
-                                       KwUlRbCb *rbCb,
-                                       Buffer *pdu));
-#endif /* CCPU_OPT */
-
-EXTERN Void kwTmmUlReEstablish ARGS ((KwCb *gCb, KwUlRbCb *rbCb));
+void rlcTmmRcvFrmMac ARGS ((RlcCb *gCb,
+                            RlcUlRbCb *rbCb,
+                           CmLteRnti   tCrnti,
+                            Buffer *pdu));
+
+#else
+void rlcTmmRcvFrmMac ARGS ((RlcCb *gCb,
+                            RlcUlRbCb *rbCb,
+                            Buffer *pdu));
+#endif                                
+
+Void rlcTmmUlReEstablish ARGS ((RlcCb *gCb, RlcUlRbCb *rbCb));
 
 /****************************************************************************
  *                    Unacknowledged Mode Functions 
  ***************************************************************************/
 #ifdef LTE_L2_MEAS
-EXTERN Void kwUmmProcessPdus ARGS((KwCb *gCb,
-                                  KwUlRbCb *rbCb, 
+Void rlcUmmProcessPdus ARGS((RlcCb *gCb,
+                                  RlcUlRbCb *rbCb, 
                                   KwPduInfo *pduInfo,
-                                  U32 ttiCnt));
+                                  uint32_t ttiCnt));
 #else 
-EXTERN Void kwUmmProcessPdus ARGS ((KwCb *gCb, 
-                                    KwUlRbCb *rbCb,
+Void rlcUmmProcessPdus ARGS ((RlcCb *gCb, 
+                                    RlcUlRbCb *rbCb,
                                     KwPduInfo *pduInfo));
 #endif 
-EXTERN Void kwUmmUlReEstablish ARGS ((KwCb *gCb, 
+Void rlcUmmUlReEstablish ARGS ((RlcCb *gCb, 
                                      CmLteRlcId *rlcId, 
-                                     KwUlRbCb *rbCb));
+                                     RlcUlRbCb *rbCb));
 
-EXTERN Void kwUmmReOrdTmrExp ARGS((KwCb *gCb, KwUlRbCb  *rbCb));
+Void rlcUmmReAsmblTmrExp ARGS((RlcCb *gCb, RlcUlRbCb  *rbCb));
 
 
-EXTERN Void kwUmmFreeUlRbCb ARGS ((KwCb *gCb, KwUlRbCb *rbCb)); 
+Void rlcUmmFreeUlRbCb ARGS ((RlcCb *gCb, RlcUlRbCb *rbCb)); 
 
 /****************************************************************************
  *                    Acknowledged Mode Functions 
  ***************************************************************************/
-EXTERN Void kwAmmUlReEstablish ARGS((KwCb *gCb, 
+Void rlcAmmUlReEstablish ARGS((RlcCb *gCb, 
                                      CmLteRlcId rlcId, 
                                      Bool sndReEst,
-                                     KwUlRbCb *rbCb));
+                                     RlcUlRbCb *rbCb));
 #ifdef LTE_L2_MEAS
-EXTERN Void kwAmmProcessPdus ARGS((KwCb *gCb,
-                                  KwUlRbCb *rbCb, 
+Void rlcAmmProcessPdus ARGS((RlcCb *gCb,
+                                  RlcUlRbCb *rbCb, 
                                   KwPduInfo *pduInfo,
-                                  U32 ttiCnt));
+                                  uint32_t ttiCnt));
 #else
-EXTERN Void kwAmmProcessPdus ARGS((KwCb *gCb, 
-                                  KwUlRbCb *rbCb,
+Void rlcAmmProcessPdus ARGS((RlcCb *gCb, 
+                                  RlcUlRbCb *rbCb,
                                   KwPduInfo *pduInfo));
 #endif 
 
-EXTERN Void kwAmmReOrdTmrExp ARGS((KwCb *gCb, KwUlRbCb *rbCb));
+Void rlcAmmReOrdTmrExp ARGS((RlcCb *gCb, RlcUlRbCb *rbCb));
 
-EXTERN Void kwAmmStaProTmrExp ARGS((KwCb *gCb, KwUlRbCb *rbCb));
+Void rlcAmmStaProTmrExp ARGS((RlcCb *gCb, RlcUlRbCb *rbCb));
 
-EXTERN Void kwAmmFreeUlRbCb ARGS ((KwCb *gCb, KwUlRbCb *rbCb));
+Void rlcAmmFreeUlRbCb ARGS ((RlcCb *gCb, RlcUlRbCb *rbCb));
 
 /****************************************************************************
  *                    Utility Functions 
  ***************************************************************************/
-EXTERN Void kwUtlStoreRecBuf ARGS ((CmLListCp        *recBufLst,
-                                    KwAmRecBuf       *recBuf,
-                                    KwSn              sn
+
+void rlcUtlStoreUmRecBuf ARGS ((CmLListCp   *recBufLst,
+                                RlcUmRecBuf *recBuf,
+                                RlcSn        sn
+                              ));
+RlcUmRecBuf* rlcUtlGetUmRecBuf ARGS ((CmLListCp        *recBufLst,
+                                      RlcSn              sn
+                                    ));
+void rlcUtlDelUmRecBuf(RlcCb *gCb, CmLListCp *recBufLst, RlcUmRecBuf  *recBuf);
+
+Void rlcUtlStoreRecBuf ARGS ((CmLListCp        *recBufLst,
+                                    RlcAmRecBuf       *recBuf,
+                                    RlcSn              sn
                                    ));
-EXTERN KwAmRecBuf* kwUtlGetRecBuf ARGS ((CmLListCp        *recBufLst,
-                                  KwSn              sn
+RlcAmRecBuf* rlcUtlGetRecBuf ARGS ((CmLListCp        *recBufLst,
+                                  RlcSn              sn
                                   ));
-EXTERN Void kwUtlDelRecBuf ARGS ((CmLListCp        *recBufLst,
-                                  KwAmRecBuf       *recBuf,
-                                  KwCb              *gCb
+Void rlcUtlDelRecBuf ARGS ((CmLListCp        *recBufLst,
+                                  RlcAmRecBuf       *recBuf,
+                                  RlcCb              *gCb
                                   ));
 
-EXTERN S16 kwUtlRcvFrmLi ARGS ((KwCb *gCb, KwDatIndInfo *datIndInfo));
+uint8_t rlcUtlRcvFrmMac ARGS ((RlcCb *gCb, KwDatIndInfo *datIndInfo));
 
-EXTERN S16 kwUtlSndDatInd ARGS ((KwCb *gCb,KwUlRbCb *rbCb, Buffer *sdu));
+uint8_t rlcUtlSendUlDataToDu ARGS ((RlcCb *gCb,RlcUlRbCb *rbCb, Buffer *sdu));
 
 #ifdef LTE_L2_MEAS
-EXTERN S16 kwUtlHdlL2TmrExp   ARGS (( KwCb *gCb, KwL2MeasEvtCb *measEvtCb));
+S16 rlcUtlHdlL2TmrExp   ARGS (( RlcCb *gCb, RlcL2MeasEvtCb *measEvtCb));
 
-EXTERN  Void kwUtlCalUlIpThrPutIncTTI ARGS ((KwCb *gCb, 
-                                             KwUlRbCb  *rbCb,
-                                             U32 ttiCnt));
+Void rlcUtlCalUlIpThrPutIncTTI ARGS ((RlcCb *gCb, 
+                                             RlcUlRbCb  *rbCb,
+                                             uint32_t ttiCnt));
 
-EXTERN Void kwUtlCalUlIpThrPut ARGS((KwCb *gCb, 
-                                     KwUlRbCb *rbCb, 
+Void rlcUtlCalUlIpThrPut ARGS((RlcCb *gCb, 
+                                     RlcUlRbCb *rbCb, 
                                      Buffer *pdu, 
-                                     U32 ttiCnt));
+                                     uint32_t ttiCnt));
 
-EXTERN S16 kwUtlSndUlL2MeasCfm  ARGS ((KwCb *gCb, KwL2MeasEvtCb *measEvtCb));
+S16 rlcUtlSndUlL2MeasCfm  ARGS ((RlcCb *gCb, RlcL2MeasEvtCb *measEvtCb));
 
-EXTERN S16 kwUtlSndUlL2MeasNCfm ARGS ((KwCb *gCb, 
-                                       KwL2MeasReqEvt *measReqEvt,
-                                       KwL2MeasCfmEvt *measCfmEvt));
+S16 rlcUtlSndUlL2MeasNCfm ARGS ((RlcCb *gCb, 
+                                       RlcL2MeasReqEvt *measReqEvt,
+                                       RlcL2MeasCfmEvt *measCfmEvt));
 
-EXTERN S16 kwUtlL2MeasUlInit ARGS((KwCb *gCb));
+S16 rlcUtlL2MeasUlInit ARGS((RlcCb *gCb));
 
-EXTERN Void kwUtlResetUlL2MeasInKwRb ARGS((KwCb *gCb,
-                                           KwL2MeasCb *measCb,
-                                           U8 measType));
+Void rlcUtlResetUlL2MeasInRlcRb ARGS((RlcCb *gCb,
+                                           RlcL2MeasCb *measCb,
+                                           uint8_t measType));
 
-EXTERN S16 kwUtlValidateIpThL2Meas ARGS ((KwL2MeasReqEvt *measReqEvt,
-         KwL2MeasCfmEvt *measCfmEvt));
+S16 rlcUtlValidateIpThL2Meas ARGS ((RlcL2MeasReqEvt *measReqEvt,
+         RlcL2MeasCfmEvt *measCfmEvt));
 
 #endif /*  LTE_L2_MEAS */
 /****************************************************************************
  *                    Activation Functions 
  ***************************************************************************/
-EXTERN S16 kwUlActvInit ARGS ((Ent ent, 
+S16 rlcUlActvInit ARGS ((Ent ent, 
                                Inst inst, 
                                Region region, 
                                Reason reason));
 
-EXTERN S16 kwUlActvTsk ARGS ((Pst *pst, Buffer *mBuf));
+S16 rlcUlActvTsk ARGS ((Pst *pst, Buffer *mBuf));
 
 /****************************************************************************
  *                    Debug Functions 
  ***************************************************************************/
-EXTERN Void DumpRLCUlDebugInformation ARGS((Void));
+Void DumpRLCUlDebugInformation ARGS((Void));
+
+uint8_t rlcProcCommLcUlData(Pst *pst, SuId suId, RguCDatIndInfo  *datInd);
+uint8_t rlcProcDedLcUlData(Pst *pst, SuId suId, RguDDatIndInfo  *datInd);
 
 #ifdef __cplusplus
 }