[EPIC-ID: ODUHIGH-488][TASK-ID: ODUHIGH-494]SCH framework update to support different...
[o-du/l2.git] / src / 5gnrmac / mac_msg_hdl.c
index f167513..0b3e34d 100644 (file)
 
 MacCb  macCb;
 
-/* Function pointer for sending crc ind from MAC to SCH */
-MacSchCrcIndFunc macSchCrcIndOpts[]=
-{
-   packMacSchCrcInd,
-   MacSchCrcInd,
-   packMacSchCrcInd
-};
-
-/* Function pointer for sending DL RLC BO Info from MAC to SCH */
-MacSchDlRlcBoInfoFunc macSchDlRlcBoInfoOpts[]=
-{
-   packMacSchDlRlcBoInfo,
-   MacSchDlRlcBoInfo,
-   packMacSchDlRlcBoInfo
-};
-
-/* Function pointer for sending short BSR from MAC to SCH */
-MacSchBsrFunc macSchBsrOpts[]=
-{
-   packMacSchBsr,
-   MacSchBsr,
-   packMacSchBsr
-};
-
-/* Function pointer for sending SR Uci ind from MAC to SCH */
-MacSchSrUciIndFunc macSchSrUciIndOpts[]=
-{
-   packMacSchSrUciInd,
-   MacSchSrUciInd,
-   packMacSchSrUciInd
-};
-
-/* Function pointer for sending HARQ Uci ind from MAC to SCH */
-MacSchHarqUciIndFunc macSchHarqUciIndOpts[]=
-{
-   packMacSchHarqUciInd,
-   MacSchHarqUciInd,
-   packMacSchHarqUciInd
-};
-
-/* Function pointer for sending Slice cfg  ind from MAC to SCH */
-MacSchSliceCfgReqFunc macSchSliceCfgReqOpts[]=
-{
-   packMacSchSliceCfgReq,
-   MacSchSliceCfgReq,
-   packMacSchSliceCfgReq
-};
-
-/* Function pointer for sending Slice cfg  ind from MAC to SCH */
-MacSchSliceReCfgReqFunc macSchSliceReCfgReqOpts[]=
-{
-   packMacSchSliceReCfgReq,
-   MacSchSliceReCfgReq,
-   packMacSchSliceReCfgReq
-};
 /*******************************************************************
  *
  * @brief Sends DL BO Info to SCH
@@ -114,7 +59,7 @@ uint8_t sendDlRlcBoInfoToSch(DlRlcBoInfo *dlBoInfo)
    Pst pst;
 
    FILL_PST_MAC_TO_SCH(pst, EVENT_DL_RLC_BO_INFO_TO_SCH);
-   return(*macSchDlRlcBoInfoOpts[pst.selector])(&pst, dlBoInfo);
+   return(SchMessageRouter(&pst, (void *)dlBoInfo));
 }
 
 /*******************************************************************
@@ -138,7 +83,7 @@ uint8_t sendCrcIndMacToSch(CrcIndInfo *crcInd)
    Pst pst;
 
    FILL_PST_MAC_TO_SCH(pst, EVENT_CRC_IND_TO_SCH);
-   return(*macSchCrcIndOpts[pst.selector])(&pst, crcInd);
+   return(SchMessageRouter(&pst, (void *)crcInd));
 }
 
 /*******************************************************************
@@ -239,7 +184,7 @@ uint8_t fapiMacRxDataInd(Pst *pst, RxDataInd *rxDataInd)
  *         RFAILED - failure
  *
  * ****************************************************************/
-uint8_t MacProcRlcDlData(Pst* pstInfo, RlcData *dlData)
+uint8_t MacProcRlcDlData(Pst* pstInfo, RlcDlData *dlData)
 {
    uint8_t   pduIdx = 0;
    uint8_t   ueId  = 0;
@@ -323,7 +268,7 @@ uint8_t MacProcRlcDlData(Pst* pstInfo, RlcData *dlData)
    }
    if(pstInfo->selector == ODU_SELECTOR_LWLC)
    {
-      MAC_FREE_SHRABL_BUF(pstInfo->region, pstInfo->pool, dlData, sizeof(RlcData));
+      MAC_FREE_SHRABL_BUF(pstInfo->region, pstInfo->pool, dlData, sizeof(RlcDlData));
    }
    return ROK;
 }
