1 /*******************************************************************************
2 ################################################################################
3 # Copyright (c) [2017-2019] [Radisys] #
5 # Licensed under the Apache License, Version 2.0 (the "License"); #
6 # you may not use this file except in compliance with the License. #
7 # You may obtain a copy of the License at #
9 # http://www.apache.org/licenses/LICENSE-2.0 #
11 # Unless required by applicable law or agreed to in writing, software #
12 # distributed under the License is distributed on an "AS IS" BASIS, #
13 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. #
14 # See the License for the specific language governing permissions and #
15 # limitations under the License. #
16 ################################################################################
17 *******************************************************************************/
19 /********************************************************************20**
21 Name: LTE-PDCP Layer - Upper Interface
25 Desc: C source code for the hook functions of LTE-PDCP
27 This file contains the following functions:
44 Portable functions for software hooks:
65 *********************************************************************21*/
68 @brief PDPC Hook Interface
72 /* header (.h) include files */
73 #include "envopt.h" /* environment options */
74 #include "envdep.h" /* environment dependent */
75 #include "envind.h" /* environment independent */
77 #include "gen.h" /* general */
78 #include "ssi.h" /* system services */
79 #include "cm5.h" /* common timer defines */
80 #include "cm_tkns.h" /* common tokens defines */
81 #include "cm_mblk.h" /* common memory allocation library defines */
82 #include "cm_llist.h" /* common link list defines */
83 #include "cm_hash.h" /* common hash list defines */
84 #include "cm_lte.h" /* common LTE defines */
85 #include "cpj.h" /* RRC layer */
86 #include "pju.h" /* PDCP service user */
87 #include "lpj.h" /* LPJ defines */
89 #include "pj_env.h" /* RLC environment options */
90 #include "pj_lib.h" /* LIB options */
91 #include "pj.h" /* RLC defines */
94 /* extern (.x) include files */
95 #include "gen.x" /* general */
96 #include "ssi.x" /* system services */
98 #include "cm5.x" /* common timer library */
99 #include "cm_tkns.x" /* common tokens */
100 #include "cm_mblk.x" /* common memory allocation */
101 #include "cm_llist.x" /* common link list */
102 #include "cm_hash.x" /* common hash list */
103 #include "cm_lte.x" /* common LTE includes */
104 #include "cm_lib.x" /* common memory allocation library */
105 #include "cpj.x" /* CPJ */
106 #include "pju.x" /* PJU */
107 #include "lpj.x" /* LPJ */
113 #include "pj_lib.x" /* LIB */
117 #endif /* __cplusplus */
120 /****************************************************************************
121 * Portable hooks for asynchronous
122 ***************************************************************************/
126 PUBLIC S16 cmPkLibObdCmpInitCfm
133 PUBLIC S16 cmPkLibObdCmpInitCfm(pst, cmpCxt, ctxId)
139 Buffer *mBuf = NULLP;
140 TRC3(cmPkLibObdCmpInitCfm)
142 if (SGetMsg(pst->region, pst->pool, &mBuf) != ROK) {
143 #if (ERRCLASS & ERRCLS_ADD_RES)
144 SLogError(pst->srcEnt, pst->srcInst, pst->srcProcId,
145 __FILE__, __LINE__, (ErrCls)ERRCLS_ADD_RES,
146 (ErrVal)ELIB001, (ErrVal)0, "Packing failed");
150 if (cmPkPtr(ctxId, mBuf) != ROK) {
151 #if (ERRCLASS & ERRCLS_ADD_RES)
152 SLogError(pst->srcEnt, pst->srcInst, pst->srcProcId,
153 __FILE__, __LINE__, (ErrCls)ERRCLS_ADD_RES,
154 (ErrVal)ELIB002, (ErrVal)0, "Packing failed");
159 if (cmPkPjCmpCxt(&cmpCxt, mBuf) != ROK) {
160 #if (ERRCLASS & ERRCLS_ADD_RES)
161 SLogError(pst->srcEnt, pst->srcInst, pst->srcProcId,
162 __FILE__, __LINE__, (ErrCls)ERRCLS_ADD_RES,
163 (ErrVal)ELIB003, (ErrVal)0, "Packing failed");
168 pst->event = (Event) OBD_EVT_CMP_INIT_CFM;
169 RETVALUE(SPstTsk(pst,mBuf));
173 PUBLIC S16 cmUnpkLibObdCmpInitCfm
180 PUBLIC S16 cmUnpkLibObdCmpInitCfm(func, pst, mBuf)
189 TRC3(cmUnpkLibObdCmpInitCfm)
191 if (cmUnpkPjCmpCxt(&cmpCxt, mBuf) != ROK) {
193 #if (ERRCLASS & ERRCLS_ADD_RES)
194 SLogError(pst->srcEnt, pst->srcInst, pst->srcProcId,
195 __FILE__, __LINE__, (ErrCls)ERRCLS_ADD_RES,
196 (ErrVal)ELIB004, (ErrVal)0, "Packing failed");
200 if (cmUnpkPtr(&ctxId, mBuf) != ROK) {
202 #if (ERRCLASS & ERRCLS_ADD_RES)
203 SLogError(pst->srcEnt, pst->srcInst, pst->srcProcId,
204 __FILE__, __LINE__, (ErrCls)ERRCLS_ADD_RES,
205 (ErrVal)ELIB005, (ErrVal)0, "Packing failed");
210 RETVALUE((*func)(pst, cmpCxt, ctxId));
214 PUBLIC S16 cmPkLibObdCmpCfm
222 PUBLIC S16 cmPkLibObdCmpCfm(pst, cmpCxtId, libTrans, opSdu)
229 Buffer *mBuf = NULLP;
231 TRC3(cmPkLibObdCmpCfm)
233 if (pst->selector == OBD_SEL_LC) {
234 if ( opSdu != NULLP )
236 if (SFndLenMsg(opSdu, &msgLen) != ROK) {
237 #if (ERRCLASS & ERRCLS_ADD_RES)
238 SLogError(pst->srcEnt, pst->srcInst, pst->srcProcId,
239 __FILE__, __LINE__, (ErrCls)ERRCLS_ADD_RES,
240 (ErrVal)ELIB022, (ErrVal)0, "Packing failed");
245 if (SCpyMsgMsg(opSdu, pst->region, pst->pool, &mBuf) != ROK) {
246 #if (ERRCLASS & ERRCLS_ADD_RES)
247 SLogError(pst->srcEnt, pst->srcInst, pst->srcProcId,
248 __FILE__, __LINE__, (ErrCls)ERRCLS_ADD_RES,
249 (ErrVal)ELIB023, (ErrVal)0, "Packing failed");
257 if (SGetMsg(pst->region, pst->pool, &mBuf) != ROK) {
258 #if (ERRCLASS & ERRCLS_ADD_RES)
259 SLogError(pst->srcEnt, pst->srcInst, pst->srcProcId,
260 __FILE__, __LINE__, (ErrCls)ERRCLS_ADD_RES,
261 (ErrVal)ELIB036, (ErrVal)0, "Packing failed");
266 CMCHKPK(cmPkMsgLen, msgLen, mBuf);
271 if (SGetMsg(pst->region, pst->pool, &mBuf) != ROK) {
272 #if (ERRCLASS & ERRCLS_ADD_RES)
273 SLogError(pst->srcEnt, pst->srcInst, pst->srcProcId,
274 __FILE__, __LINE__, (ErrCls)ERRCLS_ADD_RES,
275 (ErrVal)ELIB021, (ErrVal)0, "Packing failed");
281 if (cmPkPjLibTrans(&libTrans, mBuf) != ROK) {
282 #if (ERRCLASS & ERRCLS_ADD_RES)
283 SLogError(pst->srcEnt, pst->srcInst, pst->srcProcId,
284 __FILE__, __LINE__, (ErrCls)ERRCLS_ADD_RES,
285 (ErrVal)ELIB025, (ErrVal)0, "Packing failed");
290 if (cmPkPtr(cmpCxtId, mBuf) != ROK) {
291 #if (ERRCLASS & ERRCLS_ADD_RES)
292 SLogError(pst->srcEnt, pst->srcInst, pst->srcProcId,
293 __FILE__, __LINE__, (ErrCls)ERRCLS_ADD_RES,
294 (ErrVal)ELIB026, (ErrVal)0, "Packing failed");
299 pst->event = (Event) OBD_EVT_CMP_CFM;
300 RETVALUE(SPstTsk(pst,mBuf));
304 PUBLIC S16 cmUnpkLibObdCmpCfm
311 PUBLIC S16 cmUnpkLibObdCmpCfm(func, pst, mBuf)
321 TRC3(cmUnpkLibObdCmpCfm)
325 if (cmUnpkPtr(&cmpCxtId, mBuf) != ROK) {
327 #if (ERRCLASS & ERRCLS_ADD_RES)
328 SLogError(pst->srcEnt, pst->srcInst, pst->srcProcId,
329 __FILE__, __LINE__, (ErrCls)ERRCLS_ADD_RES,
330 (ErrVal)ELIB027, (ErrVal)0, "Packing failed");
334 if (cmUnpkPjLibTrans(&libTrans, mBuf) != ROK) {
336 #if (ERRCLASS & ERRCLS_ADD_RES)
337 SLogError(pst->srcEnt, pst->srcInst, pst->srcProcId,
338 __FILE__, __LINE__, (ErrCls)ERRCLS_ADD_RES,
339 (ErrVal)ELIB028, (ErrVal)0, "Packing failed");
343 if (pst->selector == OBD_SEL_LC) {
344 MsgLen msgLen, totalMsgLen;
345 CMCHKUNPK(cmUnpkMsgLen, &msgLen, mBuf);
346 if (SFndLenMsg(mBuf, &totalMsgLen) != ROK)
350 if (SSegMsg(mBuf, totalMsgLen-msgLen, &opSdu) != ROK)
356 RETVALUE((*func)(pst, cmpCxtId, libTrans, opSdu));
360 PUBLIC S16 cmPkLibObdDecmpCfm
369 PUBLIC S16 cmPkLibObdDecmpCfm(pst, cmpCxtId, libTrans, opSdu, fbPkt)
377 Buffer *mBuf = NULLP;
378 Buffer *tBuf = NULLP;
380 TRC3(cmPkLibObdDecmpCfm)
382 if (fbPkt != NULLP) {
383 if (SFndLenMsg(fbPkt, &msgLen) != ROK) {
384 #if (ERRCLASS & ERRCLS_ADD_RES)
385 SLogError(pst->srcEnt, pst->srcInst, pst->srcProcId,
386 __FILE__, __LINE__, (ErrCls)ERRCLS_ADD_RES,
387 (ErrVal)ELIB060, (ErrVal)0, "Packing failed");
391 if (SCpyMsgMsg(fbPkt, pst->region, pst->pool, &mBuf) != ROK) {
392 #if (ERRCLASS & ERRCLS_ADD_RES)
393 SLogError(pst->srcEnt, pst->srcInst, pst->srcProcId,
394 __FILE__, __LINE__, (ErrCls)ERRCLS_ADD_RES,
395 (ErrVal)ELIB061, (ErrVal)0, "Packing failed");
400 if (SGetMsg(pst->region, pst->pool, &mBuf) != ROK) {
401 #if (ERRCLASS & ERRCLS_ADD_RES)
402 SLogError(pst->srcEnt, pst->srcInst, pst->srcProcId,
403 __FILE__, __LINE__, (ErrCls)ERRCLS_ADD_RES,
404 (ErrVal)ELIB059, (ErrVal)0, "Packing failed");
411 CMCHKPK(cmPkMsgLen, msgLen, mBuf);
413 if (opSdu != NULLP) {
414 if (SFndLenMsg(opSdu, &msgLen) != ROK) {
415 #if (ERRCLASS & ERRCLS_ADD_RES)
416 SLogError(pst->srcEnt, pst->srcInst, pst->srcProcId,
417 __FILE__, __LINE__, (ErrCls)ERRCLS_ADD_RES,
418 (ErrVal)ELIB060, (ErrVal)0, "Packing failed");
423 if (SCpyMsgMsg(opSdu, pst->region, pst->pool, &tBuf) != ROK) {
424 #if (ERRCLASS & ERRCLS_ADD_RES)
425 SLogError(pst->srcEnt, pst->srcInst, pst->srcProcId,
426 __FILE__, __LINE__, (ErrCls)ERRCLS_ADD_RES,
427 (ErrVal)ELIB061, (ErrVal)0, "Packing failed");
432 if (SCatMsg(mBuf, tBuf, M1M2) != ROK) {
433 #if (ERRCLASS & ERRCLS_ADD_RES)
434 SLogError(pst->srcEnt, pst->srcInst, pst->srcProcId,
435 __FILE__, __LINE__, (ErrCls)ERRCLS_ADD_RES,
436 (ErrVal)ELIB061, (ErrVal)0, "Packing failed");
448 CMCHKPK(cmPkMsgLen, msgLen, mBuf);
450 if (cmPkPjLibTrans(&libTrans, mBuf) != ROK) {
451 #if (ERRCLASS & ERRCLS_ADD_RES)
452 SLogError(pst->srcEnt, pst->srcInst, pst->srcProcId,
453 __FILE__, __LINE__, (ErrCls)ERRCLS_ADD_RES,
454 (ErrVal)ELIB063, (ErrVal)0, "Packing failed");
459 if (cmPkPtr(cmpCxtId, mBuf) != ROK) {
460 #if (ERRCLASS & ERRCLS_ADD_RES)
461 SLogError(pst->srcEnt, pst->srcInst, pst->srcProcId,
462 __FILE__, __LINE__, (ErrCls)ERRCLS_ADD_RES,
463 (ErrVal)ELIB064, (ErrVal)0, "Packing failed");
468 pst->event = (Event) OBD_EVT_DECMP_CFM;
469 RETVALUE(SPstTsk(pst,mBuf));
473 PUBLIC S16 cmUnpkLibObdDecmpCfm
480 PUBLIC S16 cmUnpkLibObdDecmpCfm(func, pst, mBuf)
488 Buffer *opSdu = NULLP;
489 Buffer *fbPkt = NULLP;
491 TRC3(cmUnpkLibObdDecmpCfm)
493 if (cmUnpkPtr(&cmpCxtId, mBuf) != ROK) {
495 #if (ERRCLASS & ERRCLS_ADD_RES)
496 SLogError(pst->srcEnt, pst->srcInst, pst->srcProcId,
497 __FILE__, __LINE__, (ErrCls)ERRCLS_ADD_RES,
498 (ErrVal)ELIB065, (ErrVal)0, "Packing failed");
502 if (cmUnpkPjLibTrans(&libTrans, mBuf) != ROK) {
504 #if (ERRCLASS & ERRCLS_ADD_RES)
505 SLogError(pst->srcEnt, pst->srcInst, pst->srcProcId,
506 __FILE__, __LINE__, (ErrCls)ERRCLS_ADD_RES,
507 (ErrVal)ELIB066, (ErrVal)0, "Packing failed");
511 if (pst->selector == OBD_SEL_LC) {
512 MsgLen msgLen, totalMsgLen;
513 CMCHKUNPK(cmUnpkMsgLen, &msgLen, mBuf);
514 if (SFndLenMsg(mBuf, &totalMsgLen) != ROK)
517 if (SSegMsg(mBuf, totalMsgLen-msgLen, &opSdu) != ROK)
521 if (pst->selector == OBD_SEL_LC) {
522 MsgLen msgLen, totalMsgLen;
523 CMCHKUNPK(cmUnpkMsgLen, &msgLen, mBuf);
524 if (SFndLenMsg(mBuf, &totalMsgLen) != ROK)
527 if (SSegMsg(mBuf, totalMsgLen-msgLen, &fbPkt) != ROK)
532 RETVALUE((*func)(pst, cmpCxtId, libTrans, opSdu, fbPkt));
536 /***********************************************************
542 Robust header compression Information
551 **********************************************************/
553 PUBLIC S16 cmPkPjRohc
559 PUBLIC S16 cmPkPjRohc(param, mBuf)
567 CMCHKPK(SPkU16, param->profId, mBuf);
568 CMCHKPK(SPkU16, param->maxCid, mBuf);
569 CMCHKPK(SPkU8, param->hdrCmpUsed, mBuf);
574 /***********************************************************
576 * Func : cmUnpkPjRohc
580 Robust header compression Information
589 **********************************************************/
591 PUBLIC S16 cmUnpkPjRohc
597 PUBLIC S16 cmUnpkPjRohc(param, mBuf)
605 CMCHKUNPK(SUnpkU8, ¶m->hdrCmpUsed, mBuf);
606 CMCHKUNPK(SUnpkU16, ¶m->maxCid, mBuf);
607 CMCHKUNPK(SUnpkU16, ¶m->profId, mBuf);
613 /***********************************************************
615 * Func : cmPkPjCmpCxt
628 **********************************************************/
630 PUBLIC S16 cmPkPjCmpCxt
636 PUBLIC S16 cmPkPjCmpCxt(param, mBuf)
644 CMCHKPK(cmPkLteRbId, param->rbId, mBuf);
645 CMCHKPK(cmPkLteRnti, param->ueId, mBuf);
646 CMCHKPK(cmPkLteCellId, param->cellId, mBuf);
647 CMCHKPK(SPkU8, param->rbType, mBuf);
648 CMCHKPK(SPkU16, param->cfgTxId, mBuf);
654 /***********************************************************
656 * Func : cmUnpkPjCmpCxt
669 **********************************************************/
671 PUBLIC S16 cmUnpkPjCmpCxt
677 PUBLIC S16 cmUnpkPjCmpCxt(param, mBuf)
685 CMCHKUNPK(SUnpkU16, ¶m->cfgTxId, mBuf);
686 CMCHKUNPK(SUnpkU8, ¶m->rbType, mBuf);
687 CMCHKUNPK(cmUnpkLteCellId, ¶m->cellId, mBuf);
688 CMCHKUNPK(cmUnpkLteRnti, ¶m->ueId, mBuf);
689 CMCHKUNPK(cmUnpkLteRbId, ¶m->rbId, mBuf);
693 #endif /* PJ_CMP_ASYNC */
697 PUBLIC S16 cmPkLibObdIntInitCfm
704 PUBLIC S16 cmPkLibObdIntInitCfm(pst, secCtx, ctxId)
710 Buffer *mBuf = NULLP;
711 TRC3(cmPkLibObdIntInitCfm)
713 if (SGetMsg(pst->region, pst->pool, &mBuf) != ROK) {
714 #if (ERRCLASS & ERRCLS_ADD_RES)
715 SLogError(pst->srcEnt, pst->srcInst, pst->srcProcId,
716 __FILE__, __LINE__, (ErrCls)ERRCLS_ADD_RES,
717 (ErrVal)ELIB006, (ErrVal)0, "Packing failed");
721 if (cmPkPtr(ctxId, mBuf) != ROK) {
722 #if (ERRCLASS & ERRCLS_ADD_RES)
723 SLogError(pst->srcEnt, pst->srcInst, pst->srcProcId,
724 __FILE__, __LINE__, (ErrCls)ERRCLS_ADD_RES,
725 (ErrVal)ELIB007, (ErrVal)0, "Packing failed");
730 if (cmPkPjSecCxt(&secCtx, mBuf) != ROK) {
731 #if (ERRCLASS & ERRCLS_ADD_RES)
732 SLogError(pst->srcEnt, pst->srcInst, pst->srcProcId,
733 __FILE__, __LINE__, (ErrCls)ERRCLS_ADD_RES,
734 (ErrVal)ELIB008, (ErrVal)0, "Packing failed");
739 pst->event = (Event) OBD_EVT_INT_INIT_CFM;
740 RETVALUE(SPstTsk(pst,mBuf));
744 PUBLIC S16 cmUnpkLibObdIntInitCfm
751 PUBLIC S16 cmUnpkLibObdIntInitCfm(func, pst, mBuf)
760 TRC3(cmUnpkLibObdIntInitCfm)
762 if (cmUnpkPjSecCxt(&secCtx, mBuf) != ROK) {
764 #if (ERRCLASS & ERRCLS_ADD_RES)
765 SLogError(pst->srcEnt, pst->srcInst, pst->srcProcId,
766 __FILE__, __LINE__, (ErrCls)ERRCLS_ADD_RES,
767 (ErrVal)ELIB009, (ErrVal)0, "Packing failed");
771 if (cmUnpkPtr(&ctxId, mBuf) != ROK) {
773 #if (ERRCLASS & ERRCLS_ADD_RES)
774 SLogError(pst->srcEnt, pst->srcInst, pst->srcProcId,
775 __FILE__, __LINE__, (ErrCls)ERRCLS_ADD_RES,
776 (ErrVal)ELIB010, (ErrVal)0, "Packing failed");
781 RETVALUE((*func)(pst, secCtx, ctxId));
785 PUBLIC S16 cmPkLibObdCpInitCfm
792 PUBLIC S16 cmPkLibObdCpInitCfm(pst, secCxt, ctxId)
798 Buffer *mBuf = NULLP;
799 TRC3(cmPkLibObdCpInitCfm)
801 if (SGetMsg(pst->region, pst->pool, &mBuf) != ROK) {
802 #if (ERRCLASS & ERRCLS_ADD_RES)
803 SLogError(pst->srcEnt, pst->srcInst, pst->srcProcId,
804 __FILE__, __LINE__, (ErrCls)ERRCLS_ADD_RES,
805 (ErrVal)ELIB011, (ErrVal)0, "Packing failed");
809 if (cmPkPtr(ctxId, mBuf) != ROK) {
810 #if (ERRCLASS & ERRCLS_ADD_RES)
811 SLogError(pst->srcEnt, pst->srcInst, pst->srcProcId,
812 __FILE__, __LINE__, (ErrCls)ERRCLS_ADD_RES,
813 (ErrVal)ELIB012, (ErrVal)0, "Packing failed");
818 if (cmPkPjSecCxt(&secCxt, mBuf) != ROK) {
819 #if (ERRCLASS & ERRCLS_ADD_RES)
820 SLogError(pst->srcEnt, pst->srcInst, pst->srcProcId,
821 __FILE__, __LINE__, (ErrCls)ERRCLS_ADD_RES,
822 (ErrVal)ELIB013, (ErrVal)0, "Packing failed");
827 pst->event = (Event) OBD_EVT_CP_INIT_CFM;
828 RETVALUE(SPstTsk(pst,mBuf));
832 PUBLIC S16 cmUnpkLibObdCpInitCfm
839 PUBLIC S16 cmUnpkLibObdCpInitCfm(func, pst, mBuf)
848 TRC3(cmUnpkLibObdCpInitCfm)
850 if (cmUnpkPjSecCxt(&secCxt, mBuf) != ROK) {
852 #if (ERRCLASS & ERRCLS_ADD_RES)
853 SLogError(pst->srcEnt, pst->srcInst, pst->srcProcId,
854 __FILE__, __LINE__, (ErrCls)ERRCLS_ADD_RES,
855 (ErrVal)ELIB014, (ErrVal)0, "Packing failed");
859 if (cmUnpkPtr(&ctxId, mBuf) != ROK) {
861 #if (ERRCLASS & ERRCLS_ADD_RES)
862 SLogError(pst->srcEnt, pst->srcInst, pst->srcProcId,
863 __FILE__, __LINE__, (ErrCls)ERRCLS_ADD_RES,
864 (ErrVal)ELIB015, (ErrVal)0, "Packing failed");
869 RETVALUE((*func)(pst, secCxt, ctxId));
873 PUBLIC S16 cmPkLibObdUpInitCfm
880 PUBLIC S16 cmPkLibObdUpInitCfm(pst, secCxt, ctxId)
886 Buffer *mBuf = NULLP;
887 TRC3(cmPkLibObdUpInitCfm)
889 if (SGetMsg(pst->region, pst->pool, &mBuf) != ROK) {
890 #if (ERRCLASS & ERRCLS_ADD_RES)
891 SLogError(pst->srcEnt, pst->srcInst, pst->srcProcId,
892 __FILE__, __LINE__, (ErrCls)ERRCLS_ADD_RES,
893 (ErrVal)ELIB016, (ErrVal)0, "Packing failed");
897 if (cmPkPtr(ctxId, mBuf) != ROK) {
898 #if (ERRCLASS & ERRCLS_ADD_RES)
899 SLogError(pst->srcEnt, pst->srcInst, pst->srcProcId,
900 __FILE__, __LINE__, (ErrCls)ERRCLS_ADD_RES,
901 (ErrVal)ELIB017, (ErrVal)0, "Packing failed");
906 if (cmPkPjSecCxt(&secCxt, mBuf) != ROK) {
907 #if (ERRCLASS & ERRCLS_ADD_RES)
908 SLogError(pst->srcEnt, pst->srcInst, pst->srcProcId,
909 __FILE__, __LINE__, (ErrCls)ERRCLS_ADD_RES,
910 (ErrVal)ELIB018, (ErrVal)0, "Packing failed");
915 pst->event = (Event) OBD_EVT_UP_INIT_CFM;
916 RETVALUE(SPstTsk(pst,mBuf));
920 PUBLIC S16 cmUnpkLibObdUpInitCfm
927 PUBLIC S16 cmUnpkLibObdUpInitCfm(func, pst, mBuf)
936 TRC3(cmUnpkLibObdUpInitCfm)
938 if (cmUnpkPjSecCxt(&secCxt, mBuf) != ROK) {
940 #if (ERRCLASS & ERRCLS_ADD_RES)
941 SLogError(pst->srcEnt, pst->srcInst, pst->srcProcId,
942 __FILE__, __LINE__, (ErrCls)ERRCLS_ADD_RES,
943 (ErrVal)ELIB019, (ErrVal)0, "Packing failed");
947 if (cmUnpkPtr(&ctxId, mBuf) != ROK) {
949 #if (ERRCLASS & ERRCLS_ADD_RES)
950 SLogError(pst->srcEnt, pst->srcInst, pst->srcProcId,
951 __FILE__, __LINE__, (ErrCls)ERRCLS_ADD_RES,
952 (ErrVal)ELIB020, (ErrVal)0, "Packing failed");
957 RETVALUE((*func)(pst, secCxt, ctxId));
961 PUBLIC S16 cmPkLibObdIntProtCfm
969 PUBLIC S16 cmPkLibObdIntProtCfm(pst, cxtId, libTrans, macI)
976 Buffer *mBuf = NULLP;
977 TRC3(cmPkLibObdIntProtCfm)
979 if (SGetMsg(pst->region, pst->pool, &mBuf) != ROK) {
980 #if (ERRCLASS & ERRCLS_ADD_RES)
981 SLogError(pst->srcEnt, pst->srcInst, pst->srcProcId,
982 __FILE__, __LINE__, (ErrCls)ERRCLS_ADD_RES,
983 (ErrVal)ELIB029, (ErrVal)0, "Packing failed");
987 if (SPkU32(macI, mBuf) != ROK) {
988 #if (ERRCLASS & ERRCLS_ADD_RES)
989 SLogError(pst->srcEnt, pst->srcInst, pst->srcProcId,
990 __FILE__, __LINE__, (ErrCls)ERRCLS_ADD_RES,
991 (ErrVal)ELIB030, (ErrVal)0, "Packing failed");
996 if (cmPkPjLibTrans(&libTrans, mBuf) != ROK) {
997 #if (ERRCLASS & ERRCLS_ADD_RES)
998 SLogError(pst->srcEnt, pst->srcInst, pst->srcProcId,
999 __FILE__, __LINE__, (ErrCls)ERRCLS_ADD_RES,
1000 (ErrVal)ELIB031, (ErrVal)0, "Packing failed");
1005 if (cmPkPtr(cxtId, mBuf) != ROK) {
1006 #if (ERRCLASS & ERRCLS_ADD_RES)
1007 SLogError(pst->srcEnt, pst->srcInst, pst->srcProcId,
1008 __FILE__, __LINE__, (ErrCls)ERRCLS_ADD_RES,
1009 (ErrVal)ELIB032, (ErrVal)0, "Packing failed");
1014 pst->event = (Event) OBD_EVT_INT_PROT_CFM;
1015 RETVALUE(SPstTsk(pst,mBuf));
1019 PUBLIC S16 cmUnpkLibObdIntProtCfm
1026 PUBLIC S16 cmUnpkLibObdIntProtCfm(func, pst, mBuf)
1033 PjLibTrans libTrans;
1036 TRC3(cmUnpkLibObdIntProtCfm)
1038 if (cmUnpkPtr(&cxtId, mBuf) != ROK) {
1040 #if (ERRCLASS & ERRCLS_ADD_RES)
1041 SLogError(pst->srcEnt, pst->srcInst, pst->srcProcId,
1042 __FILE__, __LINE__, (ErrCls)ERRCLS_ADD_RES,
1043 (ErrVal)ELIB033, (ErrVal)0, "Packing failed");
1047 if (cmUnpkPjLibTrans(&libTrans, mBuf) != ROK) {
1049 #if (ERRCLASS & ERRCLS_ADD_RES)
1050 SLogError(pst->srcEnt, pst->srcInst, pst->srcProcId,
1051 __FILE__, __LINE__, (ErrCls)ERRCLS_ADD_RES,
1052 (ErrVal)ELIB034, (ErrVal)0, "Packing failed");
1056 if (SUnpkU32(&macI, mBuf) != ROK) {
1058 #if (ERRCLASS & ERRCLS_ADD_RES)
1059 SLogError(pst->srcEnt, pst->srcInst, pst->srcProcId,
1060 __FILE__, __LINE__, (ErrCls)ERRCLS_ADD_RES,
1061 (ErrVal)ELIB035, (ErrVal)0, "Packing failed");
1066 RETVALUE((*func)(pst, cxtId, libTrans, macI));
1070 PUBLIC S16 cmPkLibObdCipherCfm
1074 PjLibTrans libTrans,
1078 PUBLIC S16 cmPkLibObdCipherCfm(pst, cxtId, libTrans, opSdu)
1081 PjLibTrans libTrans;
1085 Buffer *mBuf = NULLP;
1087 TRC3(cmPkLibObdCipherCfm)
1089 if (pst->selector == OBD_SEL_LC) {
1090 if ( opSdu != NULLP )
1092 if (SFndLenMsg(opSdu, &msgLen) != ROK) {
1093 #if (ERRCLASS & ERRCLS_ADD_RES)
1094 SLogError(pst->srcEnt, pst->srcInst, pst->srcProcId,
1095 __FILE__, __LINE__, (ErrCls)ERRCLS_ADD_RES,
1096 (ErrVal)ELIB037, (ErrVal)0, "Packing failed");
1101 if (SCpyMsgMsg(opSdu, pst->region, pst->pool, &mBuf) != ROK) {
1102 #if (ERRCLASS & ERRCLS_ADD_RES)
1103 SLogError(pst->srcEnt, pst->srcInst, pst->srcProcId,
1104 __FILE__, __LINE__, (ErrCls)ERRCLS_ADD_RES,
1105 (ErrVal)ELIB038, (ErrVal)0, "Packing failed");
1110 /* SPutMsg(opSdu); */
1115 if (SGetMsg(pst->region, pst->pool, &mBuf) != ROK) {
1116 #if (ERRCLASS & ERRCLS_ADD_RES)
1117 SLogError(pst->srcEnt, pst->srcInst, pst->srcProcId,
1118 __FILE__, __LINE__, (ErrCls)ERRCLS_ADD_RES,
1119 (ErrVal)ELIB036, (ErrVal)0, "Packing failed");
1124 CMCHKPK(cmPkMsgLen, msgLen, mBuf);
1129 if (SGetMsg(pst->region, pst->pool, &mBuf) != ROK) {
1130 #if (ERRCLASS & ERRCLS_ADD_RES)
1131 SLogError(pst->srcEnt, pst->srcInst, pst->srcProcId,
1132 __FILE__, __LINE__, (ErrCls)ERRCLS_ADD_RES,
1133 (ErrVal)ELIB036, (ErrVal)0, "Packing failed");
1141 if (cmPkPjLibTrans(&libTrans, mBuf) != ROK) {
1142 #if (ERRCLASS & ERRCLS_ADD_RES)
1143 SLogError(pst->srcEnt, pst->srcInst, pst->srcProcId,
1144 __FILE__, __LINE__, (ErrCls)ERRCLS_ADD_RES,
1145 (ErrVal)ELIB040, (ErrVal)0, "Packing failed");
1151 if (cmPkPtr(cxtId, mBuf) != ROK) {
1152 #if (ERRCLASS & ERRCLS_ADD_RES)
1153 SLogError(pst->srcEnt, pst->srcInst, pst->srcProcId,
1154 __FILE__, __LINE__, (ErrCls)ERRCLS_ADD_RES,
1155 (ErrVal)ELIB041, (ErrVal)0, "Packing failed");
1161 pst->event = (Event) OBD_EVT_CIPHER_CFM;
1162 RETVALUE(SPstTsk(pst,mBuf));
1166 PUBLIC S16 cmUnpkLibObdCipherCfm
1173 PUBLIC S16 cmUnpkLibObdCipherCfm(func, pst, mBuf)
1180 PjLibTrans libTrans;
1183 TRC3(cmUnpkLibObdCipherCfm)
1187 if (cmUnpkPtr(&cxtId, mBuf) != ROK) {
1189 #if (ERRCLASS & ERRCLS_ADD_RES)
1190 SLogError(pst->srcEnt, pst->srcInst, pst->srcProcId,
1191 __FILE__, __LINE__, (ErrCls)ERRCLS_ADD_RES,
1192 (ErrVal)ELIB042, (ErrVal)0, "Packing failed");
1196 if (cmUnpkPjLibTrans(&libTrans, mBuf) != ROK) {
1198 #if (ERRCLASS & ERRCLS_ADD_RES)
1199 SLogError(pst->srcEnt, pst->srcInst, pst->srcProcId,
1200 __FILE__, __LINE__, (ErrCls)ERRCLS_ADD_RES,
1201 (ErrVal)ELIB043, (ErrVal)0, "Packing failed");
1206 if (pst->selector == OBD_SEL_LC) {
1207 MsgLen msgLen, totalMsgLen;
1208 CMCHKUNPK(cmUnpkMsgLen, &msgLen, mBuf);
1209 if (SFndLenMsg(mBuf, &totalMsgLen) != ROK)
1213 if (SSegMsg(mBuf, totalMsgLen-msgLen, &opSdu) != ROK)
1221 RETVALUE((*func)(pst, cxtId, libTrans, opSdu));
1225 PUBLIC S16 cmPkLibObdDecipherCfm
1229 PjLibTrans libTrans,
1233 PUBLIC S16 cmPkLibObdDecipherCfm(pst, cxtId, libTrans, opSdu)
1236 PjLibTrans libTrans;
1240 Buffer *mBuf = NULLP;
1242 TRC3(cmPkLibObdDecipherCfm)
1244 if (pst->selector == OBD_SEL_LC) {
1245 if ( opSdu != NULLP)
1247 if (SFndLenMsg(opSdu, &msgLen) != ROK) {
1248 #if (ERRCLASS & ERRCLS_ADD_RES)
1249 SLogError(pst->srcEnt, pst->srcInst, pst->srcProcId,
1250 __FILE__, __LINE__, (ErrCls)ERRCLS_ADD_RES,
1251 (ErrVal)ELIB045, (ErrVal)0, "Packing failed");
1255 if (SCpyMsgMsg(opSdu, pst->region, pst->pool, &mBuf) != ROK) {
1256 #if (ERRCLASS & ERRCLS_ADD_RES)
1257 SLogError(pst->srcEnt, pst->srcInst, pst->srcProcId,
1258 __FILE__, __LINE__, (ErrCls)ERRCLS_ADD_RES,
1259 (ErrVal)ELIB046, (ErrVal)0, "Packing failed");
1267 if (SGetMsg(pst->region, pst->pool, &mBuf) != ROK) {
1268 #if (ERRCLASS & ERRCLS_ADD_RES)
1269 SLogError(pst->srcEnt, pst->srcInst, pst->srcProcId,
1270 __FILE__, __LINE__, (ErrCls)ERRCLS_ADD_RES,
1271 (ErrVal)ELIB036, (ErrVal)0, "Packing failed");
1276 CMCHKPK(cmPkMsgLen, msgLen, mBuf);
1281 if (SGetMsg(pst->region, pst->pool, &mBuf) != ROK) {
1282 #if (ERRCLASS & ERRCLS_ADD_RES)
1283 SLogError(pst->srcEnt, pst->srcInst, pst->srcProcId,
1284 __FILE__, __LINE__, (ErrCls)ERRCLS_ADD_RES,
1285 (ErrVal)ELIB044, (ErrVal)0, "Packing failed");
1291 if (cmPkPjLibTrans(&libTrans, mBuf) != ROK) {
1292 #if (ERRCLASS & ERRCLS_ADD_RES)
1293 SLogError(pst->srcEnt, pst->srcInst, pst->srcProcId,
1294 __FILE__, __LINE__, (ErrCls)ERRCLS_ADD_RES,
1295 (ErrVal)ELIB048, (ErrVal)0, "Packing failed");
1300 if (cmPkPtr(cxtId, mBuf) != ROK) {
1301 #if (ERRCLASS & ERRCLS_ADD_RES)
1302 SLogError(pst->srcEnt, pst->srcInst, pst->srcProcId,
1303 __FILE__, __LINE__, (ErrCls)ERRCLS_ADD_RES,
1304 (ErrVal)ELIB049, (ErrVal)0, "Packing failed");
1309 pst->event = (Event) OBD_EVT_DECIPHER_CFM;
1310 RETVALUE(SPstTsk(pst,mBuf));
1314 PUBLIC S16 cmUnpkLibObdDecipherCfm
1316 ObdDecipherCfm func,
1321 PUBLIC S16 cmUnpkLibObdDecipherCfm(func, pst, mBuf)
1322 ObdDecipherCfm func;
1328 PjLibTrans libTrans;
1329 Buffer *opSdu= NULLP;
1331 TRC3(cmUnpkLibObdDecipherCfm)
1333 if (cmUnpkPtr(&cxtId, mBuf) != ROK) {
1335 #if (ERRCLASS & ERRCLS_ADD_RES)
1336 SLogError(pst->srcEnt, pst->srcInst, pst->srcProcId,
1337 __FILE__, __LINE__, (ErrCls)ERRCLS_ADD_RES,
1338 (ErrVal)ELIB050, (ErrVal)0, "Packing failed");
1342 if (cmUnpkPjLibTrans(&libTrans, mBuf) != ROK) {
1344 #if (ERRCLASS & ERRCLS_ADD_RES)
1345 SLogError(pst->srcEnt, pst->srcInst, pst->srcProcId,
1346 __FILE__, __LINE__, (ErrCls)ERRCLS_ADD_RES,
1347 (ErrVal)ELIB051, (ErrVal)0, "Packing failed");
1351 if (pst->selector == OBD_SEL_LC) {
1352 MsgLen msgLen, totalMsgLen;
1353 CMCHKUNPK(cmUnpkMsgLen, &msgLen, mBuf);
1354 if (SFndLenMsg(mBuf, &totalMsgLen) != ROK)
1358 if (SSegMsg(mBuf, totalMsgLen-msgLen, &opSdu) != ROK)
1364 RETVALUE((*func)(pst, cxtId, libTrans, opSdu));
1368 PUBLIC S16 cmPkLibObdIntVerCfm
1372 PjLibTrans libTrans,
1376 PUBLIC S16 cmPkLibObdIntVerCfm(pst, cxtId, libTrans, status)
1379 PjLibTrans libTrans;
1383 Buffer *mBuf = NULLP;
1384 TRC3(cmPkLibObdIntVerCfm)
1386 if (SGetMsg(pst->region, pst->pool, &mBuf) != ROK) {
1387 #if (ERRCLASS & ERRCLS_ADD_RES)
1388 SLogError(pst->srcEnt, pst->srcInst, pst->srcProcId,
1389 __FILE__, __LINE__, (ErrCls)ERRCLS_ADD_RES,
1390 (ErrVal)ELIB052, (ErrVal)0, "Packing failed");
1394 if (SPkS16(status, mBuf) != ROK) {
1395 #if (ERRCLASS & ERRCLS_ADD_RES)
1396 SLogError(pst->srcEnt, pst->srcInst, pst->srcProcId,
1397 __FILE__, __LINE__, (ErrCls)ERRCLS_ADD_RES,
1398 (ErrVal)ELIB053, (ErrVal)0, "Packing failed");
1403 if (cmPkPjLibTrans(&libTrans, mBuf) != ROK) {
1404 #if (ERRCLASS & ERRCLS_ADD_RES)
1405 SLogError(pst->srcEnt, pst->srcInst, pst->srcProcId,
1406 __FILE__, __LINE__, (ErrCls)ERRCLS_ADD_RES,
1407 (ErrVal)ELIB054, (ErrVal)0, "Packing failed");
1412 if (cmPkPtr(cxtId, mBuf) != ROK) {
1413 #if (ERRCLASS & ERRCLS_ADD_RES)
1414 SLogError(pst->srcEnt, pst->srcInst, pst->srcProcId,
1415 __FILE__, __LINE__, (ErrCls)ERRCLS_ADD_RES,
1416 (ErrVal)ELIB055, (ErrVal)0, "Packing failed");
1421 pst->event = (Event) OBD_EVT_INT_VER_CFM;
1422 RETVALUE(SPstTsk(pst,mBuf));
1426 PUBLIC S16 cmUnpkLibObdIntVerCfm
1433 PUBLIC S16 cmUnpkLibObdIntVerCfm(func, pst, mBuf)
1440 PjLibTrans libTrans;
1443 TRC3(cmUnpkLibObdIntVerCfm)
1445 if (cmUnpkPtr(&cxtId, mBuf) != ROK) {
1447 #if (ERRCLASS & ERRCLS_ADD_RES)
1448 SLogError(pst->srcEnt, pst->srcInst, pst->srcProcId,
1449 __FILE__, __LINE__, (ErrCls)ERRCLS_ADD_RES,
1450 (ErrVal)ELIB056, (ErrVal)0, "Packing failed");
1454 if (cmUnpkPjLibTrans(&libTrans, mBuf) != ROK) {
1456 #if (ERRCLASS & ERRCLS_ADD_RES)
1457 SLogError(pst->srcEnt, pst->srcInst, pst->srcProcId,
1458 __FILE__, __LINE__, (ErrCls)ERRCLS_ADD_RES,
1459 (ErrVal)ELIB057, (ErrVal)0, "Packing failed");
1463 if (SUnpkS16(&status, mBuf) != ROK) {
1465 #if (ERRCLASS & ERRCLS_ADD_RES)
1466 SLogError(pst->srcEnt, pst->srcInst, pst->srcProcId,
1467 __FILE__, __LINE__, (ErrCls)ERRCLS_ADD_RES,
1468 (ErrVal)ELIB058, (ErrVal)0, "Packing failed");
1473 RETVALUE((*func)(pst, cxtId, libTrans, status));
1477 /***********************************************************
1479 * Func : cmPkPjSecCxt
1483 Context for Security Algorithm
1492 **********************************************************/
1494 PUBLIC S16 cmPkPjSecCxt
1500 PUBLIC S16 cmPkPjSecCxt(param, mBuf)
1508 CMCHKPK(cmPkLteRnti, param->ueId, mBuf);
1509 CMCHKPK(cmPkLteCellId, param->cellId, mBuf);
1510 CMCHKPK(SPkU16, param->cfgTxId, mBuf);
1516 /***********************************************************
1518 * Func : cmUnpkPjSecCxt
1522 Context for Security Algorithm
1531 **********************************************************/
1533 PUBLIC S16 cmUnpkPjSecCxt
1539 PUBLIC S16 cmUnpkPjSecCxt(param, mBuf)
1545 TRC3(cmUnpkPjSecCxt)
1547 CMCHKUNPK(SUnpkU16, ¶m->cfgTxId, mBuf);
1548 CMCHKUNPK(cmUnpkLteCellId, ¶m->cellId, mBuf);
1549 CMCHKUNPK(cmUnpkLteRnti, ¶m->ueId, mBuf);
1554 /***********************************************************
1556 * Func : cmPkPjIntInfo
1560 PDCP Integrity Algo Information
1569 **********************************************************/
1571 PUBLIC S16 cmPkPjIntInfo
1577 PUBLIC S16 cmPkPjIntInfo(param, mBuf)
1586 for (i=PJ_INTG_KEY_LEN-1; i >= 0; i--) {
1587 CMCHKPK(SPkU8, param->intKey[i], mBuf);
1589 CMCHKPK(SPkU8, param->algoType, mBuf);
1595 /***********************************************************
1597 * Func : cmUnpkPjIntInfo
1601 PDCP Integrity Algo Information
1610 **********************************************************/
1612 PUBLIC S16 cmUnpkPjIntInfo
1618 PUBLIC S16 cmUnpkPjIntInfo(param, mBuf)
1625 TRC3(cmUnpkPjIntInfo)
1627 CMCHKUNPK(SUnpkU8, ¶m->algoType, mBuf);
1628 for (i=0; i<PJ_INTG_KEY_LEN; i++) {
1629 CMCHKUNPK(SUnpkU8, ¶m->intKey[i], mBuf);
1636 /***********************************************************
1638 * Func : cmPkPjSecInp
1642 Input parameters for security algorithm
1651 **********************************************************/
1653 PUBLIC S16 cmPkPjSecInp
1659 PUBLIC S16 cmPkPjSecInp(param, mBuf)
1667 CMCHKPK(SPkU8, param->dir, mBuf);
1668 CMCHKPK(cmPkLteRbId, param->rbId, mBuf);
1669 CMCHKPK(SPkU32, param->count, mBuf);
1675 /***********************************************************
1677 * Func : cmUnpkPjSecInp
1681 Input parameters for security algorithm
1690 **********************************************************/
1692 PUBLIC S16 cmUnpkPjSecInp
1698 PUBLIC S16 cmUnpkPjSecInp(param, mBuf)
1704 TRC3(cmUnpkPjSecInp)
1706 CMCHKUNPK(SUnpkU32, ¶m->count, mBuf);
1707 CMCHKUNPK(cmUnpkLteRbId, ¶m->rbId, mBuf);
1708 CMCHKUNPK(SUnpkU8, ¶m->dir, mBuf);
1712 #endif /* PJ_SEC_ASYNC */
1715 #if (defined(PJ_SEC_ASYNC) || defined(PJ_CMP_ASYNC))
1716 /***********************************************************
1718 * Func : cmPkPjLibTrans
1722 Transaction Id for Security Algorithm
1731 **********************************************************/
1733 PUBLIC S16 cmPkPjLibTrans
1739 PUBLIC S16 cmPkPjLibTrans(param, mBuf)
1745 TRC3(cmPkPjLibTrans)
1747 CMCHKPK(cmPkPtr, (PTR)param->ueCb, mBuf);
1748 CMCHKPK(cmPkLteRbId, param->rbId, mBuf);
1749 CMCHKPK(SPkU8, param->rbType, mBuf);
1750 CMCHKPK(SPkU32, param->count, mBuf);
1756 /***********************************************************
1758 * Func : cmUnpkPjLibTrans
1762 Transaction Id for Security Algorithm
1771 **********************************************************/
1773 PUBLIC S16 cmUnpkPjLibTrans
1779 PUBLIC S16 cmUnpkPjLibTrans(param, mBuf)
1785 TRC3(cmUnpkPjLibTrans)
1787 CMCHKUNPK(SUnpkU32, ¶m->count, mBuf);
1788 CMCHKUNPK(SUnpkU8, ¶m->rbType, mBuf);
1789 CMCHKUNPK(cmUnpkLteRbId, ¶m->rbId, mBuf);
1790 CMCHKUNPK(cmUnpkPtr, (PTR*)¶m->ueCb, mBuf);
1794 #endif /* PJ_SEC_ASYNC || PJ_CMP_ASYNC */
1798 #endif /* __cplusplus */
1799 /********************************************************************30**
1801 **********************************************************************/