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 /********************************************************************20**
21 Name: CKW RRC Control Interface
25 Desc: This file Contains the Data structures for and prototypes
30 *********************************************************************21*/
37 #endif /*for extern "C"*/
40 @brief CKW Interface File (ckw.x)
43 /***********************************************************************
44 CKW typedefs and data structures
45 ***********************************************************************/
48 Logical Channel Information */
49 typedef struct ckwLChInfo
51 U8 lChId; /*!< Logical Channel ID.
52 The allowed values are [1..10] */
53 U8 type; /*!< Logical Channel Type -
54 BCCH/PCCH/CCCH/DTCH/DCCH */
58 Un-acknowledge Mode Information */
59 typedef struct ckwUmInfo
63 U8 snLen; /*!< Sequence Number length in bits. Allowed values are 6 and 12*/
67 U8 snLen; /*!< Sequence Number length in bits.*/
68 /*!< Allowed values are 6 and 12*/
69 U8 reOrdTmr; /*!< T_reordering Timer in msec */
74 Acknowledge Mode Information */
75 typedef struct ckwAmInfo
79 U8 snLen; /*!< Sequence Number length in
80 bits. Allowed values are 12 and 18 */
81 U16 pollRetxTmr; /*!< T_poll_retransmit Timer in msec */
82 S16 pollPdu; /*!< Used to trigger a poll for every pollPdu.*/
83 /*!< This field indicates the number of PDUs */
84 /* Patch ckw_x_001.main_5 */
85 /* !<For Infinite, RLC expects value 0xFFFF */
86 S32 pollByte; /*!< Poll_Byte in bytes. */
87 /*!<For Infinite RLC expects value 0xFFFFFFFF */
88 U8 maxRetx; /*!< Max_Retx_Threshold */
89 }dl; /*!< Down link */
92 U8 snLen; /*!< Sequence Number length in
93 bits. Allowed values are 12 and 18 */
94 U16 staProhTmr; /*!< T_status_prohibit Timer in msec*/
95 U8 reOrdTmr; /*!< T_reordering Timer in msec*/
100 Transparent Mode Information */
101 typedef union ckwTmInfo
105 U32 buffSize; /*!< Buffer Size in bytes */
106 }dl; /*!< Down link */
110 Entity Configuration Information */
111 typedef struct ckwEntCfgInfo
113 U8 cfgType; /*!< Type of Configuration -
114 ADD/MODIFY/DELETE/RE-ESTABLISH/
116 U8 rbId; /* RB ID. The allowed
117 Values are [0..255] */
118 U8 rbType; /* Type of the RB - can be SRB or DRB */
119 U8 qci; /*!< qCI value Associated with that RB */
120 CkwLChInfo lCh[CM_LTE_MAX_LOGCH_PER_RB]; /*!< Logical channel
123 idx = 0 implies DL and
125 In case of TM/UM idx 0 is only
127 CmLteRlcMode entMode; /*!< Entity mode: AM, UM or TM */
128 U8 dir; /*!< Direction: It can be either
130 UL / DL or BOTH for UM mode
131 and for AM its always for both UL
133 /* Supported by SPLIT Architecture */
134 S16 discardTmr; /*!< Discard timer. @n The value for this parameter is
135 expected in milli seconds. @n Value of infinity is also
136 allowed and -1 must be passed for the same. */
138 /* Supported by SPLIT Architecture ends */
141 CkwUmInfo umInfo; /*!< Un-acknowledged Mode Information */
142 CkwAmInfo amInfo; /*!< Acknowledged Mode Information */
143 CkwTmInfo tmInfo; /*!< Transparent Mode Information */
148 Configuration Information from RRC to RLC */
149 typedef struct ckwCfgInfo
151 U32 transId; /*!< Transaction Id */
152 CmLteRnti ueId; /*!< UE ID */
153 CmLteCellId cellId; /*!< Cell ID */
154 U8 numEnt; /*!< Number of entities to
156 CkwEntCfgInfo entCfg[CKW_MAX_ENT_CFG]; /*!< Array of Entities to be
161 Entity Configuration Confirmation Information */
162 typedef struct ckwEntCfgCfmInfo
164 U8 rbId; /*!< rb ID */
165 U8 rbType; /*!< RB type - can be SRB or DRB */
166 CmStatus status; /*!< Status of the confirmation */
170 Configuration Confirmation Informatin RLC to RRC */
171 typedef struct ckwCfgCfmInfo
173 U32 transId; /*!< Transaction Id */
174 CmLteRnti ueId; /*!< UE ID */
175 CmLteCellId cellId; /*!< Cell ID */
176 U8 numEnt; /*!< Number of entities configured */
177 CkwEntCfgCfmInfo entCfgCfm[CKW_MAX_ENT_CFG]; /*!< Array of Entity cfg
183 typedef struct ckwUeInfo
185 CmLteRnti ueId; /*!< UE ID */
186 CmLteCellId cellId; /*!< Cell ID */
188 /* Control primitives towards LTE RRC */
190 /* Pointer functiones for Pack/Unpack */
191 typedef S16 (*CkwCfgReq) ARGS((Pst *pst, SpId spId, CkwCfgInfo *cfgInfo));
192 typedef S16 (*CkwCfgCfm) ARGS((Pst *pst, SuId suId, CkwCfgCfmInfo *cfmInfo));
194 typedef S16 (*CkwUeIdChgReq) ARGS((Pst *pst, SpId spId, U32 transId,
195 CkwUeInfo *ueInfo, CkwUeInfo *newUeInfo));
196 typedef S16 (*CkwUeIdChgCfm) ARGS((Pst *pst, SuId suId, U32 transId,
197 CkwUeInfo *ueInfo, CmStatus status));
199 typedef S16 (*CkwBndReq) ARGS((Pst *pst, SuId suId, SpId spId));
200 typedef S16 (*CkwBndCfm) ARGS((Pst *pst, SuId suId, U8 status));
201 typedef S16 (*CkwUbndReq) ARGS((Pst *pst, SpId spId, Reason reason));
204 * @details The primitive binds the RLC service user entity to the RLC product.
205 * The RLC service user must bind each CKW SAP individually before sending any
206 * other request. RLC acknowledges the receipt of the bind request by sending
207 * a KwUiCkwBndCfm primitive.
209 * @param[in] pst - For the bind request, the event field in the Pst
210 * structure is set to EVTCKWBNDREQ
211 * @param[in] suId - The ID of the service user SAP associated with the
212 * SAP in the RLC layer. The SSAP in the RLC layer is
213 * specified by the spId parameter.\n
214 * Allowable values: 0 to 32767.
215 * @param[in] spId - The ID of the service provider SAP in the RLC layer.\n
216 * Allowable values: 0 to 32767.
219 EXTERN S16 KwUiCkwBndReq ARGS((Pst *pst, SuId suId, SpId spId));
222 * @details RLC invokes the bind confirm primitive to acknowledge the receipt
223 * of the KwUiCkwBndReq primitive from the service user. The status field
224 * indicates whether the bind request succeeded or failed. The bind request
225 * may fail due to invalid parameters in the bind request from the
226 * service user (for example, an invalid spId).
228 * @param[in] pst - For the bind confirm, the event field in the Pst
229 * structure is set to EVTCKWBNDCFM
230 * @param[in] suId - The ID of the service user SAP specified in the
231 * bind request. Allowable
233 * @param[in] status - Indicates the status of the bind request.\n
234 CM_BND_OK: Bind request succeeded\n
235 CM_BND_NOK: Error encountered during the processing of the bind request.
238 EXTERN S16 KwUiCkwBndCfm ARGS((Pst *pst, SuId suId, U8 status));
241 * @details The RLC service user initiates this primitive for performing
242 * an unbind operation.This primitive brings the link down if it is already up,
243 * and releases all the resources associated for this SAP at RLC.
245 * @param[in] pst - For the unbind request, the event field in the Pst
246 * structure is set to EVTCKWUBNDREQ
247 * @param[in] spId - The ID of the service provider SAP in the RLC layer
248 * that is to be disassociated from its service
250 * Allowable values: 0 to 32767.
251 * @param[in] reason - Reason for the unbind.\n
252 * Allowable value: CKW_UBND_REQ.
255 EXTERN S16 KwUiCkwUbndReq ARGS((Pst *pst, SpId spId, Reason reason));
257 /* Layer interface Control Primitives */
259 *@details This primitive is used by RRC to configure the multiple RLC entities. RRC
260 sends this primitive for the control of the RLC entity.
262 * The different configuration allowed by RRC to RLC are:\n
263 CKW_CFG_ADD - Configures the new RLC entity\n
264 CKW_CFG_MODIFY - Modifies the RLC entity\n
265 CKW_CFG_DELETE - Deletes the RLC entity\n
266 CKW_CFG_REESTABLISH - Re-establilsh the RLC entity\n
267 CKW_CFG_DELETE_UE - Deletes the RLC entities per UE\n
270 * @param[in] pst - Point to the pst structure
271 * @param[in] transId - Transaction ID. This field will uniquily identifies
272 * transaction between RRC and RLC.
273 * @param[in] cfgInfo - This structure contains the configuration information
276 EXTERN S16 KwUiCkwCfgReq ARGS((Pst *pst, SpId spId, CkwCfgInfo *cfgInfo));
279 *@details This primitive is used by RLC to confirm the configuration requested
282 * The different values for status are:\n
283 * CKW_CFG_CFM_OK - Success\n
284 * CKW_CFG_CFM_NOK - Failure\n
286 * The different reasons for the failure are:\n
287 * CKW_CFG_REAS_TYPE_MIS - Logical channel type mismatch with mode\n
288 * CKW_CFG_REAS_ENT_UNKWN - Reconfigure request for an unknown RLC entity\n
290 * @param[in] pst - Point to the pst structure.
291 * @param[in] transId - Transaction ID. This field will uniquily identifies
292 * transaction between RRC and RLC.
293 * @param[in] cfmInfo - This structure contains the configuration confirm
297 EXTERN S16 KwUiCkwCfgCfm ARGS((Pst *pst, SuId suId, CkwCfgCfmInfo *cfmInfo));
300 *@details This primitive is used by RRC to change the UeId for the existing UE
303 * @param[in] pst - Point to the pst structure
304 * @param[in] spId - The ID of the service provider SAP in the RLC layer.
305 * @param[in] transId - Transaction ID. This field uniquily identifies
306 * transaction between RRC and RLC.
307 * @param[in] ueInfo - Old UE Id Info for which the change request has come.
308 * @param[in] newUeInfo - New UE Id Info for existing UE context.
311 EXTERN S16 KwUiCkwUeIdChgReq ARGS((Pst *pst, SpId spId, U32 transId,
312 CkwUeInfo *ueInfo, CkwUeInfo *newUeInfo));
315 *@details This primitive is used by RLC to confirm the UeId change requested
318 * The different values for status are:\n
319 * CKW_CFG_CFM_OK - Success\n
320 * CKW_CFG_CFM_NOK - Failure\n
322 * The different reasons for the failure are:\n
323 * CKW_CFG_REAS_UE_CREAT_FAIL - UE Cb update failure \n
324 * CKW_CFG_REAS_UE_UNKWN - Request received for an unknown UE Id
326 * @param[in] pst - Point to the pst structure.
327 * @param[in] suId - The ID of the service user SAP associated with RLC
328 * @param[in] transId - Transaction ID. This field uniquily identifies
329 * transaction between RRC and RLC.
330 * @param[in] ueInfo - UE Identity which is changed with the new Id for the same
332 * @param[in] CmStatus - Confirmation status with appropriate reason.
336 EXTERN S16 KwUiCkwUeIdChgCfm ARGS((Pst *pst, SuId suId, U32 transId,
337 CkwUeInfo *ueInfo, CmStatus status));
339 /* RRC Extern declarations */
341 EXTERN S16 NhLiCkwBndReq ARGS((
346 EXTERN S16 NhLiCkwUbndReq ARGS((
351 EXTERN S16 NhLiCkwBndCfm ARGS((Pst *pst,
355 EXTERN S16 NhLiCkwCfgReq ARGS((
358 CkwCfgInfo *cfgInfo));
360 EXTERN S16 NhLiCkwCfgCfm ARGS((Pst *pst,
362 CkwCfgCfmInfo* cfmInfo));
364 EXTERN S16 NhLiCkwUeIdChgReq ARGS((Pst *pst,
365 SpId spId, U32 transId,
366 CkwUeInfo *ueInfo, CkwUeInfo *newUeInfo));
368 EXTERN S16 NhLiCkwUeIdChgCfm ARGS((Pst *pst,
369 SuId suId, U32 transId,
370 CkwUeInfo *ueInfo, CmStatus status));
374 /* Dummy RRC Interface primitives */
376 EXTERN S16 DmUiCkwBndReq ARGS((
381 EXTERN S16 DmUiCkwUbndReq ARGS((
386 EXTERN S16 DmUiCkwBndCfm ARGS((Pst *pst,
390 EXTERN S16 DmUiCkwCfgReq ARGS((
393 CkwCfgInfo *cfgInfo));
395 EXTERN S16 DmUiCkwCfgCfm ARGS((Pst *pst,
397 CkwCfgCfmInfo* cfmInfo));
399 EXTERN S16 DmUiCkwUeIdChgReq ARGS((Pst *pst,
400 SpId spId, U32 transId,
401 CkwUeInfo *ueInfo, CkwUeInfo *newUeInfo));
403 EXTERN S16 DmUiCkwUeIdChgCfm ARGS((Pst *pst,
404 SuId suId, U32 transId,
405 CkwUeInfo *ueInfo, CmStatus status));
409 /*****************************************************************************
410 * PACK/UNPACK FUNCTIONS
411 ****************************************************************************/
413 /* Packing functions */
414 EXTERN S16 cmPkCkwTmInfo ARGS ((
419 EXTERN S16 cmPkCkwUmInfo ARGS ((
420 CkwEntCfgInfo *param,
424 EXTERN S16 cmPkCkwAmInfo ARGS ((
429 EXTERN S16 cmPkCkwLChInfo ARGS ((
434 EXTERN S16 cmPkCkwEntCfgInfo ARGS ((
435 CkwEntCfgInfo *param,
439 EXTERN S16 cmPkCkwCfgInfo ARGS ((
445 EXTERN S16 cmPkCkwEntCfgCfmInfo ARGS ((
446 CkwEntCfgCfmInfo *param,
450 EXTERN S16 cmPkCkwCfgCfmInfo ARGS ((
451 CkwCfgCfmInfo *param,
456 EXTERN S16 cmPkCkwUeInfo ARGS ((
461 EXTERN S16 cmPkCkwBndReq ARGS ((
467 EXTERN S16 cmPkCkwUbndReq ARGS ((
473 EXTERN S16 cmPkCkwBndCfm ARGS ((
479 EXTERN S16 cmPkCkwCfgReq ARGS ((
485 EXTERN S16 cmPkCkwCfgCfm ARGS ((
488 CkwCfgCfmInfo *cfgCfmInfo
491 EXTERN S16 cmPkCkwUeIdChgReq ARGS ((
499 EXTERN S16 cmPkCkwUeIdChgCfm ARGS ((
507 /* Unpacking functions */
508 EXTERN S16 cmUnpkCkwTmInfo ARGS ((
513 EXTERN S16 cmUnpkCkwUmInfo ARGS ((
514 CkwEntCfgInfo *param,
518 EXTERN S16 cmUnpkCkwAmInfo ARGS ((
523 EXTERN S16 cmUnpkCkwLInfo ARGS ((
528 EXTERN S16 cmUnpkCkwCfgCfmInfo ARGS ((
529 CkwCfgCfmInfo *param,
534 EXTERN S16 cmUnpkCkwBndReq ARGS ((
540 EXTERN S16 cmUnpkCkwLChInfo ARGS ((
545 EXTERN S16 cmUnpkCkwEntCfgInfo ARGS ((
546 CkwEntCfgInfo *param,
550 EXTERN S16 cmUnpkCkwCfgInfo ARGS ((
556 EXTERN S16 cmUnpkCkwUeInfo ARGS ((
561 EXTERN S16 cmUnpkCkwCfgCfm ARGS ((
567 EXTERN S16 cmUnpkCkwUbndReq ARGS ((
573 EXTERN S16 cmUnpkCkwBndCfm ARGS ((
579 EXTERN S16 cmUnpkCkwCfgReq ARGS ((
585 EXTERN S16 cmUnpkCkwEntCfgCfmInfo ARGS ((
586 CkwEntCfgCfmInfo *param,
590 EXTERN S16 cmUnpkCkwUeIdChgReq ARGS ((
596 EXTERN S16 cmUnpkCkwUeIdChgCfm ARGS ((
604 #endif /* __cplusplus */
605 #endif /* __CKW_X__ */
609 /********************************************************************30**
611 **********************************************************************/