[Task-ID: ODUHIGH-455] Changes to support new L1 20.11
[o-du/l2.git] / src / 5gnrmac / lwr_mac_handle_phy.c
index 1df5ead..bce5ed4 100644 (file)
@@ -20,7 +20,8 @@
 #include "common_def.h"
 #include "lrg.h"
 #ifdef INTEL_FAPI
-#include "fapi.h"
+#include "nr5g_fapi_internal.h"
+#include "fapi_vendor_extension.h"
 #endif
 
 /* header/extern include files (.x) */
 #include "lwr_mac_upr_inf.h"
 #include "mac.h"
 #include "mac_utils.h"
+#include "lwr_mac_utils.h"
 
 #ifdef INTEL_FAPI
 /* Function pointer for slot indication from lower mac to mac */
-packSlotIndMsg packSlotIndOpts[] =
+SlotIndFunc sendSlotIndOpts[] =
 {
-   packLcSlotInd,  /* packing for loosely coupled */
+   packSlotInd,  /* packing for loosely coupled */
    fapiMacSlotInd, /* packing for tightly coupled */
-   packLwlcSlotInd /* packing for light weight loosly coupled */
+   packSlotInd /* packing for light weight loosly coupled */
 };
 
 /* Function pointer for rach indication from lower mac to mac */ 
-packRachIndMsg sendRachIndOpts[] =
+RachIndFunc sendRachIndOpts[] =
 {
    packRachInd,
    fapiMacRachInd,
@@ -52,7 +54,7 @@ packRachIndMsg sendRachIndOpts[] =
 };
 
 /* Function pointer for crc indication from lower mac to mac */
-packCrcIndMsg sendCrcIndOpts[] =
+CrcIndFunc sendCrcIndOpts[] =
 {
    packCrcInd,
    fapiMacCrcInd,
@@ -60,7 +62,7 @@ packCrcIndMsg sendCrcIndOpts[] =
 };
 
 /* Function pointer for Rx Data indication from lower mac to mac */
-packRxDataIndMsg sendRxDataIndOpts[] =
+RxDataIndFunc sendRxDataIndOpts[] =
 {
    packRxDataInd,
    fapiMacRxDataInd,
@@ -68,41 +70,20 @@ packRxDataIndMsg sendRxDataIndOpts[] =
 };
 
 /* Function pointer for stop indication from lower mac to mac */ 
-packStopIndMsg sendStopIndOpts[] =
+StopIndFunc sendStopIndOpts[] =
 {
    packStopInd,
    fapiMacStopInd,
    packStopInd
 };
-/*******************************************************************
- *
- * @brief Fills post structure
- *
- * @details
- *
- *    Function : fillLwrMacToMacPst
- *
- *    Functionality:
- *     Fills post structure used to send message from lower MAC
- *     to MAC
- *
- * @params[in] Pst pointer 
- * @return ROK     - success
- *         RFAILED - failure
- *
- * ****************************************************************/
-void fillLwrMacToMacPst(Pst *pst)
+
+/* Function pointer for Uci indication from lower mac to mac */
+UciIndFunc sendUciIndOpts[] =
 {
-   pst->srcProcId = 0;
-   pst->dstProcId = 0;
-   pst->srcEnt = ENTTF;
-   pst->dstEnt = ENTRG;
-   pst->srcInst = 0;
-   pst->dstInst = 0;
-   pst->region = 0;
-   pst->pool =  0; 
-   pst->selector = ODU_SELECTOR_TC;
-}
+   packUciInd,
+   FapiMacUciInd,
+   packUciInd
+};
 
 /*******************************************************************
  *
@@ -124,27 +105,25 @@ uint8_t procSlotInd(fapi_slot_ind_t *fapiSlotInd)
 {
    /* fill Pst structure to send to lwr_mac to MAC */
    Pst pst;
-   uint16_t ret;
-   SlotIndInfo slotInd;
-
-   fillLwrMacToMacPst(&pst);
-   pst.event = EVENT_SLOT_IND_TO_MAC;
+   uint16_t ret = 0;
+   SlotTimingInfo *slotInd = {0};
 
