Committing in PDCP code
[o-du/l2.git] / src / cm / cpj.x
1 /*******************************************************************************
2 ################################################################################
3 #   Copyright (c) [2017-2019] [Radisys]                                        #
4 #                                                                              #
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                                    #
8 #                                                                              #
9 #       http://www.apache.org/licenses/LICENSE-2.0                             #
10 #                                                                              #
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 *******************************************************************************/
18
19 /********************************************************************20**
20   
21         Name:    LTE PDCP Interface  
22     
23         Type:    C include file
24   
25         Desc:    This file contains the Data structures for LTE PDCP Interface
26  
27         File:    cpj.x
28   
29 *********************************************************************21*/
30 #ifndef __CPJ_X__
31 #define __CPJ_X__
32
33 #ifdef __cplusplus
34 EXTERN "C" {
35 #endif  /*for extern "C"*/
36
37 /**
38  * @file 
39  * @brief CPJ Interface file
40  */
41
42 /*************************************************************************
43  *                      START OF STRUCTURES
44  ************************************************************************/
45 /**
46  * @brief
47  * Cipher Key type information.
48  */
49 typedef U8        CpjCipherKey;
50
51 /**
52  * @brief
53  * Integrity Key type information.
54  */
55 typedef U8        CpjIntegrityKey;
56
57 /**
58   * @brief
59   * RLC Parameter Information in AM mode.
60  */
61 typedef struct cpjRlcAm
62 {
63    Bool           statusRepReqd; /*!< Status report required */
64    U8             pdcpSNSize; /*!< Length of PDCP sequence number */
65 }CpjRlcAm;
66
67 /**
68  * @brief
69  * RLC Parameter Information in UM mode.
70  */
71 typedef struct cpjRlcUm
72 {
73    U8             pdcpSNSize; /*!< Length of PDCP sequence number */
74 }CpjRlcUm;
75
76 /**
77  * @brief
78  * Mapped RLC Entity Information in RLC for the PDCP Entity
79  */
80 typedef struct cpjRlcInfo
81 {
82    U8             dir;       /*!< UPLINK/DOWNLINK/BOTH */
83    U8             mode;      /*!< RLC Mode */ 
84    union
85    {
86       CpjRlcAm    rlcAm;     /*!< RLC in AM mode */
87       CpjRlcUm    rlcUm;     /*!< RLC in UM mode */
88    }m;
89 }CpjRlcInfo;
90
91
92 /**
93  * @brief
94  * Ciphering Information to be configured per UE in PDCP.
95  */
96 typedef struct cpjCipherInfo         
97 {
98    CpjCipherKey   ctrlplnKey[CPJ_CIPHER_KEY_LEN];   /*!< Control plane
99                                                         ciphering key */
100    CpjCipherKey   usrplnKey[CPJ_CIPHER_KEY_LEN];    /*!< User plane
101                                                         ciphering key */
102    U8             algoType;                         /*!< Algorithm type.
103                                                     Allowed values are:
104                                                     -# CPJ_SEC_ALG_NULL 
105                                                     -# CPJ_SEC_ALG_SNOW3G
106                                                     -# CPJ_SEC_ALG_AES
107                                                     */
108 }CpjCipherInfo;
109
110 /**
111  * @brief
112  * Integrity protection paramater information. 
113 */
114 typedef struct cpjIntegInfo
115 {
116    U8                algoType;                  /*!< Algorithm type.
117                                                    Allowed values are:
118                                                    -# CPJ_SEC_ALG_AES
119                                                    -# CPJ_SEC_ALG_SNOW3G
120                                                    */
121    CpjIntegrityKey   intKey[CPJ_INTG_KEY_LEN];  /*!< Integrity key */
122 } CpjIntegInfo;
123
124 /**
125  * @brief
126  * PDCP Security configuration parameter.
127  */
128 typedef struct cpjSecCfg 
129 {
130    Bool           selSecAct;        /*!< Selective security activation flag.
131
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.
137    */
138    U8             isHo;
139    CpjIntegInfo   integInfo;        /*!< Integrity configuration */
140    CpjCipherInfo  cipherInfo;       /*!< Ciphering configuration */
141 } CpjSecCfg;
142
143 /**
144  * @brief
145  * ROHC Compression protocol information structure. 
146  */
147 typedef struct cpjRohcInfo
148 {
149    U16            maxCid;                          /*!< Maximum CID */
150    Bool           profLst[CPJ_MAX_ROHC_PROF_LIST]; /*!< ROHC profile
151                                                      information */
152 }CpjRohcInfo;
153
154 /**
155  * @brief
156  * ROHC Configuration information for PDCP entity. 
157  */
158 typedef struct cpjHdrCompCfg
159 {
160    Bool           hdrCompUsed;   /*!< Header Compression Used/Not */
161    CpjRohcInfo    rohcInfo;      /*!< ROHC configuration information */
162 }CpjHdrCompCfg;
163
164 /**
165  * @brief
166  * Handover Information for RB.
167  */
168 typedef struct cpjHoInfo
169 {
170    U8             isHoPres;   /*!< Last 2bits (from LSB)is used to convey handover information is present or
171                                 not. @n Allowed values are:
172                                     -# CPJ_HO_NOT_PRSNT  00
173                                     -# CPJ_HO_UL         01
174                                     -# CPJ_HO_DL         10
175                                     */
176    U8            snLen;          /*!< PDCP SN len  12/15 bit */
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 
181                                       as status report */
182 } CpjHoInfo;
183
184 /**
185  * @brief
186  * Configuraiton Structure to add an RB.
187  */
188 typedef struct cpjAddCfgEnt
189 {        
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 */
195 #ifdef LTE_L2_MEAS
196    U8             qci;        /*!< qCI value Associated with that RB */
197 #endif /* LTE_L2_MEAS */
198
199    CpjRlcInfo     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
203                                 the same. */
204    U16          reOrdrTmrVal; /*!< t-Reorder Timer value in milli sec */
205    CpjHdrCompCfg  hdrCompCfg; /*!< PDCP compression information */
206 }CpjAddCfgEnt;         
207          
208 /**
209  * @brief
210  * Configuraiton Structure to modify an RB.
211  */
212 typedef struct cpjModCfgEnt
213 {
214       
215    U8             bitFlag;     /*!< List of Modified Elements 
216                                    Each bit respresents one element  */
217
218    Bool           discReqd;   /*!< Discard required/not for PDUs
219                                 with Integrity Verification failure.
220                                 bitFlag=0x01 */
221    Bool           cfmReqd;    /*!< Confirm required/not for SDUs 
222                                 received by the peer PDCP entity.
223                                 bitFlag=0x02 */
224    CpjHdrCompCfg  hdrCompCfg; /*!< PDCP compression information */
225    CpjHoInfo      hoInfo;     /*!< Handover Information */
226    U16          reOrdrTmrVal; /*!< t-Reorder Timer value */
227 }CpjModCfgEnt;
228
229
230 /**
231  * @brief
232  * Configuration structure for PDCP entity. 
233  */
234 typedef struct cpjCfgEnt
235 {
236    U8             rbId;       /*!< PDCP ID. */
237    U8             cfgType;    /*!< Configuration request type -
238                                 -# CPJ_CFG_ADD,
239                                 -# CPJ_CFG_MODIFY,
240                                 -# CPJ_CFG_DELETE,
241                                 -# CPJ_REESTABLISH,
242                                 -# CPJ_CFG_DELETE_UE */
243    U8             rbType;     /*!< RB type.  
244                                 -# CM_LTE_SRB
245                                 -# CM_LTE_DRB */
246
247    union{
248         CpjAddCfgEnt     addCfg; /*!< Configuration parameters for
249                                     cfgType CPJ_CFG_ADD */
250         CpjModCfgEnt     modCfg; /*!< Configuration parameters for
251                                     cfgType CPJ_CFG_MODIFY */
252    }m;
253 }CpjCfgEnt;
254
255
256
257 /**
258  * @brief
259  * PDCP Configuration structure. Parameters are filled by RRC 
260    layer while configuring the PDCP layer.  
261  */
262 typedef struct cpjCfgReqInfo
263 {
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.*/
269    U8             isHo;
270 #ifdef TENB_MULT_CELL_SUPPRT
271    SpId           rlcUlSapId;
272    SpId           rlcDlSapId;
273 #endif
274    CpjCfgEnt      cfgEnt[CPJ_MAX_CFG];  /*!< Config paramater for
275                                           PDCP entity. */
276 }CpjCfgReqInfo;
277
278 /**
279  * @brief
280  * PDCP Confirm parameter structure for PDCP entity. 
281  */
282 typedef struct cpjCfmEnt
283 {
284    U8             rbId;       /*!< RB ID */
285    U8             rbType;     /*!< RB Type */
286    Status         status;     /*!< ROK or RFAILED */
287    Reason         reason;     /*!< Reason for failure */
288 }CpjCfmEnt;
289
290 /**
291  * @brief
292  * PDCP Configuration Confirm structure. 
293  */
294 typedef struct cpjCfgCfmInfo
295 {
296    CmLteRnti      ueId;                   /*!< UE ID */
297    CmLteCellId    cellId;                 /*!< Cell ID */
298    U32            transId;                /*!< Transcation ID */
299    U8             numEnt;                 /*!< Number of entities */
300    CpjCfmEnt      cfmEnt[CPJ_MAX_CFM];    /*!< Confirm parameter for
301                                                PDCP entity */
302 }CpjCfgCfmInfo;
303
304 /**
305  * @brief
306  * Re-estabishment Request structure for SRB1 of an UE.
307  */
308 typedef struct cpjReEstReqInfo
309 {
310    CmLtePdcpId    pdcpId;                          /*!< PDCP ID */
311    U32            transId;                         /*!< Transcation ID */
312    U8             intKey[CPJ_INTG_KEY_LEN];         /*!< Integrity key */
313    CpjCipherKey   ctrlplnKey[CPJ_CIPHER_KEY_LEN];  /*!< Control plane
314                                                         ciphering key */
315    CpjCipherKey   usrplnKey[CPJ_CIPHER_KEY_LEN];   /*!< User plane
316                                                         ciphering key */
317 }CpjReEstReqInfo;
318
319 /**
320  * @brief
321  * Data Forwarding Request structure
322  */
323 typedef struct cpjDataFwdReqInfo
324 {
325    CmLteRnti      ueId;       /*!< UE ID */
326    CmLteCellId    cellId;     /*!< Cell ID */
327    U32            transId;                         /*!< Transcation ID */
328    Bool           isUlDatFwdReq;  /*!< UL Data Fwd reqd or not */
329 }CpjDataFwdReqInfo;
330
331
332 /**
333  * @brief
334  * Data Resume Request structure
335  */
336 typedef struct cpjDatResumeReqInfo
337 {
338    CmLteRnti      ueId;       /*!< UE ID */
339    CmLteCellId    cellId;     /*!< Cell ID */
340    U32            transId;                         /*!< Transcation ID */
341 }CpjDatResumeReqInfo;
342 /**
343  * @brief
344  * Re-establishment Confirmation structure for an UE.
345  */
346 typedef struct cpjReEstCfmInfo
347 {
348    CmLteRnti      ueId;             /*!< UE ID */
349    CmLteCellId    cellId;           /*!< Cell ID */
350    U32            transId;          /*!< Transcation ID */
351    Status       status;           /*!< Status of reestablishment.
352                                      Allowed values are:
353                                      -# LCM_PRIM_OK
354                                      -# LCM_PRIM_NOK
355                                      */
356 }CpjReEstCfmInfo;
357
358 /**
359  * @brief
360  * PDCP Security Configuration structure. Parameters are filled by RRC
361  * while configuring the security parameters.
362  */
363 typedef struct cpjSecCfgReqInfo
364 {
365    CmLteRnti      ueId;       /*!< UE ID */
366    CmLteCellId    cellId;     /*!< Cell ID */
367    U32            transId;    /*!< Transcation ID */
368    CpjSecCfg      secCfg;     /*!< Configuration paramater for PDCP entity */
369 }CpjSecCfgReqInfo;
370
371 /**
372  * @brief
373  * PDCP Security Configuration confirm structure. 
374  */
375 typedef struct cpjSecCfgCfmInfo
376 {
377    CmLteRnti      ueId;       /*!< UE ID */
378    CmLteCellId    cellId;     /*!< Cell ID */
379    U32            transId;    /*!< Transcation ID */
380    Status         status;     /*!< ROK or RFAILED */
381    Reason         reason;     /*!< Reason for failure */
382 }CpjSecCfgCfmInfo;
383
384 /**
385  *  @brief
386  *  UE ID Information
387  */
388 typedef struct cpjUeInfo
389 {
390    CmLteCellId    cellId;     /*!< Cell ID */
391    CmLteRnti      ueId;       /*!< UE ID */
392 }CpjUeInfo;
393
394 /**
395  *  @brief
396  *  PDCP Count Request Information from RRC.
397  */
398 typedef struct cpjCountReqInfo
399 {
400    CmLteRnti      ueId;       /*!< UE ID */
401    CmLteCellId    cellId;     /*!< Cell ID */
402    U32            transId;    /*!< Transaction ID */
403 } CpjCountReqInfo;
404
405 /**
406  *  @brief
407  *  PDCP Count Information for a DRB.
408  */
409 typedef struct cpjCountInfo
410 {
411    U8             rbId;       /*!< RB ID */
412    U8             dir;        /*!< Direction of the RB */
413    U32            ulCount;    /*!< UL Count value */
414    U32            dlCount;    /*!< DL Count value */
415 } CpjCountInfo;
416 /**
417  *  @brief
418  *  PDCP Count Request Confirmation to RRC.
419  */
420 typedef struct cpjCountCfmInfo
421 {
422    CmLteRnti      ueId;                   /*!< UE ID */
423    CmLteCellId    cellId;                 /*!< Cell ID */
424    U32            transId;                /*!< Transaction ID */
425    U8             numRb;                  /*!< Number of DRBs */
426    CpjCountInfo   countInfo[CPJ_MAX_DRB]; /*!< CountInfo of DRBs */
427    Status         status;                 /*!< ROK or RFAILED */
428    Reason         reason;                 /*!< Reason for failure */
429 } CpjCountCfmInfo;
430
431 /**
432  *  @brief
433  *  PDCP SDU Status Request Information from RRC - Used for reestablishment
434  *  during handover.
435  */
436 typedef struct cpjSduStaReqInfo
437 {
438    CmLteRnti      ueId;       /*!< UE ID */
439    CmLteCellId    cellId;     /*!< Cell ID */
440    U32            transId;    /*!< Transaction ID */
441 } CpjSduStaReqInfo;
442
443 /**
444  *  @brief
445  *  PDCP UL SDU Status Information for a DRB mapped to RLC AM.
446  */
447 typedef struct cpjUlSduStaInfo
448 {
449    U16             numBits;    /*!< Number of bits in UL bitmap */
450    U8             *ulBitMap;  /*!< Status Report of PDUs recieved during
451                                 re-establishment. @n
452                                 The MSB of the first octet of the type "Bitmap"
453                                 indicates whether or not the PDCP SDU with the
454                                 SN (FMS + 1) modulo 4096 is received. @n
455                                 The LSB of the first octet of the type "Bitmap"
456                                 indicates whether or not the PDCP SDU with the
457                                 SN (FMS + 8) modulo 4096 has been received
458                                 correctly.
459                                 */
460    U32            count;      /*!< UL Count value with First Missing
461                                 Sequence Number */
462 } CpjUlSduStaInfo;
463
464 /**
465  *  @brief
466  *  PDCP DL SDU Status Information for a DRB mapped to RLC AM.
467  */
468 typedef struct cpjDlSduStaInfo
469 {
470    U32            count;      /*!< Count with the next SN to be assigned
471                                 for a SDU */
472 } CpjDlSduStaInfo;
473
474 /**
475  *  @brief
476  *  PDCP SDU Status Information for a DRB mapped to RLC AM.
477  */
478 typedef struct cpjSduStaInfo
479 {
480    U8                   rbId;         /*!< RB ID */
481    U8                   dir;          /*!< Direction of the RB */
482    U8                   snLen;        /*!< PDCP-SN length 12/15 bits */
483    CpjUlSduStaInfo      ulSduStaInfo; /*!< SDU Status Info for UL */
484    CpjDlSduStaInfo      dlSduStaInfo; /*!< SDU Status Info for DL */ 
485 } CpjSduStaInfo;
486
487 /**
488  *  @brief
489  *  PDCP SDU Status Request Confirmation for an UE.
490  */
491 typedef struct cpjSduStaCfmInfo
492 {
493    CmLteRnti      ueId;                   /*!< UE ID */
494    CmLteCellId    cellId;                 /*!< Cell ID */
495    U32            transId;                /*!< Transaction ID */
496    U8             numRb;                  /*!< Number of RBs */
497    CpjSduStaInfo  sduStaInfo[CPJ_MAX_DRB]; /*!< SDU Status Info of DRBs mapped
498                                              to RLC AM */
499    Status         status;                 /*!< ROK or RFAILED */
500    Reason         reason;                 /*!< Reason for Failure */
501 } CpjSduStaCfmInfo;
502
503 /**
504  *  @brief
505  *  PDCP Data Resume Request Confirmation for an UE.
506  */
507 typedef struct cpjDatResumeCfmInfo
508 {
509    CmLteRnti      ueId;                   /*!< UE ID */
510    CmLteCellId    cellId;                 /*!< Cell ID */
511    U32            transId;                /*!< Transaction ID */
512    Status         status;                 /*!< ROK or RFAILED */
513    Reason         reason;                 /*!< Reason for Failure */
514 } CpjDatResumeCfmInfo;
515 /********************************************************************************************************************************/
516                               /*START OF KEY DERIVATION FUNTION (KDF) REQUEST STRUCTURES*/
517 /********************************************************************************************************************************/
518
519 /*AS key generation input information structure*/
520 typedef struct cpjAsKeyInfo{
521            U8 intgAlgoType;            /*!SNOW3g or AES, used in key 
522                                           derivation as well */
523            U8 ciphAlgoType;            /*!SNOW3g or AES, used in key 
524                                           derivation as well */
525            U8 secKey[CPJ_SEC_KEY_LEN]; /*!< eNodeB key received in initial 
526                                             context setup */
527 }CpjAsKeyInfo;
528
529 /*Horizontal keNB derivation input information structure*/
530 typedef struct cpjKenbStarInfo{
531            U16 dlCarrFreq;             /*!< DL UARFCN*/ 
532            U16 physCellId;             /*!< Physical cell ID*/
533            U8 secKey[CPJ_SEC_KEY_LEN]; /*!< Current eNodeB key at App used to 
534                                             derive keNB*. Horizontal KD */
535 }CpjKenbStarInfo;
536
537 /*Vertical keNB derivation input information structure*/
538 typedef struct cpjNhKeyInfo{
539            U16 dlCarrFreq;             /*!< DL UARFCN*/ 
540            U16 physCellId;             /*!< Physical cell ID*/
541            U8 secKey[CPJ_SEC_KEY_LEN]; /*!< NH key provided by MME used to 
542                                             derive keNB*. Vertical KD */
543 }CpjNhKeyInfo;
544
545 typedef struct cpjKdfReqInfo {
546    U8    keyDerType;                   /*!< Keyderivation type: for AS security
547                                             keys/keNB* from keNB/keNB* 
548                                             from NH key */
549    union
550    {
551       CpjAsKeyInfo      kEnbInf;       /*!< eNodeB key for for deriving AS 
552                                             security keys */
553       CpjKenbStarInfo   kEnbStarInf;   /*!< eNodeB key for for deriving eNodeB*
554                                             Key (Horizontal key derivation ref:
555                                             ts 33.401) */
556       CpjNhKeyInfo      nhKeyInf;      /*!< NH key for for deriving eNodeB* Key
557                                             (Verticall key derivation ref: 
558                                             ts 33.401) */
559    } u;
560 } CpjKdfReqInfo;
561
562 /** 
563   @brief Transaction ID between CPJ and User. */
564 typedef struct cpjCfgTransId {
565    U8 trans[CPJ_CFG_TRANSID_SIZE]; /*!< User transaction ID */
566 } CpjCfgTransId;
567
568
569 /********************************************************************************************************************************/
570                               /*END OF REQUEST STRUCTURES*/
571 /********************************************************************************************************************************/
572
573
574 /********************************************************************************************************************************/
575                               /*START OF KEY DERIVATION FUNTION (KDF) CONFIRM STRUCTURES*/
576 /********************************************************************************************************************************/
577
578 /*AS key generation output information structure*/
579 typedef struct cpjAskeyCfmInfo{
580           U8 intKey[CPJ_SEC_KEY_LEN];    /*!< eNodeB key received in initial
581                                               context setup */
582           U8 upCiphKey[CPJ_SEC_KEY_LEN]; /*!< eNodeB key received in initial
583                                               context setup */
584           U8 cpCiphKey[CPJ_SEC_KEY_LEN]; /*!< eNodeB key received in initial
585                                               context setup */
586 }CpjAskeyCfmInfo;
587
588 /*Horizontal keNB derivation output information structure*/
589 typedef struct cpjKenbStarCfmInfo{
590            U8 secKey[CPJ_SEC_KEY_LEN];   /*!< Current eNodeB key at App used
591                                               to derive keNB*. Horizontal KD */
592 }CpjKenbStarCfmInfo;
593
594 /*Vertical keNB derivation output information structure*/
595 typedef struct cpjNhKeyCfmInfo{
596            U8 secKey[CPJ_SEC_KEY_LEN];   /*!< NH key provided by MME used to 
597                                               derive keNB*. Vertical KD */
598 }CpjNhKeyCfmInfo;
599
600 typedef struct cpjKdfCfmInfo {
601    U8    keyDerType;                     /*!< Keyderivation type: for AS 
602                                               security keys/keNB* from 
603                                               keNB/keNB* from NH key */
604    union
605    {
606       CpjAskeyCfmInfo      kEnbInf;      /*!< AS security keys */
607       CpjKenbStarCfmInfo   kEnbStarInf;  /*!< eNodeB* Key (Horizontal key 
608                                               derivation ref: ts 33.401) */
609       CpjNhKeyCfmInfo      nhKeyInf;     /*!< eNodeB* Key (Verticall key 
610                                               derivation ref: ts 33.401) */
611    } u;
612 } CpjKdfCfmInfo;
613
614 /*************************************************************************
615  *                      END OF STRUCTURES
616  ************************************************************************/
617
618 /*************************************************************************
619  *                   Start of Pointer Interface primitives
620  ************************************************************************/
621 typedef S16 (*CpjBndReq)      ARGS((Pst *pst, SuId suId, SpId spId));
622 typedef S16 (*CpjBndCfm)      ARGS((Pst *pst, SuId suId, U8 status));
623 typedef S16 (*CpjUbndReq)     ARGS((Pst *pst, SpId spId, Reason reason));
624 typedef S16 (*CpjCfgReq)      ARGS((Pst *pst, SpId spId, CpjCfgReqInfo *cfgReq));
625 typedef S16 (*CpjCfgCfm)      ARGS((Pst *pst, SuId suId, CpjCfgCfmInfo *cfgCfm));
626 typedef S16 (*CpjReEstReq)    ARGS((Pst *pst, SpId spId, CpjReEstReqInfo *reEstReq));
627 typedef S16 (*CpjReEstCfm)    ARGS((Pst *pst, SuId suId, CpjReEstCfmInfo *reEstCfm));
628 typedef S16 (*CpjSecCfgReq)   ARGS((Pst *pst, SpId spId, CpjSecCfgReqInfo *secCfgReq));
629 typedef S16 (*CpjSecCfgCfm)   ARGS((Pst *pst, SuId suId, CpjSecCfgCfmInfo *secCfgCfm));
630 typedef S16 (*CpjUeIdChgReq)  ARGS((Pst *pst, SpId spId, U32 transId, 
631                                     CpjUeInfo *oldUeInfo,
632                                     CpjUeInfo *newUeInfo));
633 typedef S16 (*CpjUeIdChgCfm)  ARGS((Pst *pst, SuId suId, U32 transId, 
634                                     CpjUeInfo  *ueInfo, CmStatus status));
635 typedef S16 (*CpjCountReq)   ARGS((Pst *pst, SpId spId, CpjCountReqInfo *countReq));
636 typedef S16 (*CpjCountCfm)   ARGS((Pst *pst, SuId suId, CpjCountCfmInfo *countCfm));
637 typedef S16 (*CpjSduStaReq)  ARGS((Pst *pst, SpId spId, CpjSduStaReqInfo *staReq));
638 typedef S16 (*CpjSduStaCfm)  ARGS((Pst *pst, SuId suId, CpjSduStaCfmInfo *staCfm));
639 typedef S16 (*CpjDataFwdReq)  ARGS((Pst *pst, SpId spId, CpjDataFwdReqInfo *dataFwdReq));
640 typedef S16 (*CpjDatResumeReq)  ARGS((Pst *pst, SpId spId, CpjDatResumeReqInfo
641          *DatResumeReq));
642 typedef S16 (*CpjDatResumeCfm)  ARGS((Pst *pst, SuId suId, CpjDatResumeCfmInfo *dataResCfm));
643 typedef S16 (*CpjKdfReq) ARGS((
644    Pst*                 pst,
645    SpId                 spId,
646    CpjCfgTransId        transId,
647    CpjKdfReqInfo*       cfgReqInfo));
648
649 /* Configuration Confirm from PHY to User. */
650 typedef S16 (*CpjKdfCfm) ARGS((
651    Pst*                 pst,
652    SuId                 suId,
653    CpjCfgTransId        transId,
654    CpjKdfCfmInfo*       kdfCfmInfo,
655    U8                   status));
656
657
658 /*************************************************************************
659  *                   End of Pointer Interface primitives
660  ************************************************************************/
661 /* cpj_x_001.main_2 */
662 /*************************************************************************
663  *                   Start of Extern Interface Declarations
664  ************************************************************************/
665 /**
666  * @brief Bind request primitive
667  * @details
668  * The function binds the PDCP service user entity (RRC) to the PDCP product.
669  * PDCP acknowledges the receipt of the bind request by sending a PjUiCpjBndCfm
670  * primitive.
671  *
672  * @param[in] pst     - Pointer to the post structure.
673  * @param[in] suId    - Service user ID. This is the reference number used by
674  * PDCP service user to identify its SAP. This reference number is 
675  * provided by PDCP in any further primitives sent by PDCP to the service user.
676  * @param[in] spId    - Service provider ID. This is the reference number used
677  * by PDCP service user to identify its SAP. This reference number is
678  * provided by PDCP in any further primitives sent by PDCP to the service user.
679  *
680  * @return ROK
681  */
682 EXTERN S16 PjUiCpjBndReq ARGS((Pst *pst, SuId suId, SpId spId));
683
684 /**
685  * @brief Bind confirmation primitive
686  * @details
687  * PDCP invokes the bind confirm primitive to acknowledge the receipt of
688  * the PjUiCpjBndReq primitive from the RRC layer. The status field indicates
689  * whether the bind request succeeded or failed. The bind request may fail due
690  * to invalid parameters in the bind request from the service user
691  * (for example, an invalid spId).
692  *
693  * @param[in] pst    - Pointer to the pst structure.
694  * @param[in] suId   - Service user ID. This is the reference number used
695  * by PDCP service user (RRC layer) to identify its SAP.
696  * @param[in] status - Status field indicates whether the bind request
697  * succeeded or failed. 
698  *  -# TRUE, for successful bind.
699  *  -# FALSE, otherwise.
700  *
701  *  @return ROK.
702  */
703 EXTERN S16 PjUiCpjBndCfm ARGS((Pst *pst, SuId suId, U8 status));
704
705 /**
706  * @brief Unbind request primitive
707  * @details
708  * The PDCP service user (RRC) initiates this primitive for performing
709  * an unbind operation. This function brings the link between RRC and PDCP 
710  * down if it is already up, and releases all the resources associated for
711  * this SAP at PDCP.
712  *
713  * @param[in] pst    - Pointer to the post structure.
714  * @param[in] spId   - Service provider ID. This is the reference number used
715  * by PDCP to identify its SAP.
716  * @param[in] reason - Unbind reason. Not used in the current implementation. 
717  *
718  * @return ROK
719  */
720 EXTERN S16 PjUiCpjUbndReq ARGS((Pst *pst, SpId spId, Reason reason));
721
722 /**
723  * @brief Configuration request primitive
724  * @details
725  * RRC uses this primitive to configure PDCP system parameters. The
726  * various parameters are configured by RRC. In one configuration request,
727  * multiple PDCP entities can be configured based on the rbId.
728  * For PDCP on target eNB, RRC can configure the handover information.
729  *
730  * @param[in] pst    - Pointer to post structure.
731  * @param[in] spId   - Service provider ID. This is the reference number used
732  * by PDCP to identify its SAP.
733  * @param[in] pdcpCfg - PDCP configuration structure. 
734  *
735  * @return ROK
736  */
737 EXTERN S16 PjUiCpjCfgReq ARGS((Pst *pst, SpId spId, CpjCfgReqInfo *cfgReq));
738
739 /**
740  * @brief Configuration confirmation primitive
741  * @details
742  * This primitive is invoked by PDCP to inform to PDCP User (RRC) about
743  * the PDCP configuration request primitive execution status.
744  *
745  * @param[in] pst    - Pointer to the post structure.
746  * @param[in] suId   - Service user ID. This is the reference number used
747  * by PDCP to identify its SAP.
748  * @param[in] pdcpCfgCfm - PDCP configuration confirm structure. 
749  *
750  * @return ROK
751  */
752 EXTERN S16 PjUiCpjCfgCfm ARGS((Pst *pst, SuId suId, CpjCfgCfmInfo *cfgCfm));
753
754 /**
755  * @brief Reestablishment request primtive
756  * @details
757  * RRC uses this primitive to reestablish the PDCP entity.
758  * This primitive is initiation of reestablishment procedure.
759  * This prmitive and corresponding confirmation are followed by
760  * PjUiCpjCfgReq procedure for entire reestablishment procedure to complete.
761  *
762  * @param[in] pst    - Pointer to post structure.
763  * @param[in] spId   - Service provider ID. This is the reference number used by
764  * PDCP to identify its SAP.
765  * @param[in] reEstReq - PDCP reestablishment request structure. 
766  *
767  */
768 EXTERN S16 PjUiCpjReEstReq ARGS((Pst *pst, SpId spId, CpjReEstReqInfo *reEstReq));
769
770 /**
771  * @brief Reestablishment confirmation primitive
772  * @details
773  * This primitive is invoked by PDCP to inform PDCP User (RRC) about the PDCP
774  * (SRB1) reestablishment request primitive execution status.
775  *
776  * @param[in] pst    - Pointer to the post structure.
777  * @param[in] suId   - Service user ID. This is the reference number used
778  * by PDCP to identify its SAP.
779  * @param[in] reEstCfm - PDCP reestablishment confirm structure. 
780  *
781  */
782 EXTERN S16 PjUiCpjReEstCfm ARGS((Pst *pst, SuId suId, CpjReEstCfmInfo *reEstCfm));
783
784 /**
785  * @brief Security Configuration request primitive
786  * @details
787  * RRC uses this primitive to configure PDCP security parameters.
788  * Integrity protection and/or Ciphering are configured by RRC based on the
789  * selSecAct flag. Integrity Protection/Ciphering are configured per UE and applicable
790  * to all PDCP entities in that UE. Both Integrity protection and ciphering are
791  * configured during reestablishment. 
792  *
793  * @param[in] pst    - Pointer to post structure.
794  * @param[in] spId   - Service provider ID. This is the reference number used by
795  * PDCP to identify its SAP.
796  * @param[in] pdcpSecCfg - PDCP security configuration structure. 
797  *
798  * @return ROK
799  */
800 EXTERN S16 PjUiCpjSecCfgReq ARGS((Pst *pst, SpId spId,
801          CpjSecCfgReqInfo *secCfgReq));
802
803 /**
804  * @brief Security Configuration confirmation primitive.
805  * @details
806  * This primitive is invoked by PDCP to inform to PDCP User (RRC) about
807  * the PDCP secutiry configuration request primitive execution status.
808  *
809  * @param[in] pst    - Pointer to the post structure.
810  * @param[in] suId   - Service user ID. This is the reference number used
811  * by PDCP to identify its SAP.
812  * @param[in] pdcpSecCfgCfm - PDCP configuration confirm structure. 
813  *
814  * @return ROK
815  */
816 EXTERN S16 PjUiCpjSecCfgCfm ARGS( (Pst *pst, SuId suId,
817          CpjSecCfgCfmInfo *secCfgCfm));
818
819 /**
820  * @brief UE ID change request primitive
821  * @details
822  * This primitive is used by RRC to change the UeId for the existing UE context.
823  *
824  * @param[in] pst       - Point to the post structure
825  * @param[in] spId      - The ID of the service provider SAP in the PDCP layer.
826  * @param[in] transId   - Transaction ID. This field uniquely identifies
827  * transaction between RRC and PDCP.
828  * @param[in] oldUeInfo - Old UE ID info for which the change request has come.
829  * @param[in] newUeInfo - New UE ID info for existing UE context. 
830  *
831  * @return ROK
832  */
833 EXTERN S16 PjUiCpjUeIdChgReq ARGS((Pst *pst, SpId spId, U32 transId,
834                                   CpjUeInfo *oldUeInfo, CpjUeInfo  *newUeInfo));
835
836 /**
837  * @brief UE ID change confirmation primitive
838  * @details
839  * This primitive is used by PDCP to confirm the UeId change requested by RRC.
840  * The different values for status are:\n
841  * ROK       -  Success\n
842  * RFAILED   -  Failure\n
843  *
844  * The different reasons for the failure are:
845  * CPJ_CFG_REAS_UE_CREAT_FAIL -  UE Cb update failure \n
846  * CPJ_CFG_REAS_UE_UNKWN      -  Request received for an unknown UE ID. 
847  *
848  * @param [in] pst       - Point to the post structure.
849  * @param [in] suId      - The ID of the service user SAP associated with PDCP
850  * @param [in] transId   - Transaction ID. This field uniquely identifies
851  *                         transaction between RRC and PDCP.
852  * @param [in] ueInfo    - UE Identity which is changed with the new ID
853  *                         for the same context.
854  * @param [in] CmStatus  - Confirmation status with appropriate reason
855  *                         information.
856  * @return ROK
857  */
858 EXTERN S16 PjUiCpjUeIdChgCfm  ARGS((Pst *pst, SuId suId, U32 transId,
859                                   CpjUeInfo *ueInfo, CmStatus status));
860
861 /**
862  * @brief Count request primitive
863  * @details
864  * RRC uses this primitive to request count value for all DRBs in a UE.
865  * PDCP sends the UL and DL count values in the confirmation of this request.
866  *
867  * @param[in] pst    - Pointer to post structure.
868  * @param[in] spId   - Service provider ID. This is the reference number used
869  * by PDCP to identify its SAP.
870  * @param[in] countReq - PDCP Count Request Information. 
871  *
872  * @return ROK
873  */
874 EXTERN S16 PjUiCpjCountReq ARGS((Pst *pst, SpId spId, CpjCountReqInfo *countReq));
875
876 /**
877  * @brief Count confirmation primitive
878  * @details
879  * PDCP uses this primitive to send the count values for all
880  * DRBs in a UE to RRC. PDCP sends the RB ID, direction 
881  * and count value(s) ( UL, DL or both based on direction of the RB)
882  * for each DRB. 
883  *
884  * @param[in] pst       - Pointer to post structure.
885  * @param[in] suId      - The ID of the service user SAP associated with PDCP.
886  * @param[in] countCfm  - PDCP Count Confirmation Info. 
887  *
888  * @return ROK
889 */
890 EXTERN S16 PjUiCpjCountCfm ARGS((Pst *pst, SuId suId, CpjCountCfmInfo *countCfm));
891
892 /**
893  * @brief SDU Status Request primitive
894  * @details
895  * RRC uses this primitive to request the status of the SDUs for DRBs in an UE.
896  * Its used as a reestablishment request during handover.
897  * This primitive is used to forward the handover control Information to the target
898  * eNodeB.
899  *
900  * @param[in] pst    - Pointer to post structure.
901  * @param[in] spId   - Service provider ID. This is the reference number used
902  * by PDCP to identify its SAP.
903  * @param[in] sduStaReq - PDCP SDU Status Request Information. 
904  *
905  * @return ROK
906  */
907 EXTERN S16 PjUiCpjSduStaReq ARGS((Pst *pst, SpId spId, CpjSduStaReqInfo *staReq));
908
909 /**
910  * @brief SDU Status confirmation primitive
911  * @details
912  * PDCP uses this primitive to send the SDU status for the DRBs in 
913  * the requested UE. PDCP sends the RB ID, direction of the RB,status report 
914  * and count(to indicate the first missing SN) in UL and count(to indicate 
915  * the next SN to be assigned) in DL for each requested DRB mapped on to RLC AM.
916  *
917  * @param[in] pst       - Pointer to post structure.
918  * @param[in] suId      - The ID of the service user SAP associated with PDCP.
919  * @param[in] sduStaCfm - PDCP SDU Status Confirmation Info. 
920  *
921  * @return ROK
922 */
923 EXTERN S16 PjUiCpjSduStaCfm ARGS((Pst *pst, SuId suId, CpjSduStaCfmInfo *staCfm));
924
925 #ifdef FLAT_BUFFER_OPT
926 EXTERN S16 PjUiCpjDatResumeReqFB ARGS((Pst *pst, SpId spId, CpjDatResumeReqInfo
927          *dataResReq));
928
929 EXTERN S16 PjUiCpjDatForwardReqFB ARGS(( Pst *pst, SpId spId,
930          CpjDataFwdReqInfo *dataFwdReq));
931 #endif
932
933
934 EXTERN S16 PjUiCpjDatResumeReq ARGS((Pst *pst, SpId spId, CpjDatResumeReqInfo
935          *dataResReq));
936
937 EXTERN S16 PjUiCpjDatForwardReq ARGS(( Pst *pst, SpId spId,
938          CpjDataFwdReqInfo *dataFwdReq));
939
940 EXTERN S16 PjUiCpjDatResumeCfm ARGS(( Pst *pst, SuId suId, CpjDatResumeCfmInfo
941          *datResCfm));
942 /**
943 * @brief This API is used to receive a Bind confirm from PDCP to Application.
944 *
945 * @details
946 *
947 *  @param[in]   pst - Post structure
948 *  @param[in]   suId - Service User Id
949 *  @param[in]   transId - Transaction Id
950 *  @param[in]   kdfCfmInf - Generated keys
951 *  @param[in]   status - status of KDF request
952 *  @return   S16
953 *      -# ROK
954 **/
955 EXTERN S16 PjUiCpjKdfCfm ARGS ((
956 Pst* pst,
957 SuId suId,
958 CpjCfgTransId transId,
959 CpjKdfCfmInfo *kdfCfmInf,
960 U8 status
961 ));
962
963 EXTERN S16 PjUiCpjKdfReq ARGS((
964 Pst*           pst, 
965 SpId           spId, 
966 CpjCfgTransId  transId,
967 CpjKdfReqInfo *kdfReqInfo
968 ));
969
970 EXTERN S16 cmPkCpjKdfReq ARGS((
971    Pst*           pst,
972    SpId           spId,
973    CpjCfgTransId  transId,
974    CpjKdfReqInfo *kdfReqInfo
975 ));
976 /* Configuration Request from User to PHY for 
977  * cell or dedicated configuration.
978 */
979 EXTERN S16 cmUnpkCpjKdfReq ARGS((
980    CpjKdfReq            func,
981    Pst*                 pst,
982    Buffer               *mBuf
983 ));
984 /* Configuration Confirm from PHY to User. */
985 EXTERN S16 cmPkCpjKdfCfm ARGS((
986    Pst*                 pst,
987    SuId                 suId,
988    CpjCfgTransId        transId,
989    CpjKdfCfmInfo        *kdfCfmInfo,
990    U8                   status
991 ));
992 /* Configuration Confirm from PHY to User. */
993 EXTERN S16 cmUnpkCpjKdfCfm ARGS((
994    CpjKdfCfm            func,
995    Pst*                 pst,
996    Buffer               *mBuf
997 ));
998
999
1000 /************ Dummy Extern interface primitives ***********************/
1001 #ifdef DM
1002 EXTERN S16 DmUiCpjBndReq ARGS((Pst *, SuId, SpId));
1003
1004 EXTERN S16 DmUiCpjUbndReq ARGS((Pst *, SpId, Reason));
1005
1006 EXTERN S16 DmUiCpjBndCfm ARGS((Pst *, SuId, U8));
1007
1008 EXTERN S16 DmUiCpjCfgReq ARGS( (Pst *, SpId , CpjCfgReqInfo *));
1009
1010 EXTERN S16 DmUiCpjCfgCfm ARGS( (Pst *, SuId , CpjCfgCfmInfo *));
1011
1012 EXTERN S16 DmUiCpjSecCfgReq ARGS((Pst *, SpId ,CpjSecCfgReqInfo *));
1013
1014 EXTERN S16 DmUiCpjSecCfgCfm ARGS((Pst *, SuId ,CpjSecCfgCfmInfo *));
1015
1016 EXTERN S16 DmUiCpjUeIdChgReq ARGS( (Pst *, SpId , U32, CpjUeInfo *, CpjUeInfo *));
1017
1018 EXTERN S16 DmUiCpjUeIdChgCfm ARGS( (Pst *, SuId , U32, CpjUeInfo *, CmStatus));
1019
1020 EXTERN S16 DmUiCpjReEstReq ARGS((Pst *, SpId , CpjReEstReqInfo *));
1021
1022 EXTERN S16 DmUiCpjReEstCfm ARGS (( Pst *, SuId , CpjReEstCfmInfo *));
1023
1024 EXTERN S16 DmUiCpjCountReq ARGS((Pst *, SpId ,CpjCountReqInfo *));
1025
1026 EXTERN S16 DmUiCpjCountCfm ARGS((Pst *, SuId ,CpjCountCfmInfo *));
1027
1028 EXTERN S16 DmUiCpjSduStaReq ARGS((Pst *, SpId ,CpjSduStaReqInfo *));
1029
1030 EXTERN S16 DmUiCpjStartDataFwdReq ARGS((Pst *, SpId ,CpjDataFwdReqInfo *));
1031
1032 EXTERN S16 DmUiCpjDatResumeReq ARGS((Pst *, SpId ,CpjDatResumeReqInfo *));
1033
1034 EXTERN S16 DmUiCpjSduStaCfm ARGS((Pst *, SuId ,CpjSduStaCfmInfo *));
1035
1036 EXTERN S16 DmUiCpjDatForwardReq ARGS((Pst *,SpId ,CpjDataFwdReqInfo *));
1037
1038
1039 #endif
1040
1041 /************ LTE RRC Extern interface primitives ***********************/
1042 #ifdef NH    /* LTE-RRC */
1043 EXTERN S16 NhLiCpjBndReq ARGS((Pst *, SuId, SpId));
1044
1045 EXTERN S16 NhLiCpjUbndReq ARGS((Pst *, SpId, Reason));
1046
1047 EXTERN S16 NhLiCpjBndCfm ARGS((Pst *, SuId, U8));
1048
1049 EXTERN S16 NhLiCpjCfgReq ARGS( (Pst *, SpId , CpjCfgReqInfo *));
1050
1051 EXTERN S16 NhLiCpjCfgCfm ARGS( (Pst *, SuId , CpjCfgCfmInfo *));
1052
1053 EXTERN S16 NhLiCpjSecCfgReq ARGS((Pst *, SpId , CpjSecCfgReqInfo *));
1054
1055 EXTERN S16 NhLiCpjSecCfgCfm ARGS((Pst *, SuId , CpjSecCfgCfmInfo *));
1056
1057 EXTERN S16 NhLiCpjUeIdChgReq ARGS( (Pst *, SpId , U32 , CpjUeInfo *, CpjUeInfo *));
1058
1059 EXTERN S16 NhLiCpjUeIdChgCfm ARGS( (Pst *, SuId , U32, CpjUeInfo *, CmStatus));
1060
1061 EXTERN S16 NhLiCpjReEstReq ARGS((Pst *pst, SpId spId, CpjReEstReqInfo *reEstReq));
1062
1063 EXTERN S16 NhLiCpjReEstCfm ARGS (( Pst *pst, SuId suId, CpjReEstCfmInfo *cfmInfo));
1064
1065 EXTERN S16 NhLiCpjCountReq ARGS((Pst *, SpId , CpjCountReqInfo *));
1066
1067 EXTERN S16 NhLiCpjCountCfm ARGS((Pst *, SuId , CpjCountCfmInfo *));
1068
1069 EXTERN S16 NhLiCpjSduStaReq ARGS((Pst *, SpId , CpjSduStaReqInfo *));
1070
1071 EXTERN S16 NhLiCpjSduStaCfm ARGS((Pst *, SuId , CpjSduStaCfmInfo *));
1072
1073 EXTERN S16 NhLiCpjDatResumeCfm ARGS((Pst *, SuId , CpjDatResumeCfmInfo *));
1074
1075 EXTERN S16 NhLiCpjStartDataFwdReq ARGS((Pst *post,  SpId spId, CpjDataFwdReqInfo
1076          *pdcpDataFwdReq )); 
1077 EXTERN S16 NhLiCpjDatResumeReq ARGS((Pst *post, SpId spId, CpjDatResumeReqInfo
1078          *pdcpDatResumeReq ));
1079 #endif
1080 /*************************************************************************
1081  *                   End of Extern Interface Declarations                *
1082  ************************************************************************/
1083
1084 /***********************************************************************
1085  *                    Start of pack/unpack functions                   *
1086  * *********************************************************************/
1087 #ifdef LCCPJ
1088
1089 PUBLIC S16 cmPkCpjBndReq ARGS((
1090 Pst * pst,
1091 SuId suId,
1092 SpId spId
1093 ));
1094 PUBLIC S16 cmUnpkCpjBndReq ARGS((
1095 CpjBndReq func,
1096 Pst *pst,
1097 Buffer *mBuf
1098 ));
1099 PUBLIC S16 cmPkCpjBndCfm ARGS((
1100 Pst * pst,
1101 SuId suId,
1102 U8 status
1103 ));
1104 PUBLIC S16 cmUnpkCpjBndCfm ARGS((
1105 CpjBndCfm func,
1106 Pst *pst,
1107 Buffer *mBuf
1108 ));
1109 PUBLIC S16 cmPkCpjUbndReq ARGS((
1110 Pst * pst,
1111 SpId spId,
1112 Reason reason
1113 ));
1114 PUBLIC S16 cmUnpkCpjUbndReq ARGS((
1115 CpjUbndReq func,
1116 Pst *pst,
1117 Buffer *mBuf
1118 ));
1119 PUBLIC S16 cmPkCpjCfgReq ARGS((
1120 Pst * pst,
1121 SpId spId,
1122 CpjCfgReqInfo * cfgReq
1123 ));
1124 PUBLIC S16 cmUnpkCpjCfgReq ARGS((
1125 CpjCfgReq func,
1126 Pst *pst,
1127 Buffer *mBuf
1128 ));
1129 PUBLIC S16 cmPkCpjCfgCfm ARGS((
1130 Pst * pst,
1131 SuId suId,
1132 CpjCfgCfmInfo * cfgCfm
1133 ));
1134 PUBLIC S16 cmUnpkCpjCfgCfm ARGS((
1135 CpjCfgCfm func,
1136 Pst *pst,
1137 Buffer *mBuf
1138 ));
1139 PUBLIC S16 cmPkCpjReEstReq ARGS((
1140 Pst * pst,
1141 SpId spId,
1142 CpjReEstReqInfo * reEstReq
1143 ));
1144 PUBLIC S16 cmUnpkCpjReEstReq ARGS((
1145 CpjReEstReq func,
1146 Pst *pst,
1147 Buffer *mBuf
1148 ));
1149 PUBLIC S16 cmPkCpjReEstCfm ARGS((
1150 Pst * pst,
1151 SuId suId,
1152 CpjReEstCfmInfo * reEstCfm
1153 ));
1154 PUBLIC S16 cmUnpkCpjReEstCfm ARGS((
1155 CpjReEstCfm func,
1156 Pst *pst,
1157 Buffer *mBuf
1158 ));
1159 PUBLIC S16 cmPkCpjSecCfgReq ARGS((
1160 Pst * pst,
1161 SpId spId,
1162 CpjSecCfgReqInfo * secCfgReq
1163 ));
1164 PUBLIC S16 cmUnpkCpjSecCfgReq ARGS((
1165 CpjSecCfgReq func,
1166 Pst *pst,
1167 Buffer *mBuf
1168 ));
1169 PUBLIC S16 cmPkCpjSecCfgCfm ARGS((
1170 Pst * pst,
1171 SuId suId,
1172 CpjSecCfgCfmInfo * secCfgCfm
1173 ));
1174 PUBLIC S16 cmUnpkCpjSecCfgCfm ARGS((
1175 CpjSecCfgCfm func,
1176 Pst *pst,
1177 Buffer *mBuf
1178 ));
1179 PUBLIC S16 cmPkCpjUeIdChgReq ARGS((
1180 Pst * pst,
1181 SpId spId,
1182 U32 transId,
1183 CpjUeInfo * oldUeInfo,
1184 CpjUeInfo * newUeInfo
1185 ));
1186 PUBLIC S16 cmUnpkCpjUeIdChgReq ARGS((
1187 CpjUeIdChgReq func,
1188 Pst *pst,
1189 Buffer *mBuf
1190 ));
1191 PUBLIC S16 cmPkCpjUeIdChgCfm ARGS((
1192 Pst * pst,
1193 SuId suId,
1194 U32 transId,
1195 CpjUeInfo  * ueInfo,
1196 CmStatus status
1197 ));
1198 PUBLIC S16 cmUnpkCpjUeIdChgCfm ARGS((
1199 CpjUeIdChgCfm func,
1200 Pst *pst,
1201 Buffer *mBuf
1202 ));
1203 PUBLIC S16 cmPkCpjCountReq ARGS((
1204 Pst * pst,
1205 SpId spId,
1206 CpjCountReqInfo * countReq
1207 ));
1208 PUBLIC S16 cmUnpkCpjCountReq ARGS((
1209 CpjCountReq func,
1210 Pst *pst,
1211 Buffer *mBuf
1212 ));
1213 PUBLIC S16 cmPkCpjCountCfm ARGS((
1214 Pst * pst,
1215 SuId suId,
1216 CpjCountCfmInfo * countCfm
1217 ));
1218 PUBLIC S16 cmUnpkCpjCountCfm ARGS((
1219 CpjCountCfm func,
1220 Pst *pst,
1221 Buffer *mBuf
1222 ));
1223 PUBLIC S16 cmPkCpjSduStaReq ARGS((
1224 Pst * pst,
1225 SpId spId,
1226 CpjSduStaReqInfo * staReq
1227 ));
1228 PUBLIC S16 cmUnpkCpjSduStaReq ARGS((
1229 CpjSduStaReq func,
1230 Pst *pst,
1231 Buffer *mBuf
1232 ));
1233 PUBLIC S16 cmPkCpjStartDataFwdReq ARGS((
1234 Pst * pst,
1235 SpId spId,
1236 CpjDataFwdReqInfo * dataFwdReq
1237 ));
1238 PUBLIC S16 cmUnpkCpjStartDataFwdReq ARGS((
1239 CpjDataFwdReq func,
1240 Pst *pst,
1241 Buffer *mBuf
1242 ));
1243
1244 PUBLIC S16 cmPkCpjDatResumeReq ARGS((
1245 Pst * pst,
1246 SpId spId,
1247 CpjDatResumeReqInfo * dataFwdReq
1248 ));
1249
1250 PUBLIC S16 cmUnpkCpjDatResumeReq ARGS((
1251 CpjDatResumeReq func,
1252 Pst *pst,
1253 Buffer *mBuf
1254 ));
1255
1256 PUBLIC S16 cmPkCpjSduStaCfm ARGS((
1257 Pst * pst,
1258 SuId suId,
1259 CpjSduStaCfmInfo * staCfm
1260 ));
1261 PUBLIC S16 cmUnpkCpjSduStaCfm ARGS((
1262 CpjSduStaCfm func,
1263 Pst *pst,
1264 Buffer *mBuf
1265 ));
1266 PUBLIC S16 cmPkCpjRlcAm ARGS((
1267 CpjRlcAm *param,
1268 Buffer *mBuf
1269 ));
1270 PUBLIC S16 cmUnpkCpjRlcAm ARGS((
1271 CpjRlcAm *param,
1272 Buffer *mBuf
1273 ));
1274 PUBLIC S16 cmPkCpjRlcUm ARGS((
1275 CpjRlcUm *param,
1276 Buffer *mBuf
1277 ));
1278 PUBLIC S16 cmUnpkCpjRlcUm ARGS((
1279 CpjRlcUm *param,
1280 Buffer *mBuf
1281 ));
1282 PUBLIC S16 cmPkCpjRlcInfo ARGS((
1283 CpjRlcInfo *param,
1284 Buffer *mBuf
1285 ));
1286 PUBLIC S16 cmUnpkCpjRlcInfo ARGS((
1287 CpjRlcInfo *param,
1288 Buffer *mBuf
1289 ));
1290 PUBLIC S16 cmPkCpjCipherInfo ARGS((
1291 CpjCipherInfo *param,
1292 Buffer *mBuf
1293 ));
1294 PUBLIC S16 cmUnpkCpjCipherInfo ARGS((
1295 CpjCipherInfo *param,
1296 Buffer *mBuf
1297 ));
1298 PUBLIC S16 cmPkCpjIntegInfo ARGS((
1299 CpjIntegInfo *param,
1300 Buffer *mBuf
1301 ));
1302 PUBLIC S16 cmUnpkCpjIntegInfo ARGS((
1303 CpjIntegInfo *param,
1304 Buffer *mBuf
1305 ));
1306 PUBLIC S16 cmPkCpjSecCfg ARGS((
1307 CpjSecCfg *param,
1308 Buffer *mBuf
1309 ));
1310 PUBLIC S16 cmUnpkCpjSecCfg ARGS((
1311 CpjSecCfg *param,
1312 Buffer *mBuf
1313 ));
1314 PUBLIC S16 cmPkCpjRohcInfo ARGS((
1315 CpjRohcInfo *param,
1316 Buffer *mBuf
1317 ));
1318 PUBLIC S16 cmUnpkCpjRohcInfo ARGS((
1319 CpjRohcInfo *param,
1320 Buffer *mBuf
1321 ));
1322 PUBLIC S16 cmPkCpjHdrCompCfg ARGS((
1323 CpjHdrCompCfg *param,
1324 Buffer *mBuf
1325 ));
1326 PUBLIC S16 cmUnpkCpjHdrCompCfg ARGS((
1327 CpjHdrCompCfg *param,
1328 Buffer *mBuf
1329 ));
1330 PUBLIC S16 cmPkCpjHoInfo ARGS((
1331 Pst *pst,
1332 CpjHoInfo *param,
1333 Buffer *mBuf
1334 ));
1335 PUBLIC S16 cmUnpkCpjHoInfo ARGS((
1336 Pst *pst,
1337 CpjHoInfo *param,
1338 Buffer *mBuf
1339 ));
1340 PUBLIC S16 cmPkCpjCfgEnt ARGS((
1341 Pst *pst,
1342 CpjCfgEnt *param,
1343 Buffer *mBuf
1344 ));
1345 PUBLIC S16 cmUnpkCpjCfgEnt ARGS((
1346 Pst *pst,
1347 CpjCfgEnt *param,
1348 Buffer *mBuf
1349 ));
1350 PUBLIC S16 cmPkCpjAddCfgEnt ARGS((
1351 CpjAddCfgEnt *param,
1352 Buffer *mBuf
1353 ));
1354 PUBLIC S16 cmUnpkCpjAddCfgEnt ARGS((
1355 CpjAddCfgEnt *param,
1356 Buffer *mBuf
1357 ));
1358 PUBLIC S16 cmPkCpjModCfgEnt ARGS((
1359 Pst *pst,
1360 CpjModCfgEnt *param,
1361 Buffer *mBuf
1362 ));
1363 PUBLIC S16 cmUnpkCpjModCfgEnt ARGS((
1364 Pst *pst,
1365 CpjModCfgEnt *param,
1366 Buffer *mBuf
1367 ));
1368 PUBLIC S16 cmPkCpjCfgReqInfo ARGS((
1369 Pst *pst,
1370 CpjCfgReqInfo *param,
1371 Buffer *mBuf
1372 ));
1373 PUBLIC S16 cmUnpkCpjCfgReqInfo ARGS((
1374 Pst *pst,
1375 CpjCfgReqInfo *param,
1376 Buffer *mBuf
1377 ));
1378 PUBLIC S16 cmPkCpjCfmEnt ARGS((
1379 CpjCfmEnt *param,
1380 Buffer *mBuf
1381 ));
1382 PUBLIC S16 cmUnpkCpjCfmEnt ARGS((
1383 CpjCfmEnt *param,
1384 Buffer *mBuf
1385 ));
1386 PUBLIC S16 cmPkCpjCfgCfmInfo ARGS((
1387 CpjCfgCfmInfo *param,
1388 Buffer *mBuf
1389 ));
1390 PUBLIC S16 cmUnpkCpjCfgCfmInfo ARGS((
1391 CpjCfgCfmInfo *param,
1392 Buffer *mBuf
1393 ));
1394 PUBLIC S16 cmPkCpjReEstReqInfo ARGS((
1395 CpjReEstReqInfo *param,
1396 Buffer *mBuf
1397 ));
1398 PUBLIC S16 cmUnpkCpjReEstReqInfo ARGS((
1399 CpjReEstReqInfo *param,
1400 Buffer *mBuf
1401 ));
1402 PUBLIC S16 cmPkCpjReEstCfmInfo ARGS((
1403 CpjReEstCfmInfo *param,
1404 Buffer *mBuf
1405 ));
1406 PUBLIC S16 cmUnpkCpjReEstCfmInfo ARGS((
1407 CpjReEstCfmInfo *param,
1408 Buffer *mBuf
1409 ));
1410 PUBLIC S16 cmPkCpjSecCfgReqInfo ARGS((
1411 CpjSecCfgReqInfo *param,
1412 Buffer *mBuf
1413 ));
1414 PUBLIC S16 cmUnpkCpjSecCfgReqInfo ARGS((
1415 CpjSecCfgReqInfo *param,
1416 Buffer *mBuf
1417 ));
1418 PUBLIC S16 cmPkCpjSecCfgCfmInfo ARGS((
1419 CpjSecCfgCfmInfo *param,
1420 Buffer *mBuf
1421 ));
1422 PUBLIC S16 cmUnpkCpjSecCfgCfmInfo ARGS((
1423 CpjSecCfgCfmInfo *param,
1424 Buffer *mBuf
1425 ));
1426 PUBLIC S16 cmPkCpjUeInfo ARGS((
1427 CpjUeInfo *param,
1428 Buffer *mBuf
1429 ));
1430 PUBLIC S16 cmUnpkCpjUeInfo ARGS((
1431 CpjUeInfo *param,
1432 Buffer *mBuf
1433 ));
1434 PUBLIC S16 cmPkCpjCountReqInfo ARGS((
1435 CpjCountReqInfo *param,
1436 Buffer *mBuf
1437 ));
1438 PUBLIC S16 cmUnpkCpjCountReqInfo ARGS((
1439 CpjCountReqInfo *param,
1440 Buffer *mBuf
1441 ));
1442 PUBLIC S16 cmPkCpjCountInfo ARGS((
1443 CpjCountInfo *param,
1444 Buffer *mBuf
1445 ));
1446 PUBLIC S16 cmUnpkCpjCountInfo ARGS((
1447 CpjCountInfo *param,
1448 Buffer *mBuf
1449 ));
1450 PUBLIC S16 cmPkCpjCountCfmInfo ARGS((
1451 CpjCountCfmInfo *param,
1452 Buffer *mBuf
1453 ));
1454 PUBLIC S16 cmUnpkCpjCountCfmInfo ARGS((
1455 CpjCountCfmInfo *param,
1456 Buffer *mBuf
1457 ));
1458 PUBLIC S16 cmPkCpjSduStaReqInfo ARGS((
1459 CpjSduStaReqInfo *param,
1460 Buffer *mBuf
1461 ));
1462 PUBLIC S16 cmUnpkCpjSduStaReqInfo ARGS((
1463 CpjSduStaReqInfo *param,
1464 Buffer *mBuf
1465 ));
1466 PUBLIC S16 cmPkCpjStartDataFwdReqInfo ARGS((
1467 CpjDataFwdReqInfo *param,
1468 Buffer *mBuf
1469 ));
1470 PUBLIC S16 cmUnpkCpjStartDataFwdReqInfo ARGS((
1471 CpjDataFwdReqInfo *param,
1472 Buffer *mBuf
1473 ));
1474
1475 PUBLIC S16 cmPkCpjDatResumeReqInfo ARGS((
1476 CpjDatResumeReqInfo *param,
1477 Buffer *mBuf
1478 ));
1479 PUBLIC S16 cmUnpkCpjDatResumeReqInfo ARGS((
1480 CpjDatResumeReqInfo *param,
1481 Buffer *mBuf
1482 ));
1483 PUBLIC S16 cmPkCpjUlSduStaInfo ARGS((
1484 Pst *pst,
1485 CpjUlSduStaInfo *param,
1486 Buffer *mBuf
1487 ));
1488 PUBLIC S16 cmUnpkCpjUlSduStaInfo ARGS((
1489 Pst *pst,
1490 CpjUlSduStaInfo *param,
1491 Buffer *mBuf
1492 ));
1493 PUBLIC S16 cmPkCpjDlSduStaInfo ARGS((
1494 CpjDlSduStaInfo *param,
1495 Buffer *mBuf
1496 ));
1497 PUBLIC S16 cmUnpkCpjDlSduStaInfo ARGS((
1498 CpjDlSduStaInfo *param,
1499 Buffer *mBuf
1500 ));
1501 PUBLIC S16 cmPkCpjSduStaInfo ARGS((
1502 Pst *pst,
1503 CpjSduStaInfo *param,
1504 Buffer *mBuf
1505 ));
1506 PUBLIC S16 cmUnpkCpjSduStaInfo ARGS((
1507 Pst *pst,
1508 CpjSduStaInfo *param,
1509 Buffer *mBuf
1510 ));
1511 PUBLIC S16 cmPkCpjSduStaCfmInfo ARGS((
1512 Pst *pst,
1513 CpjSduStaCfmInfo *param,
1514 Buffer *mBuf
1515 ));
1516 PUBLIC S16 cmUnpkCpjSduStaCfmInfo ARGS((
1517 Pst *pst,
1518 CpjSduStaCfmInfo *param,
1519 Buffer *mBuf
1520 ));
1521 PUBLIC S16 cmUnpkCpjDatResumeCfmInfo ARGS((
1522 Pst *pst,
1523 CpjDatResumeCfmInfo *param,
1524 Buffer *mBuf
1525 ));
1526
1527 PUBLIC S16 cmPkCpjDataResCfmInfo ARGS((
1528 Pst *pst,
1529 CpjDatResumeCfmInfo *param,
1530 Buffer *mBuf
1531 ));
1532
1533 PUBLIC S16 cmUnpkCpjDatResumeCfm ARGS((
1534 CpjDatResumeCfm func,
1535 Pst *pst,
1536 Buffer *mBuf
1537 ));
1538
1539 PUBLIC S16 cmPkCpjDatResumeCfm ARGS((
1540 Pst * pst,
1541 SuId suId,
1542 CpjDatResumeCfmInfo * dataResCfm
1543 ));
1544
1545 PUBLIC S16 cmUnpkCpjDatResumeCfm ARGS((
1546 CpjDatResumeCfm func,
1547 Pst *pst,
1548 Buffer *mBuf
1549 ));
1550
1551 PUBLIC S16 cmUnpkCpjNhKeyCfmInfo ARGS((
1552 CpjNhKeyCfmInfo *param,
1553 Buffer *mBuf
1554 ));
1555
1556 PUBLIC S16 cmUnpkCpjKenbStarCfmInfo ARGS((
1557 CpjKenbStarCfmInfo *param,
1558 Buffer *mBuf
1559 ));
1560
1561 PUBLIC S16 cmUnpkCpjAskeyCfmInfo ARGS((
1562 CpjAskeyCfmInfo *param,
1563 Buffer *mBuf
1564 ));
1565
1566 PUBLIC S16 cmUnpkCpjKdfCfmInfo ARGS((
1567 CpjKdfCfmInfo *param,
1568 Buffer *mBuf
1569 ));
1570
1571 PUBLIC S16 cmUnpkCpjCfgTransId ARGS((
1572 CpjCfgTransId *param,
1573 Buffer *mBuf
1574 ));
1575
1576 PUBLIC S16 cmPkCpjNhKeyInfo ARGS((
1577 CpjNhKeyInfo *param,
1578 Buffer *mBuf
1579 ));
1580
1581 PUBLIC S16 cmPkCpjKenbStarInfo ARGS((
1582 CpjKenbStarInfo *param,
1583 Buffer *mBuf
1584 ));
1585
1586 PUBLIC S16 cmPkCpjAskeyInfo ARGS((
1587 CpjAsKeyInfo *param,
1588 Buffer *mBuf
1589 ));
1590
1591 PUBLIC S16 cmPkCpjKdfReqInfo ARGS((
1592 CpjKdfReqInfo *param,
1593 Buffer *mBuf
1594 ));
1595
1596 PUBLIC S16 cmPkCpjCfgTransId ARGS((
1597 CpjCfgTransId *param,
1598 Buffer *mBuf
1599 ));
1600
1601 PUBLIC S16 cmUnpkCpjNhKeyInfo ARGS((
1602 CpjNhKeyInfo *param,
1603 Buffer *mBuf
1604 ));
1605
1606 PUBLIC S16 cmUnpkCpjKenbStarInfo ARGS((
1607 CpjKenbStarInfo *param,
1608 Buffer *mBuf
1609 ));
1610
1611 PUBLIC S16 cmUnpkCpjAskeyInfo ARGS((
1612 CpjAsKeyInfo *param,
1613 Buffer *mBuf
1614 ));
1615
1616 PUBLIC S16 cmUnpkCpjKdfReqInfo ARGS((
1617 CpjKdfReqInfo *param,
1618 Buffer *mBuf
1619 ));
1620
1621 PUBLIC S16 cmPkCpjNhKeyCfmInfo ARGS((
1622 CpjNhKeyCfmInfo *param,
1623 Buffer *mBuf
1624 ));
1625
1626 PUBLIC S16 cmPkCpjKenbStarCfmInfo ARGS((
1627 CpjKenbStarCfmInfo *param,
1628 Buffer *mBuf
1629 ));
1630
1631 PUBLIC S16 cmPkCpjAskeyCfmInfo ARGS((
1632 CpjAskeyCfmInfo *param,
1633 Buffer *mBuf
1634 ));
1635
1636 PUBLIC S16 cmPkCpjKdfCfmInfo ARGS((
1637 CpjKdfCfmInfo *param,
1638 Buffer *mBuf
1639 ));
1640
1641 #endif
1642
1643 /***********************************************************************
1644  *                    End of pack/unpack functions                     *
1645  * *********************************************************************/
1646
1647 #ifdef __cplusplus
1648 }
1649 #endif /* __cplusplus */
1650 #endif /* __CPJ_X__ */
1651
1652 /********************************************************************30**
1653   
1654          End of file
1655 **********************************************************************/