Ue Config Changes aligned with AAD
[o-du/l2.git] / src / 5gnrmac / mac_ue_mgr.c
index a7e3b29..da91f17 100644 (file)
 #include "mac_utils.h"
 
 /* function pointers for packing slot ind from mac to sch */
-MacSchUeCreateReqFunc macSchUeCreateReqOpts[] =
+MacSchAddUeConfigReqFunc macSchAddUeConfigReqOpts[] =
 {
-   packMacSchUeCreateReq,    /* packing for loosely coupled */
-   MacSchUeCreateReq,        /* packing for tightly coupled */
-   packMacSchUeCreateReq     /* packing for light weight loosely coupled */
+   packMacSchAddUeConfigReq,    /* packing for loosely coupled */
+   MacSchAddUeConfigReq,        /* packing for tightly coupled */
+   packMacSchAddUeConfigReq     /* packing for light weight loosely coupled */
 };
 
-MacDuUeCfgRspFunc MacDuUeCfgRspOpts[] =
+MacDuUeCfgRspFunc macDuUeCfgRspOpts[] =
 {
    packDuMacUeCfgRsp,   /* packing for loosely coupled */
    DuProcMacUeCfgRsp,   /* packing for tightly coupled */
    packDuMacUeCfgRsp   /* packing for light weight loosly coupled */
 };
 
-MacSchUeReconfigReqFunc macSchUeReconfigReqOpts[] =
+MacSchModUeConfigReqFunc macSchModUeConfigReqOpts[] =
 {
-   packMacSchUeReconfigReq,    /* packing for loosely coupled */
-   MacSchUeReconfigReq,        /* packing for tightly coupled */
-   packMacSchUeReconfigReq     /* packing for light weight loosely coupled */
+   packMacSchModUeConfigReq,    /* packing for loosely coupled */
+   MacSchModUeConfigReq,        /* packing for tightly coupled */
+   packMacSchModUeConfigReq     /* packing for light weight loosely coupled */
 };
 
 /*******************************************************************
@@ -644,12 +644,12 @@ uint8_t sendUeReqToSch(Pst *pst, SchUeCfg *schUeCfg)
    switch(pst->event)
    {
       case EVENT_MAC_UE_CREATE_REQ:
-        FILL_PST_MAC_TO_SCH(schPst, EVENT_UE_CREATE_REQ_TO_SCH);
-        return(*macSchUeCreateReqOpts[schPst.selector])(&schPst, schUeCfg);
+        FILL_PST_MAC_TO_SCH(schPst, EVENT_ADD_UE_CONFIG_REQ_TO_SCH);
+        return(*macSchAddUeConfigReqOpts[schPst.selector])(&schPst, schUeCfg);
 
       case EVENT_MAC_UE_RECONFIG_REQ:
-        FILL_PST_MAC_TO_SCH(schPst, EVENT_UE_RECONFIG_REQ_TO_SCH);
-        return(*macSchUeReconfigReqOpts[schPst.selector])(&schPst,schUeCfg);
+        FILL_PST_MAC_TO_SCH(schPst, EVENT_MODIFY_UE_CONFIG_REQ_TO_SCH);
+        return(*macSchModUeConfigReqOpts[schPst.selector])(&schPst,schUeCfg);
       default: 
         DU_LOG("\n Invalid Pst received %d", pst->event);
         return RFAILED;
@@ -897,18 +897,19 @@ uint8_t fillSchUeCfg(Pst *pst, SchUeCfg *schUeCfg, MacUeCfg *ueCfg)
       return RFAILED;
    }
 
-   schUeCfg->aggrMaxBitRate = NULL;
-   if(ueCfg->maxAggrBitRate != NULL)
+   if(ueCfg->ambrCfg != NULLP)
    {
-      MAC_ALLOC(schUeCfg->aggrMaxBitRate, sizeof(SchAggrMaxBitRate));
-      if(!schUeCfg->aggrMaxBitRate)
+      MAC_ALLOC(schUeCfg->ambrCfg, sizeof(SchAmbrCfg));
+      if(!schUeCfg->ambrCfg)
       {
         DU_LOG("\nMAC : Memory allocation failed in sendReconfigReqToSch");
         return RFAILED;
       }
-      schUeCfg->aggrMaxBitRate->ulBitRate = ueCfg->maxAggrBitRate->ulBits;
-      schUeCfg->aggrMaxBitRate->dlBitRate = ueCfg->maxAggrBitRate->dlBits;
+      schUeCfg->ambrCfg->ulBr = ueCfg->ambrCfg->ulBr;
+      schUeCfg->ambrCfg->dlBr = ueCfg->ambrCfg->dlBr;
    }
+   else
+      schUeCfg->ambrCfg = NULLP;
 
    /* Fill sch Lc Cfg  to Add/ Mod/ Del */
    ret  = fillSchLcCfgList(schUeCfg, ueCfg);
