Jira id - ODUHIGH-227
[o-du/l2.git] / src / cm / rgu.x
index 9809516..f43567d 100755 (executable)
@@ -396,6 +396,52 @@ typedef struct rguInfoRingElem
   U8           event;
   Void         *msg;
 }RguInfoRingElem;
+
+/* Buffer occupancy status information */
+typedef struct rlcMacBOStatus
+{
+   CmLteCellId  cellId;     /*!< CELL ID */
+   CmLteRnti    rnti;       /*!< UE ID */
+   Bool         commCh;     /*!< Common or Dedicated Channel */
+   CmLteLcId    lcId;       /*!< Logical channel ID */
+   S32          bo;         /*!< Buffer occupancy reported by RLC */
+}RlcMacBOStatus;
+
+/* Schedule result report from RLC to MAC */
+typedef struct rlcMacLchSta
+{
+   Bool         commCh;     /*!<Common or Dedicated Channel */
+   RguLchStaInd lchStaInd;  /*!<Buffer size allocated for logical channel */
+}RlcMacLchSta;
+
+typedef struct rlcMacSchedRep
+{
+   CmLteTimingInfo timeToTx;  /*!< Air interface time */
+   CmLteCellId  cellId;       /*!< CELL ID */
+   CmLteRnti    rnti;         /*!< Temporary CRNTI */
+   U8           nmbLch;       /*!< Number of logical channels scheduled */
+   RlcMacLchSta lchSta[RGU_MAX_LC];  /*!< Scheduled info of logical channels */
+}RlcMacSchedRepInfo;
+
+/* UL Data i.e. RLC PDU info from RLC to MAC */
+typedef struct rlcMacPduInfo
+{
+   Bool         commCh;   /*!<Common or Dedicated Channel */
+   CmLteLcId    lcId;     /*!< Logical channel ID */
+   MsgLen       pduLen;   /*!< PDU Length */
+   uint8_t      *pduBuf;  /*!< RLC PDU buffer */
+}RlcMacPduInfo;
+
+typedef struct rlcMacData
+{  
+   CmLteCellId     cellId;       /*!< CELL ID */
+   CmLteRnti       rnti;         /*!< Temporary CRNTI */ 
+   SlotIndInfo     slotInfo;     /*!< Timing info */
+   U8              numPdu;       /*!< Number of RLC PDUs */
+   RlcMacPduInfo   pduInfo[RGU_MAX_PDU];
+}RlcMacData;
+
+
 /***********************************************************************
           type definitions for upper layer interface - RLC primitives
  ***********************************************************************/
