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 */
+ Buffer *pduBuf; /*!< RLC PDU buffer */
+}RlcMacPduInfo;
+
+typedef struct rlcMacData
+{
+ CmLteTimingInfo timeToTx; /*!< Air interface time */
+ CmLteCellId cellId; /*!< CELL ID */
+ CmLteRnti rnti; /*!< Temporary CRNTI */
+ U8 nmbPdu; /*!< Number of RLC PDUs */
+ RlcMacPduInfo pduInfo[RGU_MAX_PDU];
+}RlcMacData;
+
+
/***********************************************************************
type definitions for upper layer interface - RLC primitives
***********************************************************************/
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((
typedef S16 (*RguDDatInd) ARGS((
Pst* pst,
SuId suId,
- RguDDatIndInfo * datInd));
+ RguDDatIndInfo *datInd));
+
+typedef S16 (*RlcMacUlData) ARGS((
+ Pst* pst,
+ SuId suId,
+ RlcMacData *ulData));
/** @brief Status Response from RLC to MAC to
* inform the BO report for common channels */
typedef S16 (*RguCStaRsp) 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((
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,
* @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.
* @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.
));
/** @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 S16 RlcMacProcUlData ARGS((
+ Pst* pst,
+ SuId suId,
+ RlcMacData *ulData
+));
+
/** @brief Data Indication from MAC to RLC to
* forward the data received for common channels*/
EXTERN S16 KwLiRguCDatInd ARGS((
));
/** @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.
));
/** @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
));
));
/** @brief Data Indication from MAC to RLC to
* forward the data received for dedicated channels*/
-EXTERN S16 cmPkRguDDatInd ARGS((
+EXTERN S16 packRcvdUlData 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 S16 unpackRcvdUlData ARGS((
+ RlcMacUlData func,
Pst* pst,
Buffer *mBuf
));
));
/** @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
));
* 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,
* 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
));
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
));
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((
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
));