@@ -1222,11 +1223,11 @@ uint8_t modifyUeCb(uint8_t cellIdx, MacUeCb *ueCb, MacUeCfg *ueCfg)
    if((ueCb->ueIdx == ueCfg->ueIdx) && (ueCb->crnti == ueCfg->crnti)\
       &&(ueCb->state == UE_STATE_ACTIVE))
    {
-      DU_LOG("\n MAC : Reconfig Req received for CRNTI %d ", ueCfg->crnti);
+      DU_LOG("\n MAC : Modifying Ue config Req for CRNTI %d ", ueCfg->crnti);
       ret = fillMacUeCb(ueCb, ueCfg, cellIdx);
       if(ret != ROK)
       {
-         DU_LOG("\nMAC : Failed to modify Ue Cb at modifyUeCb()");
+         DU_LOG("\nMAC : Failed to modify MacUeCb at modifyUeCb()");
          return ret;
       }
       else
@@ -1282,11 +1283,15 @@ uint8_t procMacUeCfgData(Pst *pst, MacUeCfg *ueCfg)
    ueCb = &macCb.macCell[cellIdx]->ueCb[ueCfg->ueIdx -1];
    switch(pst->event)
    {
-      case EVENT_UE_CREATE_RSP_TO_MAC:
+      case EVENT_UE_CONFIG_RSP_TO_MAC:
         ret = createUeCb(cellIdx, ueCb, ueCfg);
+        if(ret != ROK)
+            DU_LOG("\nMAC: AddUeConfigReq for cellIdx :%d failed in procMacUeCfgData()", cellIdx);
         break;
       case EVENT_UE_RECONFIG_RSP_TO_MAC:
         ret = modifyUeCb(cellIdx, ueCb, ueCfg);
+        if(ret != ROK)
+            DU_LOG("\nMAC: ModifyUeConfigReq for cellIdx :%d failed at procMacUeCfgData()", cellIdx);
         break;
       default:
         break;
@@ -1422,7 +1427,7 @@ uint8_t MacSendUeCreateRsp(MacRsp result, SchUeCfgRsp *schCfgRsp)
    /* Fill Post structure and send UE Create response*/
    memset(&rspPst, 0, sizeof(Pst));
    FILL_PST_MAC_TO_DUAPP(rspPst, EVENT_MAC_UE_CREATE_RSP);
-   return MacDuUeCfgRspOpts[rspPst.selector](&rspPst, cfgRsp); 
+   return (*macDuUeCfgRspOpts[rspPst.selector])(&rspPst, cfgRsp); 
 }
 
 /*******************************************************************
@@ -1462,7 +1467,7 @@ uint8_t MacSendUeReconfigRsp(MacRsp result, SchUeCfgRsp *schCfgRsp)
    /* Fill Post structure and send UE Create response*/
    memset(&rspPst, 0, sizeof(Pst));
    FILL_PST_MAC_TO_DUAPP(rspPst, EVENT_MAC_UE_RECONFIG_RSP);
-   return MacDuUeCfgRspOpts[rspPst.selector](&rspPst, cfgRsp);
+   return (*macDuUeCfgRspOpts[rspPst.selector])(&rspPst, cfgRsp);
 }
 
 /*******************************************************************
@@ -1524,33 +1529,63 @@ uint8_t MacProcSchUeCfgRsp(Pst *pst, SchUeCfgRsp *schCfgRsp)
 
    GET_CELL_IDX(schCfgRsp->cellId, cellIdx);
    ueCfg = getMacUeCfg(cellIdx, schCfgRsp->ueIdx);
+   if(ueCfg == NULLP)
+   {
+      DU_LOG("\nMAC : Failed to find the Mac Ue Cfg for event [%d] in MacProcSchUeCfgRsp()", pst->event);
+      ret = RFAILED;
+   }
 
-   if(ueCfg)
+   switch(pst->event)
    {
-      if(schCfgRsp->rsp == RSP_NOK)
+      case EVENT_UE_CONFIG_RSP_TO_MAC:
       {
-         DU_LOG("\nMAC : SCH UE Config Response : FAILURE [CRNTI %d] for event %d", schCfgRsp->crnti, pst->event);
+         if(schCfgRsp->rsp != RSP_NOK)
+        {
+            DU_LOG("\nMAC: SCH UeConfigRsp for CRNTI[%d] is success in MacProcSchUeCfgRsp()", schCfgRsp->crnti);
+           if(ret == ROK)
+           {
+              ret = procMacUeCfgData(pst, ueCfg);
+              if(ret == ROK)
+              {
+                  result = MAC_DU_APP_RSP_OK;
+               }
+           }
+        }
+        else
+        {
+            DU_LOG("\nMAC: SCH UeConfigRsp for CRNTI[%d] is failed in MacProcSchUeCfgRsp()", schCfgRsp->crnti);
+        }
+         ret = MacSendUeCreateRsp(result, schCfgRsp);
       }
-      else
+      break;
+
+      case EVENT_UE_RECONFIG_RSP_TO_MAC:
       {
-         DU_LOG("\nMAC : SCH UE Config Response : SUCCESS [CRNTI %d]", schCfgRsp->crnti);
-         ret = procMacUeCfgData(pst, ueCfg);
-        if(ret == ROK)
+         if(schCfgRsp->rsp != RSP_NOK)
         {
-            result = MAC_DU_APP_RSP_OK;
-         }
+            DU_LOG("\nMAC: SCH UeReconfigRsp for CRNTI[%d] is success in MacProcSchUeCfgRsp()", schCfgRsp->crnti);
+           if(ret == ROK)
+           {
+              ret = procMacUeCfgData(pst, ueCfg);
+              if(ret == ROK)
+              {
+                  result = MAC_DU_APP_RSP_OK;
+               }
+           }
+        }
+        else
+        {
+            DU_LOG("\nMAC: SCH UeReconfigRsp for CRNTI[%d] is failed in MacProcSchUeCfgRsp()", schCfgRsp->crnti);
+        }
+         ret = MacSendUeReconfigRsp(result, schCfgRsp);
       }
-      MAC_FREE(ueCfg, sizeof(MacUeCfg));
-      ueCfg = NULLP;
-   }
-   if(pst->event == EVENT_UE_CREATE_RSP_TO_MAC)
-   {
-      ret = MacSendUeCreateRsp(result, schCfgRsp);
-   }
-   if(pst->event == EVENT_UE_RECONFIG_RSP_TO_MAC)
-   {
-      ret = MacSendUeReconfigRsp(result, schCfgRsp);
+      break;
+      
+      default:
+      break;
    }
+   MAC_FREE(ueCfg, sizeof(MacUeCfg));
+   ueCfg = NULLP;
    
    return ret; 
 }