2017c44b44cbc3b08d288a0421fd7ac29396db1a
[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, KwuDatReqInfo* datReq, Buffer *mBuf));
129 typedef uint8_t (*KwuDatInd)      ARGS((Pst *pst, KwuDatIndInfo* datInd,
130          Buffer *mBuf));
131 typedef S16 (*KwuDatCfm)      ARGS((Pst *pst, SuId suId, KwuDatCfmInfo* datCfm));
132 typedef S16 (*KwuDiscSduReq)  ARGS((Pst *pst, SpId spId, KwuDiscSduInfo* discSdu));
133 typedef S16 (*KwuStaInd)      ARGS((Pst *pst, SuId suId, KwuStaIndInfo* staInd));
134 typedef S16 (*KwuFlowCntrlInd)ARGS((Pst *pst, SuId suId, KwuFlowCntrlIndInfo* flowCntrlInd));
135 typedef S16 (*KwuReEstCmpInd) ARGS((Pst *pst, SuId suId, CmLteRlcId rlcId));
136
137 /* kwu_x_001.main_3 Added support for L2 Measurement */
138 #ifdef LTE_L2_MEAS
139 typedef S16 (*KwuDatAckInd) ARGS((Pst *pst, SuId suId, KwuDatAckInfo *ackInfo));
140 #endif /* LTE_L2_MEAS */
141 typedef S16 (*KwuDiscSduCfm) ARGS((Pst *pst, SuId suId, KwuDiscSduInfo *discCfmInfo));
142
143 /** 
144  * @details This primitive binds the RLC service user entity to the RLC product.
145  * The RLC service user must bind each KWU SAP individually before sending any
146  * other request. RLC acknowledges the receipt of the bind request by sending
147  * a RlcUiKwuBndCfm primitive.
148
149  * @param[in] pst    -  For the bind request, the event field in the Pst structure is set to
150 EVTKWUBNDREQ
151  * @param[in] suId   -  The ID of the service user SAP associated with the SAP in the RLC
152 layer. The SSAP in the RLC layer is specified by the spId parameter.
153 Allowable values: 0 to 32767.
154  * @param[in] spId   -  The ID of the service provider SAP in the RLC layer. Allowable values: 0 to 32767.
155  * @return  S16 
156  *    -# ROK
157  *    -# RFAILED
158  */
159 EXTERN S16 RlcUiKwuBndReq ARGS((Pst *pst,
160          SuId suId,
161          SpId spId));
162
163 /** 
164  * @details RLC invokes the bind confirm primitive to acknowledge the receipt
165  * of the RlcUiKwuBndReq primitive from the service user. The status field
166  * indicates whether the bind request succeeded or failed. The bind request
167  * may fail due to invalid parameters in the bind request from the
168  * service user (for example, an invalid spId).
169
170  * @param[in] pst    -  For the bind confirm, the event field in the Pst structure is set to
171 EVTKWUBNDCFM
172  * @param[in] suId   -  The ID of the service user SAP specified in the bind request. Allowable
173 values: 0 to 32767.
174  * @param[in] status -  Indicates the status of the bind request.\n
175 CM_BND_OK: Bind request succeeded\n
176 CM_BND_NOK: Error encountered during the processing of the bind request.
177  * @return  S16 
178  *    -# ROK
179  *    -# RFAILED
180  */
181 EXTERN S16 RlcUiKwuBndCfm ARGS((Pst *pst,
182          SuId suId,
183          U8 status));
184
185 /** 
186  * @details The RLC service user initiates this primitive for performing
187  * an unbind operation.This primitive brings the link down if it is already up,
188  * and releases all the resources associated for this SAP at RLC.
189
190  * @param[in] pst    -  For the unbind request, the event field in the Pst structure is set to
191 EVTKWUUBNDREQ
192  * @param[in] spId   -  The ID of the service provider SAP in the RLC layer that is to be
193 disassociated from its service user SAP. Allowable values: 0 to 32767.
194  * @param[in] reason -  Reason for the unbind. Allowable value: KWU_UBND_REQ.
195  * @return  S16
196  *    -# ROK
197  *    -# RFAILED
198  */
199 EXTERN S16 RlcUiKwuUbndReq ARGS((Pst *pst,
200          SpId spId,
201          Reason reason));
202
203 /**
204  *@details This primitive is used by RRC to transfer the SDU data to the RLC.
205  RLC will send the data to logical channels in the form of PDUs by assembling 
206  [concatenating/segmenting/retransmission (in case of AM), concatenating if
207  required (in case of UM)] SDUs received from the service user (RRC/PDCP).
208
209  * @param[in] pst    -  Pointer to the pst structure
210  * @param[in] spId   -  Service provider ID
211  * @param[in] datReq -  Data request parameter
212  * @param[in] buf    -  RLC SDU
213  * @return  S16 
214  *   -# ROK
215  *   -# RFAILED
216  */
217 EXTERN S16 RlcUiKwuDatReq ARGS((Pst *pst,
218          KwuDatReqInfo* datReq,
219          Buffer *buf));
220
221 /**
222  *@details This primitive is used by RLC to transfer the SDU data to the service
223  user (RRC/PDCP) recieved from the peer RLC. RLC will send the data to service
224  user (RRC/PDCP) by reassembling the PDUs recieved from the peer RLC.
225
226  * @param pst    -  Pointer to the pst structure
227  * @param suId   -  Service user ID
228  * @param datInd -  Data indication parameter
229  * @param buf    -  RLC SDU
230  * @return  S16
231  *   -# ROK
232  *   -# RFAILED
233  */
234 EXTERN S16 RlcUiKwuDatInd ARGS((Pst *pst,
235          KwuDatIndInfo* datInd,
236          Buffer *mBuf));
237
238 /**
239  *@details This primitive is used by RLC as the confirmation for the RlcUiKwuDatReq
240  to the service user (RLC/PDCP). It is used only in AM mode data transfers for
241  RLC.
242
243  * @param[in] pst    -  Pointer to the pst structure
244  * @param[in] suId   -  Service user ID
245  * @param[in] datCfm -  Data confirmation parameter
246  * @return  S16 
247  *   -# ROK
248  *   -# RFAILED 
249  */
250 EXTERN S16 RlcUiKwuDatCfm ARGS((Pst *pst,
251          SuId suId,
252          KwuDatCfmInfo* datCfm));
253
254 /**
255  *@details This primitive is used by PDCP to discard the particular SDU to RLC.
256  It is used only in AM mode data transfers for RLC. RLC discards this SDU
257  if no segment of the RLC SDU has been mapped to a RLC data PDU yet.
258
259  * @param[in] pst     -  Pointer to the pst structure
260  * @param[in] spId    -  Service provider ID
261  * @param[in] discSdu -  Discard SDU parameter
262  * @return  S16 
263  *   -# ROK
264  *   -# RFAILED
265  */
266 EXTERN S16 RlcUiKwuDiscSduReq ARGS((Pst *pst,
267          SpId spId,
268          KwuDiscSduInfo* discSdu));
269
270 /**
271  *@details This primitive is used by RRC to discard the particular SDU to RLC.
272  It is used only in AM mode data transfers for RLC. RLC discards this SDU
273  if no segment of the RLC SDU has been mapped to a RLC data PDU yet.
274
275  * @param[in] pst    -  Pointer to the pst structure
276  * @param[in] suId   -  Service provider ID
277  * @param[in] rlcId  -  RLC ID
278  * @return  S16
279  *   -# ROK
280  *   -# RFAILED
281  */
282 EXTERN S16 RlcUiKwuStaInd ARGS((Pst *pst,
283          SuId suId,
284          KwuStaIndInfo* staInd));
285
286 /* kwu_x_001.main_3 Added support for L2 Measurement */
287 /**
288  *@details This primitive is used by RLC to confirm the positive discard 
289  of a particular SDU to PDCP.  
290
291  * @param[in] pst          -  Pointer to the pst structure
292  * @param[in] spId         -  Service provider ID
293  * @param[in] discCfmSdu   -  Discard Cfm SDU parameter
294  * @return  S16 
295  *   -# ROK
296  *   -# RFAILED
297  */
298 EXTERN S16 RlcUiKwuDiscSduCfm ARGS((Pst *pst,
299          SpId spId,
300          KwuDiscSduInfo* discCfmSdu));
301
302 /**
303  *@details This primitive is used by RLC to indicate to PDCP if packets
304  *         need to be dropped/restarted for a particular RB
305  *
306  * @param[in] pst                -  Pointer to the pst structure
307  * @param[in] suId               -  Service user ID
308  * @param[in] flowCntrlIndInfo   -  Flow control information
309  * @return  S16 
310  *   -# ROK
311  *   -# RFAILED
312  */
313 EXTERN S16 RlcUiKwuFlowCntrlInd ARGS((Pst *pst,
314          SuId suId,
315          KwuFlowCntrlIndInfo* flowCntrlIndInfo));
316 #ifdef LTE_L2_MEAS
317 /**
318  *@details This primitive is used by RLC to inform PDCP of the sucessful
319  reception of a particular data message at the peer side. This confirms
320  only positive acknowlegements at the peer side . 
321
322  * @param[in] pst    -  Pointer to the pst structure
323  * @param[in] suId   -  Service provider ID
324  * @param[in] ackInd -  Data Ack Indication parameter
325  * @return  S16
326  *   -# ROK
327  *   -# RFAILED
328  */
329 EXTERN S16 RlcUiKwuDatAckInd ARGS((Pst *pst,
330          SuId suId,
331          KwuDatAckInfo* ackInd));
332 #endif /* LTE_L2_MEAS */
333
334 EXTERN S16 RlcUiKwuReEstCmpInd ARGS((Pst *pst,
335          SuId suId,
336          CmLteRlcId rlcId
337 ));
338
339 /* RRC Extern Declarations */
340 #ifdef NH
341 EXTERN S16 NhLiKwuBndReq ARGS((Pst *pst,
342          SuId suId,
343          SpId spId));
344
345 EXTERN S16 NhLiKwuBndCfm ARGS((Pst *pst,
346          SuId suId,
347          U8 status));
348
349 EXTERN S16 NhLiKwuUbndReq ARGS((Pst *pst,
350          SpId spId,
351          Reason reason));
352
353 EXTERN S16 NhLiKwuDatReq ARGS((Pst *pst,
354          SpId spId,
355          KwuDatReqInfo* datReq,
356          Buffer *buf));
357
358 EXTERN S16 NhLiKwuDatInd ARGS((Pst *pst,
359          KwuDatIndInfo* datInd,
360          Buffer *buf));
361 #endif /* NH */
362
363 /* Dummy RRC Interface primitives */
364 #ifdef DM
365 EXTERN S16 DmUiKwuBndReq ARGS((Pst *pst,
366          SuId suId,
367          SpId spId));
368
369 EXTERN S16 DmUiKwuBndCfm ARGS((Pst *pst,
370          SuId suId,
371          U8 status));
372
373 EXTERN S16 DmUiKwuUbndReq ARGS((Pst *pst,
374          SpId spId,
375          Reason reason));
376
377 EXTERN S16 DmUiKwuDatReq ARGS((Pst *pst,
378          SpId spId,
379          KwuDatReqInfo* datReq,
380          Buffer *buf));
381
382 EXTERN S16 DmUiKwuDatInd ARGS((Pst *pst,
383          SuId suId,
384          KwuDatIndInfo* datInd,
385          Buffer *buf));
386
387 EXTERN S16 DmUiKwuReEstCmpInd ARGS((Pst *pst,
388          SuId suId, CmLteRlcId rlcId));
389
390 #endif /* DM */
391
392 /* PDCP Extern Declarations */
393 #ifdef PJ
394 EXTERN S16 PjLiKwuBndReq ARGS((Pst *pst,
395          SuId suId,
396          SpId spId));
397
398 EXTERN S16 PjLiKwuBndCfm ARGS((Pst *pst,
399          SuId suId,
400          U8 status));
401
402 EXTERN S16 PjLiKwuUbndReq ARGS((Pst *pst,
403          SpId spId,
404          Reason reason));
405
406 EXTERN S16 PjLiKwuDatReq ARGS((Pst *pst,
407          SpId spId,
408          KwuDatReqInfo* datReq,
409          Buffer *buf));
410
411 EXTERN S16 PjLiKwuDatInd ARGS((Pst *pst,
412          KwuDatIndInfo* datInd,
413          Buffer *buf));
414
415 EXTERN S16 PjLiKwuDatCfm ARGS((Pst *pst,
416          SuId suId,
417          KwuDatCfmInfo* datCfm));
418
419 EXTERN S16 PjLiKwuStaInd ARGS((Pst *pst,
420          SuId suId,
421          KwuStaIndInfo* staInd));
422
423 EXTERN S16 PjLiKwuDiscSduReq ARGS((Pst *pst,
424          SpId spId,
425          KwuDiscSduInfo* discSdu));
426
427
428 EXTERN S16 PjLiKwuReEstCmpInd ARGS((Pst *pst,
429          SuId suId, CmLteRlcId rlcId));
430
431 /* kwu_x_001.main_3 Added support for L2 Measurement */
432 EXTERN S16 PjLiKwuDiscSduCfm ARGS((Pst *pst,
433          SpId spId,
434          KwuDiscSduInfo* discCfmSdu));
435 EXTERN S16 PjLiKwuFlowCntrlInd ARGS((Pst *pst,       
436          SuId suId,       
437          KwuFlowCntrlIndInfo *flowCntrlInfo));
438 #ifdef LTE_L2_MEAS
439 EXTERN S16 PjLiKwuDatAckInd ARGS((Pst *pst,
440          SuId suId,
441          KwuDatAckInfo* ackInd));
442 #endif /* LTE_L2_MEAS */
443
444 #endif /* PJ */
445 #ifdef MAC_RLC_UL_RBUF
446 EXTERN S16 rlcUlBatchProc ARGS((Void));
447 #endif 
448 /*****************************************************************************
449  *                      PACK/UNPACK FUNCTIONS
450  ****************************************************************************/
451 #ifdef LCKWU
452 /* Packing Functions */
453 EXTERN uint8_t cmPkKwuDatReqInfo ARGS ((
454 KwuDatReqInfo *param,
455 Buffer *mBuf
456 ));
457
458 EXTERN uint8_t cmPkKwuDatIndInfo ARGS ((
459 KwuDatIndInfo *param,
460 Buffer *mBuf
461 ));
462
463 EXTERN S16 cmPkKwuDatCfmInfo ARGS ((
464 KwuDatCfmInfo *param,
465 Buffer *mBuf
466 ));
467
468 EXTERN S16 cmPkKwuStaIndInfo ARGS ((
469 KwuStaIndInfo *param,
470 Buffer *mBuf
471 ));
472
473 EXTERN S16 cmPkKwuBndReq ARGS ((
474 Pst * pst,
475 SuId suId,
476 SpId spId
477 ));
478
479 EXTERN S16 cmPkKwuUbndReq ARGS ((
480 Pst * pst,
481 SuId suId,
482 Reason reason
483 ));
484
485 EXTERN S16 cmPkKwuBndCfm ARGS ((
486 Pst * pst,
487 SuId suId,
488 U8 status
489 ));
490
491 EXTERN uint8_t cmPkKwuDatReq ARGS ((
492 Pst * pst,
493 KwuDatReqInfo* datReq,
494 Buffer * mBuf
495 ));
496
497 EXTERN uint8_t cmPkKwuDatInd ARGS ((
498 Pst * pst,
499 KwuDatIndInfo* datInd,
500 Buffer * mBuf
501 ));
502
503 EXTERN S16 cmPkKwuDatCfm ARGS ((
504 Pst * pst,
505 SuId suId,
506 KwuDatCfmInfo* datCfm
507 ));
508
509 EXTERN S16 cmPkKwuStaInd ARGS ((
510 Pst * pst,
511 SuId suId,
512 KwuStaIndInfo* staInd
513 ));
514
515 EXTERN S16 cmPkKwuReEstCmpInd ARGS ((
516 Pst * pst,
517 SuId suId,
518 CmLteRlcId rlcId
519 ));
520
521 EXTERN S16 cmPkKwuDiscSduReq ARGS ((
522 Pst * pst,
523 SpId spId,
524 KwuDiscSduInfo* discSdu
525 ));
526
527 /* kwu_x_001.main_3 Added support for L2 Measurement */
528 #ifdef LTE_L2_MEAS
529 EXTERN S16 cmPkKwuDatAckInfo ARGS ((
530 KwuDatAckInfo* datAckInd,
531 Buffer * mBuf
532 ));
533
534 EXTERN S16 cmPkKwuDatAckInd ARGS ((
535 Pst * pst,
536 SuId suId,
537 KwuDatAckInfo* ackInfo
538 ));
539 #endif /* LTE_L2_MEAS */
540
541 EXTERN S16 cmPkKwuDiscSduCfm ARGS ((
542 Pst * pst,
543 SpId spId,
544 KwuDiscSduInfo* cfmSdu
545 ));
546
547 EXTERN S16 cmPkKwuFlowCntrlInd ARGS ((
548 Pst *pst,
549 SuId suId,
550 KwuFlowCntrlIndInfo *flowCntrlIndInfo
551 ));
552
553 /* Unpacking Functions */
554 EXTERN S16 cmUnpkKwuDatReqInfo ARGS ((
555 KwuDatReqInfo *param,
556 Buffer *mBuf
557 ));
558
559 EXTERN uint8_t cmUnpkKwuDatIndInfo ARGS ((
560 KwuDatIndInfo *param,
561 Buffer *mBuf
562 ));
563
564 EXTERN S16 cmUnpkKwuDatCfmInfo ARGS ((
565 KwuDatCfmInfo *param,
566 Buffer *mBuf
567 ));
568
569 EXTERN S16 cmUnpkKwuStaIndInfo ARGS ((
570 KwuStaIndInfo *param,
571 Buffer *mBuf
572 ));
573
574 EXTERN S16 cmUnpkKwuBndReq ARGS ((
575 KwuBndReq func,
576 Pst *pst,
577 Buffer *mBuf
578 ));
579
580 EXTERN S16 cmUnpkKwuUbndReq ARGS ((
581 KwuUbndReq func,
582 Pst *pst,
583 Buffer *mBuf
584 ));
585
586 EXTERN S16 cmUnpkKwuBndCfm ARGS ((
587 KwuBndCfm func,
588 Pst *pst,
589 Buffer *mBuf
590 ));
591
592 EXTERN S16 cmUnpkKwuDatReq ARGS ((
593 KwuDatReq func,
594 Pst *pst,
595 Buffer *mBuf
596 ));
597
598 EXTERN uint8_t cmUnpkKwuDatInd ARGS ((
599 KwuDatInd func,
600 Pst *pst,
601 Buffer *mBuf
602 ));
603
604 EXTERN S16 cmUnpkKwuDatCfm ARGS ((
605 KwuDatCfm func,
606 Pst *pst,
607 Buffer *mBuf
608 ));
609
610 EXTERN S16 cmUnpkKwuStaInd ARGS ((
611 KwuStaInd func,
612 Pst *pst,
613 Buffer *mBuf
614 ));
615
616 EXTERN S16 cmUnpkKwuReEstCmpInd ARGS ((
617 KwuReEstCmpInd func,
618 Pst *pst,
619 Buffer *mBuf
620 ));
621 EXTERN S16 cmUnpkKwuDiscSduReq ARGS ((
622 KwuDiscSduReq func,
623 Pst *pst,
624 Buffer *mBuf
625 ));
626
627 EXTERN S16 cmUnpkKwuFlowCntrlInd ARGS ((
628 KwuFlowCntrlInd func,
629 Pst *pst,
630 Buffer *mBuf
631 ));
632
633 /* kwu_x_001.main_3 Added support for L2 Measurement */
634 #ifdef LTE_L2_MEAS
635 EXTERN S16 cmUnpkKwuDatAckInfo ARGS ((
636 KwuDatAckInfo *param,
637 Buffer *mBuf
638 ));
639
640 EXTERN S16 cmUnpkKwuDatAckInd ARGS ((
641 KwuDatAckInd func,
642 Pst *pst,
643 Buffer *mBuf
644 ));
645 #endif /* LTE_L2_MEAS */
646
647 EXTERN S16 cmUnpkKwuDiscSduCfm ARGS ((
648 KwuDiscSduCfm func,
649 Pst *pst,
650 Buffer *mBuf
651 ));
652
653 EXTERN S16 cmPkKwuFlowCntrlIndInfo ARGS((
654 KwuFlowCntrlIndInfo *param,
655 Buffer              *mBuf
656 ));
657
658 EXTERN S16 cmUnpkKwuFlowCntrlIndInfo ARGS((
659 KwuFlowCntrlIndInfo *param,
660 Buffer              *mBuf
661 ));
662
663 #endif /* LCKWU */
664
665 #ifdef __cplusplus
666 }
667 #endif /* __cplusplus */
668 #endif /* __KWU_X__ */
669
670 \f  
671 /********************************************************************30**
672          End of file
673 **********************************************************************/