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**
25 Desc: This file Contains the packing and unpacking functions for
30 *********************************************************************21*/
32 /* header include files (.h) */
33 #include "envopt.h" /* environment options */
34 #include "envdep.h" /* environment dependent */
35 #include "envind.h" /* environment independent */
37 #include "gen.h" /* general */
38 #include "ssi.h" /* system services */
39 #include "cm5.h" /* common timer defines */
40 #include "cm_tkns.h" /* common tokens defines */
41 #include "cm_mblk.h" /* common memory allocation library defines */
42 #include "cm_llist.h" /* common link list defines */
43 #include "cm_hash.h" /* common hash list defines */
44 #include "cm_lte.h" /* common LTE defines */
45 #ifdef TENB_SPLIT_ARCH
50 #include "kwu.h" /* KWU defines */
52 /* extern (.x) include files */
53 #include "gen.x" /* general */
54 #include "ssi.x" /* system services */
56 #include "cm5.x" /* common timer library */
57 #include "cm_tkns.x" /* common tokens */
58 #include "cm_mblk.x" /* common memory allocation */
59 #include "cm_llist.x" /* common link list */
60 #include "cm_hash.x" /* common hash list */
61 #include "cm_lte.x" /* common LTE includes */
62 #include "cm_lib.x" /* common memory allocation library */
63 #ifdef TENB_SPLIT_ARCH
72 #include "kwu.x" /* KWU */
76 /****************************************************************************
78 ***************************************************************************/
80 PUBLIC S16 cmPkKwuBndReq
87 PUBLIC S16 cmPkKwuBndReq(pst, suId, spId)
100 if((ret1 = SGetMsg(pst->region, pst->pool, &mBuf)) != ROK)
102 #if (ERRCLASS & ERRCLS_ADD_RES)
105 SLogError(pst->srcEnt, pst->srcInst, pst->srcProcId,
106 __FILE__, __LINE__, (ErrCls)ERRCLS_ADD_RES,
107 (ErrVal)EKWU001, (ErrVal)0, "SGetMsg() failed");
109 #endif /* ERRCLASS & ERRCLS_ADD_RES */
112 CMCHKPKLOG(SPkS16, spId, mBuf, EKWU002, pst);
113 CMCHKPKLOG(SPkS16, suId, mBuf, EKWU003, pst);
114 pst->event = (Event) KWU_EVT_BND_REQ;
115 RETVALUE(SPstTsk(pst,mBuf));
120 PUBLIC S16 cmPkKwuBndCfm
127 PUBLIC S16 cmPkKwuBndCfm(pst, suId, status)
140 if((ret1 = SGetMsg(pst->region, pst->pool, &mBuf)) != ROK)
142 #if (ERRCLASS & ERRCLS_ADD_RES)
145 SLogError(pst->srcEnt, pst->srcInst, pst->srcProcId,
146 __FILE__, __LINE__, (ErrCls)ERRCLS_ADD_RES,
147 (ErrVal)EKWU004, (ErrVal)0, "SGetMsg() failed");
149 #endif /* ERRCLASS & ERRCLS_ADD_RES */
153 CMCHKPKLOG(SPkU8, status, mBuf, EKWU005, pst);
154 CMCHKPKLOG(SPkS16, suId, mBuf, EKWU006, pst);
155 pst->event = (Event) KWU_EVT_BND_CFM;
156 RETVALUE(SPstTsk(pst,mBuf));
161 PUBLIC S16 cmPkKwuUbndReq
168 PUBLIC S16 cmPkKwuUbndReq(pst, suId, reason)
181 if((ret1 = SGetMsg(pst->region, pst->pool, &mBuf)) != ROK)
183 #if (ERRCLASS & ERRCLS_ADD_RES)
186 SLogError(pst->srcEnt, pst->srcInst, pst->srcProcId,
187 __FILE__, __LINE__, (ErrCls)ERRCLS_ADD_RES,
188 (ErrVal)EKWU007, (ErrVal)0, "SGetMsg() failed");
190 #endif /* ERRCLASS & ERRCLS_ADD_RES */
193 CMCHKPKLOG(SPkS16, reason, mBuf, EKWU008, pst);
194 CMCHKPKLOG(SPkS16, suId, mBuf, EKWU009, pst);
196 pst->event = (Event) KWU_EVT_UBND_REQ;
197 RETVALUE(SPstTsk(pst,mBuf));
198 } /* cmPkKwuUbndReq */
201 PUBLIC S16 cmPkKwuDatReqInfo
203 KwuDatReqInfo *param,
207 PUBLIC S16 cmPkKwuDatReqInfo(param, mBuf)
208 KwuDatReqInfo *param;
213 TRC3(cmPkKwuDatReqInfo);
216 switch(param->lcType) {
217 case CM_LTE_LCH_CCCH:
218 CMCHKPK(cmPkLteRnti, param->tm.rnti, mBuf);
220 case CM_LTE_LCH_BCCH:
221 case CM_LTE_LCH_PCCH:
222 CMCHKPK(cmPkLteTimingInfo, ¶m->tm.tmg, mBuf);
224 CMCHKPK(SPkU8, param->emtcDiReason,mBuf);
225 CMCHKPK(SPkU8, param->pnb,mBuf);
228 case CM_LTE_LCH_DTCH:
229 case CM_LTE_LCH_DCCH:
234 CMCHKPK(cmPkLteLcType, param->lcType, mBuf);
237 CMCHKPK(SPkU32, param->sduId, mBuf);
238 CMCHKPK(cmPkLteRlcId, ¶m->rlcId, mBuf);
240 } /* cmPkKwuDatReqInfo */
244 PUBLIC S16 cmPkKwuDatReq
247 KwuDatReqInfo* datReq,
251 PUBLIC S16 cmPkKwuDatReq(pst, datReq, mBuf)
253 KwuDatReqInfo* datReq;
258 #if (ERRCLASS & ERRCLS_ADD_RES)
263 KwuDatReqInfo* datReqInfo;
267 switch(pst->selector)
271 if(pst->srcEnt == ENTDUAPP)
273 /* When the Selector is LWLC, we need to allocate memory, copy
274 * the contents and pass the pointer of the allocated memory. The
275 * subsequent free would be done during the Unpack function of the
277 if((ret1 = SGetStaticBuffer(pst->region, pst->pool, (Data **)&datReqInfo,
278 sizeof(KwuDatReqInfo),SS_SHARABLE_MEMORY)) != ROK)
280 #if (ERRCLASS & ERRCLS_ADD_RES)
283 SLogError(pst->srcEnt, pst->srcInst, pst->srcProcId,
284 __FILE__, __LINE__, (ErrCls)ERRCLS_ADD_RES,
285 (ErrVal)EKWU028, (ErrVal)0, "SGetMsg() failed");
287 #endif /* ERRCLASS & ERRCLS_ADD_RES */
290 cmMemcpy((U8*)datReqInfo,(U8*)datReq,sizeof(KwuDatReqInfo));
291 CMCHKPK(cmPkPtr,(PTR)datReqInfo, mBuf);
295 CMCHKPK(cmPkPtr,(PTR)datReq, mBuf);
301 #if (ERRCLASS & ERRCLS_ADD_RES)
302 ret1 = cmPkKwuDatReqInfo( (datReq), mBuf);
306 SLogError(pst->srcEnt, pst->srcInst, pst->srcProcId,
307 __FILE__, __LINE__, (ErrCls)ERRCLS_ADD_RES,
308 (ErrVal)EKWU010, (ErrVal)ret1, "Packing failure");
312 cmPkKwuDatReqInfo( (datReq), mBuf);
313 #endif /* ERRCLASS & ERRCLS_ADD_RES */
314 if(pst->srcEnt == ENTNH)
316 if (SPutStaticBuffer(pst->region, pst->pool, (Data *)datReq,
317 sizeof(KwuDatReqInfo),SS_SHARABLE_MEMORY) != ROK)
327 #if (ERRCLASS & ERRCLS_ADD_RES)
328 SLogError(pst->srcEnt, pst->srcInst, pst->srcProcId,
329 __FILE__, __LINE__, (ErrCls)ERRCLS_ADD_RES,
330 (ErrVal)ERRKWU, (ErrVal)ret1, "pst->selector is invalid\n");
331 #endif /* ERRCLASS & ERRCLS_ADD_RES */
336 if(datReq->rlcId.rbType == CM_LTE_SRB)
338 pst->event = (Event) KWU_EVT_CPLANE_DAT_REQ;
342 pst->event = (Event) KWU_EVT_UPLANE_DAT_REQ;
345 pst->event = (Event) KWU_EVT_DAT_REQ;
347 RETVALUE(SPstTsk(pst,mBuf));
349 if (pst->srcEnt == ENTPJ)
352 KwuDatReqDetl *kwuDatReqDetl = NULLP;
353 elem = SRngGetWIndx(SS_RNG_BUF_DLPDCP_TO_DLRLC);
356 kwuDatReqDetl = (KwuDatReqDetl *) elem;
357 kwuDatReqDetl->spId = spId;
358 kwuDatReqDetl->lcType = datReq->lcType;
359 kwuDatReqDetl->sduId = datReq->sduId;
360 kwuDatReqDetl->rlcId = datReq->rlcId;
361 kwuDatReqDetl->mBuf = mBuf;
362 SRngIncrWIndx(SS_RNG_BUF_DLPDCP_TO_DLRLC);
363 SsRngInfoTbl[SS_RNG_BUF_DLPDCP_TO_DLRLC].pktRate++;
368 SsRngInfoTbl[SS_RNG_BUF_DLPDCP_TO_DLRLC].pktDrop++;
375 switch(pst->selector)
380 ret1 = cmPkKwuDatReqInfo( (datReq), mBuf);
381 #if (ERRCLASS & ERRCLS_ADD_RES)
385 SLogError(pst->srcEnt, pst->srcInst, pst->srcProcId,
386 __FILE__, __LINE__, (ErrCls)ERRCLS_ADD_RES,
387 (ErrVal)EKWU010, (ErrVal)ret1, "Packing failure");
390 #endif /* ERRCLASS & ERRCLS_ADD_RES */
395 CMCHKPK(cmPkPtr,(PTR)datReq, mBuf);
401 CMCHKPKLOG(SPkS16, spId, mBuf, EKWU011, pst);
402 pst->event = (Event) KWU_EVT_DAT_REQ;
403 ret1 = SPstTsk(pst,mBuf);
404 if(pst->selector == KWU_SEL_LC)
406 if (SPutStaticBuffer(pst->region, pst->pool, (Data *)datReq,
407 sizeof(KwuDatReqInfo),SS_SHARABLE_MEMORY) != ROK)
416 } /* cmPkKwuDatReq */
420 PUBLIC S16 cmPkKwuDatIndInfo
422 KwuDatIndInfo *param,
426 PUBLIC S16 cmPkKwuDatIndInfo(param, mBuf)
427 KwuDatIndInfo *param;
431 TRC3(cmPkKwuDatIndInfo);
433 CMCHKPK(SPkU8, param->isOutOfSeq, mBuf);
435 CMCHKPK(cmPkLteRnti, param->tCrnti, mBuf);
437 CMCHKPK(cmPkLteRlcId, ¶m->rlcId, mBuf);
443 PUBLIC S16 cmPkKwuDatInd
446 KwuDatIndInfo* datInd,
450 PUBLIC S16 cmPkKwuDatInd(pst, datInd, mBuf)
452 KwuDatIndInfo* datInd;
459 #ifdef TENB_SPLIT_ARCH
460 #ifdef SS_LOCKLESS_MEMORY
464 KwuDatIndInfo *datIndInfo = NULLP;
468 #ifdef TENB_SPLIT_ARCH
470 #ifdef SS_LOCKLESS_MEMORY
471 mInfo = (SsMsgInfo *)mBuf->b_rptr;
472 mInfo->region = pst->region;
473 #endif /* SS_LOCKLESS_MEMORY */
476 switch(pst->selector)
480 /* When the Selector is LWLC, we need to allocate memory, copy
481 * the contents and pass the pointer of the allocated memory. The
482 * subsequent free would be done during the Unpack function of the
484 if((ret1 = SGetStaticBuffer(pst->region, pst->pool, (Data **)&datIndInfo,
485 sizeof(KwuDatIndInfo),SS_SHARABLE_MEMORY)) != ROK)
487 #if (ERRCLASS & ERRCLS_ADD_RES)
490 SLogError(pst->srcEnt, pst->srcInst, pst->srcProcId,
491 __FILE__, __LINE__, (ErrCls)ERRCLS_ADD_RES,
492 (ErrVal)EKWU028, (ErrVal)0, "SGetMsg() failed");
494 #endif /* ERRCLASS & ERRCLS_ADD_RES */
498 cmMemcpy((U8*)datIndInfo,(U8*)datInd,sizeof(KwuDatIndInfo));
499 CMCHKPK(cmPkPtr,(PTR)datIndInfo, mBuf);
504 #if (ERRCLASS & ERRCLS_ADD_RES)
505 ret1 = cmPkKwuDatIndInfo( (datInd), mBuf);
509 SLogError(pst->srcEnt, pst->srcInst, pst->srcProcId,
510 __FILE__, __LINE__, (ErrCls)ERRCLS_ADD_RES,
511 (ErrVal)EKWU012, (ErrVal)ret1, "Packing failure");
515 cmPkKwuDatIndInfo( (datInd), mBuf);
516 #endif /* ERRCLASS & ERRCLS_ADD_RES */
521 #if (ERRCLASS & ERRCLS_ADD_RES)
522 SLogError(pst->srcEnt, pst->srcInst, pst->srcProcId,
523 __FILE__, __LINE__, (ErrCls)ERRCLS_ADD_RES,
524 (ErrVal)ERRKWU, (ErrVal)ret1, "pst->selector is invalid\n");
525 #endif /* ERRCLASS & ERRCLS_ADD_RES */
529 pst->event = (Event) KWU_EVT_DAT_IND;
531 RETVALUE(SPstTsk(pst,mBuf));
532 } /* cmPkKwuDatInd */
536 PUBLIC S16 cmPkKwuDatCfmInfo
538 KwuDatCfmInfo *param,
542 PUBLIC S16 cmPkKwuDatCfmInfo(param, mBuf)
543 KwuDatCfmInfo *param;
549 TRC3(cmPkKwuDatCfmInfo);
550 for(iter = 0; iter < param->numSduIds; iter++)
552 CMCHKPK(SPkU32, param->sduIds[iter], mBuf);
554 CMCHKPK(SPkU32, param->numSduIds, mBuf);
555 CMCHKPK(cmPkLteRlcId, ¶m->rlcId, mBuf);
557 } /* cmPkKwuDatCfmInfo */
561 PUBLIC S16 cmPkKwuDatCfm
565 KwuDatCfmInfo* datCfm
568 PUBLIC S16 cmPkKwuDatCfm(pst, suId, datCfm)
571 KwuDatCfmInfo* datCfm;
574 #if (ERRCLASS & ERRCLS_ADD_RES)
583 if (SGetMsg(pst->region, pst->pool, &mBuf) != ROK) {
587 switch(pst->selector)
591 CMCHKPK(cmPkPtr,(PTR)datCfm, mBuf);
596 #if (ERRCLASS & ERRCLS_ADD_RES)
597 ret1 = cmPkKwuDatCfmInfo( (datCfm), mBuf);
601 SLogError(pst->srcEnt, pst->srcInst, pst->srcProcId,
602 __FILE__, __LINE__, (ErrCls)ERRCLS_ADD_RES,
603 (ErrVal)EKWU014, (ErrVal)ret1, "Packing failure");
607 cmPkKwuDatCfmInfo( (datCfm), mBuf);
608 #endif /* ERRCLASS & ERRCLS_ADD_RES */
609 if (SPutStaticBuffer(pst->region, pst->pool, (Data *)datCfm,
610 sizeof(KwuDatCfmInfo),SS_SHARABLE_MEMORY) != ROK)
619 #if (ERRCLASS & ERRCLS_ADD_RES)
620 SLogError(pst->srcEnt, pst->srcInst, pst->srcProcId,
621 __FILE__, __LINE__, (ErrCls)ERRCLS_ADD_RES,
622 (ErrVal)ERRKWU, (ErrVal)ret1, "pst->selector is invalid\n");
623 #endif /* ERRCLASS & ERRCLS_ADD_RES */
627 CMCHKPKLOG(SPkS16, suId, mBuf, EKWU015, pst);
628 pst->event = (Event) KWU_EVT_DAT_CFM;
630 RETVALUE(SPstTsk(pst,mBuf));
631 } /* cmPkKwuDatCfm */
635 PUBLIC S16 cmPkKwuDiscSduReq
639 KwuDiscSduInfo* discSdu
642 PUBLIC S16 cmPkKwuDiscSduReq(pst, spId, discSdu)
645 KwuDiscSduInfo* discSdu;
652 KwuDiscSduInfo* discSduInfo = NULLP;
654 TRC3(cmPkKwuDiscSduReq)
657 if (SGetMsg(pst->region, pst->pool, &mBuf) != ROK) {
661 switch(pst->selector)
665 /* When the Selector is LWLC, we need to allocate memory, copy
666 * the contents and pass the pointer of the allocated memory. The
667 * subsequent free would be done during the Unpack function of the
669 if((ret1 = SGetStaticBuffer(pst->region, pst->pool, (Data **)&discSduInfo,
670 sizeof(KwuDiscSduInfo),SS_SHARABLE_MEMORY)) != ROK)
672 #if (ERRCLASS & ERRCLS_ADD_RES)
675 SLogError(pst->srcEnt, pst->srcInst, pst->srcProcId,
676 __FILE__, __LINE__, (ErrCls)ERRCLS_ADD_RES,
677 (ErrVal)EKWU028, (ErrVal)0, "SGetMsg() failed");
679 #endif /* ERRCLASS & ERRCLS_ADD_RES */
683 cmMemcpy((U8*)discSduInfo,(U8*)discSdu,sizeof(KwuDiscSduInfo));
684 CMCHKPK(cmPkPtr,(PTR)discSduInfo, mBuf);
689 #if (ERRCLASS & ERRCLS_ADD_RES)
690 ret1 = cmPkKwuDiscSduInfo( (discSdu), mBuf);
694 SLogError(pst->srcEnt, pst->srcInst, pst->srcProcId,
695 __FILE__, __LINE__, (ErrCls)ERRCLS_ADD_RES,
696 (ErrVal)EKWU016, (ErrVal)ret1, "Packing failure");
700 cmPkKwuDiscSduInfo( (discSdu), mBuf);
701 #endif /* ERRCLASS & ERRCLS_ADD_RES */
706 CMCHKPKLOG(SPkS16, spId, mBuf, EKWU017, pst);
707 pst->event = (Event) KWU_EVT_DISC_SDU_REQ;
709 RETVALUE(SPstTsk(pst,mBuf));
710 } /* cmPkKwuDiscSduReq */
714 PUBLIC S16 cmPkKwuStaIndInfo
716 KwuStaIndInfo *param,
720 PUBLIC S16 cmPkKwuStaIndInfo(param, mBuf)
721 KwuStaIndInfo *param;
727 TRC3(cmPkKwuStaIndInfo);
729 for (i = (param->numSdu - 1); i >= 0; i--)
731 CMCHKPK(SPkU32, param->sduId[(U16)i], mBuf);
733 CMCHKPK(SPkU32, param->numSdu, mBuf);
734 CMCHKPK(cmPkLteRlcId, ¶m->rlcId, mBuf);
739 PUBLIC S16 cmPkKwuFlowCntrlIndInfo
741 KwuFlowCntrlIndInfo *param,
745 PUBLIC S16 cmPkKwuFlowCntrlIndInfo(param, mBuf)
746 KwuFlowCntrlIndInfo *param;
750 TRC3(cmPkKwuFlowCntrlIndInfo);
752 CMCHKPK(SPkU32, param->pktAdmitCnt, mBuf);
753 CMCHKPK(cmPkLteRlcId, ¶m->rlcId, mBuf);
756 } /* cmPkKwuFlowCntrlIndInfo */
759 PUBLIC S16 cmUnpkKwuFlowCntrlIndInfo
761 KwuFlowCntrlIndInfo *param,
765 PUBLIC S16 cmUnpkKwuFlowCntrlIndInfo(param, mBuf)
766 KwuFlowCntrlIndInfo *param;
770 TRC3(cmUnpkKwuFlowCntrlIndInfo);
772 CMCHKUNPK(cmUnpkLteRlcId, ¶m->rlcId, mBuf);
773 CMCHKUNPK(SUnpkU32, ¶m->pktAdmitCnt, mBuf);
776 } /* cmUnpkKwuFlowCntrlIndInfo */
780 PUBLIC S16 cmPkKwuStaInd
784 KwuStaIndInfo* staInd
787 PUBLIC S16 cmPkKwuStaInd(pst, suId, staInd)
790 KwuStaIndInfo* staInd;
794 #if (ERRCLASS & ERRCLS_ADD_RES)
804 if (SGetMsg(pst->region, pst->pool, &mBuf) != ROK) {
808 switch(pst->selector)
812 CMCHKPK(cmPkPtr,(PTR) staInd, mBuf);
817 #if (ERRCLASS & ERRCLS_ADD_RES)
818 ret1 = cmPkKwuStaIndInfo( (staInd), mBuf);
822 SLogError(pst->srcEnt, pst->srcInst, pst->srcProcId,
823 __FILE__, __LINE__, (ErrCls)ERRCLS_ADD_RES,
824 (ErrVal)EKWU018, (ErrVal)ret1, "Packing failure");
828 cmPkKwuStaIndInfo( (staInd), mBuf);
829 #endif /* ERRCLASS & ERRCLS_ADD_RES */
830 if (SPutStaticBuffer(pst->region, pst->pool, (Data *)staInd,
831 sizeof(KwuStaIndInfo),SS_SHARABLE_MEMORY) != ROK)
840 #if (ERRCLASS & ERRCLS_ADD_RES)
841 SLogError(pst->srcEnt, pst->srcInst, pst->srcProcId,
842 __FILE__, __LINE__, (ErrCls)ERRCLS_ADD_RES,
843 (ErrVal)ERRKWU, (ErrVal)ret1, "pst->selector is invalid\n");
848 CMCHKPKLOG(SPkS16, suId, mBuf, EKWU019, pst);
849 pst->event = (Event) KWU_EVT_STA_IND;
851 RETVALUE(SPstTsk(pst,mBuf));
852 } /* cmPkKwuStaInd */
856 PUBLIC S16 cmPkKwuReEstCmpInd
863 PUBLIC S16 cmPkKwuReEstCmpInd(pst, suId, rlcId)
870 #if (ERRCLASS & ERRCLS_ADD_RES)
876 TRC3(cmPkKwuReEstCmpInd)
880 if (SGetMsg(pst->region, pst->pool, &mBuf) != ROK) {
884 switch(pst->selector)
889 #if (ERRCLASS & ERRCLS_ADD_RES)
890 ret1 = cmPkLteRlcId( &rlcId, mBuf);
894 SLogError(pst->srcEnt, pst->srcInst, pst->srcProcId,
895 __FILE__, __LINE__, (ErrCls)ERRCLS_ADD_RES,
896 (ErrVal)EKWU018, (ErrVal)ret1, "Packing failure");
900 cmPkLteRlcId( &rlcId, mBuf);
901 #endif /* ERRCLASS & ERRCLS_ADD_RES */
907 CMCHKPKLOG(SPkS16, suId, mBuf, EKWU019, pst);
908 pst->event = (Event) KWU_EVT_REEST_CMP_IND;
910 RETVALUE(SPstTsk(pst,mBuf));
911 } /* cmPkKwuReEstCmpInd */
913 /* kwu_c_001.main_3 added support for L2 Measurement */
915 PUBLIC S16 cmPkKwuDiscSduCfm
919 KwuDiscSduInfo *discCfmSdu
922 PUBLIC S16 cmPkKwuDiscSduCfm(pst, spId, discCfmSdu)
925 KwuDiscSduInfo *discCfmSdu;
928 #if (ERRCLASS & ERRCLS_ADD_RES)
933 TRC3(cmPkKwuDiscSduCfm)
937 if (SGetMsg(pst->region, pst->pool, &mBuf) != ROK) {
941 switch(pst->selector)
945 CMCHKPK(cmPkPtr,(PTR)discCfmSdu, mBuf);
950 #if (ERRCLASS & ERRCLS_ADD_RES)
951 ret1 = cmPkKwuDiscSduInfo((discCfmSdu), mBuf);
955 SLogError(pst->srcEnt, pst->srcInst, pst->srcProcId,
956 __FILE__, __LINE__, (ErrCls)ERRCLS_ADD_RES,
957 (ErrVal)ERRKWU, (ErrVal)ret1, "Packing failure");
961 cmPkKwuDiscSduInfo((discCfmSdu), mBuf);
962 #endif /* ERRCLASS & ERRCLS_ADD_RES */
963 if (SPutStaticBuffer(pst->region, pst->pool, (Data *)discCfmSdu,
964 sizeof(KwuDiscSduInfo),SS_SHARABLE_MEMORY) != ROK)
973 #if (ERRCLASS & ERRCLS_ADD_RES)
974 SLogError(pst->srcEnt, pst->srcInst, pst->srcProcId,
975 __FILE__, __LINE__, (ErrCls)ERRCLS_ADD_RES,
976 (ErrVal)ERRKWU, (ErrVal)ret1, "pst->selector is invalid\n");
981 CMCHKPKLOG(SPkS16, spId, mBuf, ERRKWU, pst);
982 pst->event = (Event) KWU_EVT_DISC_SDU_CFM;
984 RETVALUE(SPstTsk(pst,mBuf));
985 } /* cmPkKwuDiscSduCfm */
988 PUBLIC S16 cmPkKwuFlowCntrlInd
992 KwuFlowCntrlIndInfo *flowCntrlIndInfo
995 PUBLIC S16 cmPkKwuFlowCntrlInd(pst, suId, flowCntrlIndInfo)
998 KwuFlowCntrlIndInfo *flowCntrlIndInfo;
1003 TRC3(cmPkKwuFlowCntrlInd)
1007 if (SGetMsg(pst->region, pst->pool, &mBuf) != ROK)
1009 SPutStaticBuffer(pst->region,
1011 (Data *)flowCntrlIndInfo,
1012 sizeof(KwuFlowCntrlIndInfo),0);
1016 switch(pst->selector)
1020 cmPkKwuFlowCntrlIndInfo((flowCntrlIndInfo), mBuf);
1022 if (SPutStaticBuffer(pst->region,
1024 (Data *)flowCntrlIndInfo,
1025 sizeof(KwuFlowCntrlIndInfo),0) != ROK)
1035 CMCHKPK(cmPkPtr,(PTR) flowCntrlIndInfo, mBuf);
1041 CMCHKPKLOG(SPkS16, suId, mBuf, ERRKWU, pst);
1042 pst->event = (Event) KWU_EVT_FLOW_CNTRL_IND;
1044 RETVALUE(SPstTsk(pst,mBuf));
1045 } /* cmPkKwuFlowCntrlInd */
1049 PUBLIC S16 cmPkKwuDatAckInfo
1051 KwuDatAckInfo *param,
1055 PUBLIC S16 cmPkKwuDatAckInfo(param, mBuf)
1056 KwuDatAckInfo *param;
1060 TRC3(cmPkKwuDatAckIndInfo);
1062 CMCHKPK(cmPkLteRlcId, ¶m->rlcId, mBuf);
1063 CMCHKPK(SPkU32, param->sduId, mBuf);
1068 PUBLIC S16 cmPkKwuDatAckInd
1072 KwuDatAckInfo* datInd
1075 PUBLIC S16 cmPkKwuDatAckInd(pst, suId, datInd)
1078 KwuDatAckInfo* datInd;
1085 TRC3(cmPkKwuDatAckInd);
1089 if (SGetMsg(pst->region, pst->pool, &mBuf) != ROK) {
1093 ret1 = cmPkKwuDatAckInfo( (datInd), mBuf);
1094 #if (ERRCLASS & ERRCLS_ADD_RES)
1098 SLogError(pst->srcEnt, pst->srcInst, pst->srcProcId,
1099 __FILE__, __LINE__, (ErrCls)ERRCLS_ADD_RES,
1100 (ErrVal)ERRKWU, (ErrVal)ret1, "Packing failure");
1103 #endif /* ERRCLASS & ERRCLS_ADD_RES */
1104 if (SPutStaticBuffer(pst->region, pst->pool, (Data *)datInd,
1105 sizeof(KwuDatAckInfo),SS_SHARABLE_MEMORY) != ROK)
1111 CMCHKPKLOG(SPkS16, suId, mBuf, ERRKWU, pst);
1112 pst->event = (Event) KWU_EVT_DAT_ACK_IND;
1114 RETVALUE(SPstTsk(pst,mBuf));
1115 } /* cmPkKwuDatAckInd */
1116 #endif /* LTE_L2_MEAS */
1120 PUBLIC S16 cmUnpkKwuBndReq
1127 PUBLIC S16 cmUnpkKwuBndReq(func, pst, mBuf)
1136 TRC3(cmUnpkKwuBndReq)
1138 CMCHKUNPKLOG(SUnpkS16, &suId, mBuf, EKWU020, pst);
1139 CMCHKUNPKLOG(SUnpkS16, &spId, mBuf, EKWU021, pst);
1142 RETVALUE((*func)(pst, suId, spId));
1147 PUBLIC S16 cmUnpkKwuBndCfm
1154 PUBLIC S16 cmUnpkKwuBndCfm(func, pst, mBuf)
1163 TRC3(cmUnpkKwuBndCfm)
1165 CMCHKUNPKLOG(SUnpkS16, &suId, mBuf, EKWU022, pst);
1166 CMCHKUNPKLOG(SUnpkU8, &status, mBuf, EKWU023, pst);
1169 RETVALUE((*func)(pst, suId, status));
1174 PUBLIC S16 cmUnpkKwuUbndReq
1181 PUBLIC S16 cmUnpkKwuUbndReq(func, pst, mBuf)
1190 TRC3(cmUnpkKwuUbndReq)
1192 CMCHKUNPKLOG(SUnpkS16, &spId, mBuf, EKWU024, pst);
1193 CMCHKUNPKLOG(SUnpkS16, &reason, mBuf, EKWU025, pst);
1196 RETVALUE((*func)(pst, spId, reason));
1197 } /* cmUnpkKwuUbndReq */
1201 PUBLIC S16 cmUnpkKwuDatReqInfo
1203 KwuDatReqInfo *param,
1207 PUBLIC S16 cmUnpkKwuDatReqInfo(param, mBuf)
1208 KwuDatReqInfo *param;
1213 TRC3(cmUnpkKwuDatReqInfo);
1215 CMCHKUNPK(cmUnpkLteRlcId, ¶m->rlcId, mBuf);
1216 CMCHKUNPK(SUnpkU32, ¶m->sduId, mBuf);
1219 CMCHKUNPK(cmUnpkLteLcType, ¶m->lcType, mBuf);
1220 switch(param->lcType) {
1221 case CM_LTE_LCH_BCCH:
1222 case CM_LTE_LCH_PCCH:
1224 CMCHKUNPK(SUnpkU8,¶m->pnb , mBuf);
1225 CMCHKUNPK(SUnpkU8,¶m->emtcDiReason , mBuf);
1227 CMCHKUNPK(cmUnpkLteTimingInfo, ¶m->tm.tmg, mBuf);
1230 case CM_LTE_LCH_CCCH:
1231 CMCHKUNPK(cmUnpkLteRnti, ¶m->tm.rnti, mBuf);
1233 case CM_LTE_LCH_DTCH:
1234 case CM_LTE_LCH_DCCH:
1245 PUBLIC S16 cmUnpkKwuDatReq
1252 PUBLIC S16 cmUnpkKwuDatReq(func, pst, mBuf)
1258 #if(ERRCLASS & ERRCLS_DEBUG)
1263 KwuDatReqInfo *datReq = NULLP;
1264 KwuDatReqInfo datReqTmp;
1266 TRC3(cmUnpkKwuDatReq)
1268 switch(pst->selector)
1272 CMCHKUNPK(cmUnpkPtr,(PTR *) &datReq, mBuf);
1277 /* Allocate the memory statically as there is no free
1279 datReq = &datReqTmp;
1280 cmMemset((U8 *)datReq, 0, sizeof(KwuDatReqInfo));
1281 #if(ERRCLASS & ERRCLS_DEBUG)
1282 ret1 = cmUnpkKwuDatReqInfo( (datReq), mBuf);
1286 SLogError(pst->dstEnt, pst->dstInst, pst->dstProcId,
1287 __FILE__, __LINE__, (ErrCls)ERRCLS_DEBUG,
1288 (ErrVal)EKWU027, (ErrVal)ret1, "Unpacking failure");
1292 cmUnpkKwuDatReqInfo( (datReq), mBuf);
1293 #endif /* ERRCLASS & ERRCLS_DEBUG */
1298 #if (ERRCLASS & ERRCLS_ADD_RES)
1299 SLogError(pst->srcEnt, pst->srcInst, pst->srcProcId,
1300 __FILE__, __LINE__, (ErrCls)ERRCLS_ADD_RES,
1301 (ErrVal)ERRKWU, (ErrVal)ret1, "pst->selector is invalid\n");
1306 retVal = (*func)(pst, datReq, mBuf);
1307 /* If LWLC is configured, we need to
1308 * free the memory here. */
1309 if(pst->selector == KWU_SEL_LWLC)
1311 retVal = SPutStaticBuffer(pst->region, pst->pool, (Data *)datReq,
1312 sizeof(KwuDatReqInfo),SS_SHARABLE_MEMORY);
1315 } /* cmUnpkKwuDatReq */
1319 PUBLIC S16 cmUnpkKwuDatIndInfo
1321 KwuDatIndInfo *param,
1325 PUBLIC S16 cmUnpkKwuDatIndInfo(param, mBuf)
1326 KwuDatIndInfo *param;
1330 TRC3(cmUnpkKwuDatIndInfo);
1332 CMCHKUNPK(cmUnpkLteRlcId, ¶m->rlcId, mBuf);
1335 CMCHKUNPK(cmUnpkLteRnti, ¶m->tCrnti, mBuf);
1337 CMCHKUNPK(SUnpkU8, ¶m->isOutOfSeq, mBuf);
1343 PUBLIC S16 cmUnpkKwuDatInd
1350 PUBLIC S16 cmUnpkKwuDatInd(func, pst, mBuf)
1356 S16 ret1 = ROK, retVal;
1357 KwuDatIndInfo *datInd = NULLP;
1358 KwuDatIndInfo datIndTmp;
1360 TRC3(cmUnpkKwuDatInd)
1362 switch(pst->selector)
1366 CMCHKUNPK(cmUnpkPtr,(PTR *) &datInd, mBuf);
1371 /*SGetStaticBuffer used as RRC has an equivalent free but PDCP
1372 * doesn't free any memory */
1373 if(pst->dstEnt != ENTPJ)
1375 if((ret1 = SGetStaticBuffer(pst->region, pst->pool, (Data **)&datInd,
1376 sizeof(KwuDatIndInfo),SS_SHARABLE_MEMORY)) != ROK)
1378 #if (ERRCLASS & ERRCLS_ADD_RES)
1381 SLogError(pst->srcEnt, pst->srcInst, pst->srcProcId,
1382 __FILE__, __LINE__, (ErrCls)ERRCLS_ADD_RES,
1383 (ErrVal)EKWU028, (ErrVal)0, "SGetMsg() failed");
1385 #endif /* ERRCLASS & ERRCLS_ADD_RES */
1391 datInd = &datIndTmp;
1394 ret1 = cmUnpkKwuDatIndInfo( (datInd), mBuf);
1395 #if(ERRCLASS & ERRCLS_DEBUG)
1399 SLogError(pst->dstEnt, pst->dstInst, pst->dstProcId,
1400 __FILE__, __LINE__, (ErrCls)ERRCLS_DEBUG,
1401 (ErrVal)EKWU029, (ErrVal)ret1, "Unpacking failure");
1404 #endif /* ERRCLASS & ERRCLS_DEBUG */
1409 SLogError(pst->srcEnt, pst->srcInst, pst->srcProcId,
1410 __FILE__, __LINE__, (ErrCls)ERRCLS_ADD_RES,
1411 (ErrVal)ERRKWU, (ErrVal)ret1, "pst->selector is invalid\n");
1414 retVal = (*func)(pst, datInd, mBuf);
1415 /* If LWLC is configured and the destination entity is PDCP, we need to
1416 * free the memory here. */
1417 if((pst->selector == KWU_SEL_LWLC) && (pst->dstEnt == ENTPJ))
1419 retVal = SPutStaticBuffer(pst->region, pst->pool, (Data *)datInd,
1420 sizeof(KwuDatIndInfo),SS_SHARABLE_MEMORY);
1423 } /* cmUnpkKwuDatInd */
1427 PUBLIC S16 cmUnpkKwuDatCfmInfo
1429 KwuDatCfmInfo *param,
1433 PUBLIC S16 cmUnpkKwuDatCfmInfo(param, mBuf)
1434 KwuDatCfmInfo *param;
1439 TRC3(cmUnpkKwuDatCfmInfo);
1441 CMCHKUNPK(cmUnpkLteRlcId, ¶m->rlcId, mBuf);
1442 CMCHKUNPK(SUnpkU32, ¶m->numSduIds, mBuf);
1444 #ifdef L2_L3_SPLIT /*Work Around */
1445 if (param->numSduIds >= KWU_MAX_DAT_CFM)
1446 param->numSduIds = KWU_MAX_DAT_CFM;
1448 for(iter = param->numSduIds -1; iter >= 0 ; iter--)
1450 CMCHKUNPK(SUnpkU32, ¶m->sduIds[iter], mBuf);
1456 PUBLIC S16 cmUnpkKwuDatCfm
1463 PUBLIC S16 cmUnpkKwuDatCfm(func, pst, mBuf)
1471 KwuDatCfmInfo *datCfm = NULLP;
1473 TRC3(cmUnpkKwuDatCfm)
1475 CMCHKUNPK(SUnpkS16, &(suId), mBuf);
1477 switch(pst->selector)
1481 CMCHKUNPK(cmUnpkPtr,(PTR *) &datCfm, mBuf);
1486 if((ret1 = SGetStaticBuffer(pst->region, pst->pool, (Data **)&datCfm,\
1487 sizeof(KwuDatCfmInfo),SS_SHARABLE_MEMORY)) != ROK)
1489 #if (ERRCLASS & ERRCLS_ADD_RES)
1492 SLogError(pst->srcEnt, pst->srcInst, pst->srcProcId,
1493 __FILE__, __LINE__, (ErrCls)ERRCLS_ADD_RES,
1494 (ErrVal)EKWU030, (ErrVal)0, "SGetMsg() failed");
1496 #endif /* ERRCLASS & ERRCLS_ADD_RES */
1500 cmMemset((U8 *)datCfm, 0, sizeof(KwuDatCfmInfo));
1501 ret1 = cmUnpkKwuDatCfmInfo( (datCfm), mBuf);
1502 #if(ERRCLASS & ERRCLS_DEBUG)
1506 SLogError(pst->dstEnt, pst->dstInst, pst->dstProcId,
1507 __FILE__, __LINE__, (ErrCls)ERRCLS_DEBUG,
1508 (ErrVal)EKWU031, (ErrVal)ret1, "Unpacking failure");
1511 #endif /* ERRCLASS & ERRCLS_DEBUG */
1515 #if (ERRCLASS & ERRCLS_ADD_RES)
1516 SLogError(pst->srcEnt, pst->srcInst, pst->srcProcId,
1517 __FILE__, __LINE__, (ErrCls)ERRCLS_ADD_RES,
1518 (ErrVal)ERRKWU, (ErrVal)ret1, "pst->selector is invalid\n");
1526 RETVALUE((*func)(pst, suId, datCfm));
1527 } /* cmUnpkKwuDatCfm */
1531 PUBLIC S16 cmUnpkKwuDiscSduReq
1538 PUBLIC S16 cmUnpkKwuDiscSduReq(func, pst, mBuf)
1546 KwuDiscSduInfo *discSdu = NULLP;
1549 CMCHKUNPK(SUnpkS16, &(spId), mBuf);
1550 switch(pst->selector)
1554 CMCHKUNPK(cmUnpkPtr,(PTR *) &discSdu, mBuf);
1559 if((ret1 = SGetStaticBuffer(pst->region, pst->pool, (Data **)&discSdu,\
1560 sizeof(KwuDiscSduInfo),SS_SHARABLE_MEMORY)) != ROK)
1562 #if (ERRCLASS & ERRCLS_ADD_RES)
1564 SLogError(pst->srcEnt, pst->srcInst, pst->srcProcId,
1565 __FILE__, __LINE__, (ErrCls)ERRCLS_ADD_RES,
1566 (ErrVal)EKWU032, (ErrVal)0, "SGetMsg() failed");
1568 #endif /* ERRCLASS & ERRCLS_ADD_RES */
1572 cmMemset((U8 *)discSdu, 0, sizeof(KwuDiscSduInfo));
1573 ret1 = cmUnpkKwuDiscSduInfo( (discSdu), mBuf);
1574 #if(ERRCLASS & ERRCLS_DEBUG)
1578 SLogError(pst->dstEnt, pst->dstInst, pst->dstProcId,
1579 __FILE__, __LINE__, (ErrCls)ERRCLS_DEBUG,
1580 (ErrVal)EKWU033, (ErrVal)ret1, "Unpacking failure");
1583 #endif /* ERRCLASS & ERRCLS_DEBUG */
1587 #if (ERRCLASS & ERRCLS_ADD_RES)
1588 SLogError(pst->srcEnt, pst->srcInst, pst->srcProcId,
1589 __FILE__, __LINE__, (ErrCls)ERRCLS_ADD_RES,
1590 (ErrVal)ERRKWU, (ErrVal)ret1, "pst->selector is invalid\n");
1597 RETVALUE((*func)(pst, spId, discSdu));
1598 } /* cmUnpkKwuDiscSduReq */
1602 PUBLIC S16 cmUnpkKwuStaIndInfo
1604 KwuStaIndInfo *param,
1608 PUBLIC S16 cmUnpkKwuStaIndInfo(param, mBuf)
1609 KwuStaIndInfo *param;
1615 TRC3(cmUnpkKwuStaIndInfo);
1617 CMCHKUNPK(cmUnpkLteRlcId, ¶m->rlcId, mBuf);
1618 CMCHKUNPK(SUnpkU32, ¶m->numSdu, mBuf);
1619 for (i = 0; i < param->numSdu; i++)
1621 CMCHKUNPK(SUnpkU32, ¶m->sduId[i], mBuf);
1625 } /* cmUnpkKwuStaIndInfo */
1629 PUBLIC S16 cmUnpkKwuStaInd
1636 PUBLIC S16 cmUnpkKwuStaInd(func, pst, mBuf)
1644 KwuStaIndInfo *staInd = NULLP;
1646 TRC3(cmUnpkKwuStaInd)
1648 CMCHKUNPK(SUnpkS16, &(suId), mBuf);
1650 switch(pst->selector)
1654 CMCHKUNPK(cmUnpkPtr,(PTR *)&staInd, mBuf);
1659 if((ret1 = SGetStaticBuffer(pst->region, pst->pool, (Data **)&staInd,\
1660 sizeof(KwuStaIndInfo),SS_SHARABLE_MEMORY)) != ROK)
1662 #if (ERRCLASS & ERRCLS_ADD_RES)
1665 SLogError(pst->srcEnt, pst->srcInst, pst->srcProcId,
1666 __FILE__, __LINE__, (ErrCls)ERRCLS_ADD_RES,
1667 (ErrVal)EKWU034, (ErrVal)0, "SGetMsg() failed");
1669 #endif /* ERRCLASS & ERRCLS_ADD_RES */
1673 cmMemset((U8 *)staInd, 0, sizeof(KwuStaIndInfo));
1675 ret1 = cmUnpkKwuStaIndInfo( (staInd), mBuf);
1676 #if(ERRCLASS & ERRCLS_DEBUG)
1680 SLogError(pst->dstEnt, pst->dstInst, pst->dstProcId,
1681 __FILE__, __LINE__, (ErrCls)ERRCLS_DEBUG,
1682 (ErrVal)EKWU035, (ErrVal)ret1, "Unpacking failure");
1685 #endif /* ERRCLASS & ERRCLS_DEBUG */
1690 #if(ERRCLASS & ERRCLS_DEBUG)
1691 SLogError(pst->srcEnt, pst->srcInst, pst->srcProcId,
1692 __FILE__, __LINE__, (ErrCls)ERRCLS_ADD_RES,
1693 (ErrVal)ERRKWU, (ErrVal)ret1, "pst->selector is invalid\n");
1699 RETVALUE((*func)(pst, suId, staInd));
1700 } /* cmUnpkKwuStaInd */
1704 PUBLIC S16 cmUnpkKwuReEstCmpInd
1706 KwuReEstCmpInd func,
1711 PUBLIC S16 cmUnpkKwuReEstCmpInd(func, pst, mBuf)
1712 KwuReEstCmpInd func;
1717 #if(ERRCLASS & ERRCLS_DEBUG)
1723 TRC3(cmUnpkKwuReEstCmpInd)
1725 cmMemset((U8 *)&rlcId, 0, sizeof(CmLteRlcId));
1727 CMCHKUNPK(SUnpkS16, &(suId), mBuf);
1728 switch(pst->selector)
1733 #if(ERRCLASS & ERRCLS_DEBUG)
1734 ret1 = cmUnpkLteRlcId( &rlcId, mBuf);
1738 SLogError(pst->dstEnt, pst->dstInst, pst->dstProcId,
1739 __FILE__, __LINE__, (ErrCls)ERRCLS_DEBUG,
1740 (ErrVal)EKWU035, (ErrVal)ret1, "Unpacking failure");
1744 cmUnpkLteRlcId( &rlcId, mBuf);
1745 #endif /* ERRCLASS & ERRCLS_DEBUG */
1752 RETVALUE((*func)(pst, suId, rlcId));
1753 } /* cmUnpkKwuReEstCmpInd */
1755 /* kwu_c_001.main_3 added support for L2 Measurement */
1757 PUBLIC S16 cmUnpkKwuDiscSduCfm
1764 PUBLIC S16 cmUnpkKwuDiscSduCfm(func, pst, mBuf)
1772 KwuDiscSduInfo *discSdu = NULLP;
1774 TRC3(cmUnpkKwuDiscSduCfm);
1776 CMCHKUNPK(SUnpkS16, &(spId), mBuf);
1778 switch(pst->selector)
1782 CMCHKUNPK(cmUnpkPtr,(PTR *) &discSdu, mBuf);
1787 if((ret1 = SGetStaticBuffer(pst->region, pst->pool, (Data **)&discSdu,\
1788 sizeof(KwuDiscSduInfo),SS_SHARABLE_MEMORY)) != ROK)
1790 #if (ERRCLASS & ERRCLS_ADD_RES)
1793 SLogError(pst->srcEnt, pst->srcInst, pst->srcProcId,
1794 __FILE__, __LINE__, (ErrCls)ERRCLS_ADD_RES,
1795 (ErrVal)ERRKWU, (ErrVal)0, "SGetMsg() failed");
1797 #endif /* ERRCLASS & ERRCLS_ADD_RES */
1800 cmMemset((U8 *)discSdu, 0, sizeof(KwuDiscSduInfo));
1802 ret1 = cmUnpkKwuDiscSduInfo( (discSdu), mBuf);
1803 #if(ERRCLASS & ERRCLS_DEBUG)
1807 SLogError(pst->srcEnt, pst->srcInst, pst->srcProcId,
1808 __FILE__, __LINE__, (ErrCls)ERRCLS_ADD_RES,
1809 (ErrVal)ERRKWU, (ErrVal)0, "SGetMsg() failed");
1811 #endif /* ERRCLASS & ERRCLS_DEBUG */
1816 #if(ERRCLASS & ERRCLS_DEBUG)
1817 SLogError(pst->srcEnt, pst->srcInst, pst->srcProcId,
1818 __FILE__, __LINE__, (ErrCls)ERRCLS_ADD_RES,
1819 (ErrVal)ERRKWU, (ErrVal)ret1, "pst->selector is invalid\n");
1825 RETVALUE((*func)(pst, spId, discSdu));
1826 } /* cmUnpkKwuDiscSduCfm */
1828 PUBLIC S16 cmUnpkKwuFlowCntrlInd
1830 KwuFlowCntrlInd func,
1835 PUBLIC S16 cmUnpkKwuFlowCntrlInd(func, pst, mBuf)
1836 KwuFlowCntrlInd func;
1842 KwuFlowCntrlIndInfo *flowCntrlInfo = NULLP;
1844 TRC3(cmUnpkKwuFlowCntrlInd);
1846 CMCHKUNPK(SUnpkS16, &(suId), mBuf);
1847 switch(pst->selector)
1852 if(SGetStaticBuffer(pst->region,
1854 (Data **)&flowCntrlInfo,
1855 sizeof(KwuFlowCntrlIndInfo),0) != ROK)
1861 cmUnpkKwuFlowCntrlIndInfo(flowCntrlInfo, mBuf);
1867 CMCHKUNPK(cmUnpkPtr,(PTR *) &flowCntrlInfo, mBuf);
1875 RETVALUE((*func)(pst, suId, flowCntrlInfo));
1876 } /* cmUnpkKwuFlowCntrlInd */
1880 PUBLIC S16 cmUnpkKwuDatAckInfo
1882 KwuDatAckInfo *param,
1886 PUBLIC S16 cmUnpkKwuDatAckInfo(param, mBuf)
1887 KwuDatAckInfo *param;
1891 TRC3(cmUnpkKwuDatAckInfo);
1893 CMCHKUNPK(SUnpkU32, ¶m->sduId, mBuf);
1894 CMCHKUNPK(cmUnpkLteRlcId, ¶m->rlcId, mBuf);
1901 PUBLIC S16 cmUnpkKwuDatAckInd
1908 PUBLIC S16 cmUnpkKwuDatAckInd(func, pst, mBuf)
1916 KwuDatAckInfo *datInd = NULLP;
1918 TRC3(cmUnpkKwuDatAckInd);
1920 if((ret1 = SGetStaticBuffer(pst->region, pst->pool, (Data **)&datInd,\
1921 sizeof(KwuDatAckInfo),SS_SHARABLE_MEMORY)) != ROK)
1923 #if (ERRCLASS & ERRCLS_ADD_RES)
1926 SLogError(pst->srcEnt, pst->srcInst, pst->srcProcId,
1927 __FILE__, __LINE__, (ErrCls)ERRCLS_ADD_RES,
1928 (ErrVal)ERRKWU, (ErrVal)0, "SGetMsg() failed");
1930 #endif /* ERRCLASS & ERRCLS_ADD_RES */
1934 cmMemset((U8 *)datInd, 0, sizeof(KwuDatAckInfo));
1936 CMCHKUNPK(SUnpkS16, &(suId), mBuf);
1937 ret1 = cmUnpkKwuDatAckInfo( (datInd), mBuf);
1938 #if(ERRCLASS & ERRCLS_DEBUG)
1942 SLogError(pst->dstEnt, pst->dstInst, pst->dstProcId,
1943 __FILE__, __LINE__, (ErrCls)ERRCLS_DEBUG,
1944 (ErrVal)ERRKWU, (ErrVal)ret1, "Unpacking failure");
1947 #endif /* ERRCLASS & ERRCLS_DEBUG */
1949 RETVALUE((*func)(pst, suId, datInd));
1950 } /* cmUnpkKwuDatAckInd */
1951 #endif /* LTE_L2_MEAS */
1954 /**********************************************************************
1956 **********************************************************************/