Initial commit
[o-du/l2.git] / src / cm / kwu.x
1 /*******************************************************************************
2 ################################################################################
3 #   Copyright (c) [2017-2019] [Radisys]                                        #
4 #                                                                              #
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                                    #
8 #                                                                              #
9 #       http://www.apache.org/licenses/LICENSE-2.0                             #
10 #                                                                              #
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 *******************************************************************************/
18
19 /********************************************************************20**
20   
21         Name:    KWU user interface
22     
23         Type:    C include file
24   
25         Desc:    This file Contains the Data structures and prototypes
26                  for KWU Interface
27  
28         File:    kwu.x
29   
30 *********************************************************************21*/
31
32 #ifndef __KWU_X__
33 #define __KWU_X__
34
35 #ifdef __cplusplus
36 EXTERN "C" {
37 #endif  /*for extern "C"*/
38
39 /** @file kwu.x
40     @brief KWU Interface File (kwu.x)
41 */
42  
43 /***********************************************************************
44                           KWU typedefs and data structures
45  ***********************************************************************/
46
47 /** @brief Data Request Information from RRC or PDCP to RLC */
48 typedef struct kwuDatReqInfo
49 {
50    CmLteRlcId        rlcId;               /*!< RLC ID */
51    U32               sduId;               /*!< SDU ID */
52 #ifdef CCPU_OPT
53    CmLteLcType       lcType;              /*!<Logical Channel Type */ 
54 #ifdef EMTC_ENABLE
55    U8                emtcDiReason;    /* !< DI reason */
56    U8                pnb;                  /*!<paging narrowBand on which Ue perform Paging Reception*/
57 #endif
58    union
59    {
60       CmLteTimingInfo   tmg;              /*!< Timing  for BCCH/PCCH */
61       CmLteRnti         rnti;             /*!< Temporary CRNTI:Applicable for CCCH. */
62    }tm;                                   /*!< TM mode data */
63 #endif                                    /* CCPU_OPT */
64 }KwuDatReqInfo;
65
66 /** @brief Data Indication Information from RLC to RRC or PDCP */
67 typedef struct kwuDatIndInfo
68 {
69    CmLteRlcId        rlcId;               /*!< RLC ID */
70 #ifdef CCPU_OPT
71    CmLteRnti         tCrnti;              /*!< Temporary C-RNTI for UL-CCCH */
72 #endif                                    /* CCPU_OPT */
73    Bool              isOutOfSeq;          /*!< To indicate whether this packet is in-sequence or not */
74 }KwuDatIndInfo;
75
76 /** @brief Data Confirmation Information from RLC to PDCP
77     This primitive will be sent on successful sdu delivery */
78 typedef struct kwuDatCfmInfo
79 {
80   CmLteRlcId         rlcId;          /*!< RLC ID */
81   U32                numSduIds;      /*!< Number of Id's in the sudIds array */
82   U32                sduIds[KWU_MAX_DAT_CFM];    /*!< SDU Ids */
83 }KwuDatCfmInfo;
84
85 /** @brief Discard SDU Request Information from PDCP to RLC */
86 typedef KwuDatCfmInfo KwuDiscSduInfo;
87
88 /** @brief SDU Retransmission Threshold reached from RLC to PDCP */
89 typedef struct kwuStaIndInfo
90 {
91    CmLteRlcId        rlcId;               /*!< RLC ID */
92    U32               numSdu;              /*!< Number of SDUs */
93    U32               sduId[KWU_MAX_STA_IND_SDU]; /*!< SDU Id Array */
94 }KwuStaIndInfo;
95
96 typedef struct kwuFlowCntrlIndInfo
97 {
98    CmLteRlcId   rlcId; 
99    U32          pktAdmitCnt;
100 }KwuFlowCntrlIndInfo;
101 /* kwu_x_001.main_3 Added support for L2 Measurement */
102 #ifdef LTE_L2_MEAS
103 /** @brief Data ACK  from RLC to PDCP */
104 typedef struct kwuDatAckInfo
105 {
106    CmLteRlcId        rlcId;               /*!< RLC ID */
107    U32               sduId;               /*!< SDU Id Array */
108 }KwuDatAckInfo;
109 #endif /* LTE_L2_MEAS */
110
111 #if defined(PDCP_RLC_DL_RBUF) || defined(SS_RBUF)
112 typedef struct kwuDatReqDetl
113 {
114   SpId         spId;
115   Buffer       *mBuf;
116   CmLteLcType  lcType;
117   Ticks        arrTime; 
118   U32          sduId;
119   CmLteRlcId   rlcId;
120 }KwuDatReqDetl;
121 #endif 
122
123 /* Control primitives towards LTE RRC */
124 typedef S16 (*KwuBndReq)      ARGS((Pst *pst, SuId suId,  SpId spId));
125 typedef S16 (*KwuBndCfm)      ARGS((Pst *pst, SuId suId, U8 status));
126 typedef S16 (*KwuUbndReq)     ARGS((Pst *pst, SuId suId, Reason reason));
127
128 typedef S16 (*KwuDatReq)      ARGS((Pst *pst, SpId spId, KwuDatReqInfo* datReq,
129          Buffer *mBuf));
130 typedef S16 (*KwuDatInd)      ARGS((Pst *pst, SuId suId, KwuDatIndInfo* datInd,
131          Buffer *mBuf));
132 typedef S16 (*KwuDatCfm)      ARGS((Pst *pst, SuId suId, KwuDatCfmInfo* datCfm));
133 typedef S16 (*KwuDiscSduReq)  ARGS((Pst *pst, SpId spId, KwuDiscSduInfo* discSdu));
134 typedef S16 (*KwuStaInd)      ARGS((Pst *pst, SuId suId, KwuStaIndInfo* staInd));
135 typedef S16 (*KwuFlowCntrlInd)ARGS((Pst *pst, SuId suId, KwuFlowCntrlIndInfo* flowCntrlInd));
136 typedef S16 (*KwuReEstCmpInd) ARGS((Pst *pst, SuId suId, CmLteRlcId rlcId));
137
138 /* kwu_x_001.main_3 Added support for L2 Measurement */
139 #ifdef LTE_L2_MEAS
140 typedef S16 (*KwuDatAckInd) ARGS((Pst *pst, SuId suId, KwuDatAckInfo *ackInfo));
141 #endif /* LTE_L2_MEAS */
142 typedef S16 (*KwuDiscSduCfm) ARGS((Pst *pst, SuId suId, KwuDiscSduInfo *discCfmInfo));
143
144 /** 
145  * @details This primitive binds the RLC service user entity to the RLC product.
146  * The RLC service user must bind each KWU SAP individually before sending any
147  * other request. RLC acknowledges the receipt of the bind request by sending
148  * a KwUiKwuBndCfm primitive.
149
150  * @param[in] pst    -  For the bind request, the event field in the Pst structure is set to
151 EVTKWUBNDREQ
152  * @param[in] suId   -  The ID of the service user SAP associated with the SAP in the RLC
153 layer. The SSAP in the RLC layer is specified by the spId parameter.
154 Allowable values: 0 to 32767.
155  * @param[in] spId   -  The ID of the service provider SAP in the RLC layer. Allowable values: 0 to 32767.
156  * @return  S16 
157  *    -# ROK
158  *    -# RFAILED
159  */
160 EXTERN S16 KwUiKwuBndReq ARGS((Pst *pst,
161          SuId suId,
162          SpId spId));
163
164 /** 
165  * @details RLC invokes the bind confirm primitive to acknowledge the receipt
166  * of the KwUiKwuBndReq primitive from the service user. The status field
167  * indicates whether the bind request succeeded or failed. The bind request
168  * may fail due to invalid parameters in the bind request from the
169  * service user (for example, an invalid spId).
170
171  * @param[in] pst    -  For the bind confirm, the event field in the Pst structure is set to
172 EVTKWUBNDCFM
173  * @param[in] suId   -  The ID of the service user SAP specified in the bind request. Allowable
174 values: 0 to 32767.
175  * @param[in] status -  Indicates the status of the bind request.\n
176 CM_BND_OK: Bind request succeeded\n
177 CM_BND_NOK: Error encountered during the processing of the bind request.
178  * @return  S16 
179  *    -# ROK
180  *    -# RFAILED
181  */
182 EXTERN S16 KwUiKwuBndCfm ARGS((Pst *pst,
183          SuId suId,
184          U8 status));
185
186 /** 
187  * @details The RLC service user initiates this primitive for performing
188  * an unbind operation.This primitive brings the link down if it is already up,
189  * and releases all the resources associated for this SAP at RLC.
190
191  * @param[in] pst    -  For the unbind request, the event field in the Pst structure is set to
192 EVTKWUUBNDREQ
193  * @param[in] spId   -  The ID of the service provider SAP in the RLC layer that is to be
194 disassociated from its service user SAP. Allowable values: 0 to 32767.
195  * @param[in] reason -  Reason for the unbind. Allowable value: KWU_UBND_REQ.
196  * @return  S16
197  *    -# ROK
198  *    -# RFAILED
199  */
200 EXTERN S16 KwUiKwuUbndReq ARGS((Pst *pst,
201          SpId spId,
202          Reason reason));
203
204 /**
205  *@details This primitive is used by RRC to transfer the SDU data to the RLC.
206  RLC will send the data to logical channels in the form of PDUs by assembling 
207  [concatenating/segmenting/retransmission (in case of AM), concatenating if
208  required (in case of UM)] SDUs received from the service user (RRC/PDCP).
209
210  * @param[in] pst    -  Pointer to the pst structure
211  * @param[in] spId   -  Service provider ID
212  * @param[in] datReq -  Data request parameter
213  * @param[in] buf    -  RLC SDU
214  * @return  S16 
215  *   -# ROK
216  *   -# RFAILED
217  */
218 EXTERN S16 KwUiKwuDatReq ARGS((Pst *pst,
219          SpId spId,
220          KwuDatReqInfo* datReq,
221          Buffer *buf));
222
223 /**
224  *@details This primitive is used by RLC to transfer the SDU data to the service
225  user (RRC/PDCP) recieved from the peer RLC. RLC will send the data to service
226  user (RRC/PDCP) by reassembling the PDUs recieved from the peer RLC.
227
228  * @param pst    -  Pointer to the pst structure
229  * @param suId   -  Service user ID
230  * @param datInd -  Data indication parameter
231  * @param buf    -  RLC SDU
232  * @return  S16
233  *   -# ROK
234  *   -# RFAILED
235  */
236 EXTERN S16 KwUiKwuDatInd ARGS((Pst *pst,
237          SuId suId,
238          KwuDatIndInfo* datInd,
239          Buffer *mBuf));
240
241 /**
242  *@details This primitive is used by RLC as the confirmation for the KwUiKwuDatReq
243  to the service user (RLC/PDCP). It is used only in AM mode data transfers for
244  RLC.
245
246  * @param[in] pst    -  Pointer to the pst structure
247  * @param[in] suId   -  Service user ID
248  * @param[in] datCfm -  Data confirmation parameter
249  * @return  S16 
250  *   -# ROK
251  *   -# RFAILED 
252  */
253 EXTERN S16 KwUiKwuDatCfm ARGS((Pst *pst,
254          SuId suId,
255          KwuDatCfmInfo* datCfm));
256
257 /**
258  *@details This primitive is used by PDCP to discard the particular SDU to RLC.
259  It is used only in AM mode data transfers for RLC. RLC discards this SDU
260  if no segment of the RLC SDU has been mapped to a RLC data PDU yet.
261
262  * @param[in] pst     -  Pointer to the pst structure
263  * @param[in] spId    -  Service provider ID
264  * @param[in] discSdu -  Discard SDU parameter
265  * @return  S16 
266  *   -# ROK
267  *   -# RFAILED
268  */
269 EXTERN S16 KwUiKwuDiscSduReq ARGS((Pst *pst,
270          SpId spId,
271          KwuDiscSduInfo* discSdu));
272
273 /**
274  *@details This primitive is used by RRC to discard the particular SDU to RLC.
275  It is used only in AM mode data transfers for RLC. RLC discards this SDU
276  if no segment of the RLC SDU has been mapped to a RLC data PDU yet.
277
278  * @param[in] pst    -  Pointer to the pst structure
279  * @param[in] suId   -  Service provider ID
280  * @param[in] rlcId  -  RLC ID
281  * @return  S16
282  *   -# ROK
283  *   -# RFAILED
284  */
285 EXTERN S16 KwUiKwuStaInd ARGS((Pst *pst,
286          SuId suId,
287          KwuStaIndInfo* staInd));
288
289 /* kwu_x_001.main_3 Added support for L2 Measurement */
290 /**
291  *@details This primitive is used by RLC to confirm the positive discard 
292  of a particular SDU to PDCP.  
293
294  * @param[in] pst          -  Pointer to the pst structure
295  * @param[in] spId         -  Service provider ID
296  * @param[in] discCfmSdu   -  Discard Cfm SDU parameter
297  * @return  S16 
298  *   -# ROK
299  *   -# RFAILED
300  */
301 EXTERN S16 KwUiKwuDiscSduCfm ARGS((Pst *pst,
302          SpId spId,
303          KwuDiscSduInfo* discCfmSdu));
304
305 /**
306  *@details This primitive is used by RLC to indicate to PDCP if packets
307  *         need to be dropped/restarted for a particular RB
308  *
309  * @param[in] pst                -  Pointer to the pst structure
310  * @param[in] suId               -  Service user ID
311  * @param[in] flowCntrlIndInfo   -  Flow control information
312  * @return  S16 
313  *   -# ROK
314  *   -# RFAILED
315  */
316 EXTERN S16 KwUiKwuFlowCntrlInd ARGS((Pst *pst,
317          SuId suId,
318          KwuFlowCntrlIndInfo* flowCntrlIndInfo));
319 #ifdef LTE_L2_MEAS
320 /**
321  *@details This primitive is used by RLC to inform PDCP of the sucessful
322  reception of a particular data message at the peer side. This confirms
323  only positive acknowlegements at the peer side . 
324
325  * @param[in] pst    -  Pointer to the pst structure
326  * @param[in] suId   -  Service provider ID
327  * @param[in] ackInd -  Data Ack Indication parameter
328  * @return  S16
329  *   -# ROK
330  *   -# RFAILED
331  */
332 EXTERN S16 KwUiKwuDatAckInd ARGS((Pst *pst,
333          SuId suId,
334          KwuDatAckInfo* ackInd));
335 #endif /* LTE_L2_MEAS */
336
337 EXTERN S16 KwUiKwuReEstCmpInd ARGS((Pst *pst,
338          SuId suId,
339          CmLteRlcId rlcId
340 ));
341
342 /* RRC Extern Declarations */
343 #ifdef NH
344 EXTERN S16 NhLiKwuBndReq ARGS((Pst *pst,
345          SuId suId,
346          SpId spId));
347
348 EXTERN S16 NhLiKwuBndCfm ARGS((Pst *pst,
349          SuId suId,
350          U8 status));
351
352 EXTERN S16 NhLiKwuUbndReq ARGS((Pst *pst,
353          SpId spId,
354          Reason reason));
355
356 EXTERN S16 NhLiKwuDatReq ARGS((Pst *pst,
357          SpId spId,
358          KwuDatReqInfo* datReq,
359          Buffer *buf));
360
361 EXTERN S16 NhLiKwuDatInd ARGS((Pst *pst,
362          SuId suId,
363          KwuDatIndInfo* datInd,
364          Buffer *buf));
365 #endif /* NH */
366
367 /* Dummy RRC Interface primitives */
368 #ifdef DM
369 EXTERN S16 DmUiKwuBndReq ARGS((Pst *pst,
370          SuId suId,
371          SpId spId));
372
373 EXTERN S16 DmUiKwuBndCfm ARGS((Pst *pst,
374          SuId suId,
375          U8 status));
376
377 EXTERN S16 DmUiKwuUbndReq ARGS((Pst *pst,
378          SpId spId,
379          Reason reason));
380
381 EXTERN S16 DmUiKwuDatReq ARGS((Pst *pst,
382          SpId spId,
383          KwuDatReqInfo* datReq,
384          Buffer *buf));
385
386 EXTERN S16 DmUiKwuDatInd ARGS((Pst *pst,
387          SuId suId,
388          KwuDatIndInfo* datInd,
389          Buffer *buf));
390
391 EXTERN S16 DmUiKwuReEstCmpInd ARGS((Pst *pst,
392          SuId suId, CmLteRlcId rlcId));
393
394 #endif /* DM */
395
396 /* PDCP Extern Declarations */
397 #ifdef PJ
398 EXTERN S16 PjLiKwuBndReq ARGS((Pst *pst,
399          SuId suId,
400          SpId spId));
401
402 EXTERN S16 PjLiKwuBndCfm ARGS((Pst *pst,
403          SuId suId,
404          U8 status));
405
406 EXTERN S16 PjLiKwuUbndReq ARGS((Pst *pst,
407          SpId spId,
408          Reason reason));
409
410 EXTERN S16 PjLiKwuDatReq ARGS((Pst *pst,
411          SpId spId,
412          KwuDatReqInfo* datReq,
413          Buffer *buf));
414
415 EXTERN S16 PjLiKwuDatInd ARGS((Pst *pst,
416          SuId suId,
417          KwuDatIndInfo* datInd,
418          Buffer *buf));
419
420 EXTERN S16 PjLiKwuDatCfm ARGS((Pst *pst,
421          SuId suId,
422          KwuDatCfmInfo* datCfm));
423
424 EXTERN S16 PjLiKwuStaInd ARGS((Pst *pst,
425          SuId suId,
426          KwuStaIndInfo* staInd));
427
428 EXTERN S16 PjLiKwuDiscSduReq ARGS((Pst *pst,
429          SpId spId,
430          KwuDiscSduInfo* discSdu));
431
432
433 EXTERN S16 PjLiKwuReEstCmpInd ARGS((Pst *pst,
434          SuId suId, CmLteRlcId rlcId));
435
436 /* kwu_x_001.main_3 Added support for L2 Measurement */
437 EXTERN S16 PjLiKwuDiscSduCfm ARGS((Pst *pst,
438          SpId spId,
439          KwuDiscSduInfo* discCfmSdu));
440 EXTERN S16 PjLiKwuFlowCntrlInd ARGS((Pst *pst,       
441          SuId suId,       
442          KwuFlowCntrlIndInfo *flowCntrlInfo));
443 #ifdef LTE_L2_MEAS
444 EXTERN S16 PjLiKwuDatAckInd ARGS((Pst *pst,
445          SuId suId,
446          KwuDatAckInfo* ackInd));
447 #endif /* LTE_L2_MEAS */
448
449 #endif /* PJ */
450 #ifdef MAC_RLC_UL_RBUF
451 EXTERN S16 kwUlBatchProc ARGS((Void));
452 #endif 
453 /*****************************************************************************
454  *                      PACK/UNPACK FUNCTIONS
455  ****************************************************************************/
456 #ifdef LCKWU
457 /* Packing Functions */
458 EXTERN S16 cmPkKwuDatReqInfo ARGS ((
459 KwuDatReqInfo *param,
460 Buffer *mBuf
461 ));
462
463 EXTERN S16 cmPkKwuDatIndInfo ARGS ((
464 KwuDatIndInfo *param,
465 Buffer *mBuf
466 ));
467
468 EXTERN S16 cmPkKwuDatCfmInfo ARGS ((
469 KwuDatCfmInfo *param,
470 Buffer *mBuf
471 ));
472
473 EXTERN S16 cmPkKwuStaIndInfo ARGS ((
474 KwuStaIndInfo *param,
475 Buffer *mBuf
476 ));
477
478 EXTERN S16 cmPkKwuBndReq ARGS ((
479 Pst * pst,
480 SuId suId,
481 SpId spId
482 ));
483
484 EXTERN S16 cmPkKwuUbndReq ARGS ((
485 Pst * pst,
486 SuId suId,
487 Reason reason
488 ));
489
490 EXTERN S16 cmPkKwuBndCfm ARGS ((
491 Pst * pst,
492 SuId suId,
493 U8 status
494 ));
495
496 EXTERN S16 cmPkKwuDatReq ARGS ((
497 Pst * pst,
498 SpId spId,
499 KwuDatReqInfo* datReq,
500 Buffer * mBuf
501 ));
502
503 EXTERN S16 cmPkKwuDatInd ARGS ((
504 Pst * pst,
505 SuId suId,
506 KwuDatIndInfo* datInd,
507 Buffer * mBuf
508 ));
509
510 EXTERN S16 cmPkKwuDatCfm ARGS ((
511 Pst * pst,
512 SuId suId,
513 KwuDatCfmInfo* datCfm
514 ));
515
516 EXTERN S16 cmPkKwuStaInd ARGS ((
517 Pst * pst,
518 SuId suId,
519 KwuStaIndInfo* staInd
520 ));
521
522 EXTERN S16 cmPkKwuReEstCmpInd ARGS ((
523 Pst * pst,
524 SuId suId,
525 CmLteRlcId rlcId
526 ));
527
528 EXTERN S16 cmPkKwuDiscSduReq ARGS ((
529 Pst * pst,
530 SpId spId,
531 KwuDiscSduInfo* discSdu
532 ));
533
534 /* kwu_x_001.main_3 Added support for L2 Measurement */
535 #ifdef LTE_L2_MEAS
536 EXTERN S16 cmPkKwuDatAckInfo ARGS ((
537 KwuDatAckInfo* datAckInd,
538 Buffer * mBuf
539 ));
540
541 EXTERN S16 cmPkKwuDatAckInd ARGS ((
542 Pst * pst,
543 SuId suId,
544 KwuDatAckInfo* ackInfo
545 ));
546 #endif /* LTE_L2_MEAS */
547
548 EXTERN S16 cmPkKwuDiscSduCfm ARGS ((
549 Pst * pst,
550 SpId spId,
551 KwuDiscSduInfo* cfmSdu
552 ));
553
554 EXTERN S16 cmPkKwuFlowCntrlInd ARGS ((
555 Pst *pst,
556 SuId suId,
557 KwuFlowCntrlIndInfo *flowCntrlIndInfo
558 ));
559
560 /* Unpacking Functions */
561 EXTERN S16 cmUnpkKwuDatReqInfo ARGS ((
562 KwuDatReqInfo *param,
563 Buffer *mBuf
564 ));
565
566 EXTERN S16 cmUnpkKwuDatIndInfo ARGS ((
567 KwuDatIndInfo *param,
568 Buffer *mBuf
569 ));
570
571 EXTERN S16 cmUnpkKwuDatCfmInfo ARGS ((
572 KwuDatCfmInfo *param,
573 Buffer *mBuf
574 ));
575
576 EXTERN S16 cmUnpkKwuStaIndInfo ARGS ((
577 KwuStaIndInfo *param,
578 Buffer *mBuf
579 ));
580
581 EXTERN S16 cmUnpkKwuBndReq ARGS ((
582 KwuBndReq func,
583 Pst *pst,
584 Buffer *mBuf
585 ));
586
587 EXTERN S16 cmUnpkKwuUbndReq ARGS ((
588 KwuUbndReq func,
589 Pst *pst,
590 Buffer *mBuf
591 ));
592
593 EXTERN S16 cmUnpkKwuBndCfm ARGS ((
594 KwuBndCfm func,
595 Pst *pst,
596 Buffer *mBuf
597 ));
598
599 EXTERN S16 cmUnpkKwuDatReq ARGS ((
600 KwuDatReq func,
601 Pst *pst,
602 Buffer *mBuf
603 ));
604
605 EXTERN S16 cmUnpkKwuDatInd ARGS ((
606 KwuDatInd func,
607 Pst *pst,
608 Buffer *mBuf
609 ));
610
611 EXTERN S16 cmUnpkKwuDatCfm ARGS ((
612 KwuDatCfm func,
613 Pst *pst,
614 Buffer *mBuf
615 ));
616
617 EXTERN S16 cmUnpkKwuStaInd ARGS ((
618 KwuStaInd func,
619 Pst *pst,
620 Buffer *mBuf
621 ));
622
623 EXTERN S16 cmUnpkKwuReEstCmpInd ARGS ((
624 KwuReEstCmpInd func,
625 Pst *pst,
626 Buffer *mBuf
627 ));
628 EXTERN S16 cmUnpkKwuDiscSduReq ARGS ((
629 KwuDiscSduReq func,
630 Pst *pst,
631 Buffer *mBuf
632 ));
633
634 EXTERN S16 cmUnpkKwuFlowCntrlInd ARGS ((
635 KwuFlowCntrlInd func,
636 Pst *pst,
637 Buffer *mBuf
638 ));
639
640 /* kwu_x_001.main_3 Added support for L2 Measurement */
641 #ifdef LTE_L2_MEAS
642 EXTERN S16 cmUnpkKwuDatAckInfo ARGS ((
643 KwuDatAckInfo *param,
644 Buffer *mBuf
645 ));
646
647 EXTERN S16 cmUnpkKwuDatAckInd ARGS ((
648 KwuDatAckInd func,
649 Pst *pst,
650 Buffer *mBuf
651 ));
652 #endif /* LTE_L2_MEAS */
653
654 EXTERN S16 cmUnpkKwuDiscSduCfm ARGS ((
655 KwuDiscSduCfm func,
656 Pst *pst,
657 Buffer *mBuf
658 ));
659
660 EXTERN S16 cmPkKwuFlowCntrlIndInfo ARGS((
661 KwuFlowCntrlIndInfo *param,
662 Buffer              *mBuf
663 ));
664
665 EXTERN S16 cmUnpkKwuFlowCntrlIndInfo ARGS((
666 KwuFlowCntrlIndInfo *param,
667 Buffer              *mBuf
668 ));
669
670 #endif /* LCKWU */
671
672 #ifdef __cplusplus
673 }
674 #endif /* __cplusplus */
675 #endif /* __KWU_X__ */
676
677 \f  
678 /********************************************************************30**
679          End of file
680 **********************************************************************/