@@ -352,27 +297,22 @@ uint8_t macProcUlData(uint16_t cellId, uint16_t rnti, SlotTimingInfo slotInfo, \
 uint8_t lcId, uint16_t pduLen, uint8_t *pdu)
 {
    Pst         pst;
-   RlcData     *ulData;
+   RlcUlData     *ulData;
 
    /* Filling RLC Ul Data*/
-   MAC_ALLOC_SHRABL_BUF(ulData, sizeof(RlcData));
+   MAC_ALLOC_SHRABL_BUF(ulData, sizeof(RlcUlData));
    if(!ulData)
    {
       DU_LOG("\nERROR  -->  MAC : Memory allocation failed while sending UL data to RLC");
       return RFAILED;
    }
-   memset(ulData, 0, sizeof(RlcData));
+   memset(ulData, 0, sizeof(RlcUlData));
    ulData->cellId = cellId; 
    ulData->rnti = rnti;
    memcpy(&ulData->slotInfo, &slotInfo, sizeof(SlotTimingInfo));
    ulData->slotInfo.cellId = cellId;
 
    /* Filling pdu info */
-   if(lcId != SRB0_LCID)
-      ulData->pduInfo[ulData->numPdu].commCh = false;
-   else
-      ulData->pduInfo[ulData->numPdu].commCh = true;
-
    ulData->pduInfo[ulData->numPdu].lcId = lcId;
    ulData->pduInfo[ulData->numPdu].pduBuf = pdu;
    ulData->pduInfo[ulData->numPdu].pduLen = pduLen;
@@ -464,7 +404,6 @@ uint8_t sendSchedRptToRlc(DlSchedInfo dlInfo, SlotTimingInfo slotInfo, uint8_t u
       {
          schedRpt->lcSch[lcIdx].lcId = dlInfo.dlMsgAlloc[ueIdx]->dlMsgSchedInfo[schInfoIdx].lcSchInfo[lcIdx].lcId;
          schedRpt->lcSch[lcIdx].bufSize = dlInfo.dlMsgAlloc[ueIdx]->dlMsgSchedInfo[schInfoIdx].lcSchInfo[lcIdx].schBytes;
-         schedRpt->lcSch[lcIdx].commCh = false;
       }
    }
 
@@ -497,14 +436,14 @@ uint8_t sendSchedRptToRlc(DlSchedInfo dlInfo, SlotTimingInfo slotInfo, uint8_t u
  *         RFAILED - failure
  *
  * ****************************************************************/
-uint8_t MacProcCellStart(Pst *pst, OduCellId  *cellId)
+uint8_t MacProcCellStart(Pst *pst, CellStartInfo  *cellStart)
 {
    DU_LOG("\nINFO  -->  MAC : Handling cell start request");
    gSlotCount = 0;
-   sendToLowerMac(START_REQUEST, 0, cellId);
+   sendToLowerMac(START_REQUEST, 0, cellStart);
 
-   MAC_FREE_SHRABL_BUF(pst->region, pst->pool, cellId, \
-        sizeof(OduCellId));
+   MAC_FREE_SHRABL_BUF(pst->region, pst->pool, cellStart, \
+        sizeof(CellStartInfo));
 
    return ROK;
 }
@@ -526,21 +465,21 @@ uint8_t MacProcCellStart(Pst *pst, OduCellId  *cellId)
  *         RFAILED - failure
  *
  * ****************************************************************/
-uint8_t MacProcCellStop(Pst *pst, OduCellId  *cellId)
+uint8_t MacProcCellStop(Pst *pst, CellStopInfo  *cellStop)
 {
 #ifdef INTEL_FAPI
    uint16_t      cellIdx; 
 
    DU_LOG("\nINFO  -->  MAC : Sending cell stop request to Lower Mac");
-   GET_CELL_IDX(cellId->cellId, cellIdx);
+   GET_CELL_IDX(cellStop->cellId, cellIdx);
    if(macCb.macCell[cellIdx])
    {
       macCb.macCell[cellIdx]->state = CELL_TO_BE_STOPPED;
    }
 #endif
 
-   MAC_FREE_SHRABL_BUF(pst->region, pst->pool, cellId, \
-        sizeof(OduCellId));
+   MAC_FREE_SHRABL_BUF(pst->region, pst->pool, cellStop, \
+        sizeof(CellStopInfo));
 
    return ROK;
 }
@@ -694,7 +633,7 @@ uint8_t macProcShortBsr(uint16_t cellId, uint16_t crnti, uint8_t lcgId, uint32_t
    bsrInd.dataVolInfo[0].dataVol = bufferSize;
 
    FILL_PST_MAC_TO_SCH(pst, EVENT_SHORT_BSR);
-   return(*macSchBsrOpts[pst.selector])(&pst, &bsrInd);
+   return(SchMessageRouter(&pst, (void *)&bsrInd));
 }
 
 /*******************************************************************
@@ -736,12 +675,12 @@ uint8_t macProcLongBsr(uint16_t cellId, uint16_t crnti,uint8_t numLcg,\
       memcpy(&(bsrInd.dataVolInfo[lcgIdx]), &(dataVolInfo[lcgIdx]), sizeof(DataVolInfo));
 
    FILL_PST_MAC_TO_SCH(pst, EVENT_LONG_BSR);
-   return(*macSchBsrOpts[pst.selector])(&pst, &bsrInd);
+   return(SchMessageRouter(&pst, (void *)&bsrInd));
 }
 
 /*******************************************************************
  *
- * @brief Builds and send HARQ UCI Indication to SCH
+ * @brief Builds and send DL HARQ Indication to SCH
  *
  * @details
  *
@@ -762,25 +701,25 @@ uint8_t buildAndSendHarqInd(HarqInfoF0F1 *harqInfo, uint8_t crnti, uint16_t cell
 {
    uint16_t harqCounter=0;
    Pst pst;
-   HarqUciIndInfo   harqUciInd;
+   DlHarqInd   dlHarqInd;
    memset(&pst, 0, sizeof(Pst));
-   memset(&harqUciInd, 0, sizeof(HarqUciIndInfo));
-
-   harqUciInd.cellId       = macCb.macCell[cellIdx]->cellId;
-   harqUciInd.crnti        = crnti;
-   harqUciInd.slotInd.sfn  = slotInd->sfn;
-   harqUciInd.slotInd.slot = slotInd->slot;
-   harqUciInd.numHarq = harqInfo->numHarq;
-   memset(harqUciInd.harqPayload, 0, MAX_SR_BITS_IN_BYTES);
+   memset(&dlHarqInd, 0, sizeof(DlHarqInd));
+
+   dlHarqInd.cellId       = macCb.macCell[cellIdx]->cellId;
+   dlHarqInd.crnti        = crnti;
+   dlHarqInd.slotInd.sfn  = slotInd->sfn;
+   dlHarqInd.slotInd.slot = slotInd->slot;
+   dlHarqInd.numHarq      = harqInfo->numHarq;
+   memset(dlHarqInd.harqPayload, 0, MAX_SR_BITS_IN_BYTES);
    for(harqCounter = 0; harqCounter < harqInfo->numHarq; harqCounter++)
    {
-      harqUciInd.harqPayload[harqCounter] = harqInfo->harqValue[harqCounter];
+      dlHarqInd.harqPayload[harqCounter] = harqInfo->harqValue[harqCounter];
    }
    
    /* Fill Pst */
-   FILL_PST_MAC_TO_SCH(pst, EVENT_UCI_IND_TO_SCH);
+   FILL_PST_MAC_TO_SCH(pst, EVENT_DL_HARQ_IND_TO_SCH);
 
-   return(*macSchHarqUciIndOpts[pst.selector])(&pst, &harqUciInd);
+   return SchMessageRouter(&pst, (void *)&dlHarqInd);
 }
 
 
@@ -820,7 +759,7 @@ uint8_t buildAndSendSrInd(UciInd *macUciInd, uint8_t crnti)
    /* Fill Pst */
    FILL_PST_MAC_TO_SCH(pst, EVENT_UCI_IND_TO_SCH);
 
-   return(*macSchSrUciIndOpts[pst.selector])(&pst, &srUciInd);
+   return(SchMessageRouter(&pst, (void *)&srUciInd));
 }
 
 /*******************************************************************
@@ -983,7 +922,7 @@ uint8_t MacProcSliceCfgReq(Pst *pst, MacSliceCfgReq *macSliceCfgReq)
          if(fillSliceCfgInfo(schSliceCfgReq, macSliceCfgReq) == ROK)
          {
             FILL_PST_MAC_TO_SCH(schPst, EVENT_SLICE_CFG_REQ_TO_SCH);
-            ret = (*macSchSliceCfgReqOpts[schPst.selector])(&schPst, schSliceCfgReq);
+            ret = SchMessageRouter(&schPst, (void *)schSliceCfgReq);
          }
       }
       freeMacSliceCfgReq(macSliceCfgReq, pst); 
@@ -1001,46 +940,46 @@ uint8_t MacProcSliceCfgReq(Pst *pst, MacSliceCfgReq *macSliceCfgReq)
  *
  * @details
  *
- *    Function : MacProcSliceReCfgReq 
+ *    Function : MacProcSliceRecfgReq 
  *
  *    Functionality:
  *       Processes Processes Slice ReCfg Request recived from DU
  *
  * @params[in] Post Structure Pointer
- *             MacSliceCfgReq *macSliceReCfgReq;
+ *             MacSliceCfgReq *macSliceRecfgReq;
  * @return ROK     - success
  *         RFAILED - failure
  *
  **********************************************************************/
