Committing in PDCP code
[o-du/l2.git] / src / 5gnrpdcp / pj_ul.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 file 
22     
23         Type:    C include file
24   
25         Desc:    This file contains all the data structures and 
26                  prototypes for LTE PDCP.
27  
28         File:    pj_ul.x
29   
30 *********************************************************************21*/
31 /** @file pj_ul.x
32 @brief PDCP Product Structures, prototypes
33 */
34
35 #ifndef __PJ_UL_X__
36 #define __PJ_UL_X__
37
38 #ifdef __cplusplus
39 extern "C" {
40 #endif /* __cplusplus */
41
42 /** @struct PjRbCb 
43 RLC RB control block */
44 typedef struct pjUlUeCb PjUlUeCb;
45 typedef struct pjUlRbCb PjUlRbCb;               /* PDCP RB control block */
46
47 /** @addtogroup dldata */
48 /*@{*/
49
50 /**
51  *  @brief
52  *  PDCP SDU Status Information for a DRB mapped to RLC AM.
53  */
54
55 typedef struct pjUlHoCfmInfo
56 {
57    U8          rbId;                     /*!< RB ID */
58    Bool        pres;                     /*!< Is handover info present for this RB */
59    U8          dir;                      /*!< Direction of the RB */
60    U8          res1;
61    U8          numBits;                  /*!< Number of bits in UL bitmap */
62    U8          res2[3];
63    U8          *ulBitMap;                /*!< Status Report bitmap of PDUs */
64    U32         count;                    /*!< UL Count value with FMS */
65 }PjUlHoCfmInfo;
66
67 /**
68  *  @brief
69  *  Handover information maintainned during processing of SduStaReq
70  */
71 typedef struct pjUlHoInfo
72 {
73    U32             transId;                   /*!< Transaction ID */
74    UdxSduStaCfmInfo *staCfm;                  /*!< SduStaCfm received from DL */
75    PjUlHoCfmInfo   *hoCfmInfo;                /*!< SDU Status Confirm */
76 }PjUlHoInfo;
77
78 /** @defgroup uldata UL Module Info 
79 */
80 /** @addtogroup uldata */
81 /*@{*/
82
83 /** @struct PjRxEnt
84 PDCP Rx Entry - PDU received from RLC */
85 typedef struct pjRxEnt
86 {
87    CmLList     lstEnt;                      /*!< List entry for PDU */
88    CmLList     datPktEnt;                   /*!< List entry for PDU */
89    U8          state;                       /*!< PDU state */
90    Bool        discFlag;                    /*!< Whether entry can be discarded 
91                                                  after processing */
92    Bool        dupEntry;                    /*!< Duplicate Entry, These entries
93                                                  are not inserted */
94    Bool        res;                         /*!< Reserved */
95    U32         count;                       /*!< COUNT associated with this PDU */
96    Buffer      *mBuf;                       /*!< Buffer to store the pdu during processing */
97 #ifdef SS_RBUF 
98    PjUlRbCb    *rbCb;
99 #endif
100    Bool        isOutSeq;                    /*!< flag to tell whether this is a in-sequence packet or not */
101 }PjRxEnt;
102
103 /** @struct PjUlCb 
104 PDCP uplink control block */
105 typedef struct pjUlCb
106 {
107
108    U32         rxNext;                       /*next expected pdcp pdu counter */
109    U32         rxDeliv;                      /*next delivered pdu count to the upper layer*/
110    U32         rxReord;                      /* Holds the count value of Data PDU which triggered t-Reordering */
111    Bool        outOfOrderDelivery;           /*Out of Delivery is configured or not*/
112    Bool        staRepReqd;                  /*!< Flag to indicate if status report 
113                                                  is required */
114    Bool        discReqd;                    /*!< Flag to indicate if the PDU can
115                                                  be discarded during Integrity
116                                                  failure */
117    Bool        transCmp;                    /*!< Whether transmission of PDUs from RLC
118                                                  during reestablishment is complete */ 
119    U8          state;                       /*!< RB state for the UL entity */
120    PjBuf       recBuf;                      /*!< Reception buffer */
121    U32         nxtSubCnt;                   /*!< Count of next SDU to be submitted 
122                                                  to the upper layer. Used in SRB, DRBUM */
123    U32         nxtSubDeCmp;                 /*!< Count of next PDU to be submitted 
124                                                  to the decompression unit */
125    
126    U32         obdPdu;                      /*!< Count of the Pdu sent for offboarding  */
127    U32         firstReEstCnt;               /*!< Count of the first PDU received after
128                                                  reestablishment was triggered */ 
129 #if (defined(PJ_SEC_ASYNC) || defined (PJ_CMP_ASYNC))
130    CmTimer     obdTmr;                      /*!< Offboard timer */
131    U32         obdCnt;                    /*!< OBD Count */
132 #endif /* (defined(PJ_SEC_ASYNC) || defined (PJ_CMP_ASYNC)) */
133    CmLListCp   ulPktLst;                   /*!< Queues the message during
134                                              Re-establishment/Handover */ 
135    U32         fmsCount;                    /*!< To store the Count value (FMS + HFN) at the time Out-Of-Sequence */
136    /* Added for UL UU  LOSS */
137 #ifdef LTE_L2_MEAS
138    PjSn        nxtSubSn;                     /*!< PDCP SN to be submitted to UL next */
139 #endif
140    CmTimer     tReordTmr;                      /*!< t-Reorder timer */
141 }PjUlCb;
142 /*@}*/
143
144
145 /** @struct PjRbCb 
146 PDCP RB control block */
147 struct pjUlRbCb
148 {
149    CmLteRbId   rbId;                        /*!< RB Id for PDCP Cb */
150    U8          rbType;                      /*!< RB Type : 0 - PJ_SRB, 1 - PJ_DRB */
151    CmLteRlcMode mode;                       /*!< Mapped RLC entity's mode */
152    U8          dir;                         /*!< Direction for UL/DL/biderctional */
153    U8          snLen;                       /*!< Sequence number length */
154    U8          state;                       /*!< RB state - Used only for DRBs*/
155    PjSn        firstSn;                     /*!< SN of the first message sent
156                                                  for Integrity Protection */
157    PjRohc      rohc;                        /*!< ROHC Information */ 
158    PjCmpCxt    cmpCxt;                      /*!< Context for ROHC */
159    PTR         cmpCxtId;                    /*!< Context Id for ROHC */ 
160 /* pj005.201 added support for L2 Measurement */
161 #ifdef LTE_L2_MEAS
162    U8          qci;                         /*!< QCI value associated with rb */
163    PjL2MeasRbCb rbL2Cb;                     /*!< L2 Meas Cb for RB */
164 #endif /* LTE_L2_MEAS */
165 /** @defgroup dldata DL Module Info 
166 */
167    PjUlCb      ulCb;                        /*!< Uplink PDCP RbCb */ 
168    PjUlUeCb      *ueCb;                       /*!< Pointer to the UE in which RB is present */
169    PjSec         secInfo;                   /*!< Security Info */
170    U16           reOrdrTmrVal;              /* t-Reordering timer value in ms*/
171 };
172
173
174 /** @struct PjUeCb
175 UE control block */
176 struct pjUlUeCb
177 {
178    CmHashListEnt ueHlEnt;                   /*!< Hash list entry for UeCb */
179    Inst          inst; 
180    PjUeKey       key;                       /*!< Hash list key for UeCb */
181    U8            numSrbs;
182    U8            numDrbs;
183    PjUlRbCb        *srbCb[PJ_MAX_SRB_PER_UE]; /*!< SRB RbCbs within a UE */ 
184    PjUlRbCb        *drbCb[PJ_MAX_DRB_PER_UE]; /*!< DRB RbCbs within a UE */ 
185    PjSec         secInfo;                   /*!< Security Info */
186    PjUlHoInfo     *hoInfo;                   /*!< SDU Status Confirm */
187    PjLibInfo     libInfo;                   /*!< Hook Info - to wait for
188                                                  Init Cfm */
189 /* pj005.201 added support for L2 Measurement */
190 #ifdef LTE_L2_MEAS
191    U16           numActRb[LPJ_MAX_QCI]; /* number of RBs Active */
192 #endif /* LTE_L2_MEAS */
193    Bool          isUlDatFwdReqd;       /*!< To identify whether App rqstd for UL Data Fwding or not */
194 };
195
196 typedef struct pjUlPkt
197 {
198    CmLList lnk;
199    PjSn    sn;
200    Buffer  *pdu;
201    U8      type;
202 } PjUlPkt;
203
204 /* CFG Module */
205 EXTERN S16 pjCfgAddUlRb ARGS ((PjCb *gCb,CmLteRnti  ueId,CmLteCellId  cellId,U8 isHo,
206              CpjCfgEnt  *entCfg,PjUlUeCb **ueCb, CpjCfmEnt  *entCfm ));
207
208 EXTERN S16 pjCfgReCfgUlRb ARGS ((PjCb *gCb,PjUlUeCb *ueCb,
209                           CpjCfgEnt *entCfg, CpjCfmEnt *entCfm));
210
211 EXTERN S16 pjCfgDelUlRb ARGS ((PjCb *gCb,PjUlUeCb *ueCb,
212                         CpjCfgEnt *entCfg,CpjCfmEnt *entCfm));
213
214 EXTERN S16 pjCfgReEstUlRb ARGS ((
215 PjCb             *gCb,
216 PjUlUeCb         *ueCb,
217 CpjCfgEnt         *entCfg,
218 CpjCfmEnt         *entCfm,
219 UdxCfmEnt         *entDlCfgCfm 
220 ));
221
222 EXTERN S16 pjCfgDelUlUe ARGS ((
223 PjCb             *gCb,
224 PjUlUeCb         *ueCb,
225 CpjCfgEnt         *entCfg,
226 CpjCfmEnt         *entCfm
227 ));
228
229 EXTERN S16 pjCfgPrcSecUlCfg ARGS ((
230 PjCb             *gCb,
231 CpjSecCfgReqInfo *secCfg,
232 CpjSecCfgCfmInfo *cfgCfm
233 ));
234
235 EXTERN S16 pjCfgUlUeIdChng ARGS((
236 PjCb      *gCb,
237 CpjUeInfo *ueInfo,
238 CpjUeInfo *newUeInfo,
239 CmStatus  *status
240 ));
241
242 EXTERN S16 pjCfgPrcUlCount ARGS ((
243 PjCb                  *gCb,
244 CpjCountReqInfo       *countReq,
245 CpjCountCfmInfo       *countCfm,
246 UdxCountCfmInfo       *cntCfm
247 ));
248
249 EXTERN S16  pjCfgDelPjUlRbCb ARGS ((
250 PjCb                  *gCb,
251 PjUlUeCb               *ueCb,
252 PjUlRbCb                 *rbCb
253 ));
254
255 EXTERN S16 pjUtlUlCipherClose ARGS((
256 PjCb     *gCb,
257 Void     *cpCxtId                  /* Context Id for Ciphering to be closed */
258 ));
259
260 EXTERN S16 pjUtlUlIntClose ARGS((
261 PjCb     *gCb,
262 Void     *intCxtId                 /* Integration CxtId to be closed */
263 ));
264
265 EXTERN  S16 pjCfgUlReEstReq ARGS ((
266 PjCb                  *gCb,
267 CpjReEstReqInfo *reEstReq,
268 CpjReEstCfmInfo   *reEstCfm
269 ));
270 /* DB Module */
271 EXTERN S16 pjDbmInsRxEnt  ARGS ((
272 PjCb        *gCb,
273 PjBuf       *buf,             
274 PjRxEnt     *rxEnt,
275 Bool        dupFlag
276 ));
277 EXTERN S16 pjDbmBufInit ARGS ((
278 PjCb        *gCb,
279 PjBuf       *buf,          
280 U8          numBins          
281 ));
282 EXTERN PjRxEnt* pjDbmGetRxEnt ARGS ((
283 PjCb        *gCb,
284 PjBuf       *buf,        
285 U32          count      
286 ));
287 EXTERN PjRxEnt* pjDbmGetRxEntSn ARGS ((
288 PjCb        *gCb,
289 PjBuf       *buf,      
290 U16          sn          
291 ));
292 EXTERN S16 pjDbmDelRxEnt  ARGS ((
293 PjCb        *gCb,
294 PjBuf       *buf,    
295 U32         count     
296 ));
297 EXTERN S16 pjDbmRxDelAll ARGS((
298 PjCb        *gCb,
299 PjBuf *buf       
300 ));
301 EXTERN S16 pjDbmRxDeInit ARGS ((
302 PjCb        *gCb,
303 PjBuf *buf       
304 ));
305
306 EXTERN S16 pjDbmUlDeInit ARGS ((
307 PjCb        *gCb
308 ));
309
310 EXTERN S16 pjDbmFetchUlUeCb ARGS ((
311 PjCb        *gCb,
312 CmLteRnti         ueId,       /* UE Identifier */
313 CmLteCellId       cellId,     /* Cell Identifier */
314 PjUlUeCb            **ueCb       /* UE Control Block */
315 ));
316
317 EXTERN S16 pjDbmCreateUlUeCb ARGS ((
318 PjCb        *gCb,
319 CmLteRnti         ueId,       /* UE Identifier */
320 CmLteCellId       cellId,     /* Cell Identifier */
321 PjUlUeCb            **ueCb       /* UE Control Block */
322 ));
323 EXTERN  PjUlRbCb* pjDbmCreateUlRbCb ARGS ((
324 PjCb        *gCb,
325 U8      rbId,
326 U8      rbType,
327 PjUlUeCb  *ueCb,
328 U8      rb
329 ));
330
331 EXTERN S16 pjDbmFetchUlRbCb ARGS ((
332 PjCb           *gCb,
333 CmLteRlcId     rlcId,      /* RLC Identifier */
334 PjUlRbCb       **rbCb       /* RB Cb */
335 ));
336
337 EXTERN  S16 pjDbmDelUlRbCb ARGS ((
338 PjCb        *gCb,
339 U8      rbId,
340 U8      rbType,
341 PjUlRbCb   **rbCb,
342 U8      rb,
343 PjUlUeCb      *ueCb
344 ));
345
346 EXTERN S16 pjDbmDelUlUeCb  ARGS((
347 PjCb        *gCb,
348 PjUlUeCb      *ueCb,       /* UE Identifier */
349 Bool        abortFlag    /* Abort Flag */
350 ));
351
352 EXTERN S16 PjDbmDelAllUlUe ARGS((PjCb *gCb));
353 EXTERN S16 pjDbmDelAllUlRb ARGS((
354 PjCb        *gCb,
355 PjUlRbCb         **rbCbLst,              /* RB Cb list */
356 U8             numRbCb                 /* Number of rbCbs */
357 ));
358 EXTERN S16 pjDbmDelAllUlUe ARGS ((  
359 PjCb  *gCb
360 ));
361
362 EXTERN S16 pjDbmUlInit  ARGS (( PjCb *gCb));
363 EXTERN S16 pjDbmUlShutdown ARGS((PjCb *gCb));
364 EXTERN S16 pjDbmAddUlTransIdLst ARGS((PjCb *gCb,PjCfgInfo  *cfg));
365 EXTERN S16 pjDbmFindUlTransIdLst ARGS((PjCb *gCb,U32 transId,
366                                       PjCfgInfo   **cfg));
367 EXTERN S16 pjDbmDelUlTransIdLst ARGS((PjCb *gCb,PjCfgInfo  **cfg));
368 EXTERN S16 pjDbmDelAllUlTransIdLst ARGS((PjCb  *gCb));
369
370 EXTERN S16 pjUtlUlUpdUpSecKeys ARGS(( PjCb *gCb, PjUlUeCb *ueCb));
371 EXTERN S16 pjUtlUlUpdCpSecKeys ARGS(( PjCb *gCb, PjUlUeCb *ueCb));
372 EXTERN S16 pjUtlUlHdlRbReEstComplete ARGS((PjCb *gCb, PjUlRbCb *pjRbCb));
373
374
375 EXTERN S16 pjUtlUlCmpReset ARGS(( 
376 PjCb        *gCb,
377 PjUlRbCb      *pjRbCb                 /* Context to be reset for compression */
378 ));
379
380 /* UTL Module */
381 EXTERN S16 pjUtlUlCmpInit ARGS((
382 PjCb        *gCb,
383 PjUlRbCb   *pjRbCb                  /* PDCP RbCb */
384 ));
385 EXTERN S16 pjUtlUlIntInit ARGS((
386 PjCb        *gCb,
387 PjUlUeCb   *ueCb                   /* UE CB Ptr */
388 ));
389 EXTERN S16 pjUtlUlCpInit ARGS((
390 PjCb        *gCb,
391 PjUlUeCb   *ueCb                    /* UE CB Ptr */
392 ));
393 EXTERN S16 pjUtlUlUpInit ARGS((
394 PjCb        *gCb,
395 PjUlUeCb   *ueCb                    /* UE CB Ptr */
396 ));
397
398 EXTERN S16 pjUtlUlCmpReq ARGS((
399 PjCb        *gCb,
400 PjUlRbCb   *pjRbCb,                 /* PDCP RbCb */
401 Buffer   *mBuf,                   /* SDU to be compressed */
402 Buffer   **opSdu,                 /* Compressed SDU */
403 U32      count                    /* COUNT - transaction Id */
404 ));
405 EXTERN S16 pjUtlUlIntProtReq ARGS((
406 PjCb        *gCb,
407 PjUlRbCb   *pjRbCb,                 /* PDCP RbCb */
408 PjSecInp secInp ,                 /* Input parameters for integrity */ 
409 Buffer   *mBuf,                   /* SDU to be compressed */
410 U32      *macI                    /* Message authentication code for the SDU */
411 ));
412 EXTERN S16 pjUtlDeCmpReq ARGS((
413 PjCb        *gCb,
414 PjUlRbCb   *pjRbCb,                 /* PDCP RbCb */
415 U32      count,                   /* COUNT - transaction Id */
416 Buffer   *mBuf,                   /* SDU to be compressed */
417 Buffer   **opSdu                  /* Compressed SDU */
418 ));
419 EXTERN S16 pjUtlIntVerReq ARGS((
420 PjCb        *gCb,
421 PjUlRbCb   *pjRbCb,                 /* PDCP RbCb */
422 PjSecInp secInp ,                 /* Input parameters for integrity */ 
423 Buffer   *mBuf,                   /* SDU to be compressed */
424 U32      macI,                    /* MAC-I to be verified with */
425 Status   *status                  /* Integrity verification status */
426 ));
427 EXTERN S16 pjUtlDecipherReq ARGS((
428 PjCb        *gCb,
429 PjUlRbCb   *pjRbCb,                 /* PDCP RbCb */
430 U32        count,                  /* count of packet */ 
431 Buffer     *mBuf,                   /* Data to be deciphered */
432 Buffer   **opSdu                  /* Deciphered SDU */
433 ));
434 EXTERN S16 pjUtlSndFeedback ARGS((
435 PjCb        *gCb,
436 PjUlRbCb   *pjRbCb,                 /* PDCP RbCb */
437 Buffer   *feedback                /* ROHC Feedback */
438 ));
439 EXTERN S16 pjUtlUlReEstSrb1 ARGS((
440 PjCb        *gCb,
441 PjUlRbCb      *pjRbCb                    /* PDCP Control Block Pointer */
442 ));
443 EXTERN S16 pjUtlUlReEstStart ARGS((
444 PjCb        *gCb,
445 PjUlUeCb         *ueCb,          /* UE Control Block Pointer */
446 CpjCfgReqInfo  *cfgReq         /* CfgReq for Reestablishment */
447 ));
448 EXTERN S16 pjUtlUlReEstHOStart ARGS((
449 PjCb        *gCb,
450 PjUlUeCb      *ueCb,           /* Number of RBs undergoing reestablishment*/ 
451 U32         transId,        /* Transaction id of Sdu Status cfm */
452 U32         *waitForHoTrig 
453 ));
454 EXTERN S16 pjUtlUlReEstReconfig ARGS((
455 PjCb        *gCb,
456 PjUlUeCb       *ueCb           /* UE Control Block */ 
457 ));
458 EXTERN S16 pjUtlUlReEstUl ARGS((
459 PjCb        *gCb,
460 PjUlUeCb       *ueCb           /* UE Control Block */ 
461 ));
462 EXTERN S16 pjUtlUlSndReEstCfgCfm ARGS((
463 PjCb        *gCb,
464 PjUlUeCb       *ueCb           /* UE Control Block */ 
465 ));
466 EXTERN S16 pjUtlUlSndSduStaCfm ARGS((
467 PjCb        *gCb,
468 PjUlUeCb       *ueCb         /* UE Control Block */ 
469 ));
470 EXTERN S16 pjUtlUlShutdown ARGS((
471 PjCb        *gCb
472 ));
473 EXTERN Void pjUtlUlFreeRb ARGS((
474 PjCb        *gCb,
475 PjUlRbCb *pjRbCb
476 ));
477 /* kw005.201 added function to send data forward indication mesage */
478 EXTERN S16 pjUtlUlSndDatFwdInd ARGS((
479 PjCb        *gCb,
480 PjUlRbCb           *pjRbCb,
481 PjuDatFwdIndInfo *datFwdInd
482 ));
483 EXTERN S16 pjUtlUlSndUlStaRep ARGS ((  
484 PjCb             *gCb,
485 PjUlRbCb         *pjRbCb,
486 Buffer           *sta
487 ));
488
489 EXTERN S16 pjUtlUlHdlObdInitCfm ARGS((
490 PjCb        *gCb,
491 PjUlUeCb    *ueCb,           /* Pointer to UeCb */ 
492 U16         txIdx,           /* Transaction Index for UeCb */
493 U8          cfmType,         /* Confirm type */
494 U8          maskVal          /* mask value */
495 ));
496 EXTERN S16 pjUtlUlHdlInitObdTmrExp ARGS((
497 PjCb      *gCb,
498 PjUlUeCb *ueCb
499 ));
500
501 EXTERN S16 pjCfgPrcUlSduSta ARGS((
502 PjCb        *gCb,
503 CpjSduStaReqInfo *staReq,
504 UdxSduStaCfmInfo *staCfm
505 ));
506
507 EXTERN S16 pjUtlUlSaveCfmInfo  ARGS((
508 PjCb        *gCb,
509 PjUlUeCb      *ueCb,           /* Pointer to UeCb */ 
510 U8          cfmType,         /* Confirm type */
511 Bool        startTmr,        /* Whether to start timer */
512 U8          entity,          /* Confirm type */
513 PTR         cfmPtr,          /* Pointer to the structure for confirm */
514 PTR         cfgPtr           /* Pointer to the structure for request */
515 ));
516
517 /* UL Module */
518 EXTERN S16 pjUlmHdlSrbPkt ARGS((
519 PjCb        *gCb,
520 PjUlRbCb *pjRbCb,               /* !< PDCP Control Block */  
521 Buffer *pdu                   /* !< PDU Buffer */ 
522 ));
523 EXTERN S16 pjUlmHndlDlStaRep ARGS ((    
524 PjCb     *gCb,
525 PjUlRbCb   *pjRbCb,
526 PjSn     fmc,
527 Buffer   *staPdu
528 ));
529
530 #ifndef XEON_SPECIFIC_CHANGES
531 EXTERN U32 pjMsCheckSpaccQueue ARGS((
532 Bool isUl
533 ));
534 #else
535 EXTERN U32 pjMsCheckSpaccQueue ARGS((
536          Void
537          ));
538 #endif
539
540 EXTERN S16 pjUlmHdlDrbPkt ARGS((
541 PjCb        *gCb,
542 PjUlRbCb *pjRbCb,               /* !< PDCP Control Block */      
543 Buffer *pdu,                   /* !< PDU Buffer */ 
544 Bool    isOutOfSeq               /* !< To indicate whether this packet is in-sequence or not */
545 ));
546 EXTERN S16 pjUlmProcessSrb ARGS((
547 PjCb        *gCb,
548 PjUlRbCb   *pjRbCb,           /* !< PDCP Control Block */   
549 PjSn     sn,               /* !< SN value of PDU */           
550 Buffer   *pdu              /* !< PDU message buffer */           
551 ));
552 EXTERN S16 pjUlmProcessDrbUm ARGS((
553 PjCb        *gCb,
554 PjUlRbCb   *pjRbCb,          /* !< PDCP Control Block */   
555 PjSn     sn,               /* !< SN value of PDU */           
556 Buffer   *pdu              /* !< PDU message buffer */           
557 ));
558 EXTERN S16 pjUlmProcessDrbAm ARGS((
559 PjCb        *gCb,
560 PjUlRbCb   *pjRbCb,           /* !< PDCP Control Block */   
561 PjSn     sn,               /* !< SN value of PDU */           
562 Buffer   *pdu,              /* !< PDU message buffer */           
563 Bool     isOutOfSeq           /* !< To indicate whether packet received is in-sequence or not */
564 ));
565 EXTERN S16 pjUlmHdlDecipher ARGS((
566 PjCb        *gCb,
567 PjUlRbCb     *pjRbCb,        /* !< PDCP Control Block */  
568 PjRxEnt    *rxEnt          /* !< Rx Entry */
569 ));
570 EXTERN S16 pjUlmHdlIntVer ARGS((
571 PjCb        *gCb,
572 PjUlRbCb     *pjRbCb,        /* !< PDCP Control Block */  
573 PjRxEnt    *rxEnt          /* !< Rx Entry */
574 ));
575 EXTERN S16 pjUlmHdlDeCmp ARGS((
576 PjCb        *gCb,
577 PjUlRbCb     *pjRbCb,        /* !< PDCP Control Block */  
578 PjRxEnt    *rxEnt          /* !< Rx Entry */
579 ));
580 EXTERN S16 pjUlmDeliverSrb ARGS((
581 PjCb        *gCb,
582 PjUlRbCb *pjRbCb,          /* !< PDCP Control Block */     
583 PjRxEnt *rxEnt           /* !< Recption Buffer Entry   */            
584 ));
585 EXTERN S16 pjUlmDeliverDrbUm ARGS((
586 PjCb        *gCb,
587 PjUlRbCb *pjRbCb,        /* !< PDCP Control Block */                  
588 PjRxEnt *rxEnt         /* !< Recption Buffer Entry   */             
589 ));
590 EXTERN S16 pjUlmDeliverDrbAm ARGS((
591 PjCb        *gCb,
592 PjUlRbCb *pjRbCb,           /* !< PDCP Control Block */                  
593 PjRxEnt *rxEnt            /* !< Recption Buffer Entry   */             
594 ));
595 EXTERN S16 pjUlmReEstSrb ARGS((
596 PjCb        *gCb,
597 PjUlRbCb *pjRbCb       /*!< PDCP control block  */
598 ));
599 EXTERN S16 pjUlmReEstDrbAm ARGS((
600 PjCb        *gCb,
601 PjUlRbCb *pjRbCb       /*!< PDCP control block  */
602 ));
603 EXTERN S16 pjUlmBldStaRep ARGS((
604 PjCb        *gCb,
605 PjUlRbCb    *pjRbCb,             /* !< PDCP Control Block */  
606 PjSn         fmc,                /* !< First Missing count */  
607 U8          *staRep,             /* !< Status Report */       
608 U16         bMapLen              /* !< Bitmap Length */
609 ));
610 EXTERN S16 pjUlmHdlDatFwdReq ARGS((
611 PjCb        *gCb,
612 PjUlRbCb         *pjRbCb,        /* !< PDCP ID */        
613 PjuDatFwdReqInfo   *datFwdReq    /* !< DatFwdReq Info */
614 ));                                             
615 EXTERN S16 pjUlmSubmitForDecmp ARGS((
616 PjCb       *gCb,
617 PjUlRbCb   *pjRbCb,        /* !< PDCP Control Block */  
618 PjRxEnt    *rxEnt          /* Ptr To Rx Entry */
619 ));
620
621 EXTERN Void pjUlmHdlObdTmrExpiry ARGS(( 
622 PjCb       *gCb,
623 PjUlRbCb     *pjRbCb         /* !< PDCP Control Block */
624 ));
625
626 EXTERN Void pjUlmHdlErrUpdates ARGS((
627 PjCb       *gCb,
628 PjUlRbCb     *pjRbCb,        /* !< PDCP Control Block */  
629 U32         errCnt         /* !< Count of PDU that raises the error */
630 ));
631
632 EXTERN Void pjLimDatInd ARGS((
633 PjCb        *gCb,
634 PjUlRbCb      *pjRbCb,
635 Buffer      *mBuf,
636 Bool        isOutOfSeq
637 ));
638
639 EXTERN Void pjLimReEstCmpInd ARGS((
640 PjUlRbCb      *pjRbCb         
641 ));
642
643 #ifdef LTE_L2_MEAS
644 S16 pjUtlL2MeasUlInit(PjCb *gCb);
645
646 EXTERN Void pjUtlResetUlL2MeasCntr ARGS((
647 PjCb         *gCb,
648 PjL2MeasCb   *measCb,
649 U8           measType
650 ));
651
652 EXTERN S16 pjUtlSndUlL2MeasNCfm ARGS ((PjCb *gCb, 
653                                 PjL2MeasCfmEvt *measCfmEvt));
654
655 EXTERN Void pjUtlPlcMeasDatInUlL2Sts ARGS((PjL2Cntr *, PjL2MeasRbCb *, U8));
656 #endif
657
658 EXTERN  S16 pjDbmFetchPjUlRbCb ARGS ((
659 PjUlUeCb   *ueCb,
660 U8         rbId,
661 U8         rbType,
662 PjUlRbCb   **pjRbCb         
663 ));
664
665 EXTERN S16 pjUtlUlSndUlRohcFdbk ARGS ((
666 PjCb        *gCb,
667 PjUlRbCb           *pjRbCb,
668 Buffer      *fbPkt
669 ));
670
671 EXTERN S16 pjUtlUlResetBuffrdPkts ARGS ((
672 PjCb        *gCb,
673 PjUlRbCb    *pjRbCb
674 ));
675
676 EXTERN  S16 pjUtlReEstProcUlRb ARGS ((
677 PjCb            *tPjCb,
678 PjUlUeCb        *ueCb,
679 CpjCfgReqInfo   *cfg
680 ));
681
682 EXTERN S16 pjUtlCheckOnlySrbPresent ARGS((
683 PjCb        *tPjCb,            /* Pdcp UL control block */
684 CmLtePdcpId pdcpId,            /* PDCP Id*/
685 U32         *waitForReEstTrig /* wait for reestablishment trigger */
686 ));
687
688 EXTERN Void pjUlmReEstCmpInd ARGS((
689 PjCb   *tPjCb,
690 PjUlRbCb *tRbCb        /* !< RB control block */  
691 ));
692
693 EXTERN S16 PjUlUdxDlStaRep ARGS((  
694 Pst *pst,                       /* Post structure */
695 SpId spId,                      /* Service provider ID */
696 UdxDlStaRepInfo *staRep           /*PDCP Status Report*/
697 ));
698
699 EXTERN S16 PjUlUdxUlStaRep ARGS ((  
700 Pst *pst,                       /* Post structure */
701 SpId spId,                      /* Service provider ID */
702 UdxUlStaRepInfo *staRep           /*PDCP Status Report*/
703 ));
704
705 EXTERN S16 pjUtlStartUlReEst ARGS ((
706 PjCb            *gCb,
707 CpjReEstReqInfo *reEstReq,
708 CpjReEstCfmInfo *reEstCfm
709 ));
710
711 EXTERN S16 pjUtlUlPrcsDatResume ARGS ((
712 PjCb       *gCb,
713 CpjDatResumeReqInfo  *datResReq
714 ));
715
716 EXTERN S16 pjUlmStartDataFrwdPerRb ARGS((
717 PjCb       *gCb,
718 PjUlRbCb    *pjRbCb
719 ));
720
721 EXTERN Void pjUlmProcessUlPktQ ARGS ((
722 PjCb       *gCb,
723 PjUlRbCb   *pjRbCb           /* !< PDCP Control Block */
724 ));
725
726 EXTERN S16 pjUtlUlGetRbCb ARGS ((
727 PjCb          *gCb,
728 CmLtePdcpId   *pdcpId,
729 PjUlRbCb      **rbCb,
730 U8            *retCause
731 ));
732
733 EXTERN Void pjUtlEmptyUlPktList ARGS((
734 PjCb *gCb, 
735 PjUlRbCb *pjRbCb
736 ));
737
738 EXTERN S16 pjUtlUlReEstHO ARGS((
739 PjCb          *gCb,
740 PjUlUeCb      *ueCb         
741 ));
742
743 EXTERN S16 pjDbmFetchUlUeCb ARGS((
744 PjCb              *gCb,
745 CmLteRnti         ueId,    
746 CmLteCellId       cellId, 
747 PjUlUeCb          **ueCb  
748 ));
749 EXTERN S16 pjUlmHndlDatFwdReq ARGS((
750 PjCb               *gCb,
751 PjUlRbCb           *pjRbCb,
752 PjuDatFwdReqInfo   *datFwdReq
753 ));
754 EXTERN Void dumpPDCPUlRbInformation ARGS ((
755 PjUlRbCb* ulRbCb,
756 U16 ueId
757 ));
758
759 EXTERN void DumpPDCPUlDebugInformation ARGS ((
760 Void
761 ));
762
763 EXTERN Void pjDeInitDeCipherQ(Void);
764
765 EXTERN  Void pjUlmHdlReordTmrExpiry ARGS((
766 PjCb          *tPjCb,/*pjCb structure */
767 PjUlRbCb     *pjRbCb
768 ));
769
770
771 #ifdef __cplusplus
772 }
773 #endif /* __cplusplus */
774
775 #endif /* __PJX__ */
776
777 \f  
778 /********************************************************************30**
779   
780          End of file
781 **********************************************************************/