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 /************************************************************************
25 Desc: C source code for Entry point fucntions
29 **********************************************************************/
31 /** @file rg_sch_dbm.c
32 @brief This file contains the APIs exposed for the database handling of the scheduler.
34 static const char* RLOG_MODULE_NAME="MAC";
35 static int RLOG_FILE_ID=230;
36 static int RLOG_MODULE_ID=4096;
37 /* header include files -- defines (.h) */
38 #include "common_def.h"
43 #include "rg_sch_err.h"
44 #include "rg_sch_inf.h"
46 #include "rg_sch_cmn.h"
48 /* header/extern include files (.x) */
52 #include "rgm.x" /* layer management typedefs for MAC */
53 #include "rg_sch_inf.x"
55 #include "rg_sch_cmn.x"
56 #include "rl_interface.h"
57 #include "rl_common.h"
61 PRIVATE S16 rgSCHDbmInitUeCbLst ARGS(( RgSchCellCb *cellCb, U16 numBins));
63 PRIVATE S16 rgSCHDbmInitUeTfuPendLst ARGS(( RgSchCellCb *cellCb, U16 numBins));
65 PRIVATE Void rgSCHDbmInitDedLcLst ARGS((RgSchUeCb *ueCb));
66 PRIVATE Void rgSCHDbmInitCmnLcLst ARGS((RgSchCellCb *cellCb));
68 PRIVATE S16 rgSCHDbmInitSpsUeCbLst ARGS((RgSchCellCb *cellCb,
71 PRIVATE Void rgSCHDbmInitRaCbLst ARGS(( RgSchCellCb *cellCb));
73 PRIVATE Void rgSCHDbmInitRaReqLst ARGS(( RgSchCellCb *cellCb));
75 PRIVATE Void rgSCHDbmInitCrntRgrCfgLst ARGS(( RgSchCellCb *cellCb));
76 PRIVATE Void rgSCHDbmInitPndngRgrCfgLst ARGS(( RgSchCellCb *cellCb));
79 PUBLIC S16 rgSCHDbmPutEmtcRnti ARGS((RgSchCellCb *cellCb,RgSchRntiLnk *rntiLnk));
86 /* forward references */
89 * @brief Handler for Initializing the cell.
93 * Function : rgSCHDbmInitCell
95 * Initializes the lists belonging to the cell.
98 * @param[in] RgSchCellCb *cellCb
104 PUBLIC S16 rgSCHDbmInitCell
109 PUBLIC S16 rgSCHDbmInitCell(cellCb)
115 TRC2(rgSCHDbmInitCell);
117 /* Initialize ue list */
118 if ((ret = rgSCHDbmInitUeCbLst(cellCb, RGSCH_MAX_UE_BIN_PER_CELL)) != ROK)
121 if ((ret = rgSCHDbmInitUeTfuPendLst(cellCb,
122 RGSCH_MAX_UE_BIN_PER_CELL)) != ROK)
127 /* Initialize SPS Ue list */
128 if ((ret = rgSCHDbmInitSpsUeCbLst(cellCb, RGSCH_MAX_UE_BIN_PER_CELL)) != ROK)
130 #endif /* LTEMAC_SPS */
132 /* Initialize BCCH/PCCH logical channels */
133 rgSCHDbmInitCmnLcLst(cellCb);
135 /* Initialize configuration lists */
136 rgSCHDbmInitCrntRgrCfgLst(cellCb);
137 rgSCHDbmInitPndngRgrCfgLst(cellCb);
140 /* Initialize raReq list */
141 rgSCHDbmInitRaReqLst(cellCb);
144 /* Initialize raCb list */
145 rgSCHDbmInitRaCbLst(cellCb);
147 /* Initialize l2mList */
149 cmLListInit(&cellCb->l2mList);
150 #endif /* LTE_L2_MEAS */
154 } /* rgSCHDbmInitCell */
157 * @brief Handler for initializing the ueCbLst under the cellCb.
161 * Function : rgSCHDbmInitUeCbLst
171 PRIVATE S16 rgSCHDbmInitUeCbLst
177 PRIVATE S16 rgSCHDbmInitUeCbLst(cellCb, numBins)
182 RgSchUeCellInfo ueCellInfo;
183 TRC2(rgSCHDbmInitUeCbLst)
185 /* Fix: syed It is better to compute offset dynamically
186 * rather than hardcoding it as 0 */
187 return (cmHashListInit(&cellCb->ueLst, numBins, (U16)((PTR)&(ueCellInfo.ueLstEnt) - (PTR)&ueCellInfo), FALSE,
188 CM_HASH_KEYTYPE_CONID,
189 rgSchCb[cellCb->instIdx].rgSchInit.region,
190 rgSchCb[cellCb->instIdx].rgSchInit.pool));
192 } /* rgSCHDbmInitUeCbLst */
195 * @brief Handler for de-initializing the ueCbLst under the cellCb.
199 * Function : rgSCHDbmDeInitUeCbLst
208 PUBLIC S16 rgSCHDbmDeInitUeCbLst
213 PUBLIC S16 rgSCHDbmDeInitUeCbLst(cellCb)
217 TRC2(rgSCHDbmDeInitUeCbLst)
219 return (cmHashListDeinit(&cellCb->ueLst));
221 } /* rgSCHDbmDeInitUeCbLst */
225 * @brief Handler for initializing the spsUeCbLst under the cellCb.
229 * Function : rgSCHDbmInitSpsUeCbLst
239 PRIVATE S16 rgSCHDbmInitSpsUeCbLst
245 PRIVATE S16 rgSCHDbmInitSpsUeCbLst(cellCb, numBins)
251 TRC2(rgSCHDbmInitSpsUeCbLst)
253 return (cmHashListInit(&cellCb->spsUeLst, numBins, (U16) ((PTR) &(ue.spsUeLstEnt) - (PTR) &ue), FALSE,
254 CM_HASH_KEYTYPE_CONID,
255 rgSchCb[cellCb->instIdx].rgSchInit.region,
256 rgSchCb[cellCb->instIdx].rgSchInit.pool));
258 } /* rgSCHDbmInitSpsUeCbLst */
261 * @brief Handler for de-initializing the spsUeCbLst under the cellCb.
265 * Function : rgSCHDbmDeInitSpsUeCbLst
274 PUBLIC S16 rgSCHDbmDeInitSpsUeCbLst
279 PUBLIC S16 rgSCHDbmDeInitSpsUeCbLst(cellCb)
283 TRC2(rgSCHDbmDeInitSpsUeCbLst)
285 return (cmHashListDeinit(&cellCb->spsUeLst));
287 } /* rgSCHDbmDeInitSpsUeCbLst */
289 #endif /* LTEMAC_SPS */
292 * @brief Handler for inserting the ueCb in to the ueCbLst under the cellCb.
296 * Function : rgSCHDbmInsUeCb
306 PUBLIC S16 rgSCHDbmInsUeCb
312 PUBLIC S16 rgSCHDbmInsUeCb(cellCb, ueCb)
317 RgSchUeCellInfo *ueCellInfo = NULLP;
318 TRC2(rgSCHDbmInsUeCb)
320 ueCellInfo = ueCb->cellInfo[ueCb->cellIdToCellIdxMap[RG_SCH_CELLINDEX(cellCb)]];
322 return (cmHashListInsert(&cellCb->ueLst, (PTR)ueCellInfo,
323 (U8 *)&ueCb->ueId, (U16)sizeof(ueCb->ueId)));
325 } /* rgSCHDbmInsUeCb */
329 * @brief Handler for inserting the ueCb in to the spsUeCbLst under the cellCb.
333 * Function : rgSCHDbmInsSpsUeCb
343 PUBLIC S16 rgSCHDbmInsSpsUeCb
349 PUBLIC S16 rgSCHDbmInsSpsUeCb(cellCb, ueCb)
354 TRC2(rgSCHDbmInsSpsUeCb)
356 return (cmHashListInsert(&cellCb->spsUeLst, (PTR)ueCb,
357 (U8 *)&ueCb->spsRnti, (U16)sizeof(ueCb->spsRnti)));
359 } /* end of rgSCHDbmInsSpsUeCb */
361 #endif /* LTEMAC_SPS */
364 * @brief Handler for accessing the existing ueCb identified by the key ueId
365 * in the ueCbLst under the cellCb.
369 * Function : rgSCHDbmGetUeCb
377 PUBLIC RgSchUeCb* rgSCHDbmGetUeCb
383 PUBLIC RgSchUeCb* rgSCHDbmGetUeCb(cellCb, ueId)
388 RgSchUeCellInfo *ueCellInfo = NULLP;
390 TRC2(rgSCHDbmGetUeCb)
392 cmHashListFind(&cellCb->ueLst, (U8 *)&ueId,
393 sizeof(ueId), 0, (PTR *)&ueCellInfo);
395 return (!ueCellInfo?NULLP:ueCellInfo->ue);
396 } /* rgSCHDbmGetUeCb */
400 * @brief Handler for accessing the existing ueCb identified by the key
401 * spsRnti in the spsUeCbLst under the cellCb.
405 * Function : rgSCHDbmGetSpsUeCb
413 PUBLIC RgSchUeCb* rgSCHDbmGetSpsUeCb
419 PUBLIC RgSchUeCb* rgSCHDbmGetSpsUeCb(cellCb, spsRnti)
424 RgSchUeCb *ueCb = NULLP;
426 TRC2(rgSCHDbmGetSpsUeCb)
428 cmHashListFind(&cellCb->spsUeLst, (U8 *)&spsRnti,
429 sizeof(spsRnti), 0, (PTR *)&ueCb);
431 } /* rgSCHDbmGetSpsUeCb */
435 * @brief Handler for accessing the existing next ueCb in the ueCbLst under the
440 * Function : rgSCHDbmGetNextUeCb
448 PUBLIC RgSchUeCb* rgSCHDbmGetNextUeCb
454 PUBLIC RgSchUeCb* rgSCHDbmGetNextUeCb(cellCb, ueCb)
459 RgSchUeCellInfo *ueCellInfo = NULLP;
460 RgSchUeCellInfo *nextUeCellInfo = NULLP;
462 TRC2(rgSCHDbmGetNextUeCb)
466 ueCellInfo = ueCb->cellInfo[
467 ueCb->cellIdToCellIdxMap[RG_SCH_CELLINDEX(cellCb)]];
470 cmHashListGetNext(&cellCb->ueLst, (PTR) ueCellInfo, (PTR *)&nextUeCellInfo);
471 return (!nextUeCellInfo?NULLP:nextUeCellInfo->ue);
472 } /* rgSCHDbmGetNextUeCb */
476 * @brief Handler for accessing the existing next ueCb stored in the spsUeCbLst
477 * using SPS-Rnti under the cellCb.
481 * Function : rgSCHDbmGetNextSpsUeCb
489 PUBLIC RgSchUeCb* rgSCHDbmGetNextSpsUeCb
495 PUBLIC RgSchUeCb* rgSCHDbmGetNextSpsUeCb(cellCb, ueCb)
500 RgSchUeCb *nextUeCb = NULLP;
502 TRC2(rgSCHDbmGetNextSpsUeCb)
504 cmHashListGetNext(&cellCb->spsUeLst, (PTR) ueCb, (PTR *)&nextUeCb);
506 } /* end of rgSCHDbmGetNextSpsUeCb */
508 #endif /* LTEMAC_SPS */
512 * @brief Handler for Cleaning up L2 Meas related Data in
517 * Function : rgSCHDbmDelL2MUe
527 PUBLIC S16 rgSCHDbmDelL2MUe
533 PUBLIC S16 rgSCHDbmDelL2MUe(cellCb, ueCb)
539 RgSchCmnUlUe *ueUl = RG_SCH_CMN_GET_UL_UE(ueCb, cellCb);
541 TRC2(rgSCHDbmDelL2MUe)
543 ueUl->hqEnt.numBusyHqProcs = 0;
544 /* Clean cell level UE Active Count */
545 for (lcCnt =0; lcCnt < RGSCH_MAX_LC_PER_UE; lcCnt++)
547 if (ueCb->ul.lcCb[lcCnt].isValid)
549 if((ueCb->ul.lcCb[lcCnt].qciCb->ulUeCount) &&
551 (1 << (ueCb->ul.lcCb[lcCnt].qciCb->qci -1))))
553 ueCb->ul.lcCb[lcCnt].qciCb->ulUeCount--;
554 ueCb->ulActiveLCs &= ~(1 <<
555 (ueCb->ul.lcCb[lcCnt].qciCb->qci -1));
559 if (ueCb->dl.lcCb[lcCnt])
561 if (ueCb->qciActiveLCs[ueCb->dl.lcCb[lcCnt]->qciCb->qci])
563 ueCb->dl.lcCb[lcCnt]->qciCb->dlUeCount--;
564 ueCb->qciActiveLCs[ueCb->dl.lcCb[lcCnt]->qciCb->qci] = 0;
570 } /* rgSCHDbmDelL2MUe */
575 * @brief Handler for deleting the existing ueCb from the ueCbLst under the
580 * Function : rgSCHDbmDelUeCb
590 PUBLIC S16 rgSCHDbmDelUeCb
596 PUBLIC S16 rgSCHDbmDelUeCb(cellCb, ueCb)
601 RgSchUeCellInfo *ueCellInfo = NULLP;
602 TRC2(rgSCHDbmDelUeCb)
604 ueCellInfo = ueCb->cellInfo[ueCb->cellIdToCellIdxMap[RG_SCH_CELLINDEX(cellCb)]];
606 return (cmHashListDelete(&cellCb->ueLst, (PTR)ueCellInfo));
607 } /* rgSCHDbmDelUeCb */
611 * @brief Handler for deleting the existing ueCb from the spsUeCbLst under the
616 * Function : rgSCHDbmDelSpsUeCb
626 PUBLIC S16 rgSCHDbmDelSpsUeCb
632 PUBLIC S16 rgSCHDbmDelSpsUeCb(cellCb, ueCb)
637 TRC2(rgSCHDbmDelSpsUeCb)
639 return (cmHashListDelete(&cellCb->spsUeLst, (PTR)ueCb));
640 } /* end of rgSCHDbmDelSpsUeCb */
642 #endif /* LTEMAC_SPS */
645 * @brief Handler for Initializing the UE.
649 * Function : rgSCHDbmInitUe
651 * Initializes the lists belonging to the UE.
654 * @param[in] RgSchUeCb *ueCb
660 PUBLIC S16 rgSCHDbmInitUe
665 PUBLIC S16 rgSCHDbmInitUe(ueCb)
671 TRC2(rgSCHDbmInitUe);
673 /* Initialize Dedicated logical channels */
674 rgSCHDbmInitDedLcLst(ueCb);
677 } /* rgSCHDbmInitUe */
680 * @brief Handler for Initializing the dedicated logical channels.
684 * Function : rgSCHDbmInitDedLcLst
686 * Initializes dedicated logical channels.
688 * @param[in] RgSchUeCb *ueCb
692 PRIVATE Void rgSCHDbmInitDedLcLst
697 PRIVATE Void rgSCHDbmInitDedLcLst(ueCb)
703 TRC2(rgSCHDbmInitDedLcLst);
705 for (idx = 0; idx < RGSCH_MAX_LC_PER_UE; ++idx)
707 /* Set Dedicated LCs as not configured */
708 ueCb->ul.lcCb[idx].isValid = FALSE;
709 ueCb->dl.lcCb[idx] = NULLP;
712 /* Stack Crash problems for TRACE5 Changes. Added the return below */
716 } /* rgSCHDbmInitDedLcLst */
719 * @brief Handler for Initializing the common logical channel list of the cell.
723 * Function : rgSCHDbmInitCmnLcLst
725 * Initializes following common logical channels belonging to the cell.
730 * @param[in] RgSchCellCb *cellCb
734 PRIVATE Void rgSCHDbmInitCmnLcLst
739 PRIVATE Void rgSCHDbmInitCmnLcLst(cellCb)
745 TRC2(rgSCHDbmInitCmnLcLst);
747 for (idx = 0; idx < RGSCH_MAX_CMN_LC_CB; idx++)
749 cellCb->cmnLcCb[idx].lcId = RGSCH_INVALID_LC_ID;
752 /* Stack Crash problems for TRACE5 Changes. Added the return below */
755 } /* rgSCHDbmInitCmnLcLst */
758 * @brief Handler for inserting dedicated DL logical channel.
762 * Function : rgSCHDbmInsDlDedLcCb
764 * @param[in] RgSchUeCb *ueCb
765 * @param[in] RgSchDlLcCb* dlLcCb
769 PUBLIC Void rgSCHDbmInsDlDedLcCb
775 PUBLIC Void rgSCHDbmInsDlDedLcCb(ueCb, dlLcCb)
780 TRC2(rgSCHDbmInsDlDedLcCb);
782 ueCb->dl.lcCb[dlLcCb->lcId - 1] = dlLcCb;
784 } /* rgSCHDbmInsDlDedLcCb */
787 * @brief Handler for deleting dedicated DL logical channel.
791 * Function : rgSCHDbmDelDlDedLcCb
793 * @param[in] RgSchUeCb *ueCb
794 * @param[in] RgSchDlLcCb* dlLcCb
798 PUBLIC Void rgSCHDbmDelDlDedLcCb
804 PUBLIC Void rgSCHDbmDelDlDedLcCb(ueCb, dlLcCb)
809 TRC2(rgSCHDbmDelDlDedLcCb);
812 /* Clean cell level UE Active Count */
814 if (ueCb->dl.lcCb[dlLcCb->lcId - 1])
817 && (ueCb->qciActiveLCs[dlLcCb->qciCb->qci]))
819 ueCb->qciActiveLCs[dlLcCb->qciCb->qci]--;
820 if (!(ueCb->qciActiveLCs[dlLcCb->qciCb->qci]))
822 dlLcCb->qciCb->dlUeCount--;
826 #endif /* LTE_L2_MEAS */
828 ueCb->dl.lcCb[dlLcCb->lcId - 1] = NULLP;
830 /* Stack Crash problems for TRACE5 Changes. Added the return below */
833 } /* rgSCHDbmDelDlDedLcCb */
836 * @brief Handler for accessing the existing dl dedicated lcCb at idx in the
837 * lcCbLst of the ueCb.
841 * Function : rgSCHDbmGetDlDedLcCb
845 * @return RgSchDlLcCb*
848 PUBLIC RgSchDlLcCb* rgSCHDbmGetDlDedLcCb
854 PUBLIC RgSchDlLcCb* rgSCHDbmGetDlDedLcCb(ueCb, idx)
859 TRC2(rgSCHDbmGetDlDedLcCb);
861 if (idx < RGSCH_DEDLC_MIN_LCID || idx > RGSCH_DEDLC_MAX_LCID)
865 return (ueCb->dl.lcCb[idx-1]);
867 } /* rgSCHDbmGetDlDedLcCb */
870 * @brief Handler for accessing the existing first dl dedicated lcCb at idx
871 * in the lcCbLst of the ueCb.
875 * Function : rgSCHDbmGetFirstDlDedLcCb
879 * @return RgSchDlLcCb*
882 PUBLIC RgSchDlLcCb* rgSCHDbmGetFirstDlDedLcCb
887 PUBLIC RgSchDlLcCb* rgSCHDbmGetFirstDlDedLcCb(ueCb)
892 TRC2(rgSCHDbmGetFirstDlDedLcCb)
894 for(idx = 0; idx < RGSCH_DEDLC_MAX_LCID; idx++)
896 if(ueCb->dl.lcCb[idx])
898 return (ueCb->dl.lcCb[idx]);
902 } /* rgSCHDbmGetFirstDlDedLcCb */
904 * @brief Handler for accessing the existing next dl dedicated lcCb at idx
905 * in the lcCbLst of the ueCb.
909 * Function : rgSCHDbmGetNextDlDedLcCb
914 * @return RgSchDlLcCb*
917 PUBLIC RgSchDlLcCb* rgSCHDbmGetNextDlDedLcCb
923 PUBLIC RgSchDlLcCb* rgSCHDbmGetNextDlDedLcCb(ueCb, lcCb)
929 TRC2(rgSCHDbmGetNextDlDedLcCb);
933 return (rgSCHDbmGetFirstDlDedLcCb(ueCb));
936 for(idx = lcCb->lcId; idx < RGSCH_DEDLC_MAX_LCID; idx++)
938 if(ueCb->dl.lcCb[idx])
940 return (ueCb->dl.lcCb[idx]);
944 } /* rgSCHDbmGetNextDlDedLcCb */
947 * @brief Handler for accessing the existing dl common lcCb identified by the key lcId
948 * in the lcCbLst of the ueCb.
952 * Function : rgSCHDbmGetCmnLcCb
957 * @return RgSchClcDlLcCb*
960 PUBLIC RgSchClcDlLcCb* rgSCHDbmGetCmnLcCb
966 PUBLIC RgSchClcDlLcCb* rgSCHDbmGetCmnLcCb(cellCb, lcId)
973 TRC2(rgSCHDbmGetCmnLcCb)
975 for(idx = 0; idx < RGSCH_MAX_CMN_LC_CB; idx++)
977 if(cellCb->cmnLcCb[idx].lcId == lcId)
979 return (&(cellCb->cmnLcCb[idx]));
983 } /* rgSCHDbmGetCmnLcCb */
986 * @brief Handler for accessing the existing BCCH mapped on to BCH in the
987 * lcCbLst of the ueCb.
991 * Function : rgSCHDbmGetBcchOnBch
995 * @return RgSchClcDlLcCb*
998 PUBLIC RgSchClcDlLcCb* rgSCHDbmGetBcchOnBch
1003 PUBLIC RgSchClcDlLcCb* rgSCHDbmGetBcchOnBch(cellCb)
1004 RgSchCellCb *cellCb;
1007 TRC2(rgSCHDbmGetBcchOnBch)
1009 if(cellCb->cmnLcCb[RGSCH_BCCH_BCH_IDX].lcId != RGSCH_INVALID_LC_ID)
1011 return (&(cellCb->cmnLcCb[RGSCH_BCCH_BCH_IDX]));
1014 } /* rgSCHDbmGetBcchOnBch */
1017 * @brief Handler for accessing the existing BCCH mapped on to DLSCH in the
1018 * lcCbLst of the ueCb.
1022 * Function : rgSCHDbmGetFirstBcchOnDlsch
1025 * @param[in] *cellCb
1026 * @return RgSchClcDlLcCb*
1029 PUBLIC RgSchClcDlLcCb* rgSCHDbmGetFirstBcchOnDlsch
1034 PUBLIC RgSchClcDlLcCb* rgSCHDbmGetFirstBcchOnDlsch(cellCb)
1035 RgSchCellCb *cellCb;
1038 TRC2(rgSCHDbmGetFirstBcchOnDlsch)
1040 if(cellCb->cmnLcCb[RGSCH_BCCH_DLSCH_IDX1].lcId != RGSCH_INVALID_LC_ID)
1042 return (&(cellCb->cmnLcCb[RGSCH_BCCH_DLSCH_IDX1]));
1045 } /* rgSCHDbmGetFirstBcchOnDlsch */
1048 * @brief Handler for accessing the existing BCCH mapped on to DLSCH in the
1049 * lcCbLst of the ueCb.
1053 * Function : rgSCHDbmGetSecondBcchOnDlsch
1056 * @param[in] *cellCb
1057 * @return RgSchClcDlLcCb*
1060 PUBLIC RgSchClcDlLcCb* rgSCHDbmGetSecondBcchOnDlsch
1065 PUBLIC RgSchClcDlLcCb* rgSCHDbmGetSecondBcchOnDlsch(cellCb)
1066 RgSchCellCb *cellCb;
1069 TRC2(rgSCHDbmGetSecondBcchOnDlsch)
1071 if(cellCb->cmnLcCb[RGSCH_BCCH_DLSCH_IDX2].lcId != RGSCH_INVALID_LC_ID)
1073 return (&(cellCb->cmnLcCb[RGSCH_BCCH_DLSCH_IDX2]));
1076 } /* rgSCHDbmGetSecondBcchOnDlsch */
1079 * @brief Handler for accessing the existing PCCH in the lcCbLst of the ueCb.
1083 * Function : rgSCHDbmGetPcch
1086 * @param[in] *cellCb
1087 * @return RgSchClcDlLcCb*
1090 PUBLIC RgSchClcDlLcCb* rgSCHDbmGetPcch
1095 PUBLIC RgSchClcDlLcCb* rgSCHDbmGetPcch(cellCb)
1096 RgSchCellCb *cellCb;
1099 TRC2(rgSCHDbmGetPcch)
1101 if(cellCb->cmnLcCb[RGSCH_PCCH_IDX].lcId != RGSCH_INVALID_LC_ID)
1103 return (&(cellCb->cmnLcCb[RGSCH_PCCH_IDX]));
1106 } /* rgSCHDbmGetPcch */
1109 * @brief Handler for inserting the BCCH mapped on to BCH in the
1110 * lcCbLst of the ueCb.
1114 * Function : rgSCHDbmInsBcchOnBch
1117 * @param[in] *cellCb
1121 PUBLIC Void rgSCHDbmInsBcchOnBch
1123 RgSchCellCb *cellCb,
1124 RgSchClcDlLcCb *cmnDlLcCb
1127 PUBLIC Void rgSCHDbmInsBcchOnBch(cellCb, cmnDlLcCb)
1128 RgSchCellCb *cellCb;
1129 RgSchClcDlLcCb *cmnDlLcCb;
1132 TRC2(rgSCHDbmInsBcchOnBch)
1134 cellCb->cmnLcCb[RGSCH_BCCH_BCH_IDX].lcId = cmnDlLcCb->lcId;
1135 cellCb->cmnLcCb[RGSCH_BCCH_BCH_IDX].boLst = cmnDlLcCb->boLst;
1137 /* Stack Crash problems for TRACE5 Changes. Added the return below */
1140 } /* rgSCHDbmInsBcchOnBch */
1143 * @brief Handler for inserting the BCCH mapped on to DLSCH in the
1144 * lcCbLst of the ueCb.
1148 * Function : rgSCHDbmInsBcchOnDlsch
1151 * @param[in] *cellCb
1155 PUBLIC Void rgSCHDbmInsBcchOnDlsch
1157 RgSchCellCb *cellCb,
1158 RgSchClcDlLcCb *cmnDlLcCb
1161 PUBLIC Void rgSCHDbmInsBcchOnDlsch(cellCb, cmnDlLcCb)
1162 RgSchCellCb *cellCb;
1163 RgSchClcDlLcCb *cmnDlLcCb;
1166 TRC2(rgSCHDbmInsBcchOnDlsch)
1168 if(cellCb->cmnLcCb[RGSCH_BCCH_DLSCH_IDX1].lcId == RGSCH_INVALID_LC_ID)
1170 cellCb->cmnLcCb[RGSCH_BCCH_DLSCH_IDX1].lcId = cmnDlLcCb->lcId;
1171 cellCb->cmnLcCb[RGSCH_BCCH_DLSCH_IDX1].boLst = cmnDlLcCb->boLst;
1172 cellCb->cmnLcCb[RGSCH_BCCH_DLSCH_IDX1].si = FALSE;
1174 else if(cellCb->cmnLcCb[RGSCH_BCCH_DLSCH_IDX2].lcId == RGSCH_INVALID_LC_ID)
1176 cellCb->cmnLcCb[RGSCH_BCCH_DLSCH_IDX2].lcId = cmnDlLcCb->lcId;
1177 cellCb->cmnLcCb[RGSCH_BCCH_DLSCH_IDX2].boLst = cmnDlLcCb->boLst;
1178 cellCb->cmnLcCb[RGSCH_BCCH_DLSCH_IDX2].si = TRUE;
1181 /* Stack Crash problems for TRACE5 Changes. Added the return below */
1184 } /* rgSCHDbmInsBcchOnDlsch */
1188 * @brief Handler for inserting the PCCH in the lcCbLst of the ueCb.
1192 * Function : rgSCHDbmInsPcch
1195 * @param[in] *cellCb
1199 PUBLIC Void rgSCHDbmInsPcch
1201 RgSchCellCb *cellCb,
1202 RgSchClcDlLcCb *cmnDlLcCb
1205 PUBLIC Void rgSCHDbmInsPcch(cellCb, cmnDlLcCb)
1206 RgSchCellCb *cellCb;
1207 RgSchClcDlLcCb *cmnDlLcCb;
1210 TRC2(rgSCHDbmInsPcch)
1212 cellCb->cmnLcCb[RGSCH_PCCH_IDX].lcId = cmnDlLcCb->lcId;
1213 cellCb->cmnLcCb[RGSCH_PCCH_IDX].boLst = cmnDlLcCb->boLst;
1215 /* Stack Crash problems for TRACE5 Changes. Added the return below */
1218 } /* rgSCHDbmInsPcch */
1221 * @brief Handler for initializing the boLst.
1225 * Function : rgSCHDbmInitCmnLcBoLst
1228 * @param[in] *cmnDlLcCb
1232 PUBLIC Void rgSCHDbmInitCmnLcBoLst
1234 RgSchClcDlLcCb *cmnDlLcCb
1237 PUBLIC Void rgSCHDbmInitCmnLcBoLst(cmnDlLcCb)
1238 RgSchClcDlLcCb *cmnDlLcCb;
1241 TRC2(rgSCHDbmInitCmnLcBoLst)
1243 cmLListInit(&cmnDlLcCb->boLst);
1245 } /* rgSCHDbmInitCmnLcBoLst */
1248 * @brief Handler for inserting the bo report in to the boLst.
1252 * Function : rgSCHDbmInsCmnLcBoRpt
1255 * @param[in] *cmnDlLcCb
1260 PUBLIC Void rgSCHDbmInsCmnLcBoRpt
1262 RgSchClcDlLcCb *cmnDlLcCb,
1263 RgSchClcBoRpt *cmnBoRpt
1266 PUBLIC Void rgSCHDbmInsCmnLcBoRpt(cmnDlLcCb, cmnBoRpt)
1267 RgSchClcDlLcCb *cmnDlLcCb;
1268 RgSchClcBoRpt *cmnBoRpt;
1271 TRC2(rgSCHDbmInsCmnLcBoRpt)
1273 cmnBoRpt->boLstEnt.next = NULLP;
1274 cmnBoRpt->boLstEnt.prev = NULLP;
1275 cmnBoRpt->boLstEnt.node = (PTR)cmnBoRpt;
1276 cmLListAdd2Tail(&cmnDlLcCb->boLst, &cmnBoRpt->boLstEnt);
1278 } /* rgSCHDbmInsCmnLcBoRpt */
1282 * @brief Handler for initializing the raCbLst.
1286 * Function : rgSCHDbmInitRaCbLst
1289 * @param[in] *cellCb
1293 PRIVATE Void rgSCHDbmInitRaCbLst
1298 PRIVATE Void rgSCHDbmInitRaCbLst(cellCb)
1299 RgSchCellCb *cellCb;
1302 TRC2(rgSCHDbmInitRaCbLst)
1304 cmLListInit(&cellCb->raInfo.raCbLst);
1306 } /* rgSCHDbmInitRaCbLst */
1310 * @brief Handler for accessing the existing raCb in the raCbLst.
1314 * Function : rgSCHDbmGetRaCb
1317 * @param[in] *cellCb
1319 * @return RgSchRaCb*
1322 PUBLIC RgSchRaCb* rgSCHDbmGetRaCb
1324 RgSchCellCb *cellCb,
1328 PUBLIC RgSchRaCb* rgSCHDbmGetRaCb(cellCb, key)
1329 RgSchCellCb *cellCb;
1335 TRC2(rgSCHDbmGetRaCb)
1337 CM_LLIST_FIRST_NODE(&cellCb->raInfo.raCbLst,tmpNode);
1340 if(((RgSchRaCb *)tmpNode->node)->tmpCrnti == key)
1342 return ((RgSchRaCb *)(tmpNode->node));
1344 CM_LLIST_NEXT_NODE(&cellCb->raInfo.raCbLst,tmpNode);
1347 } /* rgSCHDbmGetRaCb */
1351 * @brief Handler for initializing the raReqLst.
1355 * Function : rgSCHDbmInitRaReqLst
1358 * @param[in] *cellCb
1362 PRIVATE Void rgSCHDbmInitRaReqLst
1367 PRIVATE Void rgSCHDbmInitRaReqLst(cellCb)
1368 RgSchCellCb *cellCb;
1373 TRC2(rgSCHDbmInitRaReqLst)
1375 /* ccpu00133557- Memory Leak Fix- initializing for the all nodes
1377 for(idx = 0; idx < RGSCH_RAREQ_ARRAY_SIZE; idx++)
1379 cmLListInit(&cellCb->raInfo.raReqLst[idx]);
1382 } /* rgSCHDbmInitRaReqLst */
1386 * @brief Handler for initializing the crnt rgr cfgLst.
1390 * Function : rgSCHDbmInitCrntRgrCfgLst
1393 * @param[in] *cellCb
1397 PRIVATE Void rgSCHDbmInitCrntRgrCfgLst
1402 PRIVATE Void rgSCHDbmInitCrntRgrCfgLst(cellCb)
1403 RgSchCellCb *cellCb;
1406 TRC2(rgSCHDbmInitCrntRgrCfgLst)
1408 cmLListInit(&cellCb->rgCfgInfo.crntRgrCfgLst);
1410 } /* rgSCHDbmInitCrntRgrCfgLst */
1413 * @brief Handler for initializing the pndng rgr cfgLst.
1417 * Function : rgSCHDbmInitPndngRgrCfgLst
1420 * @param[in] *cellCb
1424 PRIVATE Void rgSCHDbmInitPndngRgrCfgLst
1429 PRIVATE Void rgSCHDbmInitPndngRgrCfgLst(cellCb)
1430 RgSchCellCb *cellCb;
1433 TRC2(rgSCHDbmInitPndngRgrCfgLst)
1435 cmLListInit(&cellCb->rgCfgInfo.pndngRgrCfgLst);
1437 } /* rgSCHDbmInitPndngRgrCfgLst */
1440 * @brief Handler for inserting the cfgElem in to the crntRgrCfgLst.
1444 * Function : rgSCHDbmInsCrntRgrCfgElem
1447 * @param[in] *cellCb
1448 * @param[in] *cfgElem
1452 PUBLIC Void rgSCHDbmInsCrntRgrCfgElem
1454 RgSchCellCb *cellCb,
1455 RgSchCfgElem *cfgElem
1458 PUBLIC Void rgSCHDbmInsCrntRgrCfgElem(cellCb, cfgElem)
1459 RgSchCellCb *cellCb;
1460 RgSchCfgElem *cfgElem;
1463 TRC2(rgSCHDbmInsCrntRgrCfgElem)
1465 cfgElem->cfgReqLstEnt.next = NULLP;
1466 cfgElem->cfgReqLstEnt.prev = NULLP;
1467 cmLListAdd2Tail(&cellCb->rgCfgInfo.crntRgrCfgLst, &cfgElem->cfgReqLstEnt);
1469 } /* rgSCHDbmInsCrntRgrCfgElem */
1472 * @brief Handler for inserting the cfgElem in to the pndngRgrCfgLst.
1476 * Function : rgSCHDbmInsPndngRgrCfgElem
1479 * @param[in] *cellCb
1480 * @param[in] *cfgElem
1484 PUBLIC Void rgSCHDbmInsPndngRgrCfgElem
1486 RgSchCellCb *cellCb,
1487 RgSchCfgElem *cfgElem
1490 PUBLIC Void rgSCHDbmInsPndngRgrCfgElem(cellCb, cfgElem)
1491 RgSchCellCb *cellCb;
1492 RgSchCfgElem *cfgElem;
1495 TRC2(rgSCHDbmInsPndngRgrCfgElem)
1497 cfgElem->cfgReqLstEnt.next = NULLP;
1498 cfgElem->cfgReqLstEnt.prev = NULLP;
1499 cfgElem->cfgReqLstEnt.node = (PTR)cfgElem;
1500 cmLListAdd2Tail(&cellCb->rgCfgInfo.pndngRgrCfgLst, &cfgElem->cfgReqLstEnt);
1502 } /* rgSCHDbmInsPndngRgrCfgElem */
1505 * @brief Handler for accessing the existing cfgElem in the crntRgrCfgLst.
1509 * Function : rgSCHDbmGetNextCrntRgrCfgElem
1512 * @param[in] *cellCb
1513 * @param[in] *cfgElem
1514 * @return RgSchCfgElem*
1517 PUBLIC RgSchCfgElem* rgSCHDbmGetNextCrntRgrCfgElem
1519 RgSchCellCb *cellCb,
1520 RgSchCfgElem *cfgElem
1523 PUBLIC RgSchCfgElem* rgSCHDbmGetNextCrntRgrCfgElem(cellCb, cfgElem)
1524 RgSchCellCb *cellCb;
1525 RgSchCfgElem *cfgElem;
1528 TRC2(rgSCHDbmGetNextCrntRgrCfgElem)
1532 return ( cellCb->rgCfgInfo.crntRgrCfgLst.first ?
1533 (RgSchCfgElem *)(cellCb->rgCfgInfo.crntRgrCfgLst.first->node) : NULLP );
1535 return ( cfgElem->cfgReqLstEnt.next ?
1536 (RgSchCfgElem *)(cfgElem->cfgReqLstEnt.next->node) : NULLP );
1537 } /* rgSCHDbmGetNextCrntRgrCfgElem */
1540 * @brief Handler for accessing the existing cfgElem in the pndngRgrCfgLst.
1544 * Function : rgSCHDbmGetNextPndngRgrCfgElem
1547 * @param[in] *cellCb
1548 * @param[in] *cfgElem
1549 * @return RgSchCfgElem*
1552 PUBLIC RgSchCfgElem* rgSCHDbmGetNextPndngRgrCfgElem
1554 RgSchCellCb *cellCb,
1555 RgSchCfgElem *cfgElem
1558 PUBLIC RgSchCfgElem* rgSCHDbmGetNextPndngRgrCfgElem(cellCb, cfgElem)
1559 RgSchCellCb *cellCb;
1560 RgSchCfgElem *cfgElem;
1563 TRC2(rgSCHDbmGetNextPndngRgrCfgElem)
1567 return ( cellCb->rgCfgInfo.pndngRgrCfgLst.first ?
1568 (RgSchCfgElem *)(cellCb->rgCfgInfo.pndngRgrCfgLst.first->node) : NULLP );
1570 return ( cfgElem->cfgReqLstEnt.next ?
1571 (RgSchCfgElem *)(cfgElem->cfgReqLstEnt.next->node) : NULLP );
1572 } /* rgSCHDbmGetNextPndngRgrCfgElem */
1575 * @brief Handler for extracting the existing cfgElem from the pndngRgrCfgLst.
1579 * Function : rgSCHDbmGetPndngRgrCfgElemByKey
1582 * @param[in] *cellCb
1584 * @return RgSchCfgElem*
1587 PUBLIC RgSchCfgElem* rgSCHDbmGetPndngRgrCfgElemByKey
1589 RgSchCellCb *cellCb,
1593 PUBLIC RgSchCfgElem* rgSCHDbmGetPndngRgrCfgElemByKey(cellCb, key)
1594 RgSchCellCb *cellCb;
1595 CmLteTimingInfo key;
1600 TRC2(rgSCHDbmGetPndngRgrCfgElemByKey)
1602 CM_LLIST_FIRST_NODE(&cellCb->rgCfgInfo.pndngRgrCfgLst,tmpNode);
1605 if((((RgSchCfgElem *)tmpNode->node)->actvTime.sfn == key.sfn) &&
1606 (((RgSchCfgElem *)tmpNode->node)->actvTime.slot == key.slot))
1608 return ((RgSchCfgElem *)(tmpNode->node));
1610 CM_LLIST_NEXT_NODE(&cellCb->rgCfgInfo.pndngRgrCfgLst,tmpNode);
1613 } /* rgSCHDbmGetPndngRgrCfgElemByKey */
1616 * @brief Handler for deleting the existing cfgElem from the crntRgrCfgLst.
1620 * Function : rgSCHDbmDelCrntRgrCfgElem
1623 * @param[in] *cellCb
1624 * @param[in] *cfgElem
1625 * @return RgSchCfgElem*
1628 PUBLIC RgSchCfgElem* rgSCHDbmDelCrntRgrCfgElem
1630 RgSchCellCb *cellCb,
1631 RgSchCfgElem *cfgElem
1634 PUBLIC RgSchCfgElem* rgSCHDbmDelCrntRgrCfgElem(cellCb, cfgElem)
1635 RgSchCellCb *cellCb;
1636 RgSchCfgElem *cfgElem;
1639 TRC2(rgSCHDbmDelCrntRgrCfgElem)
1641 if(cmLListDelFrm(&cellCb->rgCfgInfo.crntRgrCfgLst,&cfgElem->cfgReqLstEnt))
1643 return ((RgSchCfgElem *)(cfgElem->cfgReqLstEnt.node));
1646 } /* rgSCHDbmDelCrntRgrCfgElem */
1649 * @brief Handler for deleting the existing cfgElem from the pndngRgrCfgLst.
1653 * Function : rgSCHDbmDelPndngRgrCfgElem
1656 * @param[in] *cellCb
1657 * @param[in] *cfgElem
1658 * @return RgSchCfgElem*
1661 PUBLIC RgSchCfgElem* rgSCHDbmDelPndngRgrCfgElem
1663 RgSchCellCb *cellCb,
1664 RgSchCfgElem *cfgElem
1667 PUBLIC RgSchCfgElem* rgSCHDbmDelPndngRgrCfgElem(cellCb, cfgElem)
1668 RgSchCellCb *cellCb;
1669 RgSchCfgElem *cfgElem;
1672 TRC2(rgSCHDbmDelPndngRgrCfgElem)
1674 if(cmLListDelFrm(&cellCb->rgCfgInfo.pndngRgrCfgLst,&cfgElem->cfgReqLstEnt))
1676 return ((RgSchCfgElem *)(cfgElem->cfgReqLstEnt.node));
1679 } /* rgSCHDbmDelPndngRgrCfgElem */
1682 * @brief Handler for initializing the rntiDb.
1686 * Function : rgSCHDbmRntiDbInit
1689 * @param[in] *cellCb
1690 * @param[in] rntiStart
1691 * @param[in] maxRntis
1697 PUBLIC S16 rgSCHDbmRntiDbInit
1699 RgSchCellCb *cellCb,
1704 PUBLIC S16 rgSCHDbmRntiDbInit(cellCb, rntiStart, maxRntis)
1705 RgSchCellCb *cellCb;
1711 RgSchRntiLnk *rntiPool;
1713 TRC2(rgSCHDbmRntiDbInit)
1715 /* Fix for Change Request ccpu00099150 */
1716 if(rgSCHUtlAllocSBuf(cellCb->instIdx,
1717 (Data **)&cellCb->rntiDb.rntiPool,maxRntis*sizeof(RgSchRntiLnk)) != ROK)
1721 cellCb->rntiDb.rntiStart = rntiStart;
1722 cellCb->rntiDb.maxRntis = maxRntis;
1724 cellCb->rntiDb.count = maxRntis;
1727 rntiPool = cellCb->rntiDb.rntiPool;
1730 rntiPool[0].rnti = rnti;
1731 rntiPool[0].prv = NULLP;
1732 rntiPool[0].nxt = NULLP;
1733 cellCb->rntiDb.lastRnti = &rntiPool[0];
1738 rntiPool[0].rnti = rnti++;
1739 rntiPool[0].prv = NULLP;
1740 rntiPool[0].nxt = &rntiPool[1];
1741 for (idx = 1; idx < maxRntis - 1; ++idx)
1743 rntiPool[idx].rnti = rnti++;
1744 rntiPool[idx].prv = &rntiPool[idx-1];
1745 rntiPool[idx].nxt = &rntiPool[idx+1];
1747 rntiPool[idx].rnti = rnti++;
1748 rntiPool[idx].prv = &rntiPool[idx-1];
1749 rntiPool[idx].nxt = NULLP;
1750 cellCb->rntiDb.lastRnti = &rntiPool[idx];
1752 cellCb->rntiDb.freeRnti = &rntiPool[0];
1754 } /* rgSCHDbmRntiDbInit */
1757 * @brief Handler for de-initializing the rntiDb.
1761 * Function : rgSCHDbmRntiDbDeInit
1764 * @param[in] *cellCb
1768 PUBLIC Void rgSCHDbmRntiDbDeInit
1773 PUBLIC Void rgSCHDbmRntiDbDeInit(cellCb)
1774 RgSchCellCb *cellCb;
1777 TRC2(rgSCHDbmRntiDbDeInit)
1779 /* ccpu00117052 - MOD - Passing double pointer
1780 for proper NULLP assignment*/
1781 rgSCHUtlFreeSBuf(cellCb->instIdx, (Data **)(&(cellCb->rntiDb.rntiPool)),
1782 cellCb->rntiDb.maxRntis*sizeof(RgSchRntiLnk));
1783 cellCb->rntiDb.maxRntis = 0;
1784 cellCb->rntiDb.freeRnti = NULLP;
1785 cellCb->rntiDb.lastRnti = NULLP;
1786 cmLListInit(&cellCb->rntiDb.rntiGuardPool);
1788 /* Stack Crash problems for TRACE5 Changes. Added the return below */
1791 } /* rgSCHDbmRntiDbDeInit */
1794 * @brief Handler for accessing the free RNTI.
1798 * Function : rgSCHDbmGetRnti
1801 * @param[in] *cellCb
1802 * @return RgSchRntiLnk*
1805 PUBLIC RgSchRntiLnk* rgSCHDbmGetRnti
1810 PUBLIC RgSchRntiLnk* rgSCHDbmGetRnti(cellCb)
1811 RgSchCellCb *cellCb;
1814 RgSchRntiLnk *rntiLnk;
1816 TRC2(rgSCHDbmGetRnti)
1818 if (!(cellCb->rntiDb.freeRnti))
1820 RLOG_ARG1(L_ERROR,DBG_CELLID,cellCb->cellId,"RNTI exhausted count:%d",
1821 cellCb->rntiDb.count);
1825 rntiLnk = cellCb->rntiDb.freeRnti;
1826 cellCb->rntiDb.freeRnti = rntiLnk->nxt;
1828 /* setting prv and nxt to NULLP may not be needed */
1829 rntiLnk->prv = NULLP;
1830 rntiLnk->nxt = NULLP;
1832 if (cellCb->rntiDb.freeRnti != NULLP)
1834 cellCb->rntiDb.freeRnti->prv = NULLP;
1838 cellCb->rntiDb.lastRnti = NULLP;
1841 cellCb->rntiDb.count--;
1843 printf("rgSCHDbmGetRnti::rntiLnk->rnti %u\n",rntiLnk->rnti);
1845 } /* rgSCHDbmGetRnti */
1848 * @brief Handler for releasing the RNTI.
1852 * Function : rgSCHDbmRlsRnti
1855 * @param[in] *cellCb
1856 * @param[in] rntiLnk
1860 PUBLIC Void rgSCHDbmRlsRnti
1862 RgSchCellCb *cellCb,
1863 RgSchRntiLnk *rntiLnk
1866 PUBLIC Void rgSCHDbmRlsRnti(cellCb, rntiLnk)
1867 RgSchCellCb *cellCb;
1868 RgSchRntiLnk *rntiLnk;
1871 TRC2(rgSCHDbmRlsRnti)
1873 if(ROK==rgSCHDbmPutEmtcRnti(cellCb,rntiLnk))
1878 rntiLnk->nxt = NULLP;
1879 if (cellCb->rntiDb.lastRnti)
1881 cellCb->rntiDb.lastRnti->nxt = rntiLnk;
1882 rntiLnk->prv = cellCb->rntiDb.lastRnti;
1886 rntiLnk->prv = NULLP;
1887 cellCb->rntiDb.freeRnti = rntiLnk;
1889 cellCb->rntiDb.lastRnti = rntiLnk;
1891 cellCb->rntiDb.count++;
1893 /* Stack Crash problems for TRACE5 Changes. Added the return below */
1896 } /* rgSCHDbmRlsRnti */
1900 * @brief Handler for initializing the ueTfuPendLst under the cellCb.
1904 * Function : rgSCHDbmInitUeTfuPendLst
1907 * @param[in] *cellCb
1908 * @param[in] numBins
1914 PRIVATE S16 rgSCHDbmInitUeTfuPendLst
1916 RgSchCellCb *cellCb,
1920 PRIVATE S16 rgSCHDbmInitUeTfuPendLst(cellCb, numBins)
1921 RgSchCellCb *cellCb;
1925 RgSchUePucchRecpInfo pucchInfo;
1926 TRC2(rgSCHDbmInitUeTfuPendLst)
1928 /* Fix: syed It is better to compute offset dynamically
1929 * rather than hardcoding it as 0 */
1930 if(cmHashListInit(&cellCb->ueTfuPendLst, numBins, (U16)((PTR)&(pucchInfo.hashLstEnt) - (PTR)&pucchInfo), FALSE,
1931 CM_HASH_KEYTYPE_CONID,
1932 rgSchCb[cellCb->instIdx].rgSchInit.region,
1933 rgSchCb[cellCb->instIdx].rgSchInit.pool) != ROK)
1940 } /* rgSCHDbmInitUeTfuPendLst */
1943 * @brief Handler for de-initializing the ueTfuPendLst under the cellCb.
1947 * Function : rgSCHDbmDeInitUeTfuPendLst
1950 * @param[in] *cellCb
1956 PUBLIC S16 rgSCHDbmDeInitUeTfuPendLst
1961 PUBLIC S16 rgSCHDbmDeInitUeTfuPendLst(cellCb)
1962 RgSchCellCb *cellCb;
1965 TRC2(rgSCHDbmDeInitUeTfuPendLst)
1967 cmHashListDeinit(&cellCb->ueTfuPendLst);
1970 } /* rgSCHDbmDeInitUeTfuPendLst */
1973 /**********************************************************************
1976 **********************************************************************/