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 upper interface of LTE-PDCP
29 *********************************************************************21*/
31 /** @file pj_udx_ptul.c
32 @brief PDCP Upper Interface
36 /* header (.h) include files */
37 #include "envopt.h" /* environment options */
38 #include "envdep.h" /* environment dependent */
39 #include "envind.h" /* environment independent */
41 #include "gen.h" /* general */
42 #include "ssi.h" /* system services */
43 #include "cm5.h" /* common timer defines */
44 #include "cm_tkns.h" /* common tokens defines */
45 #include "cm_mblk.h" /* common memory allocation library defines */
46 #include "cm_llist.h" /* common link list defines */
47 #include "cm_hash.h" /* common hash list defines */
48 #include "cm_lte.h" /* common LTE defines */
49 #include "cpj.h" /* UDX defines */
50 #include "pju.h" /* PJU defines */
55 #include "pj_env.h" /* RLC environment options */
57 /* extern (.x) include files */
58 #include "gen.x" /* general */
59 #include "ssi.x" /* system services */
61 #include "cm5.x" /* common timer library */
62 #include "cm_tkns.x" /* common tokens */
63 #include "cm_mblk.x" /* common memory allocation */
64 #include "cm_llist.x" /* common link list */
65 #include "cm_hash.x" /* common hash list */
66 #include "cm_lte.x" /* common LTE includes */
67 #include "cm_lib.x" /* common memory allocation library */
68 #include "cpj.x" /* UDX defines */
69 #include "pju.x" /* PJU defines */
70 #include "lpj.x" /* LPJ defines */
77 #if !(defined(LCPJULUDX) && defined(PJ) && defined(LWLCPJULUDX))
83 #endif /* __cplusplus */
86 PRIVATE S16 PtUlUdxBndReq ARGS((Pst *post, SuId suId, SpId spId));
87 PRIVATE S16 PtUlUdxUbndReq ARGS((Pst *post, SpId spId, Reason reason));
88 PRIVATE S16 PtUlUdxCfgReq ARGS((Pst *post, SpId spId, UdxCfgReqInfo *pdCfgReq));
89 PRIVATE S16 PtUlUdxUeIdChgReq ARGS((Pst *post, SpId spId,U32 transId,
91 UdxUeInfo *newUeInfo));
93 PRIVATE S16 PtUlUdxSecCfgReq ARGS((Pst *post, SpId spId,
94 UdxSecCfgReqInfo *pdcpSecCfgReq));
95 PRIVATE S16 PtUlUdxCountReq ARGS((Pst *post, SpId spId,
96 UdxCountReqInfo *pdcpCountReq));
97 PRIVATE S16 PtUlUdxReEstReq ARGS(( Pst *post, SpId spId,
98 UdxReEstReqInfo *restbInfo));
99 PRIVATE S16 PtUlUdxSduStaReq ARGS(( Pst *post, SpId spId,
100 UdxSduStaReqInfo *statReqInfo));
102 PRIVATE S16 PtUlUdxUlStaRep ARGS ((
103 Pst *post, /* Post structure */
104 SpId spId, /* Service provider ID */
105 UdxUlStaRepInfo *pdStaRep /* PDCP UL ot PDCP DL Reestablishment trigger */
107 PRIVATE S16 PtUlUdxDlStaRep ARGS ((
108 Pst *post, /* Post structure */
109 SpId spId, /* Service provider ID */
110 UdxDlStaRepInfo *pdStaRep /* Status report from PDCP UL to PDCP DL */
113 PRIVATE S16 PtUlUdxUlFdbkPktInfo ARGS ((
114 Pst *post, /* Post structure */
115 SpId spId, /* Service provider ID */
116 UdxUlFdbkPktInfo *fdbkPktInfo /* feedback Packet Info */
119 PRIVATE S16 PtUlUdxDlFdbkPktInfo ARGS ((
120 Pst *post, /* Post structure */
121 SpId spId, /* Service provider ID */
122 UdxDlFdbkPktInfo *fdbkPktInfo /* feedback Packet Info */
125 PRIVATE S16 PtUlUdxL2MeasReq ARGS ((
127 PjL2MeasReqEvt *measReqEvt
129 PRIVATE S16 PtUlUdxL2MeasSendReq ARGS((
133 PRIVATE S16 PtUlUdxL2MeasStopReq ARGS((
138 PRIVATE S16 PtUlUdxDatResumeReq ARGS((
140 UdxDatResumeInfo *udxDatResumeInfo
142 PRIVATE S16 PtUlUdxDatForwardReq ARGS((
144 UdxDatForwardInfo *udxDatForwardInfo
146 #endif /* PTPJULUDX */
149 /**************************************************************************
150 * UDX Interface Matrices
151 *************************************************************************/
153 /* UDX Interface Bind Request primitive */
154 PRIVATE CONSTANT UdxBndReq PjUlUdxBndReqMt [PJ_MAX_UDX] =
157 cmPkPjUdxBndReq, /* 0 - loosely coupled */
158 #else /* LCPJULUDX */
159 PtUlUdxBndReq, /* 0 - loosely coupled, portable */
160 #endif /* LCPJULUDX */
162 cmPkPjUdxBndReq, /* 1 - loosely coupled */
163 #else /* LCPJULUDX */
164 PtUlUdxBndReq, /* 1 - loosely coupled, portable */
165 #endif /* LCPJULUDX */
167 PjDlUdxBndReq, /* 2 - tightly coupled, CTC */
169 PtUlUdxBndReq, /* 2 - tightly coupled, portable */
173 /* UDX Interface Unbind Request primitive */
174 PRIVATE CONSTANT UdxUbndReq PjUlUdxUbndReqMt [PJ_MAX_UDX] =
177 cmPkPjUdxUbndReq, /* 0 - loosely coupled */
178 #else /* LCPJULUDX */
179 PtUlUdxUbndReq, /* 0 - loosely coupled, portable */
180 #endif /* LCPJULUDX */
182 cmPkPjUdxUbndReq, /* 1 - loosely coupled */
183 #else /* LCPJULUDX */
184 PtUlUdxUbndReq, /* 1 - loosely coupled, portable */
185 #endif /* LCPJULUDX */
187 PjDlUdxUbndReq, /* 2 - tightly coupled, UDX */
189 PtUlUdxUbndReq, /* 2 - tightly coupled, portable */
193 /* UDX Interface Config Request primitive */
194 PRIVATE CONSTANT UdxCfgReq PjUlUdxCfgReqMt [PJ_MAX_UDX] =
197 cmPkPjUdxCfgReq, /* 0 - loosely coupled */
198 #else /* LCPJULUDX */
199 PtUlUdxCfgReq, /* 0 - loosely coupled, portable */
200 #endif /* LCPJULUDX */
202 cmPkPjUdxCfgReq, /* 1 - loosely coupled */
203 #else /* LCPJULUDX */
204 PtUlUdxCfgReq, /* 1 - loosely coupled, portable */
205 #endif /* LCPJULUDX */
207 PjDlUdxCfgReq, /* 2 - tightly coupled, UDX */
209 PtUlUdxCfgReq, /* 2 - tightly coupled, portable */
213 /* UDX Interface Status Report from PDCP-UL to PDCP-DL primitive */
214 PRIVATE CONSTANT UdxUlStaRep PjUlUdxUlStaRepMt [PJ_MAX_UDX] =
217 cmPkPjUdxUlStaRep, /* 0 - loosely coupled */
218 #else /* LCPJULUDX */
219 PtUlUdxUlStaRep, /* 0 - loosely coupled, portable */
220 #endif /* LCPJULUDX */
222 cmPkPjUdxUlStaRep, /* 1 - loosely coupled */
223 #else /* LCPJULUDX */
224 PtUlUdxUlStaRep, /* 1 - loosely coupled, portable */
225 #endif /* LCPJULUDX */
227 PjDlUdxUlStaRep, /* 2 - tightly coupled, UDX */
229 PtUlUdxUlStaRep, /* 2 - tightly coupled, portable */
233 /* UDX Interface Status Report from PDCP-UL to PDCP-DL primitive */
234 PRIVATE CONSTANT UdxDlStaRep PjUlUdxDlStaRepMt [PJ_MAX_UDX] =
237 cmPkPjUdxDlStaRep, /* 0 - loosely coupled */
238 #else /* LCPJULUDX */
239 PtUlUdxDlStaRep, /* 0 - loosely coupled, portable */
240 #endif /* LCPJULUDX */
242 cmPkPjUdxDlStaRep, /* 1 - loosely coupled */
243 #else /* LCPJULUDX */
244 PtUlUdxDlStaRep, /* 1 - loosely coupled, portable */
245 #endif /* LCPJULUDX */
247 PjDlUdxDlStaRep, /* 2 - tightly coupled, UDX */
249 PtUlUdxDlStaRep, /* 2 - tightly coupled, portable */
253 /* UDX Interface Status Report from PDCP-UL to PDCP-DL primitive */
254 PRIVATE CONSTANT UdxDlFdbkPkt PjUlUdxDlFdbkPktInfoMt [PJ_MAX_UDX] =
257 cmPkPjUdxDlFdbkPkt, /* 0 - loosely coupled */
258 #else /* LCPJULUDX */
259 PtUlUdxDlFdbkPktInfo, /* 0 - loosely coupled, portable */
260 #endif /* LCPJULUDX */
262 cmPkPjUdxDlFdbkPkt, /* 1 - loosely coupled */
263 #else /* LCPJULUDX */
264 PtUlUdxDlFdbkPktInfo, /* 1 - loosely coupled, portable */
265 #endif /* LCPJULUDX */
267 PjDlUdxDlFdbkPktInfo, /* 2 - tightly coupled, UDX */
269 PtUlUdxDlFdbkPktInfo, /* 2 - tightly coupled, portable */
274 /* UDX Interface Feedback Pkt Info from PDCP-UL to PDCP-DL primitive */
275 PRIVATE CONSTANT UdxUlFdbkPkt PjUlUdxUlFdbkPktInfoMt [3] =
278 cmPkPjUdxUlFdbkPkt, /* 0 - loosely coupled */
279 #else /* LCPJULUDX */
280 PtUlUdxUlFdbkPktInfo, /* 0 - loosely coupled, portable */
281 #endif /* LCPJULUDX */
283 cmPkPjUdxUlFdbkPkt, /* 1 - loosely coupled */
284 #else /* LCPJULUDX */
285 PtUlUdxUlFdbkPktInfo, /* 1 - loosely coupled, portable */
286 #endif /* LCPJULUDX */
288 PjDlUdxUlFdbkPktInfo, /* 2 - tightly coupled, UDX */
290 PtUlUdxUlFdbkPktInfo, /* 2 - tightly coupled, portable */
294 /* UDX Interface UE Id Change Request primitive */
295 PRIVATE CONSTANT UdxUeIdChgReq PjUlUdxUeIdChgReqMt [PJ_MAX_UDX] =
298 cmPkPjUdxUeIdChgReq, /* 0 - loosely coupled */
299 #else /* LCPJULUDX */
300 PtUlUdxUeIdChgReq, /* 0 - loosely coupled, portable */
301 #endif /* LCPJULUDX */
303 cmPkPjUdxUeIdChgReq, /* 1 - loosely coupled */
304 #else /* LCPJULUDX */
305 PtUlUdxUeIdChgReq, /* 1 - loosely coupled, portable */
306 #endif /* LCPJULUDX */
308 PjDlUdxUeIdChgReq, /* 2 - tightly coupled, UDX */
310 PtUlUdxUeIdChgReq, /* 2 - tightly coupled, portable */
314 /* UDX Interface Security Config Request primitive */
315 PRIVATE CONSTANT UdxSecCfgReq PjUlUdxSecCfgReqMt [PJ_MAX_UDX] =
318 cmPkPjUdxSecCfgReq, /* 0 - loosely coupled */
319 #else /* LCPJULUDX */
320 PtUlUdxSecCfgReq, /* 0 - loosely coupled, portable */
321 #endif /* LCPJULUDX */
323 cmPkPjUdxSecCfgReq, /* 1 - loosely coupled */
324 #else /* LCPJULUDX */
325 PtUlUdxSecCfgReq, /* 1 - loosely coupled, portable */
326 #endif /* LCPJULUDX */
328 PjDlUdxSecCfgReq, /* 2 - tightly coupled, UDX */
330 PtUlUdxSecCfgReq, /* 2 - tightly coupled, portable */
334 /* UDX Interface COUNT Request primitive */
335 PRIVATE CONSTANT UdxCountReq PjUlUdxCountReqMt [PJ_MAX_UDX] =
338 cmPkPjUdxCountReq, /* 0 - loosely coupled */
339 #else /* LCPJULUDX */
340 PtUlUdxCountReq, /* 0 - loosely coupled, portable */
341 #endif /* LCPJULUDX */
343 cmPkPjUdxCountReq, /* 1 - loosely coupled */
344 #else /* LCPJULUDX */
345 PtUlUdxCountReq, /* 1 - loosely coupled, portable */
346 #endif /* LCPJULUDX */
348 PjDlUdxCountReq, /* 2 - tightly coupled, UDX */
350 PtUlUdxCountReq, /* 2 - tightly coupled, portable */
354 /* UDX Interface PDCP Status Request primitive */
355 PRIVATE CONSTANT UdxSduStaReq PjUlUdxSduStaReqMt [PJ_MAX_UDX] =
358 cmPkPjUdxSduStaReq, /* 0 - loosely coupled */
359 #else /* LCPJULUDX */
360 PtUlUdxSduStaReq, /* 0 - loosely coupled, portable */
361 #endif /* LCPJULUDX */
363 cmPkPjUdxSduStaReq, /* 1 - loosely coupled */
364 #else /* LCPJULUDX */
365 PtUlUdxSduStaReq, /* 1 - loosely coupled, portable */
366 #endif /* LCPJULUDX */
368 PjDlUdxSduStaReq, /* 2 - tightly coupled, UDX */
370 PtUlUdxSduStaReq, /* 2 - tightly coupled, portable */
374 /* UDX Interface Re-Establishment Request primitive */
375 PRIVATE CONSTANT UdxReEstReq PjUlUdxReEstReqMt [PJ_MAX_UDX] =
378 cmPkPjUdxReEstReq, /* 0 - loosely coupled */
379 #else /* LCPJULUDX */
380 PtUlUdxReEstReq, /* 0 - loosely coupled, portable */
381 #endif /* LCPJULUDX */
383 cmPkPjUdxReEstReq, /* 1 - loosely coupled */
384 #else /* LCPJULUDX */
385 PtUlUdxReEstReq, /* 1 - loosely coupled, portable */
386 #endif /* LCPJULUDX */
388 PjDlUdxReEstReq, /* 2 - tightly coupled, UDX */
390 PtUlUdxReEstReq, /* 2 - tightly coupled, portable */
395 PRIVATE CONSTANT UdxL2MeasReq pjUlUdxL2MeasReqMt[PJ_MAX_UDX] =
398 cmPkPjUdxL2MeasReq, /* 0 - loosely coupled */
400 PtUlUdxL2MeasReq, /* 0 - loosely coupled, portable */
401 #endif /* LCKWUIKWU */
403 cmPkPjUdxL2MeasReq, /* 1 - loosely coupled */
405 PtUlUdxL2MeasReq, /* 1 - loosely coupled, portable */
406 #endif /* LCKWUIKWU */
408 PjDlUdxL2MeasReq, /* 2 - tightly coupled, RRC */
410 PtUlUdxL2MeasReq, /* 2 - tightly coupled, portable */
414 PRIVATE CONSTANT UdxL2MeasSendReq pjUlUdxL2MeasSendReqMt[PJ_MAX_UDX] =
417 cmPkPjUdxL2MeasSendReq, /* 0 - loosely coupled */
419 PtUlUdxL2MeasSendReq, /* 0 - loosely coupled, portable */
420 #endif /* LCKWUIKWU */
422 cmPkPjUdxL2MeasSendReq, /* 1 - loosely coupled */
424 PtUlUdxL2MeasSendReq, /* 1 - loosely coupled, portable */
425 #endif /* LCKWUIKWU */
427 PjDlUdxL2MeasSendReq, /* 2 - tightly coupled, RRC */
429 PtUlUdxL2MeasSendReq, /* 2 - tightly coupled, portable */
433 PRIVATE CONSTANT UdxL2MeasStopReq pjUlUdxL2MeasStopReqMt[PJ_MAX_UDX] =
436 cmPkPjUdxL2MeasStopReq, /* 0 - loosely coupled */
438 PtUlUdxL2MeasStopReq, /* 0 - loosely coupled, portable */
439 #endif /* LCKWUIKWU */
441 cmPkPjUdxL2MeasStopReq, /* 1 - loosely coupled */
443 PtUlUdxL2MeasStopReq, /* 1 - loosely coupled, portable */
444 #endif /* LCKWUIKWU */
446 PjDlUdxL2MeasStopReq, /* 2 - tightly coupled, RRC */
448 PtUlUdxL2MeasStopReq, /* 2 - tightly coupled, portable */
454 /* UDX Interface PDCP Status Request primitive */
455 PRIVATE CONSTANT UdxDatResumeReq pjUlUdxDatResumeReqMt [PJ_MAX_UDX] =
458 cmPkPjUdxDatResumeReq, /* 0 - loosely coupled */
459 #else /* LCPJULUDX */
460 PtUlUdxDatResumeReq, /* 0 - loosely coupled, portable */
461 #endif /* LCPJULUDX */
463 cmPkPjUdxDatResumeReq, /* 1 - loosely coupled */
464 #else /* LCPJULUDX */
465 PtUlUdxDatResumeReq, /* 1 - loosely coupled, portable */
466 #endif /* LCPJULUDX */
468 PjDlUdxDatResumeReq, /* 2 - tightly coupled, UDX */
470 PtUlUdxDatResumeReq, /* 2 - tightly coupled, portable */
475 /* UDX Interface PDCP Start Data Forward primitive */
476 PRIVATE CONSTANT UdxDatForwardReq pjUlUdxDatForwardReqMt [PJ_MAX_UDX] =
479 cmPkPjUdxDatForwardReq, /* 0 - loosely coupled */
480 #else /* LCPJULUDX */
481 PtUlUdxDatForwardReq, /* 0 - loosely coupled, portable */
482 #endif /* LCPJULUDX */
484 cmPkPjUdxDatForwardReq, /* 1 - loosely coupled */
485 #else /* LCPJULUDX */
486 PtUlUdxDatForwardReq, /* 1 - loosely coupled, portable */
487 #endif /* LCPJULUDX */
489 PjDlUdxDatForwardReq, /* 2 - tightly coupled, UDX */
491 PtUlUdxDatForwardReq, /* 2 - tightly coupled, portable */
495 /**************************************************************************
497 *************************************************************************/
500 * @brief This function binds the RRC service user with the PDCP
503 * @details This function binds the RRC service user with the PDCP
504 * service provider. The PDCP registers this new service
505 * user and allocates a Service Access Point (SAP) for
506 * this bind. The service user specifies the reference
507 * number that is used for the duration of this bind.
510 PUBLIC S16 PjUlUdxBndReq
512 Pst *post, /* Post structure */
513 SuId suId, /* Service user ID */
514 SpId spId /* Service provider ID */
517 PUBLIC S16 PjUlUdxBndReq(post, suId, spId)
518 Pst *post; /* Post structure */
519 SuId suId; /* Service user ID */
520 SpId spId; /* Service provider ID */
526 RETVALUE((*PjUlUdxBndReqMt[post->selector])(post, suId, spId));
528 } /* end of function PjUlUdxBndReq */
532 * @brief This function unbinds the RRC service user with the PDCP
535 * @details This function unbinds the RRC service user with the PDCP
540 PUBLIC S16 PjUlUdxUbndReq
542 Pst *post, /* Post structure */
543 SpId spId, /* Service provider ID */
544 Reason reason /* Reason */
547 PUBLIC S16 PjUlUdxUbndReq(post, spId, reason)
548 Pst *post; /* Post structure */
549 SpId spId; /* Service provider ID */
550 Reason reason; /* Reason */
554 TRC3(PjUlUdxUbndReq);
556 RETVALUE((*PjUlUdxUbndReqMt[post->selector])(post, spId, reason));
558 } /* end of function PjUlUdxUbndReq */
563 * @brief This function is used to pass Signalling Info to PDCP related
564 * to PDCP configuration.
566 * @details This function is used to pass signaling Info to PDCP related
567 * to PDCP configuration.
571 PUBLIC S16 PjUlUdxCfgReq
573 Pst *post, /* Post structure */
574 SpId spId, /* Service provider ID */
575 UdxCfgReqInfo *pdCfgReq /* PDCP Config parameters */
578 PUBLIC S16 PjUlUdxCfgReq(post, spId, pdCfgReq)
579 Pst *post; /* Post structure */
580 SpId spId; /* Service provider ID */
581 UdxCfgReqInfo *pdCfgReq; /* PDCP Config parameters */
588 RETVALUE((*PjUlUdxCfgReqMt[post->selector])(post, spId, pdCfgReq));
590 } /* end of function PjUlUdxCfgReq */
595 * @brief This function is used to sent the PDCP STATUS report to PDCP-DL during the Reestablishment.
596 * @details This function is used to sent the PDCP STATUS report to PDCP-DL during the Reestablishment
600 PUBLIC S16 PjUlUdxUlStaRep
602 Pst *pst, /* Post structure */
603 SpId spId, /* Service provider ID */
604 UdxUlStaRepInfo *staRep /*PDCP Status Report*/
607 PUBLIC S16 PjUlUdxUlStaRep (pst, spId, staRep)
608 Pst *pst; /* Post structure */
609 SpId spId; /* Service provider ID */
610 UdxUlStaRepInfo *staRep; /* PDCP Status Report*/
614 TRC3(PjUlUdxUlStaRep);
616 RETVALUE((*PjUlUdxUlStaRepMt[pst->selector])(pst, spId, staRep));
618 } /* end of function PjUlUdxUlStaRep */
622 * @brief This function is used to sent the PDCP STATUS report received from peer RLC to PDCP-DL.
623 * @details This function is used to sent the PDCP STATUS report received from peer RLC to PDCP-DL
627 PUBLIC S16 PjUlUdxDlStaRep
629 Pst *pst, /* Post structure */
630 SpId spId, /* Service provider ID */
631 UdxDlStaRepInfo *staRep /*PDCP Status Report*/
634 PUBLIC S16 PjUlUdxDlStaRep (pst, spId, staRep)
635 Pst *pst; /* Post structure */
636 SpId spId; /* Service provider ID */
637 UdxDlStaRepInfo *staRep; /* PDCP Status Report*/
641 TRC3(PjUlUdxDlStaRep);
643 RETVALUE((*PjUlUdxDlStaRepMt[pst->selector])(pst, spId, staRep));
645 } /* end of function PjUlUdxUlStaRep */
649 * @brief This function is used to sent the ROHC feedback report received from peer PDCP to PDCP-DL
650 * @details This function is used to sent the ROHC feedback report received from peer PDCP to PDCP-DL
654 PUBLIC S16 PjUlUdxDlFdbkPktInfo
656 Pst *pst, /* Post structure */
657 SpId spId, /* Service provider ID */
658 UdxDlFdbkPktInfo *fdbk /*ROHC feedback*/
661 PUBLIC S16 PjUlUdxDlFdbkPktInfo (pst, spId, fdbk)
662 Pst *pst; /* Post structure */
663 SpId spId; /* Service provider ID */
664 UdxDlFdbkPktInfo *fdbk; /* ROHC feedback*/
668 TRC3(PjUlUdxDlFdbkPktInfo);
670 RETVALUE((*PjUlUdxDlFdbkPktInfoMt[pst->selector])(pst, spId, fdbk));
672 } /* end of function PjUlUdxDlFdbkPktInfo */
676 * @brief This function is used to sent the Feedback pkt info to DL-PDCP.
677 * @details This function is used to sent the Feedback pkt info to DL-PDCP.
681 PUBLIC S16 PjUlUdxUlFdbkPktInfo
683 Pst *pst, /* Post structure */
684 SpId spId, /* Service provider ID */
685 UdxUlFdbkPktInfo *fdbkPktInfo /*Feedback Packet Info*/
688 PUBLIC S16 PjUlUdxUlFdbkPktInfo (pst, spId, staRep)
689 Pst *pst; /* Post structure */
690 SpId spId; /* Service provider ID */
691 UdxUlFdbkPktInfo *fdbkPktInfo; /* Feedback Packet Info*/
695 TRC3(PjUlUdxUlFdbkPktInfo);
697 RETVALUE((*PjUlUdxUlFdbkPktInfoMt[pst->selector])(pst, spId, fdbkPktInfo));
699 } /* end of function PjUlUdxUlFdbkPktInfo */
704 * @brief Sends an UE Id Change Indication to PDCP on Ckw interface
705 * @details Sends an UE Id Change Indication to PDCP on Ckw interface
709 PUBLIC S16 PjUlUdxUeIdChgReq
711 Pst *post, /* post structure */
712 SpId spId, /* service provider */
713 U32 transId, /* RRC Transaction Id */
714 UdxUeInfo *oldUeInfo, /* current UE Id */
715 UdxUeInfo *newUeInfo /* new UE Id */
718 PUBLIC S16 PjUlUdxUeIdChgReq(post, spId, transId, oldUeInfo, newUeInfo)
719 Pst *post; /* post structure */
720 SpId spId; /* service provider */
721 U32 transId; /* RRC Transaction Id */
722 UdxUeInfo *oldUeInfo; /* current UE Id */
723 UdxUeInfo *newUeInfo; /* new UE Id */
726 TRC3(PjUlUdxUeIdChgReq);
728 RETVALUE((*PjUlUdxUeIdChgReqMt[post->selector])(post, spId, transId,
729 (UdxUeInfo *)oldUeInfo, (UdxUeInfo *)newUeInfo ));
731 } /* end of function PjUlUdxUeIdChgReq */
735 * @brief This function is used to configure PDCP security parameters
736 * (parametrs of Integrity protection and ciphering)
738 * @details This function is used to configure PDCP security parameters
739 * (parametrs of Integrity protection and ciphering)
743 PUBLIC S16 PjUlUdxSecCfgReq
745 Pst *post, /* Post structure */
746 SpId spId, /* Service provider ID */
747 UdxSecCfgReqInfo *cpjSecConfigReqInfo /* PDCP Security Config parameters */
750 PUBLIC S16 PjUlUdxSecCfgReq(post, spId, cpjSecConfigReqInfo)
751 Pst *post; /* Post structure */
752 SpId spId; /* Service provider ID */
753 UdxSecCfgReqInfo *cpjSecConfigReqInfo; /* PDCP Security Config parameters */
757 TRC3(PjUlUdxSecCfgReq);
759 RETVALUE((*PjUlUdxSecCfgReqMt[post->selector])(post, spId,
760 cpjSecConfigReqInfo));
762 } /* end of function PjUlUdxSecCfgReq */
766 * @brief This function is used to get COUNT values of each established DRB
768 * @details This function is used to get COUNT values of each established DRB
772 PUBLIC S16 PjUlUdxCountReq
774 Pst *post, /* Post structure */
775 SpId spId, /* Service provider ID */
776 UdxCountReqInfo *pdcpCountReq /* PDCP COUNT request paramters */
779 PUBLIC S16 PjUlUdxCountReq(post, spId, pdcpCountReq)
780 Pst *post; /* Post structure */
781 SpId spId; /* Service provider ID */
782 UdxCountReqInfo *pdcpCountReq; /* PDCP COUNT request paramters */
786 TRC3(PjUlUdxCountReq);
788 RETVALUE((*PjUlUdxCountReqMt[post->selector])(post, spId, pdcpCountReq));
790 } /* end of function PjUlUdxCountReq */
794 * @brief This function is used to get PDCP Sdu Status for all DRBs.
796 * @details This function is used to get PDCP Sdu Status for all DRBs
797 * from PDCP at source during HO.
801 PUBLIC S16 PjUlUdxSduStaReq
803 Pst *post, /* Post structure */
804 SpId spId, /* Service provider ID */
805 UdxSduStaReqInfo *pdcpSduStaReq /* PDCP SDU status request parameters */
808 PUBLIC S16 PjUlUdxSduStaReq(post, spId, pdcpSduStaReq)
809 Pst *post; /* Post structure */
810 SpId spId; /* Service provider ID */
811 UdxSduStaReqInfo *pdcpSduStaReq; /* PDCP SDU status request parameters */
815 TRC3(PjUlUdxSduStaReq);
817 RETVALUE((*PjUlUdxSduStaReqMt[post->selector])(post, spId, pdcpSduStaReq));
819 } /* end of function PjUlUdxSduStaReq */
824 * @brief Sends a Re-establish request to PDCP on UDX interface
825 * @details Sends a Re-establish request to PDCP on UDX interface
829 PUBLIC S16 PjUlUdxReEstReq
831 Pst *post, /* post structure */
832 SpId spId, /* service provider */
833 UdxReEstReqInfo *restbInfo /* Re-establishment Info */
836 PUBLIC S16 PjUlUdxReEstReq(post, spId, restbInfo)
837 Pst *post; /* post structure */
838 SpId spId; /* service provider */
839 UdxReEstReqInfo *restbInfo; /* new UE Id */
842 TRC3(PjUlUdxReEstReq);
844 RETVALUE((*PjUlUdxReEstReqMt[post->selector])(post, spId, restbInfo));
846 } /* end of function PjUlUdxReEstReq */
850 * @brief Request from ULM to DLM for MeasReq
854 * Function : PjUlUdxL2MeasReq
856 * @param[in] Pst* pst
862 PUBLIC S16 PjUlUdxL2MeasReq
865 PjL2MeasReqEvt *measReqEvt
868 PUBLIC S16 PjUlUdxL2MeasReq(pst,measReqEvt)
870 PjL2MeasReqEvt *measReqEvt;
874 TRC3(PjUlUdxStaUpdReq);
876 RETVALUE((*pjUlUdxL2MeasReqMt[pst->selector])(pst,measReqEvt));
877 } /* end of PjUlUdxMesReq*/
880 * @brief Request from ULM to DLM for MeasSendReq
884 * Function : PjUlUdxMeasSendReq
886 * @param[in] Pst* pst
892 PUBLIC S16 PjUlUdxL2MeasSendReq
898 PUBLIC S16 PjUlUdxL2MeasSendReq(pst,measReqEvt)
904 TRC3(PjUlUdxL2MeasSendReq);
906 RETVALUE((*pjUlUdxL2MeasSendReqMt[pst->selector])(pst,measType));
907 } /* end of PjUlUdxMesReq*/
910 * @brief Request from ULM to DLM for MeasStopReq
914 * Function : PjUlUdxL2MeasStopReq
916 * @param[in] Pst* pst
922 PUBLIC S16 PjUlUdxL2MeasStopReq
928 PUBLIC S16 PjUlUdxL2MeasStopReq(pst,measReqEvt)
934 TRC3(PjUlUdxL2MeasStopReq);
936 RETVALUE((*pjUlUdxL2MeasStopReqMt[pst->selector])(pst,measType));
937 } /* end of PjUlUdxMesReq*/
943 * @brief Request from ULM to DLM for MeasStopReq
947 * Function : PjUlUdxDatResumeReq
949 * @param[in] Pst* pst
955 PUBLIC S16 PjUlUdxDatResumeReq
958 UdxDatResumeInfo *udxDatResumeInfo
961 PUBLIC S16 PjUlUdxDatResumeReq(pst, udxDatResumeInfo)
963 UdxDatResumeInfo *udxDatResumeInfo;
967 TRC3(PjUlUdxDatResumeReq);
969 RETVALUE((*pjUlUdxDatResumeReqMt[pst->selector])(pst, udxDatResumeInfo));
970 } /* end of PjUlUdxMesReq*/
978 * Function : PjUlUdxDatForwardReq
980 * @param[in] Pst* pst
986 PUBLIC S16 PjUlUdxDatForwardReq
989 UdxDatForwardInfo *udxDatForwardInfo
992 PUBLIC S16 PjUlUdxDatForwardReq(pst, udxDatForwardInfo)
994 UdxDatForwardInfo *udxDatForwardInfo;
998 TRC3(PjUlUdxDatForwardReq);
1000 RETVALUE((*pjUlUdxDatForwardReqMt[pst->selector])(pst, udxDatForwardInfo));
1001 } /* end of PjUlUdxMesReq*/
1002 /**************************************************************************
1003 * The UDX (Portable) Interface
1004 *************************************************************************/
1006 /**************************************************************************
1008 * Fun: PtUlUdxBndReq
1010 * Desc: Portable UdxBndReq primitive
1018 *************************************************************************/
1020 PRIVATE S16 PtUlUdxBndReq
1022 Pst *post, /* Post structure */
1023 SuId suId, /* Service user ID */
1024 SpId spId /* Service provider ID */
1027 PRIVATE S16 PtUlUdxBndReq(post, suId, spId)
1028 Pst *post; /* Post structure */
1029 SuId suId; /* Service user ID */
1030 SpId spId; /* Service provider ID */
1034 TRC3(PtUlUdxBndReq);
1042 } /* end of function PtUlUdxBndReq */
1045 /**************************************************************************
1047 * Fun: PtUlUdxUbndReq
1049 * Desc: Portable UdxUbndReq primitive
1057 *************************************************************************/
1059 PRIVATE S16 PtUlUdxUbndReq
1061 Pst *post, /* Post structure */
1062 SpId spId, /* Service provider ID */
1063 Reason reason /* Reason */
1066 PRIVATE S16 PtUlUdxUbndReq(post, spId, reason)
1067 Pst *post; /* Post structure */
1068 SpId spId; /* Service provider ID */
1069 Reason reason; /* Reason */
1073 TRC3(PtUlUdxUbndReq);
1081 } /* end of function PtUlUdxUbndReq */
1084 /**************************************************************************
1086 * Fun: PtUlUdxCfgReq
1088 * Desc: Portable UdxCfgReq primitive
1096 *************************************************************************/
1098 PRIVATE S16 PtUlUdxCfgReq
1100 Pst *post, /* Post structure */
1101 SpId spId, /* Service provider ID */
1102 UdxCfgReqInfo *pdCfgReq /* PDCP Config parameters */
1105 PRIVATE S16 PtUlUdxCfgReq(post, spId, pdCfgReq)
1106 Pst *post; /* Post structure */
1107 SpId spId; /* Service provider ID */
1108 UdxCfgReqInfo *pdCfgReq; /* PDCP Config parameters */
1112 TRC3(PtUlUdxCfgReq);
1121 } /* end of function PtUlUdxCfgReq */
1123 /**************************************************************************
1125 * Fun: PtUlUdxUlStaRep
1127 * Desc: Portable UdxUlStaRep primitive
1133 * File: pj_udx_ptul.c
1135 *************************************************************************/
1137 PRIVATE S16 PtUlUdxUlStaRep
1139 Pst *post, /* Post structure */
1140 SpId spId, /* Service provider ID */
1141 UdxUlStaRepInfo *pdStaRep /* PDCP UL ot PDCP DL Reestablishment trigger */
1144 PRIVATE S16 PtUlUdxUlStaRep(post, spId, pdStaRep)
1145 Pst *post; /* Post structure */
1146 SpId spId; /* Service provider ID */
1147 UdxUlStaRepInfo *pdStaRep; /* PDCP UL ot PDCP DL Reestablishment trigger */
1151 TRC3(PtUlUdxUlStaRep);
1160 } /* end of function */
1162 /**************************************************************************
1164 * Fun: PtUlUdxUlStaRep
1166 * Desc: Portable UdxUlStaRep primitive
1172 * File: pj_udx_ptul.c
1174 *************************************************************************/
1176 PRIVATE S16 PtUlUdxDlStaRep
1178 Pst *post, /* Post structure */
1179 SpId spId, /* Service provider ID */
1180 UdxDlStaRepInfo *pdStaRep /* Status report from PDCP UL to PDCP DL */
1183 PRIVATE S16 PtUlUdxDlStaRep(post, spId, pdStaRep)
1184 Pst *post; /* Post structure */
1185 SpId spId; /* Service provider ID */
1186 UdxDlStaRepInfo *pdStaRep; /* Status report from PDCP UL to PDCP DL */
1190 TRC3(PtUlUdxDlStaRep);
1199 } /* end of function */
1202 /**************************************************************************
1204 * Fun: PtUlUdxUeIdChgReq
1206 * Desc: Portable UdxUeIdChgReq primitive
1214 *************************************************************************/
1216 PRIVATE S16 PtUlUdxUeIdChgReq
1218 Pst *post, /* post structure */
1219 SpId spId, /* service provider */
1220 U32 transId, /* TransId */
1221 UdxUeInfo *oldUeInfo, /* current UE Id */
1222 UdxUeInfo *newUeInfo /* new UE Id */
1225 PRIVATE S16 PtUlUdxUeIdChgReq(post, spId, transId, oldUeInfo, newUeInfo)
1226 Pst *post; /* post structure */
1227 SpId spId; /* service provider */
1228 U32 transId; /* TransId */
1229 UdxUeInfo *oldUeInfo; /* current UE Id */
1230 UdxUeInfo *newUeInfo; /* new UE Id */
1233 TRC3(PtUlUdxUeIdChgReq);
1243 } /* end of function PtUlCkwUeIdChgReq */
1245 /**************************************************************************
1247 * Fun: PtUlUdxSecCfgReq
1249 * Desc: Portable UdxSecCfgReq primitive
1257 *************************************************************************/
1259 PRIVATE S16 PtUlUdxSecCfgReq
1261 Pst *post, /* post structure */
1262 SpId spId, /* service provider */
1263 UdxSecCfgReqInfo *secCfgReq /* PDCP Security Config paramters */
1266 PRIVATE S16 PtUlUdxSecCfgReq(post, spId, secCfgReq)
1267 Pst *post; /* post structure */
1268 SpId spId; /* service provider */
1269 UdxSecCfgReqInfo *secCfgReq; /* PDCP Security Config paramters */
1272 TRC3(PtUlUdxSecCfgReq);
1280 } /* end of function PtUlUdxSecCfgReq */
1282 /**************************************************************************
1284 * Fun: PtUlUdxCountReq
1286 * Desc: Portable UdxCountReq primitive
1294 *************************************************************************/
1296 PRIVATE S16 PtUlUdxCountReq
1298 Pst *post, /* post structure */
1299 SpId spId, /* service provider */
1300 UdxCountReqInfo *countReq /* PDCP Security Config paramters */
1303 PRIVATE S16 PtUlUdxCountReq(post, spId, countReq)
1304 Pst *post; /* post structure */
1305 SpId spId; /* service provider */
1306 UdxCountReqInfo *countReq; /* Count value paramters */
1309 TRC3(PtUlUdxCountReq);
1317 } /* end of function PtUlUdxCountReq */
1319 /**************************************************************************
1321 * Fun: PtUlUdxSduStaReq
1323 * Desc: Portable UdxSduStaReq primitive
1331 *************************************************************************/
1333 PRIVATE S16 PtUlUdxSduStaReq
1335 Pst *post, /* post structure */
1336 SpId spId, /* service provider */
1337 UdxSduStaReqInfo *sduStaReq /* PDCP SDU status parameters */
1340 PRIVATE S16 PtUlUdxSduStaReq(post, spId, sduStaReq)
1341 Pst *post; /* post structure */
1342 SpId spId; /* service provider */
1343 UdxSduStaReqInfo *sduStaReq; /* PDCP SDU status parameters */
1346 TRC3(PtUlUdxSduStaReq);
1355 } /* end of function PtUlUdxSduStaReq */
1358 /**************************************************************************
1360 * Fun: PtUlUdxReEstReq
1362 * Desc: Portable UdxReEstReq primitive
1370 *************************************************************************/
1372 PRIVATE S16 PtUlUdxReEstReq
1374 Pst *post, /* post structure */
1375 SpId spId, /* service provider */
1376 UdxReEstReqInfo *restbInfo /* PDCP Re-establishment Config paramters */
1379 PRIVATE S16 PtUlUdxReEstReq(post, spId, restbInfo)
1380 Pst *post; /* post structure */
1381 SpId spId; /* service provider */
1382 UdxReEstReqInfo *restbInfo; /* PDCP Re-establishment Config paramters */
1385 TRC3(PtUlUdxReEstReq);
1393 } /* end of function PtUlUdxReEstReq */
1394 /**************************************************************************
1396 * Fun: PtUlUdxUlFdbkPktInfo
1398 * Desc: Portable PtUlUdxUlFdbkPktInfo primitive
1406 *************************************************************************/
1408 PRIVATE S16 PtUlUdxUlFdbkPktInfo
1410 Pst *post, /* post structure */
1411 SpId spId, /* service provider */
1412 UdxUlFdbkPktInfo *fdbkPktInfo /* feedback Packet Info */
1415 PRIVATE S16 PtUlUdxUlFdbkPktInfo(post, spId, fdbkPktInfo)
1416 Pst *post; /* post structure */
1417 SpId spId; /* service provider */
1418 UdxUlFdbkPktInfo *fdbkPktInfo /* feedback Packet Info */
1421 TRC3(PtUlUdxUlFdbkPktInfo);
1425 UNUSED(fdbkPktInfo);
1430 } /* end of function PtUlUdxUlFdbkPktInfo */
1433 /**************************************************************************
1435 * Fun: PtUlUdxDlFdbkPktInfo
1437 * Desc: Portable PtUlUdxDlFdbkPktInfo primitive
1445 *************************************************************************/
1447 PRIVATE S16 PtUlUdxDlFdbkPktInfo
1449 Pst *post, /* post structure */
1450 SpId spId, /* service provider */
1451 UdxDlFdbkPktInfo *fdbkPktInfo /* feedback Packet Info */
1454 PRIVATE S16 PtUlUdxDlFdbkPktInfo(post, spId, fdbkPktInfo)
1455 Pst *post; /* post structure */
1456 SpId spId; /* service provider */
1457 UdxDlFdbkPktInfo *fdbkPktInfo /* feedback Packet Info */
1460 TRC3(PtUlUdxDlFdbkPktInfo);
1464 UNUSED(fdbkPktInfo);
1469 } /* end of function PtUlUdxDlFdbkPktInfo */
1476 * @brief Request from ULM to DLM for Measurement
1480 * Function : PjUdxUdxL2MeasReq
1482 * @param[in] Pst* pst
1488 PRIVATE S16 PtUlUdxL2MeasReq
1491 PjL2MeasReqEvt *measReqEvt
1494 PRIVATE S16 PtUlUdxL2MeasReq(pst, measReqEvt )
1496 PjL2MeasReqEvt *measReqEvt;
1500 TRC3(PtUlUdxL2MeasReq);
1506 * @brief Request from ULM to DLM for Measurement
1510 * Function : PjUdxUdxL2MeasSendReq
1512 * @param[in] Pst* pst
1518 PRIVATE S16 PtUlUdxL2MeasSendReq
1524 PRIVATE S16 PtUlUdxL2MeasSendReq(pst, status )
1530 TRC3(PtUlUdxL2MeasSendReq);
1536 * @brief Request from ULM to DLM for Measurement
1540 * Function : PjUdxUdxL2MeasStopReq
1542 * @param[in] Pst* pst
1548 PRIVATE S16 PtUlUdxL2MeasStopReq
1554 PRIVATE S16 PtUlUdxL2MeasStopReq(pst, status )
1560 TRC3(PtUlUdxL2MeasStopReq);
1566 * @brief Request from ULM to DLM for ResumeReq
1570 * Function : PtUlUdxDatResumeReq
1572 * @param[in] Pst* pst
1578 PRIVATE S16 PtUlUdxDatResumeReq
1581 UdxDatResumeInfo *udxDatResumeInfo
1584 PRIVATE S16 PtUlUdxDatResumeReq(pst, udxDatResumeInfo )
1586 UdxDatResumeInfo *udxDatResumeInfo;
1590 TRC3(PtUlUdxDatResumeReq);
1600 * Function : PtUlUdxDatForwardReq
1602 * @param[in] Pst* pst
1608 PRIVATE S16 PtUlUdxDatForwardReq
1611 UdxDatForwardInfo *udxDatForwardInfo
1614 PRIVATE S16 PtUlUdxDatForwardReq(pst, udxDatForwardInfo )
1616 UdxDatForwardInfo *udxDatForwardInfo;
1620 TRC3(PtUlUdxDatForwardReq);
1625 #endif /* #ifdef PTPJULUDX */
1629 #endif /* __cplusplus */
1630 /********************************************************************30**
1632 **********************************************************************/