+/*******************************************************************
+ *
+ * @brief Handles EGTP data from CU
+ *
+ * @details
+ *
+ * Function : duHdlEgtpData
+ *
+ * Functionality:
+ * Processes EGTP header and sends data to RLC
+ *
+ * @params[in] Pointer to EGTP Message
+ * @return ROK - success
+ * RFAILED - failure
+ *
+ * ****************************************************************/
+S16 duHdlEgtpDlData(EgtpMsg *egtpMsg)
+{
+ /* TODO : Extract RbId/UeID/CellID/SduId from database
+ using tunnel id in egtp header */
+
+ DU_LOG("\nDU_APP : Processing DL data");
+
+ Pst pst;
+ KwuDatReqInfo datReqInfo;
+
+#ifdef EGTP_TEST
+ datReqInfo.rlcId.rbId = RB_ID;
+ datReqInfo.rlcId.rbType = CM_LTE_DRB;
+ datReqInfo.rlcId.ueId = UE_ID;
+ datReqInfo.rlcId.cellId = NR_CELL_ID;
+
+ datReqInfo.sduId = ++sduId;
+ datReqInfo.lcType = CM_LTE_LCH_DTCH;
+#endif
+ /* Filling pst and Sending to RLC DL */
+ pst.selector = DU_SELECTOR_LWLC;
+ pst.srcEnt = ENTDUAPP;
+ pst.dstEnt = ENTKW;
+ pst.dstInst = RLC_DL_INST;
+ pst.dstProcId = DU_PROC;
+ pst.srcProcId = DU_PROC;
+ pst.region = duCb.init.region;
+
+ cmPkKwuDatReq(&pst, &datReqInfo, egtpMsg->msg);
+ return ROK;
+}
+
+/*******************************************************************
+ *
+ * @brief Handles UL data and send to CU
+ *
+ * @details
+ *
+ * Function : duHdlRlcUlData
+ *
+ * Functionality:
+ * Processes UL Data from RLC and sends to CU
+ *
+ * @params[in] Pointer to EGTP Message
+ * @return ROK - success
+ * RFAILED - failure
+ *
+ *****************************************************************/
+
+PUBLIC S16 duHdlRlcUlData(Pst *pst, KwuDatIndInfo* datInd, Buffer *mBuf)
+{
+ DU_LOG("\nDU_APP : Received UL Data at DU_APP");
+
+ /* Send UL data to CU via EGTP */
+ duSendEgtpDatInd(mBuf);
+ SPutMsg(mBuf);
+
+ return ROK;
+}
+