1 /*******************************************************************************
2 ################################################################################
3 # Copyright (c) [2017-2019] [Radisys] #
5 # Licensed under the Apache License, Version 2.0 (the "License"); #
6 # you may not use this file except in compliance with the License. #
7 # You may obtain a copy of the License at #
9 # http://www.apache.org/licenses/LICENSE-2.0 #
11 # Unless required by applicable law or agreed to in writing, software #
12 # distributed under the License is distributed on an "AS IS" BASIS, #
13 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. #
14 # See the License for the specific language governing permissions and #
15 # limitations under the License. #
16 ################################################################################
17 *******************************************************************************/
19 /**********************************************************************
25 Desc: Defines required by LTE MAC
30 **********************************************************************/
32 @brief This file contains basic data structures for the Uplink Downlink
44 #endif /* __cplusplus */
46 typedef struct kwNackInfo
50 U32 sn; /*!< Nack Sn */
51 U16 soStart; /*!< Segment offset start */
52 U16 soEnd; /*!< Segment offset End */
55 typedef struct kwUdxStaPdu
58 /* TODO : KW_MAX_NACK_CNT should set to MAx SR delay
59 It is tradeoff to consider array based instead of dynamic
60 as there are chances where we might loose Status information
62 U8 nackCnt; /* Cnt of Nacks in the array*/
63 KwNackInfo nackInfo[KW_MAX_NACK_CNT];
66 typedef struct kwUdxBufLst
68 CmLListCp rlsTxLst; /*!< Stores to be released Tx PDUs */
69 CmLListCp rlsRetxLst; /*!< Stores to be released Retx PDUs */
70 CmLListCp rlsSduLst; /*!< Stores to be released SDUs*/
73 typedef struct kwStatusPdu
76 KwNackInfo nackInfo[KW_MAX_NACK_CNT];
86 typedef S16 (*UdxBndCfm) ARGS((Pst* pst, SuId suId,U8 status ));
88 typedef S16 (*UdxBndReq) ARGS((Pst* pst, SuId suId,SpId spId ));
90 typedef S16 (*UdxUbndReq) ARGS((Pst* pst, SuId suId,Reason reason));
92 typedef S16 (*UdxCfgReq) ARGS((Pst *pst, SpId spId, CkwCfgInfo *cfgInfo));
94 typedef S16 (*UdxCfgCfm) ARGS((Pst* pst,SuId suId,CkwCfgCfmInfo *cfmInfo));
96 typedef S16 (*UdxStaUpdReq) ARGS((Pst* pst,
99 KwUdxStaPdu *pStaPdu ));
101 typedef S16 (*UdxUeIdChgReq) ARGS((Pst *pst,
105 CkwUeInfo *newUeInfo));
107 typedef S16 (*UdxUeIdChgCfm) ARGS((Pst *pst,
112 typedef S16 (*UdxStaUpdCfm) ARGS((Pst* pst,
115 KwUdxBufLst *pBufLst));
117 typedef S16 (*UdxStaPduReq) ARGS((Pst* pst,
120 KwUdxDlStaPdu *pStaPdu));
122 typedef S16 (*UdxStaProhTmrStart) ARGS((Pst* pst,
127 typedef S16 (*UdxL2MeasReq) ARGS((Pst* pst,
128 KwL2MeasReqEvt *measReqEvt));
130 typedef S16 (*UdxL2MeasSendReq) ARGS((Pst* pst,
133 typedef S16 (*UdxL2MeasStopReq) ARGS((Pst* pst,
138 EXTERN S16 cmPkUdxBndCfm ARGS((Pst* pst, SuId suId,U8 status ));
139 EXTERN S16 cmPkUdxBndReq ARGS((Pst* pst, SuId suId,SpId spId ));
140 EXTERN S16 cmPkUdxUbndReq ARGS((Pst* pst, SuId suId,Reason reason));
141 EXTERN S16 cmPkUdxCfgReq ARGS((Pst *pst, SpId spId, CkwCfgInfo *cfgInfo));
142 EXTERN S16 cmPkUdxCfgCfm ARGS(( Pst* pst,SuId suId,CkwCfgCfmInfo *cfmInfo));
143 EXTERN S16 cmPkUdxStaUpdReq ARGS((Pst* pst,SpId spId,CmLteRlcId *rlcId,
144 KwUdxStaPdu *pStaPdu ));
145 EXTERN S16 cmPkUdxUeIdChgReq ARGS((Pst *pst, SpId spId, U32 transId,
146 CkwUeInfo *ueInfo, CkwUeInfo *newUeInfo));
147 EXTERN S16 cmPkUdxUeIdChgCfm ARGS((Pst *pst, SuId suId, U32 transId,
151 EXTERN S16 cmPkUdxStaUpdCfm ARGS((Pst* pst,SuId suId,CmLteRlcId *rlcId,
152 KwUdxBufLst *pBufLst));
154 EXTERN S16 cmPkUdxStaPduReq ARGS(( Pst* pst,SpId spId, CmLteRlcId *rlcId,
155 KwUdxDlStaPdu *pStaPdu ));
156 EXTERN S16 cmPkUdxStaProhTmrStart ARGS((Pst *pst,
161 EXTERN S16 cmPkUdxL2MeasReq ARGS((Pst *pst, KwL2MeasReqEvt *measReqEvt));
162 EXTERN S16 cmPkUdxL2MeasSendReq ARGS((Pst *pst, U8 measType));
163 EXTERN S16 cmPkUdxL2MeasStopReq ARGS((Pst *pst, U8 measType));
166 EXTERN S16 cmUnpkUdxBndCfm ARGS((UdxBndCfm func,Pst* pst, Buffer *mBuf ));
167 EXTERN S16 cmUnpkUdxBndReq ARGS((UdxBndReq func,Pst* pst, Buffer *mBuf ));
168 EXTERN S16 cmUnpkUdxUbndReq ARGS((UdxUbndReq func,Pst* pst, Buffer *mBuf));
169 EXTERN S16 cmUnpkUdxCfgReq ARGS((UdxCfgReq func,Pst *pst, Buffer *mBuf));
170 EXTERN S16 cmUnpkUdxCfgCfm ARGS((UdxCfgCfm func , Pst* pst,Buffer *mBuf));
171 EXTERN S16 cmUnpkUdxStaUpdReq ARGS((UdxStaUpdReq func,Pst* pst,Buffer *mBuf));
172 EXTERN S16 cmUnpkUdxUeIdChgReq ARGS((UdxUeIdChgReq func,Pst *pst, Buffer *mBuf));
173 EXTERN S16 cmUnpkUdxUeIdChgCfm ARGS((UdxUeIdChgCfm func,Pst *pst, Buffer *mBuf));
175 EXTERN S16 cmUnpkUdxStaUpdCfm ARGS((UdxStaUpdCfm func,Pst* pst,Buffer *mBuf));
177 EXTERN S16 cmUnpkUdxStaPduReq ARGS((UdxStaPduReq func, Pst* pst, Buffer *mBuf));
179 EXTERN S16 cmUnpkUdxStaProhTmrStart ARGS((UdxStaProhTmrStart func,
184 EXTERN S16 cmUnpkUdxL2MeasReq ARGS((UdxL2MeasReq func, Pst* pst, Buffer *mBuf));
185 EXTERN S16 cmUnpkUdxL2MeasSendReq ARGS((UdxL2MeasSendReq func, Pst* pst, Buffer *mBuf));
186 EXTERN S16 cmUnpkUdxL2MeasStopReq ARGS((UdxL2MeasStopReq func, Pst* pst, Buffer *mBuf));
191 EXTERN S16 KwUlUdxBndReq ARGS((Pst* pst, SuId suId, SpId spId));
193 EXTERN S16 KwDlUdxBndReq ARGS((Pst* pst, SuId suId, SpId spId));
195 EXTERN S16 KwDlUdxBndCfm ARGS((Pst* pst, SuId suId, U8 status));
197 EXTERN S16 KwUlUdxBndCfm ARGS((Pst* pst, SuId suId, U8 status));
199 EXTERN S16 KwDlUdxCfgCfm ARGS((Pst* pst, SuId suId, CkwCfgCfmInfo *cfmInfo));
201 EXTERN S16 KwUlUdxCfgCfm ARGS((Pst* pst, SuId suId, CkwCfgCfmInfo *cfmInfo));
203 EXTERN S16 KwDlUdxUeIdChgCfm ARGS((Pst *pst,
208 EXTERN S16 KwUlUdxUeIdChgCfm ARGS((Pst *pst,
213 EXTERN S16 KwUlUdxUbndReq ARGS((Pst* pst, SuId suId, Reason reason));
215 EXTERN S16 KwDlUdxUbndReq ARGS((Pst* pst, SuId suId, Reason reason));
217 EXTERN S16 KwUlUdxUeIdChgReq ARGS((Pst *pst,
221 CkwUeInfo *newUeInfo));
223 EXTERN S16 KwUlUdxCfgReq ARGS((Pst *pst, SpId spId, CkwCfgInfo *cfgInfo));
225 EXTERN S16 KwDlUdxCfgReq ARGS((Pst *pst, SpId spId, CkwCfgInfo *cfgInfo));
227 EXTERN S16 KwUlUdxStaUpdReq ARGS((Pst* pst,
230 KwUdxStaPdu *pStaPdu));
232 EXTERN S16 KwDlUdxStaUpdReq ARGS((Pst* pst,
235 KwUdxStaPdu *pStaPdu));
237 EXTERN S16 KwDlUdxStaUpdCfm ARGS((Pst* pst,
240 KwUdxBufLst *pBufLst));
242 EXTERN S16 KwUlUdxStaUpdCfm ARGS((Pst* pst,
245 KwUdxBufLst *pBufLst));
247 EXTERN S16 KwUlUdxStaPduReq ARGS((Pst *pst,
250 KwUdxDlStaPdu *pStaPdu ));
252 EXTERN S16 KwDlUdxStaPduReq ARGS((Pst *pst,
255 KwUdxDlStaPdu *pStaPdu));
257 EXTERN S16 KwDlUdxUeIdChgReq ARGS((Pst *pst,
261 CkwUeInfo *newUeInfo));
263 EXTERN S16 KwDlUdxCfgReq ARGS((Pst *pst, SpId spId, CkwCfgInfo *cfgInfo));
266 EXTERN S16 KwUlUdxStaUpdCfm ARGS((Pst* pst,
269 KwUdxBufLst *pBufLst));
271 EXTERN S16 KwDlUdxStaPduReq ARGS((Pst *pst,
274 KwUdxDlStaPdu *pStaPdu));
276 EXTERN S16 KwUlUdxStaProhTmrStart ARGS((Pst *pst,
278 CmLteRlcId *rlcId ));
280 EXTERN S16 KwDlUdxStaProhTmrStart ARGS((Pst *pst,
282 CmLteRlcId *rlcId ));
285 EXTERN S16 KwDlUdxL2MeasReq ARGS((Pst *pst, KwL2MeasReqEvt *measReqEvt));
287 EXTERN S16 KwDlUdxL2MeasSendReq ARGS((Pst *pst, U8 status));
289 EXTERN S16 KwDlUdxL2MeasStopReq ARGS((Pst *pst, U8 status));
291 EXTERN S16 KwUlUdxL2MeasReq ARGS((Pst* pst, KwL2MeasReqEvt *measReqEvt));
293 EXTERN S16 KwUlUdxL2MeasSendReq ARGS((Pst *pst, U8 status));
295 EXTERN S16 KwUlUdxL2MeasStopReq ARGS((Pst* pst, U8 measType));
302 #endif /* __cplusplus */
303 #endif /* __UDX_X__ */
306 /**********************************************************************
308 **********************************************************************/