- rachIndInfo.cellId = rachInd->rachPdu[pduIdx].pci;
- /* TODO : A.ocate unique crnti for each ue */
- rachIndInfo.crnti = 100;
- rachIndInfo.timingInfo.sfn = rachInd->timingInfo.sfn;
- rachIndInfo.timingInfo.slot = rachInd->timingInfo.slot;
- rachIndInfo.slotIdx = rachInd->rachPdu[pduIdx].slotIdx;
- rachIndInfo.symbolIdx = rachInd->rachPdu[pduIdx].symbolIdx;
- rachIndInfo.freqIdx = rachInd->rachPdu[pduIdx].freqIdx;
- rachIndInfo.preambleIdx = \
- rachInd->rachPdu[pduIdx].preamInfo[preambleIdx].preamIdx;
- rachIndInfo.timingAdv = \
- rachInd->rachPdu[pduIdx].preamInfo[preambleIdx].timingAdv;
-
- /* storing the value in macRaCb */
- createMacRaCb(rachIndInfo.cellId, rachIndInfo.crnti);
-
- return(sendRachIndMacToSch(&rachIndInfo));
+ MAC_ALLOC(rachIndInfo, sizeof(RachIndInfo));
+ if(!rachIndInfo)
+ {
+ DU_LOG("\nERROR --> MAC : Memory allocation failure in fapiMacRachInd");
+ MAC_FREE_SHRABL_BUF(pst->region, pst->pool, rachInd, sizeof(RachInd));
+ return RFAILED;
+ }
+
+ rachIndInfo->cellId = rachInd->cellId;
+ rachIndInfo->timingInfo.sfn = rachInd->timingInfo.sfn;
+ rachIndInfo->timingInfo.slot = rachInd->timingInfo.slot;
+ rachIndInfo->slotIdx = rachInd->rachPdu[pduIdx].slotIdx;
+ rachIndInfo->symbolIdx = rachInd->rachPdu[pduIdx].symbolIdx;
+ rachIndInfo->freqIdx = rachInd->rachPdu[pduIdx].freqIdx;
+ rachIndInfo->preambleIdx = \
+ rachInd->rachPdu[pduIdx].preamInfo[preambleIdx].preamIdx;
+ rachIndInfo->timingAdv = \
+ rachInd->rachPdu[pduIdx].preamInfo[preambleIdx].timingAdv;
+
+ /* Store the value in macRaCb */
+ createMacRaCb(rachIndInfo);
+
+ /* Free sharable buffer used to send RACH Indication from lower MAC to MAC */
+ MAC_FREE_SHRABL_BUF(pst->region, pst->pool, rachInd, sizeof(RachInd));
+
+ /* Send RACH Indication to SCH */
+ return(sendRachIndMacToSch(rachIndInfo));