-   slotInd.cellId = lwrMacCb.cellCb[0].cellId; 
-   slotInd.sfn = fapiSlotInd->sfn;
-   slotInd.slot = fapiSlotInd->slot;
-
-   ret = (*packSlotIndOpts[pst.selector])(&pst, &slotInd);
+   MAC_ALLOC_SHRABL_BUF(slotInd, sizeof(SlotTimingInfo));
+   if(slotInd)
+   {
+      slotInd->cellId = lwrMacCb.cellCb[0].cellId; 
+      slotInd->sfn = fapiSlotInd->sfn;
+      slotInd->slot = fapiSlotInd->slot;
 
-#ifdef INTEL_WLS
-   slotIndIdx++;
-   if(slotIndIdx > WLS_MEM_FREE_PRD)
+      FILL_PST_LWR_MAC_TO_MAC(pst, EVENT_SLOT_IND_TO_MAC);
+      pst.selector = ODU_SELECTOR_LWLC;
+      ret = (*sendSlotIndOpts[pst.selector])(&pst, slotInd);
+   }
+   else
    {
-      slotIndIdx = 1;
+      DU_LOG("\nERROR  -->  LWR_MAC: Memory allocation failed in procSlotInd");
+      ret = RFAILED;
    }
-   freeWlsBlockList(slotIndIdx - 1);
-#endif
-
    return ret;
 }
 
@@ -165,20 +144,26 @@ uint8_t procSlotInd(fapi_slot_ind_t *fapiSlotInd)
  * ****************************************************************/
 uint8_t procStopInd()
 {
-   uint8_t ret;
    Pst pst;
+   uint16_t *cellId = NULLP;
 
+   MAC_ALLOC_SHRABL_BUF(cellId, sizeof(uint16_t));
+   if(!cellId)
+   {
+      DU_LOG("\nERROR  -->  LWR_MAC: Memory Allocation failed in procStopInd");
+      return RFAILED;
+   }
+
+   *cellId = lwrMacCb.cellCb[0].cellId;
    lwrMacCb.phyState = PHY_STATE_CONFIGURED;
    lwrMacCb.cellCb[0].state = PHY_STATE_CONFIGURED;
-   DU_LOG("\nLWR_MAC: PHY has moved to configured state");
-
-   fillLwrMacToMacPst(&pst);
-   pst.event = EVENT_STOP_IND_TO_MAC;
+   DU_LOG("\nINFO  -->  LWR_MAC: PHY has moved to configured state");
 
-   ret = (*sendStopIndOpts[pst.selector])(&pst, \
-      lwrMacCb.cellCb[0].cellId);
-   return ret;
+   FILL_PST_LWR_MAC_TO_MAC(pst, EVENT_STOP_IND_TO_MAC);
+   pst.selector = ODU_SELECTOR_LWLC; 
+   return (*sendStopIndOpts[pst.selector])(&pst, cellId);
 }
