Enabled timer at MAC and SCH [Issue-ID: ODUHIGH-283]
[o-du/l2.git] / src / 5gnrrlc / kw_ul.x
index e57dae2..f2e4e73 100755 (executable)
@@ -42,7 +42,6 @@ extern "C" {
 
 typedef struct rlcUlUeCb RlcUlUeCb;
 
-#ifdef NR_RLC_UL
 /** 
  * @brief  Structure to hold a RLC UM PDU segment
  *
@@ -63,10 +62,6 @@ typedef struct rlcUmSeg
    uint16_t  soEnd;    /*!< Segment Offset End */
    RlcUmHdr  umHdr;    /*!<Um Header */
 }RlcUmSeg;
-#endif
-
-/** @defgroup um_uplink UM Uplink Module
-*/
 
 /** 
  * @brief  Structure to hold a  UM PDU
@@ -78,7 +73,6 @@ typedef struct rlcUmSeg
 */
 typedef struct rlcUmRecBuf
 {
-#ifdef NR_RLC_UL
    RlcSn       sn;            /*!< Sequence Number */
    CmLList     lnk;           /*!< Link to the receive buffer list */
    Bool        allSegRcvd;    /*!< Flag to check whether all seg are received */
@@ -87,10 +81,9 @@ typedef struct rlcUmRecBuf
    uint16_t    expSo;         /*!< Next expected seg offset */
    Bool        allRcvd;       /*!< All bytes received or not */
    RlcUmSeg    *expByteSeg;   /*!< Next expected byte segment */
-#endif
-   Buffer    *pdu;    /**< Buffer holding the UM PDU */
-   RlcUmHdr   umHdr;   /**< UM PDU Header Information */
-   MsgLen    pduSz;   /**< PDU Size */
+   Buffer      *pdu;          /**< Buffer holding the UM PDU */
+   RlcUmHdr    umHdr;         /**< UM PDU Header Information */
+   MsgLen      pduSz;         /**< PDU Size */
 }RlcUmRecBuf;
 
 /** 
@@ -108,22 +101,19 @@ typedef struct rlcUmRecBuf
 */
 typedef struct rlcUmUl
 {
-   uint8_t           snLen;         /**< Sequence number length */
-   uint8_t           reOrdTmrInt;   /**< Timer Interval */
-#ifdef NR_RLC_UL
-   CmLListCp    *recBufLst;         /*!<Reception Buffer List */
-#endif
-   RlcUmRecBuf   **recBuf;      /**< Reception buffer */
+   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      reOrdTmr;      /**< Reordering Timer */
-   Buffer       *assembleSdu;   /**< Assemble Sdu - Remains till the complete SDU is received */
-   uint16_t     expSo;         /*!< Expected SO for reassembly */
-   RlcSn        expSn;         /*!< Expected Sn */
+   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;
 /*@}*/
 
@@ -174,6 +164,7 @@ typedef struct rlcAmRecBuf
    uint16_t    expSo;         /**< Next expected seg offset */
    Bool        allRcvd;       /**< All bytes received or not */
    Bool        isDelvUpperLayer; /**< Is it sent to upper layer */ 
+   Bool        noMissingSeg;  /*!< Flag to check all the bytes are received before the last byte of segment */
 }RlcAmRecBuf;
 
 /** @addtogroup ammode */
@@ -196,8 +187,8 @@ typedef struct rlcAmRecBuf
  *    - expSo            : The expected SO for reassembly
  *    - staProhTmr       : The Status Probihit Timer
  *    - staProhTmrInt    : Status Prohibit Timer interval (in ??)
- *    - reOrdTmr         : The Reordering Timer
- *    - reOrdTmrInt      : Re-ordering timer interval
+ *    - reAsmblTmr         : The Reordering Timer
+ *    - reAsmblTmrInt      : Re-ordering timer interval
  *    - gatherStaPduInfo : Whether to gather information required to create 
  *                         the STATUS PDU
  *
@@ -220,8 +211,8 @@ typedef struct rlcAmUl
    uint16_t          expSo;                 /**< Expected SO for reassembly */
    CmTimer      staProhTmr;            /**< T_status_prohibit Timer */
    uint16_t          staProhTmrInt;         /**< Timer Interval */
-   CmTimer      reOrdTmr;              /**< T_reordering Timer */
-   uint8_t           reOrdTmrInt;           /**< Timer Interval */
+   CmTimer      reAsmblTmr;              /**< T_reordering Timer */
+   uint8_t           reAsmblTmrInt;           /**< Timer Interval */
    Bool         gatherStaPduInfo;      /**< Gather STATUS PDU creation info*/
    Bool         isOutOfSeq;            /**< To identify whether packets are Out-Of-Seq or not */
    uint8_t           snLen;                 /*!< Sequence number length:12 bit or 18 bit : 5GNR RLC */
@@ -544,7 +535,7 @@ Void rlcUmmUlReEstablish ARGS ((RlcCb *gCb,
                                      CmLteRlcId *rlcId, 
                                      RlcUlRbCb *rbCb));
 
-Void rlcUmmReOrdTmrExp ARGS((RlcCb *gCb, RlcUlRbCb  *rbCb));
+Void rlcUmmReAsmblTmrExp ARGS((RlcCb *gCb, RlcUlRbCb  *rbCb));
 
 
 Void rlcUmmFreeUlRbCb ARGS ((RlcCb *gCb, RlcUlRbCb *rbCb)); 
@@ -567,7 +558,7 @@ Void rlcAmmProcessPdus ARGS((RlcCb *gCb,
                                   KwPduInfo *pduInfo));
 #endif 
 
-Void rlcAmmReOrdTmrExp ARGS((RlcCb *gCb, RlcUlRbCb *rbCb));
+Void rlcAmmReAsmblTmrExp ARGS((RlcCb *gCb, RlcUlRbCb *rbCb));
 
 Void rlcAmmStaProTmrExp ARGS((RlcCb *gCb, RlcUlRbCb *rbCb));
 
@@ -577,7 +568,6 @@ Void rlcAmmFreeUlRbCb ARGS ((RlcCb *gCb, RlcUlRbCb *rbCb));
  *                    Utility Functions 
  ***************************************************************************/
 
-#ifdef NR_RLC_UL                                
 void rlcUtlStoreUmRecBuf ARGS ((CmLListCp   *recBufLst,
                                 RlcUmRecBuf *recBuf,
                                 RlcSn        sn
@@ -585,8 +575,9 @@ void rlcUtlStoreUmRecBuf ARGS ((CmLListCp   *recBufLst,
 RlcUmRecBuf* rlcUtlGetUmRecBuf ARGS ((CmLListCp        *recBufLst,
                                       RlcSn              sn
                                     ));
-#endif
-void rlcUtlStoreRecBuf ARGS ((CmLListCp        *recBufLst,
+void rlcUtlDelUmRecBuf(RlcCb *gCb, CmLListCp *recBufLst, RlcUmRecBuf  *recBuf);
+
+Void rlcUtlStoreRecBuf ARGS ((CmLListCp        *recBufLst,
                                     RlcAmRecBuf       *recBuf,
                                     RlcSn              sn
                                    ));