Initial commit
[o-du/l2.git] / src / 5gnrrlc / kw_udx.x
diff --git a/src/5gnrrlc/kw_udx.x b/src/5gnrrlc/kw_udx.x
new file mode 100755 (executable)
index 0000000..a97ca49
--- /dev/null
@@ -0,0 +1,308 @@
+/*******************************************************************************
+################################################################################
+#   Copyright (c) [2017-2019] [Radisys]                                        #
+#                                                                              #
+#   Licensed under the Apache License, Version 2.0 (the "License");            #
+#   you may not use this file except in compliance with the License.           #
+#   You may obtain a copy of the License at                                    #
+#                                                                              #
+#       http://www.apache.org/licenses/LICENSE-2.0                             #
+#                                                                              #
+#   Unless required by applicable law or agreed to in writing, software        #
+#   distributed under the License is distributed on an "AS IS" BASIS,          #
+#   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.   #
+#   See the License for the specific language governing permissions and        #
+#   limitations under the License.                                             #
+################################################################################
+*******************************************************************************/
+
+/**********************************************************************
+    Name:   LTE RLC layer
+    Type:   C include file
+    Desc:   Defines required by LTE MAC
+    File:   kw_udx.x
+**********************************************************************/
+/** @file kw_udx.x
+@brief This file contains basic data structures for the Uplink Downlink 
+interface.
+*/
+#ifndef __UDX_X__
+#define __UDX_X__
+
+#include "ckw.h"
+#include "ckw.x"
+
+#ifdef __cplusplus
+extern "C" {
+#endif /* __cplusplus */
+
+typedef struct kwNackInfo
+{
+   U8 nackRange;
+   U8 isSegment;
+   U32 sn;      /*!< Nack Sn */
+   U16 soStart; /*!< Segment offset start */
+   U16 soEnd;   /*!< Segment offset End */
+}KwNackInfo;
+
+typedef struct kwUdxStaPdu
+{
+   U32 ackSn;
+   /* TODO : KW_MAX_NACK_CNT should set to MAx SR delay 
+      It is tradeoff to consider array based instead of dynamic
+      as there are chances where we might loose Status information
+      on spill over*/
+   U8 nackCnt;         /* Cnt of Nacks in the array*/
+   KwNackInfo nackInfo[KW_MAX_NACK_CNT];
+}KwUdxStaPdu;
+
+typedef struct kwUdxBufLst
+{
+   CmLListCp rlsTxLst;      /*!< Stores to be released Tx PDUs */
+   CmLListCp rlsRetxLst;    /*!< Stores to be released Retx PDUs */
+   CmLListCp rlsSduLst;     /*!< Stores to be released SDUs*/
+}KwUdxBufLst;
+
+typedef struct kwStatusPdu
+{
+   U32         ackSn;
+   KwNackInfo  nackInfo[KW_MAX_NACK_CNT];
+   U16         nackCount;
+   U16         controlBo;
+}KwUdxDlStaPdu;
+/* ### Umapathi*/
+
+/**
+  * @brief
+  * UDX APIs
+  */
+typedef S16 (*UdxBndCfm) ARGS((Pst* pst, SuId suId,U8  status ));
+
+typedef S16 (*UdxBndReq) ARGS((Pst* pst, SuId suId,SpId  spId ));
+
+typedef S16 (*UdxUbndReq) ARGS((Pst* pst, SuId suId,Reason reason));
+
+typedef S16 (*UdxCfgReq) ARGS((Pst *pst, SpId spId, CkwCfgInfo *cfgInfo));
+
+typedef S16 (*UdxCfgCfm) ARGS((Pst* pst,SuId suId,CkwCfgCfmInfo *cfmInfo));
+
+typedef S16 (*UdxStaUpdReq) ARGS((Pst* pst,
+                                  SpId spId,
+                                  CmLteRlcId *rlcId,
+                                  KwUdxStaPdu *pStaPdu ));
+
+typedef S16 (*UdxUeIdChgReq) ARGS((Pst *pst, 
+                                   SpId spId, 
+                                   U32 transId, 
+                                   CkwUeInfo *ueInfo, 
+                                   CkwUeInfo *newUeInfo));
+
+typedef S16 (*UdxUeIdChgCfm) ARGS((Pst *pst, 
+                                   SuId suId, 
+                                   U32 transId, 
+                                   CmStatus status));
+
+typedef S16 (*UdxStaUpdCfm) ARGS((Pst* pst,
+                                  SuId  suId,
+                                  CmLteRlcId *rlcId,
+                                  KwUdxBufLst *pBufLst));
+
+typedef S16 (*UdxStaPduReq) ARGS((Pst* pst,
+                                  SpId  spId, 
+                                  CmLteRlcId *rlcId,
+                                  KwUdxDlStaPdu *pStaPdu));
+
+typedef S16 (*UdxStaProhTmrStart) ARGS((Pst* pst,
+                                         SuId  suId,
+                                         CmLteRlcId  *rlcId));
+
+#ifdef LTE_L2_MEAS
+typedef S16 (*UdxL2MeasReq) ARGS((Pst* pst,
+                                KwL2MeasReqEvt *measReqEvt));
+
+typedef S16 (*UdxL2MeasSendReq) ARGS((Pst* pst,
+                                    U8 measType));
+
+typedef S16 (*UdxL2MeasStopReq) ARGS((Pst* pst,
+                                    U8 measType));
+#endif
+
+#ifdef LCUDX
+EXTERN S16 cmPkUdxBndCfm ARGS((Pst* pst, SuId suId,U8  status ));
+EXTERN S16 cmPkUdxBndReq ARGS((Pst* pst, SuId suId,SpId  spId ));
+EXTERN S16 cmPkUdxUbndReq ARGS((Pst* pst, SuId suId,Reason reason));
+EXTERN S16 cmPkUdxCfgReq ARGS((Pst *pst, SpId spId, CkwCfgInfo *cfgInfo));
+EXTERN S16 cmPkUdxCfgCfm ARGS(( Pst* pst,SuId suId,CkwCfgCfmInfo *cfmInfo));
+EXTERN S16 cmPkUdxStaUpdReq ARGS((Pst* pst,SpId spId,CmLteRlcId *rlcId,
+                               KwUdxStaPdu         *pStaPdu ));
+EXTERN S16 cmPkUdxUeIdChgReq ARGS((Pst *pst, SpId spId, U32 transId, 
+                                  CkwUeInfo *ueInfo, CkwUeInfo *newUeInfo));
+EXTERN S16 cmPkUdxUeIdChgCfm ARGS((Pst *pst, SuId suId, U32 transId, 
+                                   CmStatus status));
+
+
+EXTERN S16 cmPkUdxStaUpdCfm ARGS((Pst* pst,SuId  suId,CmLteRlcId  *rlcId,
+                             KwUdxBufLst  *pBufLst));
+
+EXTERN S16 cmPkUdxStaPduReq ARGS(( Pst* pst,SpId  spId, CmLteRlcId *rlcId,
+                             KwUdxDlStaPdu  *pStaPdu ));
+EXTERN S16 cmPkUdxStaProhTmrStart ARGS((Pst *pst, 
+                                        SpId spId, 
+                                        CmLteRlcId *rlcId));
+
+#ifdef LTE_L2_MEAS
+EXTERN S16 cmPkUdxL2MeasReq ARGS((Pst *pst, KwL2MeasReqEvt *measReqEvt)); 
+EXTERN S16 cmPkUdxL2MeasSendReq ARGS((Pst *pst, U8 measType)); 
+EXTERN S16 cmPkUdxL2MeasStopReq ARGS((Pst *pst, U8 measType)); 
+#endif
+
+EXTERN S16 cmUnpkUdxBndCfm ARGS((UdxBndCfm func,Pst* pst, Buffer *mBuf ));
+EXTERN S16 cmUnpkUdxBndReq ARGS((UdxBndReq func,Pst* pst, Buffer *mBuf ));
+EXTERN S16 cmUnpkUdxUbndReq ARGS((UdxUbndReq func,Pst* pst, Buffer *mBuf));
+EXTERN S16 cmUnpkUdxCfgReq ARGS((UdxCfgReq func,Pst *pst, Buffer *mBuf));
+EXTERN S16 cmUnpkUdxCfgCfm ARGS((UdxCfgCfm func , Pst* pst,Buffer *mBuf));
+EXTERN S16 cmUnpkUdxStaUpdReq ARGS((UdxStaUpdReq func,Pst* pst,Buffer *mBuf));
+EXTERN S16 cmUnpkUdxUeIdChgReq ARGS((UdxUeIdChgReq func,Pst *pst, Buffer *mBuf)); 
+EXTERN S16 cmUnpkUdxUeIdChgCfm ARGS((UdxUeIdChgCfm func,Pst *pst, Buffer *mBuf)); 
+
+EXTERN S16 cmUnpkUdxStaUpdCfm ARGS((UdxStaUpdCfm func,Pst* pst,Buffer *mBuf));
+
+EXTERN S16 cmUnpkUdxStaPduReq ARGS((UdxStaPduReq func, Pst* pst, Buffer *mBuf));
+
+EXTERN S16 cmUnpkUdxStaProhTmrStart ARGS((UdxStaProhTmrStart func,
+                                          Pst* pst,
+                                          Buffer *mBuf));
+
+#ifdef LTE_L2_MEAS
+EXTERN S16 cmUnpkUdxL2MeasReq ARGS((UdxL2MeasReq func, Pst* pst, Buffer *mBuf));
+EXTERN S16 cmUnpkUdxL2MeasSendReq ARGS((UdxL2MeasSendReq func, Pst* pst, Buffer *mBuf));
+EXTERN S16 cmUnpkUdxL2MeasStopReq ARGS((UdxL2MeasStopReq func, Pst* pst, Buffer *mBuf));
+#endif
+#endif
+
+#ifdef KW
+EXTERN S16 KwUlUdxBndReq ARGS((Pst* pst, SuId suId, SpId spId));
+
+EXTERN S16 KwDlUdxBndReq ARGS((Pst* pst, SuId suId, SpId spId));
+
+EXTERN S16 KwDlUdxBndCfm ARGS((Pst* pst, SuId suId, U8 status));
+
+EXTERN S16 KwUlUdxBndCfm ARGS((Pst* pst, SuId suId, U8 status));
+
+EXTERN S16 KwDlUdxCfgCfm ARGS((Pst* pst, SuId suId, CkwCfgCfmInfo *cfmInfo));
+
+EXTERN S16 KwUlUdxCfgCfm ARGS((Pst* pst, SuId suId, CkwCfgCfmInfo *cfmInfo));
+
+EXTERN S16 KwDlUdxUeIdChgCfm ARGS((Pst *pst, 
+                                   SuId suId, 
+                                   U32 transId,  
+                                   CmStatus status));
+
+EXTERN S16 KwUlUdxUeIdChgCfm ARGS((Pst *pst, 
+                                   SuId suId, 
+                                   U32 transId, 
+                                   CmStatus status));
+
+EXTERN S16 KwUlUdxUbndReq ARGS((Pst* pst, SuId suId, Reason reason));
+
+EXTERN S16 KwDlUdxUbndReq ARGS((Pst* pst, SuId suId, Reason reason));
+
+EXTERN S16 KwUlUdxUeIdChgReq ARGS((Pst *pst, 
+                                   SpId spId, 
+                                   U32 transId, 
+                                   CkwUeInfo *ueInfo, 
+                                   CkwUeInfo *newUeInfo));
+
+EXTERN S16 KwUlUdxCfgReq ARGS((Pst *pst, SpId spId, CkwCfgInfo *cfgInfo));
+
+EXTERN S16 KwDlUdxCfgReq ARGS((Pst *pst, SpId spId, CkwCfgInfo *cfgInfo));
+
+EXTERN S16 KwUlUdxStaUpdReq ARGS((Pst* pst,
+                                  SpId spId,
+                                  CmLteRlcId *rlcId,
+                                  KwUdxStaPdu *pStaPdu));
+
+EXTERN S16 KwDlUdxStaUpdReq ARGS((Pst* pst,
+                                  SpId spId,
+                                  CmLteRlcId *rlcId,
+                                  KwUdxStaPdu *pStaPdu));
+
+EXTERN S16 KwDlUdxStaUpdCfm ARGS((Pst* pst,
+                                  SuId suId,
+                                  CmLteRlcId *rlcId,
+                                  KwUdxBufLst *pBufLst));
+
+EXTERN S16 KwUlUdxStaUpdCfm ARGS((Pst* pst,
+                                  SuId suId,
+                                  CmLteRlcId *rlcId,
+                                  KwUdxBufLst *pBufLst));
+
+EXTERN S16 KwUlUdxStaPduReq ARGS((Pst *pst,
+                                  SpId spId,
+                                  CmLteRlcId *rlcId,
+                                  KwUdxDlStaPdu *pStaPdu ));
+
+EXTERN S16 KwDlUdxStaPduReq ARGS((Pst *pst,
+                                  SpId spId,
+                                  CmLteRlcId *rlcId,
+                                  KwUdxDlStaPdu *pStaPdu));
+
+EXTERN S16 KwDlUdxUeIdChgReq ARGS((Pst *pst, 
+                                   SpId spId, 
+                                   U32 transId, 
+                                   CkwUeInfo *ueInfo, 
+                                   CkwUeInfo *newUeInfo));
+
+EXTERN S16 KwDlUdxCfgReq ARGS((Pst *pst, SpId spId, CkwCfgInfo *cfgInfo));
+
+
+EXTERN S16 KwUlUdxStaUpdCfm ARGS((Pst* pst,
+                                  SuId suId,
+                                  CmLteRlcId *rlcId,
+                                  KwUdxBufLst *pBufLst));
+
+EXTERN S16 KwDlUdxStaPduReq ARGS((Pst *pst,
+                                  SpId spId,
+                                  CmLteRlcId *rlcId,
+                                  KwUdxDlStaPdu *pStaPdu));
+
+EXTERN S16 KwUlUdxStaProhTmrStart ARGS((Pst *pst,
+                                        SpId spId,
+                                        CmLteRlcId *rlcId ));
+
+EXTERN S16 KwDlUdxStaProhTmrStart ARGS((Pst *pst,
+                                        SpId spId,
+                                        CmLteRlcId *rlcId ));
+
+#ifdef LTE_L2_MEAS
+EXTERN S16 KwDlUdxL2MeasReq ARGS((Pst *pst, KwL2MeasReqEvt *measReqEvt)); 
+
+EXTERN S16 KwDlUdxL2MeasSendReq ARGS((Pst *pst, U8 status)); 
+
+EXTERN S16 KwDlUdxL2MeasStopReq ARGS((Pst *pst, U8 status)); 
+
+EXTERN S16 KwUlUdxL2MeasReq ARGS((Pst* pst, KwL2MeasReqEvt *measReqEvt));
+
+EXTERN S16 KwUlUdxL2MeasSendReq ARGS((Pst *pst, U8 status));
+
+EXTERN S16 KwUlUdxL2MeasStopReq ARGS((Pst* pst, U8 measType));
+#endif
+
+#endif
+
+#ifdef __cplusplus
+}
+#endif /* __cplusplus */
+#endif /* __UDX_X__ */
+
+
+/**********************************************************************
+         End of file
+**********************************************************************/