+
 /*******************************************************************
  *
  * @brief Processes Rach Indication from PHY and sends to MAC
@@ -200,16 +185,28 @@ uint8_t procRachInd(fapi_rach_indication_t  *fapiRachInd)
    Pst          pst;
    uint8_t      pduIdx;
    uint8_t      prmbleIdx;
-   RachPduInfo  *rachPdu;
-   RachInd      rachInd;
-
-   rachInd.cellId = lwrMacCb.cellCb[0].cellId;
-   rachInd.timingInfo.sfn = fapiRachInd->sfn;
-   rachInd.timingInfo.slot = fapiRachInd->slot;
-   rachInd.numPdu = fapiRachInd->numPdus;
-   for(pduIdx=0; pduIdx < rachInd.numPdu; pduIdx++)
+   RachPduInfo  *rachPdu = NULLP;
+   RachInd      *rachInd = NULLP;
+
+   MAC_ALLOC_SHRABL_BUF(rachInd, sizeof(RachInd));
+   if(!rachInd)
+   {
+      DU_LOG("\nERROR  -->  LWR_MAC : Memory Allocation failed in procRachInd");
+      return RFAILED;
+   }
+   if(!fapiRachInd->numPdus)
+   {
+      DU_LOG("\nDEBUG  -->  LWR_MAC : No PDU in RACH.indication at [%d, %d]", fapiRachInd->sfn, fapiRachInd->slot);
+      return ROK;
+   }
+
+   rachInd->cellId = lwrMacCb.cellCb[0].cellId;
+   rachInd->timingInfo.sfn = fapiRachInd->sfn;
+   rachInd->timingInfo.slot = fapiRachInd->slot;
+   rachInd->numPdu = fapiRachInd->numPdus;
+   for(pduIdx=0; pduIdx < rachInd->numPdu; pduIdx++)
    {
-      rachPdu = &rachInd.rachPdu[pduIdx];
+      rachPdu = &rachInd->rachPdu[pduIdx];
       rachPdu->pci = fapiRachInd->rachPdu[pduIdx].phyCellId;
       rachPdu->symbolIdx = fapiRachInd->rachPdu[pduIdx].symbolIndex;
       rachPdu->slotIdx = fapiRachInd->rachPdu[pduIdx].slotIndex;
@@ -223,12 +220,10 @@ uint8_t procRachInd(fapi_rach_indication_t  *fapiRachInd)
            fapiRachInd->rachPdu[pduIdx].preambleInfo[prmbleIdx].timingAdvance;
       }
    }
-   fillLwrMacToMacPst(&pst);
-   pst.event = EVENT_RACH_IND_TO_MAC;
-
-   (*sendRachIndOpts[pst.selector])(&pst, &rachInd);
-   return ROK;
 
+   /* Fill post and sent to MAC */
+   FILL_PST_LWR_MAC_TO_MAC(pst, EVENT_RACH_IND_TO_MAC);
+   return (*sendRachIndOpts[pst.selector])(&pst, rachInd);
 }/* handleRachInd */
 
 /*******************************************************************
@@ -253,17 +248,29 @@ uint8_t procCrcInd(fapi_crc_ind_t  *fapiCrcInd)
    Pst          pst;
    uint8_t      crcInfoIdx;
    uint8_t      crcStatusIdx;
-   CrcInfo      *crcIndInfo;
-   CrcInd       crcInd;
+   CrcInfo      *crcIndInfo = NULLP;
+   CrcInd       *crcInd = NULLP;
 
-   crcInd.cellId = lwrMacCb.cellCb[0].cellId;
-   crcInd.timingInfo.sfn = fapiCrcInd->sfn;
-   crcInd.timingInfo.slot = fapiCrcInd->slot;
-   crcInd.numCrc = fapiCrcInd->numCrcs;
+   MAC_ALLOC_SHRABL_BUF(crcInd, sizeof(CrcInd));
+   if(!crcInd)
+   {
+      DU_LOG("\nERROR  -->  LWR_MAC : Memory Allocation failed in procCrcInd");
+      return RFAILED;
+   }
+   if(!fapiCrcInd->numCrcs)
+   {
+      DU_LOG("\nDEBUG  --> LWR_MAC : No CRC PDUs in CRC.indication at [%d, %d]", fapiCrcInd->sfn, fapiCrcInd->slot);
+      return ROK;
+   }
 
-   for(crcInfoIdx = 0; crcInfoIdx < crcInd.numCrc; crcInfoIdx++)
+   crcInd->cellId = lwrMacCb.cellCb[0].cellId;
+   crcInd->timingInfo.sfn = fapiCrcInd->sfn;
+   crcInd->timingInfo.slot = fapiCrcInd->slot;
+   crcInd->numCrc = fapiCrcInd->numCrcs;
+
+   for(crcInfoIdx = 0; crcInfoIdx < crcInd->numCrc; crcInfoIdx++)
    {
-      crcIndInfo = &crcInd.crcInfo[crcInfoIdx];
+      crcIndInfo = &crcInd->crcInfo[crcInfoIdx];
       crcIndInfo->handle      = fapiCrcInd->crc[crcInfoIdx].handle;
       crcIndInfo->rnti        = fapiCrcInd->crc[crcInfoIdx].rnti;
       crcIndInfo->harqId      = fapiCrcInd->crc[crcInfoIdx].harqId;
@@ -279,12 +286,9 @@ uint8_t procCrcInd(fapi_crc_ind_t  *fapiCrcInd)
       crcIndInfo->rssi = fapiCrcInd->crc[crcInfoIdx].rssi;
    }
 
-   fillLwrMacToMacPst(&pst);
-   pst.event = EVENT_CRC_IND_TO_MAC;
-
-   (*sendCrcIndOpts[pst.selector])(&pst, &crcInd);
-   return ROK;
-
+   /* Fill post and sent to MAC */
+   FILL_PST_LWR_MAC_TO_MAC(pst, EVENT_CRC_IND_TO_MAC);
+   return (*sendCrcIndOpts[pst.selector])(&pst, crcInd);
 } /* handleCrcInd */
 
 /*******************************************************************
@@ -307,18 +311,30 @@ uint8_t procCrcInd(fapi_crc_ind_t  *fapiCrcInd)
 uint8_t procRxDataInd(fapi_rx_data_indication_t  *fapiRxDataInd)
 {
    Pst           pst;
-   uint8_t       pduIdx;
-   RxDataInd     rxDataInd;
-   RxDataIndPdu  *pdu;   
+   uint8_t       pduIdx =0;
+   RxDataInd     *rxDataInd = NULLP;
+   RxDataIndPdu  *pdu = NULLP;   
 
-   rxDataInd.cellId = lwrMacCb.cellCb[0].cellId;
-   rxDataInd.timingInfo.sfn = fapiRxDataInd->sfn; 
-   rxDataInd.timingInfo.slot = fapiRxDataInd->slot;
-   rxDataInd.numPdus = fapiRxDataInd->numPdus;
+   MAC_ALLOC_SHRABL_BUF(rxDataInd, sizeof(RxDataInd));
+   if(!rxDataInd)
+   {
+      DU_LOG("\nERROR  -->  LWR_MAC : Memory Allocation failed in procRxDataInd");
+      return RFAILED;
+   }
+   if(!fapiRxDataInd->numPdus)
+   {
+      DU_LOG("\nDEBUG  -->  LWR_MAC : No PDU in RX_Data.indication at [%d, %d]", fapiRxDataInd->sfn, fapiRxDataInd->slot);
+      return ROK;
+   }
+
+   rxDataInd->cellId = lwrMacCb.cellCb[0].cellId;
+   rxDataInd->timingInfo.sfn = fapiRxDataInd->sfn; 
+   rxDataInd->timingInfo.slot = fapiRxDataInd->slot;
+   rxDataInd->numPdus = fapiRxDataInd->numPdus;
 
-   for(pduIdx = 0; pduIdx < rxDataInd.numPdus; pduIdx++)
+   for(pduIdx = 0; pduIdx < rxDataInd->numPdus; pduIdx++)
    {
-      pdu = &rxDataInd.pdus[pduIdx];
+      pdu = &rxDataInd->pdus[pduIdx];
       pdu->handle = fapiRxDataInd->pdus[pduIdx].handle;
       pdu->rnti = fapiRxDataInd->pdus[pduIdx].rnti;
       pdu->harqId = fapiRxDataInd->pdus[pduIdx].harqId;
@@ -327,44 +343,254 @@ uint8_t procRxDataInd(fapi_rx_data_indication_t  *fapiRxDataInd)
       pdu->timingAdvance = fapiRxDataInd->pdus[pduIdx].timingAdvance;
       pdu->rssi = fapiRxDataInd->pdus[pduIdx].rssi;
 
-      MAC_ALLOC(pdu->pduData, pdu->pduLength);
+      MAC_ALLOC_SHRABL_BUF(pdu->pduData, pdu->pduLength);
       memcpy(pdu->pduData, fapiRxDataInd->pdus[pduIdx].pduData, pdu->pduLength);
+#ifdef INTEL_WLS_MEM      
+      /* Free WLS memory allocated for Rx PDU */
+      WLS_MEM_FREE(fapiRxDataInd->pdus[pduIdx].pduData, LWR_MAC_WLS_BUF_SIZE);
+#endif
    }
 
