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
248 KwuDatReqInfo* datReq,
252 PUBLIC S16 cmPkKwuDatReq(pst, spId, datReq, mBuf)
255 KwuDatReqInfo* datReq;
260 #if (ERRCLASS & ERRCLS_ADD_RES)
265 KwuDatReqInfo* datReqInfo;
269 switch(pst->selector)
273 if(pst->srcEnt == ENTPJ)
275 /* When the Selector is LWLC, we need to allocate memory, copy
276 * the contents and pass the pointer of the allocated memory. The
277 * subsequent free would be done during the Unpack function of the
279 if((ret1 = SGetStaticBuffer(pst->region, pst->pool, (Data **)&datReqInfo,
280 sizeof(KwuDatReqInfo),SS_SHARABLE_MEMORY)) != ROK)
282 #if (ERRCLASS & ERRCLS_ADD_RES)
285 SLogError(pst->srcEnt, pst->srcInst, pst->srcProcId,
286 __FILE__, __LINE__, (ErrCls)ERRCLS_ADD_RES,
287 (ErrVal)EKWU028, (ErrVal)0, "SGetMsg() failed");
289 #endif /* ERRCLASS & ERRCLS_ADD_RES */
292 cmMemcpy((U8*)datReqInfo,(U8*)datReq,sizeof(KwuDatReqInfo));
293 CMCHKPK(cmPkPtr,(PTR)datReqInfo, mBuf);
297 CMCHKPK(cmPkPtr,(PTR)datReq, mBuf);
303 #if (ERRCLASS & ERRCLS_ADD_RES)
304 ret1 = cmPkKwuDatReqInfo( (datReq), mBuf);
308 SLogError(pst->srcEnt, pst->srcInst, pst->srcProcId,
309 __FILE__, __LINE__, (ErrCls)ERRCLS_ADD_RES,
310 (ErrVal)EKWU010, (ErrVal)ret1, "Packing failure");
314 cmPkKwuDatReqInfo( (datReq), mBuf);
315 #endif /* ERRCLASS & ERRCLS_ADD_RES */
316 if(pst->srcEnt == ENTNH)
318 if (SPutStaticBuffer(pst->region, pst->pool, (Data *)datReq,
319 sizeof(KwuDatReqInfo),SS_SHARABLE_MEMORY) != ROK)
329 #if (ERRCLASS & ERRCLS_ADD_RES)
330 SLogError(pst->srcEnt, pst->srcInst, pst->srcProcId,
331 __FILE__, __LINE__, (ErrCls)ERRCLS_ADD_RES,
332 (ErrVal)ERRKWU, (ErrVal)ret1, "pst->selector is invalid\n");
333 #endif /* ERRCLASS & ERRCLS_ADD_RES */
337 CMCHKPKLOG(SPkS16, spId, mBuf, EKWU011, pst);
339 if(datReq->rlcId.rbType == CM_LTE_SRB)
341 pst->event = (Event) KWU_EVT_CPLANE_DAT_REQ;
345 pst->event = (Event) KWU_EVT_UPLANE_DAT_REQ;
348 pst->event = (Event) KWU_EVT_DAT_REQ;
350 RETVALUE(SPstTsk(pst,mBuf));
352 if (pst->srcEnt == ENTPJ)
355 KwuDatReqDetl *kwuDatReqDetl = NULLP;
356 elem = SRngGetWIndx(SS_RNG_BUF_DLPDCP_TO_DLRLC);
359 kwuDatReqDetl = (KwuDatReqDetl *) elem;
360 kwuDatReqDetl->spId = spId;
361 kwuDatReqDetl->lcType = datReq->lcType;
362 kwuDatReqDetl->sduId = datReq->sduId;
363 kwuDatReqDetl->rlcId = datReq->rlcId;
364 kwuDatReqDetl->mBuf = mBuf;
365 SRngIncrWIndx(SS_RNG_BUF_DLPDCP_TO_DLRLC);
366 SsRngInfoTbl[SS_RNG_BUF_DLPDCP_TO_DLRLC].pktRate++;
371 SsRngInfoTbl[SS_RNG_BUF_DLPDCP_TO_DLRLC].pktDrop++;
378 switch(pst->selector)
383 ret1 = cmPkKwuDatReqInfo( (datReq), mBuf);
384 #if (ERRCLASS & ERRCLS_ADD_RES)
388 SLogError(pst->srcEnt, pst->srcInst, pst->srcProcId,
389 __FILE__, __LINE__, (ErrCls)ERRCLS_ADD_RES,
390 (ErrVal)EKWU010, (ErrVal)ret1, "Packing failure");
393 #endif /* ERRCLASS & ERRCLS_ADD_RES */
398 CMCHKPK(cmPkPtr,(PTR)datReq, mBuf);
404 CMCHKPKLOG(SPkS16, spId, mBuf, EKWU011, pst);
405 pst->event = (Event) KWU_EVT_DAT_REQ;
406 ret1 = SPstTsk(pst,mBuf);
407 if(pst->selector == KWU_SEL_LC)
409 if (SPutStaticBuffer(pst->region, pst->pool, (Data *)datReq,
410 sizeof(KwuDatReqInfo),SS_SHARABLE_MEMORY) != ROK)
419 } /* cmPkKwuDatReq */
423 PUBLIC S16 cmPkKwuDatIndInfo
425 KwuDatIndInfo *param,
429 PUBLIC S16 cmPkKwuDatIndInfo(param, mBuf)
430 KwuDatIndInfo *param;
434 TRC3(cmPkKwuDatIndInfo);
436 CMCHKPK(SPkU8, param->isOutOfSeq, mBuf);
438 CMCHKPK(cmPkLteRnti, param->tCrnti, mBuf);
440 CMCHKPK(cmPkLteRlcId, ¶m->rlcId, mBuf);
446 PUBLIC S16 cmPkKwuDatInd
450 KwuDatIndInfo* datInd,
454 PUBLIC S16 cmPkKwuDatInd(pst, suId, datInd, mBuf)
457 KwuDatIndInfo* datInd;
464 #ifdef TENB_SPLIT_ARCH
465 #ifdef SS_LOCKLESS_MEMORY
469 KwuDatIndInfo *datIndInfo = NULLP;
473 #ifdef TENB_SPLIT_ARCH
475 #ifdef SS_LOCKLESS_MEMORY
476 mInfo = (SsMsgInfo *)mBuf->b_rptr;
477 mInfo->region = pst->region;
478 #endif /* SS_LOCKLESS_MEMORY */
481 switch(pst->selector)
485 /* When the Selector is LWLC, we need to allocate memory, copy
486 * the contents and pass the pointer of the allocated memory. The
487 * subsequent free would be done during the Unpack function of the
489 if((ret1 = SGetStaticBuffer(pst->region, pst->pool, (Data **)&datIndInfo,
490 sizeof(KwuDatIndInfo),SS_SHARABLE_MEMORY)) != ROK)
492 #if (ERRCLASS & ERRCLS_ADD_RES)
495 SLogError(pst->srcEnt, pst->srcInst, pst->srcProcId,
496 __FILE__, __LINE__, (ErrCls)ERRCLS_ADD_RES,
497 (ErrVal)EKWU028, (ErrVal)0, "SGetMsg() failed");
499 #endif /* ERRCLASS & ERRCLS_ADD_RES */
503 cmMemcpy((U8*)datIndInfo,(U8*)datInd,sizeof(KwuDatIndInfo));
504 CMCHKPK(cmPkPtr,(PTR)datIndInfo, mBuf);
509 #if (ERRCLASS & ERRCLS_ADD_RES)
510 ret1 = cmPkKwuDatIndInfo( (datInd), mBuf);
514 SLogError(pst->srcEnt, pst->srcInst, pst->srcProcId,
515 __FILE__, __LINE__, (ErrCls)ERRCLS_ADD_RES,
516 (ErrVal)EKWU012, (ErrVal)ret1, "Packing failure");
520 cmPkKwuDatIndInfo( (datInd), mBuf);
521 #endif /* ERRCLASS & ERRCLS_ADD_RES */
526 #if (ERRCLASS & ERRCLS_ADD_RES)
527 SLogError(pst->srcEnt, pst->srcInst, pst->srcProcId,
528 __FILE__, __LINE__, (ErrCls)ERRCLS_ADD_RES,
529 (ErrVal)ERRKWU, (ErrVal)ret1, "pst->selector is invalid\n");
530 #endif /* ERRCLASS & ERRCLS_ADD_RES */
534 CMCHKPKLOG(SPkS16, suId, mBuf, EKWU013, pst);
535 pst->event = (Event) KWU_EVT_DAT_IND;
537 RETVALUE(SPstTsk(pst,mBuf));
538 } /* cmPkKwuDatInd */
542 PUBLIC S16 cmPkKwuDatCfmInfo
544 KwuDatCfmInfo *param,
548 PUBLIC S16 cmPkKwuDatCfmInfo(param, mBuf)
549 KwuDatCfmInfo *param;
555 TRC3(cmPkKwuDatCfmInfo);
556 for(iter = 0; iter < param->numSduIds; iter++)
558 CMCHKPK(SPkU32, param->sduIds[iter], mBuf);
560 CMCHKPK(SPkU32, param->numSduIds, mBuf);
561 CMCHKPK(cmPkLteRlcId, ¶m->rlcId, mBuf);
563 } /* cmPkKwuDatCfmInfo */
567 PUBLIC S16 cmPkKwuDatCfm
571 KwuDatCfmInfo* datCfm
574 PUBLIC S16 cmPkKwuDatCfm(pst, suId, datCfm)
577 KwuDatCfmInfo* datCfm;
580 #if (ERRCLASS & ERRCLS_ADD_RES)
589 if (SGetMsg(pst->region, pst->pool, &mBuf) != ROK) {
593 switch(pst->selector)
597 CMCHKPK(cmPkPtr,(PTR)datCfm, mBuf);
602 #if (ERRCLASS & ERRCLS_ADD_RES)
603 ret1 = cmPkKwuDatCfmInfo( (datCfm), mBuf);
607 SLogError(pst->srcEnt, pst->srcInst, pst->srcProcId,
608 __FILE__, __LINE__, (ErrCls)ERRCLS_ADD_RES,
609 (ErrVal)EKWU014, (ErrVal)ret1, "Packing failure");
613 cmPkKwuDatCfmInfo( (datCfm), mBuf);
614 #endif /* ERRCLASS & ERRCLS_ADD_RES */
615 if (SPutStaticBuffer(pst->region, pst->pool, (Data *)datCfm,
616 sizeof(KwuDatCfmInfo),SS_SHARABLE_MEMORY) != ROK)
625 #if (ERRCLASS & ERRCLS_ADD_RES)
626 SLogError(pst->srcEnt, pst->srcInst, pst->srcProcId,
627 __FILE__, __LINE__, (ErrCls)ERRCLS_ADD_RES,
628 (ErrVal)ERRKWU, (ErrVal)ret1, "pst->selector is invalid\n");
629 #endif /* ERRCLASS & ERRCLS_ADD_RES */
633 CMCHKPKLOG(SPkS16, suId, mBuf, EKWU015, pst);
634 pst->event = (Event) KWU_EVT_DAT_CFM;
636 RETVALUE(SPstTsk(pst,mBuf));
637 } /* cmPkKwuDatCfm */
641 PUBLIC S16 cmPkKwuDiscSduReq
645 KwuDiscSduInfo* discSdu
648 PUBLIC S16 cmPkKwuDiscSduReq(pst, spId, discSdu)
651 KwuDiscSduInfo* discSdu;
658 KwuDiscSduInfo* discSduInfo = NULLP;
660 TRC3(cmPkKwuDiscSduReq)
663 if (SGetMsg(pst->region, pst->pool, &mBuf) != ROK) {
667 switch(pst->selector)
671 /* When the Selector is LWLC, we need to allocate memory, copy
672 * the contents and pass the pointer of the allocated memory. The
673 * subsequent free would be done during the Unpack function of the
675 if((ret1 = SGetStaticBuffer(pst->region, pst->pool, (Data **)&discSduInfo,
676 sizeof(KwuDiscSduInfo),SS_SHARABLE_MEMORY)) != ROK)
678 #if (ERRCLASS & ERRCLS_ADD_RES)
681 SLogError(pst->srcEnt, pst->srcInst, pst->srcProcId,
682 __FILE__, __LINE__, (ErrCls)ERRCLS_ADD_RES,
683 (ErrVal)EKWU028, (ErrVal)0, "SGetMsg() failed");
685 #endif /* ERRCLASS & ERRCLS_ADD_RES */
689 cmMemcpy((U8*)discSduInfo,(U8*)discSdu,sizeof(KwuDiscSduInfo));
690 CMCHKPK(cmPkPtr,(PTR)discSduInfo, mBuf);
695 #if (ERRCLASS & ERRCLS_ADD_RES)
696 ret1 = cmPkKwuDiscSduInfo( (discSdu), mBuf);
700 SLogError(pst->srcEnt, pst->srcInst, pst->srcProcId,
701 __FILE__, __LINE__, (ErrCls)ERRCLS_ADD_RES,
702 (ErrVal)EKWU016, (ErrVal)ret1, "Packing failure");
706 cmPkKwuDiscSduInfo( (discSdu), mBuf);
707 #endif /* ERRCLASS & ERRCLS_ADD_RES */
712 CMCHKPKLOG(SPkS16, spId, mBuf, EKWU017, pst);
713 pst->event = (Event) KWU_EVT_DISC_SDU_REQ;
715 RETVALUE(SPstTsk(pst,mBuf));
716 } /* cmPkKwuDiscSduReq */
720 PUBLIC S16 cmPkKwuStaIndInfo
722 KwuStaIndInfo *param,
726 PUBLIC S16 cmPkKwuStaIndInfo(param, mBuf)
727 KwuStaIndInfo *param;
733 TRC3(cmPkKwuStaIndInfo);
735 for (i = (param->numSdu - 1); i >= 0; i--)
737 CMCHKPK(SPkU32, param->sduId[(U16)i], mBuf);
739 CMCHKPK(SPkU32, param->numSdu, mBuf);
740 CMCHKPK(cmPkLteRlcId, ¶m->rlcId, mBuf);
745 PUBLIC S16 cmPkKwuFlowCntrlIndInfo
747 KwuFlowCntrlIndInfo *param,
751 PUBLIC S16 cmPkKwuFlowCntrlIndInfo(param, mBuf)
752 KwuFlowCntrlIndInfo *param;
756 TRC3(cmPkKwuFlowCntrlIndInfo);
758 CMCHKPK(SPkU32, param->pktAdmitCnt, mBuf);
759 CMCHKPK(cmPkLteRlcId, ¶m->rlcId, mBuf);
762 } /* cmPkKwuFlowCntrlIndInfo */
765 PUBLIC S16 cmUnpkKwuFlowCntrlIndInfo
767 KwuFlowCntrlIndInfo *param,
771 PUBLIC S16 cmUnpkKwuFlowCntrlIndInfo(param, mBuf)
772 KwuFlowCntrlIndInfo *param;
776 TRC3(cmUnpkKwuFlowCntrlIndInfo);
778 CMCHKUNPK(cmUnpkLteRlcId, ¶m->rlcId, mBuf);
779 CMCHKUNPK(SUnpkU32, ¶m->pktAdmitCnt, mBuf);
782 } /* cmUnpkKwuFlowCntrlIndInfo */
786 PUBLIC S16 cmPkKwuStaInd
790 KwuStaIndInfo* staInd
793 PUBLIC S16 cmPkKwuStaInd(pst, suId, staInd)
796 KwuStaIndInfo* staInd;
800 #if (ERRCLASS & ERRCLS_ADD_RES)
810 if (SGetMsg(pst->region, pst->pool, &mBuf) != ROK) {
814 switch(pst->selector)
818 CMCHKPK(cmPkPtr,(PTR) staInd, mBuf);
823 #if (ERRCLASS & ERRCLS_ADD_RES)
824 ret1 = cmPkKwuStaIndInfo( (staInd), mBuf);
828 SLogError(pst->srcEnt, pst->srcInst, pst->srcProcId,
829 __FILE__, __LINE__, (ErrCls)ERRCLS_ADD_RES,
830 (ErrVal)EKWU018, (ErrVal)ret1, "Packing failure");
834 cmPkKwuStaIndInfo( (staInd), mBuf);
835 #endif /* ERRCLASS & ERRCLS_ADD_RES */
836 if (SPutStaticBuffer(pst->region, pst->pool, (Data *)staInd,
837 sizeof(KwuStaIndInfo),SS_SHARABLE_MEMORY) != ROK)
846 #if (ERRCLASS & ERRCLS_ADD_RES)
847 SLogError(pst->srcEnt, pst->srcInst, pst->srcProcId,
848 __FILE__, __LINE__, (ErrCls)ERRCLS_ADD_RES,
849 (ErrVal)ERRKWU, (ErrVal)ret1, "pst->selector is invalid\n");
854 CMCHKPKLOG(SPkS16, suId, mBuf, EKWU019, pst);
855 pst->event = (Event) KWU_EVT_STA_IND;
857 RETVALUE(SPstTsk(pst,mBuf));
858 } /* cmPkKwuStaInd */
862 PUBLIC S16 cmPkKwuReEstCmpInd
869 PUBLIC S16 cmPkKwuReEstCmpInd(pst, suId, rlcId)
876 #if (ERRCLASS & ERRCLS_ADD_RES)
882 TRC3(cmPkKwuReEstCmpInd)
886 if (SGetMsg(pst->region, pst->pool, &mBuf) != ROK) {
890 switch(pst->selector)
895 #if (ERRCLASS & ERRCLS_ADD_RES)
896 ret1 = cmPkLteRlcId( &rlcId, mBuf);
900 SLogError(pst->srcEnt, pst->srcInst, pst->srcProcId,
901 __FILE__, __LINE__, (ErrCls)ERRCLS_ADD_RES,
902 (ErrVal)EKWU018, (ErrVal)ret1, "Packing failure");
906 cmPkLteRlcId( &rlcId, mBuf);
907 #endif /* ERRCLASS & ERRCLS_ADD_RES */
913 CMCHKPKLOG(SPkS16, suId, mBuf, EKWU019, pst);
914 pst->event = (Event) KWU_EVT_REEST_CMP_IND;
916 RETVALUE(SPstTsk(pst,mBuf));
917 } /* cmPkKwuReEstCmpInd */
919 /* kwu_c_001.main_3 added support for L2 Measurement */
921 PUBLIC S16 cmPkKwuDiscSduCfm
925 KwuDiscSduInfo *discCfmSdu
928 PUBLIC S16 cmPkKwuDiscSduCfm(pst, spId, discCfmSdu)
931 KwuDiscSduInfo *discCfmSdu;
934 #if (ERRCLASS & ERRCLS_ADD_RES)
939 TRC3(cmPkKwuDiscSduCfm)
943 if (SGetMsg(pst->region, pst->pool, &mBuf) != ROK) {
947 switch(pst->selector)
951 CMCHKPK(cmPkPtr,(PTR)discCfmSdu, mBuf);
956 #if (ERRCLASS & ERRCLS_ADD_RES)
957 ret1 = cmPkKwuDiscSduInfo((discCfmSdu), mBuf);
961 SLogError(pst->srcEnt, pst->srcInst, pst->srcProcId,
962 __FILE__, __LINE__, (ErrCls)ERRCLS_ADD_RES,
963 (ErrVal)ERRKWU, (ErrVal)ret1, "Packing failure");
967 cmPkKwuDiscSduInfo((discCfmSdu), mBuf);
968 #endif /* ERRCLASS & ERRCLS_ADD_RES */
969 if (SPutStaticBuffer(pst->region, pst->pool, (Data *)discCfmSdu,
970 sizeof(KwuDiscSduInfo),SS_SHARABLE_MEMORY) != ROK)
979 #if (ERRCLASS & ERRCLS_ADD_RES)
980 SLogError(pst->srcEnt, pst->srcInst, pst->srcProcId,
981 __FILE__, __LINE__, (ErrCls)ERRCLS_ADD_RES,
982 (ErrVal)ERRKWU, (ErrVal)ret1, "pst->selector is invalid\n");
987 CMCHKPKLOG(SPkS16, spId, mBuf, ERRKWU, pst);
988 pst->event = (Event) KWU_EVT_DISC_SDU_CFM;
990 RETVALUE(SPstTsk(pst,mBuf));
991 } /* cmPkKwuDiscSduCfm */
994 PUBLIC S16 cmPkKwuFlowCntrlInd
998 KwuFlowCntrlIndInfo *flowCntrlIndInfo
1001 PUBLIC S16 cmPkKwuFlowCntrlInd(pst, suId, flowCntrlIndInfo)
1004 KwuFlowCntrlIndInfo *flowCntrlIndInfo;
1009 TRC3(cmPkKwuFlowCntrlInd)
1013 if (SGetMsg(pst->region, pst->pool, &mBuf) != ROK)
1015 SPutStaticBuffer(pst->region,
1017 (Data *)flowCntrlIndInfo,
1018 sizeof(KwuFlowCntrlIndInfo),0);
1022 switch(pst->selector)
1026 cmPkKwuFlowCntrlIndInfo((flowCntrlIndInfo), mBuf);
1028 if (SPutStaticBuffer(pst->region,
1030 (Data *)flowCntrlIndInfo,
1031 sizeof(KwuFlowCntrlIndInfo),0) != ROK)
1041 CMCHKPK(cmPkPtr,(PTR) flowCntrlIndInfo, mBuf);
1047 CMCHKPKLOG(SPkS16, suId, mBuf, ERRKWU, pst);
1048 pst->event = (Event) KWU_EVT_FLOW_CNTRL_IND;
1050 RETVALUE(SPstTsk(pst,mBuf));
1051 } /* cmPkKwuFlowCntrlInd */
1055 PUBLIC S16 cmPkKwuDatAckInfo
1057 KwuDatAckInfo *param,
1061 PUBLIC S16 cmPkKwuDatAckInfo(param, mBuf)
1062 KwuDatAckInfo *param;
1066 TRC3(cmPkKwuDatAckIndInfo);
1068 CMCHKPK(cmPkLteRlcId, ¶m->rlcId, mBuf);
1069 CMCHKPK(SPkU32, param->sduId, mBuf);
1074 PUBLIC S16 cmPkKwuDatAckInd
1078 KwuDatAckInfo* datInd
1081 PUBLIC S16 cmPkKwuDatAckInd(pst, suId, datInd)
1084 KwuDatAckInfo* datInd;
1091 TRC3(cmPkKwuDatAckInd);
1095 if (SGetMsg(pst->region, pst->pool, &mBuf) != ROK) {
1099 ret1 = cmPkKwuDatAckInfo( (datInd), mBuf);
1100 #if (ERRCLASS & ERRCLS_ADD_RES)
1104 SLogError(pst->srcEnt, pst->srcInst, pst->srcProcId,
1105 __FILE__, __LINE__, (ErrCls)ERRCLS_ADD_RES,
1106 (ErrVal)ERRKWU, (ErrVal)ret1, "Packing failure");
1109 #endif /* ERRCLASS & ERRCLS_ADD_RES */
1110 if (SPutStaticBuffer(pst->region, pst->pool, (Data *)datInd,
1111 sizeof(KwuDatAckInfo),SS_SHARABLE_MEMORY) != ROK)
1117 CMCHKPKLOG(SPkS16, suId, mBuf, ERRKWU, pst);
1118 pst->event = (Event) KWU_EVT_DAT_ACK_IND;
1120 RETVALUE(SPstTsk(pst,mBuf));
1121 } /* cmPkKwuDatAckInd */
1122 #endif /* LTE_L2_MEAS */
1126 PUBLIC S16 cmUnpkKwuBndReq
1133 PUBLIC S16 cmUnpkKwuBndReq(func, pst, mBuf)
1142 TRC3(cmUnpkKwuBndReq)
1144 CMCHKUNPKLOG(SUnpkS16, &suId, mBuf, EKWU020, pst);
1145 CMCHKUNPKLOG(SUnpkS16, &spId, mBuf, EKWU021, pst);
1148 RETVALUE((*func)(pst, suId, spId));
1153 PUBLIC S16 cmUnpkKwuBndCfm
1160 PUBLIC S16 cmUnpkKwuBndCfm(func, pst, mBuf)
1169 TRC3(cmUnpkKwuBndCfm)
1171 CMCHKUNPKLOG(SUnpkS16, &suId, mBuf, EKWU022, pst);
1172 CMCHKUNPKLOG(SUnpkU8, &status, mBuf, EKWU023, pst);
1175 RETVALUE((*func)(pst, suId, status));
1180 PUBLIC S16 cmUnpkKwuUbndReq
1187 PUBLIC S16 cmUnpkKwuUbndReq(func, pst, mBuf)
1196 TRC3(cmUnpkKwuUbndReq)
1198 CMCHKUNPKLOG(SUnpkS16, &spId, mBuf, EKWU024, pst);
1199 CMCHKUNPKLOG(SUnpkS16, &reason, mBuf, EKWU025, pst);
1202 RETVALUE((*func)(pst, spId, reason));
1203 } /* cmUnpkKwuUbndReq */
1207 PUBLIC S16 cmUnpkKwuDatReqInfo
1209 KwuDatReqInfo *param,
1213 PUBLIC S16 cmUnpkKwuDatReqInfo(param, mBuf)
1214 KwuDatReqInfo *param;
1219 TRC3(cmUnpkKwuDatReqInfo);
1221 CMCHKUNPK(cmUnpkLteRlcId, ¶m->rlcId, mBuf);
1222 CMCHKUNPK(SUnpkU32, ¶m->sduId, mBuf);
1225 CMCHKUNPK(cmUnpkLteLcType, ¶m->lcType, mBuf);
1226 switch(param->lcType) {
1227 case CM_LTE_LCH_BCCH:
1228 case CM_LTE_LCH_PCCH:
1230 CMCHKUNPK(SUnpkU8,¶m->pnb , mBuf);
1231 CMCHKUNPK(SUnpkU8,¶m->emtcDiReason , mBuf);
1233 CMCHKUNPK(cmUnpkLteTimingInfo, ¶m->tm.tmg, mBuf);
1236 case CM_LTE_LCH_CCCH:
1237 CMCHKUNPK(cmUnpkLteRnti, ¶m->tm.rnti, mBuf);
1239 case CM_LTE_LCH_DTCH:
1240 case CM_LTE_LCH_DCCH:
1251 PUBLIC S16 cmUnpkKwuDatReq
1258 PUBLIC S16 cmUnpkKwuDatReq(func, pst, mBuf)
1264 #if(ERRCLASS & ERRCLS_DEBUG)
1269 KwuDatReqInfo *datReq = NULLP;
1270 KwuDatReqInfo datReqTmp;
1272 TRC3(cmUnpkKwuDatReq)
1275 CMCHKUNPK(SUnpkS16, &(spId), mBuf);
1277 switch(pst->selector)
1281 CMCHKUNPK(cmUnpkPtr,(PTR *) &datReq, mBuf);
1286 /* Allocate the memory statically as there is no free
1288 datReq = &datReqTmp;
1289 cmMemset((U8 *)datReq, 0, sizeof(KwuDatReqInfo));
1290 #if(ERRCLASS & ERRCLS_DEBUG)
1291 ret1 = cmUnpkKwuDatReqInfo( (datReq), mBuf);
1295 SLogError(pst->dstEnt, pst->dstInst, pst->dstProcId,
1296 __FILE__, __LINE__, (ErrCls)ERRCLS_DEBUG,
1297 (ErrVal)EKWU027, (ErrVal)ret1, "Unpacking failure");
1301 cmUnpkKwuDatReqInfo( (datReq), mBuf);
1302 #endif /* ERRCLASS & ERRCLS_DEBUG */
1307 #if (ERRCLASS & ERRCLS_ADD_RES)
1308 SLogError(pst->srcEnt, pst->srcInst, pst->srcProcId,
1309 __FILE__, __LINE__, (ErrCls)ERRCLS_ADD_RES,
1310 (ErrVal)ERRKWU, (ErrVal)ret1, "pst->selector is invalid\n");
1315 retVal = (*func)(pst, spId, datReq, mBuf);
1316 /* If LWLC is configured, we need to
1317 * free the memory here. */
1318 if(pst->selector == KWU_SEL_LWLC)
1320 retVal = SPutStaticBuffer(pst->region, pst->pool, (Data *)datReq,
1321 sizeof(KwuDatReqInfo),SS_SHARABLE_MEMORY);
1324 } /* cmUnpkKwuDatReq */
1328 PUBLIC S16 cmUnpkKwuDatIndInfo
1330 KwuDatIndInfo *param,
1334 PUBLIC S16 cmUnpkKwuDatIndInfo(param, mBuf)
1335 KwuDatIndInfo *param;
1339 TRC3(cmUnpkKwuDatIndInfo);
1341 CMCHKUNPK(cmUnpkLteRlcId, ¶m->rlcId, mBuf);
1344 CMCHKUNPK(cmUnpkLteRnti, ¶m->tCrnti, mBuf);
1346 CMCHKUNPK(SUnpkU8, ¶m->isOutOfSeq, mBuf);
1352 PUBLIC S16 cmUnpkKwuDatInd
1359 PUBLIC S16 cmUnpkKwuDatInd(func, pst, mBuf)
1365 S16 ret1 = ROK, retVal;
1367 KwuDatIndInfo *datInd = NULLP;
1368 KwuDatIndInfo datIndTmp;
1370 TRC3(cmUnpkKwuDatInd)
1372 CMCHKUNPK(SUnpkS16, &(suId), mBuf);
1374 switch(pst->selector)
1378 CMCHKUNPK(cmUnpkPtr,(PTR *) &datInd, mBuf);
1383 /*SGetStaticBuffer used as RRC has an equivalent free but PDCP
1384 * doesn't free any memory */
1385 if(pst->dstEnt != ENTPJ)
1387 if((ret1 = SGetStaticBuffer(pst->region, pst->pool, (Data **)&datInd,
1388 sizeof(KwuDatIndInfo),SS_SHARABLE_MEMORY)) != ROK)
1390 #if (ERRCLASS & ERRCLS_ADD_RES)
1393 SLogError(pst->srcEnt, pst->srcInst, pst->srcProcId,
1394 __FILE__, __LINE__, (ErrCls)ERRCLS_ADD_RES,
1395 (ErrVal)EKWU028, (ErrVal)0, "SGetMsg() failed");
1397 #endif /* ERRCLASS & ERRCLS_ADD_RES */
1403 datInd = &datIndTmp;
1406 ret1 = cmUnpkKwuDatIndInfo( (datInd), mBuf);
1407 #if(ERRCLASS & ERRCLS_DEBUG)
1411 SLogError(pst->dstEnt, pst->dstInst, pst->dstProcId,
1412 __FILE__, __LINE__, (ErrCls)ERRCLS_DEBUG,
1413 (ErrVal)EKWU029, (ErrVal)ret1, "Unpacking failure");
1416 #endif /* ERRCLASS & ERRCLS_DEBUG */
1421 SLogError(pst->srcEnt, pst->srcInst, pst->srcProcId,
1422 __FILE__, __LINE__, (ErrCls)ERRCLS_ADD_RES,
1423 (ErrVal)ERRKWU, (ErrVal)ret1, "pst->selector is invalid\n");
1426 retVal = (*func)(pst, suId, datInd, mBuf);
1427 /* If LWLC is configured and the destination entity is PDCP, we need to
1428 * free the memory here. */
1429 if((pst->selector == KWU_SEL_LWLC) && (pst->dstEnt == ENTPJ))
1431 retVal = SPutStaticBuffer(pst->region, pst->pool, (Data *)datInd,
1432 sizeof(KwuDatIndInfo),SS_SHARABLE_MEMORY);
1435 } /* cmUnpkKwuDatInd */
1439 PUBLIC S16 cmUnpkKwuDatCfmInfo
1441 KwuDatCfmInfo *param,
1445 PUBLIC S16 cmUnpkKwuDatCfmInfo(param, mBuf)
1446 KwuDatCfmInfo *param;
1451 TRC3(cmUnpkKwuDatCfmInfo);
1453 CMCHKUNPK(cmUnpkLteRlcId, ¶m->rlcId, mBuf);
1454 CMCHKUNPK(SUnpkU32, ¶m->numSduIds, mBuf);
1456 #ifdef L2_L3_SPLIT /*Work Around */
1457 if (param->numSduIds >= KWU_MAX_DAT_CFM)
1458 param->numSduIds = KWU_MAX_DAT_CFM;
1460 for(iter = param->numSduIds -1; iter >= 0 ; iter--)
1462 CMCHKUNPK(SUnpkU32, ¶m->sduIds[iter], mBuf);
1468 PUBLIC S16 cmUnpkKwuDatCfm
1475 PUBLIC S16 cmUnpkKwuDatCfm(func, pst, mBuf)
1483 KwuDatCfmInfo *datCfm = NULLP;
1485 TRC3(cmUnpkKwuDatCfm)
1487 CMCHKUNPK(SUnpkS16, &(suId), mBuf);
1489 switch(pst->selector)
1493 CMCHKUNPK(cmUnpkPtr,(PTR *) &datCfm, mBuf);
1498 if((ret1 = SGetStaticBuffer(pst->region, pst->pool, (Data **)&datCfm,\
1499 sizeof(KwuDatCfmInfo),SS_SHARABLE_MEMORY)) != ROK)
1501 #if (ERRCLASS & ERRCLS_ADD_RES)
1504 SLogError(pst->srcEnt, pst->srcInst, pst->srcProcId,
1505 __FILE__, __LINE__, (ErrCls)ERRCLS_ADD_RES,
1506 (ErrVal)EKWU030, (ErrVal)0, "SGetMsg() failed");
1508 #endif /* ERRCLASS & ERRCLS_ADD_RES */
1512 cmMemset((U8 *)datCfm, 0, sizeof(KwuDatCfmInfo));
1513 ret1 = cmUnpkKwuDatCfmInfo( (datCfm), mBuf);
1514 #if(ERRCLASS & ERRCLS_DEBUG)
1518 SLogError(pst->dstEnt, pst->dstInst, pst->dstProcId,
1519 __FILE__, __LINE__, (ErrCls)ERRCLS_DEBUG,
1520 (ErrVal)EKWU031, (ErrVal)ret1, "Unpacking failure");
1523 #endif /* ERRCLASS & ERRCLS_DEBUG */
1527 #if (ERRCLASS & ERRCLS_ADD_RES)
1528 SLogError(pst->srcEnt, pst->srcInst, pst->srcProcId,
1529 __FILE__, __LINE__, (ErrCls)ERRCLS_ADD_RES,
1530 (ErrVal)ERRKWU, (ErrVal)ret1, "pst->selector is invalid\n");
1538 RETVALUE((*func)(pst, suId, datCfm));
1539 } /* cmUnpkKwuDatCfm */
1543 PUBLIC S16 cmUnpkKwuDiscSduReq
1550 PUBLIC S16 cmUnpkKwuDiscSduReq(func, pst, mBuf)
1558 KwuDiscSduInfo *discSdu = NULLP;
1561 CMCHKUNPK(SUnpkS16, &(spId), mBuf);
1562 switch(pst->selector)
1566 CMCHKUNPK(cmUnpkPtr,(PTR *) &discSdu, mBuf);
1571 if((ret1 = SGetStaticBuffer(pst->region, pst->pool, (Data **)&discSdu,\
1572 sizeof(KwuDiscSduInfo),SS_SHARABLE_MEMORY)) != ROK)
1574 #if (ERRCLASS & ERRCLS_ADD_RES)
1576 SLogError(pst->srcEnt, pst->srcInst, pst->srcProcId,
1577 __FILE__, __LINE__, (ErrCls)ERRCLS_ADD_RES,
1578 (ErrVal)EKWU032, (ErrVal)0, "SGetMsg() failed");
1580 #endif /* ERRCLASS & ERRCLS_ADD_RES */
1584 cmMemset((U8 *)discSdu, 0, sizeof(KwuDiscSduInfo));
1585 ret1 = cmUnpkKwuDiscSduInfo( (discSdu), mBuf);
1586 #if(ERRCLASS & ERRCLS_DEBUG)
1590 SLogError(pst->dstEnt, pst->dstInst, pst->dstProcId,
1591 __FILE__, __LINE__, (ErrCls)ERRCLS_DEBUG,
1592 (ErrVal)EKWU033, (ErrVal)ret1, "Unpacking failure");
1595 #endif /* ERRCLASS & ERRCLS_DEBUG */
1599 #if (ERRCLASS & ERRCLS_ADD_RES)
1600 SLogError(pst->srcEnt, pst->srcInst, pst->srcProcId,
1601 __FILE__, __LINE__, (ErrCls)ERRCLS_ADD_RES,
1602 (ErrVal)ERRKWU, (ErrVal)ret1, "pst->selector is invalid\n");
1609 RETVALUE((*func)(pst, spId, discSdu));
1610 } /* cmUnpkKwuDiscSduReq */
1614 PUBLIC S16 cmUnpkKwuStaIndInfo
1616 KwuStaIndInfo *param,
1620 PUBLIC S16 cmUnpkKwuStaIndInfo(param, mBuf)
1621 KwuStaIndInfo *param;
1627 TRC3(cmUnpkKwuStaIndInfo);
1629 CMCHKUNPK(cmUnpkLteRlcId, ¶m->rlcId, mBuf);
1630 CMCHKUNPK(SUnpkU32, ¶m->numSdu, mBuf);
1631 for (i = 0; i < param->numSdu; i++)
1633 CMCHKUNPK(SUnpkU32, ¶m->sduId[i], mBuf);
1637 } /* cmUnpkKwuStaIndInfo */
1641 PUBLIC S16 cmUnpkKwuStaInd
1648 PUBLIC S16 cmUnpkKwuStaInd(func, pst, mBuf)
1656 KwuStaIndInfo *staInd = NULLP;
1658 TRC3(cmUnpkKwuStaInd)
1660 CMCHKUNPK(SUnpkS16, &(suId), mBuf);
1662 switch(pst->selector)
1666 CMCHKUNPK(cmUnpkPtr,(PTR *)&staInd, mBuf);
1671 if((ret1 = SGetStaticBuffer(pst->region, pst->pool, (Data **)&staInd,\
1672 sizeof(KwuStaIndInfo),SS_SHARABLE_MEMORY)) != ROK)
1674 #if (ERRCLASS & ERRCLS_ADD_RES)
1677 SLogError(pst->srcEnt, pst->srcInst, pst->srcProcId,
1678 __FILE__, __LINE__, (ErrCls)ERRCLS_ADD_RES,
1679 (ErrVal)EKWU034, (ErrVal)0, "SGetMsg() failed");
1681 #endif /* ERRCLASS & ERRCLS_ADD_RES */
1685 cmMemset((U8 *)staInd, 0, sizeof(KwuStaIndInfo));
1687 ret1 = cmUnpkKwuStaIndInfo( (staInd), mBuf);
1688 #if(ERRCLASS & ERRCLS_DEBUG)
1692 SLogError(pst->dstEnt, pst->dstInst, pst->dstProcId,
1693 __FILE__, __LINE__, (ErrCls)ERRCLS_DEBUG,
1694 (ErrVal)EKWU035, (ErrVal)ret1, "Unpacking failure");
1697 #endif /* ERRCLASS & ERRCLS_DEBUG */
1702 #if(ERRCLASS & ERRCLS_DEBUG)
1703 SLogError(pst->srcEnt, pst->srcInst, pst->srcProcId,
1704 __FILE__, __LINE__, (ErrCls)ERRCLS_ADD_RES,
1705 (ErrVal)ERRKWU, (ErrVal)ret1, "pst->selector is invalid\n");
1711 RETVALUE((*func)(pst, suId, staInd));
1712 } /* cmUnpkKwuStaInd */
1716 PUBLIC S16 cmUnpkKwuReEstCmpInd
1718 KwuReEstCmpInd func,
1723 PUBLIC S16 cmUnpkKwuReEstCmpInd(func, pst, mBuf)
1724 KwuReEstCmpInd func;
1729 #if(ERRCLASS & ERRCLS_DEBUG)
1735 TRC3(cmUnpkKwuReEstCmpInd)
1737 cmMemset((U8 *)&rlcId, 0, sizeof(CmLteRlcId));
1739 CMCHKUNPK(SUnpkS16, &(suId), mBuf);
1740 switch(pst->selector)
1745 #if(ERRCLASS & ERRCLS_DEBUG)
1746 ret1 = cmUnpkLteRlcId( &rlcId, mBuf);
1750 SLogError(pst->dstEnt, pst->dstInst, pst->dstProcId,
1751 __FILE__, __LINE__, (ErrCls)ERRCLS_DEBUG,
1752 (ErrVal)EKWU035, (ErrVal)ret1, "Unpacking failure");
1756 cmUnpkLteRlcId( &rlcId, mBuf);
1757 #endif /* ERRCLASS & ERRCLS_DEBUG */
1764 RETVALUE((*func)(pst, suId, rlcId));
1765 } /* cmUnpkKwuReEstCmpInd */
1767 /* kwu_c_001.main_3 added support for L2 Measurement */
1769 PUBLIC S16 cmUnpkKwuDiscSduCfm
1776 PUBLIC S16 cmUnpkKwuDiscSduCfm(func, pst, mBuf)
1784 KwuDiscSduInfo *discSdu = NULLP;
1786 TRC3(cmUnpkKwuDiscSduCfm);
1788 CMCHKUNPK(SUnpkS16, &(spId), mBuf);
1790 switch(pst->selector)
1794 CMCHKUNPK(cmUnpkPtr,(PTR *) &discSdu, mBuf);
1799 if((ret1 = SGetStaticBuffer(pst->region, pst->pool, (Data **)&discSdu,\
1800 sizeof(KwuDiscSduInfo),SS_SHARABLE_MEMORY)) != ROK)
1802 #if (ERRCLASS & ERRCLS_ADD_RES)
1805 SLogError(pst->srcEnt, pst->srcInst, pst->srcProcId,
1806 __FILE__, __LINE__, (ErrCls)ERRCLS_ADD_RES,
1807 (ErrVal)ERRKWU, (ErrVal)0, "SGetMsg() failed");
1809 #endif /* ERRCLASS & ERRCLS_ADD_RES */
1812 cmMemset((U8 *)discSdu, 0, sizeof(KwuDiscSduInfo));
1814 ret1 = cmUnpkKwuDiscSduInfo( (discSdu), mBuf);
1815 #if(ERRCLASS & ERRCLS_DEBUG)
1819 SLogError(pst->srcEnt, pst->srcInst, pst->srcProcId,
1820 __FILE__, __LINE__, (ErrCls)ERRCLS_ADD_RES,
1821 (ErrVal)ERRKWU, (ErrVal)0, "SGetMsg() failed");
1823 #endif /* ERRCLASS & ERRCLS_DEBUG */
1828 #if(ERRCLASS & ERRCLS_DEBUG)
1829 SLogError(pst->srcEnt, pst->srcInst, pst->srcProcId,
1830 __FILE__, __LINE__, (ErrCls)ERRCLS_ADD_RES,
1831 (ErrVal)ERRKWU, (ErrVal)ret1, "pst->selector is invalid\n");
1837 RETVALUE((*func)(pst, spId, discSdu));
1838 } /* cmUnpkKwuDiscSduCfm */
1840 PUBLIC S16 cmUnpkKwuFlowCntrlInd
1842 KwuFlowCntrlInd func,
1847 PUBLIC S16 cmUnpkKwuFlowCntrlInd(func, pst, mBuf)
1848 KwuFlowCntrlInd func;
1854 KwuFlowCntrlIndInfo *flowCntrlInfo = NULLP;
1856 TRC3(cmUnpkKwuFlowCntrlInd);
1858 CMCHKUNPK(SUnpkS16, &(suId), mBuf);
1859 switch(pst->selector)
1864 if(SGetStaticBuffer(pst->region,
1866 (Data **)&flowCntrlInfo,
1867 sizeof(KwuFlowCntrlIndInfo),0) != ROK)
1873 cmUnpkKwuFlowCntrlIndInfo(flowCntrlInfo, mBuf);
1879 CMCHKUNPK(cmUnpkPtr,(PTR *) &flowCntrlInfo, mBuf);
1887 RETVALUE((*func)(pst, suId, flowCntrlInfo));
1888 } /* cmUnpkKwuFlowCntrlInd */
1892 PUBLIC S16 cmUnpkKwuDatAckInfo
1894 KwuDatAckInfo *param,
1898 PUBLIC S16 cmUnpkKwuDatAckInfo(param, mBuf)
1899 KwuDatAckInfo *param;
1903 TRC3(cmUnpkKwuDatAckInfo);
1905 CMCHKUNPK(SUnpkU32, ¶m->sduId, mBuf);
1906 CMCHKUNPK(cmUnpkLteRlcId, ¶m->rlcId, mBuf);
1913 PUBLIC S16 cmUnpkKwuDatAckInd
1920 PUBLIC S16 cmUnpkKwuDatAckInd(func, pst, mBuf)
1928 KwuDatAckInfo *datInd = NULLP;
1930 TRC3(cmUnpkKwuDatAckInd);
1932 if((ret1 = SGetStaticBuffer(pst->region, pst->pool, (Data **)&datInd,\
1933 sizeof(KwuDatAckInfo),SS_SHARABLE_MEMORY)) != ROK)
1935 #if (ERRCLASS & ERRCLS_ADD_RES)
1938 SLogError(pst->srcEnt, pst->srcInst, pst->srcProcId,
1939 __FILE__, __LINE__, (ErrCls)ERRCLS_ADD_RES,
1940 (ErrVal)ERRKWU, (ErrVal)0, "SGetMsg() failed");
1942 #endif /* ERRCLASS & ERRCLS_ADD_RES */
1946 cmMemset((U8 *)datInd, 0, sizeof(KwuDatAckInfo));
1948 CMCHKUNPK(SUnpkS16, &(suId), mBuf);
1949 ret1 = cmUnpkKwuDatAckInfo( (datInd), mBuf);
1950 #if(ERRCLASS & ERRCLS_DEBUG)
1954 SLogError(pst->dstEnt, pst->dstInst, pst->dstProcId,
1955 __FILE__, __LINE__, (ErrCls)ERRCLS_DEBUG,
1956 (ErrVal)ERRKWU, (ErrVal)ret1, "Unpacking failure");
1959 #endif /* ERRCLASS & ERRCLS_DEBUG */
1961 RETVALUE((*func)(pst, suId, datInd));
1962 } /* cmUnpkKwuDatAckInd */
1963 #endif /* LTE_L2_MEAS */
1966 /**********************************************************************
1968 **********************************************************************/