Addressed comments in lower Mac
[o-du/l2.git] / src / 5gnrmac / rg_lmm.c
index 8db8f03..2943511 100755 (executable)
@@ -83,9 +83,11 @@ static int RLOG_MODULE_ID=4096;
 #endif
 #include "ss_rbuf.h"
 #include "ss_rbuf.x"
-
 #include "lwr_mac.h"         /* MAC CL defines */
 #include "mac.h"
+#include "lwr_mac_phy.h"
+#include "lwr_mac_fsm.h"
+
 #ifdef __cplusplus
 extern "C" {
 #endif /* __cplusplus */
@@ -96,6 +98,9 @@ EXTERN Void rgGetSId ARGS((SystemId *s));
 
 /* Public variable declaration */
 ClCb   clGlobalCp;
+MacCb  macCb;
+
+int MacSchCellCfgReq(Pst *pst,MacCellCfg *macCellCfg);
 
 /* forward references */
 PRIVATE U16 rgLMMGenCfg ARGS((
@@ -131,7 +136,7 @@ RgMngmt       *cfm,
 Pst           *cfmPst
 ));
 
-extern U16 packMacCellCfgCfm(Pst *pst, MacCellCfgCfm *macCellCfgCfm);
+extern int packMacCellCfgCfm(Pst *pst, MacCellCfgCfm *macCellCfgCfm);
 
 packMacCellCfgConfirm packMacCellCfmOpts[] =
 {
@@ -245,6 +250,9 @@ Reason reason;         /* reason */
    /* Initialize Scheduler as well */
    schActvInit(ENTRG, (DEFAULT_CELLS + SCH_INST_START), DFLT_REGION, PWR_UP);
 
+   /* Initialize lower mac */
+   lwrMacInit();
+
    RETVALUE(ROK);
 
 } /* rgActvInit */
@@ -936,6 +944,9 @@ 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;
+
    /* Initialize SAP States */
    rgCb[inst].crgSap.sapSta.sapState = LRG_NOT_CFG;
 
@@ -1980,13 +1991,13 @@ Inst    inst;
  *      -# ROK
  **/
 #ifdef ANSI
-PUBLIC S16 MacSchGenCfgReq
+PUBLIC int MacSchGenCfgReq
 (
 Pst      *pst,    /* post structure  */
 RgMngmt  *cfg     /* config structure  */
 )
 #else
-PUBLIC S16 MacSchGenCfgReq(pst, cfg)
+PUBLIC int MacSchGenCfgReq(pst, cfg)
 Pst      *pst;    /* post structure  */
 RgMngmt  *cfg;    /* config structure  */
 #endif    
@@ -2100,7 +2111,7 @@ int MacHdlCellCfgReq
 )
 {
    Pst cfmPst;
-   int ret = ROK;
+   uint16_t ret = ROK;
    RgCellCb      *cellCb;
        MacCellCb     *macCellCb;
    Inst inst = pst->dstInst;
@@ -2124,6 +2135,7 @@ int MacHdlCellCfgReq
       return RFAILED;
    }
    macCb.macCell = macCellCb;
+   macCb.macCell->cellId = macCellCfg->cellId;
    /* Send cell cfg to scheduler */
    ret = MacSchCellCfgReq(pst, macCellCfg);
        if(ret != ROK)
@@ -2134,6 +2146,9 @@ int MacHdlCellCfgReq
                macCellCfgFillCfmPst(pst,&cfmPst);
                ret = (*packMacCellCfmOpts[cfmPst.selector])(&cfmPst,&macCellCfgCfm);
        }
+#ifdef INTEL_WLS
+   LwrMacEnqueueWlsBlock();
+#endif
    return ret;
 } /* end of MacHdlCellCfgReq */
 
@@ -2186,6 +2201,38 @@ int MacSchCellCfgReq
        schCellCfg.sib1SchCfg.searchSpaceZeroIndex = macCellCfg->sib1Cfg.searchSpaceZeroIndex; 
        schCellCfg.sib1SchCfg.sib1Mcs = macCellCfg->sib1Cfg.sib1Mcs; 
 