-   fillLwrMacToMacPst(&pst);
-   pst.event = EVENT_RX_DATA_IND_TO_MAC;
+   /* Fill post and sent to MAC */
+   FILL_PST_LWR_MAC_TO_MAC(pst, EVENT_RX_DATA_IND_TO_MAC);
+   return (*sendRxDataIndOpts[pst.selector])(&pst, rxDataInd);
+}
+
+/*******************************************************************
+ *
+ * @brief Fills Uci Ind Pdu Info carried on Pucch Format 0/Format 1
+ *
+ * @details
+ *
+ *    Function : fillUciIndPucchF0F1
+ *
+ *    Functionality:
+ *       Fills Uci Ind Pdu Info carried on Pucch Format 0/Format 1
+ *
+ *@params[in] UciPucchF0F1 *
+ *            fapi_uci_o_pucch_f0f1_t *
+ * @return ROK     - success
+ *         RFAILED - failure
+ *
+ * ****************************************************************/
+uint8_t fillUciIndPucchF0F1(UciPucchF0F1 *pduInfo, fapi_uci_o_pucch_f0f1_t *fapiPduInfo)
+{
 
-   (*sendRxDataIndOpts[pst.selector])(&pst, &rxDataInd);
-   return ROK;
+   uint8_t harqIdx;
+   uint8_t ret = ROK;
+   
+   pduInfo->handle        = fapiPduInfo->handle;
+   pduInfo->pduBitmap     = fapiPduInfo->pduBitmap;
+   pduInfo->pucchFormat   = fapiPduInfo->pucchFormat;
+   pduInfo->ul_cqi        = fapiPduInfo->ul_cqi;
+   pduInfo->crnti         = fapiPduInfo->rnti;
+   pduInfo->timingAdvance = fapiPduInfo->timingAdvance;
+   pduInfo->rssi          = fapiPduInfo->rssi;   
+   if(fapiPduInfo->srInfo.srIndication)
+   {
+      pduInfo->srInfo.srIndPres = fapiPduInfo->srInfo.srIndication;
+      pduInfo->srInfo.srConfdcLevel = fapiPduInfo->srInfo.srConfidenceLevel;
+   }
+   if(fapiPduInfo->harqInfo.numHarq)
+   {
+      pduInfo->harqInfo.numHarq = fapiPduInfo->harqInfo.numHarq;
+      pduInfo->harqInfo.harqConfdcLevel = fapiPduInfo->harqInfo.harqConfidenceLevel;
+      for(harqIdx = 0; harqIdx < pduInfo->harqInfo.numHarq; harqIdx++)
+      {
+         pduInfo->harqInfo.harqValue[harqIdx] = fapiPduInfo->harqInfo.harqValue[harqIdx];
+      }
+   }
+   return ret;
 }
 
