packDuMacUeReconfigReq /* Light weight-loose coupling */
};
+DuMacRachRsrcReq packMacRachRsrcReqOpts[] =
+{
+ packDuMacRachRsrcReq, /* Loose coupling */
+ MacProcRachRsrcReq, /* Tight coupling */
+ packDuMacRachRsrcReq /* Light weight-loose coupling */
+};
+
DuRlcDlUserDataToRlcFunc duSendRlcDlUserDataToRlcOpts[] =
{
- packRlcDlUserDataToRlc, /* Loose coupling */
+ packRlcDlUserDataToRlc, /* Loose coupling */
RlcProcDlUserDataTransfer, /* Tight coupling */
- packRlcDlUserDataToRlc /* Light weight-loose coupling */
+ packRlcDlUserDataToRlc /* Light weight-loose coupling */
+};
+
+DuMacRachRsrcRel packMacRachRsrcRelOpts[] =
+{
+ packDuMacRachRsrcRel, /* Loose coupling */
+ MacProcRachRsrcRel, /* Tight coupling */
+ packDuMacRachRsrcRel /* Light weight-loose coupling */
};
DuMacUeDeleteReq packMacUeDeleteReqOpts[] =
{
uint8_t idx;
MacCellGrpCfg *cellGrp = NULL;
-
+
if(macUeCfg)
cellGrp = &macUeCfg->macCellGrpCfg;
cellGrp->schReqCfg.addModListCount = 1;
if(cellGrp->schReqCfg.addModListCount <= MAX_NUM_SR_CFG_PER_CELL_GRP)
{
- for(idx = 0; idx < cellGrp->schReqCfg.addModListCount; idx++)
- {
- cellGrp->schReqCfg.addModList[idx].schedReqId = SCH_REQ_ID;
- cellGrp->schReqCfg.addModList[idx].srProhibitTmr = SR_PROHIBIT_MS_32;
- cellGrp->schReqCfg.addModList[idx].srTransMax = SR_TRANS_MAX_N_16;
- }
+ for(idx = 0; idx < cellGrp->schReqCfg.addModListCount; idx++)
+ {
+ cellGrp->schReqCfg.addModList[idx].schedReqId = SCH_REQ_ID;
+ cellGrp->schReqCfg.addModList[idx].srProhibitTmr = SR_PROHIBIT_MS_32;
+ cellGrp->schReqCfg.addModList[idx].srTransMax = SR_TRANS_MAX_N_16;
+ }
}
cellGrp->schReqCfg.relListCount = 0;
cellGrp->tagCfg.addModListCount = 1;
if(cellGrp->tagCfg.addModListCount <= MAC_NUM_TAGS)
{
- for(idx = 0; idx < cellGrp->tagCfg.addModListCount; idx++)
- {
- cellGrp->tagCfg.addModList[idx].tagId = TAG_ID;
- cellGrp->tagCfg.addModList[idx].timeAlignTimer = TIME_ALIGNMENT_TIMER_INFINITY;
- }
+ for(idx = 0; idx < cellGrp->tagCfg.addModListCount; idx++)
+ {
+ cellGrp->tagCfg.addModList[idx].tagId = TAG_ID;
+ cellGrp->tagCfg.addModList[idx].timeAlignTimer = TIME_ALIGNMENT_TIMER_INFINITY;
+ }
}
cellGrp->tagCfg.relListCount = 0;
cellGrp->phrCfg.phrType2OtherCell = false;
cellGrp->phrCfg.phrOtherCG = PHR_MODE_OTHER_CG_REAL;
+ /* Filling Drx Config */
+#ifdef NR_DRX
+ cellGrp->drxCfg.drxOnDurationTimer.onDurationTimerValInMs = DRX_ONDURATION_TIMER_VALUE_PRESENT_IN_MS;
+ if(!cellGrp->drxCfg.drxOnDurationTimer.onDurationTimerValInMs)
+ cellGrp->drxCfg.drxOnDurationTimer.onDurationtimerValue.subMilliSeconds = \
+ DRX_ONDURATION_TIMER_VALUE_IN_SUBMS;
+ else
+ cellGrp->drxCfg.drxOnDurationTimer.onDurationtimerValue.milliSeconds = \
+ DRX_ONDURATION_TIMER_VALUE_IN_MS;
+ cellGrp->drxCfg.drxInactivityTimer = DRX_INACTIVITY_TIMER;
+ cellGrp->drxCfg.drxHarqRttTimerDl = DRX_HARQ_RTT_TIMER_DL;
+ cellGrp->drxCfg.drxHarqRttTimerUl = DRX_HARQ_RTT_TIMER_UL;
+ cellGrp->drxCfg.drxRetransmissionTimerDl = DRX_RETRANSMISSION_TIMER_DL;
+ cellGrp->drxCfg.drxRetransmissionTimerUl = DRX_RETRANSMISSION_TIMER_UL;
+ cellGrp->drxCfg.drxLongCycleStartOffset.drxLongCycleStartOffsetVal = DRX_LONG_CYCLE_START_OFFSET_VAL;
+ cellGrp->drxCfg.drxLongCycleStartOffset.drxLongCycleStartOffsetChoice = DRX_LONG_CYCLE_START_OFFSET_CHOICE;
+ cellGrp->drxCfg.shortDrxPres = DRX_SHORT_CYCLE_PRESENT;
+ if(cellGrp->drxCfg.shortDrxPres)
+ {
+ cellGrp->drxCfg.shortDrx.drxShortCycle = DRX_SHORT_CYCLE;
+ cellGrp->drxCfg.shortDrx.drxShortCycleTimer = DRX_SHORT_CYCLE_TIMER;
+ }
+ cellGrp->drxCfg.drxSlotOffset = DRX_SLOT_OFFSET;
+#endif
+
}
else
{
* @return ROK/RFAILED
*
*****************************************************************/
-uint8_t fillMacUeCfg(uint16_t cellId, uint8_t gnbDuUef1apId, DuUeCfg *ueCfgDb, MacUeCfg *macUeCfg)
+uint8_t fillMacUeCfg(uint16_t cellId, uint8_t gnbDuUef1apId, uint16_t crnti, DuUeCfg *ueCfgDb, MacUeCfg *macUeCfg)
{
uint8_t ret = ROK, dbIdx = 0, lcIdx = 0, cellIdx = 0;
bool lcIdFound = false;
macUeCfg->cellId = cellId;
macUeCfg->ueId = gnbDuUef1apId;
- GET_CRNTI(macUeCfg->crnti, macUeCfg->ueId);
+ macUeCfg->crnti = crnti;
if(!ueCfgDb)
{
fillDefaultModulation(macUeCfg);
}
+#ifdef NR_DRX
+ if(ueCfgDb->drxCyclePres)
+ {
+ macUeCfg->macCellGrpCfg.drxCfg.drxLongCycleStartOffset.drxLongCycleStartOffsetChoice = ueCfgDb->drxCycle.drxLongCycleLength;
+ if(ueCfgDb->drxCycle.shortDrxCyclePres)
+ {
+ macUeCfg->macCellGrpCfg.drxCfg.shortDrxPres = true;
+ macUeCfg->macCellGrpCfg.drxCfg.shortDrx.drxShortCycle = ueCfgDb->drxCycle.shortDrxCycle.drxShortCycle;
+ macUeCfg->macCellGrpCfg.drxCfg.shortDrx.drxShortCycleTimer = ueCfgDb->drxCycle.shortDrxCycle.drxShortCycleTimer;
+ }
+ else
+ {
+ macUeCfg->macCellGrpCfg.drxCfg.shortDrxPres = false;
+ }
+ }
+#endif
+
/* Filling LC Context */
for(dbIdx = 0; (dbIdx < ueCfgDb->numMacLcs && ret == ROK); dbIdx++)
{
/* Filling Mac Ue Config */
memset(&duCb.actvCellLst[cellIdx]->ueCb[ueIdx].macUeCfg, 0, sizeof(MacUeCfg));
- ret = duBuildAndSendUeCreateReqToMac(ueCcchCtxt->cellId, ueCcchCtxt->gnbDuUeF1apId, NULL,
+ ret = duBuildAndSendUeCreateReqToMac(ueCcchCtxt->cellId, ueCcchCtxt->gnbDuUeF1apId, ueCcchCtxt->crnti, NULL,
&duCb.actvCellLst[cellIdx]->ueCb[ueIdx].macUeCfg);
if(ret == RFAILED)
DU_LOG("\nERROR --> DU APP : Failed to send UE create request to MAC");
*
* ****************************************************************/
-uint8_t duBuildAndSendUeCreateReqToMac(uint16_t cellId, uint8_t gnbDuUeF1apId, DuUeCfg *ueCfgDb, MacUeCfg *duMacUeCfg)
+uint8_t duBuildAndSendUeCreateReqToMac(uint16_t cellId, uint8_t gnbDuUeF1apId, uint16_t crnti, DuUeCfg *ueCfgDb, MacUeCfg *duMacUeCfg)
{
uint8_t ret = ROK;
MacUeCfg *macUeCfg = NULLP;
memset(&pst, 0, sizeof(Pst));
- ret = fillMacUeCfg(cellId, gnbDuUeF1apId, ueCfgDb, duMacUeCfg);
+ ret = fillMacUeCfg(cellId, gnbDuUeF1apId, crnti, ueCfgDb, duMacUeCfg);
if(ret == RFAILED)
{
DU_LOG("\nERROR --> DU APP : Failed to fill MacUeCfg at duBuildAndSendUeCreateReqToMac()");
return ret;
}
+/*******************************************************************
+ *
+ * @brief Build and send RACH Resource request to MAC
+ *
+ * @details
+ *
+ * Function : duBuildAndSendRachRsrcReqToMac
+ * Functionality:
+ * Build and send RACH Resource request to MAC
+ *
+ * @params[in] Cell Id
+ * UE Id
+ * @return ROK - success
+ * RFAILED - failure
+ *
+ * ****************************************************************/
+uint8_t duBuildAndSendRachRsrcReqToMac(uint16_t cellId, uint16_t ueId)
+{
+ uint16_t cellIdx = 0, ssbIdx = 0;
+ Pst pst;
+ MacRachRsrcReq *rachRsrcReq = NULLP;
+
+ GET_CELL_IDX(cellId, cellIdx);
+ if(duCb.actvCellLst[cellIdx] == NULLP)
+ {
+ DU_LOG("\nERROR --> DU APP : Cell Id [%d] not found in duBuildAndSendRachRsrcReqToMac()", cellId);
+ return RFAILED;
+ }
+
+ DU_ALLOC_SHRABL_BUF(rachRsrcReq, sizeof(MacRachRsrcReq));
+ if(!rachRsrcReq)
+ {
+ DU_LOG("\nERROR --> DU APP : Failed to allocate memory for RACH Resource Request in \
+ duBuildAndSendRachRsrcReqToMac()");
+ return RFAILED;
+ }
+
+ rachRsrcReq->cellId = cellId;
+ rachRsrcReq->ueId = ueId;
+ rachRsrcReq->numSsb = duCfgParam.macCellCfg.prachCfg.ssbPerRach;
+ for(ssbIdx = 0; ssbIdx < rachRsrcReq->numSsb; ssbIdx++)
+ {
+ rachRsrcReq->ssbIdx[ssbIdx] = ssbIdx;
+ }
+
+ /* Fill Pst */
+ FILL_PST_DUAPP_TO_MAC(pst, EVENT_MAC_RACH_RESOURCE_REQ);
+
+ if(((*packMacRachRsrcReqOpts[pst.selector])(&pst, rachRsrcReq)) != ROK)
+ {
+ DU_LOG("\nERROR --> DU_APP : Failure in sending RACH Resource Request to MAC at \
+ duBuildAndSendRachRsrcReqToMac()");
+ DU_FREE_SHRABL_BUF(DU_APP_MEM_REGION, DU_POOL, rachRsrcReq, sizeof(MacRachRsrcReq));
+ return RFAILED;
+ }
+
+ return ROK;
+}
+
+/*******************************************************************
+ *
+ * @brief Process RACH resource response from MAC
+ *
+ * @details
+ *
+ * Function : DuProcMacRachRsrcRsp
+ * Functionality:
+ * Process RACH resource response from MAC
+ *
+ * @params[in] Post structure
+ * RACH resource response
+ * @return ROK - success
+ * RFAILED - failure
+ *
+ * ****************************************************************/
+uint8_t DuProcMacRachRsrcRsp(Pst *pst, MacRachRsrcRsp *rachRsrcRsp)
+{
+ uint8_t ret = RFAILED;
+ uint16_t cellIdx = 0;
+ DuCellCb *cellCb = NULLP;
+ DuUeCb *ueCb = NULLP;
+
+ DU_LOG("\nINFO --> DU APP : Received RACH Resource Response from MAC. Cell ID [%d] UE ID [%d]",
+ rachRsrcRsp->cellId, rachRsrcRsp->ueId);
+
+ if(rachRsrcRsp->result == MAC_DU_APP_RSP_OK)
+ {
+ DU_LOG("\nINFO : DU APP : RACH Resource Response from MAC : Result [SUCCESS]");
+
+ /* Fetch Cell Cb */
+ GET_CELL_IDX(rachRsrcRsp->cellId, cellIdx);
+ if(duCb.actvCellLst[cellIdx] && (duCb.actvCellLst[cellIdx]->cellId == rachRsrcRsp->cellId))
+ {
+ cellCb = duCb.actvCellLst[cellIdx];
+
+ /* Fetch UE CB */
+ if(cellCb->ueCb[rachRsrcRsp->ueId-1].gnbDuUeF1apId == rachRsrcRsp->ueId)
+ {
+ ueCb = &cellCb->ueCb[rachRsrcRsp->ueId-1];
+
+ /* Store CRNTI alloted to this UE by MAC */
+ ueCb->crnti = rachRsrcRsp->newCrnti;
+
+ /* Store the assigned CF-RA resources */
+ memcpy(&ueCb->cfraResource, &rachRsrcRsp->cfraResource, sizeof(MacCfraResource));
+
+ /* RACH resources allocated to UE is sent to CU in UE Context Setup Response
+ * along with the result of UE Context setup requested by CU */
+ if((ret = BuildAndSendUeCtxtRsp(rachRsrcRsp->cellId, rachRsrcRsp->ueId)) != ROK)
+ DU_LOG("\nERROR -> DU APP : Failure in BuildAndSendUeCtxtRsp()");
+ }
+ else
+ DU_LOG("\nERROR --> DU APP : UE ID [%d] not found in DuProcMacRachRsrcRsp", rachRsrcRsp->ueId);
+ }
+ else
+ DU_LOG("\nERROR --> DU APP : Cell ID [%d] not found in DuProcMacRachRsrcRsp", rachRsrcRsp->cellId);
+ }
+ else
+ DU_LOG("\nINFO : DU APP : RACH Resource Response from MAC : Result [FAILURE]");
+
+ DU_FREE_SHRABL_BUF(DU_APP_MEM_REGION, DU_POOL, rachRsrcRsp, sizeof(MacRachRsrcRsp));
+ return ret;
+}
+
/*******************************************************************
*
* @brief To update DuUeCb Mac Cfg
/*Filling Cell Group Cfg*/
ret = procUeReCfgCellInfo(macUeCfg, &f1UeDb->duUeCfg.copyOfmacUeCfg, f1UeDb->duUeCfg.cellGrpCfg);
+#ifdef NR_DRX
+ memcpy(&macUeCfg->macCellGrpCfg.drxCfg, &f1UeDb->duUeCfg.copyOfmacUeCfg.macCellGrpCfg.drxCfg, sizeof(DrxCfg));
+#endif
if(ret == ROK)
{
if(macUeCfg->spCellCfg.servCellCfg.initDlBwp.pdschPresent)
{
DU_LOG("\nINFO --> DU APP : MAC UE Create Response : SUCCESS [DU UE F1AP ID : %d]", cfgRsp->ueId);
- if(duCb.actvCellLst[cellIdx] &&
- (duCb.actvCellLst[cellIdx]->ueCb[cfgRsp->ueId -1].gnbDuUeF1apId == cfgRsp->ueId))
+ if(duCb.actvCellLst[cellIdx] && (duCb.actvCellLst[cellIdx]->ueCb[cfgRsp->ueId -1].gnbDuUeF1apId == cfgRsp->ueId))
{
duCb.actvCellLst[cellIdx]->ueCb[cfgRsp->ueId -1].macUeCfg.macUeCfgState = UE_CREATE_COMPLETE;
if((duCb.actvCellLst[cfgRsp->cellId -1]->ueCb[cfgRsp->ueId -1].ueState == UE_HANDIN_IN_PROGRESS) &&
- (duCb.actvCellLst[cfgRsp->cellId -1]->ueCb[cfgRsp->ueId -1].macUeCfg.macUeCfgState == UE_CREATE_COMPLETE) &&
- (duCb.actvCellLst[cfgRsp->cellId -1]->ueCb[cfgRsp->ueId -1].rlcUeCfg.rlcUeCfgState == UE_CREATE_COMPLETE))
- {
- if((ret = duUpdateDuUeCbCfg(cfgRsp->ueId, cfgRsp->cellId)) == ROK)
- {
- if((BuildAndSendUeCtxtRsp(cfgRsp->cellId, cfgRsp->ueId)) != ROK)
- {
- DU_LOG("\nERROR -> DU APP : Failure in BuildAndSendUeCtxtRsp()");
- return RFAILED;
- }
- }
- else
- {
- DU_LOG("\nERROR -> DU APP : Failure in updating DU UE CB");
- return RFAILED;
- }
- }
+ (duCb.actvCellLst[cfgRsp->cellId -1]->ueCb[cfgRsp->ueId -1].macUeCfg.macUeCfgState == UE_CREATE_COMPLETE) &&
+ (duCb.actvCellLst[cfgRsp->cellId -1]->ueCb[cfgRsp->ueId -1].rlcUeCfg.rlcUeCfgState == UE_CREATE_COMPLETE))
+ {
+ if((ret = duUpdateDuUeCbCfg(cfgRsp->ueId, cfgRsp->cellId)) == ROK)
+ {
+ /* If UE is in handover, RACH resource needs to be requested
+ * from MAC for CFRA */
+ if((duBuildAndSendRachRsrcReqToMac(cfgRsp->cellId, cfgRsp->ueId)) != ROK)
+ {
+ DU_LOG("\nERROR --> DU APP : Failed to send RACH Resource Request to MAC");
+ DU_FREE_SHRABL_BUF(DU_APP_MEM_REGION, DU_POOL, cfgRsp, sizeof(MacUeCfgRsp));
+ return RFAILED;
+ }
+ }
+ else
+ {
+ DU_LOG("\nERROR -> DU APP : Failure in updating DU UE CB");
+ DU_FREE_SHRABL_BUF(DU_APP_MEM_REGION, DU_POOL, cfgRsp, sizeof(MacUeCfgRsp));
+ return RFAILED;
+ }
+ }
}
}
else if(pst->event == EVENT_MAC_UE_RECONFIG_RSP)
if((BuildAndSendUeCtxtRsp(cfgRsp->cellId, cfgRsp->ueId)) != ROK)
{
DU_LOG("\nERROR -> DU APP : Failure in BuildAndSendUeCtxtRsp()");
+ DU_FREE_SHRABL_BUF(DU_APP_MEM_REGION, DU_POOL, cfgRsp, sizeof(MacUeCfgRsp));
return RFAILED;
}
}
else
{
DU_LOG("\nERROR -> DU APP : Failure in updating DU UE CB");
+ DU_FREE_SHRABL_BUF(DU_APP_MEM_REGION, DU_POOL, cfgRsp, sizeof(MacUeCfgRsp));
return RFAILED;
}
}
duCb.actvCellLst[cfgRsp->cellId -1]->ueCb[cfgRsp->ueId -1].rlcUeCfg.rlcUeCfgState = UE_CREATE_COMPLETE;
if((duCb.actvCellLst[cfgRsp->cellId -1]->ueCb[cfgRsp->ueId -1].ueState == UE_HANDIN_IN_PROGRESS) &&
- (duCb.actvCellLst[cfgRsp->cellId -1]->ueCb[cfgRsp->ueId -1].macUeCfg.macUeCfgState == UE_CREATE_COMPLETE) &&
- (duCb.actvCellLst[cfgRsp->cellId -1]->ueCb[cfgRsp->ueId -1].rlcUeCfg.rlcUeCfgState == UE_CREATE_COMPLETE))
+ (duCb.actvCellLst[cfgRsp->cellId -1]->ueCb[cfgRsp->ueId -1].macUeCfg.macUeCfgState == UE_CREATE_COMPLETE) &&
+ (duCb.actvCellLst[cfgRsp->cellId -1]->ueCb[cfgRsp->ueId -1].rlcUeCfg.rlcUeCfgState == UE_CREATE_COMPLETE))
{
if((ret = duUpdateDuUeCbCfg(cfgRsp->ueId, cfgRsp->cellId)) == ROK)
{
- if((BuildAndSendUeCtxtRsp(cfgRsp->cellId, cfgRsp->ueId)) != ROK)
+ /* If UE is in handover, RACH resource needs to be requested
+ * from MAC for CFRA */
+ if((duBuildAndSendRachRsrcReqToMac(cfgRsp->cellId, cfgRsp->ueId)) != ROK)
{
- DU_LOG("\nERROR --> DU APP : Failure in BuildAndSendUeCtxtRsp");
+ DU_LOG("\nERROR --> DU APP : Failed to send RACH Resource Request to MAC");
+ DU_FREE_SHRABL_BUF(DU_APP_MEM_REGION, DU_POOL, cfgRsp, sizeof(MacUeCfgRsp));
+ DU_FREE_SHRABL_BUF(DU_APP_MEM_REGION, DU_POOL, cfgRsp, sizeof(RlcUeCfgRsp));
return RFAILED;
}
}
else
{
DU_LOG("\nERROR --> DU APP : Failure in updating DU UE CB");
+ DU_FREE_SHRABL_BUF(DU_APP_MEM_REGION, DU_POOL, cfgRsp, sizeof(RlcUeCfgRsp));
return RFAILED;
}
}
if((BuildAndSendUeCtxtRsp(cfgRsp->cellId, cfgRsp->ueId)) != ROK)
{
DU_LOG("\nERROR --> DU APP : Failure in BuildAndSendUeCtxtRsp");
+ DU_FREE_SHRABL_BUF(DU_APP_MEM_REGION, DU_POOL, cfgRsp, sizeof(RlcUeCfgRsp));
return RFAILED;
}
}
else
{
DU_LOG("\nERROR --> DU APP : Failure in updating DU UE CB");
+ DU_FREE_SHRABL_BUF(DU_APP_MEM_REGION, DU_POOL, cfgRsp, sizeof(RlcUeCfgRsp));
return RFAILED;
}
}
if(macUeCfg)
{
memset(macUeCfg, 0, sizeof(MacUeCfg));
- ret = fillMacUeCfg(cellId, duUeF1apId, ueCfgDb, macUeCfg);
+ ret = fillMacUeCfg(cellId, duUeF1apId, crnti, ueCfgDb, macUeCfg);
if(ret == RFAILED)
DU_LOG("\nERROR --> DU APP : Failed to fill Mac Ue Cfg at duBuildAndSendUeReCfgReqToMac()");
else
memset(&ueCb->macUeCfg, 0, sizeof(MacUeCfg));
/* Since UE attach has not yet happened, crnti is unknow. Hence passing 0 */
- ret = duBuildAndSendUeCreateReqToMac(cellId, ueCb->gnbDuUeF1apId, duUeCfg, &ueCb->macUeCfg);
+ ret = duBuildAndSendUeCreateReqToMac(cellId, ueCb->gnbDuUeF1apId, 0, duUeCfg, &ueCb->macUeCfg);
if(ret == RFAILED)
DU_LOG("\nERROR --> DU APP : Failed to send UE create request to MAC");
/*******************************************************************
*
-* @brief Function to delete Pdsch ServCellCfg
+* @brief Build and send dedicated RACH resource release request to MAC
*
* @details
*
-* Function : deletePdschServCellCfg
+* Function : duBuildAndSendRachRsrcRelToMac
*
-* Functionality: Function to delete Pdsch ServCellCfg
+* Functionality: Function to Build and send dedicated RACH resource
+* release request to MAC
*
-* @params[in] PdschServCellCfg *pdschServCellCfg
-* @return void
+* @params[in] Cell ID
+* UE CB
+* @return ROK - Success
+* RFAILED - Failure
*
* ****************************************************************/
-
-void deletePdschServCellCfg(PdschServCellCfg *pdschServCellCfg)
+uint8_t duBuildAndSendRachRsrcRelToMac(uint16_t cellId, DuUeCb *ueCb)
{
- DU_FREE_SHRABL_BUF(DU_APP_MEM_REGION, DU_POOL,pdschServCellCfg->maxMimoLayers, sizeof(uint8_t));
- DU_FREE_SHRABL_BUF(DU_APP_MEM_REGION, DU_POOL,pdschServCellCfg->maxCodeBlkGrpPerTb, sizeof(MaxCodeBlkGrpPerTB));
- DU_FREE_SHRABL_BUF(DU_APP_MEM_REGION, DU_POOL,pdschServCellCfg->codeBlkGrpFlushInd, sizeof(bool));
- DU_FREE_SHRABL_BUF(DU_APP_MEM_REGION, DU_POOL,pdschServCellCfg->xOverhead, sizeof(PdschXOverhead));
+ Pst pst;
+ MacRachRsrcRel *rachRsrcRel = NULLP;
+
+ DU_ALLOC_SHRABL_BUF(rachRsrcRel, sizeof(MacRachRsrcRel));
+ if(!rachRsrcRel)
+ {
+ DU_LOG("\nERROR --> DU APP : Failed to allocate memory for RACH Resource Release in \
+ duBuildAndSendRachRsrcRelToMac()");
+ return RFAILED;
+ }
+
+ rachRsrcRel->cellId = cellId;
+ rachRsrcRel->ueId = ueCb->gnbDuUeF1apId;
+ rachRsrcRel->crnti = ueCb->crnti;
+
+ /* Fill Pst */
+ FILL_PST_DUAPP_TO_MAC(pst, EVENT_MAC_RACH_RESOURCE_REL);
+
+ if(((*packMacRachRsrcRelOpts[pst.selector])(&pst, rachRsrcRel)) != ROK)
+ {
+ DU_LOG("\nERROR --> DU_APP : Failure in sending RACH Resource Release to MAC at \
+ duBuildAndSendRachRsrcRelToMac()");
+ DU_FREE_SHRABL_BUF(DU_APP_MEM_REGION, DU_POOL, rachRsrcRel, sizeof(MacRachRsrcRel));
+ return RFAILED;
+ }
+
+ return ROK;
}
/*******************************************************************
if(deleteRsp)
{
- if(deleteRsp->result == SUCCESS)
+ if(deleteRsp->result == DEL_SUCCESSFUL)
{
DU_LOG("\nINFO --> DU APP : MAC UE Delete Response : SUCCESS [UE IDX : %d]", deleteRsp->ueId);
GET_CELL_IDX(deleteRsp->cellId, cellIdx);