[Epic-ID: ODUHIGH-464][Task-ID: ODUHIGH-483] Memeory related fix in FDD and TDD mode
[o-du/l2.git] / src / du_app / du_ue_mgr.c
index b690c6b..aae8677 100644 (file)
@@ -710,7 +710,9 @@ uint8_t fillDefaultInitDlBwp(InitialDlBwp *initDlBwp)
             return RFAILED;
          }
          if(initDlBwp->pdschCfg.timeDomRsrcAllociList[idx].k0)
+         {
             *(initDlBwp->pdschCfg.timeDomRsrcAllociList[idx].k0) = 1;
+         }
          initDlBwp->pdschCfg.timeDomRsrcAllociList[idx].mappingType = MAPPING_TYPEA;
          initDlBwp->pdschCfg.timeDomRsrcAllociList[idx].startSymbol = PDSCH_START_SYMBOL; 
          initDlBwp->pdschCfg.timeDomRsrcAllociList[idx].symbolLength = PDSCH_LENGTH_SYMBOL;
@@ -2117,6 +2119,53 @@ uint8_t DuProcMacRachRsrcRsp(Pst *pst, MacRachRsrcRsp *rachRsrcRsp)
    return ret;
 }
 
+/*******************************************************************
+ *
+ * @brief  fill k0 value in duCb
+ *
+ * @details
+ *
+ *    Function : fillK0Values
+ *    Functionality:  update k0 value in duCb 
+ *
+ * @params[in] PdschConfig *cuPdschCfg, PdschConfig *storePdschCfg 
+ * @return ROK     - success
+ *         RFAILED - failure
+ *
+ * ****************************************************************/
+
+uint8_t fillK0Values(Bool toUpdate, PdschConfig *cuPdschCfg, PdschConfig *storePdschCfg)
+{
+   uint8_t numTimeDomRsrcAlloc, rsrcIdx;
+
+   if(toUpdate)
+   {
+      if(cuPdschCfg)
+      {
+         if(storePdschCfg->numTimeDomRsrcAlloc)
+         {
+            numTimeDomRsrcAlloc = cuPdschCfg->numTimeDomRsrcAlloc;
+            for(rsrcIdx =0 ; rsrcIdx<numTimeDomRsrcAlloc; rsrcIdx++)
+            {
+               if(cuPdschCfg->timeDomRsrcAllociList[rsrcIdx].k0)
+               {
+                  if(storePdschCfg->timeDomRsrcAllociList[rsrcIdx].k0)
+                  {
+                     *(storePdschCfg->timeDomRsrcAllociList[rsrcIdx].k0) = *(cuPdschCfg->timeDomRsrcAllociList[rsrcIdx].k0);
+                     DU_FREE_SHRABL_BUF(DU_APP_MEM_REGION, DU_POOL, cuPdschCfg->timeDomRsrcAllociList[rsrcIdx].k0, sizeof(uint8_t));
+                  }
+                  else
+                  {
+                     (storePdschCfg->timeDomRsrcAllociList[rsrcIdx].k0) = (cuPdschCfg->timeDomRsrcAllociList[rsrcIdx].k0);
+                  }
+               }
+            }
+         }
+      }
+   }
+   return ROK;
+}
+
 /*******************************************************************
  *
  * @brief To update DuUeCb Mac Cfg
@@ -2155,6 +2204,8 @@ uint8_t duUpdateMacCfg(DuMacUeCfg *macUeCfg, F1UeContextSetupDb *f1UeDb)
    {
       if(macUeCfg->spCellCfg.servCellCfg.initDlBwp.pdschPresent)
       {
+         /* update k0 values */
+         fillK0Values(true, &f1UeDb->duUeCfg.copyOfmacUeCfg.spCellCfg.servCellCfg.initDlBwp.pdschCfg, &macUeCfg->spCellCfg.servCellCfg.initDlBwp.pdschCfg); 
          fillStartSymbolAndLen(macUeCfg->spCellCfg.servCellCfg.initDlBwp.pdschCfg.numTimeDomRsrcAlloc,\
                &macUeCfg->spCellCfg.servCellCfg.initDlBwp.pdschCfg, NULL);
       }
@@ -3025,6 +3076,7 @@ uint8_t duBuildAndSendUeRecfgReqToRlc(uint8_t cellId, uint8_t gnbDuUeF1apId, uin
       DU_LOG("\nERROR  -->  DU APP : Memory Alloc failed at duBuildAndSendUeRecfgReqToRlc()");
       ret = RFAILED;
    }
+   DU_FREE(duRlcUeCfg, sizeof(DuRlcUeCfg));
    return ret;
 }