+/*******************************************************************
+ *
+ * @brief Handles Uci indication from PHY and sends to MAC
+ *
+ * @details
+ *
+ *    Function : procUciInd
+ *
+ *    Functionality:
+ *      Handles Uci indication from PHY and sends to MAC
+ *
+ * @params[in] fapi_uci_indication_t message pointer
+ * @return ROK     - success
+ *         RFAILED - failure
+ *
+ * ****************************************************************/
+
+uint8_t procUciInd(fapi_uci_indication_t  *fapiUciInd)
+{
+   uint8_t pduIdx;
+   uint8_t ret = ROK;
+   Pst     pst;
+   UciInd  *macUciInd = NULLP;
+
+   MAC_ALLOC_SHRABL_BUF(macUciInd, sizeof(UciInd));
+   if(!macUciInd)
+   {
+      DU_LOG("\nERROR  -->  LWR_MAC: Memory Allocation failed in procUciInd");
+      return RFAILED;
+   }
+
+   DU_LOG("\nDEBUG  -->  LWR_MAC: Processing UCI Indication");
+   memset(macUciInd, 0, sizeof(UciInd));
+   macUciInd->cellId = lwrMacCb.cellCb[0].cellId;
+   macUciInd->slotInd.sfn = fapiUciInd->sfn; 
+   macUciInd->slotInd.slot = fapiUciInd->slot;
+   macUciInd->numUcis = fapiUciInd->numUcis;
+
+   for(pduIdx = 0; pduIdx < macUciInd->numUcis; pduIdx++)
+   {
+      macUciInd->pdus[pduIdx].pduType = fapiUciInd->uciPdu[pduIdx].pduType;
+      switch(macUciInd->pdus[pduIdx].pduType)
+      {
+         case UCI_IND_PUSCH:
+         break;
+         case UCI_IND_PUCCH_F0F1:
+         {
+            UciPucchF0F1 *pduInfo = NULLP;
+            macUciInd->pdus[pduIdx].pduSize = fapiUciInd->uciPdu[pduIdx].pduSize;
+            pduInfo = &macUciInd->pdus[pduIdx].uci.uciPucchF0F1;
+            ret = fillUciIndPucchF0F1(pduInfo, &fapiUciInd->uciPdu[pduIdx].uci.uciPucchF0F1);
+         }
+         break;
+         case UCI_IND_PUCCH_F2F3F4:
+            break;
+         default:
+            DU_LOG("\nERROR  -->  LWR_MAC: Invalid Pdu Type %d at procmacUciInd()", macUciInd->pdus[pduIdx].pduType);
+           ret = RFAILED;
+            break;
+      }
+   }
+   if(!ret)
+   {
+      FILL_PST_LWR_MAC_TO_MAC(pst, EVENT_UCI_IND_TO_MAC);
+      ret = (*sendUciIndOpts[pst.selector])(&pst, macUciInd);
+   }
+   else
+   {
+      DU_LOG("\nERROR  -->  LWR_MAC: Failed sending UCI Ind to MAC");
+   }
+   return ret;
+}
 #endif /* FAPI */
 