@@ -426,7 +472,12 @@ typedef S16 (*RguCDatReq) ARGS((
 typedef S16 (*RguDDatReq) ARGS((
    Pst*                 pst,
    SpId                 spId,
-   RguDDatReqInfo  *    datReq));
+   RguDDatReqInfo       *datReq));
+
+typedef uint16_t (*RlcMacDlData) ARGS((
+   Pst*                 pst,
+   SpId                 spId,
+   RlcMacData           *dlData));
 /** @brief Data Indication from MAC to RLC to 
  * forward the data received for common channels */
 typedef S16 (*RguCDatInd) ARGS((
@@ -438,7 +489,11 @@ typedef S16 (*RguCDatInd) ARGS((
 typedef S16 (*RguDDatInd) ARGS((
    Pst*                 pst,
    SuId                 suId,
-   RguDDatIndInfo  *    datInd));
+   RguDDatIndInfo       *datInd));
+
+typedef uint8_t (*RlcMacUlDataFunc) ARGS((
+   Pst*                 pst,
+   RlcMacData           *ulData));
 /** @brief Status Response from RLC to MAC to 
  * inform the BO report for common channels */
 typedef S16 (*RguCStaRsp) ARGS((
@@ -451,6 +506,12 @@ typedef S16 (*RguDStaRsp) ARGS((
    Pst*                 pst,
    SpId                 spId,
    RguDStaRspInfo  *    staRsp));
+
+typedef uint16_t (*RlcMacBoStatus) ARGS((
+   Pst*                 pst,
+   SpId                 spId,
+   RlcMacBOStatus       *boStatus));
+
 /** @brief Status Indication from MAC to RLC  
  * as a response to the staRsp primitive from RLC */
 typedef S16 (*RguCStaInd) ARGS((
@@ -462,7 +523,12 @@ typedef S16 (*RguCStaInd) ARGS((
 typedef S16 (*RguDStaInd) ARGS((
    Pst*                 pst,
    SuId                 suId,
-   RguDStaIndInfo  *    staInd));
+   RguDStaIndInfo *    staInd));
+
+typedef uint16_t (*RlcMacSchedRep) ARGS((
+   Pst*                 pst,
+   SuId                 suId,
+   RlcMacSchedRepInfo       *schRep));
 
 typedef S16 (*RguFlowCntrlIndInfo) ARGS((
    Pst                  *pst,
@@ -526,6 +592,9 @@ EXTERN S16 RgUiRguCDatReq ARGS((Pst* pst,SpId spId,RguCDatReqInfo *datReq));
  * @return ROK/RFAILED
 */
 EXTERN S16 RgUiRguDDatReq ARGS((Pst* pst,SpId spId,RguDDatReqInfo  *datReq));
+
+EXTERN uint16_t MacRlcProcDlData(Pst* pst, SpId spId, RlcMacData *dlData);
+
 /** @brief Data Indication from MAC to RLC to 
  * forward the data received for common channels
  * @param pst Pointer to the post structure.
@@ -558,6 +627,9 @@ EXTERN S16 RgUiRguCStaRsp ARGS((Pst* pst,SpId spId,RguCStaRspInfo  *staRsp));
  * @return ROK/RFAILED
 */
 EXTERN S16 RgUiRguDStaRsp ARGS((Pst* pst,SpId spId,RguDStaRspInfo  *staRsp));
+
+EXTERN uint16_t MacRlcProcBOStatus(Pst* pst, SpId spId, RlcMacBOStatus* boStatus);
+
 /** @brief Status Indication from MAC to RLC  
  * as a response to the staRsp primitive from RLC.
  * @param pst Pointer to the post structure.
@@ -599,71 +671,88 @@ RguL2MUlThrpMeasReqInfo  *l2mUlThrpMeasReq));
 
 #ifdef KW
 /** @brief Request from RLC to MAC to bind the interface saps */
-EXTERN S16 KwLiRguBndReq ARGS((
+EXTERN S16 RlcLiRguBndReq ARGS((
    Pst*                 pst,
    SuId                 suId,
    SpId                 spId
 ));
 /** @brief Request from RLC to MAC to Unbind the interface saps */
-EXTERN S16 KwLiRguUbndReq ARGS((
+EXTERN S16 RlcLiRguUbndReq ARGS((
    Pst*                 pst,
    SpId                 spId,
    Reason               reason
 ));
 /** @brief Confirmation from MAC to RLC for the bind/Unbind 
  * request for the interface saps */
-EXTERN S16 KwLiRguBndCfm ARGS((
+EXTERN S16 RlcLiRguBndCfm ARGS((
    Pst*                 pst,
    SuId                 suId,
    U8                   status
 ));
 /** @brief Request from RLC to MAC for forwarding SDUs on common
  * channel for transmission */
-EXTERN S16 KwLiRguCDatReq ARGS((
+EXTERN S16 RlcLiRguCDatReq ARGS((
    Pst*                 pst,
    SpId                 spId,
    RguCDatReqInfo  *    datReq
 ));
 /** @brief Request from RLC to MAC for forwarding SDUs on 
  * dedicated channel for transmission */
-EXTERN S16 KwLiRguDDatReq ARGS((
+EXTERN S16 RlcMacSendDlData ARGS((
    Pst*                 pst,
    SpId                 spId,
-   RguDDatReqInfo  *    datReq
+   RlcMacData  *    datReq
 ));
+
+/** @brief Handler toprocess UL data from MAC and
+ * forwarding to appropriate common/dedicated
+ * channel's handler */
+EXTERN uint8_t RlcProcUlData ARGS((
+   Pst*           pst,
+   RlcMacData   *ulData
+));
+
 /** @brief Data Indication from MAC to RLC to 
  * forward the data received for common channels*/
-EXTERN S16 KwLiRguCDatInd ARGS((
+EXTERN S16 RlcLiRguCDatInd ARGS((
    Pst*                 pst,
    SuId                 suId,
    RguCDatIndInfo  *    datInd
 ));
 /** @brief Data Indication from MAC to RLC to 
  * forward the data received for dedicated channels*/
-EXTERN S16 KwLiRguDDatInd ARGS((
+EXTERN S16 RlcLiRguDDatInd ARGS((
    Pst*                 pst,
    SuId                 suId,
    RguDDatIndInfo  *    datInd
 ));
 /** @brief Primitive invoked from RLC to MAC to 
  * inform the BO report for common channels*/
-EXTERN S16 KwLiRguCStaRsp ARGS((
+EXTERN S16 RlcLiRguCStaRsp ARGS((
    Pst*                 pst,
    SpId                 spId,
    RguCStaRspInfo  *    staRsp
 ));
 /** @brief Primitive invoked from RLC to MAC to 
  * inform the BO report for dedicated channels*/
-EXTERN S16 KwLiRguDStaRsp ARGS((
+EXTERN S16 RlcMacSendBOStatus ARGS((
    Pst*                 pst,
    SpId                 spId,
-   RguDStaRspInfo  *    staRsp
+   RlcMacBOStatus*      boSta
+));
+
+/**@brief Primitive invoked from MAC to RLC to
+ * inform scheduling result for logical channels */
+EXTERN uint16_t RlcMacProcSchedRep ARGS((
+   Pst*                 pst,
+   SuId                 suId,
+   RlcMacSchedRepInfo       *schRep
 ));
 /** @brief Status Indication from MAC to RLC  
  * as a response to the staRsp primitive from RLC.
  * Informs RLC of the totalBufferSize and Timing Info 
  * for the transmission on common channels. */
-EXTERN S16 KwLiRguCStaInd ARGS((
+EXTERN S16 RlcLiRguCStaInd ARGS((
    Pst*                 pst,
    SuId                 suId,
    RguCStaIndInfo  *    staInd
@@ -672,7 +761,7 @@ EXTERN S16 KwLiRguCStaInd ARGS((
  * as a response to the staRsp primitive from RLC.
  * Informs RLC of the totalBufferSize and Timing Info 
  * for the transmission on dedicated channels. */
-EXTERN S16 KwLiRguDStaInd ARGS((
+EXTERN S16 RlcLiRguDStaInd ARGS((
    Pst*                 pst,
    SuId                 suId,
    RguDStaIndInfo  *    staInd
@@ -682,7 +771,7 @@ EXTERN S16 KwLiRguDStaInd ARGS((
 /** @brief HARQ Status Indication from MAC to RLC  
  * as a response to the Data Req from RLC.
  * Informs HARQ feedback for the PDU with sn. */
-EXTERN S16 KwLiRguHqStaInd ARGS((
+EXTERN S16 RlcLiRguHqStaInd ARGS((
    Pst*                 pst,
    SuId                 suId,
    RguHarqStatusInd     *harqStatusInd));
@@ -691,7 +780,7 @@ EXTERN S16 KwLiRguHqStaInd ARGS((
 /** @brief Request for measuring the timing Info for a LC from RLC to MAC  
  * When the status is ON then Timing Info for data bursts 
  * shall be captured and provided to RLC on DDatInd. */
-EXTERN S16 KwLiRguL2MUlThrpMeasReq ARGS((
+EXTERN S16 RlcLiRguL2MUlThrpMeasReq ARGS((
    Pst*                 pst,
    SpId                 spId,
    RguL2MUlThrpMeasReqInfo *l2mUlThrpMeasReq));
@@ -699,7 +788,7 @@ EXTERN S16 KwLiRguL2MUlThrpMeasReq ARGS((
 #endif /* LTE_L2_MEAS */
 
 /** @brief flowCntrl Indication from MAC to RLC  */
-EXTERN S16 KwLiRguFlowCntrlInd ARGS((
+EXTERN S16 RlcLiRguFlowCntrlInd ARGS((
 Pst              *pst, 
 SuId             suId, 
 RguFlowCntrlInd  *flowCntrlInd
@@ -761,15 +850,15 @@ EXTERN S16 cmUnpkRguCDatReq ARGS((
 ));
 /** @brief Request from RLC to MAC for forwarding SDUs on 
  * dedicated channel for transmission */
-EXTERN S16 cmPkRguDDatReq ARGS((
+EXTERN uint16_t packDlData ARGS((
    Pst*                 pst,
    SpId                 spId,
-   RguDDatReqInfo  *    datReq
+   RlcMacData      *    datReq
 ));
 /** @brief Request from RLC to MAC for forwarding SDUs on 
  * dedicated channel for transmission */
-EXTERN S16 cmUnpkRguDDatReq ARGS((
-   RguDDatReq           func,
+EXTERN S16 unpackDlData ARGS((
+   RlcMacDlData         func,
    Pst*                 pst,
    Buffer               *mBuf
 ));
@@ -789,15 +878,14 @@ EXTERN S16 cmUnpkRguCDatInd ARGS((
 ));
 /** @brief Data Indication from MAC to RLC to 
  * forward the data received for dedicated channels*/
-EXTERN S16 cmPkRguDDatInd ARGS((
+EXTERN uint8_t packRlcUlData ARGS((
    Pst*                 pst,
-   SuId                 suId,
-   RguDDatIndInfo  *    datInd
+   RlcMacData  *    ulData
 ));
 /** @brief Data Indication from MAC to RLC to 
  * forward the data received for dedicated channels*/
-EXTERN S16 cmUnpkRguDDatInd ARGS((
-   RguDDatInd           func,
+EXTERN uint8_t unpackRcvdUlData ARGS((
+   RlcMacUlDataFunc     func,
    Pst*                 pst,
    Buffer               *mBuf
 ));
@@ -817,15 +905,15 @@ EXTERN S16 cmUnpkRguCStaRsp ARGS((
 ));
 /** @brief Primitive invoked from RLC to MAC to 
  * inform the BO report for dedicated channels*/
-EXTERN S16 cmPkRguDStaRsp ARGS((
+EXTERN uint16_t packBOStatus ARGS((
    Pst*                 pst,
    SpId                 spId,
-   RguDStaRspInfo  *    staRsp
+   RlcMacBOStatus*      boStatus
 ));
 /** @brief Primitive invoked from RLC to MAC to 
  * inform the BO report for dedicated channels*/
-EXTERN S16 cmUnpkRguDStaRsp ARGS((
-   RguDStaRsp           func,
+EXTERN uint16_t unpackBOStatus ARGS((
+   RlcMacBoStatus       func,
    Pst*                 pst,
    Buffer               *mBuf
 ));
@@ -851,10 +939,10 @@ EXTERN S16 cmUnpkRguCStaInd ARGS((
  * as a response to the staRsp primitive from RLC.
  * Informs RLC of the totalBufferSize and Timing Info 
  * for the transmission on dedicated channels. */
-EXTERN S16 cmPkRguDStaInd ARGS((
+EXTERN S16 packSchedRep ARGS((
    Pst*                 pst,
    SuId                 suId,
-   RguDStaIndInfo  *    staInd
+   RlcMacSchedRepInfo   *staInd
 ));
 EXTERN S16 cmPkRguFlowCntrlInfo ARGS((
 RguFlowCntrlInd *param, 
@@ -884,8 +972,8 @@ Buffer           *mBuf
  * as a response to the staRsp primitive from RLC.
  * Informs RLC of the totalBufferSize and Timing Info 
  * for the transmission on dedicated channels. */
-EXTERN S16 cmUnpkRguDStaInd ARGS((
-   RguDStaInd           func,
+EXTERN S16 unpackSchedRep ARGS((
+   RlcMacSchedRep       func,
    Pst*                 pst,
    Buffer               *mBuf
 ));
@@ -981,12 +1069,12 @@ EXTERN S16 cmUnpkRguLchDatInd ARGS((
    RguLchDatInd         *param,
    Buffer               *mBuf
 ));
-EXTERN S16 cmPkRguDDatIndInfo ARGS((
-   RguDDatIndInfo       *param,
+EXTERN S16 packRlcMacDataInfo ARGS((
+   RlcMacData         *param,
    Buffer               *mBuf
 ));
-EXTERN S16 cmUnpkRguDDatIndInfo ARGS((
-   RguDDatIndInfo       *param,
+EXTERN S16 unpackRlcMacDataInfo ARGS((
+   RlcMacData       *param,
    Buffer               *mBuf
 ));
 
@@ -998,12 +1086,12 @@ EXTERN S16 cmUnpkRguCStaRspInfo ARGS((
    RguCStaRspInfo       *param,
    Buffer               *mBuf
 ));
-EXTERN S16 cmPkRguDStaRspInfo ARGS((
-   RguDStaRspInfo       *param,
+EXTERN S16 packBOStatusInfo ARGS((
+   RlcMacBOStatus       *param,
    Buffer               *mBuf
 ));
-EXTERN S16 cmUnpkRguDStaRspInfo ARGS((
-   RguDStaRspInfo       *param,
+EXTERN S16 unpackBOStatusInfo ARGS((
+   RlcMacBOStatus       *param,
    Buffer               *mBuf
 ));
 EXTERN S16 cmPkRguCStaIndInfo ARGS((
@@ -1022,12 +1110,12 @@ EXTERN S16 cmUnpkRguLchStaInd ARGS((
    RguLchStaInd         *param,
    Buffer               *mBuf
 ));
-EXTERN S16 cmPkRguDStaIndInfo ARGS((
-   RguDStaIndInfo       *param,
+EXTERN S16 packSchedRepInfo ARGS((
+   RlcMacSchedRepInfo   *param,
    Buffer               *mBuf
 ));
-EXTERN S16 cmUnpkRguDStaIndInfo ARGS((
-   RguDStaIndInfo       *param,
+EXTERN S16 unpackSchedRepInfo ARGS((
+   RlcMacSchedRepInfo   *param,
    Buffer               *mBuf
 ));