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 INF Interface Module
29 **********************************************************************/
32 @brief This file contains the definitions for Upper Interface(RGR/CRG/RGU)
33 primitives that are invoked from MAC to its service users.
34 Portable functions corresponding to these primitives are also defined.
36 /* header include files (.h) */
37 #include "envopt.h" /* environment options */
38 #include "envdep.h" /* environment dependent */
39 #include "envind.h" /* environment independent */
40 #include "gen.h" /* general */
41 #include "ssi.h" /* system services */
42 #include "cm_tkns.h" /* Common Token Defines */
43 #include "cm_llist.h" /* Common Link List Defines */
44 #include "cm_hash.h" /* Common Hash List Defines */
45 #include "cm_lte.h" /* Common LTE Defines */
46 #include "rg_env.h" /* MAC Environment Defines */
47 #include "crg.h" /* CRG Interface defines */
48 #include "rgr.h" /* RGR Interface defines */
49 #include "rgu.h" /* RGU Interface defines */
50 #include "cm_mblk.h" /* memory management */
51 #include "cm_lte.h" /* Common LTE Defines */
52 #include "tfu.h" /* RGU Interface defines */
56 #include "rg_sch_inf.h" /* RGU Interface defines */
58 /* header/extern include files (.x) */
59 #include "gen.x" /* general */
60 #include "ssi.x" /* system services */
61 #include "cm_tkns.x" /* Common Token Definitions */
62 #include "cm_llist.x" /* Common Link List Definitions */
63 #include "cm_lib.x" /* Common Library Definitions */
64 #include "cm_hash.x" /* Common Hash List Definitions */
65 #include "cm_lte.x" /* Common LTE Defines */
66 #include "crg.x" /* CRG Interface includes */
67 #include "rgr.x" /* RGR Interface includes */
68 #include "rgu.x" /* RGU Interface includes */
69 #include "cm_mblk.x" /* memory management */
70 #include "cm_lte.x" /* Common LTE Defines */
71 #include "tfu.x" /* RGU Interface includes */
75 #include "rg_sch_inf.x" /* RGU Interface includes */
79 PRIVATE CONSTANT CellRegReq RgSchMacCellRegReqMt[RG_MAX_SCH] =
88 PRIVATE CONSTANT DedBoUpdtReq RgMacSchDedBoUpdtReqMt[RG_MAX_SCH] =
91 cmPkMacSchDedBoUpdtReq,
97 PRIVATE CONSTANT CmnBoUpdtReq RgMacSchCmnBoUpdtReqMt[RG_MAX_SCH] =
100 cmPkMacSchCmnBoUpdtReq,
106 PRIVATE CONSTANT SfRecpInd RgMacSchSfRecpIndMt[RG_MAX_SCH] =
114 /*Fix: start: Inform UE delete to scheduler*/
115 PRIVATE CONSTANT UeDelInd RgMacSchUeDelIndMt[RG_MAX_SCH] =
123 /*Fix: end: Inform UE delete to scheduler*/
124 PRIVATE CONSTANT SfAllocReq RgSchMacSfAllocReqMt[RG_MAX_SCH] =
127 cmPkSchMacSfAllocReq,
133 PRIVATE CONSTANT RstHqEntReq RgSchMacRstHqEntReqMt[RG_MAX_SCH] =
136 cmPkSchMacRstHqEntReq,
141 PRIVATE CONSTANT RlsHqReq RgSchMacRlsHqReqMt[RG_MAX_SCH] =
150 PRIVATE CONSTANT RlsRntiReq RgSchMacRlsRntiReqMt[RG_MAX_SCH] =
153 cmPkSchMacRlsRntiReq,
159 PRIVATE CONSTANT LcgReg RgSchMacLcgRegReqMt[RG_MAX_SCH] =
169 PRIVATE CONSTANT SpsLcReg RgSchMacSpsLcRegReqMt[RG_MAX_SCH] =
172 cmPkSchMacSpsLcRegReq,
178 PRIVATE CONSTANT UlSpsReset RgSchMacUlSpsResetMt[RG_MAX_SCH] =
181 cmPkSchMacUlSpsReset,
183 RgSchMacUlSpsResetReq
189 PRIVATE CONSTANT SpsLcDereg RgSchMacSpsLcDeregReqMt[RG_MAX_SCH] =
192 cmPkSchMacSpsLcDeregReq,
194 RgSchMacSpsLcDeregReq
198 PRIVATE CONSTANT SpsRelInd RgMacSchSpsRelIndMt[RG_MAX_SCH] =
207 #endif /* LTEMAC_SPS */
210 PRIVATE CONSTANT L2MeasReq RgSchMacL2MeasReqMt[RG_MAX_SCH] =
218 /*Added for Rsys oam*/
219 PRIVATE CONSTANT L2MeasStopReq RgSchMacL2MeasStopReqMt[RG_MAX_SCH] =
222 cmPkSchMacL2MeasStopReq
224 RgSchMacL2MeasStopReq
228 PRIVATE CONSTANT L2MeasSendReq RgSchMacL2MeasSendReqMt[RG_MAX_SCH] =
231 cmPkSchMacL2MeasSendReq
233 RgSchMacL2MeasSendReq
237 PRIVATE CONSTANT L2MeasCfm RgMacSchL2MeasCfmMt[RG_MAX_SCH] =
245 PRIVATE CONSTANT L2MeasStopCfm RgMacSchL2MeasStopCfmMt[RG_MAX_SCH] =
248 cmPkMacSchL2MeasStopCfm
250 RgMacSchL2MeasStopCfm
253 #endif/*LTE_L2_MEAS*/
255 * @brief Data Indication from MAC to RLC to
256 * forward the data received for dedicated channels
260 * Function : RgSchMacCellReg
262 * @param[in] Pst* pst
263 * @param[in] SuId suId
264 * @param[in] RguDDatIndInfo * datInd
269 PUBLIC S16 RgSchMacCellReg
275 PUBLIC S16 RgSchMacCellReg(pst, regReq)
277 RgInfCellReg* regReq;
281 TRC3(RgSchMacCellReg);
283 RETVALUE((*RgSchMacCellRegReqMt[0])(pst, regReq));
287 * @brief Data Indication from MAC to RLC to
288 * forward the data received for dedicated channels
292 * Function : RgMacSchDedBoUpdt
294 * @param[in] Pst* pst
295 * @param[in] SuId suId
296 * @param[in] RguDDatIndInfo * datInd
301 PUBLIC S16 RgMacSchDedBoUpdt
307 PUBLIC S16 RgMacSchDedBoUpdt(pst, boRpt)
309 RgInfDedBoRpt* boRpt;
313 TRC3(RgMacSchDedBoUpdt);
315 RETVALUE((*RgMacSchDedBoUpdtReqMt[0])(pst, boRpt));
319 * @brief Data Indication from MAC to RLC to
320 * forward the data received for dedicated channels
324 * Function : RgMacSchCmnBoUpdt
326 * @param[in] Pst* pst
327 * @param[in] SuId suId
328 * @param[in] RguDDatIndInfo * datInd
333 PUBLIC S16 RgMacSchCmnBoUpdt
339 PUBLIC S16 RgMacSchCmnBoUpdt(pst, boRpt)
341 RgInfCmnBoRpt* boRpt;
345 TRC3(RgMacSchCmnBoUpdt);
347 RETVALUE((*RgMacSchCmnBoUpdtReqMt[0])(pst, boRpt));
350 /*Fix: start: Inform UE delete to scheduler*/
352 * @brief This primitive is used to indicate deletion of UE
353 * at MAC to scheduler.
357 * Function : RgMacSchUeDel
359 * @param[in] Pst* pst
360 * @param[in] RgInfSfDatInd* ueDelInd
365 PUBLIC S16 RgMacSchUeDel
368 RgInfUeDelInd* ueDelInd
371 PUBLIC S16 RgMacSchUeDel(pst, datInd)
373 RgInfUeDelInd* ueDelInd;
379 RETVALUE((*RgMacSchUeDelIndMt[0])(pst, ueDelInd));
381 /*Fix: end: Inform UE delete to scheduler*/
383 * @brief Data Indication from MAC to RLC to
384 * forward the data received for dedicated channels
388 * Function : RgMacSchSfRecp
390 * @param[in] Pst* pst
391 * @param[in] SuId suId
392 * @param[in] RguDDatIndInfo * datInd
397 PUBLIC S16 RgMacSchSfRecp
400 RgInfSfDatInd* datInd
403 PUBLIC S16 RgMacSchSfRecp(pst, datInd)
405 RgInfSfDatInd* datInd;
409 TRC3(RgMacSchSfRecp);
411 RETVALUE((*RgMacSchSfRecpIndMt[0])(pst, datInd));
415 * @brief Data Indication from MAC to RLC to
416 * forward the data received for dedicated channels
420 * Function : RgSchMacSfAlloc
422 * @param[in] Pst* pst
423 * @param[in] SuId suId
424 * @param[in] RguDDatIndInfo * datInd
429 PUBLIC S16 RgSchMacSfAlloc
432 RgInfSfAlloc* resAllocReq
435 PUBLIC S16 RgSchMacSfAlloc(pst, resAllocReq)
437 RgInfSfAlloc* resAllocReq;
441 TRC3(RgSchMacSfAlloc);
443 RETVALUE((*RgSchMacSfAllocReqMt[0])(pst, resAllocReq));
447 * @brief Trigger for resetting Harq Entity at MAC
451 * Function : RgSchMacRstHqEnt
453 * @param[in] Pst* pst
454 * @param[in] RgInfResetHqEnt *hqEntRstReq
459 PUBLIC S16 RgSchMacRstHqEnt
462 RgInfResetHqEnt* hqEntInfo
465 PUBLIC S16 RgSchMacRstHqEnt(pst, hqEntInfo)
467 RgInfResetHqEnt* hqEntInfo;
471 TRC3(RgSchMacRstHqEnt)
473 RETVALUE((*RgSchMacRstHqEntReqMt[0])(pst, hqEntInfo));
477 * @brief Data Indication from MAC to RLC to
478 * forward the data received for dedicated channels
482 * Function : RgSchMacRlsHq
484 * @param[in] Pst* pst
485 * @param[in] SuId suId
486 * @param[in] RguDDatIndInfo * datInd
491 PUBLIC S16 RgSchMacRlsHq
494 RgInfRlsHqInfo* sfHqInfo
497 PUBLIC S16 RgSchMacRlsHq(pst, sfHqInfo)
499 RgInfRlsHqInfo* sfHqInfo;
505 RETVALUE((*RgSchMacRlsHqReqMt[0])(pst, sfHqInfo));
509 * @brief Data Indication from MAC to RLC to
510 * forward the data received for dedicated channels
514 * Function : RgSchMacRlsRnti
516 * @param[in] Pst* pst
517 * @param[in] SuId suId
518 * @param[in] RguDDatIndInfo * datInd
523 PUBLIC S16 RgSchMacRlsRnti
526 RgInfRlsRnti* rlsRnti
529 PUBLIC S16 RgSchMacRlsRnti(pst, rlsRnti)
531 RgInfRlsRnti* rlsRnti;
535 TRC3(RgSchMacRlsRnti);
537 RETVALUE((*RgSchMacRlsRntiReqMt[0])(pst, rlsRnti));
541 * @brief Request from SCH to MAC to register the GBR LCG of a UE
545 * Function : RgSchMacLcgReg
547 * @param[in] Pst* pst
548 * @param[in] RgInfLcgRegReq *lcgRegReq
553 PUBLIC S16 RgSchMacLcgReg
556 RgInfLcgRegReq *lcgRegReq
559 PUBLIC S16 RgSchMacLcgReg(pst, lcgRegReq)
561 RgInfLcgRegReq *lcgRegReq;
565 TRC3(RgSchMacLcgReg);
567 RETVALUE((*RgSchMacLcgRegReqMt[0])(pst, lcgRegReq));
568 } /* end of RgSchMacLcgReg */
572 * @brief Data Indication from MAC to SCH to
573 * indicate the arrival of the data on SPS logical channels
577 * Function : RgMacSchSpsRel
579 * @param[in] Pst* pst
580 * @param[in] RgInfSpsRelInfo* relInfo
585 PUBLIC S16 RgMacSchSpsRel
588 RgInfSpsRelInfo* relInfo
591 PUBLIC S16 RgMacSchSpsRel(pst, relInfo)
593 RgInfSpsRelInfo* relInfo;
599 RETVALUE((*RgMacSchSpsRelIndMt[0])(pst, relInfo));
600 } /* end of RgMacSchSpsRel */
603 * @brief Request from SCH to MAC to register the SPS logical channels of a UE
607 * Function : RgSchMacSpsLcReg
609 * @param[in] Pst* pst
610 * @param[in] RgInfSpsLcInfo *lcInfo
615 PUBLIC S16 RgSchMacSpsLcReg
618 RgInfSpsLcInfo *lcInfo
621 PUBLIC S16 RgSchMacSpsLcReg(pst, lcInfo)
623 RgInfSpsLcInfo *lcInfo;
627 TRC3(RgSchMacSpsLcReg);
629 RETVALUE((*RgSchMacSpsLcRegReqMt[0])(pst, lcInfo));
630 } /* end of RgSchMacSpsLcReg */
635 * @brief Request from SCH to MAC to reset UL SPS params
639 * Function : RgSchMacUlSpsReset
641 * @param[in] Pst* pst
642 * @param[in] RgInfUlSpsReset *lcInfo
647 PUBLIC S16 RgSchMacUlSpsReset
650 RgInfUlSpsReset *ulSpsResetInfo
653 PUBLIC S16 RgSchMacUlSpsReset(pst, ulSpsResetInfo)
655 RgInfUlSpsReset *ulSpsResetInfo;
659 TRC3(RgSchMacUlSpsReset);
661 RETVALUE((*RgSchMacUlSpsResetMt[0])(pst, ulSpsResetInfo));
662 } /* end of RgSchMacUlSpsReset */
667 * @brief Request from SCH to MAC to deregister the SPS logical channels of a UE
671 * Function : RgSchMacSpsLcDereg
673 * @param[in] Pst* pst
674 * @param[in] RgInfSpsLcInfo *lcInfo
679 PUBLIC S16 RgSchMacSpsLcDereg
686 PUBLIC S16 RgSchMacSpsLcDereg(pst, cellId, crnti)
693 TRC3(RgSchMacSpsLcDereg);
695 RETVALUE((*RgSchMacSpsLcDeregReqMt[0])(pst, cellId, crnti));
696 } /* end of RgSchMacSpsLcDereg */
698 #endif /* LTEMAC_SPS */
701 * @brief Request from SCH to MAC for L2 Measurement
705 * Function : RgSchMacL2Meas
707 * @param[in] Pst* pst
708 * @param[in] RgInfL2MeasReq *measInfo
713 PUBLIC S16 RgSchMacL2Meas
716 RgInfL2MeasReq *measInfo
719 PUBLIC S16 RgSchMacL2Meas(pst, measInfo)
721 RgInfL2MeasReq *measInfo;
725 TRC3(RgSchMacL2Meas);
727 RETVALUE((*RgSchMacL2MeasReqMt[0])(pst, measInfo));
728 } /* end of RgSchMacL2Meas */
731 * @brief Request from SCH to MAC for Stopping L2 Measurement
735 * Function : RgSchMacL2MeasStop
737 * @param[in] Pst* pst
738 * @param[in] RgInfL2MeasReq *measInfo
743 PUBLIC S16 RgSchMacL2MeasStop
746 RgInfL2MeasStopReq *measInfo
749 PUBLIC S16 RgSchMacL2MeasStop(pst, measInfo)
751 RgInfL2MeasStopReq *measInfo;
755 TRC3(RgSchMacL2MeasStop);
757 RETVALUE((*RgSchMacL2MeasStopReqMt[0])(pst, measInfo));
758 } /* end of RgSchMacL2Meas */
761 * @brief Request from SCH to MAC for Sending L2 Measurement
765 * Function : RgSchMacL2MeasSend
767 * @param[in] Pst* pst
768 * @param[in] RgInfL2MeasReq *measInfo
773 PUBLIC S16 RgSchMacL2MeasSend
776 RgInfL2MeasSndReq *measInfo
779 PUBLIC S16 RgSchMacL2MeasSend(pst, measInfo)
781 RgInfL2MeasSndReq *measInfo;
785 TRC3(RgSchMacL2MeasSend);
787 RETVALUE((*RgSchMacL2MeasSendReqMt[0])(pst, measInfo));
788 } /* end of RgSchMacL2MeasSend */
791 * @brief Request from MAC to SCH for L2 Measurement
795 * Function : RgMacSchL2Meas
797 * @param[in] Pst* pst
798 * @param[in] RgInfL2MeasCfm *measInfo
803 PUBLIC S16 RgMacSchL2Meas
806 RgInfL2MeasCfm *measInfo
809 PUBLIC S16 RgMacSchL2Meas(pst, measInfo)
811 RgInfL2MeasCfm *measInfo;
815 TRC3(RgMacSchL2Meas);
817 RETVALUE((*RgMacSchL2MeasCfmMt[0])(pst, measInfo));
818 } /* end of RgSchMacL2Meas */
820 * @brief Request from MAC to SCH for L2 Measurement
824 * Function : RgMacSchL2MeasStop
826 * @param[in] Pst* pst
827 * @param[in] RgInfL2MeasCfm *measInfo
832 PUBLIC S16 RgMacSchL2MeasStop
835 RgInfL2MeasCfm *measInfo
838 PUBLIC S16 RgMacSchL2MeasStop(pst, measInfo)
840 RgInfL2MeasCfm *measInfo;
844 TRC3(RgMacSchL2MeasStop);
846 RETVALUE((*RgMacSchL2MeasStopCfmMt[0])(pst, measInfo));
847 } /* end of RgSchMacL2MeasStop*/
848 #endif/*LTE_L2_MEAS*/
849 /**********************************************************************
852 **********************************************************************/