-uint8_t MacProcSliceReCfgReq(Pst *pst, MacSliceCfgReq *macSliceReCfgReq)
+uint8_t MacProcSliceRecfgReq(Pst *pst, MacSliceRecfgReq *macSliceRecfgReq)
 {
    uint8_t ret = ROK;
    Pst schPst;
-   SchSliceCfgReq *schSliceReCfgReq;
+   SchSliceRecfgReq *schSliceRecfgReq;
 
    DU_LOG("\nINFO  -->  MAC : Received Slice ReCfg request from DU APP");
-   if(macSliceReCfgReq)
+   if(macSliceRecfgReq)
    {
-      MAC_ALLOC(schSliceReCfgReq, sizeof(SchSliceCfgReq));
-      if(schSliceReCfgReq == NULLP)
+      MAC_ALLOC(schSliceRecfgReq, sizeof(SchSliceRecfgReq));
+      if(schSliceRecfgReq == NULLP)
       {
-         DU_LOG("\nERROR -->  MAC : Memory allocation failed in MacProcSliceReCfgReq");
+         DU_LOG("\nERROR -->  MAC : Memory allocation failed in MacProcSliceRecfgReq");
          ret = RFAILED;
       }
       else
       {
-         if(fillSliceCfgInfo(schSliceReCfgReq, macSliceReCfgReq) == ROK)
+         if(fillSliceCfgInfo(schSliceRecfgReq, macSliceRecfgReq) == ROK)
          {
             FILL_PST_MAC_TO_SCH(schPst, EVENT_SLICE_RECFG_REQ_TO_SCH);
-            ret = (*macSchSliceReCfgReqOpts[schPst.selector])(&schPst, schSliceReCfgReq);
+            ret = SchMessageRouter(&schPst, (void *)schSliceRecfgReq);
          }
 
       }
-      freeMacSliceCfgReq(macSliceReCfgReq, pst);
+      freeMacSliceCfgReq(macSliceRecfgReq, pst);
    }
    else
    {
-      DU_LOG("\nINFO  -->  MAC : Received MacSliceCfgReq is NULL");
+      DU_LOG("\nINFO  -->  MAC : Received MacSliceRecfgReq is NULL");
    }
    return ret;
 }