+       /* fill RACH config params */
+       schCellCfg.schRachCfg.prachCfgIdx = macCellCfg->prachCfg.prachCfgIdx;
+       schCellCfg.schRachCfg.prachSubcSpacing = \
+          macCellCfg->prachCfg.prachSubcSpacing;
+       schCellCfg.schRachCfg.msg1FreqStart = macCellCfg->prachCfg.msg1FreqStart;
+       schCellCfg.schRachCfg.msg1Fdm       = macCellCfg->prachCfg.msg1Fdm;
+       schCellCfg.schRachCfg.rootSeqIdx    = macCellCfg->prachCfg.fdm[0].rootSeqIdx;
+       schCellCfg.schRachCfg.numRootSeq    = macCellCfg->prachCfg.fdm[0].numRootSeq;
+       schCellCfg.schRachCfg.k1            = macCellCfg->prachCfg.fdm[0].k1;
+       schCellCfg.schRachCfg.ssbPerRach    = macCellCfg->prachCfg.ssbPerRach;
+       schCellCfg.schRachCfg.prachMultCarrBand = \
+          macCellCfg->prachCfg.prachMultCarrBand;
+       schCellCfg.schRachCfg.raContResTmr  = macCellCfg->prachCfg.raContResTmr;
+       schCellCfg.schRachCfg.rsrpThreshSsb = macCellCfg->prachCfg.rsrpThreshSsb;
+       schCellCfg.schRachCfg.raRspWindow   = macCellCfg->prachCfg.raRspWindow;
+
+   /* fill initial DL BWP */
+   schCellCfg.schInitialBwp.bwp.firstPrb = macCellCfg->initialBwp.bwp.firstPrb;
+   schCellCfg.schInitialBwp.bwp.numPrb = macCellCfg->initialBwp.bwp.numPrb;
+   schCellCfg.schInitialBwp.bwp.scs = macCellCfg->initialBwp.bwp.scs;
+   schCellCfg.schInitialBwp.bwp.cyclicPrefix = macCellCfg->initialBwp.bwp.cyclicPrefix;
+   schCellCfg.schInitialBwp.pdcchCommon.raSearchSpace.searchSpaceId = macCellCfg->initialBwp.pdcchCommon.raSearchSpace.searchSpaceId;
+   schCellCfg.schInitialBwp.pdcchCommon.raSearchSpace.coresetId = macCellCfg->initialBwp.pdcchCommon.raSearchSpace.coresetId;
+   schCellCfg.schInitialBwp.pdcchCommon.raSearchSpace.monitoringSlot = macCellCfg->initialBwp.pdcchCommon.raSearchSpace.monitoringSlot;
+   schCellCfg.schInitialBwp.pdcchCommon.raSearchSpace.duration = macCellCfg->initialBwp.pdcchCommon.raSearchSpace.duration;
+   schCellCfg.schInitialBwp.pdcchCommon.raSearchSpace.monitoringSymbol = macCellCfg->initialBwp.pdcchCommon.raSearchSpace.monitoringSymbol;
+   schCellCfg.schInitialBwp.pdcchCommon.raSearchSpace.candidate.aggLevel1 = macCellCfg->initialBwp.pdcchCommon.raSearchSpace.candidate.aggLevel1;
+   schCellCfg.schInitialBwp.pdcchCommon.raSearchSpace.candidate.aggLevel2 = macCellCfg->initialBwp.pdcchCommon.raSearchSpace.candidate.aggLevel2;
+   schCellCfg.schInitialBwp.pdcchCommon.raSearchSpace.candidate.aggLevel4 = macCellCfg->initialBwp.pdcchCommon.raSearchSpace.candidate.aggLevel4;
+   schCellCfg.schInitialBwp.pdcchCommon.raSearchSpace.candidate.aggLevel8 = macCellCfg->initialBwp.pdcchCommon.raSearchSpace.candidate.aggLevel8;
+   schCellCfg.schInitialBwp.pdcchCommon.raSearchSpace.candidate.aggLevel16 = macCellCfg->initialBwp.pdcchCommon.raSearchSpace.candidate.aggLevel16;
+
    cfgPst.srcProcId = pst->dstProcId;
        cfgPst.dstProcId = pst->srcProcId;
        cfgPst.srcEnt    = ENTRG;
@@ -2199,6 +2246,40 @@ int MacSchCellCfgReq
        return ret;
 } /* end of MacSchCellCfgReq */
 
+
+/*******************************************************************
+ *
+ * @brief Sends Cell config confirm to DU APP
+ *
+ * @details
+ *
+ *    Function : MacSendCellCfgCfm 
+ *
+ *    Functionality:
+ *      Sends Cell config confirm to DU APP
+ *
+ * @params[in] Response status
+ * @return void
+ *
+ * ****************************************************************/
+void MacSendCellCfgCfm(uint8_t response)
+{
+   Pst pst;
+   RgCellCb      *cellCb;
+   MacCellCfgCfm macCellCfgCfm;
+   cmMemset((U8 *)&pst, 0, sizeof(Pst));
+   cellCb = rgCb[macCb.macInst].cell;
+   macCellCfgCfm.transId = cellCb->macCellCfg.transId;
+   macCellCfgCfm.rsp = response;
+
+   memcpy((void *)&pst, (void *)&rgCb[macCb.macInst].rgInit.lmPst, sizeof(Pst));
+   pst.event = EVENT_MAC_CELL_CONFIG_CFM;
+   (*packMacCellCfmOpts[pst.selector])(&pst,&macCellCfgCfm);
+}
+
+
 /**
  * @brief Layer Manager Configuration response handler. 
  *
@@ -2219,26 +2300,17 @@ int MacProcSchCellCfgCfm
  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;
+      sendToLowerMac(CONFIG_REQUEST, 0, (void *)NULL);
        }
        else
        {
-               macCellCfgCfm.rsp = RSP_NOK;
+      MacSendCellCfgCfm(RSP_NOK);
        }
-       macCellCfgFillCfmPst(pst,&cfmPst);
-       ret = (*packMacCellCfmOpts[cfmPst.selector])(&cfmPst,&macCellCfgCfm);
-       
+   return ROK; 
 }
+
 /**********************************************************************
  
          End of file