[Task-ID: ODUHIGH-455] Changes to support new L1 20.11
[o-du/l2.git] / src / 5gnrmac / lwr_mac_handle_phy.c
index 28a0ea2..bce5ed4 100644 (file)
@@ -20,7 +20,7 @@
 #include "common_def.h"
 #include "lrg.h"
 #ifdef INTEL_FAPI
-#include "fapi.h"
+#include "nr5g_fapi_internal.h"
 #include "fapi_vendor_extension.h"
 #endif
 
@@ -106,9 +106,9 @@ uint8_t procSlotInd(fapi_slot_ind_t *fapiSlotInd)
    /* fill Pst structure to send to lwr_mac to MAC */
    Pst pst;
    uint16_t ret = 0;
-   SlotIndInfo *slotInd = {0};
+   SlotTimingInfo *slotInd = {0};
 
-   MAC_ALLOC_SHRABL_BUF(slotInd, sizeof(SlotIndInfo));
+   MAC_ALLOC_SHRABL_BUF(slotInd, sizeof(SlotTimingInfo));
    if(slotInd)
    {
       slotInd->cellId = lwrMacCb.cellCb[0].cellId; 
@@ -116,22 +116,14 @@ uint8_t procSlotInd(fapi_slot_ind_t *fapiSlotInd)
       slotInd->slot = fapiSlotInd->slot;
 
       FILL_PST_LWR_MAC_TO_MAC(pst, EVENT_SLOT_IND_TO_MAC);
+      pst.selector = ODU_SELECTOR_LWLC;
       ret = (*sendSlotIndOpts[pst.selector])(&pst, slotInd);
    }
    else
    {
-      printf("\nLWR_MAC: Memory allocation failed in procSlotInd");
+      DU_LOG("\nERROR  -->  LWR_MAC: Memory allocation failed in procSlotInd");
       ret = RFAILED;
    }
-
-#ifdef INTEL_WLS_MEM
-   slotIndIdx++;
-   if(slotIndIdx > WLS_MEM_FREE_PRD)
-   {
-      slotIndIdx = 1;
-   }
-   freeWlsBlockList(slotIndIdx - 1);
-#endif
    return ret;
 }
 
@@ -158,16 +150,17 @@ uint8_t procStopInd()
    MAC_ALLOC_SHRABL_BUF(cellId, sizeof(uint16_t));
    if(!cellId)
    {
-      printf("\nLWR_MAC: Memory Allocation failed in procStopInd");
+      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");
+   DU_LOG("\nINFO  -->  LWR_MAC: PHY has moved to configured state");
 
    FILL_PST_LWR_MAC_TO_MAC(pst, EVENT_STOP_IND_TO_MAC);
+   pst.selector = ODU_SELECTOR_LWLC; 
    return (*sendStopIndOpts[pst.selector])(&pst, cellId);
 }
 
@@ -198,9 +191,14 @@ uint8_t procRachInd(fapi_rach_indication_t  *fapiRachInd)
    MAC_ALLOC_SHRABL_BUF(rachInd, sizeof(RachInd));
    if(!rachInd)
    {
-      printf("\nLWR_MAC: Memory Allocation failed in procRachInd");
+      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;
@@ -226,7 +224,6 @@ uint8_t procRachInd(fapi_rach_indication_t  *fapiRachInd)
    /* 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 */
 
 /*******************************************************************
@@ -257,9 +254,14 @@ uint8_t procCrcInd(fapi_crc_ind_t  *fapiCrcInd)
    MAC_ALLOC_SHRABL_BUF(crcInd, sizeof(CrcInd));
    if(!crcInd)
    {
-      printf("\nLWR_MAC: Memory Allocation failed in procCrcInd");
+      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;
+   }
 
    crcInd->cellId = lwrMacCb.cellCb[0].cellId;
    crcInd->timingInfo.sfn = fapiCrcInd->sfn;
@@ -316,9 +318,14 @@ uint8_t procRxDataInd(fapi_rx_data_indication_t  *fapiRxDataInd)
    MAC_ALLOC_SHRABL_BUF(rxDataInd, sizeof(RxDataInd));
    if(!rxDataInd)
    {
-      printf("\nLWR_MAC: Memory Allocation failed in procRxDataInd");
+      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; 
@@ -423,10 +430,11 @@ uint8_t procUciInd(fapi_uci_indication_t  *fapiUciInd)
    MAC_ALLOC_SHRABL_BUF(macUciInd, sizeof(UciInd));
    if(!macUciInd)
    {
-      printf("\nLWR_MAC: Memory Allocation failed in procUciInd");
+      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; 
@@ -451,7 +459,7 @@ uint8_t procUciInd(fapi_uci_indication_t  *fapiUciInd)
          case UCI_IND_PUCCH_F2F3F4:
             break;
          default:
-            DU_LOG("\nLWR_MAC: Invalid Pdu Type %d at procmacUciInd()", macUciInd->pdus[pduIdx].pduType);
+            DU_LOG("\nERROR  -->  LWR_MAC: Invalid Pdu Type %d at procmacUciInd()", macUciInd->pdus[pduIdx].pduType);
            ret = RFAILED;
             break;
       }
@@ -463,12 +471,69 @@ uint8_t procUciInd(fapi_uci_indication_t  *fapiUciInd)
    }
    else
    {
-      DU_LOG("\nLWR_MAC: Failed sending UCI Ind to MAC");
+      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
@@ -491,12 +556,15 @@ void procPhyMessages(uint16_t msgType, uint32_t msgSize, void *msg)
    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:
          {
-            printf("\nLWR_MAC: Received 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);
@@ -517,7 +585,7 @@ void procPhyMessages(uint16_t msgType, uint32_t msgSize, void *msg)
         {
            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;
            }
@@ -565,7 +633,7 @@ 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;
         }