X-Git-Url: https://gerrit.o-ran-sc.org/r/gitweb?a=blobdiff_plain;f=src%2F5gnrmac%2Frg_lmm.c;h=0b3357b0193418bef0d806c8044cb3198131d17c;hb=2193e4cf01012809495be026097e8d7eacb9f0ac;hp=5c64f0328fc81f4f852cc207b9c634d16da2e94b;hpb=5ea4c59cb4dd37164953218b0bd355284e11d22c;p=o-du%2Fl2.git diff --git a/src/5gnrmac/rg_lmm.c b/src/5gnrmac/rg_lmm.c index 5c64f0328..0b3357b01 100755 --- a/src/5gnrmac/rg_lmm.c +++ b/src/5gnrmac/rg_lmm.c @@ -38,16 +38,7 @@ static int RLOG_FILE_ID=220; static int RLOG_MODULE_ID=4096; /* header include files (.h) */ -#include "envopt.h" /* environment options */ -#include "envdep.h" /* environment dependent */ -#include "envind.h" /* environment independent */ -#include "gen.h" /* general */ -#include "ssi.h" /* system services */ -#include "cm_tkns.h" /* Common Token Defines */ -#include "cm_llist.h" /* Common Link List Defines */ -#include "cm_hash.h" /* Common Hash List Defines */ -#include "cm_mblk.h" /* common memory link list library */ -#include "cm_lte.h" /* Common LTE Defines */ +#include "common_def.h" #include "rg_env.h" /* MAC Environment Defines */ #include "crg.h" /* CRG Interface defines */ #include "rgu.h" /* RGU Interface defines */ @@ -57,18 +48,8 @@ static int RLOG_MODULE_ID=4096; #include "rgr.h" /* LRG Interface defines */ #include "rg.h" /* MAC defines */ #include "rg_err.h" /* MAC error defines */ -#include "du_log.h" /* header/extern include files (.x) */ -#include "gen.x" /* general */ -#include "ssi.x" /* system services */ -#include "cm5.x" /* system services */ -#include "cm_tkns.x" /* Common Token Definitions */ -#include "cm_llist.x" /* Common Link List Definitions */ -#include "cm_lib.x" /* Common Library Definitions */ -#include "cm_hash.x" /* Common Hash List Definitions */ -#include "cm_mblk.x" /* common memory link list library */ -#include "cm_lte.x" /* Common LTE Defines */ #include "crg.x" /* CRG Interface includes */ #include "rgu.x" /* RGU Interface includes */ #include "tfu.x" /* RGU Interface includes */ @@ -77,15 +58,18 @@ static int RLOG_MODULE_ID=4096; #include "lrg.x" /* LRG Interface includes */ #include "rgr.x" /* LRG Interface includes */ #include "du_app_mac_inf.h" -#include "mac_sch_interface.h" #include "rg.x" /* MAC includes */ #ifdef SS_DIAG #include "ss_diag.h" /* Common log file */ #endif #include "ss_rbuf.h" #include "ss_rbuf.x" - #include "lwr_mac.h" /* MAC CL defines */ +#include "mac_sch_interface.h" +#include "lwr_mac_upr_inf.h" +#include "mac.h" +#include "lwr_mac_phy.h" +#include "lwr_mac_fsm.h" #ifdef __cplusplus extern "C" { @@ -96,7 +80,8 @@ EXTERN Void rgGetSId ARGS((SystemId *s)); #endif /* __cplusplus */ /* Public variable declaration */ -ClCb clGlobalCp; +LwrMacCb lwrMacCb; +extern MacCb macCb; /* forward references */ PRIVATE U16 rgLMMGenCfg ARGS(( @@ -132,22 +117,6 @@ RgMngmt *cfm, Pst *cfmPst )); -extern U16 packMacCellCfgCfm(Pst *pst, MacCellCfgCfm *macCellCfgCfm); - -packMacCellCfgConfirm packMacCellCfmOpts[] = -{ - packMacCellCfgCfm, /* packing for loosely coupled */ - duHandleMacCellCfgCfm, /* packing for tightly coupled */ - packMacCellCfgCfm, /* packing for light weight loosly coupled */ -}; - -SchCellCfgFunc SchCellCfgOpts[] = -{ - packSchCellCfg, /* packing for loosely coupled */ - SchHdlCellCfgReq, /* packing for tightly coupled */ - packSchCellCfg /* packing for light weight loosly coupled */ -}; - /** * @brief Task Initiation callback function. @@ -169,7 +138,7 @@ SchCellCfgFunc SchCellCfgOpts[] = * -# ROK **/ #ifdef ANSI -PUBLIC S16 rgActvInit +S16 rgActvInit ( Ent entity, /* entity */ Inst inst, /* instance */ @@ -177,7 +146,7 @@ Region region, /* region */ Reason reason /* reason */ ) #else -PUBLIC S16 rgActvInit(entity, inst, region, reason) +S16 rgActvInit(entity, inst, region, reason) Ent entity; /* entity */ Inst inst; /* instance */ Region region; /* region */ @@ -230,23 +199,20 @@ Reason reason; /* reason */ #endif /* Initializing CL control block */ - clGlobalCp.region = region; - clGlobalCp.pool = 0; - clGlobalCp.clCfgDone = FALSE; - clGlobalCp.numOfCells = 0; - clGlobalCp.phyState = PHY_STATE_IDLE; - - if( cmHashListInit(&clGlobalCp.cellCbLst, MAX_NUM_CELL_SUPP, 0x0, FALSE, - CM_HASH_KEYTYPE_DEF, clGlobalCp.region, clGlobalCp.pool ) != ROK ) - { - printf("\n Cellcb hash list initialization failed for MAC CL"); - RETVALUE(RFAILED); - } + memset(&lwrMacCb, 0, sizeof(LwrMacCb)); + lwrMacCb.region = region; + lwrMacCb.pool = 0; + lwrMacCb.clCfgDone = TRUE; + lwrMacCb.numCell = 0; + lwrMacCb.phyState = PHY_STATE_IDLE; /* Initialize Scheduler as well */ - schActvInit(ENTRG, (DEFAULT_CELLS + SCH_INST_START), DFLT_REGION, PWR_UP); + schActvInit(ENTMAC, (DEFAULT_CELLS + SCH_INST_START), DFLT_REGION, PWR_UP); + + /* Initialize lower mac */ + lwrMacInit(); - RETVALUE(ROK); + return ROK; } /* rgActvInit */ @@ -269,13 +235,13 @@ Reason reason; /* reason */ * -# ROK **/ #ifdef ANSI -PUBLIC S16 RgMiLrgCfgReq +S16 RgMiLrgCfgReq ( Pst *pst, /* post structure */ RgMngmt *cfg /* config structure */ ) #else -PUBLIC S16 RgMiLrgCfgReq(pst, cfg) +S16 RgMiLrgCfgReq(pst, cfg) Pst *pst; /* post structure */ RgMngmt *cfg; /* config structure */ #endif @@ -335,7 +301,7 @@ RgMngmt *cfg; /* config structure */ RgMiLrgCfgCfm(&cfmPst, &cfm); - RETVALUE(ROK); + return ROK; }/*-- RgMiLrgCfgReq --*/ @@ -359,13 +325,13 @@ RgMngmt *cfg; /* config structure */ * -# ROK **/ #ifdef ANSI -PUBLIC S16 RgMiLrgStsReq +S16 RgMiLrgStsReq ( Pst *pst, /* post structure */ RgMngmt *sts /* statistics structure */ ) #else -PUBLIC S16 RgMiLrgStsReq(pst, sts) +S16 RgMiLrgStsReq(pst, sts) Pst *pst; /* post structure */ RgMngmt *sts; /* statistics structure */ #endif @@ -400,7 +366,7 @@ RgMngmt *sts; /* statistics structure */ cfm.cfm.reason = LCM_REASON_GENCFG_NOT_DONE; RgMiLrgStsCfm(&cfmPst,&cfm); RLOG0(L_ERROR, "Gen Cfg not done"); - RETVALUE(ROK); + return ROK; } switch(sts->hdr.elmId.elmnt) @@ -511,7 +477,7 @@ RgMngmt *sts; /* statistics structure */ break; } RgMiLrgStsCfm(&cfmPst,&cfm); - RETVALUE(ROK); + return ROK; }/*-- RgMiLrgStsReq --*/ @@ -534,13 +500,13 @@ RgMngmt *sts; /* statistics structure */ * -# ROK **/ #ifdef ANSI -PUBLIC S16 RgMiLrgStaReq +S16 RgMiLrgStaReq ( Pst *pst, /* post structure */ RgMngmt *sta /* status structure */ ) #else -PUBLIC S16 RgMiLrgStaReq(pst, sta) +S16 RgMiLrgStaReq(pst, sta) Pst *pst; /* post structure */ RgMngmt *sta; /* status structure */ #endif @@ -579,7 +545,7 @@ RgMngmt *sta; /* status structure */ != ROK) { RLOG0(L_ERROR, "Memory Unavailable for Confirmation"); - RETVALUE(ROK); + return ROK; } cmMemset((U8 *)(cfm.t.ssta.s.sysId.ptNmb), 0, LRG_MAX_PT_NUM_SIZE); rgGetSId(&cfm.t.ssta.s.sysId); @@ -588,7 +554,7 @@ RgMngmt *sta; /* status structure */ cfm.hdr.elmId.elmnt = sta->hdr.elmId.elmnt; RgMiLrgStaCfm(&cfmPst, &cfm); RLOG0(L_ERROR, "Gen Cfg not done"); - RETVALUE(ROK); + return ROK; } switch(sta->hdr.elmId.elmnt) @@ -600,7 +566,7 @@ RgMngmt *sta; /* status structure */ != ROK) { RLOG0(L_ERROR, "Memory Unavailable for Confirmation"); - RETVALUE(ROK); + return ROK; } cmMemset((U8 *)(cfm.t.ssta.s.sysId.ptNmb), 0, LRG_MAX_PT_NUM_SIZE); rgGetSId(&cfm.t.ssta.s.sysId); @@ -640,7 +606,7 @@ RgMngmt *sta; /* status structure */ RLOG1(L_ERROR, "Invalid elmnt=%d",sta->hdr.elmId.elmnt); break; } - RETVALUE(ROK); + return ROK; }/*-- RgMiLrgStaReq --*/ @@ -665,13 +631,13 @@ RgMngmt *sta; /* status structure */ * -# ROK **/ #ifdef ANSI -PUBLIC S16 RgMiLrgCntrlReq +S16 RgMiLrgCntrlReq ( Pst *pst, /* post structure */ RgMngmt *cntrl /* control structure */ ) #else -PUBLIC S16 RgMiLrgCntrlReq(pst, cntrl) +S16 RgMiLrgCntrlReq(pst, cntrl) Pst *pst; /* post structure */ RgMngmt *cntrl; /* control structure */ #endif @@ -706,7 +672,7 @@ RgMngmt *cntrl; /* control structure */ cfm.hdr.elmId.elmnt = cntrl->hdr.elmId.elmnt; RgMiLrgCntrlCfm(&cfmPst, &cfm); RLOG0(L_ERROR, "Gen Cfg not done"); - RETVALUE(ROK); + return ROK; } /* General Config done, process the Control request */ @@ -727,7 +693,7 @@ RgMngmt *cntrl; /* control structure */ RLOG1(L_ERROR, "invalid elmnt=%d",cntrl->hdr.elmId.elmnt); break; } - RETVALUE(ret); + return (ret); }/*-- RgMiLrgCntrlReq --*/ @@ -773,14 +739,14 @@ Elmnt sapType; /* Sap Type */ /* Check if Gen Config has been done */ if(rgCb[inst].rgInit.cfgDone != TRUE) - RETVALUE(LCM_REASON_GENCFG_NOT_DONE); + return (LCM_REASON_GENCFG_NOT_DONE); switch(sapType) { case STRGUSAP: if ((cfg->s.rguSap.spId > LRG_MAX_RGU_SAPS) && - (cfg->s.rguSap.selector != RGU_SEL_TC) && - (cfg->s.rguSap.selector != RGU_SEL_LC)) + (cfg->s.rguSap.selector != ODU_SELECTOR_TC) && + (cfg->s.rguSap.selector != ODU_SELECTOR_LC)) { ret = LCM_REASON_INVALID_PAR_VAL; RLOG0(L_ERROR, "unsupported Selector value for RGU"); @@ -810,8 +776,8 @@ Elmnt sapType; /* Sap Type */ * there is cfg request with sap is 1*/ break; case STCRGSAP: - if ((cfg->s.crgSap.selector != CRG_SEL_TC) && - (cfg->s.crgSap.selector != CRG_SEL_LC)) + if ((cfg->s.crgSap.selector != ODU_SELECTOR_TC) && + (cfg->s.crgSap.selector != ODU_SELECTOR_LC)) { ret = LCM_REASON_INVALID_PAR_VAL; RLOG0(L_ERROR, "unsupported Selector value for CRG"); @@ -840,8 +806,8 @@ Elmnt sapType; /* Sap Type */ break; case STTFUSAP: #ifndef CL_MAC_LWLC - if ((cfg->s.tfuSap.selector != TFU_SEL_TC) && - (cfg->s.tfuSap.selector != TFU_SEL_LC)) + if ((cfg->s.tfuSap.selector != ODU_SELECTOR_TC) && + (cfg->s.tfuSap.selector != ODU_SELECTOR_LC)) { ret = LCM_REASON_INVALID_PAR_VAL; RLOG0(L_ERROR, "unsupported Selector value for TFU"); @@ -875,7 +841,7 @@ Elmnt sapType; /* Sap Type */ /* would never reach here */ break; } - RETVALUE(ret); + return (ret); } @@ -917,13 +883,13 @@ RgCfg *cfg; /* Configuaration information */ /* Check if General Configuration is done already */ if (rgCb[inst].rgInit.cfgDone == TRUE) { - RETVALUE(LCM_REASON_INVALID_MSGTYPE); + return (LCM_REASON_INVALID_MSGTYPE); } - if ((cfg->s.genCfg.lmPst.selector != LRG_SEL_TC) && - (cfg->s.genCfg.lmPst.selector != LRG_SEL_LC)) + if ((cfg->s.genCfg.lmPst.selector != ODU_SELECTOR_TC) && + (cfg->s.genCfg.lmPst.selector != ODU_SELECTOR_LC)) { RLOG0(L_ERROR, "unsupported Selector value for RGU"); - RETVALUE(LCM_REASON_INVALID_PAR_VAL); + return (LCM_REASON_INVALID_PAR_VAL); } /* Update the Pst structure for LM interface */ cmMemcpy((U8 *)&rgCb[inst].rgInit.lmPst, (U8 *)&cfg->s.genCfg.lmPst, @@ -937,13 +903,17 @@ RgCfg *cfg; /* Configuaration information */ rgCb[inst].rgInit.region = cfg->s.genCfg.mem.region; rgCb[inst].rgInit.pool = cfg->s.genCfg.mem.pool; rgCb[inst].genCfg.tmrRes = cfg->s.genCfg.tmrRes; + + macCb.macInst = rgCb[inst].rgInit.inst; + macCb.procId = rgCb[inst].rgInit.procId; + /* Initialize SAP States */ rgCb[inst].crgSap.sapSta.sapState = LRG_NOT_CFG; if(cfg->s.genCfg.numRguSaps == 0) { RGDBGERRNEW(inst,(rgPBuf(inst), "\nrgGenCfg(): Invalid numRguSap.\n")); - RETVALUE(RFAILED); + return RFAILED; } /* allocate RGR saps */ @@ -953,7 +923,7 @@ RgCfg *cfg; /* Configuaration information */ (sizeof(RgUpSapCb) * cfg->s.genCfg.numRguSaps)) != ROK) { RGDBGERRNEW(inst,(rgPBuf(inst), "\nrgGenCfg(): Failed to allocate mem for RGU SAP's.\n")); - RETVALUE(RFAILED); + return RFAILED; } rgCb[inst].numRguSaps = cfg->s.genCfg.numRguSaps; @@ -983,13 +953,13 @@ RgCfg *cfg; /* Configuaration information */ (Data *)rgCb[inst].rguSap, (sizeof(RgUpSapCb) * cfg->s.genCfg.numRguSaps)); - RETVALUE(LCM_REASON_MEM_NOAVAIL); + return (LCM_REASON_MEM_NOAVAIL); } #endif /* Set Config done in TskInit */ rgCb[inst].rgInit.cfgDone = TRUE; - RETVALUE(ret); + return (ret); } @@ -1431,7 +1401,7 @@ RgMngmt *cfm; * -# ROK **/ #ifdef ANSI -PUBLIC S16 rgLMMStartTmr +S16 rgLMMStartTmr ( Inst inst, S16 tmrEvnt, /* Timer Event */ @@ -1439,7 +1409,7 @@ U32 tmrVal, /* Wait Time */ PTR cb /* Entry for which Timer Expired */ ) #else -PUBLIC S16 rgLMMStartTmr(tmrEvnt, tmrVal, cb) +S16 rgLMMStartTmr(tmrEvnt, tmrVal, cb) Inst inst; S16 tmrEvnt; /* Timer Event */ U32 tmrVal; /* Wait Time */ @@ -1465,7 +1435,7 @@ PTR cb; /* Entry for which Timer Expired */ arg.wait = tmrVal; cmPlcCbTq(&arg); - RETVALUE(ROK); + return ROK; } @@ -1490,14 +1460,14 @@ PTR cb; /* Entry for which Timer Expired */ * -# RFAILED **/ #ifdef ANSI -PUBLIC S16 rgLMMStopTmr +S16 rgLMMStopTmr ( Inst inst, /* Scheduler instance */ S16 tmrEvnt, /* Timer Event */ PTR cb /* Entry for which Timer Expired */ ) #else -PUBLIC S16 rgLMMStopTmr(inst,tmrEvnt, cb) +S16 rgLMMStopTmr(inst,tmrEvnt, cb) Inst inst; /* Scheduler instance */ S16 tmrEvnt; /* Timer Event */ PTR cb; /* Entry for which Timer Expired */ @@ -1536,7 +1506,7 @@ PTR cb; /* Entry for which Timer Expired */ } - RETVALUE(ret); + return (ret); } @@ -1557,13 +1527,13 @@ PTR cb; /* Entry for which Timer Expired */ * -# ROK **/ #ifdef ANSI -PUBLIC S16 rgLMMTmrExpiry +S16 rgLMMTmrExpiry ( PTR cb, /* Pointer to timer control block */ S16 tmrEvnt /* Timer Event */ ) #else -PUBLIC S16 rgLMMTmrExpiry(cb,tmrEvnt) +S16 rgLMMTmrExpiry(cb,tmrEvnt) PTR cb; /* Pointer to timer control block */ S16 tmrEvnt; /* Timer Event */ #endif @@ -1603,7 +1573,7 @@ S16 tmrEvnt; /* Timer Event */ ret = RFAILED; break; } - RETVALUE(ret); + return (ret); } @@ -1627,7 +1597,7 @@ S16 tmrEvnt; /* Timer Event */ * -# ROK **/ #ifdef ANSI -PUBLIC S16 rgLMMStaInd +S16 rgLMMStaInd ( Inst inst, U16 category, @@ -1636,7 +1606,7 @@ U16 cause, RgUstaDgn *dgn ) #else -PUBLIC S16 rgLMMStaInd(inst,category, event, cause, dgn) +S16 rgLMMStaInd(inst,category, event, cause, dgn) Inst inst; U16 category; U16 event; @@ -1650,7 +1620,7 @@ RgUstaDgn *dgn; if(rgCb[inst].rgInit.usta == FALSE) { - RETVALUE(ROK); + return ROK; } cmMemset((U8 *)&usta, 0, sizeof(RgMngmt)); @@ -1671,7 +1641,7 @@ RgUstaDgn *dgn; rgCb[inst].rgInit.lmPst.pool = rgCb[inst].genCfg.ustaResp.response.mem.pool; usta.hdr.transId = rgCb[inst].genCfg.ustaResp.transId; - RETVALUE(RgMiLrgStaInd(&rgCb[inst].rgInit.lmPst, &usta)); + return (RgMiLrgStaInd(&rgCb[inst].rgInit.lmPst, &usta)); } @@ -1691,14 +1661,14 @@ RgUstaDgn *dgn; * @return Void **/ #ifdef ANSI -PUBLIC Void rgLMMTrcInd +Void rgLMMTrcInd ( Inst inst, Buffer *srcMbuf, /* Message Buffer */ U8 event /* event */ ) #else -PUBLIC Void rgLMMTrcInd(inst,srcMbuf,event) +Void rgLMMTrcInd(inst,srcMbuf,event) Inst inst; Buffer *srcMbuf; /* Message Buffer */ U8 event; /* event */ @@ -1844,14 +1814,14 @@ U8 event; /* event */ * -# ROK **/ #ifdef ANSI -PUBLIC S16 rgLMMBndCfm +S16 rgLMMBndCfm ( Pst *pst, /* Post Structure */ SuId suId, /* Service user ID */ U8 status /* Status */ ) #else -PUBLIC S16 rgLMMBndCfm(pst,suId,status) +S16 rgLMMBndCfm(pst,suId,status) Pst *pst; /* Post Structure */ SuId suId; /* Service user ID */ U8 status; /* Status */ @@ -1870,7 +1840,7 @@ U8 status; /* Status */ if(rgCb[inst].tfuSap.sapCfg.suId != suId) { RLOG0(L_ERROR, "Invalid SuId"); - RETVALUE(RFAILED); + return RFAILED; } /* check the Sap State */ @@ -1880,9 +1850,9 @@ U8 status; /* Status */ break; case LRG_BND: /* SAP is already bound */ - RETVALUE(ROK); + return ROK; default: - RETVALUE(RFAILED); + return RFAILED; } cfmPst = rgCb[inst].rgInit.lmPst; @@ -1926,7 +1896,7 @@ U8 status; /* Status */ ret = RgMiLrgCntrlCfm(&cfmPst, &cntrlCfm); - RETVALUE(ret); + return (ret); } @@ -1944,13 +1914,13 @@ U8 status; /* Status */ * -# ROK **/ #ifdef ANSI -PUBLIC S16 rgActvTmr +S16 rgActvTmr ( Ent ent, Inst inst ) #else -PUBLIC S16 rgActvTmr(ent, inst) +S16 rgActvTmr(ent, inst) Ent ent; Inst inst; #endif @@ -1961,266 +1931,10 @@ Inst inst; /* Check if any MAC timer has expired */ cmPrcTmr(&rgCb[macInst].tmrTqCp, rgCb[macInst].tmrTq, (PFV) rgLMMTmrExpiry); - RETVALUE(ROK); + return ROK; } /* end of rgActvTmr */ -/** - * @brief Layer Manager Configuration request handler for Scheduler - * - * @details - * - * Function : MacSchGenCfgReq - * - * This function receives general configurations for Scheduler - * from DU APP and forwards to Scheduler. - * - * @param[in] Pst *pst, the post structure - * @param[in] RgMngmt *cfg, the configuration parameter's structure - * @return S16 - * -# ROK - **/ -#ifdef ANSI -PUBLIC S16 MacSchGenCfgReq -( -Pst *pst, /* post structure */ -RgMngmt *cfg /* config structure */ -) -#else -PUBLIC S16 MacSchGenCfgReq(pst, cfg) -Pst *pst; /* post structure */ -RgMngmt *cfg; /* config structure */ -#endif -{ - printf("\nReceived Scheduler gen config at MAC"); - pst->dstInst = DEFAULT_CELLS + 1; - HandleSchGenCfgReq(pst, cfg); - - return ROK; -} - -/** - * @brief Layer Manager Configuration response from Scheduler - * - * @details - * - * Function : SchSendCfgCfm - * - * This function sends general configurations response from - * Scheduler to DU APP. - * - * @param[in] Pst *pst, the post structure - * @param[in] RgMngmt *cfm, the configuration confirm structure - * @return S16 - * -# ROK - **/ -#ifdef ANSI -PUBLIC S16 SchSendCfgCfm -( -Pst *pst, /* post structure */ -RgMngmt *cfm /* config confirm structure */ -) -#else -PUBLIC S16 SchSendCfgCfm(pst, cfm) -Pst *pst; /* post structure */ -RgMngmt *cfm; /* config confirm structure */ -#endif -{ - printf("\nSending Scheduler config confirm to DU APP"); - pst->dstEnt = ENTDUAPP; - pst->dstInst = 0; - pst->srcInst = 0; - pst->selector = MAC_SCH_LC_SELECTOR; - RgMiLrgSchCfgCfm(pst, cfm); - - RETVALUE(ROK); -} - - -/*********************************************************** - * - * Func : macCellCfgFillCfmPst - * - * - * Desc : Fills the Confirmation Post Structure cfmPst - * - * Ret : Void - * - * Notes: - * - * File : rg_lmm.c - * - **********************************************************/ -Void macCellCfgFillCfmPst -( -Pst *reqPst, -Pst *cfmPst -) -{ - Inst inst; - inst = reqPst->dstInst; - - cfmPst->srcEnt = rgCb[inst].rgInit.ent; - cfmPst->srcInst = rgCb[inst].rgInit.inst; - cfmPst->srcProcId = rgCb[inst].rgInit.procId; - - cfmPst->dstEnt = ENTDUAPP; - cfmPst->dstInst = 0; - cfmPst->dstProcId = cfmPst->srcProcId; - - cfmPst->selector = LRG_SEL_LC; - cfmPst->prior = reqPst->prior; - cfmPst->route = reqPst->route; - cfmPst->region = reqPst->region; - cfmPst->pool = reqPst->pool; - cfmPst->event = EVENT_MAC_CELL_CONFIG_CFM; - - RETVOID; -} - -/** - * @brief Layer Manager Configuration request handler. - * - * @details - * - * Function : MacHdlCellCfgReq - * - * This function handles the gNB and cell configuration - * request received from DU APP. - * This API unapcks and forwards the config towards SCH - * - * @param[in] Pst *pst - * @param[in] MacCellCfg *macCellCfg - * @return S16 - * -# ROK - **/ -int MacHdlCellCfgReq -( - Pst *pst, - MacCellCfg *macCellCfg -) -{ - Pst cfmPst; - int ret = ROK; - RgCellCb *cellCb; - Inst inst = pst->dstInst; - - cmMemset((U8 *)&cfmPst, 0, sizeof(Pst)); - MAC_ALLOC(cellCb,sizeof(RgCellCb)); - - if(cellCb == NULLP) - { - DU_LOG("\nMAC : cellCb is NULL at handling of macCellCfg\n"); - return RFAILED; - } - - memcpy(&cellCb->macCellCfg,macCellCfg,sizeof(MacCellCfg)); - rgCb[inst].cell = cellCb; - - /* Send cell cfg to scheduler */ - ret = MacSchCellCfgReq(pst, macCellCfg); - if(ret != ROK) - { - MacCellCfgCfm macCellCfgCfm; - macCellCfgCfm.rsp = RSP_NOK; - macCellCfgCfm.transId = macCellCfg->transId; - macCellCfgFillCfmPst(pst,&cfmPst); - ret = (*packMacCellCfmOpts[cfmPst.selector])(&cfmPst,&macCellCfgCfm); - } - return ret; -} /* end of MacHdlCellCfgReq */ - -/** - * @brief Layer Manager Configuration request handler. - * - * @details - * - * Function : MacSchCellCfgReq - * - * This function sends cell configuration to SCH - * - * @param[in] Pst *pst - * @param[in] MacCellCfg *macCellCfg - * @return S16 - * -# ROK - **/ -int MacSchCellCfgReq -( - Pst *pst, - MacCellCfg *macCellCfg -) -{ - SchCellCfg schCellCfg; - Pst cfgPst; - int ret; - - cmMemset((U8 *)&cfgPst, 0, sizeof(Pst)); - schCellCfg.cellId = macCellCfg->cellId; - schCellCfg.phyCellId = macCellCfg->phyCellId; - schCellCfg.bandwidth = macCellCfg->dlCarrCfg.bw; - schCellCfg.dupMode = macCellCfg->dupType; - schCellCfg.ssbPbchPwr = macCellCfg->ssbCfg.ssbPbchPwr; - schCellCfg.scsCommon = macCellCfg->ssbCfg.scsCmn; - schCellCfg.ssbOffsetPointA = macCellCfg->ssbCfg.ssbOffsetPointA; - schCellCfg.ssbPeriod = macCellCfg->ssbCfg.ssbPeriod; - schCellCfg.ssbSubcOffset = macCellCfg->ssbCfg.ssbScOffset; - for(uint8_t idx=0; idxssbCfg.ssbMask[idx]; - } - cfgPst.srcProcId = pst->dstProcId; - cfgPst.dstProcId = pst->srcProcId; - cfgPst.srcEnt = ENTRG; - cfgPst.srcInst = 0; - cfgPst.dstEnt = ENTRG; - cfgPst.dstInst = 1; - cfgPst.selector = MAC_SCH_TC_SELECTOR; - cfgPst.event = EVENT_SCH_CELL_CFG; - - ret = (*SchCellCfgOpts[cfgPst.selector])(&cfgPst, &schCellCfg); - return ret; -} /* end of MacSchCellCfgReq */ - -/** - * @brief Layer Manager Configuration response handler. - * - * @details - * - * Function : MacProcSchCellCfgCfm - * - * This function processes cell configuration to SCH - * - * @param[in] Pst *pst - * @param[in] SchCellCfgCfm *schCellCfgCfm - * @return int - * -# ROK - **/ -int MacProcSchCellCfgCfm -( - Pst *pst, - SchCellCfgCfm *schCellCfgCfm -) -{ - Pst cfmPst; - int ret; - RgCellCb *cellCb; - MacCellCfgCfm macCellCfgCfm; - - cmMemset((U8 *)&cfmPst, 0, sizeof(Pst)); - cellCb = rgCb[pst->dstInst].cell; - macCellCfgCfm.transId = cellCb->macCellCfg.transId; - if(schCellCfgCfm->rsp == RSP_OK) - { - macCellCfgCfm.rsp = RSP_OK; - } - else - { - macCellCfgCfm.rsp = RSP_NOK; - } - macCellCfgFillCfmPst(pst,&cfmPst); - ret = (*packMacCellCfmOpts[cfmPst.selector])(&cfmPst,&macCellCfgCfm); - -} /********************************************************************** End of file