X-Git-Url: https://gerrit.o-ran-sc.org/r/gitweb?a=blobdiff_plain;f=src%2F5gnrmac%2Frg_lmm.c;h=d7e6e1b015658ab107a1ea4b9f15435f8bb7a025;hb=392607b7a8cbf1b7415b15517275dd1ef4e897a9;hp=d5176f17e31c1a9d0646b6f1501c46d8aba5b8d3;hpb=fe3e15254e67fd96dbfabec4bf7245c3b64ee415;p=o-du%2Fl2.git diff --git a/src/5gnrmac/rg_lmm.c b/src/5gnrmac/rg_lmm.c index d5176f17e..d7e6e1b01 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 */ @@ -60,15 +51,6 @@ static int RLOG_MODULE_ID=4096; #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 */ @@ -98,7 +80,7 @@ EXTERN Void rgGetSId ARGS((SystemId *s)); /* Public variable declaration */ ClCb clGlobalCp; -MacCb macCb; +extern MacCb macCb; int MacSchCellCfgReq(Pst *pst,MacCellCfg *macCellCfg); @@ -786,8 +768,8 @@ Elmnt sapType; /* Sap Type */ { 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"); @@ -817,8 +799,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"); @@ -847,8 +829,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"); @@ -926,8 +908,8 @@ RgCfg *cfg; /* Configuaration information */ { RETVALUE(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); @@ -2040,7 +2022,7 @@ RgMngmt *cfm; /* config confirm structure */ pst->dstEnt = ENTDUAPP; pst->dstInst = 0; pst->srcInst = 0; - pst->selector = MAC_SCH_LC_SELECTOR; + pst->selector = ODU_SELECTOR_LC; RgMiLrgSchCfgCfm(pst, cfm); RETVALUE(ROK); @@ -2078,7 +2060,7 @@ Pst *cfmPst cfmPst->dstInst = 0; cfmPst->dstProcId = cfmPst->srcProcId; - cfmPst->selector = LRG_SEL_LC; + cfmPst->selector = ODU_SELECTOR_LC; cfmPst->prior = reqPst->prior; cfmPst->route = reqPst->route; cfmPst->region = reqPst->region; @@ -2113,7 +2095,7 @@ int MacHdlCellCfgReq Pst cfmPst; uint16_t ret = ROK; RgCellCb *cellCb; - MacCellCb *macCellCb; + MacCellCb *macCellCb = NULLP; Inst inst = pst->dstInst; cmMemset((U8 *)&cfmPst, 0, sizeof(Pst)); @@ -2134,18 +2116,39 @@ int MacHdlCellCfgReq DU_LOG("\nMAC : macCellCb is NULL at handling of macCellCfg\n"); return RFAILED; } + memset(macCellCb, 0, sizeof(MacCellCb)); macCb.macCell = macCellCb; macCb.macCell->cellId = macCellCfg->cellId; - /* Send cell cfg to scheduler */ + + MAC_ALLOC(cellCb->macCellCfg.sib1Cfg.sib1Pdu, macCellCfg->sib1Cfg.sib1PduLen); + if(cellCb->macCellCfg.sib1Cfg.sib1Pdu == NULLP) + { + DU_LOG("\nMAC : macCellCb is NULL at handling of sib1Pdu of macCellCfg\n"); + return RFAILED; + } + memcpy(cellCb->macCellCfg.sib1Cfg.sib1Pdu, macCellCfg->sib1Cfg.sib1Pdu, macCellCfg->sib1Cfg.sib1PduLen); + + /* Send cell cfg to scheduler */ ret = MacSchCellCfgReq(pst, macCellCfg); if(ret != ROK) { MacCellCfgCfm macCellCfgCfm; macCellCfgCfm.rsp = RSP_NOK; - macCellCfgCfm.transId = macCellCfg->transId; + macCellCfgCfm.cellId = macCellCfg->cellId; macCellCfgFillCfmPst(pst,&cfmPst); ret = (*packMacCellCfmOpts[cfmPst.selector])(&cfmPst,&macCellCfgCfm); } + else + { + if(macCellCfg->prachCfg.fdm[0].numUnusedRootSeq != 0) + { + MAC_FREE_SHRABL_BUF(pst->region, pst->pool, macCellCfg->prachCfg.fdm[0].unsuedRootSeq, + macCellCfg->prachCfg.fdm[0].numUnusedRootSeq* sizeof(uint8_t)); + } + MAC_FREE_SHRABL_BUF(pst->region, pst->pool, macCellCfg->sib1Cfg.sib1Pdu, macCellCfg->sib1Cfg.sib1PduLen); + MAC_FREE_SHRABL_BUF(pst->region, pst->pool, macCellCfg ,sizeof(MacCellCfg)); + } + #ifdef INTEL_WLS LwrMacEnqueueWlsBlock(); #endif @@ -2207,6 +2210,7 @@ int MacSchCellCfgReq macCellCfg->prachCfg.prachSubcSpacing; schCellCfg.schRachCfg.msg1FreqStart = macCellCfg->prachCfg.msg1FreqStart; schCellCfg.schRachCfg.msg1Fdm = macCellCfg->prachCfg.msg1Fdm; + schCellCfg.schRachCfg.rootSeqLen = macCellCfg->prachCfg.rootSeqLen; schCellCfg.schRachCfg.rootSeqIdx = macCellCfg->prachCfg.fdm[0].rootSeqIdx; schCellCfg.schRachCfg.numRootSeq = macCellCfg->prachCfg.fdm[0].numRootSeq; schCellCfg.schRachCfg.k1 = macCellCfg->prachCfg.fdm[0].k1; @@ -2217,6 +2221,52 @@ int MacSchCellCfgReq schCellCfg.schRachCfg.rsrpThreshSsb = macCellCfg->prachCfg.rsrpThreshSsb; schCellCfg.schRachCfg.raRspWindow = macCellCfg->prachCfg.raRspWindow; + /* fill initial DL BWP */ + schCellCfg.schInitialDlBwp.bwp.freqAlloc.startPrb = macCellCfg->initialDlBwp.bwp.firstPrb; + schCellCfg.schInitialDlBwp.bwp.freqAlloc.numPrb = macCellCfg->initialDlBwp.bwp.numPrb; + schCellCfg.schInitialDlBwp.bwp.scs = macCellCfg->initialDlBwp.bwp.scs; + schCellCfg.schInitialDlBwp.bwp.cyclicPrefix = macCellCfg->initialDlBwp.bwp.cyclicPrefix; + schCellCfg.schInitialDlBwp.pdcchCommon.commonSearchSpace.searchSpaceId = + macCellCfg->initialDlBwp.pdcchCommon.commonSearchSpace.searchSpaceId; + schCellCfg.schInitialDlBwp.pdcchCommon.commonSearchSpace.coresetId = + macCellCfg->initialDlBwp.pdcchCommon.commonSearchSpace.coresetId; + schCellCfg.schInitialDlBwp.pdcchCommon.commonSearchSpace.monitoringSlot = + macCellCfg->initialDlBwp.pdcchCommon.commonSearchSpace.monitoringSlot; + schCellCfg.schInitialDlBwp.pdcchCommon.commonSearchSpace.duration = + macCellCfg->initialDlBwp.pdcchCommon.commonSearchSpace.duration; + schCellCfg.schInitialDlBwp.pdcchCommon.commonSearchSpace.monitoringSymbol = + macCellCfg->initialDlBwp.pdcchCommon.commonSearchSpace.monitoringSymbol; + schCellCfg.schInitialDlBwp.pdcchCommon.commonSearchSpace.candidate.aggLevel1 = + macCellCfg->initialDlBwp.pdcchCommon.commonSearchSpace.candidate.aggLevel1; + schCellCfg.schInitialDlBwp.pdcchCommon.commonSearchSpace.candidate.aggLevel2 = + macCellCfg->initialDlBwp.pdcchCommon.commonSearchSpace.candidate.aggLevel2; + schCellCfg.schInitialDlBwp.pdcchCommon.commonSearchSpace.candidate.aggLevel4 = + macCellCfg->initialDlBwp.pdcchCommon.commonSearchSpace.candidate.aggLevel4; + schCellCfg.schInitialDlBwp.pdcchCommon.commonSearchSpace.candidate.aggLevel8 = + macCellCfg->initialDlBwp.pdcchCommon.commonSearchSpace.candidate.aggLevel8; + schCellCfg.schInitialDlBwp.pdcchCommon.commonSearchSpace.candidate.aggLevel16 = + macCellCfg->initialDlBwp.pdcchCommon.commonSearchSpace.candidate.aggLevel16; + schCellCfg.schInitialDlBwp.pdschCommon.k0 = macCellCfg->initialDlBwp.pdschCommon.k0; + schCellCfg.schInitialDlBwp.pdschCommon.mappingType = + macCellCfg->initialDlBwp.pdschCommon.mappingType; + schCellCfg.schInitialDlBwp.pdschCommon.startSymbol = + macCellCfg->initialDlBwp.pdschCommon.startSymbol; + schCellCfg.schInitialDlBwp.pdschCommon.lengthSymbol = + macCellCfg->initialDlBwp.pdschCommon.lengthSymbol; + + /* fill initial UL BWP */ + schCellCfg.schInitialUlBwp.bwp.freqAlloc.startPrb = macCellCfg->initialUlBwp.bwp.firstPrb; + schCellCfg.schInitialUlBwp.bwp.freqAlloc.numPrb = macCellCfg->initialUlBwp.bwp.numPrb; + schCellCfg.schInitialUlBwp.bwp.scs = macCellCfg->initialUlBwp.bwp.scs; + schCellCfg.schInitialUlBwp.bwp.cyclicPrefix = macCellCfg->initialUlBwp.bwp.cyclicPrefix; + schCellCfg.schInitialUlBwp.puschCommon.k2 = macCellCfg->initialUlBwp.puschCommon.k2; + schCellCfg.schInitialUlBwp.puschCommon.mappingType = + macCellCfg->initialUlBwp.puschCommon.mappingType; + schCellCfg.schInitialUlBwp.puschCommon.startSymbol = + macCellCfg->initialUlBwp.puschCommon.startSymbol; + schCellCfg.schInitialUlBwp.puschCommon.lengthSymbol = + macCellCfg->initialUlBwp.puschCommon.lengthSymbol; + cfgPst.srcProcId = pst->dstProcId; cfgPst.dstProcId = pst->srcProcId; @@ -2224,7 +2274,7 @@ int MacSchCellCfgReq cfgPst.srcInst = 0; cfgPst.dstEnt = ENTRG; cfgPst.dstInst = 1; - cfgPst.selector = MAC_SCH_TC_SELECTOR; + cfgPst.selector = ODU_SELECTOR_TC; cfgPst.event = EVENT_SCH_CELL_CFG; ret = (*SchCellCfgOpts[cfgPst.selector])(&cfgPst, &schCellCfg); @@ -2256,7 +2306,7 @@ void MacSendCellCfgCfm(uint8_t response) cmMemset((U8 *)&pst, 0, sizeof(Pst)); cellCb = rgCb[macCb.macInst].cell; - macCellCfgCfm.transId = cellCb->macCellCfg.transId; + macCellCfgCfm.cellId = cellCb->macCellCfg.cellId; macCellCfgCfm.rsp = response; memcpy((void *)&pst, (void *)&rgCb[macCb.macInst].rgInit.lmPst, sizeof(Pst));