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 rlcNackInfo
50 U32 sn; /*!< Nack Sn */
51 U16 soStart; /*!< Segment offset start */
52 U16 soEnd; /*!< Segment offset End */
55 typedef struct rlcUdxStaPdu
58 /* TODO : RLC_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 RlcNackInfo nackInfo[RLC_MAX_NACK_CNT];
66 typedef struct rlcUdxBufLst
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 rlcStatusPdu
76 RlcNackInfo nackInfo[RLC_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, RlcCfgInfo *cfgInfo));
94 typedef S16 (*UdxCfgCfm) ARGS((Pst* pst,SuId suId,RlcCfgCfmInfo *cfmInfo));
96 typedef S16 (*UdxStaUpdReq) ARGS((Pst* pst,
99 RlcUdxStaPdu *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 RlcUdxBufLst *pBufLst));
117 typedef S16 (*UdxStaPduReq) ARGS((Pst* pst,
120 RlcUdxDlStaPdu *pStaPdu));
122 typedef S16 (*UdxStaProhTmrStart) ARGS((Pst* pst,
127 typedef S16 (*UdxL2MeasReq) ARGS((Pst* pst,
128 RlcL2MeasReqEvt *measReqEvt));
130 typedef S16 (*UdxL2MeasSendReq) ARGS((Pst* pst,
133 typedef S16 (*UdxL2MeasStopReq) ARGS((Pst* pst,
138 S16 cmPkUdxBndCfm ARGS((Pst* pst, SuId suId,U8 status ));
139 S16 cmPkUdxBndReq ARGS((Pst* pst, SuId suId,SpId spId ));
140 S16 cmPkUdxUbndReq ARGS((Pst* pst, SuId suId,Reason reason));
141 S16 cmPkUdxCfgReq ARGS((Pst *pst, SpId spId, RlcCfgInfo *cfgInfo));
142 S16 cmPkUdxCfgCfm ARGS(( Pst* pst,SuId suId,RlcCfgCfmInfo *cfmInfo));
143 S16 cmPkUdxStaUpdReq ARGS((Pst* pst,SpId spId,CmLteRlcId *rlcId,
144 RlcUdxStaPdu *pStaPdu ));
145 S16 cmPkUdxUeIdChgReq ARGS((Pst *pst, SpId spId, U32 transId,
146 CkwUeInfo *ueInfo, CkwUeInfo *newUeInfo));
147 S16 cmPkUdxUeIdChgCfm ARGS((Pst *pst, SuId suId, U32 transId,
151 S16 cmPkUdxStaUpdCfm ARGS((Pst* pst,SuId suId,CmLteRlcId *rlcId,
152 RlcUdxBufLst *pBufLst));
154 S16 cmPkUdxStaPduReq ARGS(( Pst* pst,SpId spId, CmLteRlcId *rlcId,
155 RlcUdxDlStaPdu *pStaPdu ));
156 S16 cmPkUdxStaProhTmrStart ARGS((Pst *pst,
161 S16 cmPkUdxL2MeasReq ARGS((Pst *pst, RlcL2MeasReqEvt *measReqEvt));
162 S16 cmPkUdxL2MeasSendReq ARGS((Pst *pst, U8 measType));
163 S16 cmPkUdxL2MeasStopReq ARGS((Pst *pst, U8 measType));
166 S16 cmUnpkUdxBndCfm ARGS((UdxBndCfm func,Pst* pst, Buffer *mBuf ));
167 S16 cmUnpkUdxBndReq ARGS((UdxBndReq func,Pst* pst, Buffer *mBuf ));
168 S16 cmUnpkUdxUbndReq ARGS((UdxUbndReq func,Pst* pst, Buffer *mBuf));
169 S16 cmUnpkUdxCfgReq ARGS((UdxCfgReq func,Pst *pst, Buffer *mBuf));
170 S16 cmUnpkUdxCfgCfm ARGS((UdxCfgCfm func , Pst* pst,Buffer *mBuf));
171 S16 cmUnpkUdxStaUpdReq ARGS((UdxStaUpdReq func,Pst* pst,Buffer *mBuf));
172 S16 cmUnpkUdxUeIdChgReq ARGS((UdxUeIdChgReq func,Pst *pst, Buffer *mBuf));
173 S16 cmUnpkUdxUeIdChgCfm ARGS((UdxUeIdChgCfm func,Pst *pst, Buffer *mBuf));
175 S16 cmUnpkUdxStaUpdCfm ARGS((UdxStaUpdCfm func,Pst* pst,Buffer *mBuf));
177 S16 cmUnpkUdxStaPduReq ARGS((UdxStaPduReq func, Pst* pst, Buffer *mBuf));
179 S16 cmUnpkUdxStaProhTmrStart ARGS((UdxStaProhTmrStart func,
184 S16 cmUnpkUdxL2MeasReq ARGS((UdxL2MeasReq func, Pst* pst, Buffer *mBuf));
185 S16 cmUnpkUdxL2MeasSendReq ARGS((UdxL2MeasSendReq func, Pst* pst, Buffer *mBuf));
186 S16 cmUnpkUdxL2MeasStopReq ARGS((UdxL2MeasStopReq func, Pst* pst, Buffer *mBuf));
191 S16 rlcUlUdxBndReq ARGS((Pst* pst, SuId suId, SpId spId));
193 S16 rlcDlUdxBndReq ARGS((Pst* pst, SuId suId, SpId spId));
195 S16 rlcDlUdxBndCfm ARGS((Pst* pst, SuId suId, U8 status));
197 S16 rlcUlUdxBndCfm ARGS((Pst* pst, SuId suId, U8 status));
199 S16 rlcDlUdxCfgCfm ARGS((Pst* pst, SuId suId, RlcCfgCfmInfo *cfmInfo));
201 S16 rlcUlUdxCfgCfm ARGS((Pst* pst, SuId suId, RlcCfgCfmInfo *cfmInfo));
203 S16 rlcDlUdxUeIdChgCfm ARGS((Pst *pst,
208 S16 rlcUlUdxUeIdChgCfm ARGS((Pst *pst,
213 S16 rlcUlUdxUbndReq ARGS((Pst* pst, SuId suId, Reason reason));
215 S16 rlcDlUdxUbndReq ARGS((Pst* pst, SuId suId, Reason reason));
217 S16 rlcUlUdxUeIdChgReq ARGS((Pst *pst,
221 CkwUeInfo *newUeInfo));
223 S16 rlcUlUdxCfgReq ARGS((Pst *pst, SpId spId, RlcCfgInfo *cfgInfo));
225 S16 rlcDlUdxCfgReq ARGS((Pst *pst, SpId spId, RlcCfgInfo *cfgInfo));
227 uint8_t rlcUlUdxStaUpdReq ARGS((Pst* pst,
230 RlcUdxStaPdu *pStaPdu));
232 S16 rlcDlUdxStaUpdReq ARGS((Pst* pst,
235 RlcUdxStaPdu *pStaPdu));
237 S16 rlcDlUdxStaUpdCfm ARGS((Pst* pst,
240 RlcUdxBufLst *pBufLst));
242 S16 rlcUlUdxStaUpdCfm ARGS((Pst* pst,
245 RlcUdxBufLst *pBufLst));
247 uint8_t rlcUlUdxStaPduReq ARGS((Pst *pst,
250 RlcUdxDlStaPdu *pStaPdu ));
252 S16 rlcDlUdxStaPduReq ARGS((Pst *pst,
255 RlcUdxDlStaPdu *pStaPdu));
257 S16 rlcDlUdxUeIdChgReq ARGS((Pst *pst,
261 CkwUeInfo *newUeInfo));
263 S16 rlcDlUdxCfgReq ARGS((Pst *pst, SpId spId, RlcCfgInfo *cfgInfo));
266 S16 rlcUlUdxStaUpdCfm ARGS((Pst* pst,
269 RlcUdxBufLst *pBufLst));
271 S16 rlcDlUdxStaPduReq ARGS((Pst *pst,
274 RlcUdxDlStaPdu *pStaPdu));
276 S16 rlcUlUdxStaProhTmrStart ARGS((Pst *pst,
278 CmLteRlcId *rlcId ));
280 uint8_t rlcDlUdxStaProhTmrStart ARGS((Pst *pst,
282 CmLteRlcId *rlcId ));
285 S16 rlcDlUdxL2MeasReq ARGS((Pst *pst, RlcL2MeasReqEvt *measReqEvt));
287 S16 rlcDlUdxL2MeasSendReq ARGS((Pst *pst, U8 status));
289 S16 rlcDlUdxL2MeasStopReq ARGS((Pst *pst, U8 status));
291 S16 rlcUlUdxL2MeasReq ARGS((Pst* pst, RlcL2MeasReqEvt *measReqEvt));
293 S16 rlcUlUdxL2MeasSendReq ARGS((Pst *pst, U8 status));
295 S16 rlcUlUdxL2MeasStopReq ARGS((Pst* pst, U8 measType));
302 #endif /* __cplusplus */
303 #endif /* __UDX_X__ */
306 /**********************************************************************
308 **********************************************************************/