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**
25 Desc: This file contains all the data structures and
26 prototypes for LTE RLC.
30 *********************************************************************21*/
33 * @brief RLC downlink structures, prototypes
41 #endif /* __cplusplus */
44 #include "pj_tenb_stats.x"
46 #include "l2_tenb_stats.x"
49 typedef struct rlcDlUeCb RlcDlUeCb;
52 * @brief Structure to hold the SN of the PDU onto which a SDU is mapped
55 * - sn : Sequence number of the AM pdu
57 typedef struct rlcPduMap
59 RlcSn sn; /*!< Mapped PDU's SN */
63 * @brief Structure to hold information regarding a SDU received from PDCP
66 * - lstEnt : Used for linking ( we have linked list of SDUs) which forms
68 * - mBuf : Pointer to the SDU data
69 * - sduSz : Size of the mBuf above
70 * - actSz : Length of the SDU when received from PDCP, this might be
71 * different from sduSz, in case when the SDU is split
72 * - mode : Depending on the type, holds AM, UM or TM mode information
74 * - sfn : System Frame number for BCCH/PCCH
75 * - subframe : Subframe number
76 * - rnti : RNTI for CCCH
78 * - sduId : Unique identity for the SDU
79 * - isSegmented : Whether this SDU is segmented into multiple PDUs
81 * - sduId : Unique identity for the SDU
82 * - rcvdSz : Length of this SDU which is received by the peer
83 * - isSegmented : Whether this SDU is segmented into multiple PDUs
87 CmLList lstEnt; /*!< List entry for SDU */
88 Buffer *mBuf; /*!< SDU buffer */
89 MsgLen sduSz; /*!< Buffer Size */
90 MsgLen actSz; /*!< Actual buffer Size */
91 /* kw005.201 added support for L2 Measurement */
93 RlcSduSnMap *snMap; /*!< Sdu and the list of SN it maps to */
94 #endif /* LTE_L2_MEAS */
100 uint16_t sfn; /*!< Sub frame number for BCCH/PCCH */
101 uint16_t slot; /*!< Subframe number */
102 CmLteRnti rnti; /*!< RNTI for CCCH */
104 uint8_t emtcDiReason; /*!< DI reason */
105 uint8_t pnb; /*!<narrow band on which Ue performs Paging*/
107 }tm; /*!< SDU for TM mode */
111 uint32_t sduId; /*!< SDU Identifier */
112 Bool isSegmented; /*!< Flag to indicate if the SDU is segmented */
113 }um; /*!< SDU for UM mode */
117 uint32_t sduId; /*!< SDU Identifier */
118 MsgLen rcvdSz; /*!< Recvd SDU Size from peer */
119 Bool isSegmented; /*!< Is SDU segmented */
120 RlcSn sn; /*!< SN assigned to this SDU*/
121 }am; /*!< SDU for AM mode */
122 }mode; /*!< RLC mode specific SDUs */
123 /* Discard new changes starts */
124 Ticks arrTime; /*!< Arrival time of the PDCP PDU at RLC */
125 /* Discard new changes ends */
129 /** @addtogroup tmmode */
133 * @brief Structure to hold Transparent Mode information for a RB
136 * - sduQ : Queue of SDUs
140 CmLListCp sduQ; /*!< SDU queue for TM */
145 * @brief Structure to hold buffer occupancy report sent to MAC
148 * - bo : Size of the buffers at RLC
149 * - estHdrSz : Size for all the headers as estimated by RLC
150 * - staPduPrst : Whether RLC wants to send a STATUS PDU or not
152 typedef struct rlcBoRep
154 int32_t bo; /*!< Buffer occupancy */
155 uint16_t estHdrSz; /*!< Estimated header size for the bo */
156 bool staPduPrsnt; /*!< Indicate control bo present or not */
157 uint32_t staPduBo; /*!< Indicate bo for control PDU */
158 uint32_t oldestSduArrTime;
162 * @brief Structure to hold information sent to MAC in a Data Request
165 * - pduSz : Sum total of sizes of all the PDUs being sent
166 * - pduInfo : Information about each PDU
167 * - boRep : Current buffer occupancy report
169 typedef struct rlcDatReq
171 MsgLen pduSz; /*!< PDU(s) size indicated by MAC */
172 KwPduInfo pduInfo; /*!< PDU Information for lChs within UE */
173 RlcBoRep boRep; /*!< BO report */
174 /* kw005.201 added support for L2 Measurement */
176 KwLchMapInfo lchMapInfo; /*!< Logical channel mapping info */
177 uint32_t totMacGrant;
178 #endif /* LTE_L2_MEAS */
181 /** @defgroup ummode UM Module Info
184 /** @addtogroup ummode */
187 * @brief Structure to hold Unacknowledged mode downlink information for a RB
190 * - sduQ : Control point for the queue of SDUs
191 * - snLen : length of the squence number. Here it is stored
192 * as 1 for 5 bit sequence numbers and
193 * 2 for 10 bit sequence numbers
194 * - bo : Current buffer occupancy for this RB
195 * - TX_Next : SN to be allocated to next SDU
196 * - modBitMask : Bitmask used to do modulus operations to wrap around
197 * state variables, value is 0x3f or
198 * 0xfff for 6-bit and 12-bit sequence numbers respectively
200 typedef struct rlcUmDl
202 CmLListCp sduQ; /*!< SDU queue for UM */
203 uint8_t snLen; /*!< Sequence number length */
204 int32_t bo; /*!< Buffer occupancy */
205 RlcSn txNext; /*!< TX_Next */
206 uint16_t modBitMask; /*!< Bitmask for modulus to wrap around vars*/
210 * @brief Structure to hold information about which SDUs a PDU/segment carries
213 * - sduSz : Size of the SDU or part of it
214 * - sdu : Pointer to the SDU
216 typedef struct rlcSduMap
218 /*MsgLen actSz;*/ /*!< SDU Size */
219 MsgLen sduSz; /*!< SDU Size */
220 /*Bool isSegmented;*/ /*!< Flag to indicate if the SDU is segmented */
221 RlcSdu* sdu; /*!< Pointer to the associated SDU */
225 * @brief Structure to hold info about a PDU/segment to be re-transmitted
228 * - lstEnt : Control point to link the re-transmit (the
229 * re-transmit PDUs ,segments are stored as a
231 * - seg : Pointer to the data
232 * - segSz : Size of the PDU/segment including the header
233 * - hdrSz : Size of the AM header for this in bytes
234 * - amHdr : The header for this PDU/segment
236 * - retxCnt : Number of times this has been re-transmitted
237 * - yetToConst : Whether the PDU/segment has been constructed (headers
239 * - pendingReTrans : TRUE if this node is to be re-transmitted else FALSE
240 * - numSdu : Number of SDUs this PDU/segment carries
241 * - sduMap : Infomation about the SDUs this node carries
243 typedef struct rlcRetx
245 CmLList lstEnt; /*!< List entry for Retransmission PDU */
246 Buffer *seg; /*!< Buffer of PDU or Segment */
247 MsgLen segSz; /*!< Segment Size */
248 MsgLen hdrSz; /*!< Header size for the segment */
249 RlcAmHdr amHdr; /*!< AM header Info */
250 uint16_t soEnd; /*!< Segment Offset End */
251 RlcSn retxCnt; /*!< Retransmission count */
252 Bool yetToConst; /*!< Yet to construct seg flag */
253 Bool pendingReTrans; /*!< Is node waiting for re-transmission */
254 RlcSduMap sduMap; /*!< SDU mapped with PDU */
258 * @brief Structure to hold a RLC AM PDU Information
261 * - lstEnt : This is required for the linked list in which pdu is stored
262 * - pdu : Holds the pdu
263 * - pduSz : The length of the segment in bytes
264 * - hdrSz : Header size of this PDU
265 * - amHdr : The AM Header for the PDU segment
266 * - RlcSduMap :SDU map info for this PDU
269 typedef struct rlcDlPduInfo
271 CmLList lstEnt; /*!< List entry for PDU list */
272 Buffer *pdu; /*!< Buffer of PDU */
273 MsgLen pduSz; /*!< PDU Size */
274 MsgLen hdrSz; /*!< Header size for the segment */
275 RlcAmHdr amHdr; /*!< AM header Info */
276 RlcSduMap sduMap; /*!< SDU info for this PDU */
281 * @brief Structure to hold info about a PDU that has been transmitted
284 * - lnk : Link to the TX buffer list
285 * - sn : SN of this RLC SDU
286 * - rlsLnk : Link to store on release list, used for
287 * - pduLst : It contains all PDUs of a particular SN
291 CmLList lnk; /**< Link to the TX buffer list*/
292 RlcSn sn; /*!< SN of this RLC SDU */
293 CmLList rlsLnk; /*!< Lnk to store on release lst */
294 CmLListCp pduLst; /*!< It contains all PDUs of a particular SN*/
297 /** @addtogroup ammode */
301 * @brief Structure to hold Acknowledged Mode Downlink information for a RB
305 * - nxtTx : Pointer to the next SDU to be transmitted
306 * - pollRetxTmr : Poll re-transmission timer
307 * - pollRetxTmrInt : Timer interval (?? secs) of poll re-transmission timer
308 * - pollPdu : Number of PDUs to send before sending a poll bit
309 * - pollByte : Number of bytes to send before sending a poll bit
310 * - maxRetx : Maximum number of re-transmissions to be done for a
312 * - cntrlBo : Size of the STATUS PDU if it is to be sent, else 0
313 * - retxBo : Bo of the PDUs/segments to be re-transmitted
314 * - estHdrSz : Extimated header size of all the SDUs in the queue
315 * - bo : Bo of the PDUs in the transmission buffer
316 * - txBufLst : Transmission buffer lists. It's contiguous index by sequence
318 * - rextLst : Re-transmission buffer. It is a doubly linked list
319 * - nxtRetx : Next node to be re-transmitted
320 * - txNext : 5GNR - TX_Next - Send state variable,( in LTE VT(S))
321 * - txNextAck : 5GNR - TX_Next_Ack- Acknowledgement state variable
323 * - pduWoPoll : Number of PDUs sent without sending a poll bit
324 * - byteWoPoll : Number of bytes sent without sending a poll bit
325 * - pollSn : The sequence number on which the last poll bit was sent
326 * - mBuf : The encoded STATUS pdu to be sent
327 * - maxReTxReached : Whether maximum number of re-transmissions has been
329 * - pStaPdu : Stores the control pdu (information required to
330 * create the STATUS PDU) passed from AM uplink
332 typedef struct rlcAmDl
334 CmLListCp sduQ; /*!< SDU queue */
335 RlcSdu *nxtTx; /*!< Next SDU to be transmitted */
336 CmTimer pollRetxTmr; /*!< T_poll_retransmit Timer */
337 uint16_t pollRetxTmrInt; /*!< Timer Interval */
338 int16_t pollPdu; /*!< Poll_PDU */
339 int32_t pollByte; /*!< Poll_Byte */
340 uint8_t maxRetx; /*!< Max_Retx_Threshold */
341 int32_t cntrlBo; /*!< BO of control pdu */
342 int32_t retxBo; /*!< BO of Retransmission PDUs */
343 uint32_t estHdrSz; /*!< Estimated header size for the BO */
344 int32_t bo; /*!< BO of new PDUs */
346 CmLListCp *txBufLst; /*!< Transmission buffer list of type RlcTx */
348 // RlcTx *txBuf[1024]; /*!< Transmission buffer */
350 CmLListCp retxLst; /*!< Retransmission PDU list */
351 RlcRetx *nxtRetx; /*!< Next node to be retransmitted */
352 RlcSn txNext; /*!< 5GNR: TX_Next, in LTE VT(S) */
353 RlcSn txNextAck; /*!< 5GNR: TX_Next_Ack, in LTE VT(A)*/
354 int16_t pduWoPoll; /*!< PDU without poll bit counter */
355 int32_t byteWoPoll; /*!< Byte without poll bit counter */
356 RlcSn pollSn; /*!< Poll SN */
357 Buffer *mBuf; /*!< this can be removed later
358 Stores the Control Pdu */
359 Bool maxReTxReached; /*!< Set when the DL MAX Retx exceeded */
360 RlcUdxDlStaPdu* pStaPdu; /*!< The Control Pdu passed from UL*/
361 uint8_t snLen; /*!< Sequence number length:12 bit or 18 bit : 5GNR RLC */
362 uint32_t snModMask; /*!< (2 Pwr SnLen - 1): 5GNR RLC */
368 * @brief Structure to hold information about a Radio Bearer as required by RLC
371 * - rlcId : RLC identifier, uniquely identifies a Radio Bearer
372 * - lch : Information (type and id) of the logical channel
373 * associated with this Radio Bearer.
374 * - mode : The mode of the Radio Bearer TM or UM or AM
375 * - dir : The direction of the Radio Bearer, downlink or
377 * - inst : Id of RLC instance where this Radio Bearer is present.
378 * Used to find the instance from the Radio Bearer for
379 * memory needs as different instances might have
381 * - k1wuSapId : KWU SAP identifier
382 * - udxSapId : UDX SAP idenrifier
383 * - transId : Stores the transaction identifier used to communicate
384 * with MAC, the same value as sent by MAC is passed back
385 * for it to be able to corelate
386 * - reestInProgress: Whether re-establishment is going on for this RB
387 * - m : Mode of the RB (TM/UM/AM)
388 * - tm : Transparent Mode information
389 * - umDl : Unacknowledged Mode downlink information
390 * - amDl : Acknowledged Mode downlink information
391 * - rlsLnk : Link list used to free the RbCb
392 * - cleanupStarted : Whether cleanup of RB is in progress or not
394 typedef struct _rlcDlRbCb
396 uint8_t qci; /*!< qci of the RB */
398 RlcDlUeCb *ueCb; /*!< Pointer to UeCb */
399 RlcL2MeasRbCb rbL2Cb; /*!< RB measurement L2 Cb */
400 CmLListCp sduSnMapQ; /*!< SDU SN map queue for UM */
402 RlcL2MeasIpThruput l2MeasIpThruput; /*!< Holds related parameter for
403 DL/UL ip throughput>*/
406 /* Discard new changes starts */
407 S16 discTmrInt; /*!< The discard time in milli
408 seconds for an PDCP SDU for this RB */
409 /* Discard new changes ends */
410 CmLteRlcId rlcId; /*!< RLC Identifier */
411 RlcLchInfo lch; /*!< Logical Channel Info */
412 CmLteRlcMode mode; /*!< Entity Mode */
413 uint8_t dir; /*!< Direction for UL/DL */
414 Inst inst; /*!< Tapa Instance where rb created */
415 SpId k1wuSapId; /*!< KWU sap Id, to get the KwuSapCb */
416 SpId udxSapId; /*!< UDX sap Id, to get the UdxSapCb */
417 uint32_t transId; /*!< Transaction Id for RLC */
418 Bool reestInProgress; /*!< Is reestablishment in progress */
419 SpId rguSapId; /*!< RGU Instance SAP corresponding to this RB */
422 RlcTm tm; /*!< TM mode specific elements */
423 RlcUmDl umDl; /*!< UM downlink elements */
424 RlcAmDl amDl; /*!< AM downlink elements */
425 }m; /*!< RLC mode specific Info */
426 CmLList rlsLnk; /*!< Link to add to release list */
427 Bool cleanupStarted; /*!< Whether cleanup of RB is in progress or not */
428 uint32_t lastRprtdBoToMac; /*!< Last Reported BO to MAC Layer */
429 uint32_t boUnRprtdCnt; /*!< Count to keep track of periodic BO Update */
433 * @brief Structure to hold mapping between logical channel and Radio Bearer
436 * - dlRbCb : Pointer to the downlink Radio Bearer
438 typedef struct rlcDlLch
440 RlcDlRbCb *dlRbCb; /*!< Pointer to Downlink RbCb */
444 * @brief Structure to hold information about the Cells
447 * - cellHlEnt : Information about cells are stored in a hash table. This is
449 * - cellId : Identity of the cell
450 * - rbCb : Radio Bearers in the cell
451 * - lCh : Logical Channels in the cell
453 typedef struct rlcDlCellCb
455 CmHashListEnt cellHlEnt; /*!< Hash list entry for CellCb */
456 CmLteCellId cellId; /*!< Cell Id */
457 RlcDlRbCb *rbCb[RLC_MAX_RB_PER_CELL]; /*!< RbCbs within a Cell */
458 RlcDlLch lCh[RLC_MAX_LCH_PER_CELL]; /*!< Array of Logical channels */
462 /** @struct RlcContSduLst
463 * Structure contains list of rbId and index to KwOutStngSduLst
465 typedef struct rlcContSduLst
467 CmLteLcId lcId; /*!< Holds the lcId of rbCb */
468 uint8_t numSdus; /*!< Number sdus in sduIdx array */
469 uint8_t sduIdx[RLC_L2MEAS_MAX_OUTSTNGSDU]; /*!< Hold the index to KwOutStngSduLst */
471 typedef struct rlcSduInfo
474 Ticks arvlTime; /* stores the the arrival time of each PDCP PDU */
477 typedef struct rlclchInfo
479 CmLteLcId lcId; /*!< Holds the lcId of rbCb */
480 uint8_t numSdus; /*!< Number sdus belonged to the this LC */
481 RlcSduInfo sduInfo[RLC_L2MEAS_SDUIDX];
484 /** @struct RlcL2MeasTb
485 * Structure containes list of rbId and index to KwOutStngSduLst
487 typedef struct rlcL2MeasTb
489 uint8_t numLcId; /* number of logical channels in this TbCb */
490 RlcContSduLst sduInfo[RLC_MAX_ACTV_DRB]; /*!< Contained sduLst for
493 RlclchInfo lchInfo[RLC_MAX_ACTV_DRB]; /* Holds the LC info details
494 used for DL delay L2 Meas*/
495 uint32_t txSegSduCnt; /*!< This holds the no.of partially
496 transmitted SDU per TB which can be used for UU loss Meas*/
501 * @brief Structure to hold information about the UEs
504 * - ueHlEnt : Information about cells are stored in a hash table. This is
506 * - key : Key to store/find the UE in the hashtable
507 * - srbCb : Signaling Radio Bearers configured for the UE
508 * - drbCb : Data Radio Bearers configured for the UE
509 * - lCh : Logical Channels in the UE
513 CmHashListEnt ueHlEnt; /*!< Hash list entry for UeCb */
514 CmLteRnti ueId; /*!< UE Id */
515 CmLteCellId cellId; /*!< Cell Id */
516 RlcDlRbCb *srbCb[RLC_MAX_SRB_PER_UE]; /*!< SRB RbCbs within a UE */
517 RlcDlRbCb *drbCb[RLC_MAX_DRB_PER_UE]; /*!< DRB RbCbs within a UE */
518 RlcDlLch lCh[RLC_MAX_LCH_PER_UE]; /*!< Array of Logical channels */
519 /* kw005.201 added support for L2 Measurement */
521 uint16_t numActRb[LKW_MAX_QCI]; /*!< number of RBs Active */
522 uint8_t tbIdx; /*!< TBIDx for measTbCb */
523 RlcL2MeasTb *l2MeasTbCb[RLC_MAX_TB_PER_UE]; /*!< Array of Measurement tbCb */
524 #endif /* LTE_L2_MEAS */
526 TSL2UeStatsCb *tenbStats; /*!< UE Stats Holder */
530 /****************************************************************************
532 ***************************************************************************/
533 /****************************************************************************
534 * Configuration Functions
535 ***************************************************************************/
536 S16 rlcCfgAddDlRb ARGS ((RlcCb *gCb,
539 RlcEntCfgInfo *entCfg,
540 RlcEntCfgCfmInfo *entCfm));
542 S16 rlcCfgReCfgDlRb ARGS ((RlcCb *gCb,
545 RlcEntCfgInfo *entCfg,
546 RlcEntCfgCfmInfo *entCfm));
548 S16 rlcCfgDelDlRb ARGS ((RlcCb *gCb,
551 RlcEntCfgInfo *entCfg,
552 RlcEntCfgCfmInfo *entCfm));
554 S16 rlcCfgDelDlUe ARGS ((RlcCb *gCb,
557 RlcEntCfgInfo *entCfg,
558 RlcEntCfgCfmInfo *entCfm));
560 S16 rlcCfgReEstDlRb ARGS ((RlcCb *gCb,
564 RlcEntCfgInfo *entCfg,
565 RlcEntCfgCfmInfo *entCfm));
567 S16 rlcCfgDelDlCell ARGS ((RlcCb *gCb,
569 RlcEntCfgInfo *entCfg,
570 RlcEntCfgCfmInfo *entCfm));
572 S16 rlcCfgDlUeIdChng ARGS ((RlcCb *gCb,
574 CkwUeInfo *newUeInfo,
577 /****************************************************************************
578 * DBM module Functions
579 ***************************************************************************/
580 S16 rlcDbmDlInit ARGS ((RlcCb *gCb));
582 Void rlcDbmDlDeInit ARGS ((RlcCb *gCb));
584 S16 rlcDbmCreateDlUeCb ARGS ((RlcCb *gCb,
589 uint8_t rlcDbmFetchDlUeCb ARGS ((RlcCb *gCb,
594 Void rlcDbmDelDlUeCb ARGS ((RlcCb *gCb,
598 Void rlcDbmDelAllDlUe ARGS ((RlcCb *gCb));
600 S16 rlcDbmCreateDlCellCb ARGS ((RlcCb *gCb,
602 RlcDlCellCb **cellCb));
604 uint8_t rlcDbmFetchDlCellCb ARGS ((RlcCb *gCb,
606 RlcDlCellCb **cellCb));
608 Void rlcDbmDelDlCellCb ARGS ((RlcCb *gCb, RlcDlCellCb *cellCb));
610 Void rlcDbmDelAllDlCell ARGS ((RlcCb *gCb));
612 Void rlcDbmFetchDlRbCbByRbId ARGS ((RlcCb *gCb,
616 Void rlcDbmFetchDlRbCbFromLchId ARGS ((RlcCb *gCb,
622 Void rlcDbmDelAllDlRb ARGS ((RlcCb *gCb, RlcDlRbCb **rbCbLst, uint8_t numRbCb));
624 S16 rlcDbmDlShutdown ARGS ((RlcCb *gCb));
626 Void rlcUtlGetCurrTime ARGS((uint32_t *time));
627 Void rlcUtlTrigPdbFlowCntrl ARGS((RlcCb *gCb, RlcDlRbCb *rbCb, uint32_t pktAdmitCnt ));
629 Void rlcDbmDelAllDlL2MeasTbFrmUe ARGS ((RlcCb *gCb, RlcDlUeCb *ueCb));
633 /****************************************************************************
634 * Transparent Mode Functions
635 ***************************************************************************/
636 Void rlcTmmQSdu ARGS ((RlcCb *gCb,
638 RlcDatReqInfo *datReqInfo,
640 Void rlcTmmSendToMac ARGS ((RlcCb *gCb,
643 RguCStaIndInfo *staInd));
645 Void rlcDlTmmReEstablish ARGS ((RlcCb *gCb, RlcDlRbCb *rbCb));
647 /****************************************************************************
648 * Unacknowledged Mode Functions
649 ***************************************************************************/
650 Void rlcUmmQSdu ARGS ((RlcCb *gCb,
652 RlcDatReqInfo *datReq,
655 Void rlcUmmDiscSdu ARGS ((RlcCb *gCb, RlcDlRbCb *rbCb, uint32_t sduId));
657 Void rlcDlUmmReEstablish ARGS ((RlcCb *gCb,
662 Void rlcUmmProcessSdus ARGS ((RlcCb *gCb,RlcDlRbCb *rbCb,RlcDatReq *datReq));
664 Void rlcUmmFreeDlRbCb ARGS ((RlcCb *gCb, RlcDlRbCb *rbCb));
666 /****************************************************************************
667 * Acknowledged Mode Functions
668 ***************************************************************************/
670 S32 rlcAmmCalculateBo ARGS ((RlcAmDl *amDl));
672 Void rlcAmmSendDedLcBoStatus ARGS ((RlcCb *gCb, RlcDlRbCb *rbCb, RlcAmDl *amDl));
674 Void rlcAmmQSdu ARGS((RlcCb *gCb,
677 RlcDatReqInfo *datReq));
679 void rlcAmmProcessSdus ARGS((RlcCb *gCb,
681 RlcDatReq *rlcDatReq,
684 Void rlcAmmDlReEstablish ARGS((RlcCb *gCb,
688 Void rlcAmmDlHndlStatusPdu ARGS ((RlcCb *gCb,
690 RlcUdxStaPdu *pStaPdu));
692 S16 rlcAmmDiscSdu ARGS((RlcCb *gCb, RlcDlRbCb *rbCb, uint32_t sduId));
694 Void rlcAmmPollRetxTmrExp ARGS((RlcCb *gCB, RlcDlRbCb *rbCb));
696 Void rlcAmmFreeDlRbCb ARGS ((RlcCb *gCb, RlcDlRbCb *rbCb));
698 /****************************************************************************
700 ***************************************************************************/
702 Void rlcUtlStoreTxBuf ARGS ((CmLListCp *txBufLst,
706 RlcTx* rlcUtlGetTxBuf ARGS ((CmLListCp *txBufLst,
709 Void rlcUtlDelTxBuf ARGS ((CmLListCp *txBufLst,
713 Void rlcUtlRemovTxBuf ARGS ((CmLListCp *txBufLst,
718 uint8_t rlcUtlSendDedLcBoStatus ARGS ((RlcCb *gCb,
725 #ifdef LTE_L2_MEAS_RLC
726 Void rlcUtlEmptySduQ ARGS ((RlcCb *gCb, RlcDlRbCb *rbCb, CmLListCp *sduQ));
727 #else /* LTE_L2_MEAS */
728 Void rlcUtlEmptySduQ ARGS ((RlcCb *gCb,CmLListCp *sduQ));
729 #endif /* LTE_L2_MEAS */
731 uint8_t rlcUtlSendToMac ARGS ((RlcCb *gCb, SuId suId, KwDStaIndInfo *staIndInfo));
733 Void rlcUtlIncrementKwuStsSduTx ARGS((RlcKwuSapCb *rlckwuSap));
735 Void rlcUtlIncrementGenStsBytesAndPdusSent ARGS((RlcGenSts *genSts,
738 Void rlcUtlFreeDlMemory ARGS ((RlcCb *gCb));
740 Void rlcUtlInitToBeFreed ARGS ((RlcCb *gCb, RlcDlDataToBeFreed *toBeFreed));
742 Void rlcUtlInitializeSelfPst ARGS((RlcCb *gCb));
744 Void rlcUtlRaiseDlCleanupEvent ARGS((RlcCb *gCb));
746 Void rlcUtlAddSduToBeFreedQueue ARGS((RlcCb *gCb, RlcSdu *sdu));
748 Void rlcUtlAddReTxPduToBeFreedQueue ARGS((RlcCb *gCb, RlcRetx *retx));
750 Void rlcUtlAddTxPduToBeFreedQueue ARGS((RlcCb *gCb, RlcTx *pdu));
753 S16 rlcUtlL2MeasDlInit ARGS((RlcCb *gCb));
756 /****************************************************************************
758 ***************************************************************************/
759 Void ResetRLCStats ARGS((Void));
761 Void PrintRLCStats ARGS((Void));
763 Void DumpRLCDlDebugInformation ARGS((Void));
765 /****************************************************************************
766 * Activation Functions
767 ***************************************************************************/
768 S16 rlcDlActvInit ARGS ((Ent ent,Inst inst,Region region,Reason reason));
770 S16 rlcDlActvTsk ARGS ((Pst *pst, Buffer *mBuf));
772 bool rlcDlUtlIsReestInProgress ARGS ((RlcDlRbCb *rbCb));
774 Void rlcDlUtlResetReestInProgress ARGS ((RlcDlRbCb *rbCb));
776 Void rlcDlUtlResetReestInProgress ARGS (( RlcDlRbCb *rbCb));
778 Void rlcDlUtlSetReestInProgressForAllRBs ARGS ((RlcCb *gCb, RlcDlUeCb
780 Void rlcDlUtlSetReestInProgressForRB ARGS (( RlcCb *gCb, RlcDlRbCb *rbCb));
783 Void rlcUtlUpdateContainedSduLst ARGS ((
785 RlcContSduLst *contSduLst
787 Void rlcUtlUpdateOutStandingSduLst ARGS ((
788 RlcL2MeasDlIpTh *dlIpThPut,
794 Void rlcUtlUpdateBurstSdus ARGS((
797 RlcContSduLst *contSduLst,
802 RlcL2MeasTb * rlcUtlGetCurMeasTb ARGS((
807 S16 rlcUtlSndDlL2MeasNCfm ARGS((RlcCb *gCb,
808 RlcL2MeasReqEvt *measReqEvt,
809 RlcL2MeasCfmEvt *measCfmEvt));
811 S16 rlcUtlSndDlL2MeasCfm ARGS ((RlcCb *gCb, RlcL2MeasEvtCb *measEvtCb));
813 S16 rlcUtlProcHarqInd ARGS (( RlcCb *gCb, RguHarqStatusInd *staInd, RlcDlUeCb *ueCb,
815 Void rlcUtlResetDlL2MeasInRlcRb ARGS ((RlcCb *gCb,
819 S16 RlcMiLkwL2MeasStopCfm ARGS((Pst *pst, uint8_t measType,uint8_t status));
821 S16 rlcUtlValidateIpThL2Meas ARGS((RlcL2MeasReqEvt *measReqEvt,
822 RlcL2MeasCfmEvt *measCfmEvt));
824 S16 rlcFetchLchInfo ARGS ((RlcL2MeasReqEvt *measReqEvt,
825 RlcL2MeasCfmEvt *measCfmEvt,
830 S16 rlcUtlNotifyMacUlIp ARGS ((RlcL2MeasCb *measCb,uint16_t ueIdx, Bool enable,
831 CmLteLcId *lChId, uint8_t *numLCh));
834 uint8_t rlcProcDlData(Pst *pst, RlcDatReqInfo* datReq, Buffer *buf);
835 uint8_t rlcProcCommLcSchedRpt(Pst *pst, SuId suId, RguCStaIndInfo *staInd);
836 uint8_t rlcProcDedLcSchedRpt(Pst *pst, SuId suId, RguDStaIndInfo *staInd);
838 Void rlcUtlFreeDlMem ARGS(( Void));
841 #endif /* __cplusplus */
843 #endif /* __KW_DLX__ */
846 /********************************************************************30**
849 **********************************************************************/