packDuMacCellDeleteRsp /* packing for light weight loosly coupled */
};
+MacDuSliceCfgRspFunc macDuSliceCfgRspOpts[] =
+{
+ packDuMacSliceCfgRsp, /* packing for loosely coupled */
+ DuProcMacSliceCfgRsp, /* packing for tightly coupled */
+ packDuMacSliceCfgRsp /* packing for light weight loosly coupled */
+};
+
+MacDuSliceReCfgRspFunc macDuSliceReCfgRspOpts[] =
+{
+ packDuMacSliceReCfgRsp, /* packing for loosely coupled */
+ DuProcMacSliceReCfgRsp, /* packing for tightly coupled */
+ packDuMacSliceReCfgRsp /* packing for light weight loosly coupled */
+};
+
/**
* @brief Layer Manager Configuration request handler for Scheduler
*
**/
uint8_t MacSchGenCfgReq(Pst *pst, RgMngmt *cfg)
{
+ Pst schPst;
+
printf("\nReceived Scheduler gen config at MAC");
- pst->dstInst = DEFAULT_CELLS + 1;
- SchProcGenCfgReq(pst, cfg);
+ memset(&schPst, 0, sizeof(Pst));
+ FILL_PST_MAC_TO_SCH(schPst, EVENT_SCH_GEN_CFG);
+ SchProcGenCfgReq(&schPst, cfg);
return ROK;
}
{
Pst cfmPst;
uint16_t cellIdx;
- uint8_t ret = ROK;
+ uint8_t ret = ROK, sliceIdx = 0;
MacCellCb *macCellCb;
memset((uint8_t *)&cfmPst, 0, sizeof(Pst));
}
memcpy(macCb.macCell[cellIdx]->macCellCfg.sib1Cfg.sib1Pdu, macCellCfg->sib1Cfg.sib1Pdu, \
macCb.macCell[cellIdx]->macCellCfg.sib1Cfg.sib1PduLen);
+
+ macCb.macCell[cellIdx]->macCellCfg.plmnInfoList.numSupportedSlice = macCellCfg->plmnInfoList.numSupportedSlice;
+ MAC_ALLOC(macCb.macCell[cellIdx]->macCellCfg.plmnInfoList.snssai, macCb.macCell[cellIdx]->macCellCfg.plmnInfoList.numSupportedSlice\
+ * sizeof(Snssai*));
+ if(macCb.macCell[cellIdx]->macCellCfg.plmnInfoList.snssai == NULLP)
+ {
+ DU_LOG("\nERROR --> MAC: Memory allocation failed at MacProcCellCfgReq");
+ return RFAILED;
+ }
+
+ if(macCb.macCell[cellIdx]->macCellCfg.plmnInfoList.snssai)
+ {
+ for(sliceIdx=0; sliceIdx<macCb.macCell[cellIdx]->macCellCfg.plmnInfoList.numSupportedSlice; sliceIdx++)
+ {
+ if(macCellCfg->plmnInfoList.snssai[sliceIdx])
+ {
+ MAC_ALLOC(macCb.macCell[cellIdx]->macCellCfg.plmnInfoList.snssai[sliceIdx], sizeof(Snssai));
+ if(!macCb.macCell[cellIdx]->macCellCfg.plmnInfoList.snssai[sliceIdx])
+ {
+ DU_LOG("\nERROR --> MAC: Memory allocation failed at MacProcCellCfgReq");
+ return RFAILED;
+ }
+ memcpy(macCb.macCell[cellIdx]->macCellCfg.plmnInfoList.snssai[sliceIdx], macCellCfg->plmnInfoList.snssai[sliceIdx],\
+ sizeof(Snssai));
+ }
+ }
+ }
/* Send cell cfg to scheduler */
ret = MacSchCellCfgReq(pst, macCellCfg);
{
SchCellCfg schCellCfg;
Pst cfgPst;
- uint8_t idx=0, ret=0;
+ uint8_t ssbMaskIdx = 0, rsrcListIdx = 0, ret=0, sliceIdx=0;
memset(&cfgPst, 0, sizeof(Pst));
memset(&schCellCfg, 0, sizeof(SchCellCfg));
schCellCfg.ssbSchCfg.ssbOffsetPointA = macCellCfg->ssbCfg.ssbOffsetPointA;
schCellCfg.ssbSchCfg.ssbPeriod = ssbPeriodicity[macCellCfg->ssbCfg.ssbPeriod];
schCellCfg.ssbSchCfg.ssbSubcOffset = macCellCfg->ssbCfg.ssbScOffset;
- for(uint8_t idx=0; idx<SSB_MASK_SIZE; idx++)
+ for(ssbMaskIdx=0; ssbMaskIdx<SSB_MASK_SIZE; ssbMaskIdx++)
{
- schCellCfg.ssbSchCfg.nSSBMask[idx] = macCellCfg->ssbCfg.ssbMask[idx];
+ schCellCfg.ssbSchCfg.nSSBMask[ssbMaskIdx] = macCellCfg->ssbCfg.ssbMask[ssbMaskIdx];
}
+ schCellCfg.ssbSchCfg.totNumSsb = countSetBits(schCellCfg.ssbSchCfg.nSSBMask[0]);
/* fill SIB1 scheduler parameters */
schCellCfg.sib1SchCfg.sib1PduLen = macCellCfg->sib1Cfg.sib1PduLen;
schCellCfg.sib1SchCfg.coresetZeroIndex = macCellCfg->sib1Cfg.coresetZeroIndex;
schCellCfg.sib1SchCfg.searchSpaceZeroIndex = macCellCfg->sib1Cfg.searchSpaceZeroIndex;
schCellCfg.sib1SchCfg.sib1Mcs = macCellCfg->sib1Cfg.sib1Mcs;
+ schCellCfg.sib1SchCfg.pageCfg.numPO = macCellCfg->sib1Cfg.pagingCfg.numPO;
+ schCellCfg.sib1SchCfg.pageCfg.poPresent = macCellCfg->sib1Cfg.pagingCfg.poPresent;
+
+ if(schCellCfg.sib1SchCfg.pageCfg.poPresent)
+ {
+ memcpy(schCellCfg.sib1SchCfg.pageCfg.pagingOcc, macCellCfg->sib1Cfg.pagingCfg.pagingOcc, MAX_PO_PER_PF);
+ }
/* fill RACH config params */
schCellCfg.schRachCfg.prachCfgIdx = macCellCfg->prachCfg.prachCfgIdx;
schCellCfg.schRachCfg.rootSeqIdx = macCellCfg->prachCfg.fdm[0].rootSeqIdx;
schCellCfg.schRachCfg.numRootSeq = macCellCfg->prachCfg.fdm[0].numRootSeq;
schCellCfg.schRachCfg.k1 = macCellCfg->prachCfg.fdm[0].k1;
+ schCellCfg.schRachCfg.totalNumRaPreamble = macCellCfg->prachCfg.totalNumRaPreamble;
schCellCfg.schRachCfg.ssbPerRach = macCellCfg->prachCfg.ssbPerRach;
- schCellCfg.schRachCfg.prachMultCarrBand = \
- macCellCfg->prachCfg.prachMultCarrBand;
+ schCellCfg.schRachCfg.numCbPreamblePerSsb = macCellCfg->prachCfg.numCbPreamblePerSsb;
+ schCellCfg.schRachCfg.prachMultCarrBand = macCellCfg->prachCfg.prachMultCarrBand;
schCellCfg.schRachCfg.raContResTmr = macCellCfg->prachCfg.raContResTmr;
schCellCfg.schRachCfg.rsrpThreshSsb = macCellCfg->prachCfg.rsrpThreshSsb;
schCellCfg.schRachCfg.raRspWindow = macCellCfg->prachCfg.raRspWindow;
schCellCfg.schInitialDlBwp.pdcchCommon.commonSearchSpace.candidate.aggLevel16 =
macCellCfg->initialDlBwp.pdcchCommon.commonSearchSpace.candidate.aggLevel16;
schCellCfg.schInitialDlBwp.pdschCommon.numTimeDomAlloc = macCellCfg->initialDlBwp.pdschCommon.numTimeDomAlloc;
- for(idx = 0; idx<macCellCfg->initialDlBwp.pdschCommon.numTimeDomAlloc; idx++)
+ for(rsrcListIdx = 0; rsrcListIdx<macCellCfg->initialDlBwp.pdschCommon.numTimeDomAlloc; rsrcListIdx++)
{
- schCellCfg.schInitialDlBwp.pdschCommon.timeDomRsrcAllocList[idx].k0 =
- macCellCfg->initialDlBwp.pdschCommon.timeDomRsrcAllocList[idx].k0;
- schCellCfg.schInitialDlBwp.pdschCommon.timeDomRsrcAllocList[idx].mappingType =
- macCellCfg->initialDlBwp.pdschCommon.timeDomRsrcAllocList[idx].mappingType;
- schCellCfg.schInitialDlBwp.pdschCommon.timeDomRsrcAllocList[idx].startSymbol =
- macCellCfg->initialDlBwp.pdschCommon.timeDomRsrcAllocList[idx].startSymbol;
- schCellCfg.schInitialDlBwp.pdschCommon.timeDomRsrcAllocList[idx].lengthSymbol =
- macCellCfg->initialDlBwp.pdschCommon.timeDomRsrcAllocList[idx].lengthSymbol;
+ schCellCfg.schInitialDlBwp.pdschCommon.timeDomRsrcAllocList[rsrcListIdx].k0 =
+ macCellCfg->initialDlBwp.pdschCommon.timeDomRsrcAllocList[rsrcListIdx].k0;
+ schCellCfg.schInitialDlBwp.pdschCommon.timeDomRsrcAllocList[rsrcListIdx].mappingType =
+ macCellCfg->initialDlBwp.pdschCommon.timeDomRsrcAllocList[rsrcListIdx].mappingType;
+ schCellCfg.schInitialDlBwp.pdschCommon.timeDomRsrcAllocList[rsrcListIdx].startSymbol =
+ macCellCfg->initialDlBwp.pdschCommon.timeDomRsrcAllocList[rsrcListIdx].startSymbol;
+ schCellCfg.schInitialDlBwp.pdschCommon.timeDomRsrcAllocList[rsrcListIdx].lengthSymbol =
+ macCellCfg->initialDlBwp.pdschCommon.timeDomRsrcAllocList[rsrcListIdx].lengthSymbol;
}
/* fill initial UL BWP */
schCellCfg.schInitialUlBwp.bwp.freqAlloc.numPrb = macCellCfg->initialUlBwp.bwp.numPrb;
schCellCfg.schInitialUlBwp.bwp.scs = macCellCfg->initialUlBwp.bwp.scs;
schCellCfg.schInitialUlBwp.bwp.cyclicPrefix = macCellCfg->initialUlBwp.bwp.cyclicPrefix;
- schCellCfg.schInitialUlBwp.puschCommon.k2 = macCellCfg->initialUlBwp.puschCommon.k2;
- schCellCfg.schInitialUlBwp.puschCommon.mappingType =
- macCellCfg->initialUlBwp.puschCommon.mappingType;
- schCellCfg.schInitialUlBwp.puschCommon.startSymbol =
- macCellCfg->initialUlBwp.puschCommon.startSymbol;
- schCellCfg.schInitialUlBwp.puschCommon.lengthSymbol =
- macCellCfg->initialUlBwp.puschCommon.lengthSymbol;
+ schCellCfg.schInitialUlBwp.puschCommon.numTimeDomRsrcAlloc = \
+ macCellCfg->initialUlBwp.puschCommon.numTimeDomRsrcAlloc;
+ for(rsrcListIdx = 0; rsrcListIdx < macCellCfg->initialUlBwp.puschCommon.numTimeDomRsrcAlloc; rsrcListIdx++)
+ {
+ schCellCfg.schInitialUlBwp.puschCommon.timeDomRsrcAllocList[rsrcListIdx].k2 =
+ macCellCfg->initialUlBwp.puschCommon.timeDomRsrcAllocList[rsrcListIdx].k2;
+ schCellCfg.schInitialUlBwp.puschCommon.timeDomRsrcAllocList[rsrcListIdx].mappingType =
+ macCellCfg->initialUlBwp.puschCommon.timeDomRsrcAllocList[rsrcListIdx].mappingType;
+ schCellCfg.schInitialUlBwp.puschCommon.timeDomRsrcAllocList[rsrcListIdx].startSymbol =
+ macCellCfg->initialUlBwp.puschCommon.timeDomRsrcAllocList[rsrcListIdx].startSymbol;
+ schCellCfg.schInitialUlBwp.puschCommon.timeDomRsrcAllocList[rsrcListIdx].symbolLength =
+ macCellCfg->initialUlBwp.puschCommon.timeDomRsrcAllocList[rsrcListIdx].symbolLength;
+ }
+
+ if(macCellCfg->plmnInfoList.snssai)
+ {
+ schCellCfg.plmnInfoList.numSliceSupport = macCellCfg->plmnInfoList.numSupportedSlice;
+ MAC_ALLOC(schCellCfg.plmnInfoList.snssai, schCellCfg.plmnInfoList.numSliceSupport * sizeof(Snssai*));
+ if(!schCellCfg.plmnInfoList.snssai)
+ {
+ DU_LOG("\nERROR --> MAC: Memory allocation failed at MacSchCellCfgReq");
+ return RFAILED;
+ }
+ for(sliceIdx=0; sliceIdx<schCellCfg.plmnInfoList.numSliceSupport; sliceIdx++)
+ {
+ if(macCellCfg->plmnInfoList.snssai[sliceIdx])
+ {
+ MAC_ALLOC(schCellCfg.plmnInfoList.snssai[sliceIdx], sizeof(Snssai));
+ if(!schCellCfg.plmnInfoList.snssai[sliceIdx])
+ {
+ DU_LOG("\nERROR --> MAC: Memory allocation failed at MacSchCellCfgReq");
+ return RFAILED;
+ }
+ memcpy(schCellCfg.plmnInfoList.snssai[sliceIdx], macCellCfg->plmnInfoList.snssai[sliceIdx], sizeof(Snssai));
+ }
+ }
+ }
+
#ifdef NR_TDD
memcpy(&schCellCfg.tddCfg, &macCellCfg->tddCfg, sizeof(TDDCfg));
#endif
{
uint16_t *cellId = NULLP;
+#ifdef CALL_FLOW_DEBUG_LOG
+ DU_LOG("\nCall Flow: ENTSCH -> ENTMAC : EVENT_SCH_CELL_CFG_CFM\n");
+#endif
+
if(schCellCfgCfm->rsp == RSP_OK)
{
cellId = &schCellCfgCfm->cellId;
* * ****************************************************************/
uint8_t MacProcSchCellDeleteRsp(Pst *pst, SchCellDeleteRsp *schCellDelRsp)
{
- uint8_t ret = ROK;
+ uint8_t ret = ROK, sliceIdx = 0;
uint16_t cellIdx=0;
CellDeleteStatus status;
+
+#ifdef CALL_FLOW_DEBUG_LOG
+ DU_LOG("\nCall Flow: ENTSCH -> ENTMAC : EVENT_CELL_DELETE_RSP_TO_MAC\n");
+#endif
if(schCellDelRsp)
{
if(macCb.macCell[cellIdx]->cellId == schCellDelRsp->cellId)
{
status = SUCCESSFUL_RSP;
+ if(macCb.macCell[cellIdx]->macCellCfg.plmnInfoList.snssai)
+ {
+ for(sliceIdx = 0; sliceIdx<macCb.macCell[cellIdx]->macCellCfg.plmnInfoList.numSupportedSlice; sliceIdx++)
+ {
+ MAC_FREE(macCb.macCell[cellIdx]->macCellCfg.plmnInfoList.snssai[sliceIdx], sizeof(Snssai));
+ }
+ MAC_FREE(macCb.macCell[cellIdx]->macCellCfg.plmnInfoList.snssai, macCb.macCell[cellIdx]->macCellCfg.plmnInfoList.\
+ numSupportedSlice * sizeof(Snssai*));
+ }
MAC_FREE(macCb.macCell[cellIdx]->macCellCfg.sib1Cfg.sib1Pdu, \
macCb.macCell[cellIdx]->macCellCfg.sib1Cfg.sib1PduLen);
MAC_FREE(macCb.macCell[cellIdx], sizeof(MacCellCb));
return ret;
}
+/**
+ * @brief free the temporary slice cfg stored in macCb.
+ *
+ * @details
+ *
+ * Function : freeMacSliceCfgReq
+ *
+ * free the temporary slice cfg stored in macCb
+ *
+ * @param[in]
+ * @return int
+ * -# ROK
+ **/
+void freeMacSliceCfgReq(MacSliceCfgReq *cfgReq,Pst *pst)
+{
+ uint8_t cfgIdx = 0;
+
+ if(cfgReq)
+ {
+ if(cfgReq->numOfConfiguredSlice)
+ {
+ for(cfgIdx = 0; cfgIdx<cfgReq->numOfConfiguredSlice; cfgIdx++)
+ {
+ if(cfgReq->listOfSliceCfg[cfgIdx])
+ {
+ MAC_FREE_SHRABL_BUF(pst->region, pst->pool, cfgReq->listOfSliceCfg[cfgIdx]->rrmPolicyRatio, sizeof(RrmPolicyRatio));
+ }
+ MAC_FREE_SHRABL_BUF(pst->region, pst->pool, cfgReq->listOfSliceCfg[cfgIdx], sizeof(MacSliceRrmPolicy));
+ }
+ MAC_FREE_SHRABL_BUF(pst->region, pst->pool, cfgReq->listOfSliceCfg, cfgReq->numOfConfiguredSlice * sizeof(MacSliceRrmPolicy*));
+ }
+ MAC_FREE_SHRABL_BUF(pst->region, pst->pool, cfgReq, sizeof(MacSliceCfgReq));
+ }
+}
+/**
+ * @brief fill Mac Slice Config Rsp
+ *
+ * @details
+ *
+ * Function : fillMacSliceCfgRsp
+ *
+ * This function fill Mac Slice Config Rsp
+ *
+ * @param[in] SchSliceCfgRsp *sliceCfgRsp, MacSliceCfgRsp *macSliceCfgRsp,
+ * uint8_t *count
+ * @return int
+ * -# ROK
+ **/
+uint8_t fillMacSliceCfgRsp(SchSliceCfgRsp *schSliceCfgRsp, MacSliceCfgRsp *macSliceCfgRsp)
+{
+
+ bool sliceFound = false;
+ uint8_t cfgIdx = 0;
+
+ macSliceCfgRsp->numSliceCfgRsp = schSliceCfgRsp->numSliceCfgRsp;
+ MAC_ALLOC_SHRABL_BUF(macSliceCfgRsp->listOfSliceCfgRsp, macSliceCfgRsp->numSliceCfgRsp* sizeof(MacSliceRsp*));
+ if(macSliceCfgRsp->listOfSliceCfgRsp == NULLP)
+ {
+ DU_LOG("\nERROR --> MAC : Memory allocation failedi in fillMacSliceCfgRsp");
+ return RFAILED;
+ }
+
+ for(cfgIdx = 0; cfgIdx<schSliceCfgRsp->numSliceCfgRsp; cfgIdx++)
+ {
+ sliceFound = false;
+ if(schSliceCfgRsp->listOfSliceCfgRsp[cfgIdx]->rsp == RSP_OK)
+ {
+ sliceFound = true;
+ }
+
+ MAC_ALLOC_SHRABL_BUF(macSliceCfgRsp->listOfSliceCfgRsp[cfgIdx], sizeof(SliceRsp));
+ if(macSliceCfgRsp->listOfSliceCfgRsp[cfgIdx] == NULLP)
+ {
+ DU_LOG("\nERROR --> MAC : Memory allocation failedi in fillMacSliceCfgRsp");
+ return RFAILED;
+ }
+
+ macSliceCfgRsp->listOfSliceCfgRsp[cfgIdx]->snssai = schSliceCfgRsp->listOfSliceCfgRsp[cfgIdx]->snssai;
+ if(sliceFound == true)
+ macSliceCfgRsp->listOfSliceCfgRsp[cfgIdx]->rsp = MAC_DU_APP_RSP_OK;
+ else
+ {
+ macSliceCfgRsp->listOfSliceCfgRsp[cfgIdx]->rsp = MAC_DU_APP_RSP_NOK;
+ macSliceCfgRsp->listOfSliceCfgRsp[cfgIdx]->cause = SLICE_NOT_PRESENT;
+ }
+ }
+ return ROK;
+}
+
+/**
+ * @brief send slice cfg response to duapp.
+ *
+ * @details
+ *
+ * Function : MacSendSliceConfigRsp
+ *
+ * sends slice cfg response to duapp
+ *
+ * @param[in] MacSliceCfgRsp macSliceCfgRsp
+ * @return int
+ * -# ROK
+ **/
+uint8_t MacSendSliceConfigRsp(MacSliceCfgRsp *macSliceCfgRsp)
+{
+ Pst rspPst;
+
+ memset(&rspPst, 0, sizeof(Pst));
+ FILL_PST_MAC_TO_DUAPP(rspPst, EVENT_MAC_SLICE_CFG_RSP);
+ return (*macDuSliceCfgRspOpts[rspPst.selector])(&rspPst, macSliceCfgRsp);
+
+}
+/**
+ * @brief free the slice cfg rsp received from sch.
+ *
+ * @details
+ *
+ * Function : freeSchSliceCfgRsp
+ *
+ * This free the slice cfg rsp received from sch
+ *
+ * @param[in] SchSliceCfgRsp *sliceCfgrsp
+ * @return int
+ * -# ROK
+ **/
+void freeSchSliceCfgRsp(SchSliceCfgRsp *schSliceCfgRsp)
+{
+ uint8_t cfgIdx = 0;
+
+ if(schSliceCfgRsp)
+ {
+ if(schSliceCfgRsp->numSliceCfgRsp)
+ {
+ for(cfgIdx = 0; cfgIdx< schSliceCfgRsp->numSliceCfgRsp; cfgIdx++)
+ {
+ MAC_FREE(schSliceCfgRsp->listOfSliceCfgRsp[cfgIdx], sizeof(SliceRsp));
+ }
+ MAC_FREE(schSliceCfgRsp->listOfSliceCfgRsp, schSliceCfgRsp->numSliceCfgRsp * sizeof(SliceRsp*));
+ }
+ }
+}
+
+/**
+ * @brief Mac process the slice cfg rsp received from sch.
+ *
+ * @details
+ *
+ * Function : MacProcSchSliceCfgRsp
+ *
+ * This function process the slice cfg rsp received from sch
+ *
+ * @param[in] Pst *pst
+ * @param[in] SchSliceCfgRsp *sliceCfgrsp
+ * @return int
+ * -# ROK
+ **/
+uint8_t MacProcSchSliceCfgRsp(Pst *pst, SchSliceCfgRsp *schSliceCfgRsp)
+{
+ MacSliceCfgRsp *macSliceCfgRsp = NULLP;
+
+ if(schSliceCfgRsp)
+ {
+ MAC_ALLOC_SHRABL_BUF(macSliceCfgRsp, sizeof(MacSliceCfgRsp));
+ if(macSliceCfgRsp == NULLP)
+ {
+ DU_LOG("\nERROR --> MAC : Failed to allocate memory in MacProcSchSliceCfgRsp");
+ return RFAILED;
+ }
+ if(schSliceCfgRsp->listOfSliceCfgRsp)
+ {
+ if(fillMacSliceCfgRsp(schSliceCfgRsp, macSliceCfgRsp) != ROK)
+ {
+ DU_LOG("\nERROR --> MAC : Failed to fill the slice cfg response");
+ return RFAILED;
+ }
+ MacSendSliceConfigRsp(macSliceCfgRsp);
+ }
+ freeSchSliceCfgRsp(schSliceCfgRsp);
+ }
+ return ROK;
+}
+
+/**
+* @brief send slice cfg response to duapp.
+*
+* @details
+*
+* Function : MacSendSliceReconfigRsp
+*
+* sends slice cfg response to duapp
+*
+* @param[in] MacSliceCfgRsp macSliceRecfgRsp
+* @return int
+* -# ROK
+**/
+uint8_t MacSendSliceReconfigRsp(MacSliceCfgRsp *macSliceRecfgRsp)
+{
+ Pst rspPst;
+
+ memset(&rspPst, 0, sizeof(Pst));
+ FILL_PST_MAC_TO_DUAPP(rspPst, EVENT_MAC_SLICE_RECFG_RSP);
+ return (*macDuSliceReCfgRspOpts[rspPst.selector])(&rspPst, macSliceRecfgRsp);
+
+}
+
+/**
+ * @brief Mac process the slice cfg rsp received from sch.
+ *
+ * @details
+ *
+ * Function : MacProcSchSliceReCfgRsp
+ *
+ * This function process the slice cfg rsp received from sch
+ *
+ * @param[in] Pst *pst
+ * @param[in] SchSliceCfgRsp *schSliceRecfgRsp
+ * @return int
+ * -# ROK
+ **/
+uint8_t MacProcSchSliceReCfgRsp(Pst *pst, SchSliceCfgRsp *schSliceRecfgRsp)
+{
+ MacSliceCfgRsp *macSliceReCfgRsp = NULLP;
+
+ if(schSliceRecfgRsp)
+ {
+ MAC_ALLOC_SHRABL_BUF(macSliceReCfgRsp, sizeof(MacSliceCfgRsp));
+ if(macSliceReCfgRsp == NULLP)
+ {
+ DU_LOG("\nERROR --> MAC : Failed to allocate memory in MacProcSchSliceReCfgRsp");
+ return RFAILED;
+ }
+
+ if(schSliceRecfgRsp->listOfSliceCfgRsp)
+ {
+ if(fillMacSliceCfgRsp(schSliceRecfgRsp, macSliceReCfgRsp) != ROK)
+ {
+ DU_LOG("\nERROR --> MAC : Failed to fill the slice Recfg response");
+ return RFAILED;
+ }
+ MacSendSliceReconfigRsp(macSliceReCfgRsp);
+ }
+ freeSchSliceCfgRsp(schSliceRecfgRsp);
+ }
+ return ROK;
+}
/**********************************************************************
End of file
**********************************************************************/