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 Interface
25 Desc: This file contains the Data structures for LTE PDCP Interface
29 *********************************************************************21*/
35 #endif /*for extern "C"*/
39 * @brief UDX Interface file
42 /*************************************************************************
44 ************************************************************************/
47 * Cipher Key type information.
49 typedef U8 UdxCipherKey;
53 * Integrity Key type information.
55 typedef U8 UdxIntegrityKey;
59 * RLC Parameter Information in AM mode.
61 typedef struct udxRlcAm
63 Bool statusRepReqd; /*!< Status report required */
64 U8 pdcpSNSize; /*!< Length of PDCP sequence number */
69 * RLC Parameter Information in UM mode.
71 typedef struct udxRlcUm
73 U8 pdcpSNSize; /*!< Length of PDCP sequence number */
78 * Mapped RLC Entity Information in RLC for the PDCP Entity
80 typedef struct udxRlcInfo
82 U8 dir; /*!< UPLINK/DOWNLINK/BOTH */
83 U8 mode; /*!< RLC Mode */
86 UdxRlcAm rlcAm; /*!< RLC in AM mode */
87 UdxRlcUm rlcUm; /*!< RLC in UM mode */
94 * Ciphering Information to be configured per UE in PDCP.
96 typedef struct udxCipherInfo
98 UdxCipherKey ctrlplnKey[UDX_CIPHER_KEY_LEN]; /*!< Control plane
100 UdxCipherKey usrplnKey[UDX_CIPHER_KEY_LEN]; /*!< User plane
102 U8 algoType; /*!< Algorithm type.
105 -# UDX_SEC_ALG_SNOW3G
112 * Integrity protection paramater information.
114 typedef struct udxIntegInfo
116 U8 algoType; /*!< Algorithm type.
119 -# UDX_SEC_ALG_SNOW3G
121 UdxIntegrityKey intKey[UDX_INTG_KEY_LEN]; /*!< Integrity key */
126 * PDCP Security configuration parameter.
128 typedef struct udxSecCfg
130 Bool selSecAct; /*!< Selective security activation flag.
132 PDCP applies only Integrity algorithm for the first UL and first DL
133 messages (security activation procedure), applies both Integrity and
134 ciphering for all the other messages (including handover which involves
135 reconfiguration messages). selSecAct enables to identify whether
136 PDCP needs to selectively apply only Integrity for first UL/DL message.
138 Bool isHo; /*!< Will be set true in case of HO > */
139 UdxIntegInfo integInfo; /*!< Integrity configuration */
140 UdxCipherInfo cipherInfo; /*!< Ciphering configuration */
145 * ROHC Compression protocol information structure.
147 typedef struct udxRohcInfo
149 U16 maxCid; /*!< Maximum CID */
150 Bool profLst[UDX_MAX_ROHC_PROF_LIST]; /*!< ROHC profile
156 * ROHC Configuration information for PDCP entity.
158 typedef struct udxHdrCompCfg
160 Bool hdrCompUsed; /*!< Header Compression Used/Not */
161 UdxRohcInfo rohcInfo; /*!< ROHC configuration information */
166 * Handover Information for RB.
168 typedef struct udxHoInfo
170 U8 isHoPres; /*!< Last 2bits (from LSB)is used to convey handover information is present or
171 not. @n Allowed values are:
172 -# UDX_HO_NOT_PRSNT 00
176 U8 snLen; /*!< PDCP-SN length 12/15 bits */
177 U32 dlCount; /*!< DL COUNT to assign for new SDUs */
178 U32 ulCount; /*!< UL First Missing SN */
179 U16 numBits; /*!< Number of bits in UL bitmap */
180 U8 *ulBitMap; /*!< UL SN bitmap excluding FMS to be used
186 * Configuraiton Structure to add an RB.
188 typedef struct udxAddCfgEnt
190 Bool discReqd; /*!< Discard required/not for PDUs
191 with Integrity Verification failure */
192 Bool cfmReqd; /*!< Confirm required/not for SDUs
193 received by the peer PDCP entity. */
194 /* cpj_x_001.main_3 added support for L2 Measurement */
196 U8 qci; /*!< qCI value Associated with that RB */
197 #endif /* LTE_L2_MEAS */
199 UdxRlcInfo rlcInfo; /*!< Corresponding RLC entity information. */
200 S16 discardTmr; /*!< Discard timer. @n The value for this parameter
201 is expected in milli seconds. @n Value of infinity
202 is also allowed and -1 must be passed for
204 U16 reOrdTmrVal; /*!< t-Reorder Timer Value in ms */
205 UdxHdrCompCfg hdrCompCfg; /*!< PDCP compression information */
210 * Configuraiton Structure to modify an RB.
212 typedef struct udxModCfgEnt
215 U8 bitFlag; /*!< List of Modified Elements
216 Each bit respresents one element */
218 Bool discReqd; /*!< Discard required/not for PDUs
219 with Integrity Verification failure.
221 Bool cfmReqd; /*!< Confirm required/not for SDUs
222 received by the peer PDCP entity.
224 UdxHdrCompCfg hdrCompCfg; /*!< PDCP compression information */
225 UdxHoInfo hoInfo; /*!< Handover Information */
226 U16 reOrdTmrVal; /*!< t-Reorder Timer Value in ms */
232 * Configuration structure for PDCP entity.
234 typedef struct udxCfgEnt
236 U8 rbId; /*!< PDCP ID. */
237 U8 cfgType; /*!< Configuration request type -
242 -# UDX_CFG_DELETE_UE */
243 U8 rbType; /*!< RB type.
248 UdxAddCfgEnt addCfg; /*!< Configuration parameters for
249 cfgType UDX_CFG_ADD */
250 UdxModCfgEnt modCfg; /*!< Configuration parameters for
251 cfgType UDX_CFG_MODIFY */
259 * PDCP Configuration structure. Parameters are filled by RRC
260 layer while configuring the PDCP layer.
262 typedef struct udxCfgReqInfo
264 CmLteRnti ueId; /*!< UE ID */
265 CmLteCellId cellId; /*!< Cell ID */
266 U32 transId; /*!< Transaction ID */
267 U8 numEnt; /*!< Number of entities to be
268 configured in the Config request.*/
270 #ifdef TENB_MULT_CELL_SUPPRT
274 UdxCfgEnt cfgEnt[UDX_MAX_CFG]; /*!< Config paramater for
281 * Status report from PDCP-UL to PDCP-DL during Reestablishment.
283 typedef struct udxUlStaRepInfo
291 * Status report received from peer RLC entity.
293 typedef struct udxDlStaRepInfo
303 * ROHC Feedback packet Info from PDCP-UL to PDCP-DL.
305 typedef struct udxUlFdbkPktInfo
313 * ROHC Feedback packet Info received from UE. Send to PDCP-DL.
315 typedef struct udxDlFdbkPktInfo
324 * PDCP Confirm parameter structure for PDCP entity.
326 typedef struct udxCfmEnt
328 U8 rbId; /*!< RB ID */
329 U8 rbType; /*!< RB Type */
330 Status status; /*!< ROK or RFAILED */
331 Reason reason; /*!< Reason for failure */
336 * PDCP Configuration Confirm structure.
338 typedef struct udxCfgCfmInfo
340 CmLteRnti ueId; /*!< UE ID */
341 CmLteCellId cellId; /*!< Cell ID */
342 U32 transId; /*!< Transcation ID */
343 U8 numEnt; /*!< Number of entities */
344 UdxCfmEnt cfmEnt[UDX_MAX_CFM]; /*!< Confirm parameter for
350 * Re-estabishment Request structure for SRB1 of an UE.
352 typedef struct udxReEstReqInfo
354 CmLtePdcpId pdcpId; /*!< PDCP ID */
355 U32 transId; /*!< Transcation ID */
356 U8 intKey[UDX_INTG_KEY_LEN]; /*!< Integrity key */
357 UdxCipherKey ctrlplnKey[UDX_CIPHER_KEY_LEN]; /*!< Control plane
359 UdxCipherKey usrplnKey[UDX_CIPHER_KEY_LEN]; /*!< User plane
365 * Re-establishment Confirmation structure for an UE.
367 typedef struct udxReEstCfmInfo
369 CmLteRnti ueId; /*!< UE ID */
370 CmLteCellId cellId; /*!< Cell ID */
371 U32 transId; /*!< Transcation ID */
372 Status status; /*!< Status of reestablishment.
381 * PDCP Security Configuration structure. Parameters are filled by RRC
382 * while configuring the security parameters.
384 typedef struct udxSecCfgReqInfo
386 CmLteRnti ueId; /*!< UE ID */
387 CmLteCellId cellId; /*!< Cell ID */
388 U32 transId; /*!< Transcation ID */
389 UdxSecCfg secCfg; /*!< Configuration paramater for PDCP entity */
394 * PDCP Security Configuration confirm structure.
396 typedef struct udxSecCfgCfmInfo
398 CmLteRnti ueId; /*!< UE ID */
399 CmLteCellId cellId; /*!< Cell ID */
400 U32 transId; /*!< Transcation ID */
401 Status status; /*!< ROK or RFAILED */
402 Reason reason; /*!< Reason for failure */
409 typedef struct udxUeInfo
411 CmLteCellId cellId; /*!< Cell ID */
412 CmLteRnti ueId; /*!< UE ID */
417 * PDCP Count Request Information from RRC.
419 typedef struct udxCountReqInfo
421 CmLteRnti ueId; /*!< UE ID */
422 CmLteCellId cellId; /*!< Cell ID */
423 U32 transId; /*!< Transaction ID */
428 * PDCP Count Information for a DRB.
430 typedef struct udxCountInfo
432 U8 rbId; /*!< RB ID */
433 U8 dir; /*!< Direction of the RB */
434 U32 ulCount; /*!< UL Count value */
435 U32 dlCount; /*!< DL Count value */
439 * PDCP Count Request Confirmation to RRC.
441 typedef struct udxCountCfmInfo
443 CmLteRnti ueId; /*!< UE ID */
444 CmLteCellId cellId; /*!< Cell ID */
445 U32 transId; /*!< Transaction ID */
446 U8 numRb; /*!< Number of DRBs */
447 UdxCountInfo countInfo[UDX_MAX_DRB]; /*!< CountInfo of DRBs */
448 Status status; /*!< ROK or RFAILED */
449 Reason reason; /*!< Reason for failure */
454 * PDCP SDU Status Request Information from RRC - Used for reestablishment
457 typedef struct udxSduStaReqInfo
459 CmLteRnti ueId; /*!< UE ID */
460 CmLteCellId cellId; /*!< Cell ID */
461 U32 transId; /*!< Transaction ID */
466 * PDCP DL SDU Status Information for a DRB mapped to RLC AM.
468 typedef struct udxDlSduStaInfo
471 U32 count; /*!< Count with the next SN to be assigned
477 * PDCP SDU Status Information for a DRB mapped to RLC AM.
479 typedef struct udxSduStaInfo
481 U8 rbId; /*!< RB ID */
482 U8 dir; /*!< Direction of the RB */
483 UdxDlSduStaInfo dlSduStaInfo; /*!< SDU Status Info for DL */
488 * PDCP SDU Status Request Confirmation for an UE.
490 typedef struct udxSduStaCfmInfo
492 CmLteRnti ueId; /*!< UE ID */
493 CmLteCellId cellId; /*!< Cell ID */
494 U32 transId; /*!< Transaction ID */
495 U8 numRb; /*!< Number of RBs */
496 UdxSduStaInfo sduStaInfo[UDX_MAX_DRB]; /*!< SDU Status Info of DRBs mapped
498 Status status; /*!< ROK or RFAILED */
499 Reason reason; /*!< Reason for Failure */
506 typedef struct udxDatResumeInfo
508 CmLteRnti ueId; /*!< UE ID */
509 CmLteCellId cellId; /*!< Cell ID */
510 U32 transId; /*!< Transcation ID */
517 typedef struct udxDatFwdCfmInfo
519 CmLteRnti ueId; /*!< UE ID */
520 CmLteCellId cellId; /*!< Cell ID */
521 Status status; /*!< ROK or RFAILED */
522 Reason reason; /*!< Reason for Failure */
526 typedef struct udxDatResumeCfmInfo
528 CmLteRnti ueId; /*!< UE ID */
529 CmLteCellId cellId; /*!< Cell ID */
530 U32 transId; /*!< Transcation ID */
531 Status status; /*!< ROK or RFAILED */
532 Reason reason; /*!< Reason for Failure */
533 } UdxDatResumeCfmInfo;
538 typedef struct udxDatForwardInfo
540 CmLteRnti ueId; /*!< UE ID */
541 CmLteCellId cellId; /*!< Cell ID */
542 U32 transId; /*!< Transcation ID */
543 Bool ulFwding; /*!< UL fwding to be done or not */
546 /*************************************************************************
548 ************************************************************************/
550 /*************************************************************************
551 * Start of Pointer Interface primitives
552 ************************************************************************/
553 typedef S16 (*UdxBndReq) ARGS((Pst *pst, SuId suId, SpId spId));
554 typedef S16 (*UdxBndCfm) ARGS((Pst *pst, SuId suId, U8 status));
555 typedef S16 (*UdxUbndReq) ARGS((Pst *pst, SpId spId, Reason reason));
556 typedef S16 (*UdxCfgReq) ARGS((Pst *pst, SpId spId, UdxCfgReqInfo *cfgReq));
557 typedef S16 (*UdxCfgCfm) ARGS((Pst *pst, SuId suId, UdxCfgCfmInfo *cfgCfm));
558 typedef S16 (*UdxReEstReq) ARGS((Pst *pst, SpId spId, UdxReEstReqInfo *reEstReq));
559 typedef S16 (*UdxReEstCfm) ARGS((Pst *pst, SuId suId, UdxReEstCfmInfo *reEstCfm));
560 typedef S16 (*UdxSecCfgReq) ARGS((Pst *pst, SpId spId, UdxSecCfgReqInfo *secCfgReq));
561 typedef S16 (*UdxSecCfgCfm) ARGS((Pst *pst, SuId suId, UdxSecCfgCfmInfo *secCfgCfm));
562 typedef S16 (*UdxUeIdChgReq) ARGS((Pst *pst, SpId spId, U32 transId,
563 UdxUeInfo *oldUeInfo,
564 UdxUeInfo *newUeInfo));
565 typedef S16 (*UdxUeIdChgCfm) ARGS((Pst *pst, SuId suId, U32 transId,
566 UdxUeInfo *ueInfo, CmStatus status));
567 typedef S16 (*UdxCountReq) ARGS((Pst *pst, SpId spId, UdxCountReqInfo *countReq));
568 typedef S16 (*UdxCountCfm) ARGS((Pst *pst, SuId suId, UdxCountCfmInfo *countCfm));
569 typedef S16 (*UdxSduStaReq) ARGS((Pst *pst, SpId spId, UdxSduStaReqInfo *staReq));
570 typedef S16 (*UdxSduStaCfm) ARGS((Pst *pst, SuId suId, UdxSduStaCfmInfo *staCfm));
571 typedef S16 (*UdxDatResumeCfm) ARGS((Pst *pst, SuId suId, UdxDatResumeCfmInfo *datResumeCfm));
572 typedef S16 (*UdxDatForwardCfm) ARGS((Pst *pst, SuId suId, UdxDatFwdCfmInfo *datFwdCfm));
573 typedef S16 (*UdxUlStaRep) ARGS((Pst *pst, SpId spId, UdxUlStaRepInfo *staRep));
574 typedef S16 (*UdxDlStaRep) ARGS((Pst *pst, SpId spId, UdxDlStaRepInfo *staRep));
575 typedef S16 (*UdxUlFdbkPkt) ARGS((Pst *pst, SpId spId, UdxUlFdbkPktInfo *fdbkPktInfo));
576 typedef S16 (*UdxDlFdbkPkt) ARGS((Pst *pst, SpId spId, UdxDlFdbkPktInfo *fdbkPktInfo));
577 typedef S16 (*UdxDatResumeReq) ARGS((Pst *pst, UdxDatResumeInfo *udxDatResumeInfo));
578 typedef S16 (*UdxDatForwardReq) ARGS((Pst *pst, UdxDatForwardInfo *udxDatForwardInfo));
581 typedef S16 (*UdxL2MeasReq) ARGS((Pst* pst,
582 PjL2MeasReqEvt *measReqEvt));
584 typedef S16 (*UdxL2MeasSendReq) ARGS((Pst* pst,
587 typedef S16 (*UdxL2MeasStopReq) ARGS((Pst* pst,
592 /*************************************************************************
593 * End of Pointer Interface primitives
594 ************************************************************************/
595 /* cpj_x_001.main_2 */
596 /*************************************************************************
597 * Start of Extern Interface Declarations
598 ************************************************************************/
600 * @brief Bind request primitive
602 * The function binds the PDCP service user entity (RRC) to the PDCP product.
603 * PDCP acknowledges the receipt of the bind request by sending a PjDlUdxBndCfm
606 * @param[in] pst - Pointer to the post structure.
607 * @param[in] suId - Service user ID. This is the reference number used by
608 * PDCP service user to identify its SAP. This reference number is
609 * provided by PDCP in any further primitives sent by PDCP to the service user.
610 * @param[in] spId - Service provider ID. This is the reference number used
611 * by PDCP service user to identify its SAP. This reference number is
612 * provided by PDCP in any further primitives sent by PDCP to the service user.
616 EXTERN S16 PjUlUdxBndReq ARGS((Pst *pst, SuId suId, SpId spId));
617 EXTERN S16 PjDlUdxBndReq ARGS((Pst *pst, SuId suId, SpId spId));
620 * @brief Bind confirmation primitive
622 * PDCP invokes the bind confirm primitive to acknowledge the receipt of
623 * the PjDlUdxBndReq primitive from the RRC layer. The status field indicates
624 * whether the bind request succeeded or failed. The bind request may fail due
625 * to invalid parameters in the bind request from the service user
626 * (for example, an invalid spId).
628 * @param[in] pst - Pointer to the pst structure.
629 * @param[in] suId - Service user ID. This is the reference number used
630 * by PDCP service user (RRC layer) to identify its SAP.
631 * @param[in] status - Status field indicates whether the bind request
632 * succeeded or failed.
633 * -# TRUE, for successful bind.
634 * -# FALSE, otherwise.
638 EXTERN S16 PjDlUdxBndCfm ARGS((Pst *pst, SuId suId, U8 status));
639 EXTERN S16 PjUlUdxBndCfm ARGS((Pst *pst, SuId suId, U8 status));
642 * @brief Unbind request primitive
644 * The PDCP service user (RRC) initiates this primitive for performing
645 * an unbind operation. This function brings the link between RRC and PDCP
646 * down if it is already up, and releases all the resources associated for
649 * @param[in] pst - Pointer to the post structure.
650 * @param[in] spId - Service provider ID. This is the reference number used
651 * by PDCP to identify its SAP.
652 * @param[in] reason - Unbind reason. Not used in the current implementation.
656 EXTERN S16 PjUlUdxUbndReq ARGS((Pst *pst, SpId spId, Reason reason));
657 EXTERN S16 PjDlUdxUbndReq ARGS((Pst *pst, SpId spId, Reason reason));
660 * @brief Configuration request primitive
662 * RRC uses this primitive to configure PDCP system parameters. The
663 * various parameters are configured by RRC. In one configuration request,
664 * multiple PDCP entities can be configured based on the rbId.
665 * For PDCP on target eNB, RRC can configure the handover information.
667 * @param[in] pst - Pointer to post structure.
668 * @param[in] spId - Service provider ID. This is the reference number used
669 * by PDCP to identify its SAP.
670 * @param[in] pdcpCfg - PDCP configuration structure.
674 EXTERN S16 PjUlUdxCfgReq ARGS((Pst *pst, SpId spId, UdxCfgReqInfo *cfgReq));
675 EXTERN S16 PjDlUdxCfgReq ARGS((Pst *pst, SpId spId, UdxCfgReqInfo *cfgReq));
676 EXTERN S16 PjDlUdxUlStaRep ARGS ((Pst *pst, SpId spId, UdxUlStaRepInfo *staRep));
677 EXTERN S16 PjDlUdxDlStaRep ARGS ((Pst *pst, SpId spId, UdxDlStaRepInfo *staRep));
678 EXTERN S16 PjUlUdxUlFdbkPktInfo ARGS((Pst *pst, SpId spId, UdxUlFdbkPktInfo *fdbkPktInfo));
679 EXTERN S16 PjUlUdxDlFdbkPktInfo ARGS((Pst *pst, SpId spId, UdxDlFdbkPktInfo *fdbkPktInfo));
683 * @brief Configuration confirmation primitive
685 * This primitive is invoked by PDCP to inform to PDCP User (RRC) about
686 * the PDCP configuration request primitive execution status.
688 * @param[in] pst - Pointer to the post structure.
689 * @param[in] suId - Service user ID. This is the reference number used
690 * by PDCP to identify its SAP.
691 * @param[in] pdcpCfgCfm - PDCP configuration confirm structure.
695 EXTERN S16 PjUlUdxCfgCfm ARGS((Pst *pst, SuId suId, UdxCfgCfmInfo *cfgCfm));
696 EXTERN S16 PjDlUdxCfgCfm ARGS((Pst *pst, SuId suId, UdxCfgCfmInfo *cfgCfm));
699 * @brief Reestablishment request primtive
701 * RRC uses this primitive to reestablish the PDCP entity.
702 * This primitive is initiation of reestablishment procedure.
703 * This prmitive and corresponding confirmation are followed by
704 * PjDlUdxCfgReq procedure for entire reestablishment procedure to complete.
706 * @param[in] pst - Pointer to post structure.
707 * @param[in] spId - Service provider ID. This is the reference number used by
708 * PDCP to identify its SAP.
709 * @param[in] reEstReq - PDCP reestablishment request structure.
712 EXTERN S16 PjUlUdxReEstReq ARGS((Pst *pst, SpId spId, UdxReEstReqInfo *reEstReq));
713 EXTERN S16 PjDlUdxReEstReq ARGS((Pst *pst, SpId spId, UdxReEstReqInfo *reEstReq));
716 * @brief Reestablishment confirmation primitive
718 * This primitive is invoked by PDCP to inform PDCP User (RRC) about the PDCP
719 * (SRB1) reestablishment request primitive execution status.
721 * @param[in] pst - Pointer to the post structure.
722 * @param[in] suId - Service user ID. This is the reference number used
723 * by PDCP to identify its SAP.
724 * @param[in] reEstCfm - PDCP reestablishment confirm structure.
727 EXTERN S16 PjUlUdxReEstCfm ARGS((Pst *pst, SuId suId, UdxReEstCfmInfo *reEstCfm));
728 EXTERN S16 PjDlUdxReEstCfm ARGS((Pst *pst, SuId suId, UdxReEstCfmInfo *reEstCfm));
731 * @brief Security Configuration request primitive
733 * RRC uses this primitive to configure PDCP security parameters.
734 * Integrity protection and/or Ciphering are configured by RRC based on the
735 * selSecAct flag. Integrity Protection/Ciphering are configured per UE and applicable
736 * to all PDCP entities in that UE. Both Integrity protection and ciphering are
737 * configured during reestablishment.
739 * @param[in] pst - Pointer to post structure.
740 * @param[in] spId - Service provider ID. This is the reference number used by
741 * PDCP to identify its SAP.
742 * @param[in] pdcpSecCfg - PDCP security configuration structure.
746 EXTERN S16 PjUlUdxSecCfgReq ARGS((Pst *pst, SpId spId,
747 UdxSecCfgReqInfo *secCfgReq));
748 EXTERN S16 PjDlUdxSecCfgReq ARGS((Pst *pst, SpId spId,
749 UdxSecCfgReqInfo *secCfgReq));
752 * @brief Security Configuration confirmation primitive.
754 * This primitive is invoked by PDCP to inform to PDCP User (RRC) about
755 * the PDCP secutiry configuration request primitive execution status.
757 * @param[in] pst - Pointer to the post structure.
758 * @param[in] suId - Service user ID. This is the reference number used
759 * by PDCP to identify its SAP.
760 * @param[in] pdcpSecCfgCfm - PDCP configuration confirm structure.
764 EXTERN S16 PjUlUdxSecCfgCfm ARGS( (Pst *pst, SuId suId,
765 UdxSecCfgCfmInfo *secCfgCfm));
766 EXTERN S16 PjDlUdxSecCfgCfm ARGS( (Pst *pst, SuId suId,
767 UdxSecCfgCfmInfo *secCfgCfm));
770 * @brief UE ID change request primitive
772 * This primitive is used by RRC to change the UeId for the existing UE context.
774 * @param[in] pst - Point to the post structure
775 * @param[in] spId - The ID of the service provider SAP in the PDCP layer.
776 * @param[in] transId - Transaction ID. This field uniquely identifies
777 * transaction between RRC and PDCP.
778 * @param[in] oldUeInfo - Old UE ID info for which the change request has come.
779 * @param[in] newUeInfo - New UE ID info for existing UE context.
783 EXTERN S16 PjUlUdxUeIdChgReq ARGS((Pst *pst, SpId spId, U32 transId,
784 UdxUeInfo *oldUeInfo, UdxUeInfo *newUeInfo));
785 EXTERN S16 PjDlUdxUeIdChgReq ARGS((Pst *pst, SpId spId, U32 transId,
786 UdxUeInfo *oldUeInfo, UdxUeInfo *newUeInfo));
789 * @brief UE ID change confirmation primitive
791 * This primitive is used by PDCP to confirm the UeId change requested by RRC.
792 * The different values for status are:\n
794 * RFAILED - Failure\n
796 * The different reasons for the failure are:
797 * UDX_CFG_REAS_UE_CREAT_FAIL - UE Cb update failure \n
798 * UDX_CFG_REAS_UE_UNKWN - Request received for an unknown UE ID.
800 * @param [in] pst - Point to the post structure.
801 * @param [in] suId - The ID of the service user SAP associated with PDCP
802 * @param [in] transId - Transaction ID. This field uniquely identifies
803 * transaction between RRC and PDCP.
804 * @param [in] ueInfo - UE Identity which is changed with the new ID
805 * for the same context.
806 * @param [in] CmStatus - Confirmation status with appropriate reason
810 EXTERN S16 PjUlUdxUeIdChgCfm ARGS((Pst *pst, SuId suId, U32 transId,
811 UdxUeInfo *ueInfo, CmStatus status));
812 EXTERN S16 PjDlUdxUeIdChgCfm ARGS((Pst *pst, SuId suId, U32 transId,
813 UdxUeInfo *ueInfo, CmStatus status));
816 * @brief Count request primitive
818 * RRC uses this primitive to request count value for all DRBs in a UE.
819 * PDCP sends the UL and DL count values in the confirmation of this request.
821 * @param[in] pst - Pointer to post structure.
822 * @param[in] spId - Service provider ID. This is the reference number used
823 * by PDCP to identify its SAP.
824 * @param[in] countReq - PDCP Count Request Information.
828 EXTERN S16 PjUlUdxCountReq ARGS((Pst *pst, SpId spId, UdxCountReqInfo *countReq));
829 EXTERN S16 PjDlUdxCountReq ARGS((Pst *pst, SpId spId, UdxCountReqInfo *countReq));
832 * @brief Count confirmation primitive
834 * PDCP uses this primitive to send the count values for all
835 * DRBs in a UE to RRC. PDCP sends the RB ID, direction
836 * and count value(s) ( UL, DL or both based on direction of the RB)
839 * @param[in] pst - Pointer to post structure.
840 * @param[in] suId - The ID of the service user SAP associated with PDCP.
841 * @param[in] countCfm - PDCP Count Confirmation Info.
845 EXTERN S16 PjUlUdxCountCfm ARGS((Pst *pst, SuId suId, UdxCountCfmInfo *countCfm));
846 EXTERN S16 PjDlUdxCountCfm ARGS((Pst *pst, SuId suId, UdxCountCfmInfo *countCfm));
849 * @brief SDU Status Request primitive
851 * RRC uses this primitive to request the status of the SDUs for DRBs in an UE.
852 * Its used as a reestablishment request during handover.
853 * This primitive is used to forward the handover control Information to the target
856 * @param[in] pst - Pointer to post structure.
857 * @param[in] spId - Service provider ID. This is the reference number used
858 * by PDCP to identify its SAP.
859 * @param[in] sduStaReq - PDCP SDU Status Request Information.
863 EXTERN S16 PjUlUdxSduStaReq ARGS((Pst *pst, SpId spId, UdxSduStaReqInfo *staReq));
864 EXTERN S16 PjDlUdxSduStaReq ARGS((Pst *pst, SpId spId, UdxSduStaReqInfo *staReq));
867 * @brief SDU Status confirmation primitive
869 * PDCP uses this primitive to send the SDU status for the DRBs in
870 * the requested UE. PDCP sends the RB ID, direction of the RB,status report
871 * and count(to indicate the first missing SN) in UL and count(to indicate
872 * the next SN to be assigned) in DL for each requested DRB mapped on to RLC AM.
874 * @param[in] pst - Pointer to post structure.
875 * @param[in] suId - The ID of the service user SAP associated with PDCP.
876 * @param[in] sduStaCfm - PDCP SDU Status Confirmation Info.
880 EXTERN S16 PjDlUdxSduStaCfm ARGS((Pst *pst, SuId suId, UdxSduStaCfmInfo *staCfm));
881 EXTERN S16 PjUlUdxSduStaCfm ARGS((Pst *pst, SuId suId, UdxSduStaCfmInfo *staCfm));
884 EXTERN S16 PjDlUdxDatResumeCfm ARGS((Pst *pst, SuId suId, UdxDatResumeCfmInfo
886 EXTERN S16 PjUlUdxDatResumeCfm ARGS((Pst *pst, SuId suId, UdxDatResumeCfmInfo
888 EXTERN S16 PjDlUdxDatFwdCfm ARGS ((Pst *pst, SuId suId, UdxDatFwdCfmInfo
890 EXTERN S16 PjUlUdxDatForwardCfm ARGS ((Pst *pst, SuId suId, UdxDatFwdCfmInfo
893 EXTERN S16 PjDlUdxUlFdbkPktInfo ARGS((Pst *pst, SpId spId, UdxUlFdbkPktInfo *fdbkPktInfo));
894 EXTERN S16 PjDlUdxDlFdbkPktInfo ARGS((Pst * pst, SpId spId, UdxDlFdbkPktInfo * fdbkPktInfo));
897 EXTERN S16 PjDlUdxL2MeasReq ARGS((Pst *pst,
898 PjL2MeasReqEvt *measReqEvt));
900 EXTERN S16 PjDlUdxL2MeasSendReq ARGS((Pst *pst,
903 EXTERN S16 PjDlUdxL2MeasStopReq ARGS((Pst *pst,
906 EXTERN S16 PjUlUdxL2MeasReq ARGS((Pst* pst,
907 PjL2MeasReqEvt *measReqEvt));
909 EXTERN S16 PjUlUdxL2MeasSendReq ARGS((Pst *pst, U8 status));
911 EXTERN S16 PjUlUdxL2MeasStopReq ARGS((Pst* pst, U8 measType));
913 EXTERN S16 PjDlUdxDatResumeReq ARGS((Pst *pst, UdxDatResumeInfo *udxDatResumeInfo));
914 EXTERN S16 PjUlUdxDatResumeReq ARGS((Pst *pst, UdxDatResumeInfo *udxDatResumeInfo));
915 EXTERN S16 PjDlUdxDatForwardReq ARGS((Pst *pst, UdxDatForwardInfo *udxDatForwardInfo));
916 EXTERN S16 PjUlUdxDatForwardReq ARGS((Pst *pst, UdxDatForwardInfo *udxDatForwardInfo));
917 EXTERN S16 PjUlUdxDatResumeReqFB ARGS((Pst *pst, UdxDatResumeInfo *udxDatResumeInfo));
918 EXTERN S16 PjUlUdxDatForwardReqFB ARGS((Pst *pst, UdxDatForwardInfo *udxDatForwardInfo));
919 #ifdef FLAT_BUFFER_OPT
920 EXTERN S16 PjDlUdxDatResumeReqFB ARGS((Pst *pst,UdxDatResumeInfo *datResumeInfo));
921 EXTERN S16 PjDlUdxDatForwardReqFB ARGS((Pst *pst,UdxDatForwardInfo *datFwdInfo));
923 /*************************************************************************
924 * End of Extern Interface Declarations *
925 ************************************************************************/
927 /***********************************************************************
928 * Start of pack/unpack functions *
929 * *********************************************************************/
930 #if (defined(LCUDX) || defined(LCPJULUDX))
932 EXTERN S16 cmPkPjUdxBndReq ARGS((
937 EXTERN S16 cmUnpkPjUdxBndReq ARGS((
942 EXTERN S16 cmPkPjUdxBndCfm ARGS((
947 EXTERN S16 cmUnpkPjUdxBndCfm ARGS((
952 EXTERN S16 cmPkPjUdxUbndReq ARGS((
957 EXTERN S16 cmUnpkPjUdxUbndReq ARGS((
962 EXTERN S16 cmPkPjUdxCfgReq ARGS((
965 UdxCfgReqInfo * cfgReq
967 EXTERN S16 cmUnpkPjUdxCfgReq ARGS((
972 EXTERN S16 cmPkPjUdxCfgCfm ARGS((
975 UdxCfgCfmInfo * cfgCfm
977 EXTERN S16 cmUnpkPjUdxCfgCfm ARGS((
983 EXTERN S16 cmPkPjUdxUlStaRep ARGS ((
986 UdxUlStaRepInfo *staRep
989 EXTERN S16 cmPkPjUdxDlStaRep ARGS ((
992 UdxDlStaRepInfo *staRep
995 EXTERN S16 cmUnpkPjUdxUlStaRepInfo ARGS ((
997 UdxUlStaRepInfo *param,
1001 EXTERN S16 cmPkPjUdxDlFdbkPktInfo ARGS ((
1002 UdxDlFdbkPktInfo *param,
1007 EXTERN S16 cmUnpkPjUdxUlStaRep ARGS ((
1013 EXTERN S16 cmUnpkPjUdxDlStaRep ARGS ((
1018 EXTERN S16 cmUnpkPjUdxUlFdbkPkt ARGS ((
1025 EXTERN S16 cmPkPjUdxUlStaRepInfo ARGS ((
1026 UdxUlStaRepInfo *param,
1032 EXTERN S16 cmPkPjUdxDlStaRepInfo ARGS ((
1033 UdxDlStaRepInfo *param,
1038 EXTERN S16 cmUnpkPjUdxDlStaRepInfo ARGS ((
1040 UdxDlStaRepInfo *param,
1044 EXTERN S16 cmUnpkPjUdxDlFdbPktInfo ARGS ((
1046 UdxDlFdbkPktInfo *param,
1051 EXTERN S16 cmPkPjUdxUlFdbkPkt ARGS((
1054 UdxUlFdbkPktInfo *fdbkPktInfo
1057 EXTERN S16 cmPkPjUdxDlFdbkPkt ARGS((
1060 UdxDlFdbkPktInfo *fdbkPktInfo
1063 EXTERN S16 cmPkPjUdxUlFdbkPktInfo ARGS((
1064 UdxUlFdbkPktInfo *fdbkPktInfo,
1069 EXTERN S16 cmUnpkPjUdxDlFdbkPkt ARGS((
1075 EXTERN S16 cmUnpkPjUdxDlFdbkPktInfo ARGS((
1077 UdxDlFdbkPktInfo *fdbkPktInfo,
1081 EXTERN S16 cmUnpkPjUdxUlFdbkPktInfo ARGS ((
1083 UdxUlFdbkPktInfo *param,
1087 EXTERN S16 cmPkPjUdxReEstReq ARGS((
1090 UdxReEstReqInfo * reEstReq
1092 EXTERN S16 cmUnpkPjUdxReEstReq ARGS((
1097 EXTERN S16 cmPkPjUdxReEstCfm ARGS((
1100 UdxReEstCfmInfo * reEstCfm
1102 EXTERN S16 cmUnpkPjUdxReEstCfm ARGS((
1107 EXTERN S16 cmPkPjUdxSecCfgReq ARGS((
1110 UdxSecCfgReqInfo * secCfgReq
1112 EXTERN S16 cmUnpkPjUdxSecCfgReq ARGS((
1117 EXTERN S16 cmPkPjUdxSecCfgCfm ARGS((
1120 UdxSecCfgCfmInfo * secCfgCfm
1122 EXTERN S16 cmUnpkPjUdxSecCfgCfm ARGS((
1127 EXTERN S16 cmPkPjUdxUeIdChgReq ARGS((
1131 UdxUeInfo * oldUeInfo,
1132 UdxUeInfo * newUeInfo
1134 EXTERN S16 cmUnpkPjUdxUeIdChgReq ARGS((
1139 EXTERN S16 cmPkPjUdxUeIdChgCfm ARGS((
1146 EXTERN S16 cmUnpkPjUdxUeIdChgCfm ARGS((
1151 EXTERN S16 cmPkPjUdxCountReq ARGS((
1154 UdxCountReqInfo * countReq
1156 EXTERN S16 cmUnpkPjUdxCountReq ARGS((
1161 EXTERN S16 cmPkPjUdxCountCfm ARGS((
1164 UdxCountCfmInfo * countCfm
1166 EXTERN S16 cmUnpkPjUdxCountCfm ARGS((
1171 EXTERN S16 cmPkPjUdxSduStaReq ARGS((
1174 UdxSduStaReqInfo * staReq
1176 EXTERN S16 cmUnpkPjUdxSduStaReq ARGS((
1181 EXTERN S16 cmPkPjUdxSduStaCfm ARGS((
1184 UdxSduStaCfmInfo * staCfm
1186 EXTERN S16 cmUnpkPjUdxSduStaCfm ARGS((
1191 EXTERN S16 cmPkPjUdxDatResumeCfm ARGS((
1194 UdxDatResumeCfmInfo * staCfm
1196 EXTERN S16 cmPkPjUdxDatForwardCfm ARGS((
1199 UdxDatFwdCfmInfo * datFwdCfm
1201 EXTERN S16 cmUnpkPjUdxDatResumeCfm ARGS((
1202 UdxDatResumeCfm func,
1207 EXTERN S16 cmUnpkPjUdxDatResumeReq ARGS((
1208 UdxDatResumeReq func,
1212 EXTERN S16 cmUnpkPjUdxDatForwardReq ARGS((
1213 UdxDatForwardReq func,
1217 EXTERN S16 cmUnpkPjUdxDatForwardCfm ARGS((
1218 UdxDatForwardCfm func,
1222 EXTERN S16 cmPkPjUdxRlcAm ARGS((
1226 EXTERN S16 cmUnpkPjUdxRlcAm ARGS((
1230 EXTERN S16 cmPkPjUdxRlcUm ARGS((
1234 EXTERN S16 cmUnpkPjUdxRlcUm ARGS((
1238 EXTERN S16 cmPkPjUdxRlcInfo ARGS((
1242 EXTERN S16 cmUnpkPjUdxRlcInfo ARGS((
1246 EXTERN S16 cmPkPjUdxCipherInfo ARGS((
1247 UdxCipherInfo *param,
1250 EXTERN S16 cmUnpkPjUdxCipherInfo ARGS((
1251 UdxCipherInfo *param,
1254 EXTERN S16 cmPkPjUdxIntegInfo ARGS((
1255 UdxIntegInfo *param,
1258 EXTERN S16 cmUnpkPjUdxIntegInfo ARGS((
1259 UdxIntegInfo *param,
1262 EXTERN S16 cmPkPjUdxSecCfg ARGS((
1266 EXTERN S16 cmUnpkPjUdxSecCfg ARGS((
1270 EXTERN S16 cmPkPjUdxRohcInfo ARGS((
1274 EXTERN S16 cmUnpkPjUdxRohcInfo ARGS((
1278 EXTERN S16 cmPkPjUdxHdrCompCfg ARGS((
1279 UdxHdrCompCfg *param,
1282 EXTERN S16 cmUnpkPjUdxHdrCompCfg ARGS((
1283 UdxHdrCompCfg *param,
1286 EXTERN S16 cmPkPjUdxHoInfo ARGS((
1291 EXTERN S16 cmUnpkPjUdxHoInfo ARGS((
1296 EXTERN S16 cmPkPjUdxCfgEnt ARGS((
1301 EXTERN S16 cmUnpkPjUdxCfgEnt ARGS((
1306 EXTERN S16 cmPkPjUdxAddCfgEnt ARGS((
1307 UdxAddCfgEnt *param,
1310 EXTERN S16 cmUnpkPjUdxAddCfgEnt ARGS((
1311 UdxAddCfgEnt *param,
1314 EXTERN S16 cmPkPjUdxModCfgEnt ARGS((
1316 UdxModCfgEnt *param,
1319 EXTERN S16 cmUnpkPjUdxModCfgEnt ARGS((
1321 UdxModCfgEnt *param,
1324 EXTERN S16 cmPkPjUdxCfgReqInfo ARGS((
1326 UdxCfgReqInfo *param,
1330 EXTERN S16 cmUnpkPjUdxCfgReqInfo ARGS((
1332 UdxCfgReqInfo *param,
1335 EXTERN S16 cmPkPjUdxCfmEnt ARGS((
1339 EXTERN S16 cmUnpkPjUdxCfmEnt ARGS((
1343 EXTERN S16 cmPkPjUdxCfgCfmInfo ARGS((
1344 UdxCfgCfmInfo *param,
1347 EXTERN S16 cmUnpkPjUdxCfgCfmInfo ARGS((
1348 UdxCfgCfmInfo *param,
1351 EXTERN S16 cmPkPjUdxReEstReqInfo ARGS((
1352 UdxReEstReqInfo *param,
1355 EXTERN S16 cmUnpkPjUdxReEstReqInfo ARGS((
1356 UdxReEstReqInfo *param,
1359 EXTERN S16 cmPkPjUdxReEstCfmInfo ARGS((
1360 UdxReEstCfmInfo *param,
1363 EXTERN S16 cmUnpkPjUdxReEstCfmInfo ARGS((
1364 UdxReEstCfmInfo *param,
1367 EXTERN S16 cmPkPjUdxSecCfgReqInfo ARGS((
1368 UdxSecCfgReqInfo *param,
1371 EXTERN S16 cmUnpkPjUdxSecCfgReqInfo ARGS((
1372 UdxSecCfgReqInfo *param,
1375 EXTERN S16 cmPkPjUdxSecCfgCfmInfo ARGS((
1376 UdxSecCfgCfmInfo *param,
1379 EXTERN S16 cmUnpkPjUdxSecCfgCfmInfo ARGS((
1380 UdxSecCfgCfmInfo *param,
1383 EXTERN S16 cmPkPjUdxUeInfo ARGS((
1387 EXTERN S16 cmUnpkPjUdxUeInfo ARGS((
1391 EXTERN S16 cmPkPjUdxCountReqInfo ARGS((
1392 UdxCountReqInfo *param,
1395 EXTERN S16 cmUnpkPjUdxCountReqInfo ARGS((
1396 UdxCountReqInfo *param,
1399 EXTERN S16 cmPkPjUdxCountInfo ARGS((
1400 UdxCountInfo *param,
1403 EXTERN S16 cmUnpkPjUdxCountInfo ARGS((
1404 UdxCountInfo *param,
1407 EXTERN S16 cmPkPjUdxCountCfmInfo ARGS((
1408 UdxCountCfmInfo *param,
1411 EXTERN S16 cmUnpkPjUdxCountCfmInfo ARGS((
1412 UdxCountCfmInfo *param,
1415 EXTERN S16 cmPkPjUdxSduStaReqInfo ARGS((
1416 UdxSduStaReqInfo *param,
1419 EXTERN S16 cmUnpkPjUdxSduStaReqInfo ARGS((
1420 UdxSduStaReqInfo *param,
1423 EXTERN S16 cmPkPjUdxDlSduStaInfo ARGS((
1424 UdxDlSduStaInfo *param,
1427 EXTERN S16 cmUnpkPjUdxDlSduStaInfo ARGS((
1428 UdxDlSduStaInfo *param,
1431 EXTERN S16 cmPkPjUdxSduStaInfo ARGS((
1433 UdxSduStaInfo *param,
1436 EXTERN S16 cmUnpkPjUdxSduStaInfo ARGS((
1438 UdxSduStaInfo *param,
1441 EXTERN S16 cmPkPjUdxSduStaCfmInfo ARGS((
1443 UdxSduStaCfmInfo *param,
1446 EXTERN S16 cmUnpkPjUdxSduStaCfmInfo ARGS((
1448 UdxSduStaCfmInfo *param,
1452 EXTERN S16 cmPkPjUdxDatResumeCfmInfo ARGS((
1454 UdxDatResumeCfmInfo *param,
1457 EXTERN S16 cmPkPjUdxDatForwardCfmInfo ARGS((
1459 UdxDatFwdCfmInfo *param,
1462 EXTERN S16 cmUnpkPjUdxDatResumeCfmInfo ARGS((
1464 UdxDatResumeCfmInfo *param,
1467 EXTERN S16 cmUnpkPjUdxDatForwardCfmInfo ARGS((
1469 UdxDatFwdCfmInfo *param,
1473 EXTERN S16 cmPkPjUdxDatResumeReq ARGS((
1475 UdxDatResumeInfo *udxDatResumeInfo
1477 EXTERN S16 cmPkPjUdxDatForwardReq ARGS((
1479 UdxDatForwardInfo *udxDatForwardInfo
1482 EXTERN S16 cmPkPjUdxL2MeasReq ARGS((Pst *pst, PjL2MeasReqEvt *measReqEvt));
1483 EXTERN S16 cmPkPjUdxL2MeasSendReq ARGS((Pst *pst, U8 measType));
1484 EXTERN S16 cmPkPjUdxL2MeasStopReq ARGS((Pst *pst, U8 measType));
1485 EXTERN S16 cmUnpkPjUdxL2MeasReq ARGS((UdxL2MeasReq func, Pst* pst, Buffer *mBuf));
1486 EXTERN S16 cmUnpkPjUdxL2MeasSendReq ARGS((UdxL2MeasSendReq func, Pst* pst, Buffer *mBuf));
1487 EXTERN S16 cmUnpkPjUdxL2MeasStopReq ARGS((UdxL2MeasStopReq func, Pst* pst, Buffer *mBuf));
1491 /***********************************************************************
1492 * End of pack/unpack functions *
1493 * *********************************************************************/
1497 #endif /* __cplusplus */
1498 #endif /* __UDX_X__ */
1500 /********************************************************************30**
1503 **********************************************************************/