ulTtiReqPdu->pdu.pusch_pdu.numDmrsCdmGrpsNoData = 1;
ulTtiReqPdu->pdu.pusch_pdu.dmrsPorts = 0;
ulTtiReqPdu->pdu.pusch_pdu.resourceAlloc = \
- currUlSlot->ulInfo.schPuschInfo.resAllocType;
+ currUlSlot->ulInfo.schPuschInfo.fdAlloc.resAllocType;
ulTtiReqPdu->pdu.pusch_pdu.rbStart = \
- currUlSlot->ulInfo.schPuschInfo.fdAlloc.startPrb;
+ currUlSlot->ulInfo.schPuschInfo.fdAlloc.resAlloc.type1.startPrb;
ulTtiReqPdu->pdu.pusch_pdu.rbSize = \
- currUlSlot->ulInfo.schPuschInfo.fdAlloc.numPrb;
+ currUlSlot->ulInfo.schPuschInfo.fdAlloc.resAlloc.type1.numPrb;
ulTtiReqPdu->pdu.pusch_pdu.vrbToPrbMapping = 0;
ulTtiReqPdu->pdu.pusch_pdu.frequencyHopping = 0;
ulTtiReqPdu->pdu.pusch_pdu.txDirectCurrentLocation = 0;
currUlSlot->ulInfo.schPuschInfo.tdAlloc.startSymb;
ulTtiReqPdu->pdu.pusch_pdu.nrOfSymbols = \
currUlSlot->ulInfo.schPuschInfo.tdAlloc.numSymb;
+#ifdef INTEL_FAPI
ulTtiReqPdu->pdu.pusch_pdu.mappingType = \
currUlSlot->ulInfo.schPuschInfo.dmrsMappingType;
ulTtiReqPdu->pdu.pusch_pdu.nrOfDmrsSymbols = \
currUlSlot->ulInfo.schPuschInfo.nrOfDmrsSymbols;
ulTtiReqPdu->pdu.pusch_pdu.dmrsAddPos = \
currUlSlot->ulInfo.schPuschInfo.dmrsAddPos;
+#endif
ulTtiReqPdu->pdu.pusch_pdu.puschData.rvIndex = \
currUlSlot->ulInfo.schPuschInfo.tbInfo.rv;
ulTtiReqPdu->pdu.pusch_pdu.puschData.harqProcessId = \
{
ulTtiReqPdu->pduType = PUCCH_PDU_TYPE;
memset(&ulTtiReqPdu->pdu.pucch_pdu, 0, sizeof(fapi_ul_pucch_pdu_t));
- ulTtiReqPdu->pdu.pucch_pdu.rnti = currUlSlot->ulInfo.schPucchInfo.rnti;
+ ulTtiReqPdu->pdu.pucch_pdu.rnti = currUlSlot->ulInfo.crnti;
/* TODO : Fill handle in raCb when scheduling pucch and access here */
ulTtiReqPdu->pdu.pucch_pdu.handle = 100;
ulTtiReqPdu->pdu.pucch_pdu.bwpSize = macCellCfg->initialUlBwp.bwp.numPrb;
ulTtiReqPdu->pdu.pucch_pdu.formatType = currUlSlot->ulInfo.schPucchInfo.pucchFormat; /* Supporting PUCCH Format 0 */
ulTtiReqPdu->pdu.pucch_pdu.multiSlotTxIndicator = 0; /* No Multi Slot transmission */
- ulTtiReqPdu->pdu.pucch_pdu.prbStart = currUlSlot->ulInfo.schPucchInfo.fdAlloc.startPrb;
- ulTtiReqPdu->pdu.pucch_pdu.prbSize = currUlSlot->ulInfo.schPucchInfo.fdAlloc.numPrb;
+ ulTtiReqPdu->pdu.pucch_pdu.prbStart = currUlSlot->ulInfo.schPucchInfo.fdAlloc.resAlloc.type1.startPrb;
+ ulTtiReqPdu->pdu.pucch_pdu.prbSize = currUlSlot->ulInfo.schPucchInfo.fdAlloc.resAlloc.type1.numPrb;
ulTtiReqPdu->pdu.pucch_pdu.startSymbolIndex = currUlSlot->ulInfo.schPucchInfo.tdAlloc.startSymb;
ulTtiReqPdu->pdu.pucch_pdu.nrOfSymbols = currUlSlot->ulInfo.schPucchInfo.tdAlloc.numSymb;
ulTtiReqPdu->pdu.pucch_pdu.freqHopFlag = currUlSlot->ulInfo.schPucchInfo.intraFreqHop;
ulTtiReqPdu->pdu.pucch_pdu.timeDomainOccIdx = currUlSlot->ulInfo.schPucchInfo.timeDomOCC;
ulTtiReqPdu->pdu.pucch_pdu.preDftOccIdx = currUlSlot->ulInfo.schPucchInfo.occIdx; /* Valid for Format 4 only */
ulTtiReqPdu->pdu.pucch_pdu.preDftOccLen = currUlSlot->ulInfo.schPucchInfo.occLen; /* Valid for Format 4 only */
- ulTtiReqPdu->pdu.pucch_pdu.pi2Bpsk = currUlSlot->ulInfo.schPucchInfo.cmnFormatCfg.pi2BPSK;
- ulTtiReqPdu->pdu.pucch_pdu.addDmrsFlag = currUlSlot->ulInfo.schPucchInfo.cmnFormatCfg.addDmrs;/* Valid for Format 3, 4 only */
+ ulTtiReqPdu->pdu.pucch_pdu.pi2Bpsk = currUlSlot->ulInfo.schPucchInfo.pi2BPSK;
+ ulTtiReqPdu->pdu.pucch_pdu.addDmrsFlag = currUlSlot->ulInfo.schPucchInfo.addDmrs;/* Valid for Format 3, 4 only */
ulTtiReqPdu->pdu.pucch_pdu.dmrsScramblingId = 0; /* Valid for Format 2 */
ulTtiReqPdu->pdu.pucch_pdu.dmrsCyclicShift = 0; /* Valid for Format 4 */
ulTtiReqPdu->pdu.pucch_pdu.srFlag = currUlSlot->ulInfo.schPucchInfo.srFlag;
- ulTtiReqPdu->pdu.pucch_pdu.bitLenHarq = currUlSlot->ulInfo.schPucchInfo.numHarqBits;
+ ulTtiReqPdu->pdu.pucch_pdu.bitLenHarq = currUlSlot->ulInfo.schPucchInfo.harqInfo.harqBitLength;
ulTtiReqPdu->pdu.pucch_pdu.bitLenCsiPart1 = 0; /* Valid for Format 2, 3, 4 */
ulTtiReqPdu->pdu.pucch_pdu.bitLenCsiPart2 = 0; /* Valid for Format 2, 3, 4 */
- ulTtiReqPdu->pdu.pucch_pdu.beamforming.numPrgs = 0; /* Not Supported */
- ulTtiReqPdu->pdu.pucch_pdu.beamforming.prgSize = 0;
- ulTtiReqPdu->pdu.pucch_pdu.beamforming.digBfInterface = 0;
- ulTtiReqPdu->pdu.pucch_pdu.beamforming.rx_bfi[0].beamIdx[0].beamidx = 0;
+ ulTtiReqPdu->pdu.pucch_pdu.beamforming.numPrgs = currUlSlot->ulInfo.schPucchInfo.beamPucchInfo.numPrgs;
+ ulTtiReqPdu->pdu.pucch_pdu.beamforming.prgSize = currUlSlot->ulInfo.schPucchInfo.beamPucchInfo.prgSize;
+ ulTtiReqPdu->pdu.pucch_pdu.beamforming.digBfInterface = currUlSlot->ulInfo.schPucchInfo.beamPucchInfo.digBfInterfaces;
+ ulTtiReqPdu->pdu.pucch_pdu.beamforming.rx_bfi[0].beamIdx[0].beamidx = currUlSlot->ulInfo.schPucchInfo.beamPucchInfo.prg[0].beamIdx[0];
ulTtiReqPdu->pduSize = sizeof(fapi_ul_pucch_pdu_t);
**/
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));
- }
+ uint8_t policyIdx = 0, memberListIdx=0;
+
+ if(cfgReq->numOfRrmPolicy)
+ {
+ if(cfgReq->listOfRrmPolicy)
+ {
+ for(policyIdx = 0; policyIdx<cfgReq->numOfRrmPolicy; policyIdx++)
+ {
+ if(cfgReq->listOfRrmPolicy[policyIdx])
+ {
+ if(cfgReq->listOfRrmPolicy[policyIdx]->numOfRrmPolicyMem)
+ {
+ if(cfgReq->listOfRrmPolicy[policyIdx]->rRMPolicyMemberList)
+ {
+ for(memberListIdx = 0; memberListIdx<cfgReq->listOfRrmPolicy[policyIdx]->numOfRrmPolicyMem; memberListIdx++)
+ {
+ MAC_FREE_SHRABL_BUF(pst->region, pst->pool, cfgReq->listOfRrmPolicy[policyIdx]->rRMPolicyMemberList[memberListIdx], sizeof(RrmPolicyMemberList));
+ }
+ MAC_FREE_SHRABL_BUF(pst->region, pst->pool, cfgReq->listOfRrmPolicy[policyIdx]->rRMPolicyMemberList,\
+ cfgReq->listOfRrmPolicy[policyIdx]->numOfRrmPolicyMem * sizeof(RrmPolicyMemberList*));
+ }
+ }
+ MAC_FREE_SHRABL_BUF(pst->region, pst->pool, cfgReq->listOfRrmPolicy[policyIdx], sizeof(MacSliceRrmPolicy));
+ }
+ }
+ MAC_FREE_SHRABL_BUF(pst->region, pst->pool, cfgReq->listOfRrmPolicy, cfgReq->numOfRrmPolicy * sizeof(MacSliceRrmPolicy*));
+ }
+ }
+
}
/**
* @brief fill Mac Slice Config Rsp
* RFAILED - failure
*
**********************************************************************/
- uint8_t fillSliceCfgInfo(SchSliceCfgReq *schSliceCfgReq, MacSliceCfgReq *macSliceCfgReq)
- {
- uint8_t cfgIdx = 0;
-
- if(macSliceCfgReq->listOfSliceCfg)
- {
- schSliceCfgReq->numOfConfiguredSlice = macSliceCfgReq->numOfConfiguredSlice;
- MAC_ALLOC(schSliceCfgReq->listOfConfirguration, schSliceCfgReq->numOfConfiguredSlice *sizeof(SchRrmPolicyOfSlice*));
- if(schSliceCfgReq->listOfConfirguration == NULLP)
- {
- DU_LOG("\nERROR --> MAC : Memory allocation failed in fillSliceCfgInfo");
- return RFAILED;
- }
- for(cfgIdx = 0; cfgIdx<schSliceCfgReq->numOfConfiguredSlice; cfgIdx++)
- {
- MAC_ALLOC(schSliceCfgReq->listOfConfirguration[cfgIdx], sizeof(SchRrmPolicyOfSlice));
- if(schSliceCfgReq->listOfConfirguration[cfgIdx] == NULLP)
- {
- DU_LOG("\nERROR --> MAC : Memory allocation failed in fillSliceCfgInfo");
- return RFAILED;
- }
-
- memcpy(&schSliceCfgReq->listOfConfirguration[cfgIdx]->snssai, &macSliceCfgReq->listOfSliceCfg[cfgIdx]->snssai, sizeof(Snssai));
-
- if(macSliceCfgReq->listOfSliceCfg[cfgIdx]->rrmPolicyRatio)
- {
- MAC_ALLOC(schSliceCfgReq->listOfConfirguration[cfgIdx]->rrmPolicyRatioInfo, sizeof(SchRrmPolicyRatio));
- if(schSliceCfgReq->listOfConfirguration[cfgIdx]->rrmPolicyRatioInfo == NULLP)
- {
- DU_LOG("\nERROR --> MAC : Memory allocation failed in fillSliceCfgInfo");
- return RFAILED;
- }
- schSliceCfgReq->listOfConfirguration[cfgIdx]->rrmPolicyRatioInfo->policyMaxRatio = macSliceCfgReq->listOfSliceCfg[cfgIdx]->rrmPolicyRatio->policyMaxRatio;
- schSliceCfgReq->listOfConfirguration[cfgIdx]->rrmPolicyRatioInfo->policyMinRatio = macSliceCfgReq->listOfSliceCfg[cfgIdx]->rrmPolicyRatio->policyMinRatio;
- schSliceCfgReq->listOfConfirguration[cfgIdx]->rrmPolicyRatioInfo->policyDedicatedRatio = macSliceCfgReq->listOfSliceCfg[cfgIdx]->rrmPolicyRatio->policyDedicatedRatio;
- }
- }
- }
- return ROK;
- }
+uint8_t fillSliceCfgInfo(SchSliceCfgReq *schSliceCfgReq, MacSliceCfgReq *macSliceCfgReq)
+{
+ uint8_t cfgIdx = 0, memberListIdx = 0, totalSliceCfgRecvd = 0;
+
+ if(macSliceCfgReq->listOfRrmPolicy)
+ {
+ for(cfgIdx = 0; cfgIdx<macSliceCfgReq->numOfRrmPolicy; cfgIdx++)
+ {
+ totalSliceCfgRecvd += macSliceCfgReq->listOfRrmPolicy[cfgIdx]->numOfRrmPolicyMem;
+ }
+
+ schSliceCfgReq->numOfConfiguredSlice = totalSliceCfgRecvd;
+ MAC_ALLOC(schSliceCfgReq->listOfSlices, schSliceCfgReq->numOfConfiguredSlice *sizeof(SchRrmPolicyOfSlice*));
+ if(schSliceCfgReq->listOfSlices == NULLP)
+ {
+ DU_LOG("\nERROR --> MAC : Memory allocation failed in fillSliceCfgInfo");
+ return RFAILED;
+ }
+ for(cfgIdx = 0; cfgIdx<schSliceCfgReq->numOfConfiguredSlice; cfgIdx++)
+ {
+ for(memberListIdx = 0; memberListIdx<macSliceCfgReq->listOfRrmPolicy[cfgIdx]->numOfRrmPolicyMem; memberListIdx++)
+ {
+ if(macSliceCfgReq->listOfRrmPolicy[cfgIdx]->rRMPolicyMemberList[memberListIdx])
+ {
+
+ MAC_ALLOC(schSliceCfgReq->listOfSlices[cfgIdx], sizeof(SchRrmPolicyOfSlice));
+ if(schSliceCfgReq->listOfSlices[cfgIdx] == NULLP)
+ {
+ DU_LOG("\nERROR --> MAC : Memory allocation failed in fillSliceCfgInfo");
+ return RFAILED;
+ }
+
+ memcpy(&schSliceCfgReq->listOfSlices[cfgIdx]->snssai, &macSliceCfgReq->listOfRrmPolicy[cfgIdx]->rRMPolicyMemberList[memberListIdx]->snssai, sizeof(Snssai));
+
+ schSliceCfgReq->listOfSlices[cfgIdx]->rrmPolicyRatioInfo.maxRatio = macSliceCfgReq->listOfRrmPolicy[cfgIdx]->policyRatio.maxRatio;
+ schSliceCfgReq->listOfSlices[cfgIdx]->rrmPolicyRatioInfo.minRatio = macSliceCfgReq->listOfRrmPolicy[cfgIdx]->policyRatio.minRatio;
+ schSliceCfgReq->listOfSlices[cfgIdx]->rrmPolicyRatioInfo.dedicatedRatio = macSliceCfgReq->listOfRrmPolicy[cfgIdx]->policyRatio.dedicatedRatio;
+ }
+ }
+ }
+ }
+ return ROK;
+}
+
/*******************************************************************
*
* @brief Processes Slice Cfg Request recived from DU
FILL_PST_MAC_TO_SCH(schPst, EVENT_SLICE_RECFG_REQ_TO_SCH);
ret = SchMessageRouter(&schPst, (void *)schSliceRecfgReq);
}
-
}
freeMacSliceCfgReq(macSliceRecfgReq, pst);
}
{
for(sliceIdx = 0; sliceIdx<cellCb->cellCfg.plmnInfoList.numSliceSupport; sliceIdx++)
{
- if(!memcmp(&schSliceCfgReq->listOfConfirguration[cfgIdx]->snssai, cellCb->cellCfg.plmnInfoList.snssai[sliceIdx], sizeof(Snssai)))
+ if(!memcmp(&schSliceCfgReq->listOfSlices[cfgIdx]->snssai, cellCb->cellCfg.plmnInfoList.snssai[sliceIdx], sizeof(Snssai)))
{
(*count)++;
sliceFound = true;
else
{
/* Here comparing the slice cfg request with the slice stored in SchDb */
- if(storedSliceCfg->listOfConfirguration)
+ if(storedSliceCfg->listOfSlices)
{
for(sliceIdx = 0; sliceIdx<storedSliceCfg->numOfSliceConfigured; sliceIdx++)
{
- if(!memcmp(&schSliceCfgReq->listOfConfirguration[cfgIdx]->snssai, &storedSliceCfg->listOfConfirguration[sliceIdx]->snssai,\
+ if(!memcmp(&schSliceCfgReq->listOfSlices[cfgIdx]->snssai, &storedSliceCfg->listOfSlices[sliceIdx]->snssai,\
sizeof(Snssai)))
{
(*count)++;
}
- schSliceCfgRsp->listOfSliceCfgRsp[cfgIdx]->snssai = schSliceCfgReq->listOfConfirguration[cfgIdx]->snssai;
+ schSliceCfgRsp->listOfSliceCfgRsp[cfgIdx]->snssai = schSliceCfgReq->listOfSlices[cfgIdx]->snssai;
if(sliceFound == true)
schSliceCfgRsp->listOfSliceCfgRsp[cfgIdx]->rsp = RSP_OK;
else
if(count)
{
storeSliceCfg->numOfSliceConfigured = count;
- SCH_ALLOC(storeSliceCfg->listOfConfirguration, storeSliceCfg->numOfSliceConfigured * sizeof(SchRrmPolicyOfSlice*));
- if(storeSliceCfg->listOfConfirguration == NULLP)
+ SCH_ALLOC(storeSliceCfg->listOfSlices, storeSliceCfg->numOfSliceConfigured * sizeof(SchRrmPolicyOfSlice*));
+ if(storeSliceCfg->listOfSlices == NULLP)
{
DU_LOG("\nERROR --> SCH : Failed to allocate memory in addSliceCfgInSchDb");
return RFAILED;
{
if(cfgRsp.listOfSliceCfgRsp[cfgIdx]->rsp == RSP_OK)
{
- SCH_ALLOC(storeSliceCfg->listOfConfirguration[sliceIdx], sizeof(SchRrmPolicyOfSlice));
- if(storeSliceCfg->listOfConfirguration[sliceIdx] == NULLP)
+ SCH_ALLOC(storeSliceCfg->listOfSlices[sliceIdx], sizeof(SchRrmPolicyOfSlice));
+ if(storeSliceCfg->listOfSlices[sliceIdx] == NULLP)
{
DU_LOG("\nERROR --> SCH : Failed to allocate memory in addSliceCfgInSchDb");
return RFAILED;
}
- SCH_ALLOC(storeSliceCfg->listOfConfirguration[sliceIdx]->rrmPolicyRatioInfo, sizeof(SchRrmPolicyRatio));
- if(storeSliceCfg->listOfConfirguration[sliceIdx]->rrmPolicyRatioInfo == NULLP)
- {
- DU_LOG("\nERROR --> SCH : Failed to allocate memory in addSliceCfgInSchDb");
- return RFAILED;
- }
-
- memcpy(&storeSliceCfg->listOfConfirguration[sliceIdx]->snssai, &cfgReq->listOfConfirguration[sliceIdx]->snssai, sizeof(Snssai));
- memcpy(storeSliceCfg->listOfConfirguration[sliceIdx]->rrmPolicyRatioInfo, cfgReq->listOfConfirguration[sliceIdx]->rrmPolicyRatioInfo,
+ memcpy(&storeSliceCfg->listOfSlices[sliceIdx]->snssai, &cfgReq->listOfSlices[sliceIdx]->snssai, sizeof(Snssai));
+ memcpy(&storeSliceCfg->listOfSlices[sliceIdx]->rrmPolicyRatioInfo, &cfgReq->listOfSlices[sliceIdx]->rrmPolicyRatioInfo,
sizeof(SchRrmPolicyRatio));
sliceIdx++;
}
{
for(cfgIdx = 0; cfgIdx<sliceCfgReq->numOfConfiguredSlice; cfgIdx++)
{
- if(sliceCfgReq->listOfConfirguration[cfgIdx])
+ if(sliceCfgReq->listOfSlices[cfgIdx])
{
- SCH_FREE(sliceCfgReq->listOfConfirguration[cfgIdx]->rrmPolicyRatioInfo, sizeof(SchRrmPolicyRatio));
- SCH_FREE(sliceCfgReq->listOfConfirguration[cfgIdx], sizeof(SchRrmPolicyOfSlice));
+ SCH_FREE(sliceCfgReq->listOfSlices[cfgIdx], sizeof(SchRrmPolicyOfSlice));
}
}
- SCH_FREE(sliceCfgReq->listOfConfirguration, sliceCfgReq->numOfConfiguredSlice * sizeof(SchRrmPolicyOfSlice*));
+ SCH_FREE(sliceCfgReq->listOfSlices, sliceCfgReq->numOfConfiguredSlice * sizeof(SchRrmPolicyOfSlice*));
}
SCH_FREE(sliceCfgReq, sizeof(SchSliceCfgReq));
}
DU_LOG("\nINFO --> SCH : Received Slice Cfg request from MAC");
if(schSliceCfgReq)
{
- if(schSliceCfgReq->listOfConfirguration)
+ if(schSliceCfgReq->listOfSlices)
{
/* filling the slice configuration response of each slice */
if(fillSliceCfgRsp(false, NULLP, schCb[inst].cells[0], schSliceCfgReq, &sliceCfgRsp, &count) != ROK)
if(count)
{
- if(storeSliceCfg->listOfConfirguration == NULLP)
+ if(storeSliceCfg->listOfSlices == NULLP)
{
DU_LOG("\nINFO --> SCH : Memory allocation failed in modifySliceCfgInSchDb");
return RFAILED;
{
for(sliceIdx = 0; sliceIdx<storeSliceCfg->numOfSliceConfigured; sliceIdx++)
{
- if(!memcmp(&storeSliceCfg->listOfConfirguration[sliceIdx]->snssai, &recfgReq->listOfConfirguration[cfgIdx]->snssai, sizeof(Snssai)))
+ if(!memcmp(&storeSliceCfg->listOfSlices[sliceIdx]->snssai, &recfgReq->listOfSlices[cfgIdx]->snssai, sizeof(Snssai)))
{
- memcpy(storeSliceCfg->listOfConfirguration[sliceIdx]->rrmPolicyRatioInfo, recfgReq->listOfConfirguration[cfgIdx]->rrmPolicyRatioInfo,
+ memcpy(&storeSliceCfg->listOfSlices[sliceIdx]->rrmPolicyRatioInfo, &recfgReq->listOfSlices[cfgIdx]->rrmPolicyRatioInfo,
sizeof(SchRrmPolicyRatio));
break;
}
DU_LOG("\nINFO --> SCH : Received Slice ReCfg request from MAC");
if(schSliceRecfgReq)
{
- if(schSliceRecfgReq->listOfConfirguration)
+ if(schSliceRecfgReq->listOfSlices)
{
/* filling the slice configuration response of each slice */
if(fillSliceCfgRsp(true, &schCb[inst].sliceCfg, NULLP, schSliceRecfgReq, &schSliceRecfgRsp, &count) != ROK)
typedef struct schSliceCfg
{
uint8_t numOfSliceConfigured;
- SchRrmPolicyOfSlice **listOfConfirguration;
+ SchRrmPolicyOfSlice **listOfSlices;
}SchSliceCfg;
/**
{
uint8_t dmrsStartSymbol, startSymbol, numSymbol ;
DmrsInfo dmrs;
- FreqDomainAlloc freqAlloc;
+ ResAllocType1 freqAlloc;
TimeDomainAlloc timeAlloc;
SchDlSlotInfo *schDlSlotInfo = NULLP;
{
if(resrcInfo->SchPucchFormat.format0)
{
- ulSchedPucch->fdAlloc.numPrb = PUCCH_NUM_PRB_FORMAT_0_1_4;
+ ulSchedPucch->fdAlloc.resAlloc.type1.numPrb = PUCCH_NUM_PRB_FORMAT_0_1_4;
ulSchedPucch->pucchFormat = PUCCH_FORMAT_0;
ulSchedPucch->initialCyclicShift = resrcInfo->SchPucchFormat.format0->initialCyclicShift;
ulSchedPucch->tdAlloc.numSymb = resrcInfo->SchPucchFormat.format0->numSymbols;
{
if(resrcInfo->SchPucchFormat.format1)
{
- ulSchedPucch->fdAlloc.numPrb = PUCCH_NUM_PRB_FORMAT_0_1_4;
+ ulSchedPucch->fdAlloc.resAlloc.type1.numPrb = PUCCH_NUM_PRB_FORMAT_0_1_4;
ulSchedPucch->pucchFormat = PUCCH_FORMAT_1;
ulSchedPucch->initialCyclicShift = resrcInfo->SchPucchFormat.format1->initialCyclicShift;
ulSchedPucch->tdAlloc.numSymb = resrcInfo->SchPucchFormat.format1->numSymbols;
{
case PUCCH_FORMAT_0:
{
- if(resrcInfo)
+ if(resrcInfo)
fillPucchFormat0(ulSchedPucch, resrcInfo);
return ret;
- }
+ }
case PUCCH_FORMAT_1:
{
- if(resrcInfo)
- {
+ if(resrcInfo)
+ {
fillPucchFormat1(ulSchedPucch, resrcInfo);
- }
- if(formatCfg)
- {
- memcpy(&ulSchedPucch->cmnFormatCfg, formatCfg, sizeof(SchPucchFormatCfg));
- }
- return ret;
- }/* To Add support for more Pucch Format */
-
+ }
+ if(formatCfg)
+ {
+ ulSchedPucch->addDmrs = formatCfg->addDmrs;
+ ulSchedPucch->pi2BPSK = formatCfg->pi2BPSK;
+ }
+ return ret;
+ }/* To Add support for more Pucch Format */
+
default:
DU_LOG("\nERROR --> SCH : Invalid PUCCH format[%d] in fillUlSchedPucchFormatCfg()", pucchFormat);
ret = RFAILED;
{
ulSchedPucch->intraFreqHop = pucchDedCfg->resrc->resrcToAddModList[resrcIdx].intraFreqHop;
ulSchedPucch->secondPrbHop = pucchDedCfg->resrc->resrcToAddModList[resrcIdx].secondPrbHop;
- ulSchedPucch->fdAlloc.startPrb = pucchDedCfg->resrc->resrcToAddModList[resrcIdx].startPrb;
+ ulSchedPucch->fdAlloc.resAlloc.type1.startPrb = pucchDedCfg->resrc->resrcToAddModList[resrcIdx].startPrb;
ulSchedPucch->pucchFormat = pucchDedCfg->resrc->resrcToAddModList[resrcIdx].pucchFormat;
ret = fillUlSchedPucchFormat(ulSchedPucch->pucchFormat, ulSchedPucch,\
&pucchDedCfg->resrc->resrcToAddModList[resrcIdx], NULLP);
if(pucchDedCfg->format1)
{
- memset(&ulSchedPucch->cmnFormatCfg, 0, sizeof(SchPucchFormatCfg));
ret = fillUlSchedPucchFormat(ulSchedPucch->pucchFormat, ulSchedPucch, NULLP, pucchDedCfg->format1);
if(ret == RFAILED)
return ret;
{
srPeriodicity = pucchDedCfg->schedReq->schedAddModList[schedReqIdx].periodicity;
srOffset = pucchDedCfg->schedReq->schedAddModList[schedReqIdx].offset;
- break;
+ break;
}
if(((numSlots * slotInfo->sfn + slotInfo->slot - srOffset) % srPeriodicity) == 0)
{
ulSchedPucch->srFlag = true;
- ulSchedPucch->uciFlag = true;
}
- ulSchedPucch->harqFlag = true;//check how to enable?
}
return ret;
}
* @return ROK/RFAILED
**/
-uint16_t fillPucchResourceInfo(SchPucchInfo *schPucchInfo, Inst inst, SlotTimingInfo slotInfo)
+uint16_t fillPucchResourceInfo(uint8_t ueId, SchPucchInfo *schPucchInfo, Inst inst, SlotTimingInfo slotInfo)
{
- uint8_t ret = ROK, ueId = 0, ueIdx = 0, pucchIdx = 0;
+ uint8_t ret = ROK, ueIdx = 0, pucchIdx = 0;
SchCellCb *cell = schCb[inst].cells[inst];
SchPucchCfgCmn *pucchCfg = NULLP;
SchBwpParams *ulBwp = NULLP;
#endif
uint16_t startPrb;
- GET_UE_ID(schPucchInfo->rnti, ueId);
ueIdx = ueId -1;
#ifdef NR_DRX
- ueCb = schGetUeCb(cell, schPucchInfo->rnti);
+ ueCb = &(cell->ueCb[ueIdx]);
if(ueCb->ueDrxInfoPres)
{
if(!ueCb->drxUeCb.drxUlUeActiveStatus)
&startPrb, PUCCH_NUM_PRB_FORMAT_0_1_4);
if (ret == ROK)
{
- schPucchInfo->fdAlloc.startPrb = ulBwp->freqAlloc.startPrb + pucchResourceSet[pucchIdx][3];
- schPucchInfo->fdAlloc.numPrb = PUCCH_NUM_PRB_FORMAT_0_1_4;
+ schPucchInfo->fdAlloc.resAlloc.type1.startPrb = ulBwp->freqAlloc.startPrb + pucchResourceSet[pucchIdx][3];
+ schPucchInfo->fdAlloc.resAlloc.type1.numPrb = PUCCH_NUM_PRB_FORMAT_0_1_4;
schPucchInfo->tdAlloc.startSymb = pucchResourceSet[pucchIdx][1];
schPucchInfo->tdAlloc.numSymb = pucchResourceSet[pucchIdx][2];
schPucchInfo->pucchFormat = pucchResourceSet[pucchIdx][0];
/* set SR and UCI flag to false */
schPucchInfo->srFlag = true;
- schPucchInfo->uciFlag = true;
}
}
return ROK;
schUlSlotInfo = cell->schUlSlotInfo[ulTimingInfo.slot];
if(schUlSlotInfo->schPuschInfo)
{
- ulSchedInfo.crnti = schUlSlotInfo->schPuschInfo->crnti;
+ GET_CRNTI(ulSchedInfo.crnti, schUlSlotInfo->puschUe);
/* Check the ue drx status if the UE is active for uplink scheduling or not */
#ifdef NR_DRX
ueCb = schGetUeCb(cell, ulSchedInfo.crnti);
if(schUlSlotInfo->pucchPres)
{
- ret = fillPucchResourceInfo(&schUlSlotInfo->schPucchInfo, schInst, ulTimingInfo);
+ GET_CRNTI(ulSchedInfo.crnti, schUlSlotInfo->pucchUe);
+ ret = fillPucchResourceInfo(schUlSlotInfo->pucchUe, &schUlSlotInfo->schPucchInfo, schInst, ulTimingInfo);
if (ret == ROK)
{
ulSchedInfo.dataType |= SCH_DATATYPE_UCI;
memset(&schUlSlotInfo->schPucchInfo, 0, sizeof(SchPucchInfo));
schUlSlotInfo->pucchPres = true;
- schUlSlotInfo->schPucchInfo.rnti = crnti;
if(ueCb != NULLP)
{
/* set HARQ flag to true */
- schUlSlotInfo->schPucchInfo.harqFlag = true;
- schUlSlotInfo->schPucchInfo.numHarqBits = 1; /* 1 bit for HARQ */
+ schUlSlotInfo->schPucchInfo.harqInfo.harqBitLength = 1; /* 1 bit for HARQ */
ADD_DELTA_TO_TIME(pucchTime, pucchTime, 3, cell->numSlots); /* SLOT_DELAY=3 */
cmLListAdd2Tail(&(ueCb->hqDlmap[pucchTime.slot]->hqList), &hqP->ulSlotLnk);
}
tbSize = schCalcTbSizeFromNPrb(numRb, mcs, NUM_PDSCH_SYMBOL);
tbSize = tbSize / 8 ; /*bits to byte conversion*/
- schUlSlotInfo->schPuschInfo->crnti = crnti;
schUlSlotInfo->schPuschInfo->harqProcId = msg3HqProc->procId;
- schUlSlotInfo->schPuschInfo->resAllocType = SCH_ALLOC_TYPE_1;
- schUlSlotInfo->schPuschInfo->fdAlloc.startPrb = startRb;
- schUlSlotInfo->schPuschInfo->fdAlloc.numPrb = numRb;
+ schUlSlotInfo->schPuschInfo->fdAlloc.resAllocType = SCH_ALLOC_TYPE_1;
+ schUlSlotInfo->schPuschInfo->fdAlloc.resAlloc.type1.startPrb = startRb;
+ schUlSlotInfo->schPuschInfo->fdAlloc.resAlloc.type1.numPrb = numRb;
schUlSlotInfo->schPuschInfo->tdAlloc.startSymb = startSymb;
schUlSlotInfo->schPuschInfo->tdAlloc.numSymb = symbLen;
schUlSlotInfo->schPuschInfo->tbInfo.qamOrder = QPSK_MODULATION; /* QPSK modulation */
schUlSlotInfo->schPuschInfo->tbInfo.ndi = NEW_TRANSMISSION; /* new transmission */
schUlSlotInfo->schPuschInfo->tbInfo.rv = 0;
schUlSlotInfo->schPuschInfo->tbInfo.tbSize = tbSize;
+#ifdef INTEL_FAPI
schUlSlotInfo->schPuschInfo->dmrsMappingType = DMRS_MAP_TYPE_A; /* Setting Type-A */
schUlSlotInfo->schPuschInfo->nrOfDmrsSymbols = NUM_DMRS_SYMBOLS;
schUlSlotInfo->schPuschInfo->dmrsAddPos = DMRS_ADDITIONAL_POS;
+#endif
+
if(!isRetx)
{
msg3HqProc->strtSymbl = startSymb;
msg3HqProc->numSymbl = symbLen;
- msg3HqProc->puschResType = schUlSlotInfo->schPuschInfo->resAllocType;
- msg3HqProc->puschStartPrb = schUlSlotInfo->schPuschInfo->fdAlloc.startPrb;
- msg3HqProc->puschNumPrb = schUlSlotInfo->schPuschInfo->fdAlloc.numPrb;
+ msg3HqProc->puschResType = schUlSlotInfo->schPuschInfo->fdAlloc.resAllocType;
+ msg3HqProc->puschStartPrb = schUlSlotInfo->schPuschInfo->fdAlloc.resAlloc.type1.startPrb;
+ msg3HqProc->puschNumPrb = schUlSlotInfo->schPuschInfo->fdAlloc.resAlloc.type1.numPrb;
msg3HqProc->tbInfo.qamOrder = schUlSlotInfo->schPuschInfo->tbInfo.qamOrder;
msg3HqProc->tbInfo.iMcs = schUlSlotInfo->schPuschInfo->tbInfo.mcs;
msg3HqProc->tbInfo.mcsTable = schUlSlotInfo->schPuschInfo->tbInfo.mcsTable;
msg3HqProc->tbInfo.ndi = schUlSlotInfo->schPuschInfo->tbInfo.ndi;
msg3HqProc->tbInfo.rv = schUlSlotInfo->schPuschInfo->tbInfo.rv;
msg3HqProc->tbInfo.tbSzReq = schUlSlotInfo->schPuschInfo->tbInfo.tbSize;
+#ifdef INTEL_FAPI
msg3HqProc->dmrsMappingType = schUlSlotInfo->schPuschInfo->dmrsMappingType;
msg3HqProc->nrOfDmrsSymbols = schUlSlotInfo->schPuschInfo->nrOfDmrsSymbols;
msg3HqProc->dmrsAddPos = schUlSlotInfo->schPuschInfo->dmrsAddPos;
+#endif
}
return schUlSlotInfo->schPuschInfo;
}
dciSlotAlloc->rarInfo.ulGrant.bwpSize = cell->cellCfg.schInitialUlBwp.bwp.freqAlloc.numPrb;
/* Spec 38.213, section 8.2, 0 : MSG3 PUSCH will be transmitted without frequency hopping */
dciSlotAlloc->rarInfo.ulGrant.freqHopFlag = 0;
- dciSlotAlloc->rarInfo.ulGrant.msg3FreqAlloc.startPrb = msg3PuschInfo->fdAlloc.startPrb;
- dciSlotAlloc->rarInfo.ulGrant.msg3FreqAlloc.numPrb = msg3PuschInfo->fdAlloc.numPrb;
+ dciSlotAlloc->rarInfo.ulGrant.msg3FreqAlloc.startPrb = msg3PuschInfo->fdAlloc.resAlloc.type1.startPrb;
+ dciSlotAlloc->rarInfo.ulGrant.msg3FreqAlloc.numPrb = msg3PuschInfo->fdAlloc.resAlloc.type1.numPrb;
dciSlotAlloc->rarInfo.ulGrant.k2Index = k2Index;
dciSlotAlloc->rarInfo.ulGrant.mcs = msg3PuschInfo->tbInfo.mcs;
dciSlotAlloc->rarInfo.ulGrant.tpc = 3; /* TODO : Check appropriate value to be filled */
{
for(sliceCfgIdx = 0; sliceCfgIdx<sliceCfg.numOfSliceConfigured; sliceCfgIdx++)
{
- if(memcmp(snssai, &(sliceCfg.listOfConfirguration[sliceCfgIdx]->snssai), sizeof(Snssai)) == 0)
+ if(memcmp(snssai, &(sliceCfg.listOfSlices[sliceCfgIdx]->snssai), sizeof(Snssai)) == 0)
{
- if(sliceCfg.listOfConfirguration[sliceCfgIdx]->rrmPolicyRatioInfo)
- {
- /*Updating latest RrmPolicy*/
- *rsvdDedicatedPRB = \
- (uint16_t)(((sliceCfg.listOfConfirguration[sliceCfgIdx]->rrmPolicyRatioInfo->policyDedicatedRatio)*(MAX_NUM_RB))/100);
- *isDedicated = TRUE;
- DU_LOG("\nINFO --> SCH : Updated RRM policy, reservedPOOL:%d",*rsvdDedicatedPRB);
- }
+ /*Updating latest RrmPolicy*/
+ *rsvdDedicatedPRB = \
+ (uint16_t)(((sliceCfg.listOfSlices[sliceCfgIdx]->rrmPolicyRatioInfo.dedicatedRatio)*(MAX_NUM_RB))/100);
+ *isDedicated = TRUE;
+ DU_LOG("\nINFO --> SCH : Updated RRM policy, reservedPOOL:%d",*rsvdDedicatedPRB);
}
}
/*case: This LcCtxt is either a Default LC or this LC is part of someother RRM_MemberList*/
if (isRetx == FALSE)
{
- puschInfo.crnti = ueCb->crnti;
- puschInfo.harqProcId = SCH_HARQ_PROC_ID;
- puschInfo.resAllocType = SCH_ALLOC_TYPE_1;
- puschInfo.fdAlloc.startPrb = startPrb;
- puschInfo.fdAlloc.numPrb = numRb;
+ puschInfo.harqProcId = SCH_HARQ_PROC_ID;
+ puschInfo.fdAlloc.resAllocType = SCH_ALLOC_TYPE_1;
+ puschInfo.fdAlloc.resAlloc.type1.startPrb = startPrb;
+ puschInfo.fdAlloc.resAlloc.type1.numPrb = numRb;
puschInfo.tdAlloc.startSymb = startSymb;
puschInfo.tdAlloc.numSymb = symbLen;
puschInfo.tbInfo.qamOrder = ueCb->ueCfg.ulModInfo.modOrder;
puschInfo.tbInfo.ndi = 1; /* new transmission */
puschInfo.tbInfo.rv = 0;
puschInfo.tbInfo.tbSize = tbSize;
+#ifdef INTEL_FAPI
puschInfo.dmrsMappingType = DMRS_MAP_TYPE_A; /* Setting Type-A */
puschInfo.nrOfDmrsSymbols = NUM_DMRS_SYMBOLS;
puschInfo.dmrsAddPos = DMRS_ADDITIONAL_POS;
- hqP->puschResType = puschInfo.resAllocType;
- hqP->puschStartPrb = puschInfo.fdAlloc.startPrb;
- hqP->puschNumPrb = puschInfo.fdAlloc.numPrb;
+#endif
+ hqP->puschResType = puschInfo.fdAlloc.resAllocType;
+ hqP->puschStartPrb = puschInfo.fdAlloc.resAlloc.type1.startPrb;
+ hqP->puschNumPrb = puschInfo.fdAlloc.resAlloc.type1.numPrb;
hqP->strtSymbl = puschInfo.tdAlloc.startSymb;
hqP->numSymbl = puschInfo.tdAlloc.numSymb;
hqP->tbInfo.qamOrder = puschInfo.tbInfo.qamOrder;
hqP->tbInfo.rv = puschInfo.tbInfo.rv;
hqP->tbInfo.rvIdx = 0;
hqP->tbInfo.tbSzReq = puschInfo.tbInfo.tbSize;
+#ifdef INTEL_FAPI
hqP->dmrsMappingType = puschInfo.dmrsMappingType;
hqP->nrOfDmrsSymbols = puschInfo.nrOfDmrsSymbols;
hqP->dmrsAddPos = puschInfo.dmrsAddPos;
+#endif
}
else
{
- puschInfo.crnti = ueCb->crnti;
- puschInfo.harqProcId = hqP->procId;
- puschInfo.resAllocType = hqP->puschResType;
- puschInfo.fdAlloc.startPrb = hqP->puschStartPrb;
- puschInfo.fdAlloc.numPrb = hqP->puschNumPrb;
+ puschInfo.harqProcId = hqP->procId;
+ puschInfo.fdAlloc.resAllocType = hqP->puschResType;
+ puschInfo.fdAlloc.resAlloc.type1.startPrb = hqP->puschStartPrb;
+ puschInfo.fdAlloc.resAlloc.type1.numPrb = hqP->puschNumPrb;
puschInfo.tdAlloc.startSymb = hqP->strtSymbl;
puschInfo.tdAlloc.numSymb = hqP->numSymbl;
puschInfo.tbInfo.qamOrder = hqP->tbInfo.qamOrder;
hqP->tbInfo.rvIdx = (hqP->tbInfo.rvIdx +1) & 0x3;
puschInfo.tbInfo.rv = schCmnDlRvTbl[hqP->tbInfo.rvIdx];
puschInfo.tbInfo.tbSize = hqP->tbInfo.tbSzReq;
+#ifdef INTEL_FAPI
puschInfo.dmrsMappingType = hqP->dmrsMappingType; /* Setting Type-A */
puschInfo.nrOfDmrsSymbols = hqP->nrOfDmrsSymbols;
puschInfo.dmrsAddPos = hqP->dmrsAddPos;
- }
+#endif
+ }
schUlSlotInfo = cellCb->schUlSlotInfo[puschTime.slot];
SCH_ALLOC(schUlSlotInfo->schPuschInfo, sizeof(SchPuschInfo));
if(!schUlSlotInfo->schPuschInfo)
dciInfo->dciInfo.pdschCfg = NULL; /* No DL data being sent */
msg3HqProc->tbInfo.txCntr++;
- puschInfo->crnti = raCb->tcrnti;
- puschInfo->harqProcId = msg3HqProc->procId;
- puschInfo->resAllocType = msg3HqProc->puschResType;
- puschInfo->fdAlloc.startPrb = msg3HqProc->puschStartPrb;
- puschInfo->fdAlloc.numPrb = msg3HqProc->puschNumPrb;
+ puschInfo->harqProcId = msg3HqProc->procId;
+ puschInfo->fdAlloc.resAllocType = msg3HqProc->puschResType;
+ puschInfo->fdAlloc.resAlloc.type1.startPrb = msg3HqProc->puschStartPrb;
+ puschInfo->fdAlloc.resAlloc.type1.numPrb = msg3HqProc->puschNumPrb;
puschInfo->tdAlloc.startSymb = msg3HqProc->strtSymbl;
puschInfo->tdAlloc.numSymb = msg3HqProc->numSymbl;
puschInfo->tbInfo.qamOrder = msg3HqProc->tbInfo.qamOrder;
puschInfo->tbInfo.ndi = msg3HqProc->tbInfo.ndi; /* retransmission */
puschInfo->tbInfo.rv = msg3HqProc->tbInfo.rvIdx;
puschInfo->tbInfo.tbSize = msg3HqProc->tbInfo.tbSzReq;
+#ifdef INTEL_FAPI
puschInfo->dmrsMappingType = msg3HqProc->dmrsMappingType; /* Setting Type-A */
puschInfo->nrOfDmrsSymbols = msg3HqProc->nrOfDmrsSymbols;
puschInfo->dmrsAddPos = msg3HqProc->dmrsAddPos;
-
+#endif
return ROK;
}
dciInfo->formatType = FORMAT0_0;
/* fill UL grant */
- dciInfo->format.format0_0.resourceAllocType = puschInfo->resAllocType;
- dciInfo->format.format0_0.freqAlloc.startPrb = puschInfo->fdAlloc.startPrb;
- dciInfo->format.format0_0.freqAlloc.numPrb = puschInfo->fdAlloc.numPrb;
+ dciInfo->format.format0_0.resourceAllocType = puschInfo->fdAlloc.resAllocType;
+ dciInfo->format.format0_0.freqAlloc.startPrb = puschInfo->fdAlloc.resAlloc.type1.startPrb;
+ dciInfo->format.format0_0.freqAlloc.numPrb = puschInfo->fdAlloc.resAlloc.type1.numPrb;
dciInfo->format.format0_0.timeAlloc.startSymb = puschInfo->tdAlloc.startSymb;
dciInfo->format.format0_0.timeAlloc.numSymb = puschInfo->tdAlloc.numSymb;
dciInfo->format.format0_0.rowIndex = 0; /* row Index */
typedef struct rrmPolicyRatio
{
- uint8_t policyMaxRatio;
- uint8_t policyMinRatio;
- uint8_t policyDedicatedRatio;
+ uint8_t maxRatio;
+ uint8_t minRatio;
+ uint8_t dedicatedRatio;
}RrmPolicyRatio;
-typedef struct macSliceRrmPolicy
+typedef struct rrmPolicyMemberList
{
+ Plmn plmn;
Snssai snssai;
- RrmPolicyRatio *rrmPolicyRatio;
+}RrmPolicyMemberList;
+
+typedef struct macSliceRrmPolicy
+{
+ ResourceType resourceType;
+ uint8_t numOfRrmPolicyMem;
+ RrmPolicyMemberList **rRMPolicyMemberList;
+ RrmPolicyRatio policyRatio;
}MacSliceRrmPolicy;
typedef struct macSliceCfgReq
{
- uint8_t numOfConfiguredSlice;
- MacSliceRrmPolicy **listOfSliceCfg;
+ uint8_t numOfRrmPolicy;
+ MacSliceRrmPolicy **listOfRrmPolicy;
}MacSliceCfgReq;
typedef struct macSliceCfgRsp
{
- uint8_t numSliceCfgRsp;
+ uint8_t numSliceCfgRsp;
MacSliceRsp **listOfSliceCfgRsp;
}MacSliceCfgRsp;
uint16_t numSymb;
}TimeDomainAlloc;
-typedef struct freqDomainAlloc
+typedef struct resAllocType0
+{
+ uint8_t rbBitmap[36];
+}ResAllocType0;
+
+typedef struct resAllocType1
{
uint16_t startPrb;
uint16_t numPrb;
-}FreqDomainAlloc;
-
+}ResAllocType1;
typedef struct
{
{
uint8_t subcarrierSpacing;
uint8_t cyclicPrefix;
- FreqDomainAlloc freqAlloc;
+ ResAllocType1 freqAlloc;
}BwpCfg;
typedef struct prg
{
uint8_t resourceAllocType;
/* since we are using type-1, rbBitmap excluded */
- FreqDomainAlloc freqAlloc;
+ ResAllocType1 freqAlloc;
uint8_t vrbPrbMapping;
} PdschFreqAlloc;
typedef struct schBwpParams
{
- FreqDomainAlloc freqAlloc;
+ ResAllocType1 freqAlloc;
uint8_t scs;
uint8_t cyclicPrefix;
}SchBwpParams;
{
uint8_t ssbIdx; /* SSB Index */
TimeDomainAlloc tdAlloc; /* Time domain allocation */
- FreqDomainAlloc fdAlloc; /* Freq domain allocation */
+ ResAllocType1 fdAlloc; /* Freq domain allocation */
}SsbInfo;
typedef struct sib1AllocInfo
uint8_t prachFormat; /* PRACH Format */
uint8_t numRa; /* Freq domain ocassion */
uint8_t prachStartSymb; /* Freq domain ocassion */
-}PrachSchInfo;
+}SchPrachInfo;
/* Interface structure signifying DL broadcast allocation for SSB, SIB1 */
typedef struct dlBrdcstAlloc
{
uint8_t freqHopFlag;
uint16_t bwpSize;
- FreqDomainAlloc msg3FreqAlloc;
+ ResAllocType1 msg3FreqAlloc;
uint8_t k2Index;
uint8_t mcs;
uint8_t tpc;
{
uint8_t resourceAllocType;
/* since we are using type-1, hence rbBitmap excluded */
- FreqDomainAlloc freqAlloc;
+ ResAllocType1 freqAlloc;
TimeDomainAlloc timeAlloc;
uint16_t rowIndex;
uint8_t mcs;
typedef struct tbInfo
{
- uint8_t qamOrder; /* Modulation Order */
- uint8_t mcs; /* MCS */
+ uint8_t mcs; /* MCS */
+ uint8_t ndi; /* NDI */
+ uint8_t rv; /* Redundancy Version */
+ uint16_t tbSize; /* TB Size */
+ uint8_t qamOrder; /* Modulation Order */
SchMcsTable mcsTable; /* MCS Table */
- uint8_t ndi; /* NDI */
- uint8_t rv; /* Redundancy Version */
- uint16_t tbSize; /* TB Size */
}TbInfo;
+typedef struct freqDomainAlloc
+{
+ uint8_t resAllocType; /* Resource allocation type */
+ union
+ {
+ ResAllocType0 type0;
+ ResAllocType1 type1;
+ }resAlloc;
+}FreqDomainAlloc;
+
typedef struct schPuschInfo
{
- uint16_t crnti;
uint8_t harqProcId; /* HARQ Process ID */
- uint8_t resAllocType; /* Resource allocation type */
FreqDomainAlloc fdAlloc; /* Freq domain allocation */
TimeDomainAlloc tdAlloc; /* Time domain allocation */
TbInfo tbInfo; /* TB info */
+#ifdef INTEL_FAPI
uint8_t dmrsMappingType;
uint8_t nrOfDmrsSymbols;
uint8_t dmrsAddPos;
+#endif
}SchPuschInfo;
+typedef struct harqInfo
+{
+ uint16_t harqAckBitLength;
+ uint8_t betaOffsetHarqAck;
+}HarqInfo;
+
+typedef struct csiInfo
+{
+ uint16_t csiBits;
+ uint8_t betaOffsetCsi;
+}CsiInfo;
+
+typedef struct harqAckInfo
+{
+ uint16_t harqBitLength;
+}HarqFdbkInfo;
+
+typedef struct csiPartInfo
+{
+ uint16_t csiBits;
+}csiFdbkInfo;
+
typedef struct schPucchFormatCfg
{
uint8_t interSlotFreqHop;
typedef struct schPucchInfo
{
- uint16_t rnti;
- uint8_t pucchFormat;
- FreqDomainAlloc fdAlloc; /* Freq domain allocation */
- TimeDomainAlloc tdAlloc; /* Time domain allocation */
+ FreqDomainAlloc fdAlloc;
+ TimeDomainAlloc tdAlloc;
uint8_t srFlag;
- uint8_t harqFlag;
- uint8_t numHarqBits;
- uint8_t uciFlag;
- uint8_t numUciBits;
+ HarqFdbkInfo harqInfo;
+ csiFdbkInfo csiInfo;
+ BeamformingInfo beamPucchInfo;
+ uint8_t pucchFormat;
uint8_t intraFreqHop;
uint16_t secondPrbHop;
uint8_t initialCyclicShift;
uint8_t occLen;
uint8_t occIdx;
uint8_t timeDomOCC;
- SchPucchFormatCfg cmnFormatCfg;
+ uint8_t addDmrs;
+ bool pi2BPSK;
}SchPucchInfo;
+typedef struct schPuschUci
+{
+ uint8_t harqProcId; /* HARQ Process ID */
+ FreqDomainAlloc fdAlloc; /* Freq domain allocation */
+ TimeDomainAlloc tdAlloc; /* Time domain allocation */
+ TbInfo tbInfo; /* TB information */
+ HarqInfo harqInfo; /* Harq Information */
+ CsiInfo csiInfo; /* Csi information*/
+}SchPuschUci;
+
typedef struct ulSchedInfo
{
- uint16_t cellId; /* Cell Id */
- uint16_t crnti; /* CRNI */
+ uint16_t cellId; /* Cell Id */
+ uint16_t crnti; /* CRNI */
SlotTimingInfo slotIndInfo; /* Slot Info: sfn, slot number */
- uint8_t dataType; /* Type of info being scheduled */
- PrachSchInfo prachSchInfo; /* Prach scheduling info */
- SchPuschInfo schPuschInfo; /* Pusch scheduling info */
- SchPucchInfo schPucchInfo; /* Pusch scheduling info */
+ uint8_t dataType; /* Type of info being scheduled */
+ SchPrachInfo prachSchInfo; /* Prach scheduling info */
+ SchPuschInfo schPuschInfo; /* Pusch scheduling info */
+ SchPuschUci schPuschUci; /* Pusch Uci */
+ SchPucchInfo schPucchInfo; /* Pucch and Uci scheduling info */
}UlSchedInfo;
typedef struct rachIndInfo
typedef struct schRrmPolicyRatio
{
- uint8_t policyMaxRatio;
- uint8_t policyMinRatio;
- uint8_t policyDedicatedRatio;
+ uint8_t maxRatio;
+ uint8_t minRatio;
+ uint8_t dedicatedRatio;
}SchRrmPolicyRatio;
typedef struct schRrmPolicyOfSlice
{
Snssai snssai;
- SchRrmPolicyRatio *rrmPolicyRatioInfo;
+ SchRrmPolicyRatio rrmPolicyRatioInfo;
}SchRrmPolicyOfSlice;
typedef struct schSliceCfgReq
{
uint8_t numOfConfiguredSlice;
- SchRrmPolicyOfSlice **listOfConfirguration;
+ SchRrmPolicyOfSlice **listOfSlices;
}SchSliceCfgReq;
typedef struct sliceRsp
cellCb->cellStatus = ACTIVATED;
gCellStatus = CELL_UP;
- if(duCfgParam.tempSliceCfg.rrmPolicy)
- BuildAndSendSliceConfigReq(duCfgParam.tempSliceCfg.rrmPolicy, duCfgParam.tempSliceCfg.totalRrmPolicy, duCfgParam.tempSliceCfg.totalSliceCount);
+ if(duCfgParam.tempSliceCfg.numOfRrmPolicy)
+ BuildAndSendSliceConfigReq();
#ifdef O1_ENABLE
DU_LOG("\nINFO --> DU APP : Raise cell UP alarm for cell id=%d", cellId->cellId);
raiseCellAlrm(CELL_UP_ALARM_ID, cellId->cellId);
uint8_t duProcCellsToBeActivated(uint8_t *plmnStr, uint16_t nci, uint16_t nRPci);
void duProcF1SetupRsp();
uint8_t duGetCellCb(uint16_t cellId, DuCellCb **cellCb);
-uint8_t BuildAndSendSliceConfigReq(RrmPolicy *rrmPolicy[], uint8_t totalRrrmPolicy, uint8_t totalSliceCfgReq);
-uint8_t BuildAndSendSliceRecfgReq(RrmPolicy *rrmPolicy[], uint8_t totalRrmPolicy, uint8_t totalSliceRecfg);
+uint8_t BuildAndSendSliceConfigReq();
+uint8_t BuildAndSendSliceRecfgReq();
uint8_t processPagingMsg(uint16_t cellId, DuPagingMsg *rcvdF1apPagingParam);
uint8_t BuildAndSendDlPcchIndToMac(uint16_t cellId, uint16_t pf, uint8_t i_s, CmLListCp *pageUeLL);
#endif
duPort[E2_INTERFACE] = g_cfg.RIC_Port;
#else
duPort[F1_INTERFACE] = F1_SCTP_PORT; /* DU Port idx 0 38472 */
- duPort[E2_INTERFACE] = E2_SCTP_PORT; /* RIC Port idx 1 38482 */
+ duPort[E2_INTERFACE] = E2_SCTP_PORT; /* RIC Port idx 1 36421 */
#endif
return ROK;
}
* RFAILED - failure
*
* ****************************************************************/
-uint8_t cpyRrmPolicyInDuCfgParams(RrmPolicyList rrmPolicy[], uint8_t policyNum, CopyOfRecvdSliceCfg *tempSliceCfg)
+uint8_t cpyRrmPolicyInDuCfgParams(RrmPolicyList rrmPolicy[], uint8_t policyNum, MacSliceCfgReq *tempSliceCfg)
{
- uint8_t policyIdx = 0, memberListIdx = 0, count = 0;
-
+ uint8_t policyIdx = 0, memberListIdx = 0;
if(policyNum)
{
- tempSliceCfg->totalRrmPolicy = policyNum;
- DU_ALLOC(tempSliceCfg->rrmPolicy, tempSliceCfg->totalRrmPolicy * sizeof(RrmPolicy*));
- if(tempSliceCfg->rrmPolicy == NULLP)
+ tempSliceCfg->numOfRrmPolicy = policyNum;
+ DU_ALLOC_SHRABL_BUF(tempSliceCfg->listOfRrmPolicy, tempSliceCfg->numOfRrmPolicy * sizeof(MacSliceRrmPolicy*));
+ if(!tempSliceCfg->listOfRrmPolicy)
{
DU_LOG("\nERROR --> DU APP : Memory allocation failed in cpyRrmPolicyInDuCfgParams");
return RFAILED;
}
- for(policyIdx = 0; policyIdx<tempSliceCfg->totalRrmPolicy; policyIdx++)
+ for(policyIdx = 0; policyIdx<tempSliceCfg->numOfRrmPolicy; policyIdx++)
{
- DU_ALLOC(tempSliceCfg->rrmPolicy[policyIdx], sizeof(RrmPolicy));
- if(tempSliceCfg->rrmPolicy[policyIdx] == NULLP)
+ DU_ALLOC_SHRABL_BUF(tempSliceCfg->listOfRrmPolicy[policyIdx], sizeof(MacSliceRrmPolicy));
+ if(!tempSliceCfg->listOfRrmPolicy[policyIdx])
{
DU_LOG("\nERROR --> DU APP : Memory allocation failed in cpyRrmPolicyInDuCfgParams");
return RFAILED;
}
-
- if(rrmPolicy[policyIdx].rRMMemberNum)
+
+ tempSliceCfg->listOfRrmPolicy[policyIdx]->resourceType = rrmPolicy[policyIdx].resourceType;
+
+ tempSliceCfg->listOfRrmPolicy[policyIdx]->numOfRrmPolicyMem = rrmPolicy[policyIdx].rRMMemberNum;
+
+ if(tempSliceCfg->listOfRrmPolicy[policyIdx]->numOfRrmPolicyMem)
{
- tempSliceCfg->rrmPolicy[policyIdx]->numMemberList = rrmPolicy[policyIdx].rRMMemberNum;
- DU_ALLOC(tempSliceCfg->rrmPolicy[policyIdx]->memberList, tempSliceCfg->rrmPolicy[policyIdx]->numMemberList * sizeof(PolicyMemberList*))
- if(tempSliceCfg->rrmPolicy[policyIdx]->memberList == NULLP)
+ DU_ALLOC_SHRABL_BUF(tempSliceCfg->listOfRrmPolicy[policyIdx]->rRMPolicyMemberList,\
+ tempSliceCfg->listOfRrmPolicy[policyIdx]->numOfRrmPolicyMem * sizeof(RrmPolicyMemberList*));
+
+ if(!tempSliceCfg->listOfRrmPolicy[policyIdx]->rRMPolicyMemberList)
{
DU_LOG("\nERROR --> DU APP : Memory allocation failed in cpyRrmPolicyInDuCfgParams");
return RFAILED;
}
- for(memberListIdx = 0; memberListIdx<tempSliceCfg->rrmPolicy[policyIdx]->numMemberList; memberListIdx++)
+
+ for(memberListIdx = 0; memberListIdx<tempSliceCfg->listOfRrmPolicy[policyIdx]->numOfRrmPolicyMem; memberListIdx++)
{
- DU_ALLOC(tempSliceCfg->rrmPolicy[policyIdx]->memberList[memberListIdx], sizeof(PolicyMemberList))
- if(tempSliceCfg->rrmPolicy[policyIdx]->memberList[memberListIdx] == NULLP)
+ DU_ALLOC_SHRABL_BUF(tempSliceCfg->listOfRrmPolicy[policyIdx]->rRMPolicyMemberList[memberListIdx], sizeof(RrmPolicyMemberList));
+ if(!tempSliceCfg->listOfRrmPolicy[policyIdx]->rRMPolicyMemberList[memberListIdx])
{
DU_LOG("\nERROR --> DU APP : Memory allocation failed in cpyRrmPolicyInDuCfgParams");
return RFAILED;
}
- memcpy(&tempSliceCfg->rrmPolicy[policyIdx]->memberList[memberListIdx]->snssai.sd, &rrmPolicy[policyIdx].rRMPolicyMemberList[memberListIdx].sd, 3 * sizeof(uint8_t));
- memcpy(&tempSliceCfg->rrmPolicy[policyIdx]->memberList[memberListIdx]->snssai.sst, &rrmPolicy[policyIdx].rRMPolicyMemberList[memberListIdx].sst, sizeof(uint8_t));
- memcpy(&tempSliceCfg->rrmPolicy[policyIdx]->memberList[memberListIdx]->plmn.mcc, &rrmPolicy[policyIdx].rRMPolicyMemberList[memberListIdx].mcc, 3 * sizeof(uint8_t));
- memcpy(&tempSliceCfg->rrmPolicy[policyIdx]->memberList[memberListIdx]->plmn.mnc, &rrmPolicy[policyIdx].rRMPolicyMemberList[memberListIdx].mnc, 3 * sizeof(uint8_t));
- count++;
+ memcpy(&tempSliceCfg->listOfRrmPolicy[policyIdx]->rRMPolicyMemberList[memberListIdx]->snssai.sd,\
+ &rrmPolicy[policyIdx].rRMPolicyMemberList[memberListIdx].sd, 3 * sizeof(uint8_t));
+ memcpy(&tempSliceCfg->listOfRrmPolicy[policyIdx]->rRMPolicyMemberList[memberListIdx]->snssai.sst,\
+ &rrmPolicy[policyIdx].rRMPolicyMemberList[memberListIdx].sst, sizeof(uint8_t));
+ memcpy(&tempSliceCfg->listOfRrmPolicy[policyIdx]->rRMPolicyMemberList[memberListIdx]->plmn.mcc,\
+ &rrmPolicy[policyIdx].rRMPolicyMemberList[memberListIdx].mcc, 3 * sizeof(uint8_t));
+ memcpy(&tempSliceCfg->listOfRrmPolicy[policyIdx]->rRMPolicyMemberList[memberListIdx]->plmn.mnc,\
+ &rrmPolicy[policyIdx].rRMPolicyMemberList[memberListIdx].mnc, 3 * sizeof(uint8_t));
}
+ tempSliceCfg->listOfRrmPolicy[policyIdx]->policyRatio.maxRatio = rrmPolicy[policyIdx].rRMPolicyMaxRatio;
+ tempSliceCfg->listOfRrmPolicy[policyIdx]->policyRatio.minRatio = rrmPolicy[policyIdx].rRMPolicyMinRatio;
+ tempSliceCfg->listOfRrmPolicy[policyIdx]->policyRatio.dedicatedRatio = rrmPolicy[policyIdx].rRMPolicyDedicatedRatio;
}
-
- tempSliceCfg->rrmPolicy[policyIdx]->rsrcType = rrmPolicy[policyIdx].resourceType;
- tempSliceCfg->rrmPolicy[policyIdx]->policyMaxRatio = rrmPolicy[policyIdx].rRMPolicyMaxRatio;
- tempSliceCfg->rrmPolicy[policyIdx]->policyMinRatio = rrmPolicy[policyIdx].rRMPolicyMinRatio;
- tempSliceCfg->rrmPolicy[policyIdx]->policyDedicatedRatio = rrmPolicy[policyIdx].rRMPolicyDedicatedRatio;
-
}
- tempSliceCfg->totalSliceCount = count;
}
+
return ROK;
}
+
/*******************************************************************
*
* @brief Reads config and posts message to du_app on completion
SrvCellCfgCommSib srvCellCfgCommSib;
}Sib1Params;
-typedef struct policyMemberList
-{
- Plmn plmn;
- Snssai snssai;
-}PolicyMemberList;
-
-typedef struct rrmPolicy
-{
- ResourceType rsrcType;
- uint8_t numMemberList;
- PolicyMemberList **memberList;
- uint8_t policyMaxRatio;
- uint8_t policyMinRatio;
- uint8_t policyDedicatedRatio;
-}RrmPolicy;
-
-typedef struct copyOfRecvdSliceCfg
-{
- RrmPolicy **rrmPolicy;
- uint8_t totalRrmPolicy;
- uint8_t totalSliceCount;
-}CopyOfRecvdSliceCfg;
-
typedef struct duCfgParams
{
SctpParams sctpParams; /* SCTP Params */
MacCellCfg macCellCfg; /* MAC cell configuration */
MibParams mibParams; /* MIB Params */
Sib1Params sib1Params; /* SIB1 Params */
- CopyOfRecvdSliceCfg tempSliceCfg;
+ MacSliceCfgReq tempSliceCfg;
}DuCfgParams;
typedef struct f1SetupMsg
uint8_t readCfg();
uint8_t duReadCfg();
uint16_t calcSliv(uint8_t startSymbol, uint8_t lengthSymbol);
-uint8_t cpyRrmPolicyInDuCfgParams(RrmPolicyList rrmPolicy[], uint8_t policyNum, CopyOfRecvdSliceCfg *tempSliceCfg);
+uint8_t cpyRrmPolicyInDuCfgParams(RrmPolicyList rrmPolicy[], uint8_t policyNum, MacSliceCfgReq *tempSliceCfg);
#endif /* __DU_CONFIG_H__ */
{
if(f1DlRrcMsg->protocolIEs.list.array[idx]->value.choice.RRCContainer.size > 0)
{
- dlMsg.rrcMsgSize = f1DlRrcMsg->protocolIEs.list.array[idx]->value.choice.RRCContainer.size;
- DU_ALLOC_SHRABL_BUF(dlMsg.rrcMsgPdu, dlMsg.rrcMsgSize);
- if(dlMsg.rrcMsgPdu)
- {
- memcpy(dlMsg.rrcMsgPdu, f1DlRrcMsg->protocolIEs.list.array[idx]->value.choice.RRCContainer.buf,\
- dlMsg.rrcMsgSize);
- }
- else
- {
- DU_LOG("\nERROR --> DU APP : Memory alloc Failed at RRC Container at procF1DlRrcMsgTrans()");
- return RFAILED;
- }
- }
- else
- {
- DU_LOG("\nERROR --> DU_APP : RRC Container Size is invalid:%ld",\
- f1DlRrcMsg->protocolIEs.list.array[idx]->value.choice.RRCContainer.size);
- return RFAILED;
- }
- break;
- }
- case ProtocolIE_ID_id_RRCDeliveryStatusRequest:
- {
- dlMsg.deliveryStatRpt = true;
- break;
- }
- default:
- DU_LOG("\nERROR --> DU_APP : Invalid IE received in DL RRC Msg Transfer:%ld",
- f1DlRrcMsg->protocolIEs.list.array[idx]->id);
+ dlMsg.rrcMsgSize = f1DlRrcMsg->protocolIEs.list.array[idx]->value.choice.RRCContainer.size;
+ DU_ALLOC_SHRABL_BUF(dlMsg.rrcMsgPdu, dlMsg.rrcMsgSize);
+ if(dlMsg.rrcMsgPdu)
+ {
+ memcpy(dlMsg.rrcMsgPdu, f1DlRrcMsg->protocolIEs.list.array[idx]->value.choice.RRCContainer.buf,\
+ dlMsg.rrcMsgSize);
+ }
+ else
+ {
+ DU_LOG("\nERROR --> DU APP : Memory alloc Failed at RRC Container at procF1DlRrcMsgTrans()");
+ return RFAILED;
+ }
+ }
+ else
+ {
+ DU_LOG("\nERROR --> DU_APP : RRC Container Size is invalid:%ld",\
+ f1DlRrcMsg->protocolIEs.list.array[idx]->value.choice.RRCContainer.size);
+ return RFAILED;
+ }
+ break;
+ }
+ case ProtocolIE_ID_id_RRCDeliveryStatusRequest:
+ {
+ dlMsg.deliveryStatRpt = true;
+ break;
+ }
+ default:
+ DU_LOG("\nERROR --> DU_APP : Invalid IE received in DL RRC Msg Transfer:%ld",
+ f1DlRrcMsg->protocolIEs.list.array[idx]->id);
}
}
{
if(duCb.sliceState == SLICE_INFO_NOT_AVAILABLE)
{
- BuildAndSendSliceConfigReq(duCfgParam.tempSliceCfg.rrmPolicy, duCfgParam.tempSliceCfg.totalRrmPolicy,\
- duCfgParam.tempSliceCfg.totalSliceCount);
+ BuildAndSendSliceConfigReq();
}
else
{
- BuildAndSendSliceRecfgReq(duCfgParam.tempSliceCfg.rrmPolicy, duCfgParam.tempSliceCfg.totalRrmPolicy,\
- duCfgParam.tempSliceCfg.totalSliceCount);
+ BuildAndSendSliceRecfgReq();
}
}
}
return ROK;
}
-/*******************************************************************
- *
- * @brief Free tempSLiceCfg stored in duCfgParams
- *
- * @details
- *
- * Function : duFreeTempSliceCfg
- *
- * Functionality: Free tempSLiceCfg stored in duCfgParams
- *
- * @params[in] Post structure,
- *
- * @return Void
- *
- * ****************************************************************/
-
-void duFreeTempSliceCfg()
-{
- uint8_t policyIdx = 0, memberListTdx =0;
- CopyOfRecvdSliceCfg *tempSliceCfg = &duCfgParam.tempSliceCfg;
-
- if(tempSliceCfg->totalRrmPolicy)
- {
- for(policyIdx = 0; policyIdx<tempSliceCfg->totalRrmPolicy; policyIdx++)
- {
- if(tempSliceCfg->rrmPolicy[policyIdx]->numMemberList)
- {
- for(memberListTdx = 0; memberListTdx<tempSliceCfg->rrmPolicy[policyIdx]->numMemberList; memberListTdx++)
- {
- DU_FREE(tempSliceCfg->rrmPolicy[policyIdx]->memberList[memberListTdx], sizeof(PolicyMemberList));
- }
- DU_FREE(tempSliceCfg->rrmPolicy[policyIdx]->memberList, (tempSliceCfg->rrmPolicy[policyIdx]->numMemberList) * sizeof(PolicyMemberList*));
- }
- DU_FREE(tempSliceCfg->rrmPolicy[policyIdx], sizeof(RrmPolicy));
- }
- DU_FREE(tempSliceCfg->rrmPolicy, tempSliceCfg->totalRrmPolicy* sizeof(RrmPolicy*));
- }
- memset(tempSliceCfg, 0, sizeof(CopyOfRecvdSliceCfg));
-}
-
/*******************************************************************
*
* @brief free the slice cfg rsp
}
duFreeSliceCfgRsp(pst, cfgRsp);
}
- duFreeTempSliceCfg();
return ROK;
}
-/*******************************************************************
- *
- * @brief Fill the slice configration and rrm policy ratio
- * information received form O1
- *
- * @details
- *
- * Function : fillSliceCfgReCfgInfo
- *
- * Functionality: Fill the slice configration and recfg info
- *
- * @params[in] Post structure
- *
- * @return ROK - success
- * RFAILED - failure
- *
- * ****************************************************************/
-
-uint8_t fillSliceCfgReCfgInfo(MacSliceRecfgReq *sliceRecfgReq, RrmPolicy *rrmPolicy[], uint8_t totalRrmPolicy, uint8_t totalSliceCount)
-{
- uint8_t sliceIdx = 0, cfgIdx = 0, memberListIdx = 0;
-
- if(totalRrmPolicy)
- {
- DU_ALLOC_SHRABL_BUF(sliceRecfgReq->listOfSliceCfg, totalSliceCount*sizeof(MacSliceRrmPolicy*));
- if(sliceRecfgReq->listOfSliceCfg == NULLP)
- {
- DU_LOG("\nERROR --> DU_APP : Memory allocation failed in fillSliceCfgReCfgInfo");
- return RFAILED;
- }
-
- for(sliceIdx = 0; sliceIdx<totalRrmPolicy; sliceIdx++)
- {
- for(memberListIdx = 0; memberListIdx<rrmPolicy[sliceIdx]->numMemberList; memberListIdx++)
- {
- DU_ALLOC_SHRABL_BUF(sliceRecfgReq->listOfSliceCfg[cfgIdx], sizeof(MacSliceRrmPolicy));
- if(sliceRecfgReq->listOfSliceCfg[cfgIdx] == NULLP)
- {
- DU_LOG("\nERROR --> DU_APP : Memory allocation failed in fillSliceCfgReCfgInfo");
- return RFAILED;
- }
-
-
- memcpy(&sliceRecfgReq->listOfSliceCfg[cfgIdx]->snssai, &rrmPolicy[sliceIdx]->memberList[memberListIdx]->snssai, sizeof(Snssai));
-
- DU_ALLOC_SHRABL_BUF(sliceRecfgReq->listOfSliceCfg[cfgIdx]->rrmPolicyRatio, sizeof(RrmPolicyRatio));
- if(sliceRecfgReq->listOfSliceCfg[cfgIdx]->rrmPolicyRatio == NULLP)
- {
- DU_LOG("\nERROR --> DU_APP : Memory allocation failed in fillSliceCfgReCfgInfo");
- return RFAILED;
- }
-
- sliceRecfgReq->listOfSliceCfg[cfgIdx]->rrmPolicyRatio->policyMaxRatio = rrmPolicy[sliceIdx]->policyMaxRatio;
- sliceRecfgReq->listOfSliceCfg[cfgIdx]->rrmPolicyRatio->policyMinRatio = rrmPolicy[sliceIdx]->policyMinRatio;
- sliceRecfgReq->listOfSliceCfg[cfgIdx]->rrmPolicyRatio->policyDedicatedRatio = rrmPolicy[sliceIdx]->policyDedicatedRatio;
- sliceRecfgReq->numOfConfiguredSlice++;
- cfgIdx++;
- }
- }
- }
- return ROK;
-}
-
/*******************************************************************
*
* @brief Fill the slice configration and rrm policy related
* RFAILED - failure
*
* ****************************************************************/
-uint8_t BuildAndSendSliceConfigReq(RrmPolicy *rrmPolicy[], uint8_t totalRrmPolicy, uint8_t totalSliceCnt)
+uint8_t BuildAndSendSliceConfigReq()
{
Pst pst;
MacSliceCfgReq *sliceCfgReq;
}
else
{
- if(fillSliceCfgReCfgInfo(sliceCfgReq, rrmPolicy, totalRrmPolicy, totalSliceCnt) != ROK)
- {
- DU_LOG("\nERROR --> DU_APP : Failed to fill slice Configuration info in MacSliceCfgReq");
- return RFAILED;
- }
+ memcpy(sliceCfgReq, &duCfgParam.tempSliceCfg, sizeof(MacSliceCfgReq));
FILL_PST_DUAPP_TO_MAC(pst, EVENT_MAC_SLICE_CFG_REQ);
DU_LOG("\nDEBUG --> DU_APP : Sending Slice Cfg Request to MAC ");
return ROK;
}
-
/*******************************************************************
*
* @brief Fill the slice configration and rrm policy related
* RFAILED - failure
*
* ****************************************************************/
-uint8_t BuildAndSendSliceRecfgReq(RrmPolicy *rrmPolicy[], uint8_t totalRrmPolicy, uint8_t totalSliceCount)
+uint8_t BuildAndSendSliceRecfgReq()
{
Pst pst;
MacSliceRecfgReq *sliceRecfgReq = NULLP;
}
else
{
- if(fillSliceCfgReCfgInfo(sliceRecfgReq, rrmPolicy, totalRrmPolicy, totalSliceCount) != ROK)
- {
- DU_LOG("\nERROR --> DU_APP: Failed to fill slice cfg request info");
- return RFAILED;
- }
+ memcpy(sliceRecfgReq, &duCfgParam.tempSliceCfg, sizeof(MacSliceRecfgReq));
+
FILL_PST_DUAPP_TO_MAC(pst, EVENT_MAC_SLICE_RECFG_REQ);
DU_LOG("\nDEBUG --> DU_APP: Sending Slice ReCfg Request to MAC ");
}
duFreeSliceCfgRsp(pst, reCfgRsp);
}
- duFreeTempSliceCfg();
return ROK;
}