Merge "[EPIC-ID: ODUHIGH-488][TASK-ID: ODUHIGH-494]SCH framework update to support...
authorHarshita Lal <harshita.lal@radisys.com>
Wed, 8 Feb 2023 08:42:40 +0000 (08:42 +0000)
committerGerrit Code Review <gerrit@o-ran-sc.org>
Wed, 8 Feb 2023 08:42:40 +0000 (08:42 +0000)
17 files changed:
src/5gnrmac/lwr_mac_fsm.c
src/5gnrmac/mac_cfg_hdl.c
src/5gnrmac/mac_msg_hdl.c
src/5gnrsch/sch.c
src/5gnrsch/sch.h
src/5gnrsch/sch_common.c
src/5gnrsch/sch_rach.c
src/5gnrsch/sch_ue_mgr.c
src/cm/du_app_mac_inf.h
src/cm/mac_sch_interface.h
src/du_app/du_cell_mgr.c
src/du_app/du_cell_mgr.h
src/du_app/du_cfg.c
src/du_app/du_cfg.h
src/du_app/du_f1ap_msg_hdl.c
src/du_app/du_mgr_main.c
src/du_app/du_msg_hdl.c

index 9c4b1b8..cb8c02e 100644 (file)
@@ -4208,11 +4208,11 @@ void fillPuschPdu(fapi_ul_tti_req_pdu_t *ulTtiReqPdu, fapi_vendor_ul_tti_req_pdu
       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;
@@ -4221,12 +4221,14 @@ void fillPuschPdu(fapi_ul_tti_req_pdu_t *ulTtiReqPdu, fapi_vendor_ul_tti_req_pdu
          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 = \
@@ -4273,7 +4275,7 @@ void fillPucchPdu(fapi_ul_tti_req_pdu_t *ulTtiReqPdu, fapi_vendor_ul_tti_req_pdu
    {
       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;
@@ -4283,8 +4285,8 @@ void fillPucchPdu(fapi_ul_tti_req_pdu_t *ulTtiReqPdu, fapi_vendor_ul_tti_req_pdu
       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;
@@ -4299,18 +4301,18 @@ void fillPucchPdu(fapi_ul_tti_req_pdu_t *ulTtiReqPdu, fapi_vendor_ul_tti_req_pdu
       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);
 
index 4211c73..23c1bf7 100644 (file)
@@ -712,24 +712,35 @@ uint8_t MacProcCellDeleteReq(Pst *pst, MacCellDeleteReq *cellDelete)
  **/
 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
index 0b3e34d..7e015af 100644 (file)
@@ -845,46 +845,50 @@ uint8_t FapiMacUciInd(Pst *pst, UciInd *macUciInd)
  *         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
@@ -973,7 +977,6 @@ uint8_t MacProcSliceRecfgReq(Pst *pst, MacSliceRecfgReq *macSliceRecfgReq)
             FILL_PST_MAC_TO_SCH(schPst, EVENT_SLICE_RECFG_REQ_TO_SCH);
             ret = SchMessageRouter(&schPst, (void *)schSliceRecfgReq);
          }
-
       }
       freeMacSliceCfgReq(macSliceRecfgReq, pst);
    }
index 5eb32b1..32ab5c2 100644 (file)
@@ -1721,7 +1721,7 @@ uint8_t fillSliceCfgRsp(bool sliceRecfg, SchSliceCfg *storedSliceCfg, SchCellCb
       {
          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;
@@ -1732,11 +1732,11 @@ uint8_t fillSliceCfgRsp(bool sliceRecfg, SchSliceCfg *storedSliceCfg, SchCellCb
       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)++;
@@ -1755,7 +1755,7 @@ uint8_t fillSliceCfgRsp(bool sliceRecfg, SchSliceCfg *storedSliceCfg, SchCellCb
       }
 
       
-      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
@@ -1793,8 +1793,8 @@ uint8_t addSliceCfgInSchDb(SchSliceCfg *storeSliceCfg, SchSliceCfgReq *cfgReq, S
    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;
@@ -1804,22 +1804,15 @@ uint8_t addSliceCfgInSchDb(SchSliceCfg *storeSliceCfg, SchSliceCfgReq *cfgReq, S
       {
          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++;
          }
@@ -1855,13 +1848,12 @@ void freeSchSliceCfgReq(SchSliceCfgReq *sliceCfgReq)
       {
          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));
    }
@@ -1893,7 +1885,7 @@ uint8_t SchProcSliceCfgReq(Pst *pst, SchSliceCfgReq *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)
@@ -1942,7 +1934,7 @@ uint8_t modifySliceCfgInSchDb(SchSliceCfg *storeSliceCfg, SchSliceRecfgReq *recf
 
    if(count)
    {
-      if(storeSliceCfg->listOfConfirguration == NULLP)
+      if(storeSliceCfg->listOfSlices == NULLP)
       {
          DU_LOG("\nINFO  -->  SCH : Memory allocation failed in modifySliceCfgInSchDb");
          return RFAILED;
@@ -1954,9 +1946,9 @@ uint8_t modifySliceCfgInSchDb(SchSliceCfg *storeSliceCfg, SchSliceRecfgReq *recf
          {
             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;
                }
@@ -2020,7 +2012,7 @@ uint8_t SchProcSliceRecfgReq(Pst *pst, SchSliceRecfgReq *schSliceRecfgReq)
    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)
index 352c582..5b2da40 100644 (file)
@@ -603,7 +603,7 @@ typedef struct schCellCb
 typedef struct schSliceCfg
 {
    uint8_t        numOfSliceConfigured;
-   SchRrmPolicyOfSlice **listOfConfirguration;
+   SchRrmPolicyOfSlice **listOfSlices;
 }SchSliceCfg;
 
 /**
index dff28ca..7fa1314 100644 (file)
@@ -121,7 +121,7 @@ uint8_t schBroadcastSib1Alloc(SchCellCb *cell, SlotTimingInfo slotTime, DlBrdcst
 {
    uint8_t dmrsStartSymbol, startSymbol, numSymbol ;
    DmrsInfo dmrs;
-   FreqDomainAlloc freqAlloc;
+   ResAllocType1 freqAlloc;
    TimeDomainAlloc timeAlloc;
    SchDlSlotInfo *schDlSlotInfo = NULLP;
 
@@ -217,7 +217,7 @@ void fillPucchFormat0(SchPucchInfo *ulSchedPucch, SchPucchResrcInfo *resrcInfo)
 {
    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;
@@ -242,7 +242,7 @@ void fillPucchFormat1(SchPucchInfo *ulSchedPucch, SchPucchResrcInfo *resrcInfo)
 {
    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;
@@ -274,23 +274,24 @@ uint8_t fillUlSchedPucchFormat(uint8_t pucchFormat, SchPucchInfo *ulSchedPucch,\
    {
       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;
@@ -334,7 +335,7 @@ uint8_t fillUlSchedPucchDedicatedCfg(SchCellCb *cell, SchPucchCfg *pucchDedCfg,\
             {
                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);
@@ -357,7 +358,6 @@ uint8_t fillUlSchedPucchDedicatedCfg(SchCellCb *cell, SchPucchCfg *pucchDedCfg,\
 
    if(pucchDedCfg->format1)
    {
-      memset(&ulSchedPucch->cmnFormatCfg, 0, sizeof(SchPucchFormatCfg));
       ret = fillUlSchedPucchFormat(ulSchedPucch->pucchFormat, ulSchedPucch, NULLP, pucchDedCfg->format1);
       if(ret == RFAILED)
          return ret;
@@ -375,14 +375,12 @@ uint8_t fillUlSchedPucchDedicatedCfg(SchCellCb *cell, SchPucchCfg *pucchDedCfg,\
       {
          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;
 }
@@ -400,9 +398,9 @@ uint8_t fillUlSchedPucchDedicatedCfg(SchCellCb *cell, SchPucchCfg *pucchDedCfg,\
  *  @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;
@@ -411,10 +409,9 @@ uint16_t fillPucchResourceInfo(SchPucchInfo *schPucchInfo, Inst inst, SlotTiming
 #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)
@@ -445,15 +442,14 @@ uint16_t fillPucchResourceInfo(SchPucchInfo *schPucchInfo, Inst inst, SlotTiming
             &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;
@@ -497,7 +493,7 @@ uint8_t schUlResAlloc(SchCellCb *cell, Inst schInst)
    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);
@@ -516,7 +512,8 @@ uint8_t schUlResAlloc(SchCellCb *cell, Inst schInst)
 
    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;
@@ -758,12 +755,10 @@ uint16_t schAllocPucchResource(SchCellCb *cell, SlotTimingInfo pucchTime, uint16
    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);
    }
index 104061a..7694acb 100644 (file)
@@ -449,11 +449,10 @@ SchPuschInfo* schAllocMsg3Pusch(Inst schInst, uint16_t crnti, uint8_t k2Index, S
    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 */
@@ -462,25 +461,30 @@ SchPuschInfo* schAllocMsg3Pusch(Inst schInst, uint16_t crnti, uint8_t k2Index, S
    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;
 }
@@ -704,8 +708,8 @@ bool schProcessRaReq(Inst schInst, SchCellCb *cell, SlotTimingInfo currTime, uin
             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 */
index 1254674..0d84ba5 100644 (file)
@@ -207,16 +207,13 @@ uint8_t updateDedLcInfo(Inst inst, Snssai *snssai, uint16_t *rsvdDedicatedPRB, b
    {
       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*/
@@ -881,11 +878,10 @@ uint8_t schFillPuschAlloc(SchUeCb *ueCb, SlotTimingInfo puschTime, uint32_t tbSi
 
    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;
@@ -894,12 +890,14 @@ uint8_t schFillPuschAlloc(SchUeCb *ueCb, SlotTimingInfo puschTime, uint32_t tbSi
       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;
@@ -909,17 +907,18 @@ uint8_t schFillPuschAlloc(SchUeCb *ueCb, SlotTimingInfo puschTime, uint32_t tbSi
       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;
@@ -929,10 +928,12 @@ uint8_t schFillPuschAlloc(SchUeCb *ueCb, SlotTimingInfo puschTime, uint32_t tbSi
       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)
@@ -1029,11 +1030,10 @@ uint8_t schFillUlDciForMsg3Retx(SchRaCb *raCb, SchPuschInfo *puschInfo, DciInfo
    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;
@@ -1042,10 +1042,11 @@ uint8_t schFillUlDciForMsg3Retx(SchRaCb *raCb, SchPuschInfo *puschInfo, DciInfo
   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;
 }
 
@@ -1105,9 +1106,9 @@ uint8_t schFillUlDci(SchUeCb *ueCb, SchPuschInfo *puschInfo, DciInfo *dciInfo, b
    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 */
index 24bbacb..d9d8bca 100644 (file)
@@ -1466,26 +1466,34 @@ typedef struct macSliceRsp
 
 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;
 
index 70776d7..ef8b485 100644 (file)
@@ -442,12 +442,16 @@ typedef struct timeDomainAlloc
    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
 {
@@ -467,7 +471,7 @@ typedef struct bwpCfg
 {
    uint8_t         subcarrierSpacing;
    uint8_t         cyclicPrefix;
-   FreqDomainAlloc freqAlloc;  
+   ResAllocType1   freqAlloc;  
 }BwpCfg;
 
 typedef struct prg
@@ -513,7 +517,7 @@ typedef struct pdschFreqAlloc
 {
    uint8_t  resourceAllocType;
    /* since we are using type-1, rbBitmap excluded */
-   FreqDomainAlloc freqAlloc;
+   ResAllocType1 freqAlloc;
    uint8_t  vrbPrbMapping;
 } PdschFreqAlloc;
 
@@ -640,7 +644,7 @@ typedef struct schRachCfg
 
 typedef struct schBwpParams
 {
-   FreqDomainAlloc freqAlloc;
+   ResAllocType1   freqAlloc;
    uint8_t         scs;
    uint8_t         cyclicPrefix;
 }SchBwpParams;
@@ -845,7 +849,7 @@ typedef struct ssbInfo
 {
    uint8_t         ssbIdx;          /* SSB Index */
    TimeDomainAlloc tdAlloc; /* Time domain allocation */
-   FreqDomainAlloc fdAlloc; /* Freq domain allocation */
+   ResAllocType1   fdAlloc; /* Freq domain allocation */
 }SsbInfo;
 
 typedef struct sib1AllocInfo
@@ -861,7 +865,7 @@ typedef struct prachSchInfo
    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
@@ -885,7 +889,7 @@ typedef struct msg3UlGrant
 {
    uint8_t         freqHopFlag;
    uint16_t        bwpSize;
-   FreqDomainAlloc msg3FreqAlloc;
+   ResAllocType1   msg3FreqAlloc;
    uint8_t         k2Index;
    uint8_t         mcs;
    uint8_t         tpc;
@@ -967,7 +971,7 @@ typedef struct format0_0
 {
    uint8_t         resourceAllocType;
    /* since we are using type-1, hence rbBitmap excluded */
-   FreqDomainAlloc freqAlloc;
+   ResAllocType1   freqAlloc;
    TimeDomainAlloc timeAlloc;
    uint16_t        rowIndex;
    uint8_t         mcs;
@@ -1052,27 +1056,59 @@ typedef struct dlPageAlloc
 
 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;
@@ -1085,33 +1121,43 @@ typedef struct schPucchFormatCfg
 
 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
@@ -1825,21 +1871,21 @@ typedef struct dlHarqInd
 
 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
index ea2af40..ee1c4f6 100644 (file)
@@ -360,8 +360,8 @@ uint8_t duHandleCellUpInd(Pst *pst, OduCellId *cellId)
       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);
index 4e8b224..837b711 100644 (file)
@@ -24,8 +24,8 @@ uint8_t duBuildAndSendMacCellCfg(uint16_t 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
index d5b8775..b5c3173 100644 (file)
@@ -445,7 +445,7 @@ uint8_t fillDuPort(uint16_t *duPort)
    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;
 }
@@ -1046,65 +1046,71 @@ uint8_t readCfg()
  *         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
index 6f55b4f..832ef1d 100644 (file)
@@ -1245,29 +1245,6 @@ typedef struct sib1Params
    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 */
@@ -1281,7 +1258,7 @@ typedef struct duCfgParams
    MacCellCfg         macCellCfg;                    /* MAC cell configuration */
    MibParams          mibParams;                  /* MIB Params */
    Sib1Params         sib1Params;                 /* SIB1 Params */
-   CopyOfRecvdSliceCfg tempSliceCfg;
+   MacSliceCfgReq     tempSliceCfg;
 }DuCfgParams;
 
 typedef struct f1SetupMsg
@@ -1333,7 +1310,7 @@ uint8_t readClCfg();
 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__ */
 
index 292b5c7..957229d 100644 (file)
@@ -15636,35 +15636,35 @@ uint8_t procF1DlRrcMsgTrans(F1AP_PDU_t *f1apMsg)
            {
               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);
       }
    }
 
index 40efc77..fd2902c 100644 (file)
@@ -162,13 +162,11 @@ uint8_t setRrmPolicy(RrmPolicyList rrmPolicy[], uint8_t policyNum)
        {
            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();
            }
        }
     }
index 9f402fa..ca148c8 100644 (file)
@@ -1861,46 +1861,6 @@ uint8_t DuProcRlcUlUserDataTrans(Pst *pst, RlcUlUserDatInfo *ulUserData)
    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
@@ -1970,73 +1930,9 @@ uint8_t DuProcMacSliceCfgRsp(Pst *pst,  MacSliceCfgRsp *cfgRsp)
         }
         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
@@ -2055,7 +1951,7 @@ uint8_t fillSliceCfgReCfgInfo(MacSliceRecfgReq *sliceRecfgReq, RrmPolicy *rrmPol
  *         RFAILED - failure
  *
  * ****************************************************************/
-uint8_t BuildAndSendSliceConfigReq(RrmPolicy *rrmPolicy[], uint8_t totalRrmPolicy, uint8_t totalSliceCnt)
+uint8_t BuildAndSendSliceConfigReq()
 {
    Pst pst;
    MacSliceCfgReq *sliceCfgReq;
@@ -2068,11 +1964,7 @@ uint8_t BuildAndSendSliceConfigReq(RrmPolicy *rrmPolicy[], uint8_t totalRrmPolic
    }
    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 ");
@@ -2085,7 +1977,6 @@ uint8_t BuildAndSendSliceConfigReq(RrmPolicy *rrmPolicy[], uint8_t totalRrmPolic
    return ROK;  
 }
 
-
 /*******************************************************************
  *
  * @brief Fill the slice configration and rrm policy related
@@ -2103,7 +1994,7 @@ uint8_t BuildAndSendSliceConfigReq(RrmPolicy *rrmPolicy[], uint8_t totalRrmPolic
  *         RFAILED - failure
  *
  * ****************************************************************/
-uint8_t BuildAndSendSliceRecfgReq(RrmPolicy *rrmPolicy[], uint8_t totalRrmPolicy, uint8_t totalSliceCount)
+uint8_t BuildAndSendSliceRecfgReq()
 {
    Pst pst;
    MacSliceRecfgReq *sliceRecfgReq = NULLP;
@@ -2118,11 +2009,8 @@ uint8_t BuildAndSendSliceRecfgReq(RrmPolicy *rrmPolicy[], uint8_t totalRrmPolicy
    }
    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 ");
@@ -2173,7 +2061,6 @@ uint8_t DuProcMacSliceRecfgRsp(Pst *pst,  MacSliceRecfgRsp *reCfgRsp)
       }
       duFreeSliceCfgRsp(pst, reCfgRsp);
    }
-   duFreeTempSliceCfg();
    return ROK;
 }