+/*******************************************************************
+ * @brief Function prints src, dest, msg infor about all the msgs that
+ received.
+ *
+ * @details
+ *
+ *     Function :callFlowFromPhyToLwrMac 
+ *
+ *     Function call Flow From Phy To LwrMac
+ *
+ *  @param[in]  Pst     *pst, Post structure of the primitive.
+ *
+ *  @return  void
+ * ****************************************************************/
+void callFlowFromPhyToLwrMac(uint16_t msgId)
+{
+   char message[100];
+   switch(msgId)
+   {
+#ifdef INTEL_TIMER_MODE
+      case FAPI_VENDOR_EXT_UL_IQ_SAMPLES:
+         strcpy(message,"FAPI_VENDOR_EXT_UL_IQ_SAMPLES");
+         break;
+#endif
+      case FAPI_PARAM_RESPONSE:
+         strcpy(message,"FAPI_PARAM_RESPONSE");
+         break;
+      case FAPI_CONFIG_RESPONSE:
+         strcpy(message,"FAPI_CONFIG_RESPONSE");
+         break;
+      case FAPI_SLOT_INDICATION:
+         strcpy(message,"FAPI_SLOT_INDICATION");
+         break;
+      case FAPI_ERROR_INDICATION:
+         strcpy(message,"FAPI_ERROR_INDICATION");
+         break;
+      case FAPI_RX_DATA_INDICATION:
+         strcpy(message,"FAPI_RX_DATA_INDICATION");
+         break;
+      case FAPI_CRC_INDICATION:
+         strcpy(message,"FAPI_CRC_INDICATION");
+         break;
+      case FAPI_UCI_INDICATION:
+         strcpy(message,"FAPI_UCI_INDICATION");
+         break;
+      case FAPI_SRS_INDICATION:
+         strcpy(message,"FAPI_SRS_INDICATION");
+         break;
+      case FAPI_RACH_INDICATION:
+         strcpy(message,"FAPI_RACH_INDICATION");
+         break;
+      case FAPI_STOP_INDICATION:
+         strcpy(message,"FAPI_STOP_INDICATION");
+         break;
+   }
+   DU_LOG("\nCall Flow: PHY -> ENTLWRMAC : %s\n",message);
+}
+/*******************************************************************
+ *
+ * @brief Processes message from PHY
+ *
+ * @details
+ *
+ *    Function : procPhyMessages
+ *
+ *    Functionality: Processes message from PHY
+ *
+ * @params[in] 
+ * @return ROK     - success
+ *         RFAILED - failure
+ *
+ * ****************************************************************/
 void procPhyMessages(uint16_t msgType, uint32_t msgSize, void *msg)
 {
 #ifdef INTEL_FAPI
    /* extract the header */
-   fapi_msg_t *header;
+   fapi_msg_t *header = NULLP;
    header = (fapi_msg_t *)msg;
 
+#ifdef CALL_FLOW_DEBUG_LOG 
+   callFlowFromPhyToLwrMac(header->msg_id);
+#endif
    switch(header->msg_id)
    {
+#ifdef INTEL_TIMER_MODE
+      case FAPI_VENDOR_EXT_UL_IQ_SAMPLES:
+         {
+            DU_LOG("\nDEBUG  -->  LWR_MAC: Received FAPI_VENDOR_EXT_UL_IQ_SAMPLES");
+            //send config req
+            uint16_t cellId = 1;
+            sendToLowerMac(CONFIG_REQUEST, 0, (void *)&cellId);
+            break;
+         } 
+#endif
       case FAPI_PARAM_RESPONSE:
+        {
+            sendToLowerMac(PARAM_RESPONSE, msgSize, msg);
+           break;
+        }
       case FAPI_CONFIG_RESPONSE:
         {
-           sendToLowerMac(msgType, msgSize, msg);
+           sendToLowerMac(CONFIG_RESPONSE, msgSize, msg);
            break;
         }
       case FAPI_SLOT_INDICATION:
         {
            if(lwrMacCb.phyState == PHY_STATE_CONFIGURED)
            {
-              DU_LOG("\nLWR_MAC: PHY has moved to running state");
+              DU_LOG("\nINFO  -->  LWR_MAC: PHY has moved to running state");
               lwrMacCb.phyState = PHY_STATE_RUNNING;
               lwrMacCb.cellCb[0].state = PHY_STATE_RUNNING;
            }
 
-           fapi_slot_ind_t *slotInd;
+           fapi_slot_ind_t *slotInd = NULLP;
            slotInd  = (fapi_slot_ind_t *)msg;
            procSlotInd(slotInd);
            break;
@@ -389,6 +615,9 @@ void procPhyMessages(uint16_t msgType, uint32_t msgSize, void *msg)
         }  
       case FAPI_UCI_INDICATION:
         {
+           fapi_uci_indication_t *phyUciInd = NULLP;
+           phyUciInd = (fapi_uci_indication_t*)msg;
+           procUciInd(phyUciInd);
            break;
         }
       case FAPI_SRS_INDICATION:
@@ -404,14 +633,11 @@ void procPhyMessages(uint16_t msgType, uint32_t msgSize, void *msg)
         }
       case FAPI_STOP_INDICATION:
         {
-           DU_LOG("\nLWR_MAC: Handling Stop Indication");
+           DU_LOG("\nINFO  -->  LWR_MAC: Handling Stop Indication");
            procStopInd();
            break;
         }  
    }
-#ifdef INTEL_WLS
-   WLS_MEM_FREE(msg, LWR_MAC_WLS_BUF_SIZE); 
-#endif
 #endif
 }