X-Git-Url: https://gerrit.o-ran-sc.org/r/gitweb?a=blobdiff_plain;ds=sidebyside;f=src%2F5gnrmac%2Fmac_ue_mgr.c;h=da91f174cf47f2c3553a8bc3719127e63627a1c8;hb=d961d010d4a011b0a9deb3234cc00870e78d8fea;hp=a7e3b2972d29e4bfde7d269761a2aaf04802024b;hpb=1616921700a3c7541f1df6dd2678f9ee4d8e933b;p=o-du%2Fl2.git diff --git a/src/5gnrmac/mac_ue_mgr.c b/src/5gnrmac/mac_ue_mgr.c index a7e3b2972..da91f174c 100644 --- a/src/5gnrmac/mac_ue_mgr.c +++ b/src/5gnrmac/mac_ue_mgr.c @@ -29,25 +29,25